{"version":3,"file":"js/736-985bc5ee146437ebd29d.js","mappings":"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","sources":["webpack://rsvpbridge/./app/javascript/api/accounts/index.js","webpack://rsvpbridge/./app/javascript/api/activities/users.js","webpack://rsvpbridge/./app/javascript/api/events/index.js","webpack://rsvpbridge/./app/javascript/api/events/signups.js","webpack://rsvpbridge/./app/javascript/api/finder.js","webpack://rsvpbridge/./app/javascript/api/members.js","webpack://rsvpbridge/./app/javascript/api/movements.js","webpack://rsvpbridge/./app/javascript/api/sections/index.js","webpack://rsvpbridge/./app/javascript/api/team_events/index.js","webpack://rsvpbridge/./app/javascript/components/elements/Buttons/GlowingButton.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Buttons/LockableButton.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Buttons/NumberButton.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Buttons/PrintWindowButton.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Buttons/ProcessingButton.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Buttons/RefreshButton.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Event/BoardsPerRoundSelector.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Event/CurrentSignup.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Event/EventComment.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Event/EventDate.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Event/styles.js","webpack://rsvpbridge/./app/javascript/components/elements/Event/CourseEventFee.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Event/EventFee.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Event/EventLocation.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Event/EventPanelHeading.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Event/EventRating.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Event/EventRestrictions.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Event/EventSeating.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Event/EventTimeRange.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Event/EventType.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Event/HistoricalMasterpointsNote.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Event/MasterpointsDisclaimer.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Event/RoundsSelector.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Event/ScoreComments.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Event/ScoreRecorder.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Event/SlowTableWarning.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Event/Strat.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Event/StratificationText.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Form/FormSelect.js.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Form/FormCheckbox.js.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Form/RequiredIndicator.js.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Form/FormCheckboxMulti.js.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Form/FormDatepicker.js.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Form/FormEventDatepicker.js.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Form/FormEditor.js.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Form/FormTextInput.js.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Form/FormRadio.js.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Form/FormTextArea.js.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Form/FormField.js.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Form/SaveWarning.js.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Accordion/styles.js","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Accordion/EntryLeft.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Accordion/EntryRight.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Accordion/EntryMeta.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Accordion/EntryListingIcons.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Accordion/EntryNavigate.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Accordion/Entry.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Accordion/ContentLeft.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Accordion/ContentRight.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Accordion/ContentMeta.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Accordion/ContentActions.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Accordion/ContentButtonStack.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Accordion/Content.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Accordion/Divider.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Accordion/index.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/PageNav/styles.js","webpack://rsvpbridge/./app/javascript/components/elements/Layout/PageNav/AdditionalNavCycleItem.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/PageNav/AppIcons.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/PageNav/AppNav.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/PageNav/AppSubNav.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Attributes.js.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Copyright.js.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/ErrorBoundary.js.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/InteriorErrorBoundary.js.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/ListControls/Control.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/ListControls/LineBreak.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/ListControls/styles.js","webpack://rsvpbridge/./app/javascript/components/elements/Layout/ListControls/index.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Loading.js.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/PageNav/NavCycler.jsx","webpack://rsvpbridge/./app/javascript/helpers/navs.js","webpack://rsvpbridge/./app/javascript/components/elements/Layout/PageNav/NavIcon.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/NavTabs/styles.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/NavTabs/index.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/PageContent.js.jsx","webpack://rsvpbridge/./app/javascript/redux/actions/help.js","webpack://rsvpbridge/./app/javascript/components/global/ContextualHelp/RelatedContent.jsx","webpack://rsvpbridge/./app/javascript/components/global/ContextualHelp/AdminActions.jsx","webpack://rsvpbridge/./app/javascript/api/help.js","webpack://rsvpbridge/./app/javascript/components/global/ContextualHelp/Audience.jsx","webpack://rsvpbridge/./app/javascript/components/global/ContextualHelp/DisplayedContent.jsx","webpack://rsvpbridge/./app/javascript/components/global/ContextualHelp/Article.jsx","webpack://rsvpbridge/./app/javascript/components/global/ContextualHelp/Pane.jsx","webpack://rsvpbridge/./app/javascript/components/global/ContextualHelp/Video.jsx","webpack://rsvpbridge/./app/javascript/components/global/ContextualHelp/index.jsx","webpack://rsvpbridge/./app/javascript/components/global/CommonContent.jsx","webpack://rsvpbridge/./app/javascript/components/global/CommonNav.jsx","webpack://rsvpbridge/./app/javascript/components/global/Movements/MovementDetails.jsx","webpack://rsvpbridge/./app/javascript/components/global/Movements/MovementListing.jsx","webpack://rsvpbridge/./app/javascript/components/global/Movements/EditMovement.jsx","webpack://rsvpbridge/./app/javascript/components/global/Movements/index.jsx","webpack://rsvpbridge/./app/javascript/components/global/Finder/FindSomeone/Someone.jsx","webpack://rsvpbridge/./app/javascript/components/global/Finder/FindSomeone/SearchForSomeone.jsx","webpack://rsvpbridge/./app/javascript/components/shared/UserEmailPreferences/ClubRow.jsx","webpack://rsvpbridge/./app/javascript/components/shared/UserEmailPreferences/GroupRow.jsx","webpack://rsvpbridge/./app/javascript/components/shared/UserEmailPreferences/index.jsx","webpack://rsvpbridge/./app/javascript/components/global/Finder/FindSomeone/index.jsx","webpack://rsvpbridge/./app/javascript/components/global/Finder/FindEvent/styles.js","webpack://rsvpbridge/./app/javascript/components/global/Finder/FindEvent/index.jsx","webpack://rsvpbridge/./app/javascript/components/global/Finder/index.jsx","webpack://rsvpbridge/./app/javascript/components/global/Profile/UserProfile/styles.js","webpack://rsvpbridge/./app/javascript/components/global/Profile/UserProfile/ProfileEntry.jsx","webpack://rsvpbridge/./app/javascript/components/global/Profile/styles.js","webpack://rsvpbridge/./app/javascript/components/global/Profile/UserProfile/UserProfile.jsx","webpack://rsvpbridge/./app/javascript/components/global/Profile/UserProfile/index.jsx","webpack://rsvpbridge/./app/javascript/components/shared/UserPrivacy/ShowHide.jsx","webpack://rsvpbridge/./app/javascript/components/shared/UserPrivacy/index.jsx","webpack://rsvpbridge/./app/javascript/components/shared/UserCredits.jsx","webpack://rsvpbridge/./app/javascript/components/global/Profile/Support/SupportOptions.jsx","webpack://rsvpbridge/./app/javascript/components/global/Profile/Support/Debugging.jsx","webpack://rsvpbridge/./app/javascript/components/global/Profile/Support/index.jsx","webpack://rsvpbridge/./app/javascript/components/global/Profile/index.jsx","webpack://rsvpbridge/./app/javascript/components/global/AdminActions/SingleEvent.jsx","webpack://rsvpbridge/./app/javascript/components/global/AdminActions/index.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/PageLayout.js.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/PageStickyHeader.js.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/PageNav/index.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Pane/styles.js","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Pane/BoardWrap.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Pane/Burger.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Pane/Header.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Pane/HelpReturn.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Pane/LimitWidth.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Pane/PageFilter.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Pane/Return.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Pane/index.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/PageNav/RefreshNavItem.js.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/SearchFilterResult.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/PageNav/NavToggler.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/PageNav/SwitchablePageNav.js.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Toolbar.js.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Layout/Transition.js.jsx","webpack://rsvpbridge/./app/javascript/components/elements/LogEntry/ActivityLogEntry/HeaderLink.jsx","webpack://rsvpbridge/./app/javascript/components/elements/LogEntry/ActivityLogEntry/Logger.jsx","webpack://rsvpbridge/./app/javascript/components/elements/LogEntry/ActivityLogEntry/EventLogEntry.jsx","webpack://rsvpbridge/./app/javascript/components/elements/LogEntry/ActivityLogEntry/ScoringLogEntry.jsx","webpack://rsvpbridge/./app/javascript/components/elements/LogEntry/ActivityLogEntry/UserLogEntry.jsx","webpack://rsvpbridge/./app/javascript/components/elements/LogEntry/ActivityLogEntry/index.jsx","webpack://rsvpbridge/./app/javascript/components/elements/LogEntry/CreditLogEntry.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/ACBLMemberTag.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/ACBLMemberLegend.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/DirectorTag.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/DiscordTag.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/EventFullTag.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/EventFullLegend.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/EventSignupStatusTag.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/EventSignupStatusLegend.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/TableCountTag.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/TableCountLegend.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/EventTagLegends.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/EventType.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/GenericTag.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/ManagerTag.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/ManagerLegend.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/MembershipTag.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/MembershipLegend.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/StationaryPreferenceTag.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/StationaryPreferenceLegend.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/RegularPartnerTag.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/RegularPartnerLegend.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/MemberTagLegends.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/MessageCountTag.jsx","webpack://rsvpbridge/./app/javascript/components/elements/Tags/PrivateEventTag.jsx","webpack://rsvpbridge/./app/javascript/components/global/Finder/FindAcblNumber.jsx","webpack://rsvpbridge/./app/javascript/components/shared/AdminCharges/Charge.jsx","webpack://rsvpbridge/./app/javascript/components/shared/AdminCharges/ChargeHistory.jsx","webpack://rsvpbridge/./app/javascript/api/charges.js","webpack://rsvpbridge/./app/javascript/components/shared/AdminCharges/RefundCharge.jsx","webpack://rsvpbridge/./app/javascript/components/shared/AdminCharges/index.jsx","webpack://rsvpbridge/./app/javascript/components/shared/AdminCredits.jsx","webpack://rsvpbridge/./app/javascript/components/shared/EventBox.jsx","webpack://rsvpbridge/./app/javascript/components/shared/GroupPanelHeading.jsx","webpack://rsvpbridge/./app/javascript/components/shared/MakePurchase/CheckoutForm.jsx","webpack://rsvpbridge/./app/javascript/components/shared/MakePurchase/styles.js","webpack://rsvpbridge/./app/javascript/components/shared/MakePurchase/index.jsx","webpack://rsvpbridge/./app/javascript/components/shared/MasterpointUpdateDate.jsx","webpack://rsvpbridge/./app/javascript/components/shared/MemberProfiles/MemberProfile.jsx","webpack://rsvpbridge/./app/javascript/components/shared/MemberProfiles/MembershipStatusCaution.jsx","webpack://rsvpbridge/./app/javascript/components/shared/MemberProfiles/MemberProfileEdit.jsx","webpack://rsvpbridge/./app/javascript/components/shared/MemberProfiles/index.jsx","webpack://rsvpbridge/./app/javascript/components/shared/MovementDisplay/BoardNumbers.jsx","webpack://rsvpbridge/./app/javascript/components/shared/MovementDisplay/PlayerNames.jsx","webpack://rsvpbridge/./app/javascript/components/shared/MovementDisplay/PairCells.jsx","webpack://rsvpbridge/./app/javascript/components/shared/MovementDisplay/ByRound.jsx","webpack://rsvpbridge/./app/javascript/components/shared/MovementDisplay/ByTable.jsx","webpack://rsvpbridge/./app/javascript/components/shared/MovementDisplay/ByPair.jsx","webpack://rsvpbridge/./app/javascript/components/shared/MovementDisplay/ByBoard.jsx","webpack://rsvpbridge/./app/javascript/components/shared/MovementDisplay/MovementParameters.jsx","webpack://rsvpbridge/./app/javascript/components/shared/MovementDisplay/index.jsx","webpack://rsvpbridge/./app/javascript/helpers/MovementEditor.js","webpack://rsvpbridge/./app/javascript/components/shared/MovementEdit/MovementRound.jsx","webpack://rsvpbridge/./app/javascript/components/shared/MovementEdit/MovementTable.jsx","webpack://rsvpbridge/./app/javascript/components/shared/MovementEdit/Parameters.jsx","webpack://rsvpbridge/./app/javascript/components/shared/MovementEdit/styles.js","webpack://rsvpbridge/./app/javascript/components/shared/MovementEdit/Analysis.jsx","webpack://rsvpbridge/./app/javascript/components/shared/MovementEdit/Info.jsx","webpack://rsvpbridge/./app/javascript/components/shared/MovementEdit/Actions.jsx","webpack://rsvpbridge/./app/javascript/components/shared/MovementEdit/index.jsx","webpack://rsvpbridge/./app/javascript/components/shared/PlayerList/styles.js","webpack://rsvpbridge/./app/javascript/components/shared/PlayerList/index.jsx","webpack://rsvpbridge/./app/javascript/components/shared/RbucksLog.jsx","webpack://rsvpbridge/./app/javascript/components/shared/UserActivityLog.jsx","webpack://rsvpbridge/./app/javascript/components/shared/UserDetails/WithVisibility.jsx","webpack://rsvpbridge/./app/javascript/components/shared/UserDetails/TitledField.jsx","webpack://rsvpbridge/./app/javascript/components/shared/UserDetails/styles.js","webpack://rsvpbridge/./app/javascript/components/shared/UserDetails/index.jsx","webpack://rsvpbridge/./app/javascript/components/shared/UserEdit.jsx","webpack://rsvpbridge/./app/javascript/contexts/help-context.js","webpack://rsvpbridge/./app/javascript/contexts/page-context/constants.js","webpack://rsvpbridge/./app/javascript/contexts/page-context/index.js","webpack://rsvpbridge/./app/javascript/contexts/page-context/nav_methods.js","webpack://rsvpbridge/./app/javascript/helpers/iconLegend.js","webpack://rsvpbridge/./app/javascript/helpers/time_zones.js","webpack://rsvpbridge/./app/javascript/hooks/useAccordion.js","webpack://rsvpbridge/./app/javascript/hooks/useListControls.js","webpack://rsvpbridge/./app/javascript/hooks/useMemberRecentEvents.js","webpack://rsvpbridge/./app/javascript/hooks/useNavFunctions.js","webpack://rsvpbridge/./app/javascript/hooks/useWidthToggle.js","webpack://rsvpbridge/./app/javascript/hooks/useWindowDimensions.js","webpack://rsvpbridge/./app/javascript/pages/Event/Configure/ConfigureGame/Stratify/styles.js","webpack://rsvpbridge/./app/javascript/pages/User/GroupEvents/GroupEvent.jsx","webpack://rsvpbridge/./app/javascript/redux/actions/account.js","webpack://rsvpbridge/./app/javascript/redux/actions/events.js","webpack://rsvpbridge/./app/javascript/redux/actions/group_events.js","webpack://rsvpbridge/./app/javascript/redux/actions/helpers.js","webpack://rsvpbridge/./app/javascript/redux/actions/member.js","webpack://rsvpbridge/./app/javascript/redux/actions/movements.js","webpack://rsvpbridge/./app/javascript/redux/actions/users.js","webpack://rsvpbridge/./app/javascript/styles/containers.js"],"sourcesContent":["import { get, patch, destroy } from 'api/rsvp_api'\n\nexport const apiLoadAccounts = controls => {\n get('loading accounts', '/api/accounts', controls)\n}\n\nexport const apiLoadAccount = (accountId, controls) => {\n get('loading account', `/api/accounts/${accountId}`, controls)\n}\n\nexport const apiUpdateAccount = (accountId, account, controls) => {\n patch('updating account', `/api/accounts/${accountId}`, { account }, controls)\n}\n\nexport const apiAccountChangePlan = (accountId, planId, controls) => {\n patch(\n 'changing account plan',\n `/api/accounts/${accountId}/change_plan`,\n { plan_id: planId },\n controls,\n )\n}\n\nexport const apiAccountChangeCreditCard = (accountId, data, controls) => {\n patch(\n 'changing account credit card',\n `/api/accounts/${accountId}/change_credit_card`,\n data,\n controls,\n )\n}\n\nexport const apiDeleteAccount = (accountId, controls) => {\n destroy('deleting account', `/api/accounts/${accountId}`, controls)\n}\n\nexport const apiAddPlanOverride = (accountId, override, controls) => {\n patch(\n 'adding plan override',\n `/api/accounts/${accountId}/add_plan_override`,\n { override },\n controls,\n )\n}\n\nexport const apiDeletePlanOverride = (accountId, starting, controls) => {\n patch(\n 'deleting plan override',\n `/api/accounts/${accountId}/delete_plan_override`,\n { starting },\n controls,\n )\n}\n\nexport const apiDeactivateAllGroups = (accountId, controls) => {\n patch(\n 'deactivating all groups',\n `/api/accounts/${accountId}/deactivate_all_groups`,\n {},\n controls,\n )\n}\n\nexport const apiGenerateOffCycleInvoice = (\n accountId,\n off_cycle_date,\n controls,\n) => {\n patch(\n 'generating off-cycle invoice',\n `/api/accounts/${accountId}/generate_off_cycle_invoice`,\n { off_cycle_date },\n controls,\n )\n}\n\nexport const apiGetLastPayouts = controls => {\n get('getting last payouts', '/api/accounts/last_payouts', controls)\n}\n\nexport const apiResetDemo = (id, controls) => {\n patch('resetting demo', `/api/accounts/${id}/reset_demo`, {}, controls)\n}\n\nexport const apiGetClubListing = controls => {\n get('getting club listing', '/api/accounts/club_listing', controls)\n}\n","import { get } from 'api/rsvp_api'\n\nexport const apiGetAllUserActivity = (page, controls) => {\n get(\n 'getting activity for all users',\n `/api/activities/users_activity_log/${page}`,\n controls,\n )\n}\n\nexport const apiGetSingleUserActivity = (id, page, controls) => {\n get(\n 'getting user activity',\n `/api/activities/user/${id}/user_activity_log/${page}`,\n controls,\n )\n}\n","import { get, post, patch, destroy } from 'api/rsvp_api'\n\nexport const apiFetchEventList = (eventType, controls) => {\n get(\n 'fetching event list for admin',\n `/api/events/${eventType}_events`,\n controls,\n )\n}\n\nexport const apiFetchSingleEvent = (eventId, controls) => {\n get('fetching single event', `/api/events/${eventId}/single_event`, controls)\n}\n\nexport const apiFetchYearData = (year, controls) => {\n get('fetching year data', `/api/events/year_data/${year}`, controls)\n}\n\nexport const apiGetEventsSummary = controls => {\n get('getting events summary', '/api/events/summary', controls)\n}\n\nexport const apiAddTable = (id, controls) => {\n patch('adding table', `/api/events/${id}/add_table`, {}, controls)\n}\n\nexport const apiRemoveTable = (id, controls) => {\n patch('removing table', `/api/events/${id}/remove_table`, {}, controls)\n}\n\nexport const apiStratified = (id, stratified, controls) => {\n patch(\n 'changing stratified',\n `/api/events/${id}/stratify`,\n { stratified },\n controls,\n )\n}\n\nexport const apiRefreshEvent = (id, controls) => {\n get('refreshing event', `/api/events/${id}/refresh`, controls)\n}\n\nexport const apiToggleSignupOpen = (id, source, controls) => {\n patch(\n 'toggling signup-open',\n `/api/events/${id}/toggle_signups_open`,\n { source },\n controls,\n )\n}\n\nexport const apiChangeEventOption = (\n id,\n option_name,\n value,\n source,\n controls,\n) => {\n patch(\n 'changing event option',\n `/api/events/${id}/change_option`,\n { option_name, value, source },\n controls,\n )\n}\n\nexport const apiSaveStrata = (id, strata, clear_overrides, controls) => {\n patch(\n 'saving strata',\n `/api/events/${id}/save_strata`,\n { strata, clear_overrides },\n controls,\n )\n}\nexport const apiMemberSeatingHistory = (id, controls) => {\n get(\n 'getting member seating history',\n `/api/events/${id}/seating_history`,\n controls,\n )\n}\n\nexport const apiToggleDirector = (id, user_id, controls) => {\n patch(\n 'toggling director',\n `/api/events/${id}/toggle_director`,\n { user_id },\n controls,\n )\n}\n\nexport const apiFetchPlayerList = (id, controls) => {\n get('fetching player list', `/api/events/${id}/fetch_player_list`, controls)\n}\n\nexport const apiUpdateEvent = (id, data, controls) => {\n patch('updating event', `/api/events/${id}`, data, controls)\n}\n\nexport const apiChangeEventType = (id, event_type, controls) => {\n patch(\n 'changing event type',\n `/api/events/${id}/change_event_type`,\n { event_type },\n controls,\n )\n}\n\nexport const apiDeleteEvent = (id, controls) => {\n destroy('deleting event', `/api/events/${id}`, controls)\n}\n\nexport const apiObliterateEvent = (id, controls) => {\n destroy('obliterating event', `/api/events/${id}/obliterate`, controls)\n}\n\nexport const apiCloneEvent = (id, new_date, controls) => {\n post('cloning event', `/api/events/${id}/clone`, { new_date }, controls)\n}\n\nexport const apiPaymentLogs = (id, controls) => {\n get('getting payment logs', `/api/events/${id}/payment_logs`, controls)\n}\n\nexport const apiResetPaymentCaches = (id, controls) => {\n patch(\n 'resetting payment caches',\n `/api/events/${id}/reset_payment_caches`,\n {},\n controls,\n )\n}\n\nexport const apiSignupLogs = (id, controls) => {\n get('fetching signup logs', `/api/events/${id}/event_logs`, controls)\n}\n\nexport const apiFindEvents = (year, month, controls) => {\n get('finding events', `/api/events/finder/${year}/${month}`, controls)\n}\n\nexport const apiProcessAutoPays = (id, controls) => {\n patch(\n 'processing auto-payments',\n `/api/events/${id}/process_auto_payments`,\n {},\n controls,\n )\n}\n\nexport const apiRemoveAllScoring = (id, controls) => {\n patch(\n 'removing all scoring and plays',\n `/api/events/${id}/remove_scoring`,\n {},\n controls,\n )\n}\n\nexport const apiAuditSignups = (id, attemptFixes, controls) => {\n get(\n 'auditing event signups',\n `/api/events/${id}/audit_signups?attempt_fixes=${attemptFixes}`,\n controls,\n )\n}\n\nexport const apiRecomputeEstimatedAcblAwards = (id, controls) => {\n patch(\n 'recomputing estimated ACBL awards',\n `/api/events/${id}/recompute_estimated_acbl_awards`,\n {},\n controls,\n )\n}\n\nexport const apiQuickAddEvent = (data, controls) => {\n post('adding event', '/api/events/quick_add', data, controls)\n}\n\nexport const apiReturnToSetup = (id, controls) => {\n patch(\n 'returning eventto setup',\n `/api/events/${id}/return_to_setup`,\n {},\n controls,\n )\n}\n","import { get, post, patch } from 'api/rsvp_api'\n\nexport const apiAllow = (event_id, member_id, controls) => {\n post(\n 'adding to allowed list',\n `/api/events/${event_id}/signups/allow`,\n { member_id },\n controls,\n )\n}\n\nexport const apiDisallow = (event_id, signup_id, controls) => {\n post(\n 'removing from allowed list',\n `/api/events/${event_id}/signups/disallow`,\n { signup_id },\n controls,\n )\n}\n\nexport const apiCheckIn = (event_id, signup_id, controls) => {\n patch(\n 'checking in',\n `/api/events/${event_id}/signups/${signup_id}/check_in`,\n {},\n controls,\n )\n}\n\nexport const apiChangeSignupPaymentType = (\n event_id,\n signup_id,\n payment_type,\n controls,\n) => {\n patch(\n 'changing external payment type',\n `/api/events/${event_id}/signups/${signup_id}/change_payment_type`,\n { payment_type },\n controls,\n )\n}\n\nexport const apiAdjustEventFee = (\n event_id,\n signup_id,\n adjusted_event_fee,\n controls,\n) => {\n patch(\n 'updating adjusted event fee',\n `/api/events/${event_id}/signups/${signup_id}/adjust_event_fee`,\n { adjusted_event_fee },\n controls,\n )\n}\n\nexport const apiFetchRelatedSignups = (eventId, signupId, controls) => {\n get(\n 'fetching relating signups',\n `/api/events/${eventId}/related_signups/${signupId}`,\n controls,\n )\n}\n\nexport const apiChangeSignupStationaryPreference = (\n eventId,\n signupId,\n pref,\n controls,\n) => {\n patch(\n 'changing signup seating preference',\n `/api/events/${eventId}/signups/${signupId}/change_stationary_preference`,\n { pref },\n controls,\n )\n}\n\nexport const apiGetSignupOverlaps = (eventId, controls) => {\n get(\n 'getting signup overlaps',\n `/api/events/${eventId}/signup_overlaps`,\n controls,\n )\n}\n","import { get } from 'api/rsvp_api'\n\nexport const apiFindSomeone = (text, fields, search_type, controls) => {\n get(\n 'finding someone',\n `/api/finder/find_someone/?text=${text}&fields=${fields}&search_type=${search_type}`,\n controls,\n )\n}\n\nexport const apiCheckAcblName = (acbl_number, controls) => {\n get(\n 'checking ACBL number',\n `/api/finder/check_acbl_name/?acbl_number=${acbl_number}`,\n controls,\n )\n}\n\nexport const apiFindAcblNumber = (text, short, controls) => {\n get(\n 'finding ACBL number',\n `/api/finder/find_acbl_number/?text=${text}${short ? '&short=t' : ''}`,\n controls,\n )\n}\n\nexport const apiGetMasterpointDate = controls => {\n get('getting masterpoint data', '/api/finder/get_masterpoint_date', controls)\n}\n\nexport const apiFindMember = (first, last, acbl_number, group_id, controls) => {\n get(\n 'finding member',\n `/api/finder/find_member/?group_id=${group_id}&first=${first}&last=${last}&acbl_number=${acbl_number}`,\n controls,\n )\n}\n\nexport const apiFindUsersForClub = (\n last,\n exact_match,\n acbl_number,\n club_id,\n controls,\n) => {\n get(\n 'finding users',\n `/api/finder/find_users_for_club/?last=${last}&exact_match=${exact_match}&acbl_number=${acbl_number}&club_id=${club_id}`,\n controls,\n )\n}\n\nexport const apiGetUserList = (userIds, controls) => {\n get(\n 'getting user list',\n `/api/finder/get_name_list?ids=${userIds.join(',')}`,\n controls,\n )\n}\n\nexport const apiFindMismatchedNames = controls => {\n get('finding mismatched names', '/api/finder/mismatched_names', controls)\n}\n\nexport const apiFindMissingNumbers = controls => {\n get('finding missing numbers', '/api/finder/missing_numbers', controls)\n}\n","import { get, patch, destroy } from 'api/rsvp_api'\n\nexport const apiFetchAvailableRegularPartners = (member_id, controls) => {\n get(\n 'fetching available regular partners',\n `/api/members/${member_id}/available_regular_partners`,\n controls,\n )\n}\n\nexport const apiGetOtherClubGroups = (member_id, controls) => {\n get(\n 'getting other club groups',\n `/api/members/${member_id}/other_club_groups`,\n controls,\n )\n}\n\nexport const apiUpdateMemberStatus = (member_id, status, source, controls) => {\n patch(\n 'updating member status',\n `/api/members/${member_id}/change_status`,\n { status, source },\n controls,\n )\n}\n\nexport const apiUpdateManager = (member_id, manager, source, controls) => {\n patch(\n 'updating member manager status',\n `/api/members/${member_id}/change_manager`,\n { manager, source },\n controls,\n )\n}\n\nexport const apiToggleManagerAsDirector = (member_id, source, controls) => {\n patch(\n 'toggling member as director',\n `/api/members/${member_id}/toggle_manager_as_director`,\n { source },\n controls,\n )\n}\n\nexport const apiToggleManagerNotification = (\n member_id,\n task,\n source,\n controls,\n) => {\n patch(\n 'toggling manager notification',\n `/api/members/${member_id}/toggle_manager_notification`,\n { task, source },\n controls,\n )\n}\n\nexport const apiUpdateRegularPartner = (\n member_id,\n regular_partner_id,\n source,\n controls,\n) => {\n patch(\n 'updating regular partner',\n `/api/members/${member_id}/regular_partner`,\n { regular_partner_id, source },\n controls,\n )\n}\n\nexport const apiUpdateStationaryPreference = (\n member_id,\n stationary_preference,\n source,\n controls,\n) => {\n patch(\n 'updating regular partner',\n `/api/members/${member_id}/change_stationary_preference`,\n { stationary_preference, source },\n controls,\n )\n}\n\nexport const apiUpdatePermPriority = (\n member_id,\n perm_priority,\n source,\n controls,\n) => {\n patch(\n 'updating permanent priority',\n `/api/members/${member_id}/change_perm_priority`,\n { perm_priority, source },\n controls,\n )\n}\n\nexport const apiUpdateEstimatedMp = (\n member_id,\n estimated_mp_holding,\n propagate,\n source,\n controls,\n) => {\n patch(\n 'updating estimated masterpoints',\n `/api/members/${member_id}/change_estimated_mp_holding`,\n { estimated_mp_holding, propagate, source },\n controls,\n )\n}\n\nexport const apiDeleteMember = (member_id, controls) => {\n destroy('deleting member', `/api/members/${member_id}`, controls)\n}\n\nexport const apiUpdateAdjustedCourseFee = (\n member_id,\n adjusted_course_fee,\n source,\n controls,\n) => {\n patch(\n 'updating member manager status',\n `/api/members/${member_id}/update_adjusted_course_fee`,\n { adjusted_course_fee, source },\n controls,\n )\n}\n\nexport const apiUpdateCoursePaymentMethod = (\n member_id,\n payment_type,\n source,\n controls,\n) => {\n patch(\n 'updating member course payment type',\n `/api/members/${member_id}/change_payment_type`,\n { payment_type, source },\n controls,\n )\n}\n\n// This version of updating the stationary preference updates future signups as well\nexport const apiChangeMemberStationaryPreference = (\n memberId,\n pref,\n event_source,\n user_source,\n controls,\n) => {\n patch(\n 'changing member stationary preference',\n `/api/members/${memberId}/change_stationary_preference_and_signups`,\n { pref, event_source, user_source },\n controls,\n )\n}\n\nexport const apiFetchRecentEvents = (member_id, offset, controls) => {\n get(\n 'fetching recent events',\n `/api/members/${member_id}/recent_events?offset=${offset}`,\n controls,\n )\n}\n","import { get, post, patch, destroy } from 'api/rsvp_api'\n\nexport const apiLoadMovements = controls => {\n get('loading movements', '/api/movements', controls)\n}\n\nexport const apiAddMovement = (movement, controls) => {\n post('adding movement', '/api/movements', { movement }, controls)\n}\n\nexport const apiUpdateMovement = (movementId, movement, controls) => {\n patch(\n 'updating movement',\n `/api/movements/${movementId}`,\n { movement },\n controls,\n )\n}\n\nexport const apiDeleteMovement = (movementId, controls) => {\n destroy('deleting movement', `/api/movements/${movementId}`, controls)\n}\n","// import { get, post, patch, destroy, uploadFile } from 'api/rsvp_api'\nimport { get, patch } from 'api/rsvp_api'\n\nexport const apiGetSectionEventId = (id, controls) => {\n get('getting event id', `/api/sections/${id}/get_event_id`, controls)\n}\n\nexport const apiAddSectionTable = (id, controls) => {\n patch('adding table', `/api/sections/${id}/add_table`, {}, controls)\n}\n\nexport const apiUpdateLabel = (id, data, controls) => {\n patch(\n 'updating section label',\n `/api/sections/${id}/update_label`,\n data,\n controls,\n )\n}\n\nexport const apiRemoveSectionTable = (id, controls) => {\n patch('removing table', `/api/sections/${id}/remove_table`, {}, controls)\n}\n\nexport const apiSelectMovement = (id, movement_id, controls) => {\n patch(\n 'selecting movement',\n `/api/sections/${id}/select_movement`,\n { movement_id },\n controls,\n )\n}\n\nexport const apiRunSwiss = (id, rounds, boards_per_round, controls) => {\n patch(\n 'selecting Swiss movement',\n `/api/sections/${id}/run_as_swiss`,\n { rounds, boards_per_round },\n controls,\n )\n}\n\nexport const apiSelectBoardsPerRound = (id, boards_per_round, controls) => {\n patch(\n 'selecting boards per round',\n `/api/sections/${id}/select_boards_per_round`,\n { boards_per_round },\n controls,\n )\n}\n\nexport const apiStartGame = (id, controls) => {\n patch('starting game', `/api/sections/${id}/start_game`, {}, controls)\n}\n\nexport const apiReturnToSetup = (id, controls) => {\n patch(\n 'returning to setup',\n `/api/sections/${id}/return_to_setup`,\n {},\n controls,\n )\n}\n\nexport const apiReopenScoring = (id, controls) => {\n patch('reopening game', `/api/sections/${id}/reopen_scoring`, {}, controls)\n}\n\nexport const apiCloseSectionWithoutScoring = (id, controls) => {\n patch(\n 'closing game without scoring',\n `/api/sections/${id}/close_without_scoring`,\n {},\n controls,\n )\n}\n\nexport const apiChangeTeachingMode = (id, teaching_mode, controls) => {\n patch(\n 'changing teaching mode',\n `/api/sections/${id}/change_teaching_mode`,\n { teaching_mode },\n controls,\n )\n}\n\nexport const apiUpdateSectionMovement = (id, structure, controls) => {\n patch(\n 'updating event movement',\n `/api/sections/${id}/update_movement`,\n { structure },\n controls,\n )\n}\n\nexport const apiCallRound = (id, controls) => {\n patch('calling round', `/api/sections/${id}/call_round`, {}, controls)\n}\n\nexport const apiFixCurrentRound = (id, controls) => {\n patch(\n 'fixing current round',\n `/api/sections/${id}/fix_current_round`,\n {},\n controls,\n )\n}\n\nexport const apiScoreSection = (id, controls) => {\n patch('scoring event', `/api/sections/${id}/score`, {}, controls)\n}\n\nexport const apiForceScoreSection = (id, controls) => {\n patch('force-scoring event', `/api/sections/${id}/force_score`, {}, controls)\n}\n\nexport const apiRemoveScoring = (id, controls) => {\n patch(\n 'removing scoring and plays',\n `/api/sections/${id}/remove_scoring`,\n {},\n controls,\n )\n}\n\nexport const apiUnplayedRound = (id, round, controls) => {\n patch(\n 'marking remainder of round unplayed',\n `/api/sections/${id}/unplayed_round/${round}`,\n {},\n controls,\n )\n}\n\nexport const apiAllRemainingUnplayed = (id, controls) => {\n patch(\n 'marking remainder of round unplayed',\n `/api/sections/${id}/all_remaining_unplayed`,\n {},\n controls,\n )\n}\n\nexport const apiEraseNotPlayed = (id, controls) => {\n patch(\n 'erasing not-played scores',\n `/api/sections/${id}/erase_not_played`,\n {},\n controls,\n )\n}\n\nexport const apiFakeRound = (id, round, controls) => {\n patch(\n `faking remainder of round ${round}`,\n `/api/sections/${id}/fake_round/${round}`,\n {},\n controls,\n )\n}\n\nexport const apiFakeRemainder = (id, controls) => {\n patch(\n 'faking all unrecorded scores',\n `/api/sections/${id}/fake_remainder`,\n {},\n controls,\n )\n}\n\nexport const apiUpdateFouledBoards = (id, data, controls) => {\n patch(\n 'updating fouled board',\n `/api/sections/${id}/update_fouled_boards`,\n data,\n controls,\n )\n}\n\nexport const apiClearFouledBoards = (id, data, controls) => {\n patch(\n 'clearing fouled board',\n `/api/sections/${id}/clear_fouled_boards`,\n data,\n controls,\n )\n}\nexport const apiChangeSectionOption = (\n id,\n option_name,\n value,\n source,\n controls,\n) => {\n patch(\n 'changing event option',\n `/api/sections/${id}/change_option`,\n { option_name, value, source },\n controls,\n )\n}\n\nexport const apiSetScorekeeper = (id, table, round, member_id, controls) => {\n patch(\n 'setting scorekeeper',\n `/api/sections/${id}/set_scorekeeper/${table}/${round}/${member_id}`,\n {},\n controls,\n )\n}\n\nexport const apiStartRoundTimer = (id, controls) => {\n patch(\n 'starting round timer',\n `/api/sections/${id}/start_round_timer`,\n {},\n controls,\n )\n}\n\nexport const apiChangeRoundTimer = (id, minutes, controls) => {\n patch(\n 'changing round timer',\n `/api/sections/${id}/change_round_timer`,\n { minutes },\n controls,\n )\n}\n\nexport const apiRetrieveMatchingMovements = (id, controls) => {\n get(\n 'retreiving matching movements',\n `/api/sections/${id}/retrieve_matching_movements`,\n controls,\n )\n}\n\nexport const apiChangeMovement = (id, movement_id, controls) => {\n patch(\n 'changing movement',\n `/api/sections/${id}/change_movement`,\n { movement_id },\n controls,\n )\n}\n\nexport const apiScoringLogs = (id, controls) => {\n get('fetching scoring logs', `/api/sections/${id}/scoring_logs`, controls)\n}\n\nexport const apiCaddyRequest = (id, message, controls) => {\n patch(\n 'making caddy request',\n `/api/sections/${id}/caddy_request`,\n { message },\n controls,\n )\n}\n\nexport const apiToggleHybridTable = (section_id, table, controls) => {\n patch(\n 'toggling hybrid table',\n `/api/sections/${section_id}/toggle_hybrid_table`,\n { table },\n controls,\n )\n}\n\nexport const apiMarkBoardNotPlayedForAll = (id, board, controls) => {\n patch(\n 'marking board as played',\n `/api/sections/${id}/mark_board_as_no_play`,\n { board },\n controls,\n )\n}\n","import { get, patch } from 'api/rsvp_api'\n\nexport function apiFetchAvailablePartnersAndTeamMembers(\n event_id,\n member_id,\n controls,\n) {\n get(\n 'fetching available partners and team members',\n `/api/team_events/${event_id}/available_partners_and_team_members/?member_id=${member_id}`,\n controls,\n )\n}\n\nexport const apiCheckTeamsValidity = (event_id, controls) => {\n patch(\n 'checking teams validity',\n `/api/team_events/${event_id}/check_teams_validity`,\n {},\n controls,\n )\n}\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport styled, { keyframes } from 'styled-components'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\nimport { ColorConstants } from 'helpers/colors'\n\n// import common elements\nimport { Button } from 'react-bootstrap'\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst GlowingButton = props => {\n return (\n \n {props.children}\n \n )\n}\n\nGlowingButton.propTypes = {\n disabled: PropTypes.bool,\n clickAction: PropTypes.func.isRequired,\n children: PropTypes.node,\n}\n\nconst glowAnimation = keyframes`\nfrom {\n box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.3);\n background-color: ${ColorConstants.positive};\n border-color: ${ColorConstants.highlight};\n text-shadow: 0 0 0 rgba(0, 0, 0, 0.3);\n }\n to {\n box-shadow: 2px 2px 15px ${ColorConstants.positive};\n background-color: ${ColorConstants.neonGreen};\n border-color: ${ColorConstants.neonYellow};\n text-shadow: 2px 2px 2px rgba(0, 0, 0, 0.3);\n }\n `\n\nconst Glow = styled(Button)`\n animation: ${glowAnimation} 1s infinite alternate;\n color: #ffffff;\n font-weight: 700;\n border-width: 3px;\n border-radius: 8px;\n`\n\nexport default GlowingButton\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\nimport { ColorConstants } from 'helpers/colors'\n\n// import common elements\nimport { Button, FormControl, FormGroup } from 'react-bootstrap'\nimport { Icon } from 'components/elements/Icons'\nimport { Spinner } from 'components/elements/Misc'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst LockableButton = props => {\n const [really, setReally] = React.useState('')\n\n const handleChange = e => {\n setReally(e.target.value.toUpperCase())\n }\n\n const handleSubmit = () => {\n props.action()\n setReally('')\n }\n const buttonStyle = props.destructive\n ? 'danger'\n : props.constructive\n ? 'success'\n : 'default'\n const unlocked = really == props.word.toUpperCase()\n return (\n \n \n \n Type {props.word} in the box to unlock button below\n \n \n
\n \n {props.processing ? (\n \n ) : (\n \n )}\n {props.children}\n \n
\n
\n {props.warning &&

{props.warning}

}\n \n )\n}\n\nconst LockableButtonContainer = styled.div`\n border: ${p =>\n p.$destructive\n ? `2px solid ${ColorConstants.border.danger}`\n : p.$constructive\n ? `2px solid ${ColorConstants.border.success}`\n : 'none'};\n background-color: ${p =>\n p.$destructive\n ? ColorConstants.bg.danger\n : p.$constructive\n ? ColorConstants.bg.success\n : 'none'};\n color: ${p =>\n p.$destructive\n ? ColorConstants.text.danger\n : p.$constructive\n ? ColorConstants.text.success\n : 'inherit'};\n padding: ${p => (p.$destructive || p.$constructive ? '10px' : '0')};\n border-radius: 4px;\n margin-bottom: 10px;\n & .btn {\n margin-bottom: 0;\n }\n & .form-group {\n margin: 0;\n }\n`\n\nconst Instruction = styled.div`\n font-size: 85%;\n strong {\n color: inherit;\n }\n`\n\nLockableButton.propTypes = {\n word: PropTypes.string.isRequired,\n action: PropTypes.func.isRequired,\n destructive: PropTypes.bool,\n constructive: PropTypes.bool,\n processing: PropTypes.bool,\n warning: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n children: PropTypes.node,\n}\n\nexport default LockableButton\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\n// import packages\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Button } from 'react-bootstrap'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst NumberButton = props => {\n const handleClick = () => {\n props.clickAction(props.number)\n }\n\n const n = props.number\n const classes = []\n classes.push(props.selected ? 'btn-selected' : 'btn-not-selected')\n if (props.className) {\n classes.push(props.className)\n }\n\n return (\n \n {props.children ? props.children : n}\n \n )\n}\n\nNumberButton.propTypes = {\n number: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n clickAction: PropTypes.func.isRequired,\n selected: PropTypes.bool,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n children: PropTypes.node,\n}\n\nconst StyledNumberButton = styled(Button)`\n font-weight: 900;\n line-height: 1.1;\n box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);\n &.btn-selected {\n box-shadow: inset 2px 2px 2px rgba(0, 0, 0, 0.3);\n }\n @media (max-width: 360px) {\n font-size: 16px;\n }\n @media (min-width: 361px) and (max-width: 599px) {\n font-size: 20px;\n }\n @media (min-width: 600px) and (max-width: 767px) {\n font-size: 28px;\n }\n @media (min-width: 768px) {\n font-size: 36px;\n }\n`\n\nexport default NumberButton\n","// import packages\nimport React from 'react'\nimport { Button } from 'react-bootstrap'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Icon } from 'components/elements/Icons'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst PrintWindowButton = () => {\n const printWindow = () => {\n window.print()\n }\n return (\n \n )\n}\n\nexport default PrintWindowButton\n","import React from 'react'\nimport PropTypes from 'prop-types'\n// import packages\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Button } from 'react-bootstrap'\nimport { Spinner } from 'components/elements/Misc'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst ProcessingButton = props => {\n const style = props.processing\n ? 'info'\n : props.bsStyle\n ? props.bsStyle\n : 'primary'\n\n return (\n \n {props.processing ? (\n <>\n {props.processingText ? props.processingText : props.text}\n \n ) : (\n props.text\n )}\n \n )\n}\n\nProcessingButton.propTypes = {\n processing: PropTypes.bool,\n processingText: PropTypes.string,\n text: PropTypes.string.isRequired,\n bsSize: PropTypes.string,\n bsStyle: PropTypes.string,\n clickAction: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n}\n\nexport default ProcessingButton\n","import React from 'react'\nimport PropTypes from 'prop-types'\n// import packages\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Button } from 'react-bootstrap'\nimport { Spinner } from 'components/elements/Misc'\nimport { Icon } from 'components/elements/Icons'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst RefreshButton = props => {\n const style = props.loading ? 'info' : 'default'\n\n return (\n \n {props.loading ? (\n <>\n \n \n ) : (\n \n )}\n \n )\n}\n\nRefreshButton.propTypes = {\n loading: PropTypes.bool,\n refresh: PropTypes.func.isRequired,\n}\n\nexport default RefreshButton\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Button, ButtonToolbar } from 'react-bootstrap'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst BoardsPerRoundSelector = props => {\n const range = [1, 2, 3, 4, 5, 6, 7, 8]\n if (props.allowGeneric) {\n range.unshift(0)\n }\n return (\n
\n \n {range.map(bpr => (\n \n ))}\n \n
\n )\n}\n\nconst BprButton = props => {\n const set = () => {\n props.setBoardsPerRound(props.bpr)\n }\n\n return (\n \n {props.bpr == 0 ? 'Generic' : props.bpr}\n \n )\n}\n\nBoardsPerRoundSelector.propTypes = {\n allowGeneric: PropTypes.bool,\n boardsPerRound: PropTypes.number,\n setBoardsPerRound: PropTypes.func.isRequired,\n}\n\nBprButton.propTypes = {\n bpr: PropTypes.number.isRequired,\n currentBpr: PropTypes.number,\n setBoardsPerRound: PropTypes.func.isRequired,\n}\n\nexport default BoardsPerRoundSelector\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { DirectorTag } from 'components/elements/Tags/'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst CurrentSignup = props => {\n const event = props.event\n const signup = props.signup\n const member = props.member\n\n if (!member.id) {\n return (\n
\n You are not a member of this group.\n
\n )\n }\n\n const isDirector = event.directors.includes(member.user_id)\n const status = props.signup\n ? props.signup.status\n : isDirector\n ? 'non-playing-director'\n : 'not-signed-up'\n const team =\n signup && signup.team_mate_names\n ? ` with ${signup.team_mate_names}${\n signup.table0 ? ` (Team ${signup.table0})` : ''\n }`\n : null\n const partnerName =\n signup && !signup.captain_id && signup.partner_name\n ? ` with ${signup.partner_name}`\n : null\n const pendingPartnerName =\n signup && !signup.captain_id && signup.pending_partner\n ? `(${signup.pending_partner.first_name} ${signup.pending_partner.last_name})`\n : null\n\n return (\n
\n {props.action &&
{props.action}
}\n
{props.intro}
\n {signup ? (\n
\n
\n {signup.status_words}\n {team}\n {partnerName}\n {pendingPartnerName}\n
\n
{signup.signup_time}
\n
\n ) : isDirector ? (\n
Non-playing director
\n ) : (\n
Not signed up
\n )}\n\n {isDirector && (\n \n )}\n {props.children}\n
\n )\n}\n\nCurrentSignup.propTypes = {\n signup: PropTypes.object,\n event: PropTypes.object.isRequired,\n member: PropTypes.object.isRequired,\n intro: PropTypes.node,\n action: PropTypes.node,\n children: PropTypes.node,\n}\n\nexport default CurrentSignup\n","import React from 'react'\nimport PropTypes from 'prop-types'\n// import packages\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { TournamentCode, Fee } from 'components/elements/Misc'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst EventComment = ({ event, withFee, children }) => {\n const hasComment = event.comment && event.comment.length > 0\n const hasFee = event.fee > 0\n\n if (event.tournament_code || hasComment || hasFee || children) {\n return (\n
\n \n
\n {withFee && hasFee && }\n {withFee && hasFee && hasComment && – }\n {event.comment}\n {children && (hasFee || hasComment) && – }\n {children}\n
{' '}\n
\n )\n } else {\n return null\n }\n}\n\nEventComment.propTypes = {\n event: PropTypes.object.isRequired,\n withFee: PropTypes.bool,\n children: PropTypes.node,\n}\n\nexport default EventComment\n","import React from 'react'\nimport PropTypes from 'prop-types'\n// import packages\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\nimport { useCurrentUserState } from 'contexts/current-user-context'\n\n// import hooks\n\n// import utilities\nimport { fullDateInZone } from 'helpers/utilities.js'\n\n// import common elements\nimport { TimeRange } from 'components/elements/Misc'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst EventDate = props => {\n const currentUser = useCurrentUserState()\n\n const dateTime = props.startsAt ? props.startsAt : props.event.starts_at\n\n return (\n <>\n {fullDateInZone(dateTime, currentUser.tz)}\n {props.withTime && (\n \n {' '}\n @\n \n \n )}\n \n )\n}\n\nEventDate.propTypes = {\n event: PropTypes.object,\n startsAt: PropTypes.string,\n withTime: PropTypes.bool,\n}\n\nexport default EventDate\n","import styled from 'styled-components'\n\nexport const EventFeeContainer = styled.div`\n font-size: 85%;\n margin: 5px 0;\n`\n\nexport const EventSeatingContainer = styled.div`\n font-size: 85%;\n margin: 5px 0;\n`\n\nexport const PreferenceRow = styled.div`\n margin: 5px 0;\n`\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\nimport { usePageDispatch } from 'contexts/page-context'\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Button } from 'react-bootstrap'\nimport { PaymentRecorded, FeeWithOverride } from 'components/elements/Misc'\n\n// import components\n\n// import styles\nimport { EventFeeContainer } from './styles'\n// local constants\n\n// --------------------\n\nconst CourseEventFee = props => {\n const { openPanel } = usePageDispatch()\n const isPlaying = props.signup && props.signup.status === 'playing'\n const hasEventFee = props.event.fee > 0\n const hasCourseFee = props.group.is_course && props.group.course_fee > 0\n const paidForEvent =\n props.signup &&\n props.signup.has_recorded_payment &&\n props.signup.payment_type !== 'course'\n const paidForCourse = props.member.has_recorded_payment\n\n if (!hasCourseFee) {\n return null\n }\n\n const payForEvent = () => {\n openPanel('payment', props.signup.id)\n }\n\n const payForCourse = () => {\n openPanel('course-payment', props.member.id)\n }\n\n // With a course fee, we want a two-line display\n // payForCourse is not passed in when we don't want that option displayed (e.g., UserCourses, where it is shown above courses)\n\n return (\n
\n \n Course: \n \n\n {hasEventFee && ', '}\n {hasEventFee && (\n \n Single lesson:{' '}\n \n \n )}\n \n\n \n {paidForCourse ? (\n \n ) : isPlaying && !props.hideCourseFee ? (\n \n ) : null}\n \n\n {hasEventFee && isPlaying && (paidForEvent || !paidForCourse) && (\n \n {paidForEvent ? (\n \n ) : (\n \n )}\n \n )}\n
\n )\n}\n\nCourseEventFee.propTypes = {\n event: PropTypes.object.isRequired,\n signup: PropTypes.object,\n group: PropTypes.object.isRequired,\n member: PropTypes.object.isRequired,\n hideCourseFee: PropTypes.bool,\n}\n\nexport default CourseEventFee\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\nimport { usePageDispatch } from 'contexts/page-context'\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Button } from 'react-bootstrap'\nimport { PaymentRecorded, FeeWithOverride } from 'components/elements/Misc'\n\n// import components\nimport CourseEventFee from './CourseEventFee'\n\n// import styles\nimport { EventFeeContainer } from './styles'\n// local constants\n\n// --------------------\n\nconst EventFee = props => {\n const { openPanel } = usePageDispatch()\n const isPlaying = props.signup && props.signup.status === 'playing'\n const hasEventFee = props.event.fee > 0\n const hasCourseFee = props.group.is_course && props.group.course_fee > 0\n const paidForEvent = props.signup && props.signup.has_recorded_payment\n const canPayForEvent = props.event && !props.event.invoiced\n\n if (!hasEventFee && !hasCourseFee) {\n return null\n }\n\n if (hasCourseFee) {\n return \n }\n\n const payForEvent = () => {\n openPanel('payment', props.signup.id)\n }\n\n return (\n <>\n {hasEventFee && (\n \n {' '}\n {paidForEvent && }{' '}\n {paidForEvent && (\n \n )}\n {isPlaying && !paidForEvent ? (\n canPayForEvent ? (\n \n ) : (\n Unpaid\n )\n ) : null}\n \n )}\n \n )\n}\n\nEventFee.propTypes = {\n event: PropTypes.object.isRequired,\n signup: PropTypes.object,\n group: PropTypes.object.isRequired,\n member: PropTypes.object.isRequired,\n payForEvent: PropTypes.func,\n hideCourseFee: PropTypes.bool,\n}\n\nexport default EventFee\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport parse from 'html-react-parser'\nimport styled from 'styled-components'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Collapse } from 'react-bootstrap'\nimport { OpenCloseIcon, Icon } from 'components/elements/Icons'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst EventLocation = props => {\n const { address, csz, link } = props.location\n const { location } = props\n const [showLocationDetail, setShowLocationDetail] = React.useState(false)\n\n const toggleLocationDetail = () => {\n setShowLocationDetail(!showLocationDetail)\n }\n\n const fullAddressText = (\n \n {address}\n {address && csz &&
}\n {csz}\n {link && }\n
\n )\n\n const fullAddress = link ? (\n \n ) : address || csz ? (\n
{fullAddressText}
\n ) : null\n\n return (\n
\n
\n {fullAddress && }\n {location.title}\n
\n \n \n {fullAddress}\n {location.notes && parse(location.notes)}\n \n \n
\n )\n}\n\nconst LocationDetail = styled.div`\n margin-left: 15px;\n`\n\nEventLocation.propTypes = {\n // caller\n location: PropTypes.object.isRequired,\n}\n\nexport default EventLocation\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { DateBox } from 'components/elements/Misc'\n\n// import components\nimport GroupPanelHeading from 'components/shared/GroupPanelHeading'\nimport { EventComment } from 'components/elements/Event'\n\n// import styles\n\n// local constants\n\n// --------------------\n\n// Note: groupTitle and clubTitle are for when a fake event is passed for display purposes and might not be in the redux store\nconst EventPanelHeading = ({ event }) => (\n \n \n
\n \n \n
\n
\n)\n\nEventPanelHeading.propTypes = {\n event: PropTypes.object.isRequired,\n}\n\nexport default EventPanelHeading\n\nconst EPHContainer = styled.div`\n margin-top: 10px;\n display: flex;\n justify-content: flex-start;\n div:nth-child(2) {\n flex: 1 1 auto;\n }\n`\n","// import packages\n// import React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst EventRating = props => {\n switch (props.event.acbl_rating) {\n case 0:\n return 'Regular Club Game'\n case 7:\n return 'Club Special Game - Rating Seven'\n case 9:\n return 'Club Special Game - Rating Nine'\n default:\n return 'Unknown event rating'\n }\n}\n\nEventRating.propTypes = {\n event: PropTypes.object.isRequired,\n}\n\nexport default EventRating\n","// import packages\n// import React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst EventRestrictions = props => {\n switch (props.event.acbl_restrictions) {\n case 0:\n return 'Unrestricted'\n case 1:\n return 'Restricted Game'\n default:\n return 'Multiple game restrictions'\n }\n}\n\nEventRestrictions.propTypes = {\n event: PropTypes.object.isRequired,\n}\n\nexport default EventRestrictions\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\nimport { apiChangeSignupStationaryPreference } from 'api/events/signups'\nimport { apiChangeMemberStationaryPreference } from 'api/members'\nimport { apiChangeUserStationaryPreference } from 'api/users'\n\n// import redux, selectors, actions\nimport { useSelector } from 'react-redux'\nimport { getSignup, getMember } from 'redux/selectors/shared_selectors'\n\n// import contexts\nimport { useCurrentUserState } from 'contexts/current-user-context'\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Button, ButtonToolbar, Collapse } from 'react-bootstrap'\nimport { StationaryPreferenceTag } from 'components/elements/Tags'\nimport { OpenCloseIcon, Icon } from 'components/elements/Icons'\nimport { HelpText } from 'components/elements/Misc'\nimport { Loading } from 'components/elements/Layout'\n\n// import components\n\n// import styles\nimport { EventSeatingContainer, PreferenceRow } from './styles'\n// local constants\n\n// --------------------\n\nconst EventSeating = ({ signupId, memberId, event, user }) => {\n const currentUser = useCurrentUserState()\n const isSelf = currentUser.id == user.id\n const signup = useSelector(state => getSignup(state, signupId))\n\n const member = useSelector(state => getMember(state, memberId))\n\n const [showOptions, setShowOptions] = React.useState(false)\n const [changingSignup, setChangingSignup] = React.useState(false)\n const [changingMember, setChangingMember] = React.useState(false)\n const [changingUser, setChangingUser] = React.useState(false)\n const toggleOptions = () => setShowOptions(t => !t)\n\n const canChange = currentUser.canManageUser(user)\n\n const changingSomething = changingSignup || changingMember || changingUser\n\n const changePref = pref => {\n if (!changingSomething) {\n apiChangeSignupStationaryPreference(event.id, signup.id, pref, {\n setLoading: setChangingSignup,\n success: () => setShowOptions(false),\n })\n }\n }\n\n const changeForGroup = () => {\n if (!changingSomething) {\n apiChangeMemberStationaryPreference(\n memberId,\n signup.stationary_preference,\n `event_${event.id}`,\n `user_${user.id}`,\n {\n setLoading: setChangingMember,\n successMsg:\n 'Your default preference has been changed, as well as all future signups in this group.',\n },\n )\n }\n }\n\n const changeEverywhere = () => {\n if (!changingSomething) {\n apiChangeUserStationaryPreference(\n user.id,\n signup.stationary_preference,\n `event_${event.id}`,\n `user_${user.id}`,\n {\n setLoading: setChangingUser,\n successMsg:\n 'Your default preference has been changed, as well as all future signups in all groups.',\n },\n )\n }\n }\n\n if (\n !signup ||\n signup.status != 'playing' ||\n event.event_type != 'PairEvent'\n ) {\n return null\n } else {\n return (\n \n
\n {canChange && }\n Stationary seating preference:\n {!showOptions && !changingSignup && (\n \n )}\n
\n {canChange && (\n \n
\n
\n {['required', 'requested', 'undesired', 'indifferent'].map(\n pref => (\n changePref(pref)}>\n {changingSignup ? (\n \n ) : (\n \n )}\n \n \n ),\n )}\n \n {isSelf ? 'Your' : 'The'} seating preference for this event\n will be conveyed to the event director, but cannot be\n guaranteed.\n \n \n
\n {isSelf ? 'Your' : 'The'} current default preference for\n this group is\n {changingMember ? (\n \n ) : (\n \n )}\n .\n
\n
\n Changing defaults here will update all existing future\n signups as well.\n
\n
\n Make\n {' '}\n the default for:\n
\n \n {signup.stationary_preference !==\n member.stationary_preference && (\n \n all events in this group\n \n )}\n \n all events in all groups\n \n \n
\n
\n
\n
\n )}\n
\n )\n }\n}\n\nEventSeating.propTypes = {\n // use signup_id so that components re-renders when pref changes\n signupId: PropTypes.number,\n memberId: PropTypes.number.isRequired,\n event: PropTypes.object.isRequired,\n user: PropTypes.object.isRequired,\n}\n\nexport default EventSeating\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\n// import packages\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { TimeRange } from 'components/elements/Misc'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst EventTimeRange = props => {\n // currentUser.timeZone => Rails version, e.g., 'Eastern Time (US & Canada)'\n // currentUser.tz => Javascript version, e.g., 'America/New York'\n\n const starts = new Date(props.event.starts_at)\n const ends = new Date(\n starts.getTime() + props.event.duration_in_minutes * 60000,\n )\n\n return (\n \n )\n}\n\nEventTimeRange.propTypes = {\n event: PropTypes.shape({\n starts_at: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n .isRequired,\n duration_in_minutes: PropTypes.number.isRequired,\n tz: PropTypes.string.isRequired,\n }).isRequired,\n startOnly: PropTypes.bool,\n}\n\nexport default EventTimeRange\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst EventType = props => {\n switch (props.event.event_type) {\n case 'IndividualEvent':\n return null\n case 'PairEvent':\n return
Pairs Game
\n case 'TeamEvent':\n return
Team Game
\n default:\n return null\n }\n}\n\nEventType.propTypes = {\n event: PropTypes.object.isRequired,\n}\n\nexport default EventType\n","// import packages\nimport React from 'react'\n\n// import apis\n\n// import redux, selectors, actions\nimport { useSelector } from 'react-redux'\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { HelpText } from 'components/elements/Misc'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst HistoricalMasterpointsNote = () => {\n const event = useSelector(state => state.event)\n\n if (\n event.scoring_progress == 'complete' &&\n event.award_type == 'acbl_masterpoint'\n ) {\n if (event.event_type == 'PairEvent') {\n return (\n \n

\n Masterpoints shown are those recorded when the event was scored.\n {event.starts_at < '2025-02-10' && (\n \n {' '}\n Life master status is not reported for events prior to February\n 10, 2025.\n \n )}\n

\n
\n )\n } else if (event.event_type == 'TeamEvent') {\n if (event.starts_at < '2025-02-10') {\n return Masterpoints shown are current values.\n } else {\n return (\n \n {' '}\n Masterpoints shown are those recorded when the event was scored.\n \n )\n }\n }\n } else {\n return null\n }\n}\n\nexport default HistoricalMasterpointsNote\n","// import packages\nimport React from 'react'\n\n// import apis\n\n// import redux, selectors, actions\nimport { useSelector } from 'react-redux'\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { HelpText } from 'components/elements/Misc'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst MasterpointsDisclaimer = () => {\n const event = useSelector(state => state.event)\n const acblEventId = event?.acbl_results_retrieval?.acbl_event_id\n\n if (acblEventId) {\n return (\n \n Masterpoint awards shown are the official results from{' '}\n \n Live for Clubs\n \n .\n \n )\n }\n\n return Masterpoint awards shown are estimated.\n}\n\nexport default MasterpointsDisclaimer\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Button, ButtonToolbar } from 'react-bootstrap'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst RoundsSelector = props => {\n const range = props.range || [1, 2, 3, 4, 5, 6, 7, 8]\n\n return (\n
\n \n {range.map(rnd => (\n \n ))}\n \n
\n )\n}\n\nconst RndButton = props => {\n const set = () => {\n props.setRounds(props.rnd)\n }\n\n return (\n \n {props.rnd == 0 ? 'Generic' : props.rnd}\n \n )\n}\n\nRoundsSelector.propTypes = {\n range: PropTypes.array,\n rounds: PropTypes.number,\n setRounds: PropTypes.func.isRequired,\n}\n\nRndButton.propTypes = {\n rnd: PropTypes.number.isRequired,\n currentRnd: PropTypes.number,\n setRounds: PropTypes.func.isRequired,\n}\n\nexport default RoundsSelector\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst ScoreComments = ({ score }) => {\n if (!score || score.comments.length == 0) {\n return null\n }\n let i = 1\n return (\n
\n

\n Comments:\n

\n {score.comments.map(c => {\n return (\n
\n {c.commentor}: {c.comment}\n
\n )\n })}\n
\n )\n}\n\nScoreComments.propTypes = {\n score: PropTypes.object.isRequired,\n}\n\nexport default ScoreComments\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst ScoreRecorder = ({ score, text, classNames }) => {\n return (\n
\n {text ? text : 'Recorded'}\n {score.recorder ? (\n by {score.recorder}\n ) : null}{' '}\n at {score.recorded_at}\n
\n )\n}\n\nScoreRecorder.propTypes = {\n score: PropTypes.object.isRequired,\n classNames: PropTypes.string,\n text: PropTypes.string,\n}\n\nexport default ScoreRecorder\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst SlowTableWarning = ({ round }) => {\n return (\n
\n Round {round} has been called. Please finish ASAP.\n
\n )\n}\n\nSlowTableWarning.propTypes = {\n round: PropTypes.number.isRequired,\n}\n\nexport default SlowTableWarning\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { commaize } from 'helpers/utilities.js'\n\nconst Strat = props => {\n if (!props.show) {\n return null\n }\n\n return (\n
\n
\n \n
\n {props.mpLevel != null && !props.justStrat && (\n
{commaize(props.mpLevel, 2)}
\n )}\n
\n )\n}\n\nconst StratWords = props => {\n if (props.stratOverride)\n return (\n \n \n {props.strat}\n \n {props.stratOverride}\n \n )\n if (props.strat == 'too-high') return !!\n if (props.strat == 'too-low') return !!\n return {props.strat}\n}\n\nStrat.propTypes = {\n show: PropTypes.bool,\n mpLevel: PropTypes.number,\n stratOverride: PropTypes.string,\n strat: PropTypes.string,\n justStrat: PropTypes.bool,\n}\n\nStratWords.propTypes = {\n stratOverride: PropTypes.string,\n strat: PropTypes.string.isRequired,\n}\n\nexport default Strat\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\nimport { useSelector } from 'react-redux'\n\n// import contexts\n\n// import hooks\n\n// import utilities\nimport { toTitleCase } from 'helpers/utilities'\n\n// import common elements\n\n// import components\n\n// import styles\nimport { StratText } from 'pages/Event/Configure/ConfigureGame/Stratify/styles'\n\n// local constants\n\n// --------------------\n\nconst StratificationText = props => {\n const { stratify_by, strats } = useSelector(state => state.helpers)\n const event = useSelector(state => state.event)\n const subjectToChange = event.scoring_progress != 'complete'\n\n return (\n \n Strata: \n {strats\n .map((strat, i) => (\n \n {strat.label} {strat.upper || 'open'}\n {i !== 0 ? ' / ' : ''}\n \n ))\n .reverse()}\n , by {toTitleCase(stratify_by)} MP\n {subjectToChange && (Subject to change)}\n {props.children}\n \n )\n}\n\nStratificationText.propTypes = {\n small: PropTypes.bool,\n children: PropTypes.node,\n}\n\nexport default StratificationText\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {\n FormControl,\n FormGroup,\n ControlLabel,\n HelpBlock,\n} from 'react-bootstrap'\nimport { toTitleCase } from 'helpers/utilities'\n\nconst FormSelect = props => {\n const help = props.error ? props.error : props.help\n let label = false\n if (props.label) {\n if (typeof props.label === 'string') {\n label = toTitleCase(props.label).replace('_', ' ')\n } else {\n label = props.label\n }\n }\n return (\n \n {label && {label}}\n \n {props.options.map(option => {\n return (\n \n )\n })}\n \n {help ? {help} : null}\n \n )\n}\n\nFormSelect.propTypes = {\n error: PropTypes.node,\n help: PropTypes.node,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n validationState: PropTypes.string,\n field: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n disabled: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n options: PropTypes.array.isRequired,\n}\n\nexport default FormSelect\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FormGroup, Checkbox, HelpBlock, ControlLabel } from 'react-bootstrap'\nimport { toTitleCase } from 'helpers/utilities'\n\nconst FormCheckbox = props => {\n const help = props.error ? props.error : props.help\n const label = toTitleCase(props.label).replace('_', ' ')\n const isChecked = props.value == true\n return (\n \n {props.controlLabel && (\n \n {props.controlLabel}\n \n )}\n \n {label}\n \n {help ? {help} : null}\n \n )\n}\n\nFormCheckbox.propTypes = {\n error: PropTypes.node,\n help: PropTypes.node,\n label: PropTypes.string.isRequired,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n validationState: PropTypes.string,\n field: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n controlLabel: PropTypes.string,\n}\n\nexport default FormCheckbox\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst RequiredIndicator = ({ required }) => {\n if (required) {\n return * required\n } else {\n return null\n }\n}\n\nRequiredIndicator.propTypes = {\n required: PropTypes.bool,\n}\n\nexport default RequiredIndicator\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FormGroup, Checkbox, ControlLabel, HelpBlock } from 'react-bootstrap'\nimport { toTitleCase } from 'helpers/utilities'\nimport RequiredIndicator from 'components/elements/Form/RequiredIndicator.js.jsx'\n\nconst FormCheckboxMulti = props => {\n const help = props.error ? props.error : props.help\n const label = props.label ? toTitleCase(props.label).replace('_', ' ') : null\n return (\n \n {label && (\n \n {label}\n \n \n )}\n
\n {props.options.map(option => (\n \n ))}\n
\n {help ? {help} : null}\n
\n )\n}\n\nconst IndividualCheckbox = props => {\n const change = e => {\n props.onChange(props.field, props.option.value, e.target.checked)\n }\n const isChecked = props.value.includes(props.option.value)\n const field = `${props.field}_${props.option.value}`\n return (\n \n {props.option.label}\n \n )\n}\n\nFormCheckboxMulti.propTypes = {\n field: PropTypes.string.isRequired,\n error: PropTypes.node,\n help: PropTypes.node,\n label: PropTypes.string,\n validationState: PropTypes.string,\n required: PropTypes.bool,\n options: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n value: PropTypes.array.isRequired,\n}\n\nIndividualCheckbox.propTypes = {\n option: PropTypes.object.isRequired,\n field: PropTypes.string.isRequired,\n value: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n}\n\nexport default FormCheckboxMulti\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FormGroup, ControlLabel, HelpBlock } from 'react-bootstrap'\nimport { toTitleCase } from 'helpers/utilities'\nimport RequiredIndicator from 'components/elements/Form/RequiredIndicator.js.jsx'\nimport DatePicker from 'react-datepicker'\n\n// Only days, not date/time. Currently only used on EditAccount?\n\nconst FormDatepicker = props => {\n const handleChange = d => {\n props.onChange(props.field, d)\n }\n\n const help = props.error ? props.error : props.help\n const label = toTitleCase(props.label).replace('_', ' ')\n return (\n \n \n {label}\n \n \n \n {props.dateHelp && (\n
{props.dateHelp}
\n )}\n \n {help ? {help} : null}\n
\n )\n}\n\nFormDatepicker.propTypes = {\n field: PropTypes.string.isRequired,\n error: PropTypes.node,\n help: PropTypes.node,\n label: PropTypes.node,\n validationState: PropTypes.string,\n required: PropTypes.bool,\n highlightedDates: PropTypes.array,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n disabled: PropTypes.bool,\n placeholder: PropTypes.string,\n dateHelp: PropTypes.node,\n onChange: PropTypes.func.isRequired,\n}\n\nexport default FormDatepicker\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FormGroup, ControlLabel, HelpBlock } from 'react-bootstrap'\nimport { toTitleCase } from 'helpers/utilities'\nimport RequiredIndicator from 'components/elements/Form/RequiredIndicator.js.jsx'\nimport { DatePickerWithTimeZone } from 'components/elements/Misc'\n\nconst FormEventDatepicker = props => {\n const hasHighlightedDates =\n props.highlightedDates && props.highlightedDates.length > 0\n\n const handleChange = d => {\n props.onChange(props.field, d)\n }\n\n const help = props.error ? props.error : props.help\n const label = toTitleCase(props.label).replace('_', ' ')\n return (\n \n \n {label}\n \n \n \n
\n If changing date, you must click the time as well.\n
\n {hasHighlightedDates && (\n
\n Existing events are highlighted in green. Selected date is in blue.\n
\n )}\n \n {help ? {help} : null}\n
\n )\n}\n\nFormEventDatepicker.propTypes = {\n field: PropTypes.string.isRequired,\n error: PropTypes.node,\n help: PropTypes.node,\n label: PropTypes.node,\n validationState: PropTypes.string,\n required: PropTypes.bool,\n highlightedDates: PropTypes.array,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n timeZone: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n timeZoneToggle: PropTypes.func,\n}\n\nexport default FormEventDatepicker\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FormGroup, ControlLabel, HelpBlock } from 'react-bootstrap'\nimport { toTitleCase } from 'helpers/utilities'\nimport RequiredIndicator from 'components/elements/Form/RequiredIndicator.js.jsx'\nimport { TrixEditor } from 'react-trix'\n// eslint-disable-next-line no-unused-vars\nimport trix from 'trix'\nimport parse from 'html-react-parser'\n\nexport default class FormEditor extends React.Component {\n constructor(props) {\n super(props)\n this.editor = false\n }\n\n handleChange = d => {\n this.props.onChange(this.props.field, d)\n }\n\n render() {\n let help = this.props.error ? this.props.error : this.props.help\n let label = toTitleCase(this.props.label).replace('_', ' ')\n let mergeTags = this.props.mergeTags\n return (\n \n \n {label}\n \n {this.props.disabled && (modification not permitted) }\n \n {this.props.disabled ? (\n
{parse(this.props.value || '')}
\n ) : (\n \n )}\n {help ? {help} : null}\n \n )\n }\n}\n\nFormEditor.propTypes = {\n field: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n error: PropTypes.node,\n help: PropTypes.node,\n label: PropTypes.node,\n mergeTags: PropTypes.array,\n validationState: PropTypes.string,\n helpEditor: PropTypes.bool,\n required: PropTypes.bool,\n disabled: PropTypes.bool,\n value: PropTypes.string,\n placeholder: PropTypes.string,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {\n FormControl,\n FormGroup,\n ControlLabel,\n HelpBlock,\n InputGroup,\n} from 'react-bootstrap'\n// import MaskedFormControl from 'react-bootstrap-maskedinput'\nimport { toTitleCase } from 'helpers/utilities'\nimport RequiredIndicator from 'components/elements/Form/RequiredIndicator.js.jsx'\n\nexport default class FormTextInput extends React.Component {\n inputGroup() {\n return (\n \n {this.props.prepend && (\n {this.props.prepend}\n )}\n {this.formControl()}\n {this.props.append && (\n {this.props.append}\n )}\n \n )\n }\n\n formControl() {\n let value = this.props.value == null ? '' : this.props.value\n const opts = {\n name: this.props.field,\n type: this.props.inputType,\n value: value,\n onChange: this.props.onChange,\n disabled: this.props.disabled,\n placeholder: this.props.placeholder,\n inputRef: this.props.refNode,\n autoFocus: this.props.autoFocus,\n ['aria-label']: this.props.ariaLabel,\n }\n if (this.props.inputType == 'number') {\n opts['min'] = this.props.min\n opts['max'] = this.props.max\n opts['step'] = this.props.step\n }\n\n return \n }\n\n render() {\n let labelText = this.props.label ? this.props.label : this.props.field\n let label =\n typeof labelText === 'string'\n ? toTitleCase(labelText).replace('_', ' ')\n : labelText\n let help = this.props.error ? this.props.error : this.props.help\n return (\n \n {!this.props.hideLabel && (\n \n {label}\n \n \n )}\n {this.props.prepend || this.props.append\n ? this.inputGroup()\n : this.formControl()}\n {help ? {help} : null}\n \n )\n }\n}\n\nFormTextInput.propTypes = {\n inputType: PropTypes.string,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n error: PropTypes.node,\n help: PropTypes.node,\n validationState: PropTypes.string,\n hideLabel: PropTypes.bool,\n required: PropTypes.bool,\n prepend: PropTypes.node,\n append: PropTypes.node,\n field: PropTypes.string.isRequired,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.array,\n ]),\n disabled: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n refNode: PropTypes.node,\n autoFocus: PropTypes.bool,\n placeholder: PropTypes.string,\n ariaLabel: PropTypes.string,\n min: PropTypes.number,\n max: PropTypes.number,\n step: PropTypes.number,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FormGroup, Radio, ControlLabel, HelpBlock } from 'react-bootstrap'\nimport { toTitleCase } from 'helpers/utilities'\n\nconst FormRadio = props => {\n const help = props.error ? props.error : props.help\n const label = toTitleCase(props.label).replace('_', ' ')\n return (\n \n {label}\n {props.options.map(option => {\n return (\n \n {option.label}\n \n )\n })}\n {help ? {help} : null}\n \n )\n}\n\nFormRadio.propTypes = {\n error: PropTypes.node,\n help: PropTypes.node,\n label: PropTypes.string,\n validationState: PropTypes.string,\n options: PropTypes.array.isRequired,\n field: PropTypes.string.isRequired,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n onChange: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n}\n\nexport default FormRadio\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {\n FormControl,\n FormGroup,\n ControlLabel,\n HelpBlock,\n} from 'react-bootstrap'\nimport { toTitleCase } from 'helpers/utilities'\nimport RequiredIndicator from 'components/elements/Form/RequiredIndicator.js.jsx'\n\nconst FormTextArea = props => {\n const help = props.error ? props.error : props.help\n const label = toTitleCase(props.label).replace('_', ' ')\n const value = props.value == null ? '' : props.value\n return (\n \n \n {label}\n \n \n \n {help ? {help} : null}\n \n )\n}\n\nFormTextArea.propTypes = {\n error: PropTypes.node,\n help: PropTypes.node,\n label: PropTypes.string,\n value: PropTypes.string,\n validationState: PropTypes.string,\n required: PropTypes.bool,\n field: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n placeholder: PropTypes.string,\n refNode: PropTypes.node,\n autoFocus: PropTypes.bool,\n}\n\nexport default FormTextArea\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport FormTextInput from 'components/elements/Form/FormTextInput.js.jsx'\nimport FormSelect from 'components/elements/Form/FormSelect.js.jsx'\nimport FormRadio from 'components/elements/Form/FormRadio.js.jsx'\nimport FormTextArea from 'components/elements/Form/FormTextArea.js.jsx'\nimport FormDatepicker from 'components/elements/Form/FormDatepicker.js.jsx'\nimport FormEventDatepicker from 'components/elements/Form/FormEventDatepicker.js.jsx'\nimport FormEditor from 'components/elements/Form/FormEditor.js.jsx'\nimport FormCheckbox from 'components/elements/Form/FormCheckbox.js.jsx'\nimport FormCheckboxMulti from 'components/elements/Form/FormCheckboxMulti.js.jsx'\n\nexport default class FormField extends React.Component {\n handleChange = e => {\n this.props.handleChange(e.target.name, e.target.value)\n }\n\n handleDateChange = (field, value) => {\n this.props.handleChange(field, value)\n }\n\n handleEditorChange = (field, value) => {\n this.props.handleChange(field, value)\n }\n\n handleCheckboxChange = e => {\n this.props.handleChange(e.target.name, e.target.checked)\n }\n\n handleMultiCheckboxChange = (field, value, checked) => {\n this.props.handleChange(field, value, checked)\n }\n\n canEdit(disabled, field) {\n if (disabled) return false\n if (this.props.canEdit === true || this.props.canEdit === null) {\n return true\n }\n if (this.props.canEdit === false) {\n return false\n } else {\n return this.props.canEdit(field)\n }\n }\n\n render() {\n const { field, current, validationState, error, ariaLabel } = this.props\n\n let opts = {\n help: null,\n label: field,\n ariaLabel: field,\n options: [],\n highlightedDates: [],\n disabled: false,\n placeholder: '',\n required: false,\n autoFocus: false,\n hideLabel: false,\n inputType: 'text',\n timeZone: '',\n ...this.props.opts,\n }\n\n let disabled = !this.canEdit(opts.disabled, field)\n let attributes = {\n field,\n value: current,\n label: opts.label,\n ariaLabel: ariaLabel,\n validationState,\n help: opts.help,\n disabled,\n required: opts.required,\n error,\n prepend: opts.prepend,\n append: opts.append,\n hideLabel: opts.hideLabel,\n controlLabel: opts.controlLabel,\n inputType: opts.inputType,\n min: opts.min,\n max: opts.max,\n step: opts.step,\n timeZone: opts.timeZone,\n timeZoneToggle: opts.timeZoneToggle,\n }\n\n // ToDo: error on fields that don't handle it?\n if (opts.eventdatepicker) {\n return (\n \n )\n } else if (opts.datepicker) {\n return (\n \n )\n } else if (opts.select) {\n return (\n \n )\n } else if (opts.radio) {\n return (\n \n )\n } else if (opts.checkbox) {\n return (\n \n )\n } else if (opts.multi_checkbox) {\n return (\n \n )\n } else if (opts.textarea) {\n return (\n \n )\n } else if (opts.editor) {\n return (\n \n )\n } else {\n return (\n \n )\n }\n }\n}\n\nFormField.propTypes = {\n field: PropTypes.string.isRequired,\n ariaLabel: PropTypes.string,\n current: PropTypes.any,\n validationState: PropTypes.string,\n error: PropTypes.node,\n opts: PropTypes.object,\n handleChange: PropTypes.func.isRequired,\n canEdit: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Alert } from 'react-bootstrap'\nimport { Icon } from 'components/elements/Icons'\n\nconst SaveWarning = props => (\n \n \n \n Changes are not saved until you click the Save button above.\n \n \n)\n\nSaveWarning.propTypes = {\n active: PropTypes.bool,\n}\n\nexport default SaveWarning\n","import styled from 'styled-components'\nimport { ColorConstants } from 'helpers/colors'\n\nexport const AccordionContainer = styled.div`\n padding-left: ${p => (p.$withDividers ? '10px' : '0')};\n`\n\nexport const DividerContainer = styled.div`\n margin: 15px 0 -5px -10px;\n`\n\nexport const EntryContainer = styled.div`\n display: flex;\n gap: 10px;\n justify-content: space-between;\n margin-top: 10px;\n &:first-child {\n margin-top: 0;\n }\n padding: ${p => (p.$open ? '5px 5px 3px 0' : '5px 5px 5px 0')};\n border-radius: ${p => (p.$open ? '5px 5px 0 0 ' : '5px')};\n background-color: ${p =>\n p.$open ? ColorConstants.bg.listingOpen : ColorConstants.bg.listingClosed};\n border: 1px solid ${ColorConstants.border.listing};\n border-bottom-width: ${p => (p.$open ? '0' : '1px')};\n cursor: pointer;\n\n .event-comment {\n text-transform: uppercase;\n color: ${ColorConstants.text.commentInListing};\n font-weight: normal;\n }\n`\n\nexport const ToggleContainer = styled.div`\n flex: 0 0 20px;\n`\n\nexport const EntryLeftContainer = styled.div`\n flex: ${p => (p.$fixedWidth ? `0 0 ${p.$fixedWidth}` : '1 1 auto')};\n font-weight: ${p => (p.$strong ? '900' : 'normal')};\n`\nexport const EntryRightContainer = styled.div`\n flex: 0 0 auto;\n text-align: right;\n`\nexport const EntryListingIconsContainer = styled.div`\n display: flex;\n justify-content: flex-end;\n .tag {\n font-size: 85%;\n padding-top: 3px;\n }\n div {\n flex: 0 0 auto;\n }\n`\nexport const EntryMetaContainer = styled.div`\n font-weight: normal;\n font-size: 85%;\n`\nexport const EntryNavigateContainer = styled.div`\n flex: 0 0 auto;\n padding-left: 10px;\n`\nexport const ContentContainer = styled.div`\n padding: 5px 5px 5px 20px;\n background-color: ${ColorConstants.bg.listingOpen};\n border: 1px solid ${ColorConstants.border.listing};\n border-width: 0 1px 1px 1px;\n border-radius: 0 0 5px 5px;\n`\nexport const ContentGridContainer = styled(ContentContainer)`\n display: grid;\n grid-template-areas: 'left right' 'actions actions';\n grid-template-columns: 1fr auto;\n grid-template-rows: auto;\n`\nexport const ContentLeftContainer = styled.div`\n grid-area: left;\n`\nexport const ContentRightContainer = styled.div`\n grid-area: right;\n text-align: right;\n`\nexport const ContentMetaContainer = styled.div`\n font-weight: normal;\n font-size: 85%;\n`\n\nexport const ContentActionsContainer = styled.div`\n grid-area: actions;\n`\n\nexport const ContentButtonStackContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 5px;\n align-items: flex-end;\n`\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\nimport { EntryLeftContainer } from './styles'\n// local constants\n\n// --------------------\n\nconst EntryLeft = props => {\n return (\n \n {props.children}\n \n )\n}\n\nEntryLeft.propTypes = {\n strong: PropTypes.bool.isRequired,\n fixedWidth: PropTypes.string,\n children: PropTypes.node,\n}\n\nEntryLeft.defaultProps = {\n strong: true,\n}\n\nexport default EntryLeft\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\nimport { EntryRightContainer } from './styles'\n// local constants\n\n// --------------------\n\nconst EntryRight = props => {\n return {props.children}\n}\n\nEntryRight.propTypes = {\n children: PropTypes.node,\n}\n\nexport default EntryRight\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\nimport { EntryMetaContainer } from './styles'\n// local constants\n\n// --------------------\n\nconst EntryMeta = props => {\n return {props.children}\n}\n\nEntryMeta.propTypes = {\n children: PropTypes.node,\n}\n\nexport default EntryMeta\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\nimport { EntryListingIconsContainer } from './styles'\n// local constants\n\n// --------------------\n\nconst EntryListingIcons = props => {\n return (\n {props.children}\n )\n}\n\nEntryListingIcons.propTypes = {\n children: PropTypes.node,\n}\n\nexport default EntryListingIcons\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\nimport { EntryNavigateContainer } from './styles'\n// local constants\n\n// --------------------\n\nconst EntryNavigate = props => {\n return {props.children}\n}\n\nEntryNavigate.propTypes = {\n children: PropTypes.node,\n}\n\nexport default EntryNavigate\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\nimport { useAccordion } from 'hooks/useAccordion'\n\n// import utilities\n\n// import common elements\nimport { OpenCloseIcon } from 'components/elements/Icons'\n\n// import components\nimport EntryLeft from './EntryLeft'\nimport EntryRight from './EntryRight'\nimport EntryMeta from './EntryMeta'\nimport EntryListingIcons from './EntryListingIcons'\nimport EntryNavigate from './EntryNavigate'\n\n// import styles\nimport { EntryContainer, ToggleContainer } from './styles'\n\n// local constants\n\n// --------------------\n\nconst Entry = props => {\n const { toggle, isOpen } = useAccordion(props.accordionKey)\n const toggleEntry = () => toggle(props.id)\n\n const entryIsOpen = isOpen(props.id)\n\n return (\n \n \n \n \n {props.children}\n \n )\n}\n\nEntry.propTypes = {\n accordionKey: PropTypes.string.isRequired,\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n children: PropTypes.node,\n}\n\nEntry.Left = EntryLeft\nEntry.Left.displayName = 'Accordion.Entry.Left'\n\nEntry.Right = EntryRight\nEntry.Right.displayName = 'Accordion.Entry.Right'\n\nEntry.ListingIcons = EntryListingIcons\nEntry.ListingIcons.displayName = 'Accordion.Entry.ListingIcons'\n\nEntry.Navigate = EntryNavigate\nEntry.Navigate.displayName = 'Accordion.Entry.Navigate'\n\nEntry.Meta = EntryMeta\nEntry.Meta.displayName = 'Accordion.Entry.Meta'\n\nexport default Entry\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\nimport { ContentLeftContainer } from './styles'\n// local constants\n\n// --------------------\n\nconst ContentLeft = props => {\n return {props.children}\n}\n\nContentLeft.propTypes = {\n children: PropTypes.node,\n}\n\nexport default ContentLeft\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\nimport { ContentRightContainer } from './styles'\n// local constants\n\n// --------------------\n\nconst ContentRight = props => {\n return {props.children}\n}\n\nContentRight.propTypes = {\n children: PropTypes.node,\n}\n\nexport default ContentRight\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\nimport { ContentMetaContainer } from './styles'\n// local constants\n\n// --------------------\n\nconst ContentMeta = props => {\n return {props.children}\n}\n\nContentMeta.propTypes = {\n children: PropTypes.node,\n}\n\nexport default ContentMeta\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\nimport { ContentActionsContainer } from './styles'\n// local constants\n\n// --------------------\n\nconst ContentActions = props => {\n return {props.children}\n}\n\nContentActions.propTypes = {\n children: PropTypes.node,\n}\n\nexport default ContentActions\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\nimport { ContentButtonStackContainer } from './styles'\n// local constants\n\n// --------------------\n\nconst ContentButtonStack = props => {\n return (\n {props.children}\n )\n}\n\nContentButtonStack.propTypes = {\n children: PropTypes.node,\n}\n\nexport default ContentButtonStack\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\nimport { useAccordion } from 'hooks/useAccordion'\n\n// import utilities\n\n// import common elements\nimport { Collapse } from 'react-bootstrap'\n\n// import components\nimport ContentLeft from './ContentLeft'\nimport ContentRight from './ContentRight'\nimport ContentMeta from './ContentMeta'\nimport ContentActions from './ContentActions'\nimport ContentButtonStack from './ContentButtonStack'\n\n// import styles\nimport { ContentContainer, ContentGridContainer } from './styles'\n\n// local constants\n\n// --------------------\n\nconst Content = props => {\n const { isOpen } = useAccordion(props.accordionKey)\n const entryIsOpen = isOpen(props.id)\n\n const Container = props.grid ? ContentGridContainer : ContentContainer\n\n return (\n \n
\n {props.children}\n
\n
\n )\n}\n\nContent.propTypes = {\n grid: PropTypes.bool,\n accordionKey: PropTypes.string.isRequired,\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n children: PropTypes.node,\n}\n\nContent.Left = ContentLeft\nContent.Left.displayName = 'Accordion.Content.Left'\n\nContent.Right = ContentRight\nContent.Right.displayName = 'Accordion.Content.Right'\n\nContent.Meta = ContentMeta\nContent.Meta.displayName = 'Accordion.Content.Meta'\n\nContent.Actions = ContentActions\nContent.Actions.displayName = 'Accordion.Content.Actions'\n\nContent.ButtonStack = ContentButtonStack\nContent.ButtonStack.displayName = 'Accordion.Content.ButtonStack'\n\nexport default Content\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\nimport { DividerContainer } from './styles'\n\n// local constants\n\n// --------------------\n\nconst Divider = props => {\n return {props.children}\n}\n\nDivider.propTypes = {\n children: PropTypes.node,\n}\n\nexport default Divider\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\nimport Entry from './Entry'\nimport Content from './Content'\nimport Divider from './Divider'\n\n// import styles\nimport { AccordionContainer } from './styles'\n\n// local constants\n\n// --------------------\n\nconst Accordion = props => {\n return (\n \n {props.children}\n \n )\n}\n\nAccordion.propTypes = {\n withDividers: PropTypes.bool,\n children: PropTypes.node,\n}\n\nAccordion.Entry = Entry\nAccordion.Entry.displayName = 'Accordion.Entry'\n\nAccordion.Content = Content\nAccordion.Content.displayName = 'Accordion.Content'\n\nAccordion.Divider = Divider\nAccordion.Divider.displayName = 'Accordion.Divider'\n\nexport default Accordion\n","import styled from 'styled-components'\nimport { ColorConstants, NavColors } from 'helpers/colors'\n\nexport const NavIconContainer = styled.div`\n cursor: ${p => (p.$current ? 'default' : 'pointer')};\n position: relative;\n flex: 0 0 ${p => (p.$isNavToggler ? '52px' : 'auto')};\n font-size: 13px;\n @media (min-width: 600px) {\n flex: 0 0 ${p => (p.$isNavToggler ? '65px' : 'auto')};\n font-size: 18px;\n }\n padding: ${p => (p.$isNavToggler ? '5px 5px 3px 8px' : '5px 5px 3px 5px')};\n margin-right: ${p => (p.$isNavToggler ? '-5px' : '0')};\n text-align: center;\n color: ${p =>\n NavColors[p.$navLevel][p.$current ? 'navHighlighted' : 'navText']};\n text-decoration: none;\n box-shadow: ${p =>\n p.$isNavToggler ? '3px 0 3px inset rgba(0,0,0,0.3)' : 'none'};\n background: ${p =>\n p.$subNavOpen\n ? NavColors[p.$navLevel].subNavBg\n : p.$isNavToggler\n ? NavColors[p.$navLevel].navBg\n : 'none'};\n transition: color 0.3s;\n transition: background 0.3s;\n &:hover {\n color: ${p =>\n NavColors[p.$navLevel][p.$current ? 'navHighlighted' : 'navHover']};\n text-decoration: none;\n text-shadow: ${p =>\n p.$isNavCycler\n ? 'none'\n : `0 0 20px ${NavColors[p.$navLevel].navHighlighted}`};\n }\n &:active {\n text-shadow: ${p =>\n p.$isNavCycler\n ? 'none'\n : `0 0 5px ${NavColors[p.$navLevel].navHighlighted}`};\n }\n // Force colored icons to nav context\n div:before {\n color: ${p =>\n NavColors[p.$navLevel][p.$current ? 'navHighlighted' : 'navText']};\n }\n`\n\nexport const NavText = styled.div`\n font-size: 10px;\n @media (min-width: 600px) {\n font-size: 13px;\n }\n`\n\nexport const Badge = styled.div`\n font-size: 10px;\n line-height: 13px;\n color: #fff;\n background-color: ${p => p.$color || ColorConstants.red};\n border-radius: 50%;\n height: 15px;\n width: 15px;\n text-align: center;\n ${p =>\n p.$inline\n ? 'display: inline-block; margin-left: 4px;'\n : 'position: absolute; top: 2px; right: 2px;'}\n padding: 2px;\n`\n\nexport const IconContainer = styled.div`\n font-size: 22px;\n line-height: 22px;\n display: block;\n @media (min-width: 600px) {\n font-size: 32px;\n line-height: 32px;\n }\n`\n\nexport const AppIconsContainer = styled.div`\n background: ${NavColors.lowerNav.navBg};\n position: fixed;\n bottom: 0;\n padding-bottom: env(safe-area-inset-bottom, 0);\n width: 100%;\n max-width: 1024px;\n transition: max-width 0.3s ease-in-out 0.1s;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.4);\n z-index: 3000;\n .full-width-container & {\n max-width: 100%;\n }\n @media print {\n display: none;\n }\n`\n\nexport const PageIcons = styled.div`\n background: ${p => NavColors[p.$navLevel].navBg};\n transition: background .3s;\n box-shadow: 0 0 10px rgba(0,0,0,0.4);\n z-index: 3000;\n @media print {\n display: none;\n } \n}\n`\n\nexport const NavIconsContainer = styled.div`\n width: 100%;\n display: flex;\n justify-content: space-between;\n padding: 0 5px;\n`\n\nexport const SubNavIconsContainer = styled.div`\n background: ${p => NavColors[p.$navLevel].subNavBg};\n display: flex;\n justify-content: space-around;\n overflow: hidden;\n transition: max-height 0.3s ease-in-out 0.2s;\n max-height: ${p => (p.$open ? '60px' : '0px')};\n ${NavIconContainer} {\n background: ${p => NavColors[p.$navLevel].subNavBg};\n }\n`\n\nexport const MenuItemContent = styled.span`\n font-weight: ${p => (p.$current ? '900' : '500')};\n cursor: ${p => (p.$current || p.$header ? 'default' : 'pointer')};\n margin-left: ${p => (p.$header ? '-10px' : '0')};\n text-transform: ${p => (p.$header ? 'uppercase' : 'none')};\n color: ${p =>\n p.$current\n ? ColorConstants.text.strong\n : p.$clubTitle\n ? ColorConstants.text.clubTitle\n : p.$groupTitle\n ? ColorConstants.text.groupTitle\n : p.$header\n ? ColorConstants.text.muted\n : ColorConstants.text.default};\n`\nexport const NavCyclerAboveContainer = styled.div`\n position: absolute;\n top: -45px;\n right: 0;\n @media (min-width: 600px) {\n top: -65px;\n }\n`\n\nexport const CurrentIndicator = styled.span`\n padding-right: 5px;\n`\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { MenuItem } from 'react-bootstrap'\n\n// import components\n\n// import styles\nimport { MenuItemContent, Badge } from './styles'\n\n// local constants\n\n// --------------------\n\nconst AdditionalNavCycleItem = ({\n children,\n badge,\n clubTitle,\n groupTitle,\n ...rest\n}) => {\n if (rest.divider) {\n return \n }\n return (\n \n \n {children}\n {badge && {badge}}\n \n \n )\n}\n\nAdditionalNavCycleItem.propTypes = {\n badge: PropTypes.number,\n children: PropTypes.node,\n clubTitle: PropTypes.bool,\n groupTitle: PropTypes.bool,\n}\n\nexport default AdditionalNavCycleItem\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\nimport { AppIconsContainer } from './styles'\n\n// local constants\n\n// --------------------\n\nconst AppIcons = props => {\n return {props.children}\n}\n\nAppIcons.propTypes = {\n children: PropTypes.node,\n}\n\nexport default AppIcons\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\nimport { NavIconsContainer } from './styles'\n\n// local constants\n\n// --------------------\n\nconst AppNav = props => {\n return (\n {props.children}\n )\n}\n\nAppNav.propTypes = {\n children: PropTypes.node,\n}\n\nexport default AppNav\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\nimport { SubNavIconsContainer } from './styles'\n\n// local constants\n\n// --------------------\n\nconst AppSubNav = props => {\n return (\n \n {props.children}\n \n )\n}\n\nAppSubNav.propTypes = {\n open: PropTypes.bool,\n children: PropTypes.node,\n}\n\nexport default AppSubNav\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nexport default class Attributes extends React.Component {\n render() {\n let classes = ['attributes ']\n if (this.props.elementsWide) {\n classes.push('attributes-elements-wide')\n }\n if (this.props.tight) {\n classes.push('attributes-tight')\n }\n return (\n
\n {this.props.title && (\n
{this.props.title}
\n )}\n {this.props.children}\n
\n )\n }\n}\n\nAttributes.Buttons = props => (\n
\n {props.children}\n
\n)\n\nAttributes.Row = props => {\n let classes = ['attribute-row ']\n if (props.vertical) {\n classes.push('vertical ')\n }\n if (props.indented) {\n classes.push('indented ')\n }\n return
{props.children}
\n}\n\nAttributes.Element = props => (\n
{props.children}
\n)\n\nAttributes.Setting = props => (\n
{props.children}
\n)\n\nAttributes.ControlRow = props => (\n
{props.children}
\n)\n\nAttributes.Control = props => (\n
{props.children}
\n)\n\nAttributes.ControlDescription = props => (\n
{props.children}
\n)\n\nAttributes.propTypes = {\n elementsWide: PropTypes.bool,\n tight: PropTypes.bool,\n title: PropTypes.node,\n children: PropTypes.node,\n}\n\nAttributes.Buttons.propTypes = {\n right: PropTypes.bool,\n children: PropTypes.node.isRequired,\n}\nAttributes.Buttons.displayName = 'Attributes.Buttons'\n\nAttributes.Row.propTypes = {\n vertical: PropTypes.bool,\n indented: PropTypes.bool,\n children: PropTypes.node.isRequired,\n}\nAttributes.Row.displayName = 'Attributes.Row'\n\nAttributes.Element.propTypes = { children: PropTypes.node }\nAttributes.Element.displayName = 'Attributes.Element'\n\nAttributes.Setting.propTypes = { children: PropTypes.node.isRequired }\nAttributes.Setting.displayName = 'Attributes.Setting'\n\nAttributes.ControlRow.propTypes = { children: PropTypes.node.isRequired }\nAttributes.ControlRow.displayName = 'Attributes.ControlRow'\n\nAttributes.Control.propTypes = { children: PropTypes.node.isRequired }\nAttributes.Control.displayName = 'Attributes.Control'\n\nAttributes.ControlDescription.propTypes = {\n children: PropTypes.node.isRequired,\n}\nAttributes.ControlDescription.displayName = 'Attributes.ControlDescription'\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst Copyright = props => {\n return (\n
\n © 2016 – {new Date().getFullYear()}. RSVP Bridge LLC.\n {props.showLinks && (\n
\n
\n Home\n
\n \n \n \n
\n FAQ\n
\n
\n \n YouTube\n \n
\n
\n )}\n
\n )\n}\n\nexport default Copyright\n\nCopyright.propTypes = {\n showLinks: PropTypes.bool,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { ButtonToolbar, Button } from 'react-bootstrap'\nimport { Pane } from 'components/elements/Layout'\nimport { toast } from 'react-toastify'\n\nexport default class ErrorBoundary extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n error: null,\n errorInfo: null,\n }\n }\n\n componentDidCatch(error, errorInfo) {\n this.setState({ error, errorInfo })\n }\n\n reload() {\n window.location.reload()\n }\n\n clearStorage() {\n localStorage.clear()\n sessionStorage.clear()\n toast.info('Settings have been cleared.')\n }\n\n render() {\n if (this.state.errorInfo) {\n // Error path\n return (\n \n \n
\n \n \n \n \n
\n

It might help to reset locally stored settings:

\n
\n \n
\n\n
\n {this.state.error && this.state.error.toString()}\n
\n {this.state.errorInfo.componentStack}\n
\n
\n )\n }\n // Normally, just render children\n return this.props.children\n }\n}\n\nErrorBoundary.propTypes = {\n children: PropTypes.node,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from 'react-bootstrap'\nimport { toast } from 'react-toastify'\n\nexport default class InteriorErrorBoundary extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n error: null,\n errorInfo: null,\n }\n }\n\n static getDerivedStateFromError(error) {\n // Update state so the next render will show the fallback UI.\n return { error: error }\n }\n\n reload() {\n window.location.reload()\n }\n\n clearStorage() {\n localStorage.clear()\n sessionStorage.clear()\n toast.info('Settings have been cleared.')\n }\n\n render() {\n if (this.state.error) {\n // Error path\n return (\n
\n

\n Well, that’s embarassing.\n

\n

Something has gone wrong. Might be good to try reloading:

\n
\n \n
\n

And if that does not work, return to the home page:

\n
\n \n
\n

It might help to clear locally stored values:

\n
\n \n
\n\n
\n {this.state.error && this.state.error.toString()}\n
\n
\n )\n }\n // Normally, just render children\n return this.props.children\n }\n}\n\nInteriorErrorBoundary.propTypes = {\n children: PropTypes.node,\n}\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\nimport { SettingsElement, SettingsTitle } from 'styles/containers'\n\n// local constants\n\n// --------------------\n\nconst Control = props => {\n return (\n \n {props.title && {props.title}}\n {props.children}\n \n )\n}\n\nControl.propTypes = {\n title: PropTypes.node,\n children: PropTypes.node.isRequired,\n fullWidth: PropTypes.bool,\n}\n\nexport default Control\n","// import packages\nimport React from 'react'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\nimport { SettingsBreaker } from 'styles/containers'\n\n// local constants\n\n// --------------------\n\nconst LineBreak = () => {\n return \n}\n\nexport default LineBreak\n","import styled from 'styled-components'\nimport { ColorConstants } from 'helpers/colors'\n\nexport const ListControlsContainer = styled.div`\n background-color: ${ColorConstants.bg.instruction};\n color: ${ColorConstants.text.darker};\n margin: ${p => (p.$stickyActive ? '0' : '0 0 10px 0')};\n padding: 10px;\n min-height: 30px;\n border-radius: ${p =>\n p.$fixed ? '10px' : p.$stickyActive ? '0 0 10px 10px' : '10px'};\n .help-text {\n min-height: 25px;\n }\n box-shadow: ${p =>\n p.$stickyActive ? '0 5px 5px rgba(0, 0, 0, 0.3)' : 'none'};\n`\n\nexport const ClosedList = styled.div`\n font-size: 75%;\n text-transform: uppercase;\n font-weight: 700;\n cursor: pointer;\n`\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport Sticky from 'react-stickynode'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\nimport { useListControls } from 'hooks/useListControls'\n\n// import utilities\n\n// import common elements\nimport { Collapse } from 'react-bootstrap'\nimport { OpenCloseIcon } from 'components/elements/Icons'\n\n// import components\nimport Control from './Control'\nimport LineBreak from './LineBreak'\n\n// import styles\nimport { ListControlsContainer, ClosedList } from './styles'\nimport { SettingsContainer } from 'styles/containers'\n\n// local constants\n\n// --------------------\n\nconst ListControls = props => {\n const sticky = props.sticky\n const keepHeading = props.keepHeading\n const { collapseControls, setCollapseControls } = useListControls(\n props.listControlsKey,\n )\n const [stickyActive, setStickyActive] = React.useState(false)\n\n const handleStickyStateChange = status => {\n setStickyActive(status.status === Sticky.STATUS_FIXED)\n }\n\n React.useEffect(() => {\n if (sticky) {\n if (stickyActive) {\n setCollapseControls(true)\n } else {\n setCollapseControls(false)\n }\n }\n }, [stickyActive, sticky, setCollapseControls])\n\n const toggleControls = () => setCollapseControls(t => !t)\n\n const controls = () => {\n return (\n \n {!props.fixed && !props.noClose && (\n
\n \n
\n )}\n {(keepHeading || collapseControls) && (\n {props.listType}\n )}\n \n
\n \n {props.children}\n \n {props.secondary}\n
\n
\n \n )\n }\n\n return props.sticky ? (\n \n {controls()}\n \n ) : (\n
{controls()}
\n )\n}\n\nListControls.propTypes = {\n listControlsKey: PropTypes.string,\n noClose: PropTypes.bool,\n secondary: PropTypes.node,\n children: PropTypes.node.isRequired,\n sticky: PropTypes.bool,\n listType: PropTypes.node.isRequired,\n id: PropTypes.string,\n fixed: PropTypes.bool,\n size: PropTypes.string,\n keepHeading: PropTypes.bool,\n}\n\nListControls.defaultProps = {\n sticky: true,\n startClosed: false,\n listType: 'List Filters ...',\n fixed: false,\n size: 'sm',\n}\n\nListControls.Control = Control\nListControls.Control.displayName = 'ListControls.Control'\n\nListControls.LineBreak = LineBreak\nListControls.LineBreak.displayName = 'ListControls.LineBreak'\n\nexport default ListControls\n","import React from 'react'\n\nconst Loading = () => {\n return
\n}\n\nexport default Loading\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\nimport { usePageState, usePageDispatch } from 'contexts/page-context'\n\n// import hooks\nimport { useNavFunctions } from 'hooks/useNavFunctions'\n\n// import utilities\nimport { toTitleCase } from 'helpers/utilities'\nimport { getIconClassname } from 'helpers/icons'\n\n// import common elements\nimport { Dropdown, MenuItem, Col } from 'react-bootstrap'\nimport { Icon } from 'components/elements/Icons'\n\n// import components\n\n// import styles\nimport {\n NavIconContainer,\n IconContainer,\n NavText,\n MenuItemContent,\n CurrentIndicator,\n Badge,\n} from './styles'\n\n// local constants\nconst menuSelectorClassName = getIconClassname('menu-selector')\n\n// --------------------\n\nconst NavCycler = props => {\n const { visibleNavKeys, additionalItems, badge } = props\n const navLevel = useNavFunctions().getNavLevel()\n const { activeNavKey } = usePageState()\n const { setActiveNavKey } = usePageDispatch()\n\n const setMenu = nk => {\n setActiveNavKey(nk)\n }\n\n // Note: we use all the navKeys to get navLevel so that colors remain consistent no matter\n // what the user permissions are\n\n const menuItems = [\n \n Menu selector\n ,\n ]\n for (const nk of visibleNavKeys) {\n const text = nk\n .split('#')\n .pop()\n .split('_')\n .join(' ')\n .replace('mgr', 'manager')\n menuItems.push(\n setMenu(nk)}\n disabled={nk == activeNavKey}\n >\n \n {nk == activeNavKey && (\n \n \n \n )}\n {toTitleCase(text)}\n \n ,\n )\n }\n\n // Using instead of
so bsRole can be attached.\n\n return (\n \n {badge && !!badge ? {badge} : null}\n \n \n \n Manager\n \n \n {menuItems}\n {additionalItems}\n \n \n \n )\n}\n\nNavCycler.propTypes = {\n visibleNavKeys: PropTypes.array.isRequired,\n additionalItems: PropTypes.array,\n badge: PropTypes.node,\n}\n\nexport default NavCycler\n","import { toTitleCase } from 'helpers/utilities'\n\nexport const getNavText = (id, short = false) => {\n switch (id) {\n case 'account-billing':\n return 'Billing'\n case 'account-clubs':\n return 'Clubs'\n case 'account-credits':\n return 'R-Bucks'\n case 'account-dashboard':\n return 'Account'\n case 'account-metrics':\n return 'Metrics'\n case 'account-payouts':\n return 'Payouts'\n case 'account-plans':\n return 'Plans'\n case 'account-requests':\n return 'Requests'\n case 'account-requests-approved':\n return short ? 'Approved' : 'Approved Requests'\n case 'account-requests-create':\n return short ? 'Create' : 'Create Request'\n case 'account-requests-denied':\n return short ? 'Denied' : 'Denied Requests'\n case 'account-requests-open':\n return short ? 'Open' : 'Open Requests'\n case 'admin-dashboard':\n return 'Dashboard'\n case 'admin-actions':\n return 'Actions'\n case 'admin-message':\n return 'Admin'\n case 'admin-more':\n return 'More'\n case 'admin-payouts':\n return 'Payouts'\n case 'admin-plans':\n return 'Plans'\n case 'check-in':\n case 'check-in-ns':\n return 'Check In'\n case 'club-alert':\n return 'Alert'\n case 'club-groups':\n return 'Groups'\n case 'club-list':\n return 'Clubs'\n case 'club-locations':\n return 'Locations'\n case 'club-manager':\n return 'Club'\n case 'club-member-list':\n return short ? 'Members' : 'Member list'\n case 'club-duplicate-emails':\n return 'Duplicate emails'\n case 'club-duplicate-names':\n return 'Duplicate names'\n case 'club-invalid-acbl-numbers':\n return 'Invalid ACBL numbers'\n case 'clubs':\n return 'Clubs'\n case 'club-config':\n return 'Setup'\n case 'club-more':\n return 'More...'\n case 'club-send-email':\n return 'Send Message'\n case 'convention-cards':\n return 'Conv Cards'\n case 'current-player-movement':\n return 'Movement'\n case 'd-logs':\n return 'Logs'\n case 'd-more':\n return 'More...'\n case 'd-movement-more':\n return 'Movement'\n case 'd-scoring-more':\n return 'Scoring'\n case 'director':\n return 'Director'\n case 'director-scoring':\n return 'Entry'\n case 'duplicate-results-email':\n return 'Email'\n case 'event-about':\n return 'About'\n case 'event-activity-log':\n return 'Event'\n case 'controls':\n return 'Controls'\n case 'event-fees-reconciliation':\n return 'Event Fees'\n case 'event-finder':\n return 'Events'\n case 'signup-log':\n return 'Signup Log'\n case 'event-reminder-email':\n return 'Email'\n case 'event-setup':\n return 'Setup'\n case 'faq':\n return 'FAQ'\n case 'failed-logins':\n return 'Failed Logins'\n case 'find-acbl-number':\n return 'ACBL Number'\n case 'find-event':\n return 'Events'\n case 'find-someone':\n return 'People'\n case 'fouled-boards':\n return 'Fouled'\n case 'group-approvals':\n return 'Pending Approvals'\n case 'group-default-event-setup':\n return 'Default Event Setup'\n case 'group-default-section-controls':\n return 'Default Section Controls'\n case 'group-setup':\n return 'Group Setup'\n case 'group-events':\n return 'Events'\n case 'group-list':\n return 'Groups'\n case 'group-config':\n return 'Configure'\n case 'group-members':\n return short ? 'Mbrs' : 'Members'\n case 'group-more':\n return 'More...'\n case 'group-notifications':\n return 'Notifications'\n case 'group-printables':\n return 'Printables'\n case 'group-send-email':\n return 'Send Message'\n case 'hands':\n return 'Hand Editor'\n case 'help-articles':\n return 'Articles'\n case 'help-panes':\n return 'Panes'\n case 'help-tags':\n return 'Tags'\n case 'help-terms':\n return 'Terms'\n case 'help-videos':\n return 'Videos'\n case 'invalid-acbl-numbers':\n return 'Invalid ACBL Numbers'\n case 'individual-lesson':\n return 'Lesson'\n case 'livestream':\n return 'Class Room'\n case 'mail-deliverability':\n return 'Deliverability'\n case 'member-profile':\n case 'member-profile-ns':\n return 'Member Profile'\n case 'message-deliverability':\n return 'Failures'\n case 'message-spam-blocks':\n return 'Spam Blocks'\n case 'message-bounces':\n return 'Bounces'\n case 'member-profiles':\n return 'Member Profiles'\n case 'message-history':\n return 'Msg History'\n case 'more':\n case 'more-complete':\n case 'more-entry':\n case 'more-not-started':\n return 'More...'\n case 'movement':\n return short ? 'Mvmt' : 'Movement'\n case 'movement-change':\n return 'Change'\n case 'movement-display':\n return 'Movement'\n case 'movement-edit':\n return 'Edit'\n case 'movement-listing':\n return 'Movements'\n case 'movement-progress':\n return 'Progress'\n case 'my-managers':\n return 'Club and Group Managers'\n case 'notes':\n return 'News'\n case 'pairs':\n return 'Pairs'\n case 'configure-pairs':\n return 'Pairs'\n case 'configure-teams':\n return 'Teams'\n case 'configure-individual':\n return 'Configure'\n case 'pair-seating-ns':\n return 'Seating'\n case 'payment-log':\n return 'Payment Log'\n case 'pending-members':\n return 'Pending Members'\n case 'group-pending-partners':\n return 'Pending Partners'\n case 'people-finder':\n return 'People'\n case 'phantom-pair':\n return 'Phantom Pair'\n case 'recent-logins':\n return 'Recent Logins'\n case 'club-members':\n return 'Members'\n case 'results-boards':\n return 'Boards'\n case 'results-matrix':\n return 'Matrix'\n case 'results-pairs':\n return 'Rankings'\n case 'acbl-stratified-pairs-results':\n case 'rsvp-charity-results':\n return 'Results'\n case 'rsvp-charity-standings':\n return 'Standings'\n case 'scorekeeper-names':\n return 'Scorers'\n case 'scoresheet':\n return 'Scoresheet'\n case 'scoring-log':\n return 'Score Log'\n case 'set-directors':\n return 'Directors'\n case 'signups':\n case 'signups-ns':\n return 'Signups'\n case 'signup-activity':\n return 'Signup Activity'\n case 'spam-blocks':\n return 'Spam Blocks'\n case 'support':\n return 'Support'\n case 'swiss-seating':\n return 'Seating'\n case 'table-login-config':\n return 'Table Logins'\n case 'table-scoring':\n return 'Scoring'\n case 'table-waiting':\n return 'Table'\n case 'teams':\n return 'Teams'\n case 'team-seating':\n case 'team-seating-ns':\n return 'Teams'\n case 'team-standings':\n case 'team-standings-entry':\n case 'team-standings-complete':\n return 'Standings'\n case 'user-clubs':\n return 'My Clubs'\n case 'user-courses':\n return 'My Courses'\n case 'user-credits':\n return 'R-Bucks'\n case 'user-email-preferences':\n return 'Email Preferences'\n case 'user-invites':\n return 'Invites'\n case 'user-listing':\n return 'User Listing'\n case 'user-log':\n return 'User'\n case 'user-management':\n return 'Users'\n case 'user-messages':\n return 'Msgs Received'\n case 'user-privacy':\n return 'Privacy'\n case 'user-profile':\n return 'Personal Profile'\n case 'user-results':\n return 'Results'\n case 'user-reservations':\n return 'Reservations'\n default:\n return toTitleCase(id)\n }\n}\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\nimport useWindowDimensions from 'hooks/useWindowDimensions'\n\n// import utilities\nimport { removeActivePaneKeys } from 'contexts/page-context/storage_methods'\nimport { getIconClassname } from 'helpers/icons'\nimport { getNavText } from 'helpers/navs'\n\n// import common elements\nimport { Icon } from 'components/elements/Icons'\n\n// import components\n\n// import styles\nimport { NavIconContainer, NavText, Badge, IconContainer } from './styles'\n\n// local constants\n\n// --------------------\n\nconst NavIcon = props => {\n const { width } = useWindowDimensions()\n const handleClick = () => {\n props.clickAction(props.clickArg)\n }\n\n const toggleSubNav = () => {\n if (props.clickAction) {\n props.clickAction(props.clickArg)\n }\n props.toggleSubNav(props.id)\n }\n\n const actions = {}\n\n if (props.subNav) {\n actions['onClick'] = toggleSubNav\n } else {\n if (props.path && !props.current) {\n // User is intentionally navigating to a new page and\n // we do not want to remember the activePane on the current\n // page (e.g., deep on a manager menu)\n actions['onClick'] = () => {\n removeActivePaneKeys()\n window.location.href = props.path\n }\n }\n if (props.clickAction) {\n actions['onClick'] = handleClick\n }\n }\n\n return (\n \n {props.badge && props.badge != 0 ? {props.badge} : null}\n \n \n {props.navText || getNavText(props.id, width < 500)}\n {props.light && (\n \n )}\n \n \n )\n}\n\nNavIcon.propTypes = {\n clickAction: PropTypes.func,\n clickArg: PropTypes.any,\n toggleSubNav: PropTypes.func,\n current: PropTypes.bool,\n subNavOpen: PropTypes.bool,\n subNav: PropTypes.bool,\n path: PropTypes.string,\n badge: PropTypes.number,\n id: PropTypes.string,\n navText: PropTypes.string,\n light: PropTypes.string,\n navLevel: PropTypes.string.isRequired,\n}\n\nNavIcon.defaultProps = {\n navLevel: 'level0',\n}\n\nexport default NavIcon\n","import styled from 'styled-components'\nimport { ColorConstants } from 'helpers/colors'\n\nexport const TabsContainer = styled.div`\n margin: -10px -10px 10px -10px;\n border-radius: 0 0 5px 5px;\n border-bottom: 3px solid ${ColorConstants.brown};\n`\n\nexport const Tabs = styled.div`\n display: flex;\n flex-flow: row wrap;\n justify-content: flex-start;\n gap: 8px;\n padding-top: 5px;\n border-radius: 0 0 5px 5px;\n background-color: ${p =>\n p.$open ? 'transparent' : ColorConstants.bg.intermediateNav};\n`\n\nexport const Tab = styled.div`\n font-size: 85%;\n text-transform: uppercase;\n padding: 2px 4px;\n border-bottom: none;\n background-color: ${p =>\n p.$active ? ColorConstants.bg.intermediateNav : 'transparent'};\n color: ${p =>\n p.$active ? ColorConstants.black : ColorConstants.intermediateNav};\n border-radius: 5px 5px 0 0;\n`\n\nexport const TabContent = styled.div`\n padding: 10px 10px;\n background-color: ${ColorConstants.bg.intermediateNav};\n border-radius: 0 0 5px 5px;\n`\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\nimport { usePaneState } from 'contexts/pane-memory-context'\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Collapse } from 'react-bootstrap'\nimport { OpenCloseIcon } from 'components/elements/Icons'\n\n// import components\n\n// import styles\nimport { TabsContainer, Tabs, Tab, TabContent } from './styles'\n\n// local constants\n\n// --------------------\n\nconst NavTabs = ({ memoryKey, tabs, startOpen }) => {\n const firstTab = tabs.length > 0 ? tabs[0].tab : null\n\n const [activeTab, setActiveTab] = usePaneState(\n memoryKey,\n 'activeTab',\n firstTab,\n )\n\n const [showTabs, setShowTabs] = usePaneState(memoryKey, 'showTabs', startOpen)\n\n const changeTab = tab => {\n if (tab == activeTab) {\n setShowTabs(s => !s)\n } else {\n setActiveTab(tab)\n setShowTabs(true)\n }\n }\n\n return (\n \n \n {tabs.map(tab => (\n changeTab(tab.tab)}\n >\n \n {tab.icon}\n {tab.label}\n \n ))}\n \n\n {tabs.map(tab => (\n \n {tab.content}\n \n ))}\n \n )\n}\n\nNavTabs.propTypes = {\n memoryKey: PropTypes.string,\n tabs: PropTypes.array.isRequired,\n startOpen: PropTypes.bool,\n}\n\nNavTabs.defaultProps = {\n startOpen: true,\n}\n\nexport default NavTabs\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Beforeunload } from 'react-beforeunload'\n\nconst PageContent = props => {\n return (\n
\n {props.unloadWarning && (\n event.preventDefault()} />\n )}\n\n
\n {props.refreshing &&
}\n\n {props.children}\n
\n
\n )\n}\n\nPageContent.propTypes = {\n unloadWarning: PropTypes.bool,\n refreshing: PropTypes.bool,\n children: PropTypes.node.isRequired,\n}\n\nexport default PageContent\n","import {\n LOAD_HELP_PANE,\n LOAD_HELP_ARTICLE,\n LOAD_HELP_VIDEO,\n} from 'redux/action_types.js'\n\nexport function loadHelpPane(data) {\n return {\n type: LOAD_HELP_PANE,\n ...data,\n }\n}\n\nexport function loadHelpArticle(data) {\n return {\n type: LOAD_HELP_ARTICLE,\n ...data,\n }\n}\n\nexport function loadHelpVideo(data) {\n return {\n type: LOAD_HELP_VIDEO,\n ...data,\n }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { useSelector } from 'react-redux'\n\nimport { Button } from 'react-bootstrap'\nimport { Icon } from 'components/elements/Icons'\n\nconst RelatedContent = props => {\n const helpTags = useSelector(state => state.help_tags)\n\n const helpTypeName = ht => {\n switch (ht) {\n case 'pane':\n return 'Screen Instructions'\n case 'article':\n return 'Articles'\n case 'video':\n return 'Videos'\n default:\n return 'Unknown'\n }\n }\n\n const helpTypeIcon = ht => {\n switch (ht) {\n case 'pane':\n return 'panes'\n case 'article':\n return 'articles'\n case 'video':\n return 'video'\n default:\n return 'Unknown'\n }\n }\n\n const renderRelated = () => {\n if (!props.source || props.source.tags.length == 0) {\n return null\n }\n\n let rows = { pane: {}, article: {}, video: {} }\n let count = 0\n for (let tag of props.source.tags) {\n for (let related of Object.values(helpTags)) {\n if (\n related.tag == tag &&\n (related.selector != props.source.selector ||\n related.help_type != props.helpType)\n ) {\n if (!rows[related.help_type][related.selector]) {\n rows[related.help_type][related.selector] = {\n source: related,\n tags: [],\n }\n }\n count += 1\n rows[related.help_type][related.selector].tags.push(related.tag)\n }\n }\n }\n\n if (count > 0) {\n return (\n
\n
Related Content:
\n {Object.keys(rows).map(help_type => {\n if (Object.keys(rows[help_type]).length > 0) {\n return (\n
\n
\n {' '}\n {helpTypeName(help_type)}\n
\n {Object.keys(rows[help_type]).map(selector => {\n let related = rows[help_type][selector].source\n return (\n \n )\n })}\n
\n )\n } else {\n return null\n }\n })}\n
\n
\n )\n } else {\n return null\n }\n }\n\n const transferToHelpInstructions = () => {\n props.transferTo('pane', 'contextual-help')\n }\n\n const renderHelpOnHelp = () => {\n return (\n
\n \n
\n )\n }\n\n return (\n
\n {renderRelated()}\n {props.selector != 'contextual-help' && renderHelpOnHelp()}\n
\n \n
\n
\n )\n}\n\nconst Related = props => {\n const transfer = () => {\n props.transferTo(props.related.help_type, props.related.selector)\n }\n\n return (\n
\n
{props.related.title}
\n
{props.tags.join(', ')}
\n
\n )\n}\n\nexport default RelatedContent\n\nRelatedContent.propTypes = {\n source: PropTypes.object,\n helpType: PropTypes.string.isRequired,\n transferTo: PropTypes.func.isRequired,\n selector: PropTypes.string,\n}\n\nRelated.propTypes = {\n related: PropTypes.object.isRequired,\n tags: PropTypes.array.isRequired,\n transferTo: PropTypes.func.isRequired,\n}\n","import React from 'react'\nimport { useCurrentUserState } from 'contexts/current-user-context'\nimport PropTypes from 'prop-types'\nimport { Button, ButtonToolbar } from 'react-bootstrap'\n\nimport { HelpText } from 'components/elements/Misc'\n\nconst AdminActions = props => {\n const currentUser = useCurrentUserState()\n\n if (!currentUser.isAdmin) {\n return null\n }\n return (\n
\n
\n \n \n Edit\n \n \n \n {props.source && (\n Last updated {props.source.updated_at}\n )}\n
\n )\n}\n\nAdminActions.propTypes = {\n reload: PropTypes.func.isRequired,\n helpType: PropTypes.string.isRequired,\n selector: PropTypes.string.isRequired,\n source: PropTypes.object,\n}\n\nexport default AdminActions\n","import { get } from 'api/rsvp_api'\n\n// For help display\n\nexport const apiLoadHelpPane = (helpPane, controls) => {\n get('loading help pane', `/api/help/panes/${helpPane}`, controls)\n}\n\nexport const apiLoadHelpArticle = (helpArticle, controls) => {\n get('loading help article', `/api/help/articles/${helpArticle}`, controls)\n}\n\nexport const apiLoadHelpVideo = (helpVideo, controls) => {\n get('loading help video', `/api/help/videos/${helpVideo}`, controls)\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { audienceOptionLabel } from 'helpers/utilities'\n\nconst Audience = props => {\n if (!props.record) {\n return null\n }\n\n const audience =\n props.record.audience.length == 0\n ? ['Everyone']\n : props.record.audience.map(a => audienceOptionLabel(a))\n\n return
Audience: {audience.join(', ')}
\n}\n\nAudience.propTypes = {\n record: PropTypes.object,\n}\n\nexport default Audience\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport parse from 'html-react-parser'\nimport { toTitleCase } from 'helpers/utilities'\nimport { useContextualHelp } from 'contexts/help-context'\nimport { OverlayTrigger, Popover } from 'react-bootstrap'\nimport { useSelector } from 'react-redux'\n\nimport { Icon } from 'components/elements/Icons'\n\nconst DisplayedContent = props => {\n const { transferTo } = useContextualHelp()\n const helpTerms = useSelector(state => state.help_terms)\n\n const { record, fetching } = props\n let key = 1\n let popOverIndex = 100\n\n const prepContent = content => {\n let prepped = prepContentForPopovers(content)\n prepped = prepContentForButtons(prepped)\n prepped = prepContentForImages(prepped)\n return prepped\n }\n\n const prepContentForPopovers = content => {\n return content.replace(\n /{(pane|term|article|video):([^:]*):([^}]*)}/g,\n (match, type, selector, text) =>\n `${text}`,\n )\n }\n\n const prepContentForButtons = content => {\n return content.replace(\n /{btn:([^:]*):([^}]*)}/g,\n (match, style, text) =>\n ` ${text} `,\n )\n }\n\n const prepContentForImages = content => {\n return content.replace(\n /{img:([^}]*)}/g,\n (match, img) =>\n ` `,\n )\n }\n\n const transformContent = node => {\n key += 10\n popOverIndex += 100\n // Popovers\n if (node.type == 'tag' && node.name == 'i') {\n const { type, selector, text } = node.attribs\n switch (type) {\n case 'term':\n if (helpTerms[selector]) {\n let overlay = (\n \n {helpTerms[selector].definition}\n \n )\n return (\n \n {text}\n \n )\n } else {\n return {text}\n }\n case 'pane':\n return (\n transferTo('pane', selector)}\n >\n {text}\n \n )\n case 'article':\n return (\n transferTo('article', selector)}\n >\n {text}\n \n )\n case 'video':\n return (\n transferTo('video', selector)}\n >\n {text}\n \n )\n default:\n return {text}\n }\n }\n }\n\n if (record) {\n return (\n
\n {parse(prepContent(record.content), {\n transform: transformContent,\n })}\n
\n )\n } else {\n return (\n
\n {fetching ? (\n

Loading...

\n ) : (\n

Sorry, help is not yet available on this topic.

\n )}\n
\n )\n }\n}\n\nexport default DisplayedContent\n\nDisplayedContent.propTypes = {\n record: PropTypes.object,\n fetching: PropTypes.bool,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { useSelector, useDispatch } from 'react-redux'\nimport { loadHelpArticle } from 'redux/actions/help.js'\nimport { useContextualHelp } from 'contexts/help-context'\n\nimport { Pane } from 'components/elements/Layout'\nimport { toTitleCase, noop } from 'helpers/utilities'\nimport RelatedContent from 'components/global/ContextualHelp/RelatedContent'\nimport AdminActions from 'components/global/ContextualHelp/AdminActions'\nimport { apiLoadHelpArticle } from 'api/help'\n\nimport Audience from 'components/global/ContextualHelp/Audience'\nimport DisplayedContent from 'components/global/ContextualHelp/DisplayedContent'\n\nconst Article = props => {\n const helpArticles = useSelector(state => state.help_articles)\n const reduxDispatch = useDispatch()\n\n const { displayed, closeHelp, transferTo, showingHelp } = useContextualHelp()\n const selector = displayed ? displayed.selector : null\n const [fetching, setFetching] = React.useState(false)\n const helpArticle = selector ? helpArticles[selector] : null\n\n React.useEffect(() => {\n if (showingHelp && !helpArticle) {\n apiLoadHelpArticle(selector, {\n successDispatch: [reduxDispatch, loadHelpArticle],\n loading: setFetching,\n error: noop,\n })\n }\n }, [showingHelp, selector, helpArticle, reduxDispatch])\n\n const reload = () => {\n apiLoadHelpArticle(selector, {\n successDispatch: [reduxDispatch, loadHelpArticle],\n loading: setFetching,\n })\n }\n\n const title = helpArticle ? helpArticle.title : toTitleCase(selector)\n\n return (\n \n \n \n\n
\n
\n \n\n \n
\n\n
\n \n \n
\n
\n
\n )\n}\nexport default Article\n\nArticle.propTypes = {\n // caller\n navButtons: PropTypes.node,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Pane as LayoutPane } from 'components/elements/Layout'\nimport { apiLoadHelpPane } from 'api/help'\nimport { toTitleCase, noop } from 'helpers/utilities'\nimport { useSelector, useDispatch } from 'react-redux'\nimport { loadHelpPane } from 'redux/actions/help.js'\n\nimport { useContextualHelp } from 'contexts/help-context'\nimport { usePageState } from 'contexts/page-context'\n\nimport RelatedContent from 'components/global/ContextualHelp/RelatedContent'\nimport AdminActions from 'components/global/ContextualHelp/AdminActions'\n\nimport DisplayedContent from 'components/global/ContextualHelp/DisplayedContent'\n\nconst Pane = props => {\n const helpPanes = useSelector(state => state.help_panes)\n const reduxDispatch = useDispatch()\n\n const { displayed, closeHelp, transferTo } = useContextualHelp()\n const { showingHelp } = usePageState()\n const selector = displayed ? displayed.selector : null\n const [fetching, setFetching] = React.useState(false)\n const helpPane = selector ? helpPanes[selector] : null\n\n React.useEffect(() => {\n if (selector && showingHelp && !helpPane) {\n apiLoadHelpPane(selector, {\n successDispatch: [reduxDispatch, loadHelpPane],\n loading: setFetching,\n error: noop,\n })\n }\n }, [showingHelp, selector, helpPane, reduxDispatch])\n\n const reload = () => {\n apiLoadHelpPane(selector, {\n successDispatch: [reduxDispatch, loadHelpPane],\n loading: setFetching,\n error: noop,\n })\n }\n\n const title = helpPane ? helpPane.title : toTitleCase(selector)\n\n return (\n \n \n \n\n
\n
\n \n
\n\n
\n \n \n
\n
\n
\n )\n}\n\nexport default Pane\n\nPane.propTypes = {\n // caller\n navButtons: PropTypes.node,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Pane } from 'components/elements/Layout'\nimport { apiLoadHelpVideo } from 'api/help'\n\nimport { HelpText } from 'components/elements/Misc'\nimport { toTitleCase } from 'helpers/utilities'\nimport { useContextualHelp } from 'contexts/help-context'\n\nimport { bindActionCreators } from 'redux'\nimport { connect } from 'react-redux'\nimport * as HelpActions from 'redux/actions/help.js'\n\nimport RelatedContent from 'components/global/ContextualHelp/RelatedContent'\nimport AdminActions from 'components/global/ContextualHelp/AdminActions'\n\nimport ReactPlayer from 'react-player'\nimport Audience from 'components/global/ContextualHelp/Audience'\n\nconst Video = props => {\n const { showingHelp, displayed, closeHelp, transferTo } = useContextualHelp()\n const selector = displayed ? displayed.selector : null\n const [fetching, setFetching] = React.useState(false)\n const { helpVideos, loadHelpVideo } = props\n const helpVideo = helpVideos[selector]\n\n React.useEffect(() => {\n if (showingHelp && !helpVideo) {\n apiLoadHelpVideo(selector, {\n success: loadHelpVideo,\n loading: setFetching,\n })\n }\n }, [showingHelp, selector, helpVideo, loadHelpVideo])\n\n const reload = () => {\n apiLoadHelpVideo(selector, {\n success: loadHelpVideo,\n loading: setFetching,\n })\n }\n\n const title = helpVideo ? helpVideo.title : toTitleCase(selector)\n\n return (\n \n \n \n\n
\n
\n
\n {helpVideo ? (\n
\n
\n \n Use the full screen option on the video player to make the\n player larger. You may need to tap inside the video player\n to make the controls appear.\n \n \n
\n
\n ) : (\n
\n {fetching ? (\n

Loading...

\n ) : (\n

Sorry, this video is not yet available.

\n )}\n
\n )}\n
\n\n \n
\n\n
\n \n \n
\n
\n
\n )\n}\n\nfunction mapStateToProps(state) {\n return {\n helpVideos: state.help_videos,\n }\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators({ ...HelpActions }, dispatch)\n}\nexport default connect(mapStateToProps, mapDispatchToProps)(Video)\n\nVideo.propTypes = {\n // container state\n helpVideos: PropTypes.object,\n\n // container actions\n loadHelpVideo: PropTypes.func.isRequired,\n\n // caller\n navButtons: PropTypes.node,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, Dropdown, MenuItem } from 'react-bootstrap'\n\nimport { bindActionCreators } from 'redux'\nimport { connect } from 'react-redux'\nimport * as HelpActions from 'redux/actions/help.js'\n\nimport { Pane as LayoutPane } from 'components/elements/Layout'\nimport { Icon } from 'components/elements/Icons'\nimport { toTitleCase } from 'helpers/utilities'\nimport { useContextualHelp } from 'contexts/help-context'\n\nimport Article from 'components/global/ContextualHelp/Article'\nimport Pane from 'components/global/ContextualHelp/Pane'\nimport Video from 'components/global/ContextualHelp/Video'\n\nconst ContextualHelp = props => {\n const {\n displayed,\n stackIndex,\n stack,\n back,\n next,\n transferToHistory,\n closeHelp,\n } = useContextualHelp()\n\n const historyTitle = h => {\n let source = null\n switch (h.helpType) {\n case 'pane':\n source = props.helpPanes[h.selector]\n break\n case 'article':\n source = props.helpArticles[h.selector]\n break\n case 'video':\n source = props.helpVideos[h.selector]\n break\n }\n return (\n
\n
\n {h.helpType == 'pane' ? 'Screen Instructions' : h.helpType}\n
\n
\n {source ? source.title : toTitleCase(h.selector)}\n
\n
\n )\n }\n\n const navButtons = () => {\n if (stack.length > 1) {\n let historyItems = stack.map((h, i) => (\n transferToHistory(i)}\n >\n {historyTitle(h)}\n \n ))\n\n return (\n
\n {stackIndex > 0 && (\n \n )}\n {stackIndex < stack.length - 1 && (\n \n )}\n \n \n \n \n {historyItems.reverse()}\n \n
\n )\n } else {\n return null\n }\n }\n\n let attribs = {\n navButtons: navButtons(),\n }\n\n // Note: the entire pane is rendered in the specific app because the source changes as we move through the stack\n switch (displayed.helpType) {\n case 'pane':\n return \n case 'article':\n return
\n case 'video':\n return
,\n )\n }\n movementRows.push(\n ,\n )\n }\n }\n\n let actions = []\n if (canAddMovement) {\n actions.push(\n \n Add Movement\n ,\n )\n }\n\n return (\n \n \n\n {renderListControls(filteredCount)}\n \n \n Stationaries may include those that stay at the same table but have an\n arrow switch.\n \n {movementRows}\n \n )\n}\n\nMovementListing.propTypes = {\n editMovement: PropTypes.func.isRequired,\n addMovement: PropTypes.func.isRequired,\n cloneMovement: PropTypes.func.isRequired,\n previewMovement: PropTypes.func.isRequired,\n // eslint-disable-next-line react/no-unused-prop-types\n open: PropTypes.number,\n}\n\nexport default MovementListing\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\nimport { usePaneMemory } from 'contexts/pane-memory-context'\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Pane } from 'components/elements/Layout'\nimport { Icon } from 'components/elements/Icons'\n\n// import components\nimport MovementEdit from 'components/shared/MovementEdit'\n\n// import styles\n\n// local constants\nconst paneName = 'edit-movement'\n// --------------------\n\nconst EditMovement = props => {\n const memoryKey = `${paneName}#${props.movement.id}`\n const { clearPaneMemory } = usePaneMemory()\n\n const closePane = () => {\n clearPaneMemory(memoryKey)\n props.closeAction()\n }\n\n const closeAll = () => {\n clearPaneMemory(memoryKey)\n props.closeAll()\n }\n\n // --------------\n // Render\n // --------------\n\n let closeText = 'Return to Movement Listing'\n let forwardAction = props.closeAll ? (\n
\n Close\n
\n ) : null\n\n return (\n \n \n \n\n \n \n )\n}\n\nEditMovement.propTypes = {\n heading: PropTypes.string.isRequired,\n movement: PropTypes.object,\n closeAction: PropTypes.func,\n closeAll: PropTypes.func,\n convertAddToEdit: PropTypes.func,\n}\n\nexport default EditMovement\n","// import packages\nimport React from 'react'\n\n// import apis\nimport { apiLoadMovements } from 'api/movements'\n\n// import redux, selectors, actions\nimport { useSelector, useDispatch } from 'react-redux'\nimport { loadMovements } from 'redux/actions/movements'\n\n// import contexts\nimport { useCurrentUserState } from 'contexts/current-user-context'\nimport { usePageState, usePageDispatch } from 'contexts/page-context'\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Loading, ErrorBoundary, Transition } from 'components/elements/Layout/'\n\n// import components\nimport MovementListing from './MovementListing'\nimport EditMovement from './EditMovement'\nimport MovementDisplay from 'components/shared/MovementDisplay'\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst Movements = () => {\n const currentUser = useCurrentUserState()\n const movements = useSelector(state => state.movements)\n const [movementsLoaded, setMovementsLoaded] = React.useState(false)\n const clubs = useSelector(state => state.clubs)\n const defaultClubId = parseInt(Object.keys(clubs)[0])\n const reduxDispatch = useDispatch()\n\n const { transition, panel, panelParameter } = usePageState()\n const { closeCommonApp, openPanel, closePanel } = usePageDispatch()\n\n const [boardsPerRound, setBoardsPerRound] = React.useState(0)\n\n React.useEffect(() => {\n if (!movementsLoaded) {\n apiLoadMovements({\n successDispatch: [reduxDispatch, loadMovements],\n success: () => {\n setMovementsLoaded(true)\n },\n })\n }\n }, [movementsLoaded, reduxDispatch])\n\n const addMovement = () => {\n openPanel('movement-add', null)\n }\n\n const cloneMovement = movementId => {\n openPanel('movement-add', movementId)\n }\n\n const editMovement = movementId => {\n openPanel('movement-edit', movementId)\n }\n\n const previewMovement = movementId => {\n openPanel('movement-display', movementId)\n }\n\n const convertAddToEdit = response => {\n closePanel()\n openPanel('movement-edit', response.movement.id)\n }\n\n const addOrCloneMovement = () => {\n if (panelParameter) {\n let mvmt = { ...movements[panelParameter] }\n mvmt.id = null\n mvmt.title = mvmt.title + ' - CLONE'\n mvmt.club_id = currentUser.isAdmin\n ? mvmt.club_id\n : currentUser.managedClubIds[0]\n return mvmt\n } else {\n return {\n id: null,\n title: '',\n description: '',\n event_type: 'PairEvent',\n club_id: defaultClubId,\n ns_stationary: true,\n public: true,\n structure: {\n 1: {\n 1: { ns_pair: 1, ew_pair: -1, board_set: 1, board_group: 0 },\n 2: { ns_pair: 2, ew_pair: -2, board_set: 1, board_group: 0 },\n },\n 2: {\n 1: { ns_pair: 1, ew_pair: -2, board_set: 1, board_group: 1 },\n 2: { ns_pair: 2, ew_pair: -1, board_set: 1, board_group: 1 },\n },\n },\n board_group_count: 2,\n board_sets_are_identical: true,\n }\n }\n }\n\n const renderView = () => {\n switch (panel) {\n case 'movement-add':\n return (\n \n )\n case 'movement-edit':\n if (movements[panelParameter]) {\n return (\n \n )\n } else {\n return
Waiting...
\n }\n case 'movement-display':\n return (\n \n )\n default:\n return (\n \n )\n }\n }\n\n return (\n
\n \n {movementsLoaded ? (\n {renderView()}\n ) : (\n \n )}\n \n
\n )\n}\n\nexport default Movements\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\nimport { apiDeleteUser, apiResendWelcomeUserEmail } from 'api/users'\n\n// import redux, selectors, actions\n\n// import contexts\nimport { useCurrentUserState } from 'contexts/current-user-context'\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { ButtonToolbar, Button } from 'react-bootstrap'\nimport { Icon } from 'components/elements/Icons'\nimport { BecomeLink } from 'components/elements/Misc'\n\n// import components\nimport UserDetails from 'components/shared/UserDetails'\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst Someone = props => {\n const currentUser = useCurrentUserState()\n const result = props.result\n const canManage = currentUser.canManageUser(result)\n const canEdit = currentUser.canEditUser(result)\n const canResendNewUserEmail =\n canManage && !!result.email && !result.current_sign_in_at\n\n const editUserProfile = () => {\n props.editUserProfile(props.result.id)\n }\n\n const findAcblNumber = () => {\n props.findAcblNumber(props.result)\n }\n\n const showMemberProfiles = () => {\n props.showMemberProfiles(props.result.id)\n }\n\n const showEmailPreferences = () => {\n props.showEmailPreferences(props.result.id)\n }\n\n const showUserActivity = () => {\n props.showUserActivity(props.result.id, props.result.full_name)\n }\n\n const showUserCredits = () => {\n props.showUserCredits(props.result.id, props.result.full_name)\n }\n\n const showUserCharges = () => {\n props.showUserCharges(props.result.id, props.result.full_name)\n }\n\n const deleteUser = () => {\n apiDeleteUser(props.result.id, {\n success: () => props.removeResult(props.result.id),\n })\n }\n\n const resendNewUserEmail = () => {\n apiResendWelcomeUserEmail(props.result.id, {\n successMsg:\n 'User password has been reset and email has been sent to the user.',\n })\n }\n\n return (\n
\n \n \n {canManage && (\n \n )}\n {canEdit && (\n \n )}\n {canEdit &&\n currentUser.isSomeKindOfManager &&\n !result.acbl_number && (\n \n )}\n {canManage && (\n \n )}\n {canResendNewUserEmail && (\n \n )}\n {canEdit && result.members_count == 0 && (\n \n )}\n {currentUser.isAdmin && (\n \n )}\n {currentUser.isAdmin && (\n \n Email Preferences\n \n )}\n {currentUser.isAdmin && (\n \n )}\n {currentUser.isAdmin && (\n \n )}\n \n \n \n
\n )\n}\n\nSomeone.propTypes = {\n result: PropTypes.object.isRequired,\n editUserProfile: PropTypes.func.isRequired,\n showEmailPreferences: PropTypes.func.isRequired,\n showMemberProfiles: PropTypes.func.isRequired,\n showUserActivity: PropTypes.func.isRequired,\n showUserCredits: PropTypes.func.isRequired,\n showUserCharges: PropTypes.func.isRequired,\n findAcblNumber: PropTypes.func.isRequired,\n removeResult: PropTypes.func.isRequired,\n}\n\nexport default Someone\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\nimport { useSelector } from 'react-redux'\n\n// import contexts\nimport { usePaneState } from 'contexts/pane-memory-context'\nimport { usePageDispatch } from 'contexts/page-context'\n\n// import hooks\n\n// import utilities\nimport { selectFilterCharsInOrder, pluralize } from 'helpers/utilities'\n\n// import common elements\nimport {\n Button,\n FormControl,\n FormGroup,\n InputGroup,\n HelpBlock,\n} from 'react-bootstrap'\nimport { Pane, Loading } from 'components/elements/Layout'\nimport { HelpText, Spinner, Checked } from 'components/elements/Misc'\n\n// import components\nimport Someone from './Someone'\n\n// import styles\n\n// local constants\nconst paneName = 'find-someone'\n// --------------------\n\nconst SearchForSomeone = props => {\n const {\n search,\n handleChange,\n clearSearch,\n loading,\n results,\n resultsReceived,\n removeResult,\n loadAndSelectUser,\n } = props\n const users = useSelector(state => state.users)\n\n const { openPanel } = usePageDispatch()\n\n const memoryKey = 'find-someone'\n const [searchName, setSearchName] = usePaneState(\n memoryKey,\n 'searchName',\n true,\n )\n const toggleSearchName = () => setSearchName(t => !t)\n const [searchEmail, setSearchEmail] = usePaneState(\n memoryKey,\n 'searchEmail',\n true,\n )\n const toggleSearchEmail = () => setSearchEmail(t => !t)\n\n const [consecutiveMatch, setConsecutiveMatch] = usePaneState(\n memoryKey,\n 'consecutiveMatch',\n true,\n )\n const toggleConsecutiveMatch = () => setConsecutiveMatch(t => !t)\n\n const [searchError, _setSearchError] = usePaneState(memoryKey, 'searchError')\n\n const editUserProfile = id => {\n loadAndSelectUser(id, 'user-edit')\n }\n\n const findAcblNumber = result => {\n loadAndSelectUser(result.id, 'user-acbl')\n }\n\n const showMemberProfiles = id => {\n loadAndSelectUser(id, 'member-profiles')\n }\n\n const showEmailPreferences = id => {\n loadAndSelectUser(id, 'user-email-preferences')\n }\n\n const showUserActivity = (id, name) => {\n openPanel('user-activity-log', { userId: id, fullName: name })\n }\n\n const showUserCredits = (id, name) => {\n openPanel('user-credits', { userId: id, fullName: name })\n }\n\n const showUserCharges = (id, name) => {\n openPanel('user-charges', { userId: id, fullName: name })\n }\n\n const matchesSearch = result => {\n let text = search.toLowerCase()\n let digits = search.replace(/\\D/g, '')\n let full_name = `${result.first_name} ${result.last_name}`.toLowerCase()\n let fullName = `${result.first_name} ${result.last_name}`.toLowerCase()\n if (consecutiveMatch) {\n if (searchEmail && result.email.toLowerCase().includes(text)) {\n return true\n }\n if (searchName && full_name.toLowerCase().includes(text)) {\n return true\n }\n } else {\n if (searchName && selectFilterCharsInOrder(fullName, text)) {\n return true\n }\n if (\n searchEmail &&\n selectFilterCharsInOrder(result.email.toLowerCase(), text)\n ) {\n return true\n }\n }\n if (digits.length > 0) {\n if (result.phone && result.phone.replace(/\\D/g, '').includes(digits)) {\n return true\n }\n if (result.cell && result.cell.replace(/\\D/g, '').includes(digits)) {\n return true\n }\n }\n return false\n }\n\n const filtered = results.filter(result => matchesSearch(result))\n\n const displayFiltered = () => {\n if (filtered.length == 0) {\n return

No one matches your search.

\n } else {\n return (\n
\n {filtered.map(result => (\n \n ))}\n
\n )\n }\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n
\n
\n {searchError || pluralize(filtered.length, 'result')}\n
\n \n \n \n
\n
\n
\n
\n {loading ? (\n \n ) : results.length > 0 ? (\n displayFiltered()\n ) : search.length < 3 ? (\n \n Type at least three letters of either first name, last name, or email\n address.\n \n ) : resultsReceived ? (\n No one matches your search.\n ) : (\n \n Loading...\n \n )}\n
\n )\n}\n\nexport default SearchForSomeone\n\nSearchForSomeone.propTypes = {\n search: PropTypes.string.isRequired,\n handleChange: PropTypes.func.isRequired,\n clearSearch: PropTypes.func.isRequired,\n loading: PropTypes.bool.isRequired,\n results: PropTypes.array.isRequired,\n resultsReceived: PropTypes.bool.isRequired,\n loadAndSelectUser: PropTypes.func.isRequired,\n removeResult: PropTypes.func.isRequired,\n}\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\nimport { apiSetEmailPreference } from 'api/users'\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Attributes } from 'components/elements/Layout'\nimport { HelpText, ControlToggle, Spinner } from 'components/elements/Misc'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst ClubRow = props => {\n const [updating, setUpdating] = React.useState(false)\n const [preference, setPreference] = React.useState(props.preference)\n\n const toggle = () => {\n let newValue = preference == 'allowed' ? 'blocked' : 'allowed'\n setPreference(newValue)\n apiSetEmailPreference(\n props.user.id,\n 'club',\n props.club.id,\n newValue,\n props.notify,\n {\n loading: setUpdating,\n successMsg: `Updated email preference for ${props.club.title}.`,\n },\n )\n }\n\n return (\n \n \n
{props.club.title}
\n \n Club News emails \n \n
\n \n \n \n
\n )\n}\n\nClubRow.propTypes = {\n club: PropTypes.object.isRequired,\n user: PropTypes.object,\n preference: PropTypes.string.isRequired,\n notify: PropTypes.bool.isRequired,\n}\n\nexport default ClubRow\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\nimport { apiSetEmailPreference } from 'api/users'\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Attributes } from 'components/elements/Layout'\nimport { HelpText, ControlToggle, Spinner } from 'components/elements/Misc'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst GroupRow = props => {\n const [preference, setPreference] = React.useState(props.preference)\n const [updating, setUpdating] = React.useState(false)\n\n const toggle = () => {\n let newValue = preference == 'allowed' ? 'blocked' : 'allowed'\n setPreference(newValue)\n apiSetEmailPreference(\n props.user.id,\n 'group',\n props.group.id,\n newValue,\n props.notify,\n {\n loading: setUpdating,\n successMsg: `Updated email preference for ${props.group.title}.`,\n },\n )\n }\n\n return (\n \n \n
\n
{props.group.title}
\n \n Group and Event Emails \n \n
\n
\n \n \n \n
\n )\n}\n\nGroupRow.propTypes = {\n group: PropTypes.object.isRequired,\n user: PropTypes.object,\n preference: PropTypes.string.isRequired,\n notify: PropTypes.bool.isRequired,\n}\n\nexport default GroupRow\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\nimport { useCurrentUserState } from 'contexts/current-user-context'\nimport { useSelector } from 'react-redux'\nimport { getUser } from 'redux/selectors/shared_selectors'\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Pane, Attributes } from 'components/elements/Layout'\nimport { Icon } from 'components/elements/Icons'\nimport { HelpText, ControlToggle } from 'components/elements/Misc'\n\n// import components\nimport ClubRow from './ClubRow'\nimport GroupRow from './GroupRow'\n\n// import styles\n\n// local constants\nconst paneName = 'user-email-preferences'\n\n// --------------------\n\nconst UserEmailPreferences = props => {\n const { userId } = props\n const currentUser = useCurrentUserState()\n const [notify, setNotify] = React.useState(!currentUser.isAdmin)\n const user = useSelector(state => getUser(state, userId))\n const clubs = useSelector(state => state.clubs)\n const groups = useSelector(state => state.groups)\n\n const groupIds = Object.keys(groups).filter(group_id =>\n user.membership.group_ids.includes(parseInt(group_id)),\n )\n const clubsGroups = Object.keys(clubs)\n .filter(club_id => user.membership.club_ids.includes(parseInt(club_id)))\n .sort((a_id, b_id) => {\n let a_club = clubs[a_id]\n let b_club = clubs[b_id]\n return a_club.title > b_club.title\n ? 1\n : a_club.title < b_club.title\n ? -1\n : 0\n })\n .map(club_id => {\n const club = clubs[club_id]\n const clubGroups = groupIds\n .filter(group_id => groups[group_id].club_id == club.id)\n .sort((a_id, b_id) => {\n let a_group = groups[a_id]\n let b_group = groups[b_id]\n return a_group.title > b_group.title\n ? 1\n : a_group.title < b_group.title\n ? -1\n : 0\n })\n .map(group_id => groups[group_id])\n return { club, groups: clubGroups }\n })\n .filter(cg => cg.groups.length > 0)\n\n const toggleNotify = () => {\n setNotify(!notify)\n }\n\n const clubPreference = clubId => {\n const blocked =\n user.email_blocks &&\n user.email_blocks.club &&\n user.email_blocks.club.includes(clubId)\n return blocked === true ? 'blocked' : 'allowed'\n }\n\n const groupPreference = groupId => {\n const blocked =\n user.email_blocks &&\n user.email_blocks.group &&\n user.email_blocks.group.includes(groupId)\n return blocked === true ? 'blocked' : 'allowed'\n }\n\n const closeText = props.origin ? `Return to ${props.origin}` : 'Return'\n const forwardAction = props.closeAll ? (\n
\n Close\n
\n ) : null\n\n return (\n \n {props.closeAction && (\n \n )}\n \n \n \n You can control which emails you receive for the clubs and groups in\n which you participate.\n \n \n System notices and transactional emails are always sent, regardless of\n your email preference settings.\n \n {currentUser.isAdmin ? (\n
\n \n
\n Send confirmation emails\n
\n
\n ) : (\n user.email && (\n \n {currentUser.hasId(user.id) ? (\n \n You will receive a confirmation for each change made to your\n email preferences.\n \n ) : (\n \n A confirmation email is sent for all changes to email\n preferences.\n \n )}\n \n )\n )}\n \n {clubsGroups.map(clubGroups => {\n let club = clubGroups.club\n let groups = clubGroups.groups\n let rows = []\n rows.push(\n ,\n )\n for (let group of groups) {\n rows.push(\n ,\n )\n }\n return rows\n })}\n \n
\n
\n )\n}\n\nUserEmailPreferences.propTypes = {\n userId: PropTypes.number.isRequired,\n origin: PropTypes.string,\n closeAll: PropTypes.func,\n closeAction: PropTypes.func,\n}\n\nexport default UserEmailPreferences\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\nimport { apiAssignAcblNumber, apiLoadUser } from 'api/users'\nimport { apiFindSomeone } from 'api/finder'\n\n// import redux, selectors, actions\nimport { useSelector, useDispatch } from 'react-redux'\nimport { loadUser, updateUser, deleteUser } from 'redux/actions/users'\n\n// import contexts\nimport { usePageState, usePageDispatch } from 'contexts/page-context'\nimport { usePaneState } from 'contexts/pane-memory-context'\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Transition } from 'components/elements/Layout'\n\n// import components\nimport SearchForSomeone from './SearchForSomeone'\nimport FindAcblNumber from '../FindAcblNumber'\nimport MemberProfiles from 'components/shared/MemberProfiles'\nimport UserActivityLog from 'components/shared/UserActivityLog'\nimport UserEdit from 'components/shared/UserEdit'\nimport MemberProfileEdit from 'components/shared/MemberProfiles/MemberProfileEdit'\nimport UserEmailPreferences from 'components/shared/UserEmailPreferences'\nimport AdminCredits from 'components/shared/AdminCredits'\nimport AdminCharges from 'components/shared/AdminCharges'\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst FindSomeone = props => {\n const { sourceChannel } = props\n const memoryKey = 'find-someone'\n\n const users = useSelector(state => state.users)\n const reduxDispatch = useDispatch()\n\n const [loading, setLoading] = React.useState(false)\n\n const { panel, panelParameter, transition } = usePageState()\n const { closeCommonApp, closePanel, openPanel } = usePageDispatch()\n\n const [search, setSearch] = React.useState('')\n const [loadedUsers, setLoadedUsers] = React.useState([])\n const [resultsReceived, setResultsReceived] = React.useState(false)\n const [results, setResults] = React.useState([])\n\n const [searchName, _setSearchName] = usePaneState(\n memoryKey,\n 'searchName',\n true,\n )\n const [searchEmail, _setSearchEmail] = usePaneState(\n memoryKey,\n 'searchEmail',\n true,\n )\n const [consecutiveMatch, _setConsecutiveMatch] = usePaneState(\n memoryKey,\n 'consecutiveMatch',\n true,\n )\n const [_searchError, setSearchError] = usePaneState(memoryKey, 'searchError')\n\n React.useEffect(() => {\n setResultsReceived(false)\n }, [searchName, searchEmail, consecutiveMatch])\n\n React.useEffect(() => {\n let fields = []\n if (searchEmail) {\n fields.push('email')\n }\n if (searchName) {\n fields.push('name')\n }\n if (search.length < 3 || fields.length == 0) {\n setResultsReceived(false)\n setResults([])\n setSearchError(false)\n } else if (search.length > 2) {\n if (!resultsReceived) {\n apiFindSomeone(\n search,\n fields.join(','),\n consecutiveMatch ? 'consecutive' : 'spread',\n {\n success: response => {\n setResults(response.results)\n setResultsReceived(true)\n setSearchError(false)\n },\n error: response => setSearchError(response.error),\n },\n )\n }\n }\n }, [\n search,\n searchName,\n searchEmail,\n consecutiveMatch,\n resultsReceived,\n setSearchError,\n ])\n\n const removeResult = id => {\n let newResults = results.filter(result => result.id !== id)\n setResults(newResults)\n reduxDispatch(deleteUser({ id }))\n }\n\n const handleChange = e => {\n setSearch(e.target.value)\n }\n\n const clearSearch = () => {\n setSearch('')\n setResultsReceived(false)\n setResults([])\n }\n\n const assignAcblNumber = acblNumber => {\n apiAssignAcblNumber(panelParameter, acblNumber, {\n successDispatch: [reduxDispatch, updateUser],\n successClose: closePanel,\n })\n }\n\n const loadAndSelectUser = (id, panel) => {\n if (loadedUsers.includes(id)) {\n openPanel(panel, id)\n } else {\n apiLoadUser(id, {\n loading: setLoading,\n successDispatch: [reduxDispatch, loadUser],\n success: () => {\n setLoadedUsers([...loadedUsers, id])\n openPanel(panel, id)\n },\n })\n }\n }\n\n const updateCreditBalance = (id, credit_balance) => {\n let updatedResults = results.map(r =>\n r.id == id ? { ...r, credit_balance } : r,\n )\n setResults(updatedResults)\n if (users[id]) {\n reduxDispatch(updateUser({ user: { id, credit_balance } }))\n }\n }\n\n const renderView = () => {\n switch (panel) {\n case 'user-edit':\n return (\n \n )\n case 'user-acbl':\n return (\n \n )\n\n case 'member-profiles':\n return (\n \n )\n case 'member-profile-edit':\n return (\n \n )\n case 'user-activity-log':\n return (\n \n )\n case 'user-email-preferences':\n return (\n \n )\n case 'user-credits':\n return (\n \n )\n case 'user-charges':\n return (\n \n )\n default:\n // Handles multiple values for finderPane\n return (\n \n )\n }\n }\n\n return (\n
\n \n {renderView()}\n \n
\n )\n}\nFindSomeone.propTypes = {\n sourceChannel: PropTypes.string,\n}\n\nexport default FindSomeone\n","import styled from 'styled-components'\n\nexport const FindEventContainer = styled.div`\n display: flex;\n justify-content: flex-start;\n align-items: flex-start;\n & > div {\n margin-top: 20px;\n }\n @media (max-width: 700px) {\n flex-direction: column;\n }\n`\n\nexport const EventList = styled.div`\n flex: 1 1 auto;\n margin-left: 30px;\n p {\n font-weight: 700;\n }\n @media (max-width: 700px) {\n margin-left: 0;\n width: 100%;\n }\n`\n","// import packages\nimport React from 'react'\n\n// import apis\nimport { apiFindEvents } from 'api/events'\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\nimport { safelyGet } from 'helpers/utilities'\nimport { MONTH } from 'helpers/constants'\n\n// import common elements\nimport { Pane } from 'components/elements/Layout'\nimport { CalendarSelector } from 'components/elements/Misc'\n\n// import components\nimport EventBox from 'components/shared/EventBox'\n\n// import styles\nimport { FindEventContainer, EventList } from './styles'\n\n// local constants\nconst today = new Date()\nconst yearMo = (y, m) => `${y}_${m < 10 ? '0' : ''}${m}`\nconst thisYear = today.getFullYear()\nconst thisMonth = today.getMonth() + 1\nconst currentYearMonth = yearMo(thisYear, thisMonth)\nconst maxYearMonth = yearMo(thisYear + 1, thisMonth)\nconst minYearMonth = yearMo(2016, 1)\n\n// --------------------\n\nconst FindEvent = () => {\n const [yearMonth, setYearMonth] = React.useState(currentYearMonth)\n const [day, setDay] = React.useState(today.getDate())\n const [results, setResults] = React.useState({})\n\n const [year, month] = yearMonth.split('_').map(i => parseInt(i))\n const events = safelyGet(results, [year, month])\n\n React.useEffect(() => {\n const [year, month] = yearMonth.split('_').map(i => parseInt(i))\n const success = response => {\n setResults(results => {\n const updated = { ...results }\n if (!updated[year]) {\n updated[year] = {}\n }\n updated[year][month] = response.results\n return updated\n })\n }\n apiFindEvents(year, month, { success })\n }, [yearMonth])\n\n const changeYearMonth = (year, month) => {\n setDay(null)\n setYearMonth(yearMo(year, month))\n }\n\n const dayHighlight = d => {\n const style = { $color: '#444444' }\n if (events && events[d]) {\n style.$color = '#ffffff'\n style.$bg = d == day ? '#c39933' : '#58635b'\n }\n return style\n }\n\n const eventsForDay = () => {\n let dayEvents = events ? events[day] : null\n if (dayEvents) {\n return (\n
\n

\n Showing events on {MONTH[month - 1]} {day}, {year}.\n

\n {dayEvents.map(e => (\n \n ))}\n
\n )\n } else {\n return (\n

\n No events on {MONTH[month - 1]} {day}, {year}.\n

\n )\n }\n }\n\n return (\n \n \n \n minYearMonth}\n />\n \n {day ? eventsForDay() :

Select a date to display events.

}\n
\n
\n
\n )\n}\n\nexport default FindEvent\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\nimport { usePageState } from 'contexts/page-context'\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Transition } from 'components/elements/Layout'\n\n// import components\nimport FindSomeone from './FindSomeone'\nimport FindEvent from './FindEvent'\nimport FindAcblNumber from './FindAcblNumber'\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst Finder = props => {\n // Most of this code is for FindSomeone; FindEvent and FindAcbl are shunted off elsewhere.\n\n const { commonAppPanes, transition } = usePageState()\n const finderPane = commonAppPanes['finder']\n\n const renderView = () => {\n switch (finderPane) {\n case 'find-someone':\n return \n case 'find-acbl-number':\n return \n case 'find-event':\n return \n\n default:\n return
TBD...
\n }\n }\n\n return (\n
\n \n {renderView()}\n \n
\n )\n}\n\nexport default Finder\n\nFinder.propTypes = {\n sourceChannel: PropTypes.string,\n}\n","import styled from 'styled-components'\nexport const ProfileSectionTitle = styled.div`\n font-weight: 900;\n margin-top: 20px;\n`\nexport const EntryData = styled.div`\n display: flex;\n justify-content: flex-start;\n`\nexport const EntryTitle = styled.div`\n font-size: 70%;\n color: #777;\n text-transform: uppercase;\n margin-right: 5px;\n display: inline-block;\n`\nexport const EntryVisibility = styled.div`\n flex: 0 0 23px;\n`\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { VisibleOrHiddenIcon } from 'components/elements/Icons'\n\n// import components\n\n// import styles\nimport { EntryData, EntryTitle, EntryVisibility } from './styles'\n// local constants\n\n// --------------------\n\nconst ProfileEntry = props => {\n if (!props.children || props.children.length == 0) {\n return null\n }\n return (\n \n {props.visible != null && (\n \n \n \n )}\n
\n {props.title && props.title.length > 0 && (\n {props.title}\n )}\n {props.children}\n
\n
\n )\n}\n\nProfileEntry.propTypes = {\n visible: PropTypes.bool,\n title: PropTypes.string,\n children: PropTypes.node,\n}\n\nexport default ProfileEntry\n","import styled from 'styled-components'\nexport const ProfileSectionTitle = styled.div`\n font-weight: 900;\n margin-top: 20px;\n`\nexport const EntryData = styled.div`\n display: flex;\n justify-content: flex-start;\n`\nexport const EntryTitle = styled.div`\n font-size: 70%;\n color: #777;\n text-transform: uppercase;\n margin-right: 5px;\n display: inline-block;\n`\nexport const EntryVisibility = styled.div`\n flex: 0 0 23px;\n`\n","// import packages\nimport React from 'react'\nimport parse from 'html-react-parser'\n\n// import apis\nimport { apiUserProfileReviewed } from 'api/users'\n\n// import redux, selectors, actions\nimport { useSelector, useDispatch } from 'react-redux'\nimport { updateUser } from 'redux/actions/users'\nimport { getUser } from 'redux/selectors/shared_selectors'\n\n// import contexts\nimport { useCurrentUserState } from 'contexts/current-user-context'\nimport { usePageDispatch } from 'contexts/page-context'\n\n// import hooks\n\n// import utilities\nimport { commaize } from 'helpers/utilities'\n\n// import common elements\nimport { ButtonToolbar, Button } from 'react-bootstrap'\nimport { Loading, Pane } from 'components/elements/Layout/'\nimport { HelpText, PrivacyControlsMessage } from 'components/elements/Misc'\nimport { DiscordTag } from 'components/elements/Tags'\n\n// import components\nimport ProfileEntry from './ProfileEntry'\n\n// import styles\nimport { ProfileSectionTitle } from '../styles'\n\n// local constants\nconst paneName = 'user-profile'\n// --------------------\n\nconst UserProfile = () => {\n const currentUser = useCurrentUserState()\n const userId = currentUser.id\n const user = useSelector(state => getUser(state, userId))\n const { closeCommonApp, openPanel } = usePageDispatch()\n const reduxDispatch = useDispatch()\n\n const profileReviewed = () => {\n apiUserProfileReviewed(user.id, {\n successMsg: 'Thank you for reviewing your profile.',\n successDispatch: [reduxDispatch, updateUser],\n successClose: closeCommonApp,\n })\n }\n\n const showMemberProfiles = () => openPanel('member-profiles')\n\n const editUser = () => openPanel('user-edit')\n\n if (!user) {\n return \n }\n\n const actions = [\n \n View Member Profiles\n ,\n ]\n\n if (currentUser.canEditUser(user)) {\n actions.push(\n ,\n )\n }\n\n return (\n \n \n {user.current_sign_in_at ? (\n Last login: {user.current_sign_in_formatted}\n ) : (\n Has not logged in\n )}\n\n {!user.profile_reviewed && currentUser.hasId(user.id) && (\n
\n
\n Please review your profile:\n
\n \n \n \n \n
\n )}\n\n {(user.email == '' || (user.phone == '' && user.cell == '')) && (\n \n {user.email == '' && (\n
\n \n You do not have an email address on file. RSVP cannot send you\n updates about your events without one.\n \n
\n )}\n
\n \n Please consider adding a phone number so your group managers can\n reach you.{' '}\n \n
\n You can choose whether or not contact information is shared with other\n group members (See Privacy Controls).\n
\n )}\n\n
\n Name and Contact\n {user.full_name}\n {user.username}\n \n {user.email ? (\n {user.email}\n ) : null}\n \n \n {user.address}\n \n {user.csz}\n {user.phone}\n \n {user.cell}\n \n {user.discord_user_id && (\n \n \n \n )}\n
\n\n
\n Player\n {user.acbl_number && (\n \n {user.acbl_number}\n \n {user.life_master &&
Life Master
}\n {!user.acbl_active &&
Inactive
}\n
Masterpoint Holding: {commaize(user.mp_holding, 2)}
\n
\n
\n )}\n {user.bbo_name}\n \n {parse(user.player_profile)}\n \n
\n\n \n
\n )\n}\n\nexport default UserProfile\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\nimport { useCurrentUserState } from 'contexts/current-user-context'\nimport { usePageState, usePageDispatch } from 'contexts/page-context'\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Transition } from 'components/elements/Layout'\n\n// import components\nimport UserProfile from './UserProfile'\nimport UserEdit from 'components/shared/UserEdit'\nimport MemberProfiles from 'components/shared/MemberProfiles'\nimport MemberProfileEdit from 'components/shared/MemberProfiles/MemberProfileEdit'\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst Profile = props => {\n const { closePanel, closeCommonApp } = usePageDispatch()\n const { transition, panel, panelParameter } = usePageState()\n const currentUser = useCurrentUserState()\n const currentUserId = currentUser.id\n\n const renderView = () => {\n switch (panel) {\n case 'member-profiles':\n return \n\n case 'user-edit':\n return (\n \n )\n\n case 'member-profile-edit':\n return (\n \n )\n default:\n return \n }\n }\n\n return (\n
\n \n {renderView()}\n \n
\n )\n}\n\nProfile.propTypes = {\n source: PropTypes.string,\n}\n\nexport default Profile\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\nimport { apiPrivacyChange } from 'api/users'\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\nimport { toTitleCase } from 'helpers/utilities'\n\n// import common elements\n\n// import components\nimport { Button, ButtonToolbar } from 'react-bootstrap'\nimport { HelpText, Spinner } from 'components/elements/Misc'\nimport { Attributes } from 'components/elements/Layout/'\nimport { Icon } from 'components/elements/Icons'\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst ShowHide = props => {\n const user = props.user\n const [isVisible, setIsVisible] = React.useState(props.isVisible)\n\n const fieldName = () => {\n switch (props.field) {\n case 'csz':\n return 'City, State, Zip'\n case 'findable':\n return 'Searchable, and in Directories?'\n default:\n return toTitleCase(props.field)\n }\n }\n\n const makeVisible = () => {\n if (!props.isVisible) {\n setIsVisible(true)\n apiPrivacyChange(user.id, props.field, 'on', {\n successMsg: `Privacy option changed for ${fieldName()}`,\n errorMsg: `Could not update privacy option for ${fieldName()}`,\n })\n }\n }\n\n const makeHidden = () => {\n if (props.isVisible) {\n setIsVisible(false)\n apiPrivacyChange(user.id, props.field, 'off', {\n successMsg: `Privacy option changed for ${fieldName()}`,\n errorMsg: `Could not update privacy option for ${fieldName()}`,\n })\n }\n }\n\n const visibleStyle = props.isVisible ? 'success' : 'default'\n const hiddenStyle = props.isVisible ? 'default' : 'danger'\n return (\n \n \n {fieldName()} \n {props.field != 'findable' && (\n {user[props.field] || 'Not provided'}\n )}\n \n \n \n \n \n \n \n \n )\n}\n\nShowHide.propTypes = {\n field: PropTypes.string.isRequired,\n user: PropTypes.object.isRequired,\n isVisible: PropTypes.bool.isRequired,\n}\n\nexport default ShowHide\n","import React from 'react'\nimport PropTypes from 'prop-types'\n// import packages\n\n// import apis\n\n// import redux, selectors, actions\nimport { useSelector } from 'react-redux'\nimport { getUser } from 'redux/selectors/shared_selectors'\n\n// import contexts\nimport { useCurrentUserState } from 'contexts/current-user-context'\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Loading, Pane, Attributes } from 'components/elements/Layout/'\nimport { HelpText } from 'components/elements/Misc'\nimport { Icon } from 'components/elements/Icons'\n\n// import components\nimport ShowHide from './ShowHide'\n\n// import styles\n\n// local constants\nconst paneName = 'user-privacy'\n\n// --------------------\n\nconst UserPrivacy = ({ userId }) => {\n const user = useSelector(state => getUser(state, userId))\n\n const currentUser = useCurrentUserState()\n\n const isVisible = field => {\n if (field == 'findable') {\n return user.findable\n } else {\n return user[`${field}_visible`]\n }\n }\n\n if (!user) {\n return \n }\n\n return (\n \n \n \n What information are you willing to share with other users? Only\n permitted information will be displayed on the{' '}\n Find Someone, Signups Listing and\n other such screens.\n \n \n Your group managers will always be able to see all information you have\n provided.\n \n {user.email && (\n \n {currentUser.hasId(user.id) ? (\n \n You will receive a confirmation for each change made to your\n privacy settings.\n \n ) : (\n \n {' '}\n \n A confirmation email is sent for all changes to privacy\n settings.\n \n \n )}\n \n )}\n\n \n \n {['email', 'phone', 'cell', 'address', 'csz', 'findable'].map(\n field => (\n \n ),\n )}\n \n\n \n Your BBO name and Player Profile are always visible. If you do not\n wish to share, please do not provide this information.\n \n \n \n )\n}\n\nUserPrivacy.propTypes = {\n userId: PropTypes.number.isRequired,\n}\n\nexport default UserPrivacy\n","import React from 'react'\n// import packages\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\nimport {\n useCurrentUserState,\n useCurrentUserDispatch,\n} from 'contexts/current-user-context'\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Button, Radio } from 'react-bootstrap'\nimport { Pane, Attributes } from 'components/elements/Layout/'\nimport { HelpText, Fee, ControlToggle, Spinner } from 'components/elements/Misc'\n\n// import components\nimport MakePurchase from 'components/shared/MakePurchase'\nimport RbucksLog from 'components/shared/RbucksLog'\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst UserCredits = () => {\n const currentUser = useCurrentUserState()\n const { setAutoPay, setAutoPurchase } = useCurrentUserDispatch()\n\n const [purchasing, setPurchasing] = React.useState(false)\n const [logs, setLogs] = React.useState([])\n const [updatingAuto, setUpdatingAuto] = React.useState(false)\n\n const startPurchase = () => setPurchasing(true)\n const closePurchase = () => setPurchasing(false)\n const recordResult = log => setLogs([log, ...logs])\n\n const toggleAutoPay = (name, checked) => {\n setAutoPay(checked, setUpdatingAuto)\n }\n\n const toggleAutoPurchase = (name, checked) => {\n if (checked) {\n setAutoPurchase(20, setUpdatingAuto)\n } else {\n setAutoPurchase(0, setUpdatingAuto)\n }\n }\n\n const changeAmount = event => {\n setAutoPurchase(parseInt(event.target.value), setUpdatingAuto)\n }\n\n return (\n \n \n \n Caution! Not all clubs accept R-Bucks for payment.\n Please check with your club managers before purchasing.\n \n \n R-Bucks, (\n ), are used to pay table fees for events. You can pay as soon as you\n sign up, or wait until close to game time; check with your club managers\n for any further restrictions they may have.\n \n \n If you cancel your signup, your R-Bucks will be returned to your\n account.\n \n Purchases of R-Bucks are not refundable.\n\n
\n

\n \n Your R-Bucks balance is .\n \n

\n {purchasing ? (\n \n ) : (\n <>\n \n\n \n Auto Pay, Auto Purchase \n \n }\n >\n \n \n \n \n \n Auto Pay?\n \n Event directors can collect your payment automatically if\n your R-Bucks balance is sufficient. If you cancel, the\n R-Bucks will be returned to your account.\n \n \n \n\n \n \n 0}\n clickAction={toggleAutoPurchase}\n name='purchase'\n disabled={updatingAuto}\n />\n \n \n Auto Purchase?\n \n If you have saved a credit card on file,\n purchases of R-Bucks will be automatic when your balance\n runs low. You can save your card the next time you make a\n purchase.\n \n {currentUser.autoPurchase > 0 && (\n \n
\n Reload amount:\n
\n \n $20\n \n \n $50\n \n \n $100\n \n
\n )}\n
\n
\n \n \n )}\n
\n\n \n
\n )\n}\n\nexport default UserCredits\n","// import packages\nimport React from 'react'\nimport { toast } from 'react-toastify'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\nimport { usePageDispatch } from 'contexts/page-context'\nimport { useCurrentUserState } from 'contexts/current-user-context'\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Button } from 'react-bootstrap'\nimport { Pane } from 'components/elements/Layout'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst SupportOptions = () => {\n const currentUser = useCurrentUserState()\n\n const { openPanel, setActivePane, closeCommonApp } = usePageDispatch()\n\n const goToGroupAndClubManagers = () => {\n setActivePane('user-clubs')\n closeCommonApp()\n }\n\n const clearStorage = () => {\n localStorage.clear()\n sessionStorage.clear()\n toast.info('Settings have been cleared.')\n }\n\n const canDebug = currentUser.isAdmin || currentUser.relinquishable\n\n return (\n \n \n
\n
\n

Using RSVP Bridge

\n

\n For questions about how to use RSVP Bridge, please\n contact your{' '}\n group and club managers.\n

\n
\n
\n

Technical Difficulties

\n

\n If you are having technical difficulties, such as\n blank screens or error pages, please contact{' '}\n support@rsvpbridge.com.\n Questions of a non-technical nature will be forwarded to your group\n managers.\n

\n\n

\n We may request information on your operating system and browser,\n which you can send to us using the button below. You will be taken\n to the What Is My Browser website.\n

\n\n
\n \n Send a Browser Report\n \n
\n\n

\n You can also try clearing some RSVP Bridge settings to see if that\n resolves your issue:\n

\n
\n \n
\n {canDebug && (\n
\n openPanel('debug-options')}\n >\n Debug Options\n \n
\n )}\n
\n
\n
\n )\n}\n\nexport default SupportOptions\n","// import packages\nimport React from 'react'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\nimport { usePageDispatch } from 'contexts/page-context'\n\n// import hooks\n\n// import utilities\nimport {\n getDebugOptions,\n toggleDebugOption,\n clearDebugOptions,\n} from 'helpers/debugging'\n\n// import common elements\nimport { Button } from 'react-bootstrap'\nimport { Pane, Attributes } from 'components/elements/Layout/'\nimport { ControlToggle, HelpText } from 'components/elements/Misc/'\n\n// import components\n\n// import styles\n\n// local constants\nconst paneName = 'debugging'\n\n// --------------------\n\nconst Debugging = () => {\n const { closePanel } = usePageDispatch()\n\n const [debug, setDebug] = React.useState(getDebugOptions())\n\n const toggle = option => {\n setDebug(toggleDebugOption(option))\n }\n\n const actions = [\n \n Clear Debug Options\n ,\n ]\n\n return (\n \n \n \n\n \n You may need to reload pages in order for debugging options to take\n effect.\n \n\n \n \n \n \n \n \n Track Panels?\n \n \n\n \n \n \n \n \n Track Reducer?\n \n \n \n\n \n \n \n \n \n \n Track User Subscription?\n \n \n\n \n \n \n \n \n Track Event Subscription?\n \n \n\n \n \n \n \n \n Track Current User Subscription?\n \n \n\n \n \n \n \n \n Track Play Subscription?\n \n \n \n \n )\n}\n\nexport default Debugging\n","// import packages\nimport React from 'react'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\nimport { usePageState } from 'contexts/page-context'\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Transition } from 'components/elements/Layout'\n\n// import components\nimport SupportOptions from './SupportOptions'\nimport Debugging from './Debugging'\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst Support = () => {\n const { panel, transition } = usePageState()\n\n const renderView = () => {\n if (panel === 'debug-options') {\n return \n } else {\n return \n }\n }\n\n return (\n \n {renderView()}\n \n )\n}\nexport default Support\n","// import packages\nimport React from 'react'\n\n// import apis\nimport { apiLoadUser } from 'api/users'\n\n// import redux, selectors, actions\nimport { useDispatch } from 'react-redux'\nimport { loadUser } from 'redux/actions/users'\n\n// import contexts\nimport { useCurrentUserState } from 'contexts/current-user-context'\nimport { usePageState, usePageDispatch } from 'contexts/page-context'\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Loading, Transition } from 'components/elements/Layout'\n\n// import components\nimport UserProfile from './UserProfile'\nimport UserEmailPreferences from 'components/shared/UserEmailPreferences'\nimport UserPrivacy from 'components/shared/UserPrivacy'\nimport UserCredits from 'components/shared/UserCredits'\nimport Support from './Support'\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst Profile = () => {\n const reduxDispatch = useDispatch()\n const { closeCommonApp } = usePageDispatch()\n const { commonAppPanes, transition } = usePageState()\n const profilePane = commonAppPanes['profile']\n const currentUser = useCurrentUserState()\n const currentUserId = currentUser.id\n const [loadingCurrentUser, setLoadingCurrentUser] = React.useState(false)\n\n React.useEffect(() => {\n apiLoadUser(currentUserId, {\n loading: setLoadingCurrentUser,\n successDispatch: [reduxDispatch, loadUser],\n })\n }, [currentUserId, reduxDispatch])\n\n const renderView = () => {\n switch (profilePane) {\n case 'user-profile':\n return \n case 'user-privacy':\n return (\n \n )\n case 'user-credits':\n return \n case 'user-email-preferences':\n return \n case 'support':\n return \n default:\n return
TBD
\n }\n }\n\n return (\n
\n \n {loadingCurrentUser ? : renderView()}\n \n
\n )\n}\nexport default Profile\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\nimport {\n apiRemoveAllScoring,\n apiAuditSignups,\n apiObliterateEvent,\n apiReturnToSetup,\n} from 'api/events'\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Button, ButtonToolbar, Alert } from 'react-bootstrap'\nimport {\n ParsedHtml,\n Spinner,\n ScoringProgress,\n Fee,\n Confirm,\n NavigateToEvent,\n} from 'components/elements/Misc'\nimport { EventPanelHeading } from 'components/elements/Event'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst SingleEvent = ({ event, replace, clear }) => {\n const [auditResults, setAuditResults] = React.useState(null)\n\n const [deleting, setDeleting] = React.useState(false)\n\n const [resetting, setResetting] = React.useState(false)\n\n const auditSignups = () => {\n setAuditResults('loading')\n apiAuditSignups(event.id, false, {\n success: response => setAuditResults(response.audit),\n })\n }\n\n const attemptFixes = () => {\n setAuditResults('loading')\n apiAuditSignups(event.id, true, {\n success: response => setAuditResults(response.audit),\n })\n }\n\n const clearAudit = () => setAuditResults(null)\n\n const removeScoring = () => {\n apiRemoveAllScoring(event.id, {\n successMsg: 'Removed all scoring and plays',\n success: r => replace(r.event),\n })\n }\n\n const reallyDelete = () => {\n apiObliterateEvent(event.id, {\n success: () => {\n clear()\n },\n })\n }\n\n const reallyReset = () => {\n apiReturnToSetup(event.id, {\n success: r => {\n setResetting(false)\n replace(r.event)\n },\n })\n }\n\n if (!event) {\n return (\n
\n Loading Event {event.id}...\n
\n )\n }\n\n return (\n
\n

Event #{event.id}

\n \n
\n \n
\n
\n
    \n
  • Sections: {event.sections_count}
  • \n
  • Playing: {event.playing_count}
  • \n
  • Scores counts: {event.computed_scores_count}
  • \n
  • Plays counts: {event.computed_plays_count}
  • \n
  • \n Fee: , {event.paid_with_rbucks_count} players\n paid via R-Bucks\n
  • \n
\n
\n \n
\n
\n \n \n Audit Signups\n \n \n Remove Scoring\n \n\n setResetting(t => !t)}\n >\n Reset to Not Started\n \n setDeleting(t => !t)}\n >\n Obliterate event\n \n \n \n setResetting(false)}\n />\n setDeleting(false)}\n />\n\n {auditResults && (\n \n

Audit Results

\n {auditResults === 'spin' ? (\n

\n \n

\n ) : (\n \n )}\n \n \n \n Attempt Fixes\n \n \n \n
\n )}\n
\n )\n}\n\nSingleEvent.propTypes = {\n event: PropTypes.object.isRequired,\n clear: PropTypes.func.isRequired,\n replace: PropTypes.func.isRequired,\n}\n\nexport default SingleEvent\n","// import packages\nimport React from 'react'\nimport { toast } from 'react-toastify'\n\n// import apis\nimport { apiFetchEventList, apiFetchSingleEvent } from 'api/events'\nimport { apiGetSectionEventId } from 'api/sections'\n\n// import redux, selectors, actions\nimport { useSelector, useDispatch } from 'react-redux'\nimport { augmentGroupEvents } from 'redux/actions/group_events.js'\n\n// import contexts\nimport { usePaneState } from 'contexts/pane-memory-context'\n\n// import hooks\nimport { useAccordion } from 'hooks/useAccordion'\n\n// import utilities\n\n// import common elements\nimport {\n Button,\n ButtonToolbar,\n FormGroup,\n ControlLabel,\n FormControl,\n} from 'react-bootstrap'\nimport { Pane } from 'components/elements/Layout'\n\n// import components\nimport SingleEvent from './SingleEvent'\nimport GroupEvent from 'pages/User/GroupEvents/GroupEvent'\n\n// import styles\n\n// local constants\nconst paneName = 'admin-actions'\nconst memoryKey = 'admin-actions'\nconst accordionKey = `${paneName}_accordion`\n\n// --------------------\n\nconst AdminActions = () => {\n const { Accordion } = useAccordion(accordionKey)\n const reduxDispatch = useDispatch()\n const [listType, setListType] = usePaneState(memoryKey, 'listType', null)\n\n const [loadingSingleEvent, setLoadingSingleEvent] = React.useState(false)\n const [singleEvent, setSingleEvent] = usePaneState(\n memoryKey,\n 'singleEvent',\n null,\n )\n\n const [singleEventId, setSingleEventId] = usePaneState(\n memoryKey,\n 'singleEventId',\n '',\n )\n\n const [sectionId, setSectionId] = React.useState('')\n const [sectionEventId, setSectionEventId] = React.useState(null)\n\n React.useEffect(() => {\n setSingleEvent(null)\n }, [singleEventId, setSingleEvent])\n\n React.useEffect(() => {\n if (sectionEventId) {\n window.location.href = `/events/${sectionEventId}`\n }\n }, [sectionEventId])\n\n const groupEvents = useSelector(state => state.group_events)\n\n const listTodaysEvents = () => {\n apiFetchEventList('todays', {\n successDispatch: [reduxDispatch, augmentGroupEvents],\n success: () => setListType('today'),\n })\n }\n\n const listOpenEvents = () => {\n apiFetchEventList('open', {\n successDispatch: [reduxDispatch, augmentGroupEvents],\n success: () => setListType('open'),\n })\n }\n\n const isPastOrCompleted = event =>\n event.is_over || event.scoring_status == 'complete'\n\n const matchesFilter = event => {\n switch (listType) {\n case 'today':\n return event.is_today\n case 'open':\n return event.scoring_progress == 'entry'\n default:\n return false\n }\n }\n const listTypeTitle = () => {\n switch (listType) {\n case 'today':\n return

Today's Events

\n case 'open':\n return

Open Events:

\n default:\n return

Select action.

\n }\n }\n\n const handleSingleEventIdChange = e => setSingleEventId(e.target.value)\n const handleSectionIdChange = e => setSectionId(e.target.value)\n\n const fetchSingleEvent = () => {\n apiFetchSingleEvent(singleEventId, {\n loading: setLoadingSingleEvent,\n success: response => {\n setSingleEvent(response.event)\n },\n error: singleEventNotFound,\n })\n }\n\n const goToSectionEvent = () => {\n apiGetSectionEventId(sectionId, {\n success: resp => setSectionEventId(resp.event_id),\n })\n }\n\n const clearSingleEvent = () => {\n setSingleEvent(null)\n }\n\n const singleEventNotFound = () => {\n toast.error(`Event ${singleEventId} not found.`)\n setSingleEvent(null)\n }\n\n const eventRows = listType\n ? Object.values(groupEvents)\n .filter(matchesFilter)\n .sort((a, b) =>\n a.starts_at < b.starts_at ? -1 : a.starts_at > b.starts_at ? 1 : 0,\n )\n .map(event => (\n \n ))\n : []\n\n return (\n \n \n\n \n \n \n \n Open Delayed Job Dashboard\n \n \n\n {listTypeTitle()}\n {listType !== null && (\n
\n {eventRows.length == 0 ? (\n

No events.

\n ) : (\n {eventRows}\n )}\n
\n )}\n\n
\n\n

For an event:

\n \n Event ID\n \n \n\n \n \n Fetch single event\n \n \n\n {loadingSingleEvent &&
Loading event {singleEventId}...
}\n\n {singleEvent && (\n \n )}\n\n

Find event for section id:

\n \n Section ID\n \n \n\n \n \n Go to event for Section Id\n \n \n
\n )\n}\n\nexport default AdminActions\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { ToastContainer, Flip } from 'react-toastify'\nimport { Button } from 'react-bootstrap'\nimport { bootstrapUtils } from 'react-bootstrap/lib/utils'\nbootstrapUtils.addStyle(Button, 'cancel')\nbootstrapUtils.addStyle(Button, 'erase')\nbootstrapUtils.addStyle(Button, 'negative')\nbootstrapUtils.addStyle(Button, 'not-signed-up')\nbootstrapUtils.addStyle(Button, 'partner')\nbootstrapUtils.addStyle(Button, 'play')\nbootstrapUtils.addStyle(Button, 'team')\nbootstrapUtils.addStyle(Button, 'invite')\nbootstrapUtils.addStyle(Button, 'allow')\nbootstrapUtils.addStyle(Button, 'positive')\nbootstrapUtils.addStyle(Button, 'waiting')\nbootstrapUtils.addStyle(Button, 'static')\nbootstrapUtils.addStyle(Button, 'sub')\nbootstrapUtils.addStyle(Button, 'help')\n// These are used on ReconcileMembers and addClubMembers\nbootstrapUtils.addStyle(Button, 'member-active')\nbootstrapUtils.addStyle(Button, 'member-permanent')\nbootstrapUtils.addStyle(Button, 'member-guest')\nbootstrapUtils.addStyle(Button, 'member-inactive')\nbootstrapUtils.addStyle(Button, 'member-removed')\nbootstrapUtils.addStyle(Button, 'stpref-required')\nbootstrapUtils.addStyle(Button, 'stpref-requested')\nbootstrapUtils.addStyle(Button, 'stpref-undesired')\nbootstrapUtils.addStyle(Button, 'stpref-indifferent')\n\nimport { PageContent, Transition } from 'components/elements/Layout'\nimport Copyright from 'components/elements/Layout/Copyright.js.jsx'\n\nimport { usePageState, usePageDispatch } from 'contexts/page-context'\nimport { removeActivePaneKeys } from 'contexts/page-context/storage_methods'\nimport { useCurrentUserState } from 'contexts/current-user-context'\n\n// The contextual help system\nimport ContextualHelp from 'components/global/ContextualHelp'\n\n// the apps displayed in the AppNav bar\nimport CommonContent from 'components/global/CommonContent'\nimport CommonNav from 'components/global/CommonNav'\nimport Movements from 'components/global/Movements/index'\nimport Finder from 'components/global/Finder/index'\nimport Profile from 'components/global/Profile/index'\nimport AdminActions from 'components/global/AdminActions/index'\n\n/* At any given time, a page may be showing:\n - contextual help (showingHelp === true)\n - an overlay-type window with one of the common apps (user profile, movements, etc.) (commonAppPane !== null)\n - its main content (pageContext.show === 'pane')\n - some secondary content, in a slide-out window with no navigation (pageContext.show !== 'pane')\n*/\n\nconst PageLayout = props => {\n const currentUser = useCurrentUserState()\n const headerRef = React.useRef()\n\n const isDemo = currentUser.isDemo\n\n const {\n commonAppPane,\n showingHelp,\n navsVisible,\n transition,\n scrollTo,\n scrollIterator,\n showCopyright,\n } = usePageState()\n\n const { setHeaderRef } = usePageDispatch()\n\n React.useEffect(() => {\n setHeaderRef(headerRef)\n }, [headerRef, setHeaderRef])\n\n React.useEffect(() => {\n window.scrollTo(0, scrollTo)\n }, [scrollIterator, scrollTo])\n\n const logoClickAction = () => {\n if (currentUser.isNotTable) {\n removeActivePaneKeys()\n window.location.href = '/'\n }\n }\n\n const selectedContent = () => {\n if (showingHelp) {\n return (\n \n \n \n )\n } else {\n switch (commonAppPane) {\n case 'movements':\n return (\n \n \n \n )\n\n case 'finder':\n return (\n \n \n \n )\n\n case 'profile':\n return (\n \n \n \n )\n\n case 'admin':\n return (\n \n \n \n )\n\n default:\n return
{props.children}
\n }\n }\n }\n\n let classes = ['interior-page']\n classes.push(navsVisible ? 'show-navs' : 'hide-navs')\n if (commonAppPane) {\n classes.push('float-container')\n }\n\n const transitionKey = showingHelp ? 'showHelp' : commonAppPane || 'content'\n\n return (\n
\n \n {navsVisible && (\n
\n
\n {props.branch && !isDemo && (\n
{props.branch}
\n )}\n
\n
\n
{props.superHeading}
\n
{props.heading}
\n
\n
\n )}\n\n \n {selectedContent()}\n \n\n \n {showCopyright && }\n
\n )\n}\n\nPageLayout.propTypes = {\n branch: PropTypes.string,\n heading: PropTypes.node,\n sourceChannel: PropTypes.string,\n children: PropTypes.node.isRequired,\n superHeading: PropTypes.node,\n links: PropTypes.array.isRequired,\n currentPath: PropTypes.string.isRequired,\n nextEvent: PropTypes.string,\n prevEvent: PropTypes.string,\n}\n\nexport default PageLayout\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport Sticky from 'react-stickynode'\n\nconst PageStickyHeader = props => {\n return (\n \n
{props.children}
\n
\n )\n}\n\nPageStickyHeader.propTypes = {\n children: PropTypes.node.isRequired,\n}\n\nexport default PageStickyHeader\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\nimport { usePageState, usePageDispatch } from 'contexts/page-context'\n\n// import hooks\nimport { useNavFunctions } from 'hooks/useNavFunctions'\n\n// import utilities\n\n// import common elements\n\n// import components\nimport NavIcon from './NavIcon'\n\n// import styles\nimport { PageIcons, NavIconsContainer, SubNavIconsContainer } from './styles'\n\n// local constants\n\n// --------------------\n\nconst PageNav = props => {\n const { items, children } = props\n const { toggleSubNav } = usePageDispatch()\n const { activePane, subNavIsOpen, activeSubNavKey } = usePageState()\n const navLevel = useNavFunctions().getNavLevel()\n\n const renderElements = items => {\n if (items.length == 0) {\n return null\n }\n const elements = []\n let i = 0\n for (const item of items) {\n const attrs = {}\n if (item.component) {\n elements.push(item.component)\n } else {\n if (item.subNav) {\n attrs.subNav = true\n }\n let current = item.id == activePane\n let subNavBadges = 0\n if (item.subNav && (!subNavIsOpen || activeSubNavKey != item.id)) {\n for (const subitem of item.subNav) {\n subNavBadges += subitem.badge\n if (subitem.id == activePane) {\n current = true\n }\n }\n }\n attrs['current'] = current\n elements.push(\n ,\n )\n }\n }\n return elements\n }\n\n const subNavFor = id => {\n for (let item of items) {\n if (item.id == id && item.subNav) {\n return item.subNav\n }\n }\n return []\n }\n\n return (\n \n \n {children}\n {renderElements(items)}\n \n \n {renderElements(subNavFor(activeSubNavKey))}\n \n \n )\n}\n\nPageNav.propTypes = {\n items: PropTypes.array.isRequired,\n children: PropTypes.node,\n}\n\nexport default PageNav\n","import styled from 'styled-components'\nimport { ColorConstants } from 'helpers/colors'\n\nexport const PaneContainer = styled.div`\n @media (max-width: 599px) {\n margin-bottom: ${p => (p.$withFormKeyboardAction ? '300px' : '0')};\n }\n`\n\nexport const PaneHeader = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 10px;\n`\n\nexport const PaneSections = styled.div`\n display: flex;\n justify-content: space-between;\n @media (max-width: 599px) {\n display: block;\n margin-bottom: 10px;\n }\n`\n\nexport const PaneTitle = styled.div`\n display: grid;\n grid-template-areas:\n 'ptBoard ptSuperTitle'\n 'ptBoard ptTitle'\n 'pbBoard ptChildren';\n`\n\nexport const PaneTitleContent = styled.h1`\n grid-area: ptTitle;\n @extend h1;\n margin: 0;\n margin-top: ${p => (p.$hasSuperheading ? '3px' : '5px')};\n`\n\nexport const PaneTitleChildren = styled.div`\n grid-area: ptChildren;\n`\n\nexport const HelpPaneTitle = styled.div`\n margin: 10px 0;\n font-weight: 700;\n font-size: 24px;\n color: ${ColorConstants.text.helpHeader};\n`\n\nexport const PaneSuperheading = styled.div`\n grid-area: ptSuperTitle;\n font-size: 85%;\n text-transform: uppercase;\n`\n\nexport const PaneTitleBoard = styled.div`\n grid-area: ptBoard;\n padding-right: 10px;\n`\n\nexport const PaneHeaderActions = styled.div`\n position: relative;\n display: flex;\n justify-content: flex-end;\n align-items: flex-start;\n gap: 10px;\n @media print {\n display: none;\n }\n @media (max-width: 599px) {\n flex-direction: ${p => (p.$usesBurger ? 'row' : 'column')};\n align-items: ${p => (p.$usesBurger ? 'flex-start' : 'flex-end')};\n }\n`\n\nexport const PaneHeaderSwitches = styled.div`\n margin-top: 10px;\n display: flex;\n justify-content: flex-end;\n flex: 0 0 auto;\n align-items: flex-start;\n padding-left: 3px;\n & > div {\n margin-left: 5px;\n margin-bottom: 0;\n order: 1;\n }\n @media (max-width: 600px) {\n justify-content: flex-start;\n flex-direction: column;\n align-items: flex-end;\n & > div {\n margin-left: 0;\n margin-bottom: 5px;\n text-align: right;\n margin-right: 5px;\n }\n }\n`\n\nexport const PaneHeaderBoardWrap = styled.div`\n display: flex;\n margin-bottom: 5px;\n > div {\n flex: 1 1 auto;\n &:first-child {\n flex: 0 0 auto;\n padding-right: 5px;\n margin-top: 5px;\n }\n }\n`\n\nexport const PageFilterContainer = styled.div`\n margin-bottom: 10px;\n border-bottom: 1px solid #ccc;\n padding-bottom: 10px;\n`\n\nexport const PageFilterLabel = styled.div`\n font-size: 85%;\n font-weight: 700;\n text-transform: uppercase;\n`\n\nexport const ActionListContainer = styled.div`\n display: flex;\n justify-content: flex-end;\n`\n\nexport const ActionList = styled.div`\n display: flex;\n flex-flow: row wrap;\n background-color: #dddddd;\n gap: 10px;\n padding: 10px 10px;\n border-radius: 8px 0 8px 8px;\n justify-content: flex-end;\n`\n\nexport const BurgerContainer = styled.div`\n padding: 3px;\n border-radius: ${p => (p.$open ? '5px 5px 0 0 ' : '5px')};\n background-color: ${p => (p.$open ? '#dddddd' : 'transparent')};\n`\n\nexport const Badge = styled.div`\n font-size: 10px;\n line-height: 13px;\n color: #fff;\n background-color: ${p =>\n p.$color == 'negative' ? ColorConstants.negative : ColorConstants.positive};\n border-radius: 50%;\n height: 15px;\n width: 15px;\n text-align: center;\n position: absolute;\n top: -2px;\n right: -2px;\n padding: 2px;\n`\nexport const WakeLockButton = styled.div`\n margin-top: -10px;\n display: flex;\n align-items: center;\n div:first-child {\n padding: 0 5px 5px 0;\n }\n @media all and (display-mode: standalone) {\n display: none;\n }\n`\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Board } from 'components/elements/Misc'\n\n// import components\n\n// import styles\nimport { PaneHeaderBoardWrap } from './styles'\n\n// local constants\n\n// --------------------\n\nconst BoardWrap = ({ board, children }) => {\n return (\n \n
\n \n
\n
{children}
\n
\n )\n}\n\nBoardWrap.propTypes = {\n board: PropTypes.number.isRequired,\n children: PropTypes.node,\n}\n\nexport default BoardWrap\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Icon } from 'components/elements/Icons'\n\n// import components\n\n// import styles\nimport { BurgerContainer } from './styles'\nimport { Badge } from './styles'\n\n// local constants\n\n// --------------------\n\nconst Burger = ({ open, toggleOpen, actionBadge, actionBadgeColor }) => {\n return (\n \n \n {!open && actionBadge ? (\n {actionBadge}\n ) : null}\n \n )\n}\n\nBurger.propTypes = {\n open: PropTypes.bool,\n toggleOpen: PropTypes.func.isRequired,\n actionBadge: PropTypes.number,\n actionBadgeColor: PropTypes.string,\n}\n\nexport default Burger\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\nimport { useToggle } from 'hooks/useToggle'\nimport { useWidthToggle } from 'hooks/useWidthToggle'\n\n// import utilities\n\n// import common elements\nimport { Collapse } from 'react-bootstrap'\nimport { Board, ControlToggle } from 'components/elements/Misc'\nimport { PrintWindowButton, RefreshButton } from 'components/elements/Buttons'\n\n// import components\nimport Burger from './Burger'\n\n// import styles\nimport {\n PaneHeader,\n PaneSections,\n PaneSuperheading,\n PaneTitle,\n PaneTitleContent,\n PaneTitleChildren,\n PaneTitleBoard,\n HelpPaneTitle,\n PaneHeaderActions,\n PaneHeaderSwitches,\n ActionList,\n ActionListContainer,\n WakeLockButton,\n} from './styles'\n\n// local constants\n\n// --------------------\n\nconst Header = props => {\n const { wakeLock } = props\n const [burgerOpen, toggleBurgerOpen] = useToggle(false)\n const actionCount = props.actions ? props.actions.length : 0\n const hasActions = actionCount > 0\n const showBurger = hasActions && actionCount >= props.burgerAt\n const { widthButton, forceWidthUpdate } = useWidthToggle()\n\n const hasWidthToggle = !!props.showWidthToggle\n\n React.useEffect(() => {\n forceWidthUpdate(hasWidthToggle)\n }, [hasWidthToggle, forceWidthUpdate])\n\n const wakeLockActive = wakeLock && wakeLock.released === false\n const toggleWakeLock = () => {\n if (wakeLock) {\n if (wakeLock.released === false) {\n wakeLock.release()\n } else {\n wakeLock.request()\n }\n }\n }\n\n // const { displayed, _showHelp } = useContextualHelp()\n // const hasActions = props.actions && props.actions.length > 0\n // const hasContextualHelp = !props.help && displayed.selector && !props.omitHelp\n\n // const actions = () => {\n // if (!hasContextualHelp && !hasActions) {\n // return null\n // }\n // let allActions = hasActions ? [...props.actions] : []\n // if (hasContextualHelp) {\n // allActions.push(\n // \n // Help\n // ,\n // )\n // }\n // return
{allActions}
\n // }\n return (\n <>\n \n {props.help ? (\n \n {props.title}\n \n ) : (\n \n {props.board && (\n \n \n \n )}\n {props.superheading && (\n {props.superheading}\n )}\n \n {props.title}\n \n\n {props.children}\n \n )}\n
\n \n {props.refresh && (\n
\n \n
\n )}\n {props.showWidthToggle &&
{widthButton}
}\n {props.showPrint && (\n
\n \n
\n )}\n {props.filter}\n {props.wakeLock && wakeLock.isSupported && (\n \n
Wake Lock
\n \n
\n )}\n {showBurger ? (\n \n ) : hasActions ? (\n props.actions\n ) : null}\n
\n {showBurger && (\n \n
\n \n
\n \n {props.actions.map((a, i) => (\n
{a}
\n ))}\n
\n \n
\n \n )}\n {props.switches && (\n \n {props.switches && (\n {props.switches}\n )}\n \n )}\n
\n \n \n )\n}\n\nHeader.propTypes = {\n actions: PropTypes.array,\n refresh: PropTypes.object,\n switches: PropTypes.array,\n help: PropTypes.bool,\n showPrint: PropTypes.bool,\n showWidthToggle: PropTypes.bool,\n filter: PropTypes.node,\n board: PropTypes.number,\n wakeLock: PropTypes.object,\n // omitHelp: PropTypes.bool,\n superheading: PropTypes.string,\n title: PropTypes.node,\n actionBadge: PropTypes.number,\n children: PropTypes.node,\n burgerAt: PropTypes.number,\n}\n\nHeader.defaultProps = {\n burgerAt: 3,\n}\n\nexport default Header\n","// import packages\nimport React from 'react'\nimport Sticky from 'react-stickynode'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\nimport { useContextualHelp } from 'contexts/help-context'\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Icon } from 'components/elements/Icons'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst HelpReturn = () => {\n const { closeHelp } = useContextualHelp()\n return (\n \n
\n
\n \n Return\n \n
\n
RSVP Bridge Help System
\n
\n
\n )\n}\n\nHelpReturn.propTypes = {}\n\nexport default HelpReturn\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst LimitWidth = props => {\n return
{props.children}
\n}\n\nLimitWidth.propTypes = {\n children: PropTypes.node.isRequired,\n}\n\nexport default LimitWidth\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\nimport { PageFilterContainer, PageFilterLabel } from './styles'\n\n// local constants\n\n// --------------------\n\nconst PageFilter = props => {\n return (\n \n {props.label && {props.label}}\n {props.children}\n \n )\n}\n\nPageFilter.propTypes = {\n label: PropTypes.string.isRequired,\n children: PropTypes.node.isRequired,\n}\n\nexport default PageFilter\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport Sticky from 'react-stickynode'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Icon } from 'components/elements/Icons'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst Return = props => {\n return (\n \n
\n
\n \n {props.closeText}\n \n
\n {props.middleAction}\n {props.forwardAction}\n
\n {props.children}\n
\n )\n}\n\nReturn.propTypes = {\n close: PropTypes.func,\n closeText: PropTypes.string.isRequired,\n middleAction: PropTypes.node,\n forwardAction: PropTypes.node,\n children: PropTypes.node,\n}\n\nexport default Return\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\nimport { useContextualHelp } from 'contexts/help-context'\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { InteriorErrorBoundary } from 'components/elements/Layout'\n\n// import components\nimport BoardWrap from './BoardWrap'\nimport Header from './Header'\nimport HelpReturn from './HelpReturn'\nimport LimitWidth from './LimitWidth'\nimport PageFilter from './PageFilter'\nimport Return from './Return'\n\n// import styles\nimport { PaneContainer } from './styles'\n\n// local constants\n\n// --------------------\n\nconst Pane = props => {\n const { helpPane, omitHelp } = props\n const { setDisplayed, initializeStack } = useContextualHelp()\n\n React.useEffect(() => {\n if (helpPane && helpPane != '' && !omitHelp) {\n initializeStack(helpPane)\n setDisplayed({ selector: helpPane, helpType: 'pane' })\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n let classes = ['pane-container']\n\n if (props.hasKeyboardAction) {\n classes.push('form-with-keyboard-action')\n }\n\n return (\n \n \n {props.children}\n \n \n )\n}\n\nPane.propTypes = {\n helpPane: PropTypes.string,\n omitHelp: PropTypes.bool,\n hasKeyboardAction: PropTypes.bool,\n children: PropTypes.node.isRequired,\n}\n\nPane.BoardWrap = BoardWrap\nPane.BoardWrap.displayName = 'Pane.BoardWrap'\n\nPane.Header = Header\nPane.Header.displayName = 'Pane.Header'\n\nPane.HelpReturn = HelpReturn\nPane.HelpReturn.displayName = 'Pane.HelpReturn'\n\nPane.LimitWidth = LimitWidth\nPane.LimitWidth.displayName = 'Pane.LimitWidth'\n\nPane.PageFilter = PageFilter\nPane.PageFilter.displayName = 'Pane.PageFilter'\n\nPane.Return = Return\nPane.Return.displayName = 'Pane.Return'\n\nexport default Pane\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\nimport { useNavFunctions } from 'hooks/useNavFunctions'\n\n// import utilities\nimport { getIconClassname } from 'helpers/icons'\n\n// import common elements\n\n// import components\n\n// import styles\nimport { NavIconContainer, NavText, IconContainer } from './styles'\n\n// local constants\nconst spinnerClass = getIconClassname('spinner') + ' spinning'\nconst reloadClass = getIconClassname('reload')\n\n// --------------------\n\nconst RefreshNavItem = props => {\n const navLevel = useNavFunctions().getNavLevel()\n const iconClass = props.isRefreshing ? spinnerClass : reloadClass\n\n return (\n \n \n Refresh\n \n )\n}\n\nRefreshNavItem.propTypes = {\n isRefreshing: PropTypes.bool,\n refresh: PropTypes.func.isRequired,\n}\n\nexport default RefreshNavItem\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\nimport { pluralize } from 'helpers/utilities'\n\n// import common elements\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst SearchFilterResult = ({ filteredCount, totalCount, noun }) => {\n return (\n \n matches {filteredCount} of {pluralize(totalCount, noun)}\n \n )\n}\n\nconst SFRContainer = styled.div`\n font-size: 70%;\n`\n\nSearchFilterResult.propTypes = {\n filteredCount: PropTypes.number.isRequired,\n totalCount: PropTypes.number.isRequired,\n noun: PropTypes.string.isRequired,\n}\n\nexport default SearchFilterResult\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\nimport { usePageState, usePageDispatch } from 'contexts/page-context'\n\n// import hooks\nimport { useNavFunctions } from 'hooks/useNavFunctions'\n\n// import utilities\nimport { toTitleCase } from 'helpers/utilities'\n\n// import common elements\n\n// import components\n\n// import styles\nimport { NavIconContainer, IconContainer, NavText, Badge } from './styles'\n\n// local constants\n\n// --------------------\n\nconst NavToggler = props => {\n const { visibleNavKeys, badge } = props\n const navLevel = useNavFunctions().getNavLevel()\n const { activeNavKey } = usePageState()\n const { setActiveNavKey } = usePageDispatch()\n\n // There are exactly 2 visibleNavKeys if this component was called\n const [key1, key2] = visibleNavKeys\n const otherNavKey = activeNavKey == key1 ? key2 : key1\n\n const toggleNav = () => {\n setActiveNavKey(otherNavKey)\n }\n\n const otherNavText = toTitleCase(otherNavKey.split('#').pop())\n const otherNavLevel = navLevel == 'level0' ? 'level1' : 'level0'\n\n return (\n \n {badge && badge > 0 ? {badge} : null}\n \n {otherNavText}\n \n )\n}\n\nNavToggler.propTypes = {\n visibleNavKeys: PropTypes.array.isRequired,\n badge: PropTypes.number,\n}\n\nexport default NavToggler\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\nimport { usePageState } from 'contexts/page-context'\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport PageNav from 'components/elements/Layout/PageNav'\n\n// import components\nimport NavCycler from './NavCycler'\nimport NavToggler from './NavToggler'\n\n// import styles\nimport { NavCyclerAboveContainer } from './styles'\n// local constants\n\n// --------------------\n\nconst SwitchablePageNav = props => {\n const { multiNavElements, navCyclerInMenu, additionalItems, navCycleBadge } =\n props\n const { activeNavKey } = usePageState()\n const elements = multiNavElements[activeNavKey] || []\n\n const visibleNavKeys = Object.keys(multiNavElements)\n\n const Cycler =\n visibleNavKeys.length == 2 && !additionalItems ? (\n \n ) : (\n \n )\n\n if (navCyclerInMenu && visibleNavKeys.length > 1) {\n elements.push({\n component: Cycler,\n })\n }\n\n return (\n \n {!navCyclerInMenu && visibleNavKeys.length > 1 && (\n {Cycler}\n )}\n \n )\n}\n\nSwitchablePageNav.propTypes = {\n multiNavElements: PropTypes.object.isRequired,\n navCyclerInMenu: PropTypes.bool,\n navCycleBadge: PropTypes.node,\n additionalItems: PropTypes.array,\n}\n\nexport default SwitchablePageNav\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { Collapse } from 'react-bootstrap'\nimport { ColorConstants } from 'helpers/colors'\n\nimport { Icon } from 'components/elements/Icons'\n\nconst Toolbar = props => {\n const [show, setShow] = React.useState(props.initialState || {})\n return (\n \n {props.children &&\n React.Children.map(props.children, child => {\n return child && React.isValidElement(child)\n ? React.cloneElement(child, {\n show,\n setShow,\n fullWidth: props.fullWidth,\n hasContentAbove: props.hasContentAbove,\n })\n : child\n })}\n \n )\n}\nToolbar.propTypes = {\n initialState: PropTypes.object,\n fullWidth: PropTypes.bool,\n children: PropTypes.node,\n noMargin: PropTypes.bool,\n hasContentAbove: PropTypes.bool,\n}\n\nToolbar.Controls = props => {\n const { show, setShow, unique, fullWidth, hasContentAbove, fontSize } = props\n const hasActive = Object.values(show).includes(true)\n return (\n \n {props.children &&\n React.Children.map(props.children, child => {\n return child && React.isValidElement(child)\n ? React.cloneElement(child, {\n show,\n setShow,\n unique,\n fullWidth,\n fontSize,\n })\n : child\n })}\n \n )\n}\nToolbar.Controls.displayName = 'Toolbar.Controls'\nToolbar.Controls.propTypes = {\n show: PropTypes.object,\n setShow: PropTypes.func,\n unique: PropTypes.bool,\n fullWidth: PropTypes.bool,\n children: PropTypes.node,\n hasContentAbove: PropTypes.bool,\n fontSize: PropTypes.string,\n}\n\nToolbar.Element = props => {\n const {\n show,\n setShow,\n unique,\n contentId,\n icon,\n fullWidth,\n badge,\n fontSize,\n children,\n } = props\n const active = !!show[contentId]\n const toggle = () => {\n if (props.action) {\n props.action()\n }\n if (props.contentId) {\n if (unique) {\n setShow({ [contentId]: !show[contentId] })\n } else {\n setShow({ ...show, [contentId]: !show[contentId] })\n }\n }\n }\n\n return (\n \n {icon && (\n \n {badge && badge != 0 && {props.badge}}\n \n \n )}\n {children}\n \n )\n}\nToolbar.Element.displayName = 'Toolbar.Element'\nToolbar.Element.propTypes = {\n action: PropTypes.func,\n show: PropTypes.object,\n setShow: PropTypes.func,\n unique: PropTypes.bool,\n contentId: PropTypes.string,\n icon: PropTypes.string,\n fullWidth: PropTypes.bool,\n badge: PropTypes.node,\n fontSize: PropTypes.string,\n children: PropTypes.node,\n}\n\nToolbar.Icon = props => {\n return {props.children}\n}\nToolbar.Icon.displayName = 'Toolbar.Icon'\nToolbar.Icon.propTypes = {\n children: PropTypes.node,\n fontSize: PropTypes.string,\n}\n\nToolbar.Content = props => {\n // Children have to be components, not DOM elements, so they can be cloned.\n // ... is there a test somehow?\n const { show, setShow, contentId, fullWidth } = props\n const active = !!show[contentId]\n const closeContent = () => {\n setShow({ ...show, [contentId]: false })\n }\n return (\n \n \n {props.children &&\n React.Children.map(props.children, child => {\n return child\n ? React.cloneElement(child, {\n closeContent,\n })\n : null\n })}\n \n \n )\n}\nToolbar.Content.displayName = 'Toolbar.Content'\nToolbar.Content.propTypes = {\n contentId: PropTypes.string.isRequired,\n children: PropTypes.node,\n show: PropTypes.object,\n setShow: PropTypes.func,\n fullWidth: PropTypes.bool,\n}\n\nexport default Toolbar\n\nconst TOOLBAR_ACTIVE = '#fce17e'\n\nconst ToolbarContainer = styled.div`\n margin-bottom: ${p => (p.$noMargin ? '0' : '20px')};\n`\n\nconst Tools = styled.div`\n display: flex;\n justify-content: space-around;\n border-radius: ${p =>\n p.$hasContentAbove\n ? p.$hasActive\n ? '0'\n : '0 0 10px 10px'\n : p.$hasActive\n ? '10px 10px 0 0'\n : '10px'};\n background-color: ${ColorConstants.bg.toolbar};\n padding: 5px 10px;\n width: ${p => (p.$fullWidth ? '100%' : 'fit-content')};\n`\nconst Tool = styled.div`\n color: ${p => (p.$active ? TOOLBAR_ACTIVE : 'white')};\n text-align: center;\n flex: 0 0 auto;\n padding: 0 5px;\n cursor: pointer;\n padding: ${p => (p.$fullWidth ? '0' : '0 10px')};\n`\nconst ToolIcon = styled.div`\n line-height: 1;\n font-size: ${p => (p.$fontSize ? p.$fontSize : '30px')};\n position: relative;\n span:before {\n color: inherit;\n }\n @media (max-width: 600px) {\n font-size: 24px;\n }\n`\nexport const Badge = styled.div`\n font-size: 10px;\n line-height: 13px;\n color: #fff;\n background-color: #aa0000;\n border-radius: 50%;\n height: 15px;\n width: 15px;\n text-align: center;\n position: absolute;\n top: 0;\n right: -2px;\n padding: 2px;\n`\n\nconst CollapseContent = styled.div`\n background-color: ${ColorConstants.bg.toolbarContent};\n border-radius: ${p => (p.$fullWidth ? '0 0 10px 10px' : '0 10px 10px 10px')};\n margin-bottom: 10px;\n padding: 10px 10px 5px 10px;\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { TransitionGroup, CSSTransition } from 'react-transition-group'\n\nconst Transition = props => {\n return (\n \n \n {props.children}\n \n \n )\n}\n\nTransition.propTypes = {\n transitionKey: PropTypes.string,\n transition: PropTypes.string.isRequired,\n children: PropTypes.node,\n}\n\nexport default Transition\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\n// See docs/public_activity.md\n\nconst HeaderLink = props => {\n const headerClick = () => {\n props.headerClickAction(props.log)\n }\n if (props.headerClickAction) {\n return (\n
\n {props.headerText}\n
\n )\n } else {\n return null\n }\n}\n\nHeaderLink.propTypes = {\n log: PropTypes.object.isRequired,\n headerClickAction: PropTypes.func,\n headerText: PropTypes.node,\n}\n\nexport default HeaderLink\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\n// See docs/public_activity.md\n\nconst Logger = props => (\n
\n {props.log.owner_name && by {props.log.owner_name}, }\n {props.log.at}\n
\n)\n\nLogger.propTypes = {\n log: PropTypes.object.isRequired,\n}\n\nexport default Logger\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\nimport HeaderLink from './HeaderLink'\nimport Logger from './Logger'\n\n// import styles\n\n// local constants\n\n// --------------------\n\n// See docs/public_activity.md\n\nconst EventLogEntry = props => {\n const log = props.log\n\n // The only html tag is , and rather than go through a React html parser, we'll\n // just parse them out, since we know we always start with a \n let content = log.content\n .replace(/<[/]{0,1}strong>/gi, '*!!*')\n .split('*!!*')\n .map((c, i) => {\n return i % 2 == 1 ? (\n {c}\n ) : (\n {c}\n )\n })\n\n return (\n
\n {log.event_title ? (\n \n ) : (\n
(deleted event)
\n )}\n {props.headerClickAction && log.comment && (\n
{log.comment}
\n )}\n {content}\n \n
\n )\n}\n\nEventLogEntry.propTypes = {\n log: PropTypes.object.isRequired,\n headerClickAction: PropTypes.func,\n}\n\nexport default EventLogEntry\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Board } from 'components/elements/Misc'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\n// See docs/public_activity.md\n\nconst ScoringLogEntry = props => {\n const logAction = log => {\n switch (log.action) {\n case 'record_score':\n return Recorded {log.contract}\n case 'update_score':\n return (\n \n Updated {log.contract}\n
\n (was {log.was})\n
\n )\n case 'erase_score':\n return (\n \n Erased score (was {log.was})\n \n )\n case 'flagged':\n return Flagged score\n case 'unflagged':\n return Unflagged score\n case 'not_played':\n return Marked Not played\n case 'swap':\n return (\n \n Swapped with Board {log.was}\n
\n now {log.contract}\n
\n )\n default:\n return Unknown action\n }\n }\n\n const log = props.log\n if (props.visible) {\n return (\n
\n
\n {log.board ? (\n
\n \n
\n ) : (\n
( score removed )
\n )}\n {log.ns_pair_number && (\n
\n NS {log.ns_pair_number} {props.ns_pair}
\n EW {Math.abs(log.ew_pair_number)} {props.ew_pair}\n
\n )}\n
{logAction(log)}
\n
\n
\n
\n By {props.scorer} at {log.at}\n
\n {log.comment &&
{log.comment}
}\n
\n
\n )\n } else {\n return null\n }\n}\n\nScoringLogEntry.propTypes = {\n log: PropTypes.object.isRequired,\n visible: PropTypes.bool,\n scorer: PropTypes.string,\n ns_pair: PropTypes.string,\n ew_pair: PropTypes.string,\n}\n\nexport default ScoringLogEntry\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\nimport HeaderLink from './HeaderLink'\nimport Logger from './Logger'\n\n// import styles\n\n// local constants\n\n// --------------------\n\n// See docs/public_activity.md\n\nconst UserLogEntry = props => {\n const logAction = log => {\n switch (log.action) {\n case 'create':\n return 'Created User'\n case 'update':\n return 'Updated User Attributes'\n case 'masterpoint_update':\n return 'Updated masterpoints'\n case 'read_mp_from_email':\n return 'Received partial masterpoint update by email'\n case 'spends':\n return `Spent ${log.parameters.credits} credits`\n case 'receives_refund':\n return `Received refund of ${log.parameters.credits} credits`\n case 'purchases_credits':\n return `Purchased ${log.parameters.credits} credits`\n case 'admin_credit':\n return `Received ${log.parameters.credits} credits from admin`\n case 'admin_debit':\n return `Debited ${log.parameters.credits} credits by admin`\n case 'admin_transfer_in':\n return `${log.parameters.credits} transferred in`\n case 'admin_transfer_out':\n return `${log.parameters.credits} transferred out`\n case 'spam_complaint':\n return `Reported an email from RSVP Bridge as spam; further email is blocked ${logMessage(\n log,\n )}`\n case 'spam_complaint_removed':\n return 'Spam block removed'\n case 'mail_temporary_fail':\n return 'An email sent to user was temporarily delayed'\n case 'mail_permanent_fail':\n return 'An email sent to user was rejected by user’s email provider'\n default:\n return 'Unknown Action'\n }\n }\n\n const logMessage = log => {\n return log.parameters && log.parameters.message\n ? ` (${log.parameters.message})`\n : ''\n }\n\n const displayValue = v => {\n switch (typeof v) {\n case 'object':\n return JSON.stringify(v)\n case 'boolean':\n return v ? 'true' : 'false'\n default:\n return v\n }\n }\n\n const entry = log => {\n switch (log.action) {\n case 'create':\n return entryCreate(log)\n case 'update':\n return entryUpdate(log)\n case 'spends':\n case 'receives_refund':\n return creditEntry(log)\n case 'purchases_credits':\n return purchaseEntry(log)\n case 'admin_credit':\n return adminCreditEntry(log)\n case 'admin_debit':\n return adminDebitEntry(log)\n case 'admin_transfer_in':\n case 'admin_transfer_out':\n return adminTransferEntry(log)\n default:\n return null\n }\n }\n\n const entryCreate = log => {\n let k = 0\n return (\n \n \n \n \n \n \n \n \n {Object.keys(log.parameters).map(key => (\n \n \n \n \n ))}\n \n
FieldValue
{key}{displayValue(log.parameters[key])}
\n )\n }\n\n const entryUpdate = log => {\n let k = 0\n return (\n \n \n \n \n \n \n \n \n \n {Object.keys(log.parameters)\n .filter(key => log.parameters[key][0] || log.parameters[key][1])\n .map(key => (\n \n \n \n \n \n ))}\n \n
FieldFromTo
{key}{displayValue(log.parameters[key][0])}{displayValue(log.parameters[key][1])}
\n )\n }\n\n const creditEntry = log => {\n return (\n
\n {log.parameters.source}\n
\n Payment for {log.parameters.behalf}\n {log.parameters.reason && (\n \n
\n Reason: {log.parameters.reason}\n
\n )}\n
\n Balance: {log.parameters.credit_balance} credits\n
\n )\n }\n\n const purchaseEntry = log => {\n return (\n
\n {log.parameters.credits} purchased for {log.parameters.paid}\n
\n Balance: {log.parameters.credit_balance} credits\n
\n )\n }\n\n const adminCreditEntry = log => {\n return (\n
\n Reason: {log.parameters.reason}\n
\n Balance: {log.parameters.credit_balance} credits\n
\n )\n }\n\n const adminDebitEntry = log => {\n return (\n
\n Reason: {log.parameters.reason}\n
\n Balance: {log.parameters.credit_balance} credits\n
\n )\n }\n\n const adminTransferEntry = log => {\n return (\n
\n Reason: {log.parameters.reason}\n
\n Balance: {log.parameters.credit_balance} credits\n
\n )\n }\n\n const log = props.log\n\n return (\n
\n \n
{logAction(log)}
\n \n {entry(log)}\n
\n )\n}\n\nUserLogEntry.propTypes = {\n log: PropTypes.object.isRequired,\n headerClickAction: PropTypes.func,\n}\n\nexport default UserLogEntry\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\nimport EventLogEntry from './EventLogEntry'\nimport ScoringLogEntry from './ScoringLogEntry'\nimport UserLogEntry from './UserLogEntry'\n\n// import styles\n\n// local constants\n\n// --------------------\n\n// See docs/public_activity.md\n\nconst ActivityLogEntry = props => {\n switch (props.log.trackable_type) {\n case 'User':\n return (\n \n )\n case 'Event':\n return (\n \n )\n case 'Score':\n return (\n \n )\n default:\n return
Unknown log type.
\n }\n}\n\nActivityLogEntry.propTypes = {\n log: PropTypes.object.isRequired,\n headerClickAction: PropTypes.func,\n visible: PropTypes.bool,\n scorer: PropTypes.string,\n ns_pair: PropTypes.string,\n ew_pair: PropTypes.string,\n}\n\nexport default ActivityLogEntry\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\nimport { useCurrentUserState } from 'contexts/current-user-context'\n\n// import hooks\n\n// import utilities\nimport { asCredits, pricingTierText } from 'helpers/utilities'\n\n// import common elements\nimport { Fee } from 'components/elements/Misc'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst CreditLogEntry = props => {\n const { log, showEvent, showBalance, showUser, userName } = props\n const currentUser = useCurrentUserState()\n const details = log.details\n const [date, time] = new Date(log.created_at)\n .toLocaleString()\n .split(',')\n .map(t => t.trim())\n\n const lc = log.qty < 0 ? 'negative' : 'positive'\n\n const eventFor = showEvent ? (\n details.event_id ? (\n \n ) : (\n
{details.for}
\n )\n ) : null\n\n const logEvent = () => {\n switch (log.credit_type) {\n case 'event_payment':\n return (\n
\n {eventFor}\n
Payment {details.reason && `: ${details.reason}`}
\n
\n )\n case 'event_refund':\n return (\n
\n {eventFor}\n
Refund: {details.reason}
\n
\n )\n case 'course_payment':\n return (\n
\n {details.for}\n
Payment
\n
\n )\n case 'course_refund':\n return (\n
\n {details.for}\n
Refund: {details.reason}
\n
\n )\n case 'credit_purchase':\n return (\n
\n Purchased {asCredits(log.qty)} credits for {details.paid}\n
\n )\n case 'admin_credit':\n return
Credit by Admin
\n case 'admin_debit':\n return
Debit by Admin
\n case 'admin_transfer_in':\n return
Credit transfer in
\n case 'admin_transfer_out':\n return
Credit transfer out
\n case 'monthly_invoice':\n return
Monthly invoice, {details.invoice_date}
\n case 'table_fees_billed_monthly':\n return
Table fees
\n case 'table_fees_immediate':\n return (\n
\n {eventFor}\n
\n Table fees{details.reason && : {details.reason}}\n
\n
\n )\n case 'payout':\n return (\n
\n Payout{' '}\n {currentUser.isAdmin && (\n \n print check\n \n )}\n
\n )\n case 'refunded_purchase':\n return
Refunded purchase
\n default:\n return
unknown action
\n }\n }\n\n const logDetails = () => {\n switch (log.credit_type) {\n case 'course_payment':\n return
{details.behalf}
\n case 'course_refund':\n return
{details.behalf}
\n case 'event_payment':\n return
{details.behalf}
\n case 'event_refund':\n return
{details.behalf}
\n case 'admin_credit':\n return
{details.reason}
\n case 'admin_debit':\n return
{details.reason}
\n case 'admin_transfer_in':\n case 'admin_transfer_out':\n return
{details.reason}
\n case 'table_fees_billed_monthly':\n return
for reservations-only games, billed monthly
\n case 'table_fees_immediate':\n return (\n
\n {pricingTierText(details.tier)}, {details.player_count} players @{' '}\n / player\n
\n )\n case 'payout':\n return `${[details.method, details.comment].join(': ')}`\n case 'refunded_purchase':\n return `Refund of ${details.refunded_amount}; ${details.reason}`\n case 'monthly_invoice':\n if (!details.invoice_id) {\n return 'No invoice generated'\n }\n return (\n \n View invoice\n \n )\n default:\n return null\n }\n }\n\n return (\n \n \n {date} {time}\n \n {logEvent()}\n {showUser && {userName}}\n {logDetails()}\n {asCredits(log.qty)}\n {showBalance && {asCredits(log.balance)}}\n {props.children && {props.children}}\n \n )\n}\nCreditLogEntry.propTypes = {\n log: PropTypes.object.isRequired,\n showEvent: PropTypes.bool,\n showBalance: PropTypes.bool,\n showUser: PropTypes.bool,\n userName: PropTypes.string,\n children: PropTypes.node,\n}\nCreditLogEntry.defaultProps = {\n showEvent: false,\n showBalance: false,\n showUser: false,\n}\nexport default CreditLogEntry\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Icon } from 'components/elements/Icons'\n\nconst ACBLMemberTag = props => (\n \n {props.iconFirst && }\n {props.hideText ? null : props.number}\n {!props.iconFirst && }\n
\n)\n\nACBLMemberTag.propTypes = {\n hideText: PropTypes.bool,\n iconFirst: PropTypes.bool,\n number: PropTypes.number,\n empty: PropTypes.bool,\n}\nexport default ACBLMemberTag\n","import React from 'react'\nimport { iconLegend } from 'helpers/iconLegend.js'\nimport ACBLMemberTag from './ACBLMemberTag'\n\nconst ACBLMemberLegend = () => (\n
\n
\n \n
\n {iconLegend('member-acbl-member')}\n
\n
\n
\n)\n\nexport default ACBLMemberLegend\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Icon } from 'components/elements/Icons'\n\nconst DirectorTag = props => (\n \n {props.iconFirst && }\n {props.hideText ? null : props.isDirector ? 'Director' : 'Not a director'}\n {!props.iconFirst && }\n
\n)\n\nDirectorTag.propTypes = {\n isDirector: PropTypes.bool,\n hideText: PropTypes.bool,\n empty: PropTypes.bool,\n iconFirst: PropTypes.bool,\n}\n\nexport default DirectorTag\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Icon } from 'components/elements/Icons'\n\nconst DiscordTag = props => {\n const hasDiscord = !!(props.hasDiscord || props.discordUser)\n const icon = \n\n return (\n \n {props.iconFirst && icon}\n {props.hideText ? null : props.discordUser}\n {!props.iconFirst && icon}\n \n )\n}\n\nDiscordTag.propTypes = {\n hasDiscord: PropTypes.bool,\n hideText: PropTypes.bool,\n empty: PropTypes.bool,\n iconFirst: PropTypes.bool,\n discordUser: PropTypes.string,\n}\n\nexport default DiscordTag\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Icon } from 'components/elements/Icons'\n\nconst EventFullTag = props => (\n \n {props.iconFirst && }\n {props.hideText ? null : props.full ? 'Full' : 'Not Full'}\n {!props.iconFirst && }\n \n)\n\nEventFullTag.propTypes = {\n full: PropTypes.bool,\n hideText: PropTypes.bool,\n iconFirst: PropTypes.bool,\n empty: PropTypes.bool,\n}\nexport default EventFullTag\n","import React from 'react'\n\nimport EventFullTag from './EventFullTag'\nimport { iconLegend } from 'helpers/iconLegend.js'\n\nconst EventFullLegend = () => (\n
\n
\n \n
{iconLegend(['event-full'])}
\n
\n
\n)\n\nEventFullLegend.propTypes = {}\nexport default EventFullLegend\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Icon } from 'components/elements/Icons'\n\nconst EventSignupStatusTag = props => (\n \n {props.iconFirst && }\n {props.hideText ? null : props.open ? 'Signups Open' : 'Signups Closed'}\n {!props.iconFirst && }\n \n)\n\nEventSignupStatusTag.propTypes = {\n open: PropTypes.bool,\n iconFirst: PropTypes.bool,\n hideText: PropTypes.bool,\n empty: PropTypes.bool,\n}\n\nexport default EventSignupStatusTag\n","import React from 'react'\n\nimport EventSignupStatusTag from './EventSignupStatusTag'\nimport { iconLegend } from 'helpers/iconLegend.js'\n\nconst EventSignupStatusLegend = () => (\n
\n
\n \n
\n {iconLegend(['event-signup-status', 'open'])}\n
\n
\n\n
\n \n
\n {iconLegend(['event-signup-status', 'closed'])}\n
\n
\n
\n)\n\nexport default EventSignupStatusLegend\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Icon } from 'components/elements/Icons'\n\nconst TableCountTag = props => {\n const text = () => {\n if (props.text) {\n return props.text\n }\n let tableCount\n let playing = props.playerCount\n\n let tables = parseInt(playing / 4)\n let fraction = playing - tables * 4\n\n switch (fraction) {\n case 1:\n tableCount = `${tables}¼`\n break\n\n case 2:\n tableCount = `${tables}½`\n break\n\n case 3:\n tableCount = `${tables}¾`\n break\n\n default:\n tableCount = `${tables}`\n break\n }\n return tableCount\n }\n\n let classes = ['tag', 'table-count-tag']\n if (props.iconFirst) {\n classes.push('left-icon')\n }\n return (\n
\n {props.iconFirst && }\n {text()}\n {'/'}\n {props.maxTables} {!props.iconFirst && }\n
\n )\n}\n\nTableCountTag.propTypes = {\n iconFirst: PropTypes.bool,\n playerCount: PropTypes.number,\n text: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxTables: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n .isRequired,\n}\n\nexport default TableCountTag\n","import React from 'react'\nimport { iconLegend } from 'helpers/iconLegend.js'\nimport TableCountTag from './TableCountTag'\n\nconst TableCountLegend = () => (\n
\n
\n \n
{iconLegend('event-table-count')}
\n
\n
\n)\n\nexport default TableCountLegend\n","import React from 'react'\n\nimport EventSignupStatusLegend from './EventSignupStatusLegend'\nimport TableCountLegend from './TableCountLegend'\nimport EventFullLegend from './EventFullLegend'\n\nconst EventTagLegends = () => (\n
\n
Signup Status
\n \n
Table Count
\n \n
Event Full
\n \n
\n)\n\nexport default EventTagLegends\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Icon } from 'components/elements/Icons'\n\nconst EventType = props => {\n if (!props.eventType) {\n return null\n }\n const eventTypeWords = props.eventType.replace('Event', '') + 's'\n\n return (\n \n {!props.noIcon && props.iconFirst && }\n {props.hideText ? null : eventTypeWords}\n {!props.noIcon && !props.iconFirst && }\n \n )\n}\n\nEventType.propTypes = {\n eventType: PropTypes.string,\n hideText: PropTypes.bool,\n iconFirst: PropTypes.bool,\n noIcon: PropTypes.bool,\n empty: PropTypes.bool,\n}\nexport default EventType\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Icon } from 'components/elements/Icons'\n\nconst GenericTag = props => (\n \n {props.iconFirst && (\n \n )}\n {props.hideText ? null : props.text}\n {!props.iconFirst && (\n \n )}\n \n)\n\nGenericTag.propTypes = {\n icon: PropTypes.string.isRequired,\n bg: PropTypes.string,\n text: PropTypes.string,\n hideText: PropTypes.bool,\n iconFirst: PropTypes.bool,\n empty: PropTypes.bool,\n}\nGenericTag.defaultProps = {\n bg: '#aaaaaa',\n}\nexport default GenericTag\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Icon } from 'components/elements/Icons'\n\nconst ManagerTag = props => (\n \n {props.iconFirst && }\n {props.hideText ? null : props.isManager ? 'Manager' : 'Not a manager'}\n {!props.iconFirst && }\n \n)\n\nManagerTag.propTypes = {\n isManager: PropTypes.bool,\n hideText: PropTypes.bool,\n empty: PropTypes.bool,\n iconFirst: PropTypes.bool,\n}\n\nexport default ManagerTag\n","import React from 'react'\nimport { iconLegend } from 'helpers/iconLegend.js'\nimport ManagerTag from './ManagerTag'\n\nconst ManagerLegend = () => (\n
\n
\n \n
{iconLegend('member-manager')}
\n
\n
\n)\n\nexport default ManagerLegend\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Icon } from 'components/elements/Icons'\n\nconst MembershipTag = props => {\n const showPriority = !props.hideText && props.priority && props.priority > 0\n const text = props.altText\n ? props.altText\n : props.status == 'permanent' && props.isCourse\n ? 'enrolled'\n : props.status\n return (\n \n {props.iconFirst && }\n {props.hideText ? null : text}\n {showPriority ? ` (${props.priority})` : null}\n {!props.iconFirst && }\n \n )\n}\n\nMembershipTag.propTypes = {\n hideText: PropTypes.bool,\n priority: PropTypes.number,\n iconFirst: PropTypes.bool,\n status: PropTypes.string,\n altText: PropTypes.string,\n isCourse: PropTypes.bool,\n}\nexport default MembershipTag\n","import React from 'react'\n\nimport MembershipTag from './MembershipTag'\nimport { iconLegend } from 'helpers/iconLegend.js'\n\nconst MembershipLegend = () => (\n
\n
\n \n
\n {iconLegend(['member-membership', 'active'])}\n
\n
\n\n
\n \n
\n {iconLegend(['member-membership', 'permanent'])}\n
\n
\n\n
\n \n
\n {iconLegend(['member-membership', 'guest'])}\n
\n
\n\n
\n \n
\n {iconLegend(['member-membership', 'inactive'])}\n
\n
\n\n
\n \n
\n {iconLegend(['member-membership', 'removed'])}\n
\n
\n
\n)\n\nexport default MembershipLegend\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Icon } from 'components/elements/Icons'\n\nconst StationaryPreferenceTag = props => (\n \n {props.iconFirst && (\n \n )}\n {props.hideText ? null : props.pref}\n {!props.iconFirst && (\n \n )}\n \n)\n\nStationaryPreferenceTag.propTypes = {\n pref: PropTypes.string,\n hideText: PropTypes.bool,\n iconFirst: PropTypes.bool,\n empty: PropTypes.bool,\n spaceBefore: PropTypes.bool,\n small: PropTypes.bool,\n}\nexport default StationaryPreferenceTag\n","import React from 'react'\n\nimport StationaryPreferenceTag from './StationaryPreferenceTag'\nimport { iconLegend } from 'helpers/iconLegend.js'\n\nconst StationaryPreferenceLegend = () => (\n
\n
\n \n
\n {iconLegend(['member-stationary-preference', 'required'])}\n
\n
\n\n
\n \n
\n {iconLegend(['member-stationary-preference', 'requested'])}\n
\n
\n\n
\n \n
\n {iconLegend(['member-stationary-preference', 'undesired'])}\n
\n
\n\n
\n \n
\n {iconLegend(['member-stationary-preference', 'indifferent'])}\n
\n
\n
\n)\n\nexport default StationaryPreferenceLegend\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Icon } from 'components/elements/Icons'\n\nconst RegularPartnerTag = props => (\n \n {props.iconFirst && }\n {props.hideText ? null : props.partnerName}\n {!props.iconFirst && }\n \n)\n\nRegularPartnerTag.propTypes = {\n hideText: PropTypes.bool,\n empty: PropTypes.bool,\n iconFirst: PropTypes.bool,\n partnerName: PropTypes.string,\n}\nexport default RegularPartnerTag\n","import React from 'react'\nimport { iconLegend } from 'helpers/iconLegend.js'\nimport RegularPartnerTag from './RegularPartnerTag'\n\nconst RegularPartnerLegend = () => (\n
\n
\n \n
\n {iconLegend('member-regular-partner')}\n
\n
\n
\n)\n\nexport default RegularPartnerLegend\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport MembershipLegend from './MembershipLegend'\nimport ACBLMemberLegend from './ACBLMemberLegend'\nimport StationaryPreferenceLegend from './StationaryPreferenceLegend'\nimport RegularPartnerLegend from './RegularPartnerLegend'\nimport ManagerLegend from './ManagerLegend'\n\nconst MemberTagLegends = props => (\n
\n
Membership
\n \n {props.includeACBL &&
ACBL Member
}\n {props.includeACBL && }\n
Stationary Preference
\n \n
Regular Partner
\n \n
Manager
\n \n
\n)\n\nexport default MemberTagLegends\n\nMemberTagLegends.propTypes = {\n includeACBL: PropTypes.bool,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Icon } from 'components/elements/Icons'\n\nconst MessageCountTag = props => {\n let classes = ['tag', 'table-count-tag']\n if (props.iconFirst) {\n classes.push('left-icon')\n }\n return (\n
\n {props.iconFirst && }\n {props.text}\n {'/'}\n {props.maxMessages} {!props.iconFirst && }\n
\n )\n}\n\nMessageCountTag.propTypes = {\n iconFirst: PropTypes.bool,\n text: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n maxMessages: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n}\nexport default MessageCountTag\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst PrivateEventTag = ({ event }) => {\n return event.visibility == 'private' ? (\n Private event\n ) : null\n}\n\nPrivateEventTag.propTypes = {\n event: PropTypes.object.isRequired,\n}\n\nconst VisibilityDisplay = styled.span`\n border-radius: 3px;\n display: inline-block;\n padding: 2px 5px 1px 4px;\n line-height: 1;\n font-size: 1rem;\n text-transform: uppercase;\n color: #ffffff;\n background-color: ${p => p.$color};\n`\n\nexport default PrivateEventTag\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\nimport { apiFindAcblNumber } from 'api/finder'\n\n// import redux, selectors, actions\n\n// import contexts\nimport { usePageState, usePageDispatch } from 'contexts/page-context'\n\n// import hooks\n\n// import utilities\nimport { THIS_MONTH, commaize } from 'helpers/utilities'\nimport { ACBL_RANK_NAMES } from 'helpers/constants'\n\n// import common elements\nimport {\n Button,\n ButtonToolbar,\n FormControl,\n ControlLabel,\n} from 'react-bootstrap'\nimport { Pane } from 'components/elements/Layout'\nimport { HelpText, Spinner } from 'components/elements/Misc'\nimport { Icon } from 'components/elements/Icons'\n\n// import components\nimport MasterpointUpdateDate from 'components/shared/MasterpointUpdateDate'\n\n// import styles\n\n// local constants\nconst SEARCH_EXACT = true\nconst SEARCH_FUZZY = false\nconst MINIMUM_TO_SEARCH = 4\n\n// --------------------\n\nconst FindAcblNumber = props => {\n const { user, assignAcblNumber } = props\n const { commonAppPane, panel, previousPanel } = usePageState()\n const { closePanel, closeAllPanels, closeCommonApp } = usePageDispatch()\n\n const [first, setFirst] = React.useState(user ? user.first_name[0] : '')\n const [last, setLast] = React.useState(user ? user.last_name : '')\n const [loading, setLoading] = React.useState(user ? true : false)\n const [received, setReceived] = React.useState(false)\n const [short, setShort] = React.useState(false)\n const [results, setResults] = React.useState(null)\n\n React.useEffect(() => {\n if (user && user.last_name) {\n const receivedInitialResults = response => {\n setResults(response.results)\n setReceived(true)\n }\n\n apiFindAcblNumber(\n user.last_name.substr(0, MINIMUM_TO_SEARCH),\n SEARCH_FUZZY,\n {\n loading: setLoading,\n success: receivedInitialResults,\n },\n )\n }\n }, [user])\n\n const receiveResults = response => {\n setResults(response.results)\n setReceived(true)\n }\n\n const clearEntries = () => {\n setReceived(false)\n setShort(false)\n setResults([])\n setFirst('')\n setLast('')\n }\n\n const handleChangeLast = e => {\n if (e.target.value.length >= MINIMUM_TO_SEARCH && !loading && !received) {\n setReceived(false)\n setLast(e.target.value)\n apiFindAcblNumber(e.target.value, SEARCH_FUZZY, {\n loading: setLoading,\n success: receiveResults,\n })\n } else if (e.target.value.length < MINIMUM_TO_SEARCH) {\n setLast(e.target.value)\n setResults([])\n setReceived(false)\n } else {\n setLast(e.target.value)\n }\n }\n\n const handleChangeFirst = e => setFirst(e.target.value)\n\n const searchExact = () => {\n setReceived(false)\n setShort(true)\n apiFindAcblNumber(last, SEARCH_EXACT, {\n loading: setLoading,\n success: receiveResults,\n })\n }\n\n const matchesSearch = result => {\n if (\n first.length > 0 &&\n !result.first_name.toLowerCase().includes(first.toLowerCase())\n ) {\n return false\n }\n return result.last_name.toLowerCase().includes(last.toLowerCase())\n }\n\n const renderResults = () => {\n let filtered = results ? results.filter(matchesSearch) : []\n\n const inactiveCounter = (v, r) => (r.paid_thru < THIS_MONTH ? v + 1 : v)\n let inactiveCount = filtered.reduce(inactiveCounter, 0)\n if (filtered.length == 0) {\n return (\n

No one matches your search. Try modifying the name fields above.

\n )\n } else {\n return (\n
\n \n {filtered.length} {filtered.length == 1 ? 'match' : 'matches'}\n {inactiveCount > 0 && (\n {inactiveCount} inactive (in muted text)\n )}\n .{short && Showing exact matches for last name only.}\n \n \n \n \n \n \n \n \n {user && }\n \n \n \n {filtered.map(result => (\n \n ))}\n \n
Last NameFirst NameACBL NumberMasterpoints / Rank
\n
\n )\n }\n }\n\n const title = user\n ? `ACBL Number Lookup for ${user.first_name} ${user.last_name}`\n : 'ACBL Number Lookup'\n const forward = commonAppPane\n ? closeCommonApp\n : previousPanel\n ? closeAllPanels\n : null\n const forwardAction = forward ? (\n
\n Close\n
\n ) : null\n let canSearchExact =\n last.length > 0 && last.length < MINIMUM_TO_SEARCH && !received\n\n return (\n \n {panel && (\n \n )}\n \n {props.children && {props.children}}\n \n Search the current ACBL Masterpoints Database. Database last updated{' '}\n \n \n \n
\n
\n Last Name\n \n
\n
\n First Name\n \n
\n
\n
\n \n \n {canSearchExact && (\n \n )}\n \n
\n\n
\n {received ? (\n loading ? (\n
\n Loading...\n
\n ) : (\n renderResults()\n )\n ) : (\n \n Enter at least {MINIMUM_TO_SEARCH} characters of a last name;\n continue typing to further refine results\n {canSearchExact ? ' or use the exact search option' : ''}.\n \n )}\n
\n
\n
\n )\n}\n\nconst AcblMember = props => {\n const { result } = props\n\n const select = () => {\n props.select(result.id)\n }\n\n return (\n <>\n THIS_MONTH ? 'strong' : 'muted'\n }`}\n >\n {result.last_name}\n {result.first_name}\n {result.id}\n {commaize(result.masterpoints, 2)}\n {props.select && (\n \n \n \n )}\n \n \n \n {result.city}, {result.state}\n \n \n {ACBL_RANK_NAMES[result.rank]}\n \n \n )\n}\n\nexport default FindAcblNumber\n\nFindAcblNumber.propTypes = {\n user: PropTypes.object,\n assignAcblNumber: PropTypes.func,\n children: PropTypes.node,\n}\n\nAcblMember.propTypes = {\n result: PropTypes.object.isRequired,\n select: PropTypes.func,\n}\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\nimport { convertPennies } from 'helpers/utilities.js'\n\n// import common elements\nimport { Button } from 'react-bootstrap'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst Charge = props => {\n const charge = props.charge\n const card = charge.card\n const [date, time] = new Date(charge.created_at)\n .toLocaleString()\n .split(',')\n .map(t => t.trim())\n\n const refund = () => {\n props.setRefundCharge(charge)\n }\n\n return (\n \n \n {date}\n
\n {time}\n \n \n {card.brand}*{card.last4}\n \n\n {charge.description}\n {convertPennies(charge.pennies)}\n \n {charge.pennies_refunded > 0\n ? convertPennies(charge.pennies_refunded)\n : ''}\n \n \n {charge.pennies > charge.pennies_refunded && (\n \n )}\n \n \n )\n}\nCharge.propTypes = {\n charge: PropTypes.object.isRequired,\n setRefundCharge: PropTypes.func.isRequired,\n selected: PropTypes.bool.isRequired,\n}\n\nexport default Charge\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\nimport { apiGetChargeHistory } from 'api/charges'\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Button } from 'react-bootstrap'\nimport { Spinner } from 'components/elements/Misc'\n\n// import components\nimport Charge from './Charge'\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst ChargeHistory = props => {\n const { charges, setCharges, chargeableType, chargeableId } = props\n const [page, setPage] = React.useState(-1)\n const [reachedEnd, setReachedEnd] = React.useState(false)\n const [loading, setLoading] = React.useState(false)\n const [hasFetched, setHasFetched] = React.useState(false)\n\n React.useEffect(() => {\n if (page >= 0) {\n apiGetChargeHistory(chargeableType, chargeableId, page, {\n loading: setLoading,\n success: response => {\n if (response.charges.length == 0) {\n setReachedEnd(true)\n } else {\n setCharges(a => [...a, ...response.charges])\n }\n setHasFetched(true)\n },\n })\n } else {\n setPage(0)\n // which will rerun the effect, but it handles our refresh function nicely, which otherwise\n // might have page already at 0\n }\n }, [page, chargeableType, chargeableId, setCharges])\n\n const refresh = () => {\n setCharges([])\n setHasFetched(false)\n setReachedEnd(false)\n setPage(0)\n }\n\n const fetchMoreCharges = () => {\n setPage(p => p + 1)\n }\n\n const retrievedIds = charges.map(m => m.id)\n const newCharges = props.additionalCharges.filter(\n l => !retrievedIds.includes(l.id),\n )\n const displayedCharges = [...newCharges, ...charges]\n\n return (\n
\n

Charge History

\n {hasFetched && (\n \n Refresh\n \n )}\n {displayedCharges.length == 0 && reachedEnd ? (\n
No charges available.
\n ) : (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n {displayedCharges.map(charge => (\n \n ))}\n \n
DateCardDescriptionAmountRefunded
\n
\n )}\n {reachedEnd ? (\n
All available charges have been retrieved.
\n ) : (\n \n Fetch{page > 0 && ' more'} charges\n \n )}\n
\n )\n}\n\nChargeHistory.propTypes = {\n chargeableType: PropTypes.string.isRequired,\n chargeableId: PropTypes.number.isRequired,\n additionalCharges: PropTypes.array,\n setRefundCharge: PropTypes.func.isRequired,\n charges: PropTypes.array.isRequired,\n setCharges: PropTypes.func.isRequired,\n selectedId: PropTypes.number,\n}\n\nChargeHistory.defaultProps = {\n additionalCharges: [],\n}\n\nexport default ChargeHistory\n","import { get, post } from 'api/rsvp_api'\n\nexport const apiGetChargeHistory = (\n chargeableType,\n chargeableId,\n page,\n controls,\n) => {\n get(\n 'getting charge history',\n `/api/charges/charge_history/${chargeableType}/${chargeableId}/${page}`,\n controls,\n )\n}\n\nexport const apiRefundCharge = (\n id,\n refund_pennies,\n credits,\n reason,\n reason_type,\n controls,\n) => {\n post(\n 'refunding charge',\n `/api/charges/${id}/refund`,\n { refund_pennies, credits, reason, reason_type },\n controls,\n )\n}\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\nimport { apiRefundCharge } from 'api/charges'\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\nimport { convertPennies } from 'helpers/utilities.js'\n\n// import common elements\nimport {\n FormGroup,\n InputGroup,\n FormControl,\n ButtonToolbar,\n Button,\n HelpBlock,\n Radio,\n} from 'react-bootstrap'\nimport { Spinner, HelpText } from 'components/elements/Misc'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst RefundCharge = props => {\n const { charge } = props\n const maxRefundPennies = charge.pennies - charge.pennies_refunded\n const [refund, setRefund] = React.useState(\n (maxRefundPennies / 100.0).toFixed(2),\n )\n const [credits, setCredits] = React.useState(0)\n const [reason, setReason] = React.useState('')\n const [reasonType, setReasonType] = React.useState('requested_by_customer')\n const [processing, setProcessing] = React.useState(false)\n\n const handleRefundChange = e => {\n setRefund(e.target.value)\n }\n\n const handleCreditsChange = e => {\n const value =\n e.target.value.length == 0\n ? ''\n : parseInt(parseFloat(e.target.value.replace(/[^.0-9]+/g, '')) * 100) /\n 100.0\n setCredits(value)\n }\n\n const handleReasonChange = e => {\n setReason(e.target.value)\n }\n\n const handleReasonTypeChange = e => {\n setReasonType(e.target.value)\n }\n\n const makeRefund = () => {\n apiRefundCharge(\n charge.id,\n parseInt(parseFloat(refund) * 100),\n credits,\n reason,\n reasonType,\n {\n loading: setProcessing,\n successMsg: `$${refund} refunded`,\n successClose: props.done,\n },\n )\n }\n\n const cancel = () => {\n props.done()\n }\n\n const refundAmountError =\n parseInt(parseFloat(refund) * 100) > maxRefundPennies\n ? 'Exceeds allowable amount'\n : null\n\n const creditsError = credits < 0 ? 'Cannot be negative' : null\n\n const reasonError = reason.length == 0 ? 'Cannot be empty' : null\n\n return (\n
\n

Make Refund

\n \n
Charge Date: {charge.created_at.toLocaleString()}
\n
\n Amount: ${convertPennies(charge.pennies)}\n {charge.pennies_refunded && (\n \n , Refunded to date: ${convertPennies(charge.pennies_refunded)}\n \n )}\n
\n {charge.description &&
{charge.description}
}\n
\n
\n
\n \n \n Refund amount:\n \n \n {refundAmountError && {refundAmountError}}\n \n
\n
\n \n \n Remove credits:\n \n \n {creditsError && {creditsError}}\n \n
\n
\n
\n
\n \n \n Reason:\n \n \n {reasonError && {reasonError}}\n \n
\n
\n \n \n Requested by customer\n \n \n Duplicate\n \n \n
\n
\n \n \n Make Refund \n \n \n \n
\n )\n}\n\nRefundCharge.propTypes = {\n charge: PropTypes.object.isRequired,\n done: PropTypes.func.isRequired,\n}\n\nexport default RefundCharge\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Pane } from 'components/elements/Layout/'\n\n// import components\nimport ChargeHistory from './ChargeHistory'\nimport RefundCharge from './RefundCharge'\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst AdminCharges = props => {\n const [refundCharge, setRefundCharge] = React.useState(null)\n const [charges, setCharges] = React.useState([])\n\n const replaceCharge = charge => {\n setCharges(charges.map(c => (c.id == charge.id ? charge : c)))\n }\n\n const doneWithRefund = response => {\n if (response && response.charge) {\n replaceCharge(response.charge)\n props.updateCreditBalance(\n response.charge.chargeable_id,\n response.credit_balance,\n )\n }\n setRefundCharge(null)\n }\n\n return (\n \n {props.closeAction && (\n \n )}\n \n\n \n {refundCharge && (\n \n )}\n \n \n \n )\n}\n\nAdminCharges.propTypes = {\n chargeableType: PropTypes.string.isRequired,\n chargeableId: PropTypes.number.isRequired,\n chargeableName: PropTypes.string.isRequired,\n closeAction: PropTypes.func.isRequired,\n updateCreditBalance: PropTypes.func.isRequired,\n}\n\nexport default AdminCharges\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\nimport { apiAdminCredit, apiAdminDebit } from 'api/credits'\nimport { apiLoadAccounts } from 'api/accounts'\n\n// import redux, selectors, actions\nimport { useSelector, useDispatch } from 'react-redux'\nimport { loadAccounts } from 'redux/actions/account'\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { ButtonToolbar, Button, FormControl } from 'react-bootstrap'\nimport { Pane, Attributes } from 'components/elements/Layout/'\nimport { Spinner } from 'components/elements/Misc'\nimport { Icon } from 'components/elements/Icons'\nimport { FormSelect } from 'components/elements/Form'\n\n// import components\nimport RbucksLog from 'components/shared/RbucksLog'\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst AdminCredits = props => {\n const accounts = useSelector(state => state.accounts)\n const reduxDispatch = useDispatch()\n const [credits, setCredits] = React.useState('')\n const [reason, setReason] = React.useState('')\n const [toFrom, setToFrom] = React.useState(0)\n const [activeButton, setActiveButton] = React.useState(null)\n const [processing, setProcessing] = React.useState(false)\n const [logs, setLogs] = React.useState([])\n const [loadingAccounts, setLoadingAccounts] = React.useState(true)\n const [loadedAccounts, setLoadedAccounts] = React.useState(false)\n const isUser = props.creditableType == 'user'\n\n React.useEffect(() => {\n const abortController = new AbortController()\n if (isUser && !loadedAccounts) {\n apiLoadAccounts({\n loading: setLoadingAccounts,\n success: () => setLoadedAccounts(true),\n successDispatch: [reduxDispatch, loadAccounts],\n signal: abortController.signal,\n })\n }\n return () => {\n abortController.abort()\n }\n }, [isUser, loadedAccounts, reduxDispatch])\n\n const accountOptions = Object.values(accounts)\n .filter(a => a.active)\n .map(a => ({\n label: a.organization\n ? `${a.organization} (${a.owner_name})`\n : a.owner_name,\n value: a.id,\n }))\n .sort((a, b) => (a.label < b.label ? -1 : a.label > b.label ? 1 : 0))\n\n accountOptions.unshift({ label: 'Admin', value: 0 })\n\n const selectCredits = e => {\n const value =\n e.target.value.length == 0\n ? ''\n : parseInt(parseFloat(e.target.value.replace(/[^.0-9]+/g, '')) * 100) /\n 100.0\n setCredits(value)\n }\n\n const handleReasonChange = e => {\n setReason(e.target.value)\n }\n\n const handleToFrom = e => setToFrom(e.target.value)\n\n const forwardAction = props.closeAll ? (\n
\n Close\n
\n ) : null\n\n const makeCredit = () => {\n setActiveButton('credit')\n apiAdminCredit(\n credits,\n reason,\n toFrom,\n props.creditableType,\n props.creditableId,\n {\n loading: setProcessing,\n successMsg: 'Credit applied.',\n success: response => {\n setLogs([response.log, ...logs])\n if (props.updateCreditBalance) {\n props.updateCreditBalance(props.creditableId, response.log.balance)\n }\n setActiveButton(null)\n },\n },\n )\n }\n\n const makeDebit = () => {\n setActiveButton('debit')\n apiAdminDebit(\n credits,\n reason,\n toFrom,\n props.creditableType,\n props.creditableId,\n {\n successMsg: 'Debit applied.',\n success: response => {\n setLogs([response.log, ...logs])\n if (props.updateCreditBalance) {\n props.updateCreditBalance(props.creditableId, response.log.balance)\n }\n setActiveButton(null)\n },\n },\n )\n }\n\n const disabled = processing || credits.length == 0 || reason.length == 0\n\n return (\n \n {props.closeAction && (\n \n )}\n \n\n \n \n \n Credits\n \n \n \n \n\n \n Reason\n \n \n \n \n\n {isUser && (\n \n To/From\n \n {loadingAccounts ? (\n \n ) : (\n \n )}\n \n \n )}\n\n \n \n \n \n \n Credit{' '}\n \n \n \n Debit \n \n \n \n \n \n \n\n \n \n )\n}\n\nAdminCredits.propTypes = {\n creditableType: PropTypes.string.isRequired,\n creditableId: PropTypes.number.isRequired,\n creditableName: PropTypes.string.isRequired,\n closeAll: PropTypes.func,\n closeAction: PropTypes.func.isRequired,\n updateCreditBalance: PropTypes.func,\n}\n\nexport default AdminCredits\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\nimport { ColorConstants } from 'helpers/colors'\n\n// import common elements\nimport {\n DateBox,\n NavigateToEvent,\n HelpText,\n ScoringProgress,\n PricingTier,\n} from 'components/elements/Misc'\nimport { EventComment, EventTimeRange } from 'components/elements/Event'\nimport { EventType, PrivateEventTag } from 'components/elements/Tags'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst EventBox = props => {\n const { event, eventId, hideCounts } = props\n\n // Sometimes the event object is something other than a real event, in which\n // case eventId will have the correct event.id .\n\n return (\n \n \n \n \n \n \n \n \n {event.club_title}\n {event.group_title}\n \n \n \n {!hideCounts && (\n \n Playing: {event.playing_count}\n {event.waiting_count > 0 && (\n Waiting: {event.waiting_count}\n )}\n {event.sub_count > 0 && (\n Can Sub: {event.sub_count}\n )}\n {event.cancelled_count > 0 && (\n Cancelled: {event.cancelled_count}\n )}\n \n )}\n\n {props.children}\n \n \n
\n {' '}\n \n
\n
\n \n {event.pricing_tier != 'rsvp' && (\n
\n \n
\n )}\n
\n \n {event.event_type != 'IndividualEvent' && (\n
\n \n
\n )}\n
\n \n \n \n
\n )\n}\n\nEventBox.propTypes = {\n event: PropTypes.object.isRequired,\n eventId: PropTypes.number,\n hideCounts: PropTypes.bool,\n children: PropTypes.node,\n}\n\nconst BoxEvent = styled.div`\n background-color: white;\n border: 1px solid #ccc;\n border-radius: 5px;\n margin-bottom: 10px;\n padding: 10px;\n display: grid;\n column-gap: 10px;\n row-gap: 5px;\n grid-template-columns: 40px min-content 1fr min-content;\n grid-template-areas: 'date event event go' 'type tier progress go';\n`\nconst BoxDate = styled.div`\n grid-area: date;\n`\nconst BoxTime = styled.div`\n margin-top: 5px;\n text-align: center;\n font-size: 70%;\n font-weight: 700;\n line-height: 1;\n`\nconst BoxInfo = styled.div`\n grid-area: event;\n`\nconst BoxTier = styled.div`\n grid-area: tier;\n`\nconst BoxProgress = styled.div`\n grid-area: progress;\n`\nconst BoxType = styled.div`\n grid-area: type;\n`\nconst BoxGo = styled.div`\n grid-area: go;\n`\nconst BoxClub = styled.div`\n font-size: 14px;\n text-transform: uppercase;\n color: ${ColorConstants.text.clubTitle};\n`\nconst BoxGroup = styled.div`\n font-size: 18px;\n font-weight: 700;\n color: ${ColorConstants.text.groupTitle};\n`\nconst BoxComment = styled.div`\n font-size: 85%;\n`\nconst Counts = styled.div`\n display: flex;\n & > div {\n margin-right: 10px;\n }\n`\n\nexport default EventBox\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\n// import apis\n\n// import redux, selectors, actions\nimport { useSelector } from 'react-redux'\nimport { getGroup, getClub } from 'redux/selectors/shared_selectors'\n\n// import contexts\n\n// import hooks\n\n// import utilities\nimport { ColorConstants } from 'helpers/colors'\n\n// import common elements\nimport { CourseIndicator } from 'components/elements/Misc'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst GroupPanelHeading = props => {\n const { groupId } = props\n const group = useSelector(state => getGroup(state, groupId))\n const club = useSelector(state =>\n getClub(state, group ? group.club_id : null),\n )\n\n return (\n \n {club ? club.title : props.clubTitle}\n \n {group ? group.title : props.groupTitle}\n \n \n \n )\n}\nGroupPanelHeading.propTypes = {\n groupId: PropTypes.number,\n compact: PropTypes.bool,\n noBorder: PropTypes.bool,\n groupTitle: PropTypes.string,\n clubTitle: PropTypes.string,\n}\n\nexport default GroupPanelHeading\n\nconst GPHContainer = styled.div`\n border-bottom: 1px solid $signup-waiting;\n padding-bottom: ${p => (p.$compact ? '0' : '5px')};\n margin-bottom: ${p => (p.$compact ? '0' : '10px')};\n border-bottom: ${p =>\n p.$noBorder ? 'none' : `1px solid ${ColorConstants.text.clubTitle}`};\n ${p => p.$compact && 'line-height: 1.2;'}\n`\nconst ClubTitle = styled.div`\n font-size: 14px;\n text-transform: uppercase;\n color: ${ColorConstants.text.clubTitle};\n`\n\nconst GroupTitle = styled.div`\n font-size: 18px;\n font-weight: 700;\n color: ${ColorConstants.text.groupTitle};\n`\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { useStripe, useElements, CardElement } from '@stripe/react-stripe-js'\nimport styled from 'styled-components'\nimport { toast } from 'react-toastify'\n\n// import apis\nimport {\n apiPurchaseCredits,\n apiPurchaseCreditsWithSavedCard,\n} from 'api/credits'\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { ButtonToolbar, Button, Checkbox } from 'react-bootstrap'\nimport { Spinner, HelpText } from 'components/elements/Misc'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\nexport default function CheckoutForm(props) {\n const { creditableType, creditableId, savedCard, fullName } = props\n const stripe = useStripe()\n const elements = useElements()\n const [canSubmit, setCanSubmit] = React.useState(false)\n const [processing, setProcessing] = React.useState(false)\n const [saveCard, setSaveCard] = React.useState(false)\n const [useSavedCard, setUseSavedCard] = React.useState(!!savedCard)\n\n const handleSubmit = async event => {\n // We don't want to let default form submission happen here,\n // which would refresh the page.\n event.preventDefault()\n\n if (!stripe || !elements) {\n // Stripe.js has not yet loaded.\n // Make sure to disable form submission until Stripe.js has loaded.\n return\n }\n\n if (processing) {\n // Was a double click\n return\n }\n setProcessing(true)\n\n const result = await stripe.createPaymentMethod({\n type: 'card',\n card: elements.getElement(CardElement),\n billing_details: {\n // Include any additional collected billing details.\n name: fullName,\n },\n })\n handlePaymentMethodResult(result)\n }\n\n const handlePaymentMethodResult = async result => {\n if (result.error) {\n setProcessing(false)\n // An error happened when collecting card details,\n // show `result.error.message` in the payment form.\n toast.error(result.error.message)\n } else {\n const paymentData = {\n creditable_type: creditableType,\n creditable_id: creditableId,\n payment_method_id: result.paymentMethod.id,\n pennies: props.pennies,\n qty: props.qty,\n save_card: saveCard\n ? {\n last4: result.paymentMethod.card.last4,\n exp_mo: result.paymentMethod.card.exp_month,\n exp_yr: result.paymentMethod.card.exp_year,\n brand: result.paymentMethod.card.brand,\n }\n : null,\n }\n apiPurchaseCredits(paymentData, {\n loading: setProcessing,\n successMsg: 'Purchase complete.',\n successClose: props.successCallback,\n })\n }\n }\n\n const handleCardChange = event => {\n if (!canSubmit && event.complete) {\n setCanSubmit(true)\n } else if (canSubmit && !event.complete) {\n setCanSubmit(false)\n }\n }\n\n const changeSaveCard = event => {\n setSaveCard(event.target.checked)\n }\n\n const enterNewCard = () => {\n setUseSavedCard(false)\n }\n\n const chargeSavedCard = () => {\n const paymentData = {\n creditable_type: creditableType,\n creditable_id: creditableId,\n pennies: props.pennies,\n qty: props.qty,\n }\n apiPurchaseCreditsWithSavedCard(paymentData, {\n loading: setProcessing,\n successMsg: 'Purchase complete.',\n successClose: props.successCallback,\n })\n }\n\n return (\n \n {useSavedCard ? (\n
\n \n Saved card: **** {savedCard.last4}, exp {savedCard.exp_mo}/\n {savedCard.exp_yr}\n \n \n \n Purchase using saved card\n \n \n \n
\n ) : (\n
\n \n
\n \n Keep card on file?\n \n
\n \n Purchase ${props.qty} R-Bucks for $\n {(props.pennies / 100.0).toFixed(2)}\n \n \n )}\n \n

\n RSVP uses Stripe{' '}\n to process payments. None of your credit card data ever touches our\n servers; all processing is handled directly by Stripe, considered one\n of the most secure payment options on the internet.\n

\n

Purchases of R-Bucks are non-refundable.

\n
\n
\n )\n}\n\nCheckoutForm.propTypes = {\n pennies: PropTypes.number.isRequired,\n qty: PropTypes.number.isRequired,\n successCallback: PropTypes.func.isRequired,\n creditableType: PropTypes.string.isRequired,\n creditableId: PropTypes.number.isRequired,\n savedCard: PropTypes.object,\n fullName: PropTypes.string.isRequired,\n}\n\nconst Label = styled.div`\n display: block;\n`\nconst CreditCardDetails = styled.div`\n padding-top: 10px;\n`\nconst CardDetailsContainer = styled.div`\n border: 2px solid #348435;\n max-width: 400px;\n padding: 10px;\n border-radius: 10px;\n background-color: white;\n margin: 20px 0;\n box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.3);\n`\n","import styled from 'styled-components'\nexport const PurchaseArea = styled.div``\nexport const QuantitySelection = styled.div`\n max-width: 400px;\n`\nexport const PaymentForm = styled.div`\n margin-top: 10px;\n`\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Button, FormGroup, InputGroup, FormControl } from 'react-bootstrap'\nimport { HelpText } from 'components/elements/Misc'\n\n// import components\nimport CheckoutForm from './CheckoutForm'\n\n// import styles\nimport { PurchaseArea, QuantitySelection, PaymentForm } from './styles'\n\n// local constants\n\n// --------------------\n\nconst MakePurchase = props => {\n const [qty, setQty] = React.useState(20)\n\n const pennies = amount => {\n if (amount < 5) {\n return amount * 130\n } else if (amount < 10) {\n return amount * 125\n } else if (amount < 20) {\n return amount * 120\n } else {\n return amount * 100\n }\n }\n\n const price = q => {\n return (pennies(q) / 100.0).toFixed(2)\n }\n\n const selectQty = e => {\n const value = e.target.value.length == 0 ? '' : parseInt(e.target.value)\n setQty(value)\n }\n\n const successfulPayment = response => {\n if (props.recordResult) {\n props.recordResult(response.log)\n }\n props.closePurchase()\n }\n\n return (\n \n \n \n
\n
\n 1-5 R-Bucks: $1.30 each\n
\n
= 11 && qty <= 19 ? 'strong' : ''}>\n 11-19 R-Bucks: $1.20 each\n
\n
\n
\n
= 6 && qty <= 10 ? 'strong' : ''}>\n 6-10 R-Bucks: $1.25 each\n
\n
= 20 ? 'strong' : ''}>\n 20+ R-Bucks: $1 each\n
\n
\n
\n \n \n Qty:\n \n Price: ${price(qty)}\n \n \n
\n \n {qty && qty > 0 ? (\n \n ) : null}\n \n
\n \n
\n
\n )\n}\n\nMakePurchase.propTypes = {\n closePurchase: PropTypes.func.isRequired,\n recordResult: PropTypes.func,\n creditableType: PropTypes.string.isRequired,\n creditableId: PropTypes.number.isRequired,\n savedCard: PropTypes.object,\n fullName: PropTypes.string.isRequired,\n}\n\nexport default MakePurchase\n","import React from 'react'\n// import packages\n\n// import apis\nimport { apiGetMasterpointDate } from 'api/finder'\n\n// import redux, selectors, actions\nimport { useSelector, useDispatch } from 'react-redux'\nimport { addHelper } from 'redux/actions/helpers'\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst MasterpointUpdateDate = () => {\n const reduxDispatch = useDispatch()\n const masterpointDate = useSelector(\n state => state.helpers,\n ).masterpoint_update_date\n\n React.useEffect(() => {\n if (!masterpointDate) {\n apiGetMasterpointDate({\n success: response =>\n reduxDispatch(\n addHelper(\n 'masterpoint_update_date',\n response.masterpoint_update_date,\n ),\n ),\n })\n }\n }, [masterpointDate, reduxDispatch])\n\n return {masterpointDate || '...'}\n}\n\nexport default MasterpointUpdateDate\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\nimport { apiDeleteMember } from 'api/members'\n\n// import redux, selectors, actions\nimport { useSelector, useDispatch } from 'react-redux'\nimport { deleteMember } from 'redux/actions/member'\nimport { getGroup } from 'redux/selectors/shared_selectors'\n\n// import contexts\nimport { useCurrentUserState } from 'contexts/current-user-context'\nimport { usePageDispatch } from 'contexts/page-context'\n\n// import hooks\nimport { useAccordion } from 'hooks/useAccordion'\nimport { useMemberRecentEvents } from 'hooks/useMemberRecentEvents'\n\n// import utilities\n\n// import common elements\nimport { Button } from 'react-bootstrap'\nimport {\n MembershipTag,\n StationaryPreferenceTag,\n RegularPartnerTag,\n ManagerTag,\n DiscordTag,\n} from 'components/elements/Tags/'\nimport { Icon } from 'components/elements/Icons'\nimport {\n ManagerNotifications,\n RecentEventsList,\n} from 'components/elements/Misc'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst MemberProfile = props => {\n const { member, user, accordionKey } = props\n const { openPanel } = usePageDispatch()\n const { Accordion } = useAccordion(accordionKey)\n const group = useSelector(state => getGroup(state, member.group_id))\n const currentUser = useCurrentUserState()\n const reduxDispatch = useDispatch()\n\n const {\n recentEvents,\n getRecentEvents,\n showRecentEvents,\n canFetchRecentEvents,\n canFetchMore,\n getMoreRecentEvents,\n } = useMemberRecentEvents({ member })\n\n const canEditProfile =\n currentUser.hasId(member.user_id) ||\n currentUser.canManageGroupId(member.group_id)\n\n const canRemoveMember =\n member.play_count === 0 && currentUser.canManageGroupId(member.group_id)\n\n const editThisProfile = () => {\n openPanel('member-profile-edit', member.id)\n }\n\n const removeMember = () => {\n apiDeleteMember(member.id, {\n successMsg: `Removed ${user.full_name} from the group.`,\n successDispatch: [reduxDispatch, deleteMember],\n })\n }\n\n return (\n <>\n \n \n {props.useNameForTitle ? (\n
{user.full_name}
\n ) : (\n
\n {group.title} {group.inactive && INACTIVE }\n {group.hidden && }\n
\n )}\n {group.default_event_type == 'PairEvent' &&\n member.regular_partner_name && (\n
\n \n
\n )}\n
\n \n \n \n \n \n \n \n
\n\n \n \n {member.stationary_preference != 'indifferent' && (\n
\n \n
\n )}\n {member.manager && (\n
\n \n
\n )}\n \n {group.discord_server_id && user.discord_user_id && (\n
\n \n
\n )}\n
\n
Playing count: {member.play_count}
\n
\n {currentUser.isAdmin && (\n
\n U: {user.id} M: {member.id} G:{' '}\n {member.group_id}\n
\n )}\n {member.perm_priority > 0 && member.status == 'permanent' && (\n
\n
Priority when signing up as a permanent member:
\n Priority {member.perm_priority}\n
\n )}\n {showRecentEvents && (\n \n )}\n
\n \n \n {canEditProfile && (\n \n )}\n {canRemoveMember && (\n \n )}\n {canFetchRecentEvents && (\n \n )}\n \n \n
\n \n )\n}\n\nMemberProfile.propTypes = {\n useNameForTitle: PropTypes.bool,\n accordionKey: PropTypes.string.isRequired,\n member: PropTypes.object.isRequired,\n user: PropTypes.object.isRequired,\n}\n\nexport default MemberProfile\n","// import packages\nimport React from 'react'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { HelpText } from 'components/elements/Misc'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst MembershipStatusCaution = () => {\n return (\n \n

Changing membership status can have propagated effects:

\n

\n Changing to Permanent (aka Enrolled) will:\n

\n
    \n
  • \n Add member to all future events in the group where\n they are not already signed up or cancelled, provided event is not\n already full.\n
  • \n
  • \n For duplicate games, if member has a regular partner\n and that partner is available, member and partner will be signed up\n together. Otherwise, member is put in ‘waiting for a\n partner’ status.{' '}\n \n Hint: assign a regular partner before changing status.\n \n
  • \n
\n

\n Changing to Inactive will:\n

\n
    \n
  • \n Erase all future signups for events in the group.\n
  • \n
  • \n For duplicate events,{' '}\n partner's signup will be erased as well.\n
  • \n
  • \n If a regular partner has been selected, the{' '}\n regular partner will be disconnected from the member.\n
  • \n
\n

\n Changing to Removed will:\n

\n
    \n
  • \n Erase all future signups for events in the group.\n
  • \n
  • \n For duplicate events,{' '}\n partner's signup will be erased as well.\n
  • \n
  • \n If a regular partner has been selected, the{' '}\n regular partner will be disconnected from the member.\n
  • \n
  • \n Remove access to the group, so they cannot view any\n past, current or future events.\n
  • \n
\n
\n )\n}\n\nexport default MembershipStatusCaution\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport Select from 'react-select'\n\n// import apis\nimport {\n apiFetchAvailableRegularPartners,\n apiUpdateMemberStatus,\n apiUpdateManager,\n apiToggleManagerAsDirector,\n apiUpdateRegularPartner,\n apiUpdateStationaryPreference,\n apiUpdatePermPriority,\n apiUpdateEstimatedMp,\n apiToggleManagerNotification,\n} from 'api/members'\n\n// import redux, selectors, actions\nimport { useSelector } from 'react-redux'\n\n// import contexts\nimport { useCurrentUserState } from 'contexts/current-user-context'\nimport { usePaneState, usePaneMemory } from 'contexts/pane-memory-context'\nimport { usePageState, usePageDispatch } from 'contexts/page-context'\n\n// import hooks\n\n// import utilities\nimport { toTitleCase, commaize } from 'helpers/utilities.js'\nimport { iconLegend } from 'helpers/iconLegend.js'\nimport { MANAGER_NOTIFICATIONS } from 'helpers/constants'\n\n// import common elements\nimport {\n Button,\n Radio,\n Checkbox,\n FormControl,\n HelpBlock,\n Collapse,\n} from 'react-bootstrap'\nimport { Pane, Attributes } from 'components/elements/Layout/'\nimport { HelpText, Spinner } from 'components/elements/Misc'\nimport { OpenCloseIcon, Icon } from 'components/elements/Icons'\nimport {\n MembershipTag,\n StationaryPreferenceTag,\n RegularPartnerTag,\n ManagerTag,\n} from 'components/elements/Tags/'\n\n// import components\nimport MembershipStatusCaution from './MembershipStatusCaution'\nimport GroupPanelHeading from 'components/shared/GroupPanelHeading'\n\n// import styles\n\n// local constants\nconst permPriorityOptions = [\n { label: 'Priority 10', value: 10 },\n { label: 'Priority 9', value: 9 },\n { label: 'Priority 8', value: 8 },\n { label: 'Priority 7', value: 7 },\n { label: 'Priority 6', value: 6 },\n { label: 'Priority 5', value: 5 },\n { label: 'Priority 4', value: 4 },\n { label: 'Priority 3', value: 3 },\n { label: 'Priority 2', value: 2 },\n { label: 'Priority 1', value: 1 },\n { label: 'Default', value: 0 },\n]\nconst permPriorityOption = member => ({\n value: member.perm_priority,\n label:\n member.perm_priority == 0 ? 'Default' : `Priority ${member.perm_priority}`,\n})\nconst regularPartnerOption = member =>\n member.regular_partner_id\n ? {\n value: member.regular_partner_id,\n label: member.regular_partner_name,\n }\n : null\n\nconst paneName = 'member-profile-edit'\n\n// --------------------\n\nconst MemberProfileEdit = props => {\n const { memberId, source, origin } = props\n const { panel, previousPanel, commonAppPane } = usePageState()\n const { closePanel, closeAllPanels } = usePageDispatch()\n const currentUser = useCurrentUserState()\n const memoryKey = `${paneName}#${memberId}`\n const { clearPaneMemory } = usePaneMemory()\n const member = useSelector(state => state.members[memberId])\n const group = useSelector(state => state.groups[member.group_id])\n const club = useSelector(state => state.clubs[group.club_id])\n const user = useSelector(state => state.users[member.user_id])\n\n const defaultEventType = group.default_event_type\n\n const [currentMember, setCurrentMember] = React.useState({\n status: member.status,\n perm_priority: member.perm_priority,\n stationary_preference: member.stationary_preference,\n manager: member.manager,\n estimated_mp_holding: member.estimated_mp_holding || '',\n regular_partner_id: member.regular_partner_id,\n regular_partner_name: member.regular_partner_name,\n })\n\n const [showDefinitions, setShowDefinitions] = usePaneState(\n memoryKey,\n 'showDefinitions',\n false,\n )\n const [showMembershipCaution, setShowMembershipCaution] =\n React.useState(false)\n const [propagateMp, setPropagateMp] = usePaneState(\n memoryKey,\n 'propagateMp',\n false,\n )\n const [availableRegularPartners, setAvailableRegularPartners] = usePaneState(\n memoryKey,\n 'availableRegularPartners',\n [],\n )\n\n const [loadingPartners, setLoadingPartners] = React.useState(false)\n const [updatingEstimatedMp, setUpdatingEstimatedMp] = React.useState(false)\n\n React.useEffect(() => {\n if (defaultEventType == 'PairEvent') {\n apiFetchAvailableRegularPartners(memberId, {\n loading: setLoadingPartners,\n success: response =>\n setAvailableRegularPartners(response.available_regular_partners),\n })\n }\n }, [memberId, defaultEventType, setAvailableRegularPartners])\n\n const isParticipating =\n member.status != 'inactive' && member.status != 'removed'\n const canManageGroup = currentUser.canControlGroup(group)\n const canManageClub = currentUser.canControlClubId(group.club_id)\n const isSelf = currentUser.hasId(member.user_id)\n const canEditManager = isParticipating && canManageGroup\n const canEditStatus = canManageGroup\n const canEditStationaryPreference = canManageGroup || isSelf\n const canEditRegularPartner = canManageGroup || isSelf\n const canEditEstimatedMasterpoints = canManageGroup\n const canPropgateEstimatedMasterpoints = canManageClub\n\n const toggleMembershipCaution = () => setShowMembershipCaution(t => !t)\n\n const toggleDefinitions = () => setShowDefinitions(t => !t)\n\n const setMember = (field, value) =>\n setCurrentMember(s => ({ ...s, [field]: value }))\n\n const handleStatusChange = e => {\n setMember('status', e.target.value)\n const successMsg = `Status for ${\n user.full_name\n } has been changed to ${toTitleCase(e.target.value)}.`\n apiUpdateMemberStatus(member.id, e.target.value, source, { successMsg })\n }\n\n const handleManagerChange = e => {\n const changed = e.target.value == 'yes'\n setMember('manager', changed)\n const successMsg = `${user.full_name} is ${\n changed ? 'is now' : 'is no longer'\n } a manager.`\n apiUpdateManager(member.id, changed, source, { successMsg })\n }\n\n const handleManagerAsDirectorToggle = () => {\n const successMsg = `${user.full_name} has been ${\n member.manager ? 'added' : 'removed '\n } as a director${member.manager ? ' to ' : ' from '}all upcoming events.`\n apiToggleManagerAsDirector(member.id, source, { successMsg })\n }\n\n const handleToggleNotification = task => {\n const updated = member.manager_notifications.includes(task)\n ? member.manager_notifications.filter(t => t != task)\n : [...member.manager_notifications, task]\n setMember('manager_notifications', updated)\n const successMsg = 'Notifications updated.'\n apiToggleManagerNotification(member.id, task, source, { successMsg })\n }\n\n const handleStationaryPreferenceChange = e => {\n setMember('stationary_preference', e.target.value)\n const successMsg = `Stationary seating preference for ${\n user.full_name\n } is now ${toTitleCase(e.target.value)}.`\n apiUpdateStationaryPreference(member.id, e.target.value, source, {\n successMsg,\n })\n }\n\n const selectRegularPartner = regularPartner => {\n setCurrentMember(s => ({\n ...s,\n regular_partner_id: regularPartner.value,\n regular_partner_name: regularPartner.label,\n }))\n const successMsg =\n regularPartner.value == ''\n ? `${user.full_name} no longer has a regular partner.`\n : `Regular partner for ${user.full_name} is now ${regularPartner.label}.`\n apiUpdateRegularPartner(member.id, regularPartner.value, source, {\n successMsg,\n })\n }\n\n const selectPermPriority = priority => {\n setMember('perm_priority', priority.value)\n const successMsg = `Signup Priority for ${user.full_name} has been changed to ${priority.value}.`\n apiUpdatePermPriority(member.id, priority.value, source, { successMsg })\n }\n\n const handleEstimatedMpChange = e => {\n let value = e.target.value\n let dotMatch = value.match(/\\./g)\n if (value == '.') {\n value = '0.'\n } else if (dotMatch && dotMatch.length > 1) {\n value = currentMember.estimated_mp_holding\n } else {\n value = value.replace(/[^0-9.]+/g, '')\n let maxLength = value.indexOf('.') + 3\n if (dotMatch && value.length > maxLength) {\n value = value.substring(0, maxLength)\n }\n }\n setMember('estimated_mp_holding', value)\n }\n\n const changePropagate = () => {\n setPropagateMp(t => !t)\n }\n\n const updateEstimatedMp = () => {\n const successMsg = `Estimated masterpoints for ${\n user.full_name\n } has been set to ${currentMember.estimated_mp_holding}${\n propagateMp ? ' and propagated through the club.' : '.'\n }`\n apiUpdateEstimatedMp(\n member.id,\n currentMember.estimated_mp_holding,\n propagateMp,\n source,\n { successMsg, loading: setUpdatingEstimatedMp },\n )\n }\n\n const refreshing = el => {\n let isRefreshing = false\n switch (el) {\n case 'estimated_mp_holding':\n isRefreshing = updatingEstimatedMp\n break\n default:\n isRefreshing = currentMember[el] != member[el]\n }\n return \n }\n\n const closePane = () => {\n clearPaneMemory(memoryKey)\n closePanel()\n }\n\n const closeAll = () => {\n clearPaneMemory(memoryKey)\n closeAllPanels()\n }\n\n const closeText = `Return to ${origin}`\n const title = (\n \n Edit Member Profile for {user.full_name}\n \n )\n const actions = [\n \n {showDefinitions ? 'Hide Icon Explanation' : 'Explain Icons'}\n ,\n ]\n const forwardAction =\n previousPanel || commonAppPane ? (\n
\n Close\n
\n ) : null\n\n // On the player Event Page, they can edit their profile in a pane, not panel\n const showReturn = panel == 'member-profile-edit'\n\n return (\n \n {showReturn && (\n \n )}\n {showReturn && }\n \n {!showReturn && (\n
\n

\n for{' '}\n \n {club.title} / {group.title}\n \n

\n
\n )}\n
\n Profile is updated instantly when you make a change.\n {user.deceased && Member is deceased.}\n \n \n \n \n Manager? {refreshing('manager')}\n \n \n {canEditManager ? (\n
\n {['yes', 'no'].map(yesNo => {\n let currentValue = member.manager ? 'yes' : 'no'\n return (\n \n \n \n \n \n )\n })}\n \n {member.manager ? 'Add member ' : 'Remove member '} as\n director\n {member.manager ? ' to ' : ' from '}all upcoming events\n \n
\n ) : (\n \n )}\n \n
\n
\n\n {member.manager && (\n \n \n Notifications\n \n Select the email notifications to be sent to this manager.{' '}\n Note: pending member requests are only sent\n to the club manager, once per day.\n \n \n \n {Object.entries(MANAGER_NOTIFICATIONS).map(([value, label]) => (\n handleToggleNotification(value)}\n >\n
\n \n
\n
{label}
\n \n ))}\n
\n
\n )}\n\n \n \n Membership {refreshing('status')}\n \n \n {canEditStatus ? (\n
\n {['active', 'permanent', 'guest', 'inactive', 'removed'].map(\n status => {\n return (\n \n \n \n \n )\n },\n )}\n
\n \n {' '}\n Caution...read me first!\n \n \n
\n \n
\n
\n
\n
\n ) : (\n \n )}\n
\n
\n\n {member.status == 'permanent' && (\n \n Signup Priority\n \n {canEditStatus ? (\n \n ) : (\n
{permPriorityOption(currentMember).label}
\n )}\n \n
\n
\n )}\n\n {isParticipating && (\n \n \n Stationary Preference {refreshing('stationary_preference')}\n \n Changing your preference here will not change\n any existing signups.\n \n \n \n {canEditStationaryPreference ? (\n ['required', 'requested', 'undesired', 'indifferent'].map(\n stationary_preference => {\n return (\n \n \n \n \n )\n },\n )\n ) : (\n
\n \n \n
\n )}\n
\n
\n )}\n\n {group.default_event_type == 'PairEvent' && isParticipating && (\n \n \n Regular Partner {refreshing('regular_partner_id')}\n \n \n {canEditRegularPartner ? (\n loadingPartners ? (\n 'Loading...'\n ) : (\n
\n \n \n
\n )\n ) : (\n \n )}\n \n
\n
\n )}\n\n {group.award_type != 'none' && canEditEstimatedMasterpoints && (\n \n \n Estimated Masterpoints {refreshing('estimated_mp_holding')}\n \n \n \n \n ACBL Recorded Masterpoints: {commaize(user.mp_holding, 2)}\n \n {canPropgateEstimatedMasterpoints && (\n \n Propagate value throughout {club.title}\n \n )}\n \n Update Estimated MP\n \n \n This value will override the master point holding for the user{' '}\n \n but only if it is greater than the user's actual\n masterpoint holding.\n \n \n \n \n )}\n {group.award_type != 'none' &&\n !canEditEstimatedMasterpoints &&\n member.estimated_mp_holding > 0 && (\n \n Estimated Masterpoints\n \n {member.estimated_mp_holding}\n \n This value will override the master point holding for the\n user{' '}\n \n but only if it is greater than the user's actual\n masterpoint holding.\n \n \n \n \n )}\n
\n {!canManageGroup ? (\n

\n Contact your group manager to make changes you cannot make here.\n

\n ) : null}\n
\n
\n )\n}\n\nconst Definition = props => {\n if (props.show) {\n const text = props.keys ? iconLegend(props.keys) : props.children\n return
{text}
\n } else {\n return null\n }\n}\n\nMemberProfileEdit.propTypes = {\n memberId: PropTypes.number.isRequired,\n source: PropTypes.string,\n origin: PropTypes.string,\n}\n\nDefinition.propTypes = {\n show: PropTypes.bool,\n keys: PropTypes.array,\n children: PropTypes.node,\n}\n\nexport default MemberProfileEdit\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\nimport { useSelector } from 'react-redux'\nimport { getUser } from 'redux/selectors/shared_selectors'\n\n// import contexts\nimport { useCurrentUserState } from 'contexts/current-user-context'\nimport { usePageDispatch } from 'contexts/page-context'\n\n// import hooks\nimport { useAccordion } from 'hooks/useAccordion'\n\n// import utilities\nimport { pluralize } from 'helpers/utilities'\n\n// import common elements\nimport { Button } from 'react-bootstrap'\nimport { MemberTagLegends } from 'components/elements/Tags/'\nimport { Pane } from 'components/elements/Layout'\nimport { HelpText, ClubTitle } from 'components/elements/Misc'\nimport { Icon } from 'components/elements/Icons'\n\n// import components\nimport MemberProfile from './MemberProfile'\n\n// import styles\n\n// local constants\nconst paneName = 'member-profiles'\nconst accordionKey = `${paneName}_accordionKey`\n// --------------------\n\nconst MemberProfiles = props => {\n const { userId, closeAll, omitHelp, origin } = props\n const { closePanel } = usePageDispatch()\n const { Accordion } = useAccordion(accordionKey)\n const currentUser = useCurrentUserState()\n const user = useSelector(state => getUser(state, userId))\n const clubs = useSelector(state => state.clubs)\n const groups = useSelector(state => state.groups)\n const members = useSelector(state => state.members)\n\n const inactiveGroupCount = Object.values(members).filter(\n m => m.user_id == userId && groups[m.group_id].inactive,\n ).length\n const deactivatedGroupCount = Object.values(members).filter(\n m => m.user_id == userId && !groups[m.group_id].account_active,\n ).length\n\n const [showMemberTagLegend, setShowMemberTagLegend] = React.useState(false)\n const [showInactive, setShowInactive] = React.useState(false)\n const [showDeactivatedAccounts, setShowDeactivatedAccounts] =\n React.useState(false)\n\n const sortedMembers = Object.values(members)\n .filter(m => m.user_id == userId)\n .filter(m => (showInactive ? true : !groups[m.group_id].inactive))\n .filter(m =>\n showDeactivatedAccounts ? true : groups[m.group_id].account_active,\n )\n .sort((aMember, bMember) => {\n const aGroup = groups[aMember.group_id]\n const bGroup = groups[bMember.group_id]\n const aClub = clubs[aGroup.club_id]\n const bClub = clubs[bGroup.club_id]\n return aClub.title < bClub.title\n ? -1\n : aClub.title > bClub.title\n ? 1\n : !aGroup.inactive && bGroup.inactive\n ? -1\n : aGroup.inactive && !bGroup.inactive\n ? 1\n : aGroup.sort_order < bGroup.sort_order\n ? -1\n : aGroup.sort_order > bGroup.sort_order\n ? 1\n : aGroup.title < bGroup.title\n ? -1\n : aGroup.title > bGroup.title\n ? 1\n : 0\n })\n\n const toggleMemberLegends = () => setShowMemberTagLegend(t => !t)\n const toggleInactive = () => setShowInactive(t => !t)\n const toggleDeactivated = () => setShowDeactivatedAccounts(t => !t)\n\n const actions = []\n actions.push(\n \n {showInactive\n ? 'Hide Inactive Groups'\n : `Include ${pluralize(inactiveGroupCount, 'Inactive Group')}`}\n ,\n )\n\n if (currentUser.isAdmin) {\n actions.push(\n \n {showDeactivatedAccounts\n ? 'Hide Deactivated Accounts'\n : `Include ${pluralize(deactivatedGroupCount, 'Deactivated Group')}`}\n ,\n )\n }\n actions.push(\n \n {showMemberTagLegend ? 'Hide Icon Explanation' : 'Explain Icons'}\n ,\n )\n\n const title = user\n ? `Member Profiles for ${user.full_name}`\n : 'Member Profiles'\n const closeText = origin ? `Return to ${origin}` : 'Return'\n const forwardAction = closeAll ? (\n
\n Close\n
\n ) : null\n\n let currentClubId = 0\n const memberRows = []\n for (const member of sortedMembers) {\n if (groups[member.group_id].club_id != currentClubId) {\n const club = clubs[groups[member.group_id].club_id]\n memberRows.push(\n \n \n ,\n )\n currentClubId = club.id\n }\n memberRows.push(\n ,\n )\n }\n\n return (\n \n \n \n \n Your member profile affects how you participate in each group where you\n play.\n \n {showMemberTagLegend && }\n \n \n {memberRows}\n \n \n \n )\n}\n\nMemberProfiles.propTypes = {\n userId: PropTypes.number.isRequired,\n closeAll: PropTypes.func,\n omitHelp: PropTypes.bool,\n origin: PropTypes.string,\n}\n\nexport default MemberProfiles\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { BoardSet } from 'components/elements/Misc'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst BoardNumbers = props => {\n const {\n round,\n table,\n movement,\n boardsPerRound,\n hasScores,\n sectionScoreFinder,\n sectionId,\n } = props\n const boardGroup = movement.structure[round][table].board_group\n const boardSetNumber = movement.structure[round][table].board_set\n const multipleBoardSets = movement.boardSetCount > 1\n\n if (movement.phantomPair && movement.isSitout(round, table)) {\n return 'Sit Out'\n }\n\n const wrapContent = content => {\n if (multipleBoardSets) {\n return (\n \n {content}\n \n )\n } else {\n return content\n }\n }\n\n if (boardsPerRound) {\n const range = movement.boardsAtTable(round, table, boardsPerRound)\n if (!hasScores && boardsPerRound > 3) {\n let first = range[0]\n let last = range.pop()\n let content = `${movement.boardNumber(first)}-${movement.boardNumber(\n last,\n )}`\n return wrapContent(content)\n } else {\n return (\n
\n {multipleBoardSets && (\n \n )}\n
\n {range.map(b => {\n return (\n \n {movement.boardNumber(b)}\n
\n )\n })}\n
\n \n )\n }\n } else {\n return wrapContent(`Board Group ${movement.boardGroupLetter(boardGroup)}`)\n }\n}\n\nBoardNumbers.propTypes = {\n round: PropTypes.number.isRequired,\n table: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n movement: PropTypes.object,\n boardsPerRound: PropTypes.number,\n hasScores: PropTypes.bool,\n sectionScoreFinder: PropTypes.func,\n sectionId: PropTypes.number,\n}\n\nexport default BoardNumbers\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst PlayerNames = props => {\n const { pair, showingNames, pairs } = props\n\n if (showingNames) {\n if (pairs[pair]) {\n return (\n <>\n
{pairs[pair].member1_name}
\n
{pairs[pair].member2_name}
\n \n )\n } else {\n return '--'\n }\n } else {\n return null\n }\n}\n\nPlayerNames.propTypes = {\n showingNames: PropTypes.bool,\n pair: PropTypes.number.isRequired,\n pairs: PropTypes.object,\n}\n\nexport default PlayerNames\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\nimport PlayerNames from './PlayerNames'\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst PairCells = props => {\n const { round, table, movement, showingNames } = props\n const ns_pair = movement.structure[round][table]['ns_pair']\n const ew_pair = movement.structure[round][table]['ew_pair']\n const cells = []\n if (showingNames) {\n cells.push(\n \n
\n {ns_pair != movement.phantomPair && (\n
\n
NS: {ns_pair}
\n
\n \n
\n
\n )}\n {ew_pair != movement.phantomPair && (\n
\n
EW: {Math.abs(ew_pair)}
\n
\n \n
\n
\n )}\n
\n ,\n )\n } else {\n cells.push({ns_pair})\n cells.push({Math.abs(ew_pair)})\n }\n return cells\n}\n\nPairCells.propTypes = {\n round: PropTypes.number.isRequired,\n table: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n movement: PropTypes.object.isRequired,\n showingNames: PropTypes.bool,\n}\n\nexport default PairCells\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\nimport BoardNumbers from './BoardNumbers'\nimport PairCells from './PairCells'\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst ByRound = props => {\n const { movement, showingNames, sectionId } = props\n\n return (\n
\n {movement.rounds.map(round => {\n return (\n
\n \n \n \n \n \n {showingNames ? (\n \n \n \n \n \n ) : (\n \n \n \n \n \n \n )}\n \n \n {movement.tables.map(table => {\n return (\n \n \n \n \n \n )\n })}\n \n
Round {round}
TablePairsBoards
TableN/SE/WBoards
{table}\n \n
\n
\n )\n })}\n
\n )\n}\n\nByRound.propTypes = {\n sectionId: PropTypes.number,\n movement: PropTypes.object.isRequired,\n pairs: PropTypes.object,\n boardsPerRound: PropTypes.number,\n showingNames: PropTypes.bool,\n hasScores: PropTypes.bool,\n sectionScoreFinder: PropTypes.func,\n}\n\nexport default ByRound\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\nimport BoardNumbers from './BoardNumbers'\nimport PairCells from './PairCells'\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst ByTable = props => {\n const {\n movement,\n boardsPerRound,\n hasScores,\n sectionScoreFinder,\n showingNames,\n sectionId,\n } = props\n\n return (\n
\n {movement.tables.map(iTable => {\n const table = `${iTable}`\n return (\n
\n \n \n \n \n \n {showingNames ? (\n \n \n \n \n \n ) : (\n \n \n \n \n \n \n )}\n \n \n {movement.rounds.map(round => {\n return (\n \n \n \n \n \n )\n })}\n \n
Table {table}
RoundPairsBoards
RoundN/SE/WBoards
{round}\n \n
\n
\n )\n })}\n
\n )\n}\n\nByTable.propTypes = {\n sectionId: PropTypes.number,\n movement: PropTypes.object.isRequired,\n pairs: PropTypes.object,\n boardsPerRound: PropTypes.number,\n showingNames: PropTypes.bool,\n playerNames: PropTypes.func,\n hasScores: PropTypes.bool,\n sectionScoreFinder: PropTypes.func,\n}\n\nexport default ByTable\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\nimport BoardNumbers from './BoardNumbers'\nimport PlayerNames from './PlayerNames'\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst ByPair = props => {\n const {\n sectionId,\n movement,\n pairs,\n boardsPerRound,\n hasScores,\n sectionScoreFinder,\n showingNames,\n } = props\n\n return (\n
\n {movement.combinedPairs(true).map(pair => {\n let playerMovement = movement.playerMovement(pair)\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n {movement.rounds.map(round => {\n if (playerMovement[round].sitting == 'out') {\n return (\n \n \n \n \n )\n } else {\n let against = playerMovement[round].against\n let table = playerMovement[round].table\n return (\n \n \n \n \n \n \n )\n }\n })}\n \n
\n {showingNames ? (\n \n Pair {movement.pairNumber(pair)}:{' '}\n {pairs[pair] ? pairs[pair].member_names : '--'}{' '}\n \n ) : (\n Pair {movement.pairNumber(pair)}\n )}\n
RoundTableVersusBoards
{round}Sit out
{round}\n Table {playerMovement[round].table},{' '}\n {playerMovement[round].sitting == 'ns'\n ? 'N/S'\n : 'E/W'}\n \n
\n Pair {movement.pairNumber(against)}\n {showingNames && (\n
\n \n
\n )}\n
\n
\n \n
\n
\n )\n })}\n
\n )\n}\n\nByPair.propTypes = {\n movement: PropTypes.object.isRequired,\n pairs: PropTypes.object,\n boardsPerRound: PropTypes.number,\n showingNames: PropTypes.bool,\n hasScores: PropTypes.bool,\n sectionScoreFinder: PropTypes.func,\n sectionId: PropTypes.number,\n}\n\nexport default ByPair\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\nimport PairCells from './PairCells'\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst ByBoard = props => {\n const {\n movement,\n boardHasBeenPlayed,\n boardsPerRound,\n showingNames,\n boardSet,\n } = props\n\n let bye_key = 0\n\n const setText =\n movement.boardSetCount > 1 ? in Set {boardSet} : null\n\n return (\n
\n {movement.boardGroups.map(boardGroup => {\n return (\n
\n \n \n \n \n \n {showingNames ? (\n \n \n \n \n \n ) : (\n \n \n \n \n \n \n )}\n \n \n {movement.rounds.map(round => {\n let tables = movement.whereIsBoardSetGroup(\n boardSet,\n boardGroup,\n round,\n )\n if (tables.length == 0) {\n return (\n \n \n \n \n )\n } else {\n return tables.map(table => (\n \n \n \n\n {movement.isSitout(round, table) ? (\n \n ) : (\n \n )}\n \n ))\n }\n })}\n \n
\n {boardsPerRound && boardsPerRound > 0 ? (\n
\n Boards{setText}\n {movement\n .boardNumbersInGroup(boardGroup, boardsPerRound)\n .map(b => {\n return (\n \n {b}\n
\n )\n })}\n \n ) : (\n \n Board Group {movement.boardGroupLetter(boardGroup)}\n {setText}\n \n )}\n
RoundTablePairs
RoundTableN/SE/W
{round}Bye table
{round}{table}Sit Out
\n
\n )\n })}\n
\n )\n}\n\nByBoard.propTypes = {\n movement: PropTypes.object.isRequired,\n pairs: PropTypes.object,\n boardsPerRound: PropTypes.number,\n showingNames: PropTypes.bool,\n playerNames: PropTypes.func,\n hasScores: PropTypes.bool,\n scoreFinder: PropTypes.func,\n boardHasBeenPlayed: PropTypes.func,\n boardSet: PropTypes.number.isRequired,\n}\n\nexport default ByBoard\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\nimport { useListControls, START_OPEN } from 'hooks/useListControls'\n\n// import utilities\n\n// import common elements\nimport { SplitButton, MenuItem } from 'react-bootstrap'\nimport { BoardsPerRoundSelector } from 'components/elements/Event'\nimport { ListControls } from 'components/elements/Layout'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst MovementParameters = props => {\n // Used when displaying a movement, not a section_movement\n const { movement, phantom, setPhantom, boardsPerRound, setBoardsPerRound } =\n props\n\n const listControlsKey = 'generic-movement-parameters'\n useListControls(listControlsKey, START_OPEN)\n\n const phantomTitle = () => {\n return phantom == 0 ? 'None' : `Pair ${movement.pairNumber(phantom)}`\n }\n\n const boardsDescription = () => {\n const sets =\n movement.boardSetCount > 1 ? `${movement.boardSetCount} sets of ` : ''\n if (boardsPerRound > 0) {\n return (\n \n {sets}\n {movement.boardGroupCount * boardsPerRound} Boards\n \n )\n } else {\n return (\n \n {sets}\n {movement.boardGroupCount} Board Groups\n \n )\n }\n }\n\n let firstSitout, lastSitout\n if (phantom != 0) {\n let fs = movement.playingWith(phantom, 1)\n let ls = movement.playingWith(phantom, movement.lastRound)\n firstSitout = `Pair ${movement.pairNumber(fs.against)} at ${fs.table}-${fs.sitting.toUpperCase()}`\n lastSitout = `Pair ${movement.pairNumber(ls.against)} at ${ls.table}-${ls.sitting.toUpperCase()}`\n }\n\n return (\n \n \n {movement.lastRound}\n \n \n {movement.lastTable}\n \n {movement.event_type == 'PairEvent' && (\n \n {movement.ns_stationary ? '2 Winner' : '1 Winner'}\n \n )}\n\n \n \n \n\n \n {boardsDescription()}\n \n \n\n {!movement.ns_stationary && (\n \n {movement.stationaries.length > 0\n ? movement.stationaries.map(s => movement.pairNumber(s)).join(', ')\n : 'None'}\n \n )}\n\n \n \n \n None\n \n {[...movement.nsPairs(), ...movement.ewPairs()].map(pair_number => {\n const where = movement.playingWith(pair_number, 1)\n return (\n \n {movement.ns_stationary ? (\n Pair {movement.pairNumber(pair_number)}\n ) : (\n \n Pair {movement.pairNumber(pair_number)} at {where.table}-\n {where.sitting.toUpperCase()}\n \n )}\n
\n )\n })}\n \n \n\n {firstSitout && (\n \n {firstSitout}\n \n )}\n\n {lastSitout && (\n \n {lastSitout}\n \n )}\n \n )\n}\n\nMovementParameters.propTypes = {\n movement: PropTypes.object.isRequired,\n phantom: PropTypes.number,\n setPhantom: PropTypes.func.isRequired,\n boardsPerRound: PropTypes.number,\n setBoardsPerRound: PropTypes.func.isRequired,\n}\n\nexport default MovementParameters\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\nimport Movement from 'helpers/Movement'\n\n// import common elements\nimport { Tabs, Tab, Button } from 'react-bootstrap'\nimport { Pane } from 'components/elements/Layout'\nimport { BoardSet } from 'components/elements/Misc'\nimport { Icon } from 'components/elements/Icons'\n\n// import components\nimport ByRound from './ByRound'\nimport ByTable from './ByTable'\nimport ByPair from './ByPair'\nimport ByBoard from './ByBoard'\nimport MovementParameters from './MovementParameters'\n\n// import styles\n\n// local constants\nconst paneName = 'movement-display'\n\n// --------------------\n\nconst MovementDisplay = props => {\n const [phantom, setPhantom] = React.useState(props.phantom)\n const movement = new Movement({\n ...props.movement,\n phantom_pair_number: phantom,\n })\n\n const showingNames = props.pairs != null\n\n const [key, setKey] = React.useState('round')\n\n const closeText = `Return to ${props.origin}`\n\n const handleSelect = key => {\n setKey(key)\n }\n\n const boardHasBeenPlayed = b => {\n if (props.playedBoards) {\n return props.playedBoards.includes(b)\n } else {\n return false\n }\n }\n\n const closePane = () => {\n props.closeAction()\n }\n\n const closeAll = () => {\n props.closeAll()\n }\n\n let actions =\n props.movement.id && props.boardsPerRound > 0\n ? [\n \n Pair Cards\n ,\n \n Table Cards\n ,\n \n Travellers\n ,\n \n Movement Chart\n ,\n ]\n : []\n let forwardAction = props.closeAll ? (\n
\n Close\n
\n ) : null\n\n const displayParameters = {\n movement: movement,\n pairs: props.pairs,\n boardsPerRound: props.boardsPerRound,\n phantom: phantom,\n showingNames: showingNames,\n hasScores: props.hasScores,\n sectionScoreFinder: props.sectionScoreFinder,\n boardHasBeenPlayed: boardHasBeenPlayed,\n sectionId: props.sectionId,\n }\n\n // movement.title and movement.description only existing when displaying\n // a movement, rather than a section_movement\n return (\n \n {props.closeAction && (\n \n )}\n {props.showTitle && (\n \n )}\n {props.movement.title &&

{props.movement.title}

}\n\n {props.movement.description && (\n
\n {props.movement.description}\n
\n )}\n\n {props.sectionParameters || (\n \n )}\n {props.hasScores && props.sectionScoreFinder && (\n
\n
Played Board
\n
Unplayed Board
\n
\n )}\n\n \n \n \n \n\n \n \n \n\n \n \n \n\n {movement.boardSets.map(boardSet => (\n \n By{' '}\n \n \n )\n }\n >\n \n \n ))}\n \n
\n )\n}\n\nMovementDisplay.propTypes = {\n movement: PropTypes.object.isRequired,\n phantom: PropTypes.number.isRequired,\n boardsPerRound: PropTypes.number.isRequired,\n setBoardsPerRound: PropTypes.func,\n closeAction: PropTypes.func,\n closeAll: PropTypes.func,\n origin: PropTypes.string.isRequired,\n pairs: PropTypes.object,\n showTitle: PropTypes.bool,\n hasScores: PropTypes.bool,\n playedBoards: PropTypes.array,\n sectionScoreFinder: PropTypes.func,\n sectionParameters: PropTypes.object,\n sectionId: PropTypes.number,\n}\n\nMovementDisplay.defaultProps = {\n phantom: 0,\n}\n\nexport default MovementDisplay\n","import { LETTERS } from 'helpers/constants.js'\nimport Movement from 'helpers/Movement'\n\nexport default class MovementEditor extends Movement {\n allBoardSetGroups() {\n if (this.board_sets_are_identical) {\n return Array.from({ length: this.boardGroupCount }, (_, i) => i)\n } else {\n let bsgs = []\n for (let i = 1; i <= this.boardSetCount; i++) {\n for (let j = 0; j < this.boardGroupCount; j++) {\n bsgs.push(i * 100 + j)\n }\n }\n return bsgs\n }\n }\n\n boardSetGroupText(bsg) {\n let bg = this.boardGroupLetter(bsg % 100)\n let bs = bsg >= 100 ? `${Math.floor(bsg / 100)}/` : ''\n return `${bs}${bg}`\n }\n\n validPair(p) {\n return this.pairs.includes(p)\n }\n\n validBoardSet(bs) {\n return bs == parseInt(bs) && bs >= 1 && bs <= this.boardSetCount\n }\n\n validBoardGroup(bg) {\n return bg == parseInt(bg) && bg >= 0 && bg < this.boardGroupCount\n }\n\n validate() {\n let errors = []\n let t\n if (this.ns_stationary) {\n t = 1\n for (let pair of this.nsPairs()) {\n if (pair != t) {\n errors.push('N/S pairs are not numbered consecutively.')\n break\n }\n if (pair < 1 || pair > this.lastTable) {\n errors.push('One or more N/S pairs are out of range.')\n break\n }\n t++\n }\n t = -1\n for (let pair of this.ewPairs()) {\n if (pair != t) {\n errors.push('E/W pairs are not numbered consecutively.')\n break\n }\n if (pair > -1 || pair < -1 * this.lastTable) {\n errors.push('One or more E/W pairs are out of range.')\n break\n }\n t--\n }\n } else {\n t = 1\n for (let pair of this.pairs) {\n if (pair != t) {\n errors.push('Pairs are not numbered consecutively.')\n break\n }\n if (pair < 1 || pair > this.lastTable * 2) {\n errors.push('One or more pairs are out of range.')\n break\n }\n t++\n }\n }\n\n const boardGroupsInUse = this.boardGroupsInUse()\n if (Math.max(...boardGroupsInUse) > this.boardGroupCount) {\n errors.push('Some board groups are invalid.')\n }\n\n const boardSetsInUse = this.boardSetsInUse()\n if (Math.max(...boardSetsInUse) > this.boardSetCount) {\n errors.push('Some board sets are invalid.')\n }\n\n let boardPlayCounts = {}\n let pairPlayCounts = {}\n let missingPairs = false\n let missingBoards = false\n let consideredBoardSetRange = this.board_sets_are_identical\n ? [0]\n : Array.from({ length: this.boardSetCount }, (_, i) => i + 1)\n for (let bs of consideredBoardSetRange) {\n boardPlayCounts[bs] = {}\n for (let bg = 0; bg < this.boardGroupCount; bg++) {\n boardPlayCounts[bs][bg] = 0\n }\n }\n for (let p of this.nsPairs()) {\n pairPlayCounts[p] = []\n }\n for (let p of this.ewPairs()) {\n pairPlayCounts[p] = []\n }\n for (let round in this.structure) {\n for (let table in this.structure[round]) {\n let { ns_pair, ew_pair, board_group, board_set } =\n this.structure[round][table]\n\n if (\n !this.validBoardSet(board_set) ||\n !this.validBoardGroup(board_group)\n ) {\n missingBoards = true\n continue\n }\n\n if (!this.validPair(ns_pair) || !this.validPair(ew_pair)) {\n missingPairs = true\n continue\n }\n\n let bsg = this.board_sets_are_identical\n ? board_group\n : board_set * 100 + board_group\n\n pairPlayCounts[ns_pair].push(bsg)\n pairPlayCounts[ew_pair].push(bsg)\n boardPlayCounts[Math.floor(bsg / 100)][board_group] += 1\n }\n }\n if (missingPairs) {\n errors.push('One or more pairs are missing.')\n }\n if (missingBoards) {\n errors.push('One or more boards are missing.')\n }\n for (let bs in boardPlayCounts) {\n for (let bg in boardPlayCounts[bs]) {\n let count = boardPlayCounts[bs][bg]\n let bsg = bs * 100 + bg\n let bsgText = this.boardSetGroupText(bsg)\n\n if (this.board_sets_are_identical && count == 0) {\n // Non-identical boards sets could be of differing lengths\n errors.push(`Board ${bsgText} is not played.`)\n }\n if (count == 1) {\n errors.push(`Board ${bsgText} is only played once.`)\n }\n }\n }\n for (let p in pairPlayCounts) {\n let playedBoards = pairPlayCounts[p]\n let i = 0\n for (let bsg of playedBoards) {\n if (i != playedBoards.indexOf(bsg)) {\n errors.push(\n `Pair ${this.pairNumber(p)} plays board group ${this.boardSetGroupText(bsg)} more than once.`,\n )\n }\n i++\n }\n }\n\n return errors\n }\n\n addRound() {\n let newRound = {}\n for (let table = 1; table <= this.lastTable; table++) {\n newRound[table] = {\n ns_pair: this.structure[this.lastRound][table].ns_pair,\n ew_pair: this.structure[this.lastRound][table].ew_pair,\n board_group: this.structure[this.lastRound][table].board_group,\n board_set: this.structure[this.lastRound][table].board_set,\n }\n }\n this.structure[this.lastRound + 1] = newRound\n this.computeMovement()\n }\n\n removeRound() {\n delete this.structure[this.lastRound]\n this.computeMovement()\n }\n\n addTable() {\n for (let round in this.structure) {\n this.structure[round][this.lastTable + 1] = {\n ns_pair: '',\n ew_pair: '',\n board_group: '',\n board_set: '1',\n }\n }\n this.computeMovement()\n }\n\n removeTable() {\n for (let round in this.structure) {\n delete this.structure[round][this.lastTable]\n }\n this.computeMovement()\n }\n\n addboardGroup() {\n this.boardGroupCount += 1\n this.computeMovement()\n }\n\n removeboardGroup() {\n this.boardGroupCount -= 1\n for (let round in this.structure) {\n for (let table in this.structure[round]) {\n if (\n this.structure[round][table]['board_group'] >\n this.boardGroupCount - 1\n ) {\n this.structure[round][table]['board_group'] = ''\n }\n }\n }\n this.computeMovement()\n }\n\n addboardSet() {\n this.boardSetCount += 1\n this.computeMovement()\n }\n\n removeBoardSet() {\n this.boardSetCount -= 1\n for (let round in this.structure) {\n for (let table in this.structure[round]) {\n if (\n this.structure[round][table]['board_set'] >\n this.boardSetCount - 1\n ) {\n this.structure[round][table]['board_set'] = 1\n }\n }\n }\n this.computeMovement()\n }\n\n updateStructure(round, table, element, value) {\n this.structure[round][table][element] = value\n this.computeMovement()\n }\n\n updateNsStationary(value) {\n if (value != this.ns_stationary) {\n this.ns_stationary = !this.ns_stationary\n let movers\n if (this.ns_stationary) {\n // Move upper Howell numbers to ew numbers\n movers = this.pairs\n .filter(p => p > this.lastTable)\n .reduce((map, p) => {\n map[p] = -1 * (p - this.lastTable)\n return map\n }, {})\n } else {\n // Move ew numbers to upper Howell numbers\n movers = this.pairs\n .filter(p => p < 0)\n .reduce((map, p) => {\n map[p] = this.lastTable - p\n return map\n }, {})\n }\n for (let round in this.structure) {\n for (let table in this.structure[round]) {\n let { ns_pair, ew_pair } = this.structure[round][table]\n if (ns_pair && movers[ns_pair]) {\n this.structure[round][table].ns_pair = movers[ns_pair]\n }\n if (ew_pair && movers[ew_pair]) {\n this.structure[round][table].ew_pair = movers[ew_pair]\n }\n }\n }\n this.computeMovement()\n }\n }\n\n updateBoardSetsAreIdentical(value) {\n this.board_sets_are_identical = value\n }\n\n nsUp(round) {\n let current = {}\n for (let table in this.structure[round]) {\n current[table] = this.structure[round][table].ns_pair\n }\n for (let table in this.structure[round]) {\n let nextTable = table == this.lastTable ? 1 : parseInt(table) + 1\n this.structure[round][table].ns_pair = current[nextTable]\n }\n this.computeMovement()\n }\n\n nsDown(round) {\n let current = {}\n for (let table in this.structure[round]) {\n current[table] = this.structure[round][table].ns_pair\n }\n for (let table in this.structure[round]) {\n let priorTable = table == 1 ? this.lastTable : parseInt(table) - 1\n this.structure[round][table].ns_pair = current[priorTable]\n }\n this.computeMovement()\n }\n\n nsNext(round) {\n let nextRound = round == this.lastRound ? 1 : parseInt(round) + 1\n for (let table in this.structure[round]) {\n this.structure[nextRound][table].ns_pair =\n this.structure[round][table].ns_pair\n }\n this.computeMovement()\n }\n\n ewUp(round) {\n let current = {}\n for (let table in this.structure[round]) {\n current[table] = this.structure[round][table].ew_pair\n }\n for (let table in this.structure[round]) {\n let nextTable = table == this.lastTable ? 1 : parseInt(table) + 1\n this.structure[round][table].ew_pair = current[nextTable]\n }\n this.computeMovement()\n }\n\n ewDown(round) {\n let current = {}\n for (let table in this.structure[round]) {\n current[table] = this.structure[round][table].ew_pair\n }\n for (let table in this.structure[round]) {\n let priorTable = table == 1 ? this.lastTable : parseInt(table) - 1\n this.structure[round][table].ew_pair = current[priorTable]\n }\n this.computeMovement()\n }\n\n ewNext(round) {\n let nextRound = round == this.lastRound ? 1 : parseInt(round) + 1\n for (let table in this.structure[round]) {\n this.structure[nextRound][table].ew_pair =\n this.structure[round][table].ew_pair\n }\n this.computeMovement()\n }\n\n boardsUp(round) {\n let current = {}\n for (let table in this.structure[round]) {\n current[table] = [\n this.structure[round][table].board_set,\n this.structure[round][table].board_group,\n ]\n }\n for (let table in this.structure[round]) {\n let nextTable = table == this.lastTable ? 1 : parseInt(table) + 1\n let [s, g] = current[nextTable]\n this.structure[round][table].board_set = s\n this.structure[round][table].board_group = g\n }\n this.computeMovement()\n }\n\n boardsDown(round) {\n let current = {}\n for (let table in this.structure[round]) {\n current[table] = [\n this.structure[round][table].board_set,\n this.structure[round][table].board_group,\n ]\n }\n for (let table in this.structure[round]) {\n let priorTable = table == 1 ? this.lastTable : parseInt(table) - 1\n let [s, g] = current[priorTable]\n this.structure[round][table].board_set = s\n this.structure[round][table].board_group = g\n }\n this.computeMovement()\n }\n\n boardsNext(round) {\n let nextRound = round == this.lastRound ? 1 : parseInt(round) + 1\n for (let table in this.structure[round]) {\n this.structure[nextRound][table].board_group =\n this.structure[round][table].board_group\n this.structure[nextRound][table].board_set =\n this.structure[round][table].board_set\n }\n this.computeMovement()\n }\n\n boardGroupValueFromLetter(a) {\n if (a == '') return ''\n a = a.substr(-1, 1).toUpperCase()\n let i = LETTERS.indexOf(a)\n return i >= 0 && i < this.boardGroupCount ? i : ''\n }\n\n boardGroupSetsPlayedBy(pair) {\n // Note we are handling error cases as well, such as when a pair plays a board set twice in same round\n // because the pair number was entered in more than one row\n // In a valid movement, a pair plays a single board_set/board_group combination in a round\n let played = {}\n let plays\n for (let round of this.rounds) {\n played[round] = []\n for (let table in this.structure[round]) {\n let { ns_pair, ew_pair, board_group, board_set } =\n this.structure[round][table]\n plays = ns_pair == pair || ew_pair == pair\n if (plays && board_group !== '') {\n if (this.board_sets_are_identical) {\n played[round].push(board_group)\n } else {\n played[round].push(board_group + 100 * board_set)\n }\n }\n }\n }\n return played\n }\n\n pairsMetBy(pair) {\n // Note we are handling error cases as well, such as when a pair plays a board set twice in same round\n let played = {}\n let plays\n\n for (let round of this.rounds) {\n played[round] = []\n for (let table in this.structure[round]) {\n let { ns_pair, ew_pair } = this.structure[round][table]\n plays = ns_pair == pair || ew_pair == pair\n if (plays && ns_pair !== '' && ew_pair !== '') {\n if (ns_pair != pair) played[round].push(parseInt(ns_pair))\n if (ew_pair != pair) played[round].push(parseInt(ew_pair))\n }\n }\n }\n return played\n }\n\n unmetPairs(playedPairs, pair) {\n if (this.ns_stationary) {\n if (pair > 0) {\n return this.ewPairs().filter(i => !playedPairs.includes(i))\n } else {\n return this.nsPairs().filter(i => !playedPairs.includes(i))\n }\n } else {\n return this.pairs.filter(i => i != pair && !playedPairs.includes(i))\n }\n }\n\n pairsSkippingBoardGroup(boardGroup) {\n let played = []\n for (let round of this.rounds) {\n for (let table in this.structure[round]) {\n let { ns_pair, ew_pair, board_group, _board_set } =\n this.structure[round][table]\n if (board_group == boardGroup) {\n played.push(ns_pair)\n played.push(ew_pair)\n }\n }\n }\n return this.combinedPairs().filter(p => !played.includes(p))\n }\n}\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Button } from 'react-bootstrap'\nimport { Icon } from 'components/elements/Icons'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst MovementRound = props => {\n const { movement, round, updateStructure, inputFor, showModifiers, locked } =\n props\n\n const nsUp = () => {\n movement.nsUp(round)\n updateStructure()\n }\n\n const nsDown = () => {\n movement.nsDown(round)\n updateStructure()\n }\n\n const nsNext = () => {\n movement.nsNext(round)\n updateStructure()\n }\n\n const ewUp = () => {\n movement.ewUp(round)\n updateStructure()\n }\n\n const ewDown = () => {\n movement.ewDown(round)\n updateStructure()\n }\n\n const ewNext = () => {\n movement.ewNext(round)\n updateStructure()\n }\n\n const boardsUp = () => {\n movement.boardsUp(round)\n updateStructure()\n }\n\n const boardsDown = () => {\n movement.boardsDown(round)\n updateStructure()\n }\n\n const boardsNext = () => {\n movement.boardsNext(round)\n updateStructure()\n }\n\n return (\n
\n
Round {round}
\n \n {showModifiers && (\n \n \n \n \n \n \n \n \n )}\n \n {movement.tables.map(table => {\n return (\n \n \n \n \n \n {movement.boardSetCount > 1 && (\n \n )}\n \n )\n })}\n \n
Modify:\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n Table {table}\n \n {inputFor(`structure-${round}-${table}-ns_pair`, {\n hideLabel: true,\n prepend: 'N/S',\n })}\n \n {inputFor(`structure-${round}-${table}-ew_pair`, {\n hideLabel: true,\n prepend: 'E/W',\n })}\n \n {inputFor(`structure-${round}-${table}-board_group`, {\n hideLabel: true,\n prepend: 'Group',\n })}\n \n {inputFor(`structure-${round}-${table}-board_set`, {\n hideLabel: true,\n prepend: 'Set',\n })}\n
\n
\n )\n}\n\nMovementRound.propTypes = {\n round: PropTypes.number.isRequired,\n movement: PropTypes.object.isRequired,\n inputFor: PropTypes.func.isRequired,\n showModifiers: PropTypes.bool.isRequired,\n updateStructure: PropTypes.func.isRequired,\n locked: PropTypes.func.isRequired,\n}\n\nexport default MovementRound\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst MovementTable = props => {\n const { table, locked, movement, inputFor } = props\n return (\n
\n
Table {table}
\n \n \n {movement.rounds.map(round => {\n return (\n \n \n \n \n \n \n \n )\n })}\n \n
\n Round {round}\n \n {inputFor(`structure-${round}-${table}-ns_pair`, {\n hideLabel: true,\n prepend: 'N/S',\n })}\n \n {inputFor(`structure-${round}-${table}-ew_pair`, {\n hideLabel: true,\n prepend: 'E/W',\n })}\n \n {inputFor(`structure-${round}-${table}-board_group`, {\n hideLabel: true,\n prepend: 'Group',\n })}\n \n {inputFor(`structure-${round}-${table}-board_set`, {\n hideLabel: true,\n prepend: 'Set',\n })}\n
\n
\n )\n}\n\nMovementTable.propTypes = {\n table: PropTypes.number.isRequired,\n locked: PropTypes.func.isRequired,\n movement: PropTypes.object.isRequired,\n inputFor: PropTypes.func.isRequired,\n}\n\nexport default MovementTable\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Button, ButtonGroup } from 'react-bootstrap'\nimport { HelpText } from 'components/elements/Misc'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst Parameters = props => {\n const {\n source,\n movement,\n protectedRound,\n updateStructure,\n showModifiers,\n setShowModifiers,\n byRound,\n setByRound,\n } = props\n\n const modifiersVisible = () => setShowModifiers(true)\n\n const modifiersHidden = () => setShowModifiers(false)\n\n const viewByRound = () => setByRound(true)\n\n const viewByTable = () => setByRound(false)\n\n const addRound = () => {\n movement.addRound()\n updateStructure()\n }\n\n const removeRound = () => {\n movement.removeRound()\n updateStructure()\n }\n\n const addTable = () => {\n movement.addTable()\n updateStructure()\n }\n\n const removeTable = () => {\n movement.removeTable()\n updateStructure()\n }\n\n const addboardGroup = () => {\n movement.addboardGroup()\n updateStructure()\n }\n\n const removeboardGroup = () => {\n movement.removeboardGroup()\n updateStructure()\n }\n\n const addboardSet = () => {\n movement.addboardSet()\n updateStructure()\n }\n\n const removeBoardSet = () => {\n movement.removeBoardSet()\n updateStructure()\n }\n\n return (\n <>\n
Parameters
\n \n

\n Board GROUPS are the groupings of boards that are placed on tables\n during a round, e.g., Group A might be boards 1-3.\n

\n

\n Board SETS are boxes of boards, e.g., the blue boards, the green\n boards.\n

\n

\n \n The boards in each set are{' '}\n {movement.board_sets_are_identical ? 'identical' : 'different'}.\n \n

\n
\n\n
\n \n \n By Round\n \n \n By Table\n \n \n \n \n Modifiers Visible\n \n \n Modifiers Hidden\n \n \n
\n\n
\n \n \n -\n \n \n \n \n \n \n -\n \n \n \n +\n \n \n \n \n -\n \n \n \n \n \n \n -\n \n \n \n \n
\n \n )\n}\n\nParameters.propTypes = {\n source: PropTypes.string.isRequired,\n movement: PropTypes.object.isRequired,\n protectedRound: PropTypes.number.isRequired,\n updateStructure: PropTypes.func.isRequired,\n showModifiers: PropTypes.bool.isRequired,\n setShowModifiers: PropTypes.func.isRequired,\n byRound: PropTypes.bool.isRequired,\n setByRound: PropTypes.func.isRequired,\n}\n\nexport default Parameters\n","import styled from 'styled-components'\n\nexport const ElementList = styled.div`\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n gap: 3px;\n`\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { SmallPairNumber, SmallBSG } from 'components/elements/Misc'\n\n// import components\n\n// import styles\nimport { ElementList } from './styles'\n\n// local constants\n\n// --------------------\n\nconst Analysis = props => {\n const { movement } = props\n\n const pairBoardsPlayed = () => {\n let rows = []\n let key = 0\n\n for (let pair of [...movement.nsPairs(), ...movement.ewPairs()]) {\n let played = Object.values(movement.boardGroupSetsPlayedBy(pair)).flat()\n let unplayed = movement.boardGroupSets.filter(i => !played.includes(i))\n rows.push(\n \n \n \n \n \n \n {played.map((s, i) => (\n \n ))}\n \n \n \n \n {unplayed.map((s, i) => (\n \n ))}\n \n \n ,\n )\n }\n return rows\n }\n\n const pairPairsMet = () => {\n let rows = []\n let key = 0\n\n for (let pair of [...movement.nsPairs(), ...movement.ewPairs()]) {\n let played = Object.values(movement.pairsMetBy(pair)).flat()\n let duplicates = played.filter(\n (item, index) => played.indexOf(item) != index,\n )\n let unmet = movement.unmetPairs(played, pair)\n let metCount = played.length\n let unmetCount = unmet.length\n rows.push(\n \n {movement.pairNumber(pair)}\n \n \n {metCount == 0\n ? '--'\n : played.map((opp, i) => (\n \n ))}\n \n \n \n \n {unmetCount == 0\n ? '--'\n : unmet.map((p, i) => (\n \n ))}\n \n \n ,\n )\n }\n return rows\n }\n\n const boardGroupUsage = () => {\n let inUse = movement.boardSetGroupsInUse()\n let rows = []\n let tableRows = []\n for (let bs = 1; bs <= movement.boardSetCount; bs++) {\n let setRows = []\n for (let bg = 0; bg < movement.boardGroupCount; bg++) {\n let bsg = movement.board_sets_are_identical ? bg : bs * 100 + bg\n let cn = inUse[bs] && inUse[bs].includes(bg) ? 'in-use' : 'not-in-use'\n setRows.push(\n
\n {movement.boardGroupLetter(bg)}\n
,\n )\n tableRows.push(\n \n \n \n \n \n {movement.boardGroupPlays(bsg) || '--'}\n \n \n \n {movement.pairsSkippingBoardGroup(bsg).length == 0\n ? '--'\n : movement\n .pairsSkippingBoardGroup(bsg)\n .map(p => (\n \n ))}\n \n \n ,\n )\n }\n rows.push(\n
\n
\n {movement.boardSetCount > 1 &&
Set {bs}
}\n
\n
{setRows}
\n
,\n )\n }\n return (\n
\n
{rows}
\n \n \n \n \n \n \n \n \n {tableRows}\n
BoardTimes PlayedSkips Pairs
\n
\n )\n }\n\n return (\n
\n
Computed Parameters
\n {!movement.ns_stationary && (\n
\n

Stationary Pairs

\n {movement.stationaries.length == 0 &&
None
}\n {movement.stationaries.length == 1 && (\n
{movement.stationaries[0]}
\n )}\n {movement.stationaries.length > 1 && (\n
{movement.stationaries.join(', ')}
\n )}\n
\n )}\n

Board Groups in Use:

\n {boardGroupUsage()}\n\n

Pairs:

\n \n \n \n \n \n \n \n \n {pairBoardsPlayed()}\n \n \n \n \n \n \n \n {pairPairsMet()}\n
PairPlayedUnplayed
PairPairs MetPairs Unmet
\n
\n )\n}\n\nAnalysis.propTypes = {\n movement: PropTypes.object.isRequired,\n}\n\nexport default Analysis\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\nimport { useCurrentUserState } from 'contexts/current-user-context'\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { EventTypeSelector } from 'components/elements/Misc'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst Info = props => {\n const currentUser = useCurrentUserState()\n\n const { inputFor, clubOptions, eventType, setEventType, children } = props\n return (\n
\n
\n {inputFor('title', { required: true })}\n {inputFor('description')}\n {inputFor('club_id', {\n label: 'Club providing movement',\n required: true,\n select: true,\n options: clubOptions,\n })}\n
\n
\n \n {inputFor('ns_stationary', {\n checkbox: true,\n label: 'N/S is Stationary',\n help: 'If checked, movement will have 2 winners (N/S vs E/W) and pair numbers are separate for each direction.',\n })}\n {inputFor('board_sets_are_identical', {\n checkbox: true,\n label: 'Board sets are identical',\n help: 'If checked, and using multiple boards sets, the boards are the same in each board set, so Board 1 in Set 1 and Board 1 and Set 2 are all considered when determining the score for Board 1.',\n })}\n\n {currentUser.isAdmin &&\n inputFor('public', {\n checkbox: true,\n help: 'Public movements are available to all RSVP Bridge users; otherwise movement is only available to groups within the providing club.',\n })}\n {currentUser.isAdmin &&\n inputFor('preferred', {\n checkbox: true,\n help: 'Preferred movements are listed as such as appear higher in listings.',\n })}\n\n {children}\n
\n
\n )\n}\n\nInfo.propTypes = {\n inputFor: PropTypes.func.isRequired,\n clubOptions: PropTypes.array.isRequired,\n eventType: PropTypes.string.isRequired,\n setEventType: PropTypes.func.isRequired,\n children: PropTypes.node,\n}\n\nexport default Info\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { ButtonToolbar, Button, Collapse } from 'react-bootstrap'\nimport { Icon } from 'components/elements/Icons'\nimport { Spinner } from 'components/elements/Misc'\nimport { SaveWarning } from 'components/elements/Form'\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst Actions = props => {\n const {\n movement,\n hasChanged,\n updateMovement,\n resetForm,\n cancel,\n refreshing,\n showErrors,\n toggleErrors,\n receivedErrors,\n } = props\n\n let movementErrors = movement.validate()\n let valid = movementErrors.length == 0\n let unchanged = !hasChanged\n return (\n
\n \n \n Save\n \n \n {props.cancel && (\n \n )}\n \n \n {Object.keys(receivedErrors).length > 0 && (\n

\n Changes could not be saved.\n {receivedErrors.base &&\n receivedErrors.base.map((e, i) =>

{e}

)}\n

\n )}\n\n {hasChanged && !refreshing && (\n

You have unsaved changes.

\n )}\n\n {refreshing ? (\n

\n Updating...\n

\n ) : valid ? (\n

\n Movement is valid.\n

\n ) : (\n
\n

\n Movement is not valid.{' '}\n \n

\n \n
    \n {movementErrors.map((error, i) => (\n
  • \n {error}\n
  • \n ))}\n
\n
\n
\n )}\n
\n )\n}\n\nActions.propTypes = {\n movement: PropTypes.object.isRequired,\n hasChanged: PropTypes.bool,\n updateMovement: PropTypes.func,\n resetForm: PropTypes.func,\n cancel: PropTypes.func,\n refreshing: PropTypes.bool,\n showErrors: PropTypes.bool,\n toggleErrors: PropTypes.func,\n receivedErrors: PropTypes.object,\n}\n\nexport default Actions\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { toast } from 'react-toastify'\n\n// import apis\nimport { apiAddMovement, apiUpdateMovement } from 'api/movements'\nimport { apiUpdateSectionMovement } from 'api/sections'\nimport { addMovement, updateMovement } from 'redux/actions/movements'\n\n// import redux, selectors, actions\nimport { useSelector, useDispatch } from 'react-redux'\n\n// import contexts\nimport { usePaneState } from 'contexts/pane-memory-context'\n\n// import hooks\n\n// import utilities\nimport { safelyGet } from 'helpers/utilities'\nimport MovementEditor from 'helpers/MovementEditor'\n\n// import common elements\nimport { FormField } from 'components/elements/Form/'\n\n// import components\nimport MovementRound from './MovementRound'\nimport MovementTable from './MovementTable'\nimport Parameters from './Parameters'\nimport Analysis from './Analysis'\nimport Info from './Info'\nimport Actions from './Actions'\n\n// import styles\n\n// local constants\nconst decomposeFieldName = field => {\n return field.replace('structure-', '').split('-')\n}\n\n// --------------------\n\n/* Movement structure:\n id: null,\n title: '',\n description: '',\n event_type: 'PairEvent',\n club_id: defaultClubId,\n ns_stationary: true,\n board_sets_are_identical: true,\n public: true,\n preferred: true,\n structure: {\n 1: {\n 1: { ns_pair: 1, ew_pair: -1, board_set: 1, board_group: 0 },\n 2: { ns_pair: 2, ew_pair: -2, board_set: 1, board_group: 1 },\n },\n 2: {\n 1: { ns_pair: 1, ew_pair: -2, board_set: 1, board_group: 1 },\n 2: { ns_pair: 2, ew_pair: -1, board_set: 1, board_group: 0},\n },\n },\n board_group_count: 2,\n board_set_count: 1,\n*/\n\nconst MovementEdit = props => {\n const memoryKey = props.memoryKey\n const { scoreLocks, protectedRound } = props\n const canEditMeta = props.source == 'movement'\n\n const clubs = useSelector(state => state.clubs)\n\n const reduxDispatch = useDispatch()\n\n const [meta, setMeta] = usePaneState(memoryKey, 'meta', {\n title: props.movement.title,\n description: props.movement.description,\n event_type: props.movement.event_type,\n club_id: props.movement.club_id,\n public: props.movement.public,\n preferred: props.movement.preferred,\n })\n\n const [storedMovement, setStoredMovement] = usePaneState(\n memoryKey,\n 'movement',\n {\n structure: props.movement.structure,\n ns_stationary: props.movement.ns_stationary,\n board_sets_are_identical: props.movement.board_sets_are_identical,\n },\n )\n\n const movementEditor = React.useRef(new MovementEditor(props.movement))\n\n const [_originalStoredMovement, setOriginalStoredMovement] = usePaneState(\n memoryKey,\n 'originalMovement',\n {\n structure: props.movement.structure,\n ns_stationary: props.movement.ns_stationary,\n board_sets_are_identical: props.movement.board_sets_are_identical,\n },\n )\n\n const originalMovementEditor = React.useRef(\n new MovementEditor(props.movement),\n )\n\n const [receivedErrors, setReceivedErrors] = usePaneState(\n memoryKey,\n 'receivedErrors',\n {},\n )\n const [byRound, setByRound] = usePaneState(memoryKey, 'byRound', true)\n\n const [showErrors, setShowErrors] = usePaneState(\n memoryKey,\n 'showErrors',\n false,\n )\n const [showModifiers, setShowModifiers] = usePaneState(\n memoryKey,\n 'showModifiers',\n false,\n )\n\n const [refreshing, setRefreshing] = React.useState(false)\n\n const clubOptions = Object.values(clubs)\n .map(c => ({ label: c.title, value: c.id }))\n .sort((a, b) => (a.label < b.label ? -1 : a.label > b.label ? 1 : 0))\n\n const eventType = meta.event_type\n\n React.useEffect(() => {\n if (eventType == 'TeamEvent' && !movementEditor.current.ns_stationary) {\n movementEditor.current.updateNsStationary(true)\n setStoredMovement({\n structure: movementEditor.current.structure,\n ns_stationary: movementEditor.current.ns_stationary,\n board_sets_are_identical:\n movementEditor.current.board_sets_are_identical,\n })\n }\n }, [eventType, setStoredMovement, movementEditor])\n\n const toggleErrors = () => {\n setShowErrors(s => !s)\n }\n\n const setEventType = event_type => {\n setMeta({ ...meta, event_type })\n }\n\n const handleFormFieldChange = (field, value) => {\n if (isStructureField(field)) {\n let [round, table, element] = decomposeFieldName(field)\n let cleanValue\n switch (element) {\n case 'board_set':\n cleanValue = value.replace(/[^0-9]+/g, '')\n if (cleanValue != '') {\n cleanValue = parseInt(cleanValue)\n if (\n cleanValue == 0 ||\n cleanValue > movementEditor.current.boardSetCount\n ) {\n cleanValue = ''\n }\n }\n break\n case 'board_group':\n cleanValue = movementEditor.current.boardGroupValueFromLetter(value)\n break\n case 'ns_pair':\n cleanValue = value.replace(/[^0-9]+/g, '')\n if (cleanValue != '') {\n cleanValue = parseInt(cleanValue)\n }\n break\n case 'ew_pair':\n cleanValue = value.replace(/[^0-9]+/g, '')\n if (cleanValue != '') {\n cleanValue =\n parseInt(cleanValue) *\n (movementEditor.current.ns_stationary ? -1 : 1)\n }\n break\n default:\n cleanValue = value\n }\n movementEditor.current.updateStructure(round, table, element, cleanValue)\n updateStoredStructure()\n } else if (field == 'ns_stationary') {\n movementEditor.current.updateNsStationary(value)\n updateStoredStructure()\n } else if (field == 'board_sets_are_identical') {\n movementEditor.current.updateBoardSetsAreIdentical(value)\n updateStoredStructure()\n } else {\n // meta\n if (receivedErrors[field]) {\n let updatedErrors = { ...receivedErrors }\n delete updatedErrors[field]\n setReceivedErrors(updatedErrors)\n }\n setMeta({ ...meta, [field]: value })\n }\n }\n\n const updateStoredStructure = () => {\n setStoredMovement({\n structure: movementEditor.current.structure,\n ns_stationary: movementEditor.current.ns_stationary,\n board_sets_are_identical: movementEditor.current.board_sets_are_identical,\n })\n }\n\n const structureChanged = () => {\n const a = originalMovementEditor.current\n const b = movementEditor.current\n if (a.ns_stationary != b.ns_stationary) return true\n if (a.board_sets_are_identical != b.board_sets_are_identical) return true\n if (a.lastRound != b.lastRound) return true\n if (a.lastTable != b.lastTable) return true\n if (a.boardSetCount != b.boardSetCount) return true\n if (a.boardGroupCount != b.boardGroupCount) return true\n let i = 0\n for (let pair of b.pairs) {\n if (a.pairs[i] != pair) return true\n i++\n }\n for (let round in b.structure) {\n for (let table in b.structure[round]) {\n let { ns_pair, ew_pair, board_group, board_set } =\n b.structure[round][table]\n let orig = a.structure[round][table]\n if (ns_pair != orig.ns_pair) return true\n if (ew_pair != orig.ew_pair) return true\n if (board_set != orig.board_set) return true\n if (board_group != orig.board_group) return true\n }\n }\n return false\n }\n\n const hasChanged =\n meta.title != props.movement.title ||\n meta.description != props.movement.description ||\n meta.event_type != props.movement.event_type ||\n meta.club_id != props.movement.club_id ||\n meta.public != props.movement.public ||\n meta.preferred != props.movement.preferred ||\n structureChanged()\n\n const resetForm = () => {\n movementEditor.current = new MovementEditor(props.movement)\n setMeta({\n title: props.movement.title,\n description: props.movement.description,\n event_type: props.movement.event_type,\n club_id: props.movement.club_id,\n public: props.movement.public,\n preferred: props.movement.preferred,\n })\n updateStoredStructure()\n }\n\n const saveMovement = () => {\n if (props.source == 'movement') {\n if (props.movement.id) {\n apiUpdateMovement(\n props.movement.id,\n {\n title: meta.title,\n description: meta.description,\n event_type: meta.event_type,\n club_id: meta.club_id,\n public: meta.public,\n preferred: meta.preferred,\n ...storedMovement,\n },\n {\n loading: setRefreshing,\n successMsg: 'Movement updated.',\n successDispatch: [reduxDispatch, updateMovement],\n success: moveCurrentToOriginalMovement,\n error: addErrors,\n },\n )\n } else {\n apiAddMovement(\n {\n title: meta.title,\n description: meta.description,\n club_id: meta.club_id,\n public: meta.public,\n preferred: meta.preferred,\n ...storedMovement,\n },\n {\n loading: setRefreshing,\n successMsg: 'Movement added.',\n successDispatch: [reduxDispatch, addMovement],\n successClose: props.convertAddToEdit,\n error: addErrors,\n },\n )\n }\n } else {\n // Source: 'event'\n // Result is broadcast back\n apiUpdateSectionMovement(props.sectionId, storedMovement.structure, {\n loading: setRefreshing,\n successMsg: 'Movement updated.',\n error: addErrors,\n successClose: props.cancel,\n })\n }\n }\n\n const moveCurrentToOriginalMovement = response => {\n setOriginalStoredMovement(response.movement.structure)\n originalMovementEditor.current = new MovementEditor(response.movement)\n updateStoredStructure()\n }\n\n const addErrors = response => {\n if (response.errors) {\n setReceivedErrors(response.errors)\n } else {\n toast.error(response.error)\n }\n }\n\n const isStructureField = field => {\n return field.substr(0, 9) == 'structure'\n }\n\n const unrecognizedPair = number => {\n // Note that ew_pair numbers coming in here have already been converted to positive numbers and are non-blank\n let maxValidPairNumber = movementEditor.current.ns_stationary\n ? movementEditor.current.lastTable\n : movementEditor.current.lastTable * 2\n return number < 1 || number > maxValidPairNumber\n }\n\n const validationState = (field, value) => {\n let first_9 = field.substr(0, 9)\n let [round, table, element] = decomposeFieldName(field)\n let state = null\n let error = null\n switch (first_9) {\n case 'structure':\n switch (element) {\n case 'ns_pair':\n case 'ew_pair':\n if (value === '') {\n error = ''\n state = 'error'\n } else if (unrecognizedPair(value)) {\n error = 'Out of range'\n state = 'error'\n } else if (!movementEditor.current.ns_stationary) {\n let other =\n element == 'ns_pair'\n ? movementEditor.current.structure[round][table]['ew_pair']\n : movementEditor.current.structure[round][table]['ns_pair']\n if (parseInt(value) == other) {\n error = 'Same as opponent'\n state = 'error'\n }\n }\n break\n case 'board_set':\n if (value == '') {\n error = ''\n state = 'error'\n }\n // Other errors prevented in handleFormFieldChange\n break\n case 'board_group':\n if (value == '') {\n error = ''\n state = 'error'\n }\n // Other errors prevented in handleFormFieldChange\n break\n }\n break\n case 'ns_stationary':\n if (\n value === false &&\n movementEditor.current.event_type == 'TeamEvent'\n ) {\n error = 'Team movements must have N/S stationary'\n state = 'error'\n }\n break\n default:\n if (receivedErrors[field]) {\n error = receivedErrors[field].join(', ')\n state = 'error'\n }\n }\n return [state, error]\n }\n\n const locked = (r, t) => {\n return scoreLocks && scoreLocks[r] && scoreLocks[r].includes(parseInt(t))\n }\n\n const inputFor = (field, opts = {}) => {\n let current, original\n let disabled = false\n if (isStructureField(field)) {\n let [round, table, element] = decomposeFieldName(field)\n current = movementEditor.current.structure[round][table][element]\n original = safelyGet(props.movement.structure, [round, table, element])\n disabled = locked(round, table)\n if (element == 'board_group') {\n current = movementEditor.current.boardGroupLetter(current)\n original = movementEditor.current.boardGroupLetter(original)\n }\n if (element == 'ew_pair') {\n if (current != '') current = Math.abs(current)\n if (original != '') original = Math.abs(original)\n }\n } else if (field == 'ns_stationary') {\n current = movementEditor.current.ns_stationary\n original = originalMovementEditor.current.ns_stationary\n } else if (field == 'board_sets_are_identical') {\n current = movementEditor.current.board_sets_are_identical\n original = originalMovementEditor.current.board_sets_are_identical\n } else {\n current = meta[field]\n // Note that if props.movement is false, props.movement[field] will be undefined, but not an error!\n original = props.movement[field]\n if (!original && (field == 'title' || field == 'description')) {\n original == ''\n }\n }\n const [vstate, error] = validationState(field, current)\n\n return (\n \n )\n }\n\n // --------------\n // Render\n // --------------\n\n const actions = (\n \n )\n\n return (\n
\n {canEditMeta ? (\n \n {actions}\n \n ) : (\n actions\n )}\n\n
\n
\n
\n \n {byRound ? (\n
\n {movementEditor.current.rounds.map(round => (\n \n ))}\n
\n ) : (\n
\n {movementEditor.current.tables.map(table => (\n \n ))}\n
\n )}\n
\n
\n\n
\n \n
\n
\n
\n )\n}\n\nMovementEdit.propTypes = {\n sectionId: PropTypes.number,\n convertAddToEdit: PropTypes.func,\n cancel: PropTypes.func,\n scoreLocks: PropTypes.object,\n protectedRound: PropTypes.number.isRequired,\n // from either app\n memoryKey: PropTypes.string,\n movement: PropTypes.object.isRequired,\n source: PropTypes.string.isRequired,\n}\n\nMovementEdit.defaultProps = {\n protectedRound: 1,\n}\n\nexport default MovementEdit\n","import styled from 'styled-components'\n\nexport const MemberListStatus = styled.div`\n text-transform: uppercase;\n font-weight: 700;\n margin-top: 5px;\n`\n\nexport const MemberListEntry = styled.div`\n display: flex;\n line-height: 1.2;\n margin-bottom: 5px;\n`\n\nexport const ListNumber = styled.div`\n flex: 0 0 24px;\n text-align: right;\n padding-right: 8px;\n`\nexport const Captain = styled.div``\n\nexport const TeamMate = styled.div`\n margin-left: 10px;\n font-size: 85%;\n`\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\nimport { apiFetchPlayerList } from 'api/events'\n\n// import redux, selectors, actions\nimport { useDispatch } from 'react-redux'\nimport { updateUserEvent } from 'redux/actions/events.js'\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Button, Collapse } from 'react-bootstrap'\nimport { OpenCloseIcon } from 'components/elements/Icons'\nimport { Spinner } from 'components/elements/Misc'\n\n// import components\n\n// import styles\nimport {\n MemberListStatus,\n MemberListEntry,\n ListNumber,\n Captain,\n TeamMate,\n} from './styles'\n\n// local constants\n\n// --------------------\n\nconst PlayerList = props => {\n const signupList = props.event.signup_list\n const reduxDispatch = useDispatch()\n\n const [memberListOpen, setMemberListOpen] = React.useState(false)\n const [fetchingPlayerList, setFetchingPlayerList] = React.useState(false)\n const [listHasBeenFetched, setListHasBeenFetched] = React.useState(\n signupList && Object.keys(signupList).length > 0,\n )\n\n const hasSignups = signupList && Object.keys(signupList).length > 0\n\n React.useEffect(() => {\n if (signupList && Object.keys(signupList).length == 0) {\n setMemberListOpen(false)\n setListHasBeenFetched(false)\n }\n }, [signupList])\n\n const fetchPlayerList = () => {\n apiFetchPlayerList(props.event.id, {\n loading: setFetchingPlayerList,\n successDispatch: [reduxDispatch, updateUserEvent],\n success: () => {\n setListHasBeenFetched(true), setMemberListOpen(true)\n },\n })\n }\n\n const togglePlayerList = () => setMemberListOpen(t => !t)\n\n const statusWords = status => {\n let words = status\n if (props.event.event_type == 'PairEvent' && status == 'waiting') {\n words = 'waiting for partner'\n }\n return words\n }\n\n const teamList = team => {\n const members = [...team]\n const captain = members.shift()\n return (\n
\n {captain}\n {members.map((t, i) => (\n {t}\n ))}\n
\n )\n }\n\n const playerList = () => {\n if (hasSignups) {\n return (\n
\n {['playing', 'waiting', 'sub', 'cancelled'].map(status => {\n if (signupList[status]) {\n let i = 0\n return (\n
\n {statusWords(status)}\n {signupList[status].map(member => {\n i += 1\n return (\n \n {i}\n
\n {Array.isArray(member) ? teamList(member) : member}\n
\n
\n )\n })}\n
\n )\n } else {\n return null\n }\n })}\n
\n )\n } else {\n return
No members have signed up.
\n }\n }\n\n // Note that the member list is SIGNUPS, not PAIRS, so don't show if event has started\n if (props.event.scoring_progress == 'not_started') {\n return (\n
\n {listHasBeenFetched ? (\n \n ) : (\n \n )}\n {props.event.event_type == 'PairEvent' &&\n props.event.waiting_count > 0 && (\n \n ({props.event.waiting_count} looking for a partner)\n \n )}\n\n {playerList()}\n
\n )\n } else {\n return null\n }\n}\n\nPlayerList.propTypes = {\n event: PropTypes.object.isRequired,\n}\n\nexport default PlayerList\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\nimport { apiGetCreditsLog } from 'api/credits'\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Button } from 'react-bootstrap'\nimport { Spinner } from 'components/elements/Misc'\n\n// import components\nimport { CreditLogEntry } from 'components/elements/LogEntry'\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst RbucksLog = props => {\n const [page, setPage] = React.useState(-1)\n const [reachedEnd, setReachedEnd] = React.useState(false)\n const [loading, setLoading] = React.useState(false)\n const [logs, setLogs] = React.useState([])\n const [hasFetched, setHasFetched] = React.useState(false)\n const { creditableType, creditableId } = props\n\n React.useEffect(() => {\n if (page >= 0) {\n apiGetCreditsLog(creditableType, creditableId, page, {\n loading: setLoading,\n success: response => {\n if (response.logs.length == 0) {\n setReachedEnd(true)\n } else {\n setLogs(l => [...l, ...response.logs])\n }\n setHasFetched(true)\n },\n })\n } else {\n setPage(0)\n // which will rerun the effect, but it handles our refresh function nicely, which otherwise\n // might have page already at 0\n }\n }, [page, creditableId, creditableType])\n\n const refresh = () => {\n setLogs([])\n setHasFetched(false)\n setReachedEnd(false)\n setPage(0)\n }\n\n const fetchMoreLogs = () => {\n setPage(p => p + 1)\n }\n\n const retrievedIds = logs.map(m => m.id)\n const newLogs = props.additionalLogs.filter(l => !retrievedIds.includes(l.id))\n const displayedLogs = [...newLogs, ...logs]\n\n return (\n
\n

R-Bucks Log

\n {hasFetched && (\n \n Refresh\n \n )}\n {displayedLogs.length == 0 && reachedEnd ? (\n
No logs available.
\n ) : (\n
\n \n \n \n \n \n \n \n \n \n \n \n {displayedLogs.map(log => (\n \n ))}\n \n
DateEventForCreditsBalance
\n
\n )}\n {reachedEnd ? (\n
All available logs have been retrieved.
\n ) : (\n \n Fetch{page > 0 && ' more'} logs\n \n )}\n
\n )\n}\n\nRbucksLog.propTypes = {\n creditableType: PropTypes.string.isRequired,\n creditableId: PropTypes.number.isRequired,\n additionalLogs: PropTypes.array,\n}\n\nRbucksLog.defaultProps = {\n additionalLogs: [],\n}\n\nexport default RbucksLog\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\nimport { apiGetSingleUserActivity } from 'api/activities/users'\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\nimport { Button } from 'react-bootstrap'\nimport { Pane, Loading } from 'components/elements/Layout'\nimport { Icon } from 'components/elements/Icons'\n\n// import components\nimport { ActivityLogEntry } from 'components/elements/LogEntry'\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst UserActivityLog = props => {\n const [loading, setLoading] = React.useState(true)\n const [page, setPage] = React.useState(0)\n const [reachedEnd, setReachedEnd] = React.useState(false)\n const [logs, setLogs] = React.useState([])\n const userId = props.userId\n\n React.useEffect(() => {\n const abortController = new AbortController()\n\n if (userId && page >= 0) {\n apiGetSingleUserActivity(userId, page, {\n signal: abortController.signal,\n loading: setLoading,\n success: response => {\n if (response.logs.length == 0) {\n setReachedEnd(true)\n } else {\n setLogs(l => [...l, ...response.logs])\n }\n },\n })\n } else {\n setPage(0)\n }\n return () => {\n abortController.abort()\n }\n }, [page, userId])\n\n const refresh = () => {\n setLogs([])\n setReachedEnd(false)\n setPage(-1)\n }\n\n const nextPage = () => {\n setPage(p => p + 1)\n }\n\n const closePane = () => {\n props.closeAction()\n }\n\n const goToEvent = log => {\n window.location.href = `/events/${log.event_id}`\n }\n\n let title = `Activity Log for ${props.fullName}`\n let closeText = props.origin ? `Return to ${props.origin}` : 'Return'\n let forwardAction = props.closeAll ? (\n
\n Close\n
\n ) : null\n\n return (\n \n {props.closeAction && (\n \n )}\n \n {!loading && props.userId ? (\n
\n
\n {logs.length == 0 &&
No log entries retrieved.
}\n {logs.map(log => (\n \n ))}\n {reachedEnd ? (\n

No more log entries to retrieve.

\n ) : (\n
\n \n
\n )}\n
\n
\n ) : (\n \n )}\n
\n )\n}\n\nexport default UserActivityLog\n\nUserActivityLog.propTypes = {\n userId: PropTypes.number.isRequired,\n fullName: PropTypes.string.isRequired,\n closeAction: PropTypes.func.isRequired,\n origin: PropTypes.string,\n closeAll: PropTypes.func,\n}\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nimport { VisibleOrHiddenIcon } from 'components/elements/Icons'\n\nconst WithVisibility = props => {\n if (!props.show) {\n return null\n }\n\n return (\n
\n {props.title && {props.title} }\n {props.children}\n
\n )\n}\n\nWithVisibility.propTypes = {\n show: PropTypes.bool,\n visible: PropTypes.bool,\n children: PropTypes.node,\n title: PropTypes.string,\n}\n\nexport default WithVisibility\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\n\n// import redux, selectors, actions\n\n// import contexts\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nconst TitledField = props => {\n if (!props.show) {\n return null\n }\n return (\n
\n {props.title} {props.children}\n
\n )\n}\nTitledField.propTypes = {\n show: PropTypes.bool,\n title: PropTypes.string,\n children: PropTypes.node,\n}\n\nexport default TitledField\n","import styled from 'styled-components'\n\nexport const UserDetailsContainer = styled.div``\n\nexport const UserName = styled.div`\n font-weight: 700;\n color: #222;\n`\nexport const LatestLogin = styled.div`\n font-size: 70%;\n`\nexport const UserDetail = styled.div`\n font-size: 85%;\n margin-left: 10px;\n`\n\nexport const PlayerProfileContainer = styled.div`\n font-size: 85%;\n color: #888;\n`\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport parse from 'html-react-parser'\n\n// import apis\n\n// import redux, selectors, actions\nimport { useSelector } from 'react-redux'\n\n// import contexts\nimport { useCurrentUserState } from 'contexts/current-user-context'\n\n// import hooks\n\n// import utilities\nimport { commaize } from 'helpers/utilities'\n\n// import common elements\nimport { PhoneLink, Fee } from 'components/elements/Misc'\nimport { HiddenIcon, Icon } from 'components/elements/Icons'\nimport { DiscordTag } from 'components/elements/Tags'\n\n// import components\nimport WithVisibility from './WithVisibility'\nimport TitledField from './TitledField'\n\n// import styles\nimport {\n UserDetailsContainer,\n UserName,\n LatestLogin,\n UserDetail,\n PlayerProfileContainer,\n} from './styles'\n\n// local constants\n\n// --------------------\n\nconst UserDetails = props => {\n const currentUser = useCurrentUserState()\n const users = useSelector(state => state.users)\n const { user } = props\n\n const creator = user.creator_id\n ? users[user.creator_id]\n ? ` by ${users[user.creator_id].full_name}`\n : ` by user id ${user.creator_id}`\n : ''\n\n // Note: only visible data is returned from the api\n const canManage = currentUser.canManageUser(user)\n const displayName = props.displayName || user.full_name\n\n return (\n \n {(props.all || props.name) && (\n \n {!user.findable && } {displayName}\n \n )}\n {props.childrenFirst && props.children}\n \n {(props.all || props.login) && canManage && (\n <>\n \n created on: {user.created_at_formatted}\n {(currentUser.isAdmin || props.showCreator) && creator}\n \n \n latest login:{' '}\n {user.current_sign_in_at\n ? user.current_sign_in_formatted\n : 'has not signed in'}\n \n \n )}\n\n {(props.all || props.email) && (\n \n {user.email}\n {canManage && user.spam_block && (\n
\n SPAM BLOCK\n
\n )}\n {canManage && user.email_bounce && (\n
\n EMAIL BOUNCE\n
\n )}\n
\n )}\n\n {canManage && !user.email && (props.all || props.email) && (\n
\n NO EMAIL ADDRESS\n
\n )}\n\n {(props.all || props.address) && (\n \n {user.address}\n \n )}\n\n {(props.all || props.address) && (\n \n {user.csz}\n \n )}\n\n {(props.all || props.phone) && (\n \n \n \n )}\n\n {(props.all || props.phone) && (\n \n \n \n )}\n\n {(props.all || props.username) && canManage && (\n \n {user.username}\n \n )}\n\n {(props.all || props.bbo) && (\n \n {user.bbo_name}\n \n )}\n\n {(props.all || props.acbl) &&\n canManage &&\n currentUser.managesAcblGroup && (\n \n \n {user.acbl_number}\n \n ,{' '}\n \n {commaize(user.mp_holding)} mpts\n {user.life_master ? ' (LM)' : ''}\n {user.acbl_active ? '' : ' (inactive)'}\n \n \n )}\n\n {(props.showId || (props.all && currentUser.isAdmin)) && (\n \n {user.id}\n \n )}\n\n {(props.all || props.rbucks) && canManage && (\n
\n \n
\n )}\n\n {(props.all || props.discord) && user.discord_user_id && (\n
\n \n
\n )}\n {currentUser.isAdmin && user.is_demo && (\n
DEMO USER
\n )}\n {(props.all || props.profile) && user.player_profile && (\n \n {parse(user.player_profile)}\n \n )}\n {!props.childrenFirst && props.children}\n
\n
\n )\n}\n\nUserDetails.propTypes = {\n displayName: PropTypes.string,\n user: PropTypes.object.isRequired,\n all: PropTypes.bool,\n name: PropTypes.bool,\n login: PropTypes.bool,\n email: PropTypes.bool,\n phone: PropTypes.bool,\n address: PropTypes.bool,\n username: PropTypes.bool,\n acbl: PropTypes.bool,\n bbo: PropTypes.bool,\n discord: PropTypes.bool,\n rbucks: PropTypes.bool,\n profile: PropTypes.bool,\n showCreator: PropTypes.bool,\n showId: PropTypes.bool,\n childrenFirst: PropTypes.bool,\n nameClick: PropTypes.func,\n children: PropTypes.node,\n}\n\nexport default UserDetails\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { toast } from 'react-toastify'\n\n// import apis\nimport { apiUpdateUserProfile, apiUserProfileReviewed } from 'api/users'\nimport { apiCheckAcblName } from 'api/finder'\n\n// import redux, selectors, actions\nimport { useSelector } from 'react-redux'\nimport { getUser } from 'redux/selectors/shared_selectors'\n\n// import contexts\nimport { useCurrentUserState } from 'contexts/current-user-context'\nimport { usePaneState, usePaneMemory } from 'contexts/pane-memory-context'\n\n// import hooks\n\n// import utilities\nimport {\n parseAcblNumberEntry,\n hasChangedValues,\n validAcblNumber,\n THIS_MONTH,\n} from 'helpers/utilities'\nimport { STATE_OPTIONS } from 'helpers/constants'\nimport { TIME_ZONES } from 'helpers/time_zones'\n\n// import common elements\nimport { Button, ButtonToolbar, Tabs, Tab } from 'react-bootstrap'\nimport { Pane } from 'components/elements/Layout'\nimport { FormField, SaveWarning } from 'components/elements/Form/'\nimport { HelpText, PrivacyControlsMessage } from 'components/elements/Misc'\nimport { HiddenIcon, VisibleIcon, Icon } from 'components/elements/Icons'\n\n// import components\n\n// import styles\n\n// local constants\nconst acblInactive = r => r.paid_thru < THIS_MONTH\nconst DEFAULT_VALUES = {\n email: '',\n first_name: '',\n last_name: '',\n address: '',\n city: '',\n state: '',\n zip: '',\n phone: '',\n cell: '',\n time_zone: 'Eastern Time (US & Canada)',\n\n findable: true,\n email_visible: true,\n address_visible: false,\n csz_visible: false,\n phone_visible: false,\n cell_visible: false,\n\n username: '',\n password: '',\n password_confirmation: '',\n\n acbl_number: '',\n bbo_name: '',\n player_profile: '',\n\n deceased: false,\n banned: false,\n spam_block: false,\n is_demo: false,\n email_bounce: '',\n discord_user_id: '',\n}\nconst CONTACT_FIELDS = [\n 'email',\n 'first_name',\n 'last_name',\n 'address',\n 'city',\n 'state',\n 'zip',\n 'phone',\n 'cell',\n 'time_zone',\n]\nconst PRIVACY_FIELDS = [\n 'findable',\n 'email_visible',\n 'address_visible',\n 'csz_visible',\n 'phone_visible',\n 'cell_visible',\n]\nconst USER_PW_FIELDS = ['username', 'password', 'password_confirmation']\nconst PLAYER_FIELDS = ['acbl_number', 'bbo_name', 'player_profile']\nconst ADMIN_FIELDS = [\n 'deceased',\n 'banned',\n 'is_demo',\n 'spam_block',\n 'email_bounce',\n 'discord_user_id',\n]\n\nconst paneName = 'user-edit'\n\n// --------------------\n\nconst UserEdit = props => {\n const { userId } = props\n const memoryKey = `${paneName}#${userId}`\n const storedUser = useSelector(state => getUser(state, userId))\n const initialUser = { ...storedUser }\n for (const field of Object.keys(initialUser)) {\n if (\n initialUser[field] === null &&\n Object.keys(DEFAULT_VALUES).includes(field)\n ) {\n initialUser[field] = DEFAULT_VALUES[field]\n }\n }\n const currentUser = useCurrentUserState()\n const isSelf = currentUser.hasId(initialUser.id)\n\n const [user, setUser] = usePaneState(memoryKey, 'user', initialUser)\n const [acblName, setAcblName] = usePaneState(memoryKey, 'acblName', false)\n const [errors, setErrors] = usePaneState(memoryKey, 'errors', {})\n const { clearPaneMemory } = usePaneMemory()\n\n const handleFormFieldChange = (field, v) => {\n const value =\n field == 'acbl_number'\n ? parseAcblNumberEntry(v)\n : v === 'true'\n ? true\n : v === 'false'\n ? false\n : v\n\n if (field == 'acbl_number') {\n if (value != user.acbl_number) {\n if (value.length == 7) {\n apiCheckAcblName(value, {\n success: response => setAcblName(response.found),\n })\n } else {\n setAcblName(false)\n }\n }\n }\n const newErrors = { ...errors }\n if (field in newErrors) {\n delete newErrors[field]\n setErrors(newErrors)\n }\n\n setUser(u => ({ ...u, [field]: value }))\n }\n\n const toggleVisibility = field => {\n setUser(u => ({ ...u, [field]: !u[field] }))\n }\n\n // Note that initialUser has more fields than user, but the comparison\n // in hasChanged only looks at fields in first object\n const hasChanged = hasChangedValues(user, initialUser)\n\n const fieldsChanged = fields => {\n for (const field of fields) {\n if (user[field] != initialUser[field]) {\n return true\n }\n }\n return false\n }\n\n const errorsInclude = fields => {\n for (const field of fields) {\n if (errors[field]) {\n return true\n }\n }\n return false\n }\n\n const resetForm = () => {\n setErrors({})\n setUser(initialUser)\n }\n\n const updateUserProfile = () => {\n apiUpdateUserProfile(userId, user, {\n successMsg: 'Updated user',\n error: addErrors,\n successClose: closePane,\n })\n }\n const addErrors = response => {\n if (response.errors) {\n setErrors(response.errors)\n } else {\n toast.error(response.error)\n }\n }\n\n const profileReviewed = () => {\n apiUserProfileReviewed(userId, { successClose: closePane })\n }\n\n const userNeverSignedIn = initialUser.current_sign_in_formatted == ''\n const canEdit = currentUser.canEditUser(initialUser)\n const canEditLogin =\n isSelf || currentUser.isAdmin || (canEdit && userNeverSignedIn)\n\n const inputFor = (field, opts = {}) => {\n const current = user[field]\n const original = initialUser[field]\n const error = errors[field] ? errors[field].join(', ') : null\n const validationState = error ? 'error' : null\n\n return (\n \n )\n }\n\n const closePane = () => {\n clearPaneMemory(memoryKey)\n props.closeAction()\n }\n\n const closeAll = () => {\n clearPaneMemory(memoryKey)\n props.closeAll()\n }\n\n const visibleToggle = field => {\n return (\n toggleVisibility(field)}\n >\n {user[field] ? : }\n \n )\n }\n\n const tabTitle = tab => {\n let hasChanges = false\n let hasErrors = false\n switch (tab) {\n case 'Contact':\n hasChanges =\n fieldsChanged(CONTACT_FIELDS) || fieldsChanged(PRIVACY_FIELDS)\n hasErrors = errorsInclude(CONTACT_FIELDS)\n break\n case 'Username':\n hasChanges = fieldsChanged(USER_PW_FIELDS)\n hasErrors = errorsInclude(USER_PW_FIELDS)\n break\n case 'Player':\n hasChanges = fieldsChanged(PLAYER_FIELDS)\n hasErrors = errorsInclude(PLAYER_FIELDS)\n break\n case 'Admin':\n hasChanges = fieldsChanged(ADMIN_FIELDS)\n hasErrors = errorsInclude(ADMIN_FIELDS)\n }\n return (\n \n {hasChanges ? '*' : ''}\n {hasErrors ? : ''}\n {tab}\n \n )\n }\n\n const renderContactTab = () => {\n return (\n \n
\n {inputFor('first_name', { required: true })}\n {inputFor('last_name', { required: true })}\n
\n\n
\n {inputFor('email')}\n {visibleToggle('email_visible')}\n
\n\n
\n {inputFor('address')}\n {visibleToggle('address_visible')}\n
\n\n
\n {inputFor('city')}\n {inputFor('state', { select: true, options: STATE_OPTIONS })}\n {inputFor('zip')}\n {visibleToggle('csz_visible')}\n
\n\n
\n {inputFor('phone')}\n {visibleToggle('phone_visible')}\n {inputFor('cell')}\n {visibleToggle('cell_visible')}\n
\n\n
\n {inputFor('time_zone', { select: true, options: TIME_ZONES })}\n
\n\n \n
\n \n You can change your settings by tapping an eyeball icon, or by\n visiting the Privacy options screen.\n \n
\n
\n
\n )\n }\n\n const renderUserTab = () => {\n return (\n \n
\n {inputFor('username')}\n
\n\n
\n
\n {inputFor('password')}\n {inputFor('password_confirmation', {\n label: 'Retype password',\n })}\n
\n

\n Leave password fields blank unless you want to change password\n

\n
\n
\n )\n }\n\n const renderPlayerTab = () => {\n const invalid = !validAcblNumber(user.acbl_number, true)\n return (\n \n
\n {inputFor('acbl_number', {\n label: 'ACBL #',\n help: invalid\n ? 'Invalid ACBL Number'\n : acblName === false\n ? '7 digits; if first is a letter, will be converted to digit'\n : acblName === null\n ? 'Not found in current ACBL active member database.'\n : `From ACBL: ${acblName.first_name} ${acblName.last_name}, ${\n acblName.masterpoints\n }${acblInactive(acblName) ? '; inactive member' : ''}`,\n })}\n {inputFor('bbo_name', { label: 'BBO name' })}\n
\n\n
\n {inputFor('player_profile', {\n editor: true,\n help: 'Provide some info about yourself to help others looking for partners. Keep it brief!',\n })}\n
\n
\n )\n }\n\n const renderAdminTab = () => {\n return (\n \n {inputFor('banned', {\n checkbox: true,\n help: 'User will be prohibited from logging in',\n })}\n {inputFor('deceased', {\n checkbox: true,\n help: 'User will be made inactive in all accounts, and email address must be removed',\n })}\n {inputFor('is_demo', {\n checkbox: true,\n help: 'User is a fake user for demo purposes',\n })}\n {inputFor('spam_block', {\n checkbox: true,\n help: 'User has reported email as spam; further emails will be blocked',\n })}\n {inputFor('email_bounce')}\n {inputFor('discord_user_id')}\n \n )\n }\n\n const closeText = `${initialUser && hasChanged ? ' Cancel and ' : ''} Return${\n props.origin ? ' to ' + props.origin : ''\n }`\n\n const title = (\n \n Edit Personal Profile for{' '}\n {initialUser.full_name}\n \n )\n\n const forwardAction = props.closeAll ? (\n
\n Close\n
\n ) : null\n\n return (\n \n \n \n \n * denotes tabs with unsaved changes.\n {!isSelf && (\n \n {canEditLogin\n ? 'User will be notified of changes to privacy options, email, username and password.'\n : 'User will be notified of changes to privacy options and email. Because this user has logged into RSVP in the past, you cannot edit their username or password.'}\n \n )}\n
\n \n \n Save\n \n \n Reset\n \n {isSelf && !initialUser.profile_reviewed && !hasChanged && (\n \n Everything looks okay!\n \n )}\n \n\n {Object.keys(errors).length > 0 && (\n \n Changes could not be saved. See errors above.\n \n )}\n
\n\n \n {renderContactTab()}\n {canEditLogin && renderUserTab()}\n {renderPlayerTab()}\n {currentUser.isAdmin && renderAdminTab()}\n \n \n
\n
\n )\n}\n\nUserEdit.propTypes = {\n userId: PropTypes.number.isRequired,\n closeAction: PropTypes.func,\n closeAll: PropTypes.func,\n origin: PropTypes.string,\n}\n\nexport default UserEdit\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { usePageDispatch } from 'contexts/page-context'\n\nconst HelpContext = React.createContext()\nconst { Provider } = HelpContext\nconst HelpContextProvider = props => {\n const { showHelp, closeHelp } = usePageDispatch()\n\n const [displayed, setDisplayed] = React.useState({\n helpType: 'pane',\n selector: 'default',\n })\n const [stack, setStack] = React.useState([\n {\n helpType: 'pane',\n selector: 'default',\n },\n ])\n const [stackIndex, setStackIndex] = React.useState(0)\n\n const initializeStack = helpPane => {\n setStack([{ helpType: 'pane', selector: helpPane }])\n setStackIndex(0)\n }\n\n const pushToStack = (helpType, selector) => {\n // Truncate stack to anything after displayed pane\n const updated = [...stack]\n updated.length = stackIndex + 1\n // Push this new item\n updated.push({ helpType, selector })\n setStack(updated)\n // Reset stack index\n setStackIndex(updated.length - 1)\n }\n\n const transferTo = (helpType, selector) => {\n if (helpType != displayed.helpType || selector != displayed.selector) {\n pushToStack(helpType, selector)\n setDisplayed({ helpType, selector })\n }\n }\n\n const transferToHistory = i => {\n let target = stack[i]\n setStackIndex(i)\n setDisplayed(target)\n }\n\n const back = () => {\n if (stackIndex > 0) {\n let newPosition = stack[stackIndex - 1]\n setStackIndex(stackIndex - 1)\n setDisplayed(newPosition)\n }\n }\n\n const next = () => {\n if (stackIndex < stack.length - 1) {\n let newPosition = stack[stackIndex + 1]\n setStackIndex(stackIndex + 1)\n setDisplayed(newPosition)\n }\n }\n\n return (\n \n {props.children}\n \n )\n}\n\nconst useContextualHelp = () => {\n const context = React.useContext(HelpContext)\n if (context === undefined) {\n throw new Error('useContextualHelp must be used within a HelpProvider')\n }\n return context\n}\n\nexport { HelpContextProvider, useContextualHelp }\n\nHelpContextProvider.propTypes = {\n children: PropTypes.node,\n}\n","export const TRANSITION = {\n fadeOnChange: 'fade-on-change',\n slideOut: 'slide-out',\n slideIn: 'slide-in',\n slideDown: 'slide-down',\n}\n\nexport const COMMON_APP_PANE_DEFAULTS = {\n profile: '',\n finder: '',\n movements: 'movement-listing',\n}\n\nexport const actionTypes = {\n setHeaderRef: 'SET_HEADER_REF',\n showHelp: 'SHOW_HELP',\n closeHelp: 'CLOSE_HELP',\n setActivePane: 'SET_ACTIVE_PANE',\n setDefaultPanes: 'SET_DEFAULT_PANES',\n showDefaultPane: 'SHOW_DEFAULT_PANE',\n openPanel: 'OPEN_PANEL',\n closePanel: 'CLOSE_PANEL',\n closeAllPanels: 'CLOSE_ALL_PANELS',\n setCommonAppPane: 'SET_COMMON_APP_PANE',\n closeCommonApp: 'CLOSE_APP',\n setActiveNavKey: 'SET_ACTIVE_NAV_KEY',\n toggleSubNav: 'TOGGLE_SUBNAV',\n setShowCopyright: 'SET_SHOW_COPYRIGHT',\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { toast } from 'react-toastify'\nimport { getDebugOptions } from 'helpers/debugging'\n\nimport { TRANSITION, COMMON_APP_PANE_DEFAULTS, actionTypes } from './constants'\n\nimport {\n navKeyFor,\n subNavKeyFor,\n isMainNav,\n getInitialPanes,\n} from './nav_methods'\n\nimport { setStoredValue, retrieveStoredValue } from './storage_methods'\n/* \nnav = object of navigation elements that can be filtered and set (User, Event), \nnavKey = active element of nav\n\neach element in a nav element is an array of objects: top level pane => array of panes shown\nas secondary navs, which can be shown or hidden.\n\nAt any given time, the app is displaying a pane, a panel, or one of the CommonApp panes that are \nalways accessible in the application (lower nav). A pane is a screen that includes\na nav and a content area. A panel displays an action taken from the pane that slides out and hides the navs.\nIf the panel and/or commonAppPane is nil, the app is showing the pane.\n\nactivePane = active pane name, or the pane that will be returned to from a panel\nactiveNavKey() provides the navKey for a given pane\nactivePanes = active pane on each level of the nav\n\nParameters passed in:\nnav\noptional: show/activePane\ndefaultPanes (needed for Event, where visible panes can vary widely based on event state and current user)\n\nWhen showing a pane (i.e, the navs are visible), a user may also select to see one of the Common Apps, which will slide\nup from the bottom of the page, almost like a modal. Within the CommonApp selected, a user can navigate to different panels, which\nare named with common*, to differentiate from the page level nav that will be redisplayed when the\ncommon app is closed.\n\n*/\n\n// DEBUGGING\nconst { trackPanels, trackReducer } = getDebugOptions()\n\nconst allPanelsClosed = {\n panel: null,\n panelParameter: null,\n previousPanel: null,\n previousPanelParameter: null,\n commonAppPane: null,\n}\n\nconst PageStateContext = React.createContext(null)\n\nconst PageDispatchContext = React.createContext(null)\n\nconst initialState = props => {\n let navKeys, initialPanes, initialPane, activeNavKey, storedActivePane\n const page = window.location.pathname\n\n if (props.nav && props.cuId) {\n storedActivePane = retrieveStoredValue(page, props.cuId, 'activePane')\n if (navKeyFor(storedActivePane, props.nav) === null) {\n storedActivePane = null\n }\n }\n\n if (props.nav) {\n navKeys = Object.keys(props.nav)\n initialPanes = props.defaultPanes\n ? props.defaultPanes\n : getInitialPanes(props.nav)\n if (props.activePane) {\n initialPanes[navKeyFor(props.activePane, props.nav)] = props.activePane\n }\n\n if (storedActivePane) {\n initialPane = storedActivePane\n } else if (props.activePane && navKeyFor(props.activePane, props.nav)) {\n initialPane = props.activePane\n } else {\n initialPane = initialPanes[navKeys[0]]\n }\n activeNavKey = navKeyFor(initialPane, props.nav)\n }\n\n const state = {\n transition: TRANSITION.fadeOnChange,\n page: props.page,\n cuId: props.cuId,\n\n nav: props.nav,\n navKeys: navKeys,\n\n activePane: initialPane,\n activeNavKey: activeNavKey,\n // the active pane in each level\n activePanes: initialPanes,\n // the active pane for the active level\n subNavIsOpen: false,\n activeSubNavKey: null,\n contentScrollPosition: 0,\n\n panel: null,\n panelParameter: null,\n panelScrollPosition: 0,\n previousPanel: null,\n previousPanelParameter: null,\n\n showingHelp: false,\n\n commonAppPane: null,\n commonAppPanes: { ...COMMON_APP_PANE_DEFAULTS },\n commonAppScrollPosition: 0,\n\n scrollIterator: 0,\n scrollTo: 0,\n\n showCopyright: true,\n\n headerRef: null,\n }\n\n return state\n}\n\nfunction pageReducer(state, action) {\n const payload = action.payload\n if (trackReducer) {\n console.info(\n '[RSVP]',\n 'in page-context/index.js - pageReducer:',\n 'action',\n action,\n )\n }\n let {\n nav,\n activePane,\n activePanes,\n activeNavKey,\n subNavIsOpen,\n activeSubNavKey,\n transition,\n panel,\n commonAppPane,\n commonAppPanes,\n contentScrollPosition,\n commonAppScrollPosition,\n panelScrollPosition,\n scrollTo,\n scrollIterator,\n } = state\n\n const wasShowingActivePane = panel === null && commonAppPane == null\n\n switch (action.type) {\n case actionTypes.setHeaderRef: {\n return {\n ...state,\n headerRef: payload.headerRef,\n }\n }\n\n case actionTypes.showHelp: {\n return {\n ...state,\n transition: TRANSITION.fadeOnChange,\n showingHelp: true,\n }\n }\n\n case actionTypes.closeHelp: {\n return {\n ...state,\n transition: TRANSITION.fadeOnChange,\n showingHelp: false,\n }\n }\n\n case actionTypes.setDefaultPanes: {\n return {\n ...state,\n ...allPanelsClosed,\n activePanes: payload.defaultPanes,\n }\n }\n\n case actionTypes.showDefaultPane: {\n // might come after resetting default panes\n if (trackPanels) {\n console.info(\n '[RSVP]',\n 'in index.js - :',\n 'showDefaultPane',\n activePanes[activeNavKey],\n 'in',\n activeNavKey,\n )\n }\n return {\n ...state,\n ...allPanelsClosed,\n activePane: activePanes[activeNavKey],\n }\n }\n\n case actionTypes.setActivePane: {\n if (trackPanels) {\n console.info('[RSVP]', 'in index.js - :', 'setActivePane', payload.pane)\n }\n activePane = payload.pane\n if (!wasShowingActivePane) {\n // Restore the scroll position if we are returning to a pane\n scrollTo = contentScrollPosition\n scrollIterator += 1\n contentScrollPosition = 0\n }\n activeNavKey = navKeyFor(activePane, nav)\n activePanes[activeNavKey] = activePane\n if (subNavIsOpen && isMainNav(activePane, nav)) {\n subNavIsOpen = false\n activeSubNavKey = null\n } else if (!subNavIsOpen && !isMainNav(activePane, nav)) {\n subNavIsOpen = true\n activeSubNavKey = subNavKeyFor(activePane, nav)\n }\n\n return {\n ...state,\n activePane,\n activePanes,\n activeNavKey,\n transition: state.panel\n ? TRANSITION.slideIn\n : state.commonAppPane\n ? TRANSITION.slideDown\n : TRANSITION.fadeOnChange,\n contentScrollPosition,\n scrollTo,\n scrollIterator,\n subNavIsOpen,\n activeSubNavKey,\n\n panel: null,\n }\n }\n\n case actionTypes.toggleSubNav: {\n if (payload.pane == activeSubNavKey && subNavIsOpen) {\n subNavIsOpen = false\n } else {\n subNavIsOpen = true\n activeSubNavKey = payload.pane\n }\n return {\n ...state,\n subNavIsOpen,\n activeSubNavKey,\n }\n }\n\n case actionTypes.setActiveNavKey: {\n if (trackPanels) {\n console.info(\n '[RSVP]',\n 'in index.js - :',\n 'setActiveNavKey',\n payload.newKey,\n )\n }\n activeNavKey = payload.newKey\n return {\n ...state,\n activePane: activePanes[activeNavKey],\n activeNavKey,\n transition: TRANSITION.fadeOnChange,\n }\n }\n\n case actionTypes.openPanel: {\n if (trackPanels) {\n console.info(\n '[RSVP]',\n 'in index.js - :',\n 'openPanel',\n payload.panel,\n payload.panelParameter,\n )\n }\n return {\n ...state,\n previousPanel: state.panel,\n previousPanelParameter: state.panelParameter,\n panel: payload.panel,\n panelParameter: payload.panelParameter,\n panelScrollPosition: window.scrollY,\n scrollTo: 0,\n scrollIterator: scrollIterator + 1,\n transition: TRANSITION.slideOut,\n }\n }\n\n case actionTypes.closePanel: {\n if (trackPanels) {\n console.info('[RSVP]', 'in index.js - :', 'closePanel', state.panel)\n }\n\n if (state.panel) {\n return {\n ...state,\n previousPanel: null,\n previousPanelParameter: null,\n panel: state.previousPanel,\n panelParameter: state.previousPanelParameter,\n scrollTo: panelScrollPosition,\n scrollIterator: scrollIterator + 1,\n panelScrollPosition: 0,\n transition: TRANSITION.slideIn,\n }\n } else {\n return state\n }\n }\n\n case actionTypes.closeAllPanels: {\n if (trackPanels) {\n console.info(\n '[RSVP]',\n 'in index.js - :',\n 'closeAllPanels',\n state.panel,\n state.previousPanel,\n )\n }\n if (state.panel) {\n return {\n ...state,\n previousPanel: null,\n previousPanelParameter: null,\n panel: null,\n panelParameter: null,\n scrollTo: panelScrollPosition,\n scrollIterator: scrollIterator + 1,\n panelScrollPosition: 0,\n transition: TRANSITION.slideIn,\n }\n } else {\n return state\n }\n }\n\n case actionTypes.setCommonAppPane: {\n if (trackPanels) {\n console.info(\n '[RSVP]',\n 'in index.js - :',\n 'setCommonAppPane',\n payload.pane,\n )\n }\n commonAppPanes = { ...state.commonAppPanes, [payload.app]: payload.pane }\n transition = state.commonAppPane\n ? TRANSITION.fadeOnChange\n : TRANSITION.slideDown\n if (state.commonAppPane === null) {\n // remember the scroll position if we are moving from content to a common app\n contentScrollPosition = window.scrollY\n scrollTo = 0\n scrollIterator += 1\n } else if (payload.pane === COMMON_APP_PANE_DEFAULTS[payload.app]) {\n scrollTo = commonAppScrollPosition\n scrollIterator += 1\n commonAppScrollPosition = 0\n }\n return {\n ...state,\n transition,\n commonAppPanes,\n contentScrollPosition,\n commonAppScrollPosition,\n scrollTo,\n scrollIterator,\n commonAppPane: payload.app,\n }\n }\n\n case actionTypes.closeCommonApp:\n if (trackPanels) {\n console.info(\n '[RSVP]',\n 'in index.js - :',\n 'closeCommonApp',\n state.commonAppPane,\n )\n }\n return {\n ...state,\n transition: state.panel ? TRANSITION.slideIn : TRANSITION.fadeOnChange,\n commonAppPane: null,\n scrollIterator: scrollIterator + 1,\n scrollTo: contentScrollPosition,\n contentScrollPosition: 0,\n previousPanel: null,\n previousPanelParameter: null,\n panel: null,\n panelParameter: null,\n panelScrollPosition: 0,\n }\n\n case actionTypes.setShowCopyright:\n return {\n ...state,\n showCopyright: payload.showCopyright,\n }\n default: {\n throw new Error(`Unhandled action type: ${action.type}`)\n }\n }\n}\n\nfunction PageProvider(props) {\n const [state, dispatch] = React.useReducer(\n pageReducer,\n initialState({\n cuId: props.cuId,\n activePane: props.activePane,\n nav: props.nav,\n defaultPanes: props.defaultPanes,\n }),\n )\n\n const { cuId, activePane } = state\n const page = window.location.pathname\n\n React.useEffect(() => {\n setStoredValue(page, cuId, 'activePane', activePane)\n }, [page, cuId, activePane])\n\n return (\n \n \n {props.children}\n \n \n )\n}\n\nfunction usePageState() {\n const context = React.useContext(PageStateContext)\n if (context === undefined) {\n throw new Error('usePageState must be used within a PageProvider')\n }\n const computedElements = {\n navsVisible: context.panel === null,\n }\n return { ...context, ...computedElements }\n}\n\nfunction usePageDispatch() {\n const pageDispatch = React.useContext(PageDispatchContext)\n if (pageDispatch === undefined) {\n throw new Error('usePageDispatch must be used within a PageProvider')\n }\n\n const setHeaderRef = React.useCallback(headerRef => {\n pageDispatch({\n type: actionTypes.setHeaderRef,\n payload: { headerRef },\n })\n // pageDispatch is stable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const showHelp = () => {\n pageDispatch({\n type: actionTypes.showHelp,\n })\n }\n\n const closeHelp = () => {\n pageDispatch({\n type: actionTypes.closeHelp,\n })\n }\n\n const setDefaultPanes = React.useCallback(defaultPanes => {\n pageDispatch({\n type: actionTypes.setDefaultPanes,\n payload: { defaultPanes },\n })\n // pageDispatch is stable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const showDefaultPane = React.useCallback(() => {\n pageDispatch({\n type: actionTypes.showDefaultPane,\n })\n // pageDispatch is stable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const setActivePane = pane => {\n toast.dismiss()\n\n pageDispatch({\n type: actionTypes.setActivePane,\n payload: { pane },\n })\n }\n\n const toggleSubNav = pane => {\n pageDispatch({ type: actionTypes.toggleSubNav, payload: { pane } })\n }\n\n const setActiveNavKey = newKey => {\n pageDispatch({\n type: actionTypes.setActiveNavKey,\n payload: { newKey },\n })\n }\n\n const openPanel = React.useCallback((panel, panelParameter = null) => {\n // Using useCallback so this can be used in useEffect without causing unnecessary rerenders\n pageDispatch({\n type: actionTypes.openPanel,\n payload: { panel, panelParameter },\n })\n // pageDispatch is stable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const closePanel = React.useCallback(() => {\n pageDispatch({\n type: actionTypes.closePanel,\n })\n // Using useCallback so this can be used in useEffect without causing unnecessary rerenders\n // pageDispatch is stable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const closeAllPanels = React.useCallback(() => {\n pageDispatch({\n type: actionTypes.closeAllPanels,\n })\n // Using useCallback so this can be used in useEffect without causing unnecessary rerenders\n // pageDispatch is stable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const setCommonAppPane = (app, pane) => {\n pageDispatch({\n type: actionTypes.setCommonAppPane,\n payload: { app, pane },\n })\n }\n\n const closeCommonApp = () => {\n pageDispatch({\n type: actionTypes.closeCommonApp,\n })\n }\n\n const setShowCopyright = React.useCallback(showCopyright => {\n pageDispatch({\n type: actionTypes.setShowCopyright,\n payload: { showCopyright },\n })\n // Using useCallback so this can be used in useEffect without causing unnecessary rerenders\n // pageDispatch is stable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n return {\n setHeaderRef,\n showHelp,\n closeHelp,\n setActivePane,\n toggleSubNav,\n openPanel: openPanel,\n closePanel: closePanel,\n closeAllPanels: closeAllPanels,\n setDefaultPanes,\n showDefaultPane,\n setActiveNavKey,\n setCommonAppPane,\n closeCommonApp,\n setShowCopyright,\n }\n}\n\nexport { PageProvider, usePageState, usePageDispatch }\n\n// If nav is empty, there is no nav\nPageProvider.propTypes = {\n cuId: PropTypes.number,\n activePane: PropTypes.string,\n nav: PropTypes.object,\n children: PropTypes.node,\n defaultPanes: PropTypes.object,\n}\n","/**\n * Retrieves the navigation key for a given pane.\n *\n * @param {string} pane - The pane to find the navigation key for.\n * @param {Object} nav - The navigation object containing pane mappings.\n * @returns {string|null} - The navigation key if found, otherwise null.\n */\nexport const navKeyFor = (pane, nav) => {\n for (const navKey in nav) {\n const thisNav = nav[navKey]\n for (const mainPane of Object.keys(thisNav)) {\n if (pane == mainPane) {\n return navKey\n }\n if (thisNav[mainPane].length > 0) {\n for (const subPane of thisNav[mainPane]) {\n if (pane === subPane) {\n return navKey\n }\n }\n }\n }\n }\n\n return null\n}\n\n/**\n * Reports whether the given pane is on the main level of the provided nav.\n *\n * @param {string} pane - The pane to find the navigation key for.\n * @param {Object} nav - The navigation object containing pane mappings.\n * @returns {bool} - Whether the pane is a main level navigation element.\n */\nexport const isMainNav = (pane, nav) => {\n const selectedNav = nav[navKeyFor(pane, nav)]\n return typeof selectedNav[pane] !== 'undefined'\n}\n\n/**\n * Reports whether the given pane is on the subnav level of the provided nav.\n *\n * @param {string} pane - The pane to find the navigation key for.\n * @param {Object} nav - The navigation object containing pane mappings.\n * @returns {bool} - Whether the pane is located in a subnav level navigation element.\n */\nexport const subNavKeyFor = (pane, nav) => {\n const selectedNav = nav[navKeyFor(pane, nav)]\n for (const navKey in selectedNav) {\n if (selectedNav[navKey].includes(pane)) {\n return navKey\n }\n }\n return null\n}\n\n/**\n * Gets the initial panes based on the navigation object.\n *\n * @param {Object} nav - The navigation object containing pane mappings.\n * @returns {Object} - The initial panes.\n */\nexport const getInitialPanes = nav => {\n const initialPanes = []\n if (nav) {\n for (const navKey in nav) {\n const thisNav = nav[navKey]\n const firstElement = Object.keys(thisNav)[0]\n initialPanes[navKey] =\n thisNav[firstElement].length == 0\n ? firstElement\n : thisNav[firstElement][0]\n }\n return initialPanes\n }\n}\n","import { get } from 'lodash'\n\nconst definitions = {\n 'member-membership': {\n active:\n 'Active members are eligible to sign up for, or to be selected as a partner for, any event in the group. Active members can see all group events.',\n permanent:\n 'Permanent members (or enrolled members, for courses) are like active members, except they are automatically signed up for new events in the group as they are created. If the member has a regular partner specified, they will be paired with that partner as well. If a priority value signup priority value has been set, it may appear with the tag.',\n guest:\n 'Guest members are like active members, except they will not see group events on the Overview tab of their home page. They will see groups events on the Schedule tab, however.',\n inactive:\n 'Inactive members played in a group in the past, but are no longer eligible to sign up or sub. They can only see events in which they played in the past.',\n removed:\n 'Removed members played in a group in the past, but are no longer eligible to sign up or sub. They cannot see any past, current or future events, even those in which they played.',\n },\n 'member-stationary-preference': {\n required: 'Member has a physical requirement for stationary seating.',\n requested: 'Member prefers stationary seating.',\n undesired: 'Member prefers not to be in a stationary seat.',\n indifferent:\n 'Member can play either stationary or non-stationary (default)',\n },\n 'member-regular-partner':\n 'Member has a regular partner. If either member is a permanent member of the group, member will be signed up with partner automatically every time a new event is created. If member is an active member of the group, partner will be a default option when selecting a partner for a event.',\n 'member-acbl-member':\n 'If shown, member has an ACBL membership number on file.',\n 'member-manager':\n 'If set, member is a manager of the group and may create/modify events, add/modify members, and send emails. Managers are automatically added as a director for all new events created within the group. Directors can manage signups, pair assignment, movement setup, and scoring.',\n 'member-director':\n 'If set, member is a director for an event, and can manage signups, pair assignment, movement setup, and scoring.',\n 'member-signup-priority':\n 'Sets priority when signing up as a permanent member. Higher numbers are signed up first.',\n\n 'event-signup-status': {\n open: 'All active/permanent members in the group may sign up for the event',\n private:\n 'Invited members may sign up for the event. Members not signed up or invited will not see the event on the upcoming event schedule.',\n closed:\n 'Members may no longer sign up for the event, although managers may still add/modify/cancel signups.',\n },\n\n 'event-full':\n 'The number of signups has reached the maximum table capacity of the event.',\n\n 'event-table-count':\n 'The number of tables computed from the current number of signups.',\n\n 'event-scoring-progress': {\n not_started:\n 'Default status for all new events. Only scored events will ever have a status other than this.',\n entry: 'Event is in progress and scores are being recorded.',\n complete: 'Event is complete and overall scores have been computed.',\n },\n}\n\nexport const iconLegend = path => {\n return get(definitions, path, 'definition not available')\n}\n","// Generate in rails console: load 'console/generate_time_zone_constants.rb'\n\nexport const TIME_ZONES = [\n { value: 'Tokelau Is.', label: '(GMT+13:00) Tokelau Is.' },\n { value: 'Samoa', label: '(GMT+13:00) Samoa' },\n { value: \"Nuku'alofa\", label: \"(GMT+13:00) Nuku'alofa\" },\n { value: 'Kamchatka', label: '(GMT+12:00) Kamchatka' },\n { value: 'Marshall Is.', label: '(GMT+12:00) Marshall Is.' },\n { value: 'Wellington', label: '(GMT+12:00) Wellington' },\n { value: 'Chatham Is.', label: '(GMT+12:45) Chatham Is.' },\n { value: 'Auckland', label: '(GMT+12:00) Auckland' },\n { value: 'Fiji', label: '(GMT+12:00) Fiji' },\n { value: 'Solomon Is.', label: '(GMT+11:00) Solomon Is.' },\n { value: 'Srednekolymsk', label: '(GMT+11:00) Srednekolymsk' },\n { value: 'New Caledonia', label: '(GMT+11:00) New Caledonia' },\n { value: 'Magadan', label: '(GMT+11:00) Magadan' },\n { value: 'Hobart', label: '(GMT+10:00) Hobart' },\n { value: 'Vladivostok', label: '(GMT+10:00) Vladivostok' },\n { value: 'Sydney', label: '(GMT+10:00) Sydney' },\n { value: 'Port Moresby', label: '(GMT+10:00) Port Moresby' },\n { value: 'Melbourne', label: '(GMT+10:00) Melbourne' },\n { value: 'Guam', label: '(GMT+10:00) Guam' },\n { value: 'Canberra', label: '(GMT+10:00) Canberra' },\n { value: 'Brisbane', label: '(GMT+10:00) Brisbane' },\n { value: 'Adelaide', label: '(GMT+09:30) Adelaide' },\n { value: 'Yakutsk', label: '(GMT+09:00) Yakutsk' },\n { value: 'Tokyo', label: '(GMT+09:00) Tokyo' },\n { value: 'Seoul', label: '(GMT+09:00) Seoul' },\n { value: 'Sapporo', label: '(GMT+09:00) Sapporo' },\n { value: 'Osaka', label: '(GMT+09:00) Osaka' },\n { value: 'Darwin', label: '(GMT+09:30) Darwin' },\n { value: 'Hong Kong', label: '(GMT+08:00) Hong Kong' },\n { value: 'Beijing', label: '(GMT+08:00) Beijing' },\n { value: 'Chongqing', label: '(GMT+08:00) Chongqing' },\n { value: 'Ulaanbaatar', label: '(GMT+08:00) Ulaanbaatar' },\n { value: 'Taipei', label: '(GMT+08:00) Taipei' },\n { value: 'Singapore', label: '(GMT+08:00) Singapore' },\n { value: 'Perth', label: '(GMT+08:00) Perth' },\n { value: 'Kuala Lumpur', label: '(GMT+08:00) Kuala Lumpur' },\n { value: 'Irkutsk', label: '(GMT+08:00) Irkutsk' },\n { value: 'Hanoi', label: '(GMT+07:00) Hanoi' },\n { value: 'Novosibirsk', label: '(GMT+07:00) Novosibirsk' },\n { value: 'Krasnoyarsk', label: '(GMT+07:00) Krasnoyarsk' },\n { value: 'Jakarta', label: '(GMT+07:00) Jakarta' },\n { value: 'Bangkok', label: '(GMT+07:00) Bangkok' },\n { value: 'Dhaka', label: '(GMT+06:00) Dhaka' },\n { value: 'Rangoon', label: '(GMT+06:30) Rangoon' },\n { value: 'Urumqi', label: '(GMT+06:00) Urumqi' },\n { value: 'Astana', label: '(GMT+06:00) Astana' },\n { value: 'Tashkent', label: '(GMT+05:00) Tashkent' },\n { value: 'Kathmandu', label: '(GMT+05:45) Kathmandu' },\n { value: 'Sri Jayawardenepura', label: '(GMT+05:30) Sri Jayawardenepura' },\n { value: 'New Delhi', label: '(GMT+05:30) New Delhi' },\n { value: 'Mumbai', label: '(GMT+05:30) Mumbai' },\n { value: 'Kolkata', label: '(GMT+05:30) Kolkata' },\n { value: 'Chennai', label: '(GMT+05:30) Chennai' },\n { value: 'Karachi', label: '(GMT+05:00) Karachi' },\n { value: 'Islamabad', label: '(GMT+05:00) Islamabad' },\n { value: 'Ekaterinburg', label: '(GMT+05:00) Ekaterinburg' },\n { value: 'Almaty', label: '(GMT+05:00) Almaty' },\n { value: 'Samara', label: '(GMT+04:00) Samara' },\n { value: 'Muscat', label: '(GMT+04:00) Muscat' },\n { value: 'Baku', label: '(GMT+04:00) Baku' },\n { value: 'Abu Dhabi', label: '(GMT+04:00) Abu Dhabi' },\n { value: 'Kabul', label: '(GMT+04:30) Kabul' },\n { value: 'Yerevan', label: '(GMT+04:00) Yerevan' },\n { value: 'Tbilisi', label: '(GMT+04:00) Tbilisi' },\n { value: 'Kuwait', label: '(GMT+03:00) Kuwait' },\n { value: 'Tehran', label: '(GMT+03:30) Tehran' },\n { value: 'Baghdad', label: '(GMT+03:00) Baghdad' },\n { value: 'Istanbul', label: '(GMT+03:00) Istanbul' },\n { value: 'Volgograd', label: '(GMT+03:00) Volgograd' },\n { value: 'St. Petersburg', label: '(GMT+03:00) St. Petersburg' },\n { value: 'Riyadh', label: '(GMT+03:00) Riyadh' },\n { value: 'Nairobi', label: '(GMT+03:00) Nairobi' },\n { value: 'Moscow', label: '(GMT+03:00) Moscow' },\n { value: 'Minsk', label: '(GMT+03:00) Minsk' },\n { value: 'Tallinn', label: '(GMT+02:00) Tallinn' },\n { value: 'Athens', label: '(GMT+02:00) Athens' },\n { value: 'Bucharest', label: '(GMT+02:00) Bucharest' },\n { value: 'Cairo', label: '(GMT+02:00) Cairo' },\n { value: 'Harare', label: '(GMT+02:00) Harare' },\n { value: 'Helsinki', label: '(GMT+02:00) Helsinki' },\n { value: 'Jerusalem', label: '(GMT+02:00) Jerusalem' },\n { value: 'Kaliningrad', label: '(GMT+02:00) Kaliningrad' },\n { value: 'Kyiv', label: '(GMT+02:00) Kyiv' },\n { value: 'Pretoria', label: '(GMT+02:00) Pretoria' },\n { value: 'Riga', label: '(GMT+02:00) Riga' },\n { value: 'Sofia', label: '(GMT+02:00) Sofia' },\n { value: 'Vilnius', label: '(GMT+02:00) Vilnius' },\n { value: 'Belgrade', label: '(GMT+01:00) Belgrade' },\n { value: 'Zurich', label: '(GMT+01:00) Zurich' },\n { value: 'Zagreb', label: '(GMT+01:00) Zagreb' },\n { value: 'West Central Africa', label: '(GMT+01:00) West Central Africa' },\n { value: 'Warsaw', label: '(GMT+01:00) Warsaw' },\n { value: 'Vienna', label: '(GMT+01:00) Vienna' },\n { value: 'Stockholm', label: '(GMT+01:00) Stockholm' },\n { value: 'Skopje', label: '(GMT+01:00) Skopje' },\n { value: 'Sarajevo', label: '(GMT+01:00) Sarajevo' },\n { value: 'Rome', label: '(GMT+01:00) Rome' },\n { value: 'Prague', label: '(GMT+01:00) Prague' },\n { value: 'Paris', label: '(GMT+01:00) Paris' },\n { value: 'Madrid', label: '(GMT+01:00) Madrid' },\n { value: 'Ljubljana', label: '(GMT+01:00) Ljubljana' },\n { value: 'Copenhagen', label: '(GMT+01:00) Copenhagen' },\n { value: 'Budapest', label: '(GMT+01:00) Budapest' },\n { value: 'Brussels', label: '(GMT+01:00) Brussels' },\n { value: 'Bratislava', label: '(GMT+01:00) Bratislava' },\n { value: 'Bern', label: '(GMT+01:00) Bern' },\n { value: 'Berlin', label: '(GMT+01:00) Berlin' },\n { value: 'Amsterdam', label: '(GMT+01:00) Amsterdam' },\n { value: 'Dublin', label: '(GMT+00:00) Dublin' },\n { value: 'UTC', label: '(GMT+00:00) UTC' },\n { value: 'Monrovia', label: '(GMT+00:00) Monrovia' },\n { value: 'London', label: '(GMT+00:00) London' },\n { value: 'Lisbon', label: '(GMT+00:00) Lisbon' },\n { value: 'Edinburgh', label: '(GMT+00:00) Edinburgh' },\n { value: 'Casablanca', label: '(GMT+00:00) Casablanca' },\n { value: 'Cape Verde Is.', label: '(GMT-01:00) Cape Verde Is.' },\n { value: 'Azores', label: '(GMT-01:00) Azores' },\n { value: 'Greenland', label: '(GMT-02:00) Greenland' },\n { value: 'Mid-Atlantic', label: '(GMT-02:00) Mid-Atlantic' },\n { value: 'Buenos Aires', label: '(GMT-03:00) Buenos Aires' },\n { value: 'Brasilia', label: '(GMT-03:00) Brasilia' },\n { value: 'Montevideo', label: '(GMT-03:00) Montevideo' },\n {\n value: 'Atlantic Time (Canada)',\n label: '(GMT-04:00) Atlantic Time (Canada)',\n },\n { value: 'La Paz', label: '(GMT-04:00) La Paz' },\n { value: 'Georgetown', label: '(GMT-04:00) Georgetown' },\n { value: 'Caracas', label: '(GMT-04:00) Caracas' },\n { value: 'Puerto Rico', label: '(GMT-04:00) Puerto Rico' },\n { value: 'Newfoundland', label: '(GMT-03:30) Newfoundland' },\n { value: 'Santiago', label: '(GMT-04:00) Santiago' },\n { value: 'Indiana (East)', label: '(GMT-05:00) Indiana (East)' },\n { value: 'Quito', label: '(GMT-05:00) Quito' },\n { value: 'Lima', label: '(GMT-05:00) Lima' },\n {\n value: 'Eastern Time (US & Canada)',\n label: '(GMT-05:00) Eastern Time (US & Canada)',\n },\n { value: 'Bogota', label: '(GMT-05:00) Bogota' },\n { value: 'Central America', label: '(GMT-06:00) Central America' },\n { value: 'Saskatchewan', label: '(GMT-06:00) Saskatchewan' },\n { value: 'Monterrey', label: '(GMT-06:00) Monterrey' },\n { value: 'Mexico City', label: '(GMT-06:00) Mexico City' },\n { value: 'Guadalajara', label: '(GMT-06:00) Guadalajara' },\n { value: 'Chihuahua', label: '(GMT-06:00) Chihuahua' },\n {\n value: 'Central Time (US & Canada)',\n label: '(GMT-06:00) Central Time (US & Canada)',\n },\n { value: 'Arizona', label: '(GMT-07:00) Arizona' },\n {\n value: 'Mountain Time (US & Canada)',\n label: '(GMT-07:00) Mountain Time (US & Canada)',\n },\n { value: 'Mazatlan', label: '(GMT-07:00) Mazatlan' },\n {\n value: 'Pacific Time (US & Canada)',\n label: '(GMT-08:00) Pacific Time (US & Canada)',\n },\n { value: 'Tijuana', label: '(GMT-08:00) Tijuana' },\n { value: 'Alaska', label: '(GMT-09:00) Alaska' },\n { value: 'Hawaii', label: '(GMT-10:00) Hawaii' },\n { value: 'American Samoa', label: '(GMT-11:00) American Samoa' },\n { value: 'Midway Island', label: '(GMT-11:00) Midway Island' },\n {\n value: 'International Date Line West',\n label: '(GMT-12:00) International Date Line West',\n },\n]\nexport const RAILS_TIME_ZONE_TO_JAVASCRIPT = {\n 'Tokelau Is.': 'Pacific/Fakaofo',\n Samoa: 'Pacific/Apia',\n \"Nuku'alofa\": 'Pacific/Tongatapu',\n Kamchatka: 'Asia/Kamchatka',\n 'Marshall Is.': 'Pacific/Majuro',\n Wellington: 'Pacific/Auckland',\n 'Chatham Is.': 'Pacific/Chatham',\n Auckland: 'Pacific/Auckland',\n Fiji: 'Pacific/Fiji',\n 'Solomon Is.': 'Pacific/Guadalcanal',\n Srednekolymsk: 'Asia/Srednekolymsk',\n 'New Caledonia': 'Pacific/Noumea',\n Magadan: 'Asia/Magadan',\n Hobart: 'Australia/Hobart',\n Vladivostok: 'Asia/Vladivostok',\n Sydney: 'Australia/Sydney',\n 'Port Moresby': 'Pacific/Port_Moresby',\n Melbourne: 'Australia/Melbourne',\n Guam: 'Pacific/Guam',\n Canberra: 'Australia/Melbourne',\n Brisbane: 'Australia/Brisbane',\n Adelaide: 'Australia/Adelaide',\n Yakutsk: 'Asia/Yakutsk',\n Tokyo: 'Asia/Tokyo',\n Seoul: 'Asia/Seoul',\n Sapporo: 'Asia/Tokyo',\n Osaka: 'Asia/Tokyo',\n Darwin: 'Australia/Darwin',\n 'Hong Kong': 'Asia/Hong_Kong',\n Beijing: 'Asia/Shanghai',\n Chongqing: 'Asia/Chongqing',\n Ulaanbaatar: 'Asia/Ulaanbaatar',\n Taipei: 'Asia/Taipei',\n Singapore: 'Asia/Singapore',\n Perth: 'Australia/Perth',\n 'Kuala Lumpur': 'Asia/Kuala_Lumpur',\n Irkutsk: 'Asia/Irkutsk',\n Hanoi: 'Asia/Bangkok',\n Novosibirsk: 'Asia/Novosibirsk',\n Krasnoyarsk: 'Asia/Krasnoyarsk',\n Jakarta: 'Asia/Jakarta',\n Bangkok: 'Asia/Bangkok',\n Dhaka: 'Asia/Dhaka',\n Rangoon: 'Asia/Rangoon',\n Urumqi: 'Asia/Urumqi',\n Astana: 'Asia/Dhaka',\n Tashkent: 'Asia/Tashkent',\n Kathmandu: 'Asia/Kathmandu',\n 'Sri Jayawardenepura': 'Asia/Colombo',\n 'New Delhi': 'Asia/Kolkata',\n Mumbai: 'Asia/Kolkata',\n Kolkata: 'Asia/Kolkata',\n Chennai: 'Asia/Kolkata',\n Karachi: 'Asia/Karachi',\n Islamabad: 'Asia/Karachi',\n Ekaterinburg: 'Asia/Yekaterinburg',\n Almaty: 'Asia/Almaty',\n Samara: 'Europe/Samara',\n Muscat: 'Asia/Muscat',\n Baku: 'Asia/Baku',\n 'Abu Dhabi': 'Asia/Muscat',\n Kabul: 'Asia/Kabul',\n Yerevan: 'Asia/Yerevan',\n Tbilisi: 'Asia/Tbilisi',\n Kuwait: 'Asia/Kuwait',\n Tehran: 'Asia/Tehran',\n Baghdad: 'Asia/Baghdad',\n Istanbul: 'Europe/Istanbul',\n Volgograd: 'Europe/Volgograd',\n 'St. Petersburg': 'Europe/Moscow',\n Riyadh: 'Asia/Riyadh',\n Nairobi: 'Africa/Nairobi',\n Moscow: 'Europe/Moscow',\n Minsk: 'Europe/Minsk',\n Tallinn: 'Europe/Tallinn',\n Athens: 'Europe/Athens',\n Bucharest: 'Europe/Bucharest',\n Cairo: 'Africa/Cairo',\n Harare: 'Africa/Harare',\n Helsinki: 'Europe/Helsinki',\n Jerusalem: 'Asia/Jerusalem',\n Kaliningrad: 'Europe/Kaliningrad',\n Kyiv: 'Europe/Kiev',\n Pretoria: 'Africa/Johannesburg',\n Riga: 'Europe/Riga',\n Sofia: 'Europe/Sofia',\n Vilnius: 'Europe/Vilnius',\n Belgrade: 'Europe/Belgrade',\n Zurich: 'Europe/Zurich',\n Zagreb: 'Europe/Zagreb',\n 'West Central Africa': 'Africa/Algiers',\n Warsaw: 'Europe/Warsaw',\n Vienna: 'Europe/Vienna',\n Stockholm: 'Europe/Stockholm',\n Skopje: 'Europe/Skopje',\n Sarajevo: 'Europe/Sarajevo',\n Rome: 'Europe/Rome',\n Prague: 'Europe/Prague',\n Paris: 'Europe/Paris',\n Madrid: 'Europe/Madrid',\n Ljubljana: 'Europe/Ljubljana',\n Copenhagen: 'Europe/Copenhagen',\n Budapest: 'Europe/Budapest',\n Brussels: 'Europe/Brussels',\n Bratislava: 'Europe/Bratislava',\n Bern: 'Europe/Zurich',\n Berlin: 'Europe/Berlin',\n Amsterdam: 'Europe/Amsterdam',\n Dublin: 'Europe/Dublin',\n UTC: 'Etc/UTC',\n Monrovia: 'Africa/Monrovia',\n London: 'Europe/London',\n Lisbon: 'Europe/Lisbon',\n Edinburgh: 'Europe/London',\n Casablanca: 'Africa/Casablanca',\n 'Cape Verde Is.': 'Atlantic/Cape_Verde',\n Azores: 'Atlantic/Azores',\n Greenland: 'America/Godthab',\n 'Mid-Atlantic': 'Atlantic/South_Georgia',\n 'Buenos Aires': 'America/Argentina/Buenos_Aires',\n Brasilia: 'America/Sao_Paulo',\n Montevideo: 'America/Montevideo',\n 'Atlantic Time (Canada)': 'America/Halifax',\n 'La Paz': 'America/La_Paz',\n Georgetown: 'America/Guyana',\n Caracas: 'America/Caracas',\n 'Puerto Rico': 'America/Puerto_Rico',\n Newfoundland: 'America/St_Johns',\n Santiago: 'America/Santiago',\n 'Indiana (East)': 'America/Indiana/Indianapolis',\n Quito: 'America/Lima',\n Lima: 'America/Lima',\n 'Eastern Time (US & Canada)': 'America/New_York',\n Bogota: 'America/Bogota',\n 'Central America': 'America/Guatemala',\n Saskatchewan: 'America/Regina',\n Monterrey: 'America/Monterrey',\n 'Mexico City': 'America/Mexico_City',\n Guadalajara: 'America/Mexico_City',\n Chihuahua: 'America/Chihuahua',\n 'Central Time (US & Canada)': 'America/Chicago',\n Arizona: 'America/Phoenix',\n 'Mountain Time (US & Canada)': 'America/Denver',\n Mazatlan: 'America/Mazatlan',\n 'Pacific Time (US & Canada)': 'America/Los_Angeles',\n Tijuana: 'America/Tijuana',\n Alaska: 'America/Juneau',\n Hawaii: 'Pacific/Honolulu',\n 'American Samoa': 'Pacific/Pago_Pago',\n 'Midway Island': 'Pacific/Midway',\n 'International Date Line West': 'Etc/GMT+12',\n}\n","// import React from 'react'\n\nimport { usePaneState } from 'contexts/pane-memory-context'\n\nimport { Accordion } from 'components/elements/Layout'\n\nexport const useAccordion = accordionKey => {\n const [openEntryId, setOpenEntryId] = usePaneState(\n accordionKey,\n 'ACCORDION_openEntryId',\n null,\n )\n\n const isOpen = id => openEntryId === id\n\n const toggle = id => setOpenEntryId(s => (s === id ? null : id))\n\n const closeAccordion = () => setOpenEntryId(null)\n\n const openAccordionEntry = id => setOpenEntryId(id)\n\n return { Accordion, toggle, isOpen, closeAccordion, openAccordionEntry }\n}\n","import { usePaneState } from 'contexts/pane-memory-context'\n\nexport const START_OPEN = false\nexport const START_CLOSED = true\n\nexport const useListControls = (listControlsKey, startCollapsed = false) => {\n const [collapseControls, setCollapseControls] = usePaneState(\n listControlsKey,\n 'LISTCONTROLS_collapsed',\n startCollapsed,\n )\n\n const listIsOpen = () => collapseControls == false\n\n const toggleList = () => setCollapseControls(t => !t)\n\n const closeListControls = () => setCollapseControls(true)\n\n const openListControls = () => setCollapseControls(false)\n\n return {\n collapseControls,\n setCollapseControls,\n toggleList,\n listIsOpen,\n closeListControls,\n openListControls,\n }\n}\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// import apis\nimport { apiFetchRecentEvents } from 'api/members'\n\n// import redux, selectors, actions\n\n// import contexts\nimport { useCurrentUserState } from 'contexts/current-user-context'\n\n// import hooks\n\n// import utilities\n\n// import common elements\n\n// import components\n\n// import styles\n\n// local constants\n\n// --------------------\n\nexport const useMemberRecentEvents = ({ member }) => {\n const currentUser = useCurrentUserState()\n const memberId = member.id\n const [fetchRecent, setFetchRecent] = React.useState(0)\n const [recentEvents, setRecentEvents] = React.useState([])\n const [showRecentEvents, setShowRecentEvents] = React.useState(false)\n const [offset, setOffset] = React.useState(0)\n const [canFetchMore, setCanFetchMore] = React.useState(true)\n\n const priorPlayCount = React.useRef(member.play_count)\n const playCount = member.play_count\n\n React.useEffect(() => {\n if (playCount != priorPlayCount.current) {\n setFetchRecent(s => s + 1)\n setOffset(0)\n setCanFetchMore(true)\n setShowRecentEvents(false)\n setRecentEvents([])\n priorPlayCount.current = playCount\n }\n }, [playCount, priorPlayCount, setFetchRecent])\n\n React.useEffect(() => {\n if (fetchRecent) {\n apiFetchRecentEvents(memberId, 0, {\n success: resp => {\n setShowRecentEvents(true)\n setRecentEvents(resp.recent_events)\n setOffset(0)\n setCanFetchMore(true)\n },\n })\n }\n }, [fetchRecent, memberId])\n\n React.useEffect(() => {\n if (offset > 0) {\n apiFetchRecentEvents(memberId, offset, {\n success: resp => {\n setRecentEvents(re => [...re, ...resp.recent_events])\n if (resp.recent_events.length < 5) {\n setCanFetchMore(false)\n }\n },\n })\n }\n }, [offset, memberId])\n\n const canFetchRecentEvents =\n currentUser.canManageGroupId(member.group_id) &&\n member.play_count > 0 &&\n fetchRecent === 0\n\n const getRecentEvents = () => setFetchRecent(s => s + 1)\n\n const getMoreRecentEvents = () => setOffset(o => o + 1)\n\n return {\n getRecentEvents,\n showRecentEvents,\n canFetchRecentEvents,\n recentEvents,\n getMoreRecentEvents,\n canFetchMore,\n }\n}\n\nuseMemberRecentEvents.propTypes = {\n member: PropTypes.object.isRequired,\n}\n","import { usePageState } from 'contexts/page-context'\nimport { navKeyFor } from 'contexts/page-context/nav_methods'\n\nexport const useNavFunctions = () => {\n const { nav, activeNavKey, navKeys } = usePageState()\n\n const hasSubNav = pane => {\n const selectedNav = nav[navKeyFor(pane, nav)]\n if (selectedNav[pane] && selectedNav[pane].length > 0) {\n return true\n }\n return false\n }\n\n const subNavPanesFor = pane => {\n if (hasSubNav(pane)) {\n return nav[navKeyFor(pane, nav)][pane]\n }\n return null\n }\n\n const getNavLevel = () => `level${navKeys.indexOf(activeNavKey)}`\n\n return { hasSubNav, subNavPanesFor, getNavLevel }\n}\n","import React from 'react'\n\nimport { usePaneState } from 'contexts/pane-memory-context'\n\nimport { Button } from 'react-bootstrap'\n\nexport const useWide = (starting = false) => {\n const [wide, _setWide] = usePaneState('SSCU|body', 'wide', starting)\n return { wide }\n}\n\nexport const useWidthToggle = (starting = false) => {\n const [wide, setWide] = usePaneState('SSCU|body', 'wide', starting)\n\n React.useEffect(() => {\n document.body.classList.toggle('full-width-container', wide)\n return () => {\n document.body.classList.remove('full-width-container')\n }\n }, [wide])\n\n const widthToggle = () => {\n setWide(t => !t)\n }\n\n const forceWidthUpdate = canBeWide => {\n document.body.classList.toggle('full-width-container', canBeWide && wide)\n }\n\n const widthButton = (\n \n {wide ? '-><-' : '<-->'}\n \n )\n\n return { widthButton, wide, setWide, forceWidthUpdate }\n}\n","import React from 'react'\n\nfunction getWindowDimensions() {\n const { innerWidth: width, innerHeight: height } = window\n return {\n width,\n height,\n }\n}\n\nexport default function useWindowDimensions() {\n const [windowDimensions, setWindowDimensions] = React.useState(\n getWindowDimensions(),\n )\n\n React.useEffect(() => {\n function handleResize() {\n setWindowDimensions(getWindowDimensions())\n }\n\n window.addEventListener('resize', handleResize)\n return () => window.removeEventListener('resize', handleResize)\n }, [])\n\n return windowDimensions\n}\n","import styled from 'styled-components'\nimport { stratColor, ColorConstants } from 'helpers/colors.js'\n\nexport const StratDefContainer = styled.div`\n margin: 20px 0px;\n background-color: ${ColorConstants.bg.well};\n border-radius: 10px;\n padding: 5px;\n`\n\nexport const StratDefContent = styled.div``\n\nexport const StratRangeDef = styled.div`\n font-size: 13px;\n border: 5px solid #ffffff;\n table {\n margin: 0;\n }\n`\n\nexport const StratRow = styled.tr`\n background-color: ${p => stratColor(p.$stratLabel, 'bg')};\n .strat-label {\n font-size: 24px;\n font-weight: 900;\n color: ${p => stratColor(p.$stratLabel, 'text')};\n }\n`\n\nexport const StratText = styled.div`\n font-weight: 700;\n ${p => p.$small && 'font-size: 85%;'}\n`\n\nexport const SectionStratCounts = styled.div`\n flex: 1 1 auto !important;\n text-align: right;\n display: flex;\n justify-content: flex-end;\n gap: 10px;\n @media (max-width: 599px) {\n flex-direction: column;\n }\n`\n","// import packages\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { convertToLocalTime } from 'date-fns-timezone'\nimport { toast } from 'react-toastify'\n\n// import apis\nimport { apiCloneEvent, apiDeleteEvent } from 'api/events'\nimport { apiCheckTeamsValidity } from 'api/team_events'\n\n// import redux, selectors, actions\nimport { useSelector, useDispatch } from 'react-redux'\nimport { addNewEvent, deleteEvent } from 'redux/actions/events.js'\nimport {\n getGroup,\n getClub,\n getLocation,\n} from 'redux/selectors/shared_selectors'\n\n// import contexts\nimport { useCurrentUserState } from 'contexts/current-user-context'\nimport { usePageDispatch } from 'contexts/page-context'\n\n// import hooks\nimport { useAccordion } from 'hooks/useAccordion'\n\n// import utilities\nimport { toTitleCase } from 'helpers/utilities.js'\n\n// import common elements\nimport { ButtonToolbar, Button, Collapse } from 'react-bootstrap'\nimport {\n TableCountTag,\n EventSignupStatusTag,\n EventFullTag,\n PrivateEventTag,\n} from 'components/elements/Tags/'\nimport {\n HelpText,\n NavigateToEvent,\n DatePickerWithTimeZone,\n ScoringProgress,\n Confirm,\n} from 'components/elements/Misc/'\nimport { Icon } from 'components/elements/Icons'\nimport {\n EventComment,\n EventDate,\n EventType,\n EventTimeRange,\n} from 'components/elements/Event'\n\n// import components\nimport PlayerList from 'components/shared/PlayerList'\n\n// import styles\n\n// local constants\nconst deleteMessage = (\n \n Are you sure you want to delele this event? It might be better to{' '}\n cancel the event so your players will know it is not\n happening. To cancel the event, go to the event page, click the{' '}\n Edit Event Setup button on the Configure menu, then choose\n ‘Cancel Event’ from the top right.\n \n)\n\n// --------------------\n\nconst GroupEvent = props => {\n const { accordionKey, groupId, event } = props\n const { Accordion } = useAccordion(accordionKey)\n const { openPanel } = usePageDispatch()\n const timeZone = event.tz\n const currentUser = useCurrentUserState()\n const reduxDispatch = useDispatch()\n const [cloning, setCloning] = React.useState(false)\n const [cloneDate, setCloneDate] = React.useState(event.starts_at)\n\n const [deleting, setDeleting] = React.useState(false)\n\n const group = useSelector(state => getGroup(state, groupId))\n const club = useSelector(state => getClub(state, group.club_id))\n const location = useSelector(state => getLocation(state, event.location_id))\n\n const handleDateChange = value => {\n setCloneDate(value)\n }\n\n const addWeek = () => {\n const newDate = new Date(cloneDate)\n newDate.setDate(newDate.getDate() + 7)\n setCloneDate(convertToLocalTime(newDate, { timeZone }))\n }\n\n const canManageGroup = () => {\n return currentUser.canManageGroupId(groupId)\n }\n\n const canEditEvent = () => canManageGroup()\n\n const editEvent = () => {\n openPanel('edit-event', event.id)\n }\n\n const canCloneEvent = () => {\n // When displayed from the Admin page, upcomingGroupEventDates is not passed\n return (\n canManageGroup() && typeof props.upcomingGroupEventDates != 'undefined'\n )\n }\n\n const cloneEvent = () => {\n setCloning(true)\n }\n\n const cancelClone = () => {\n setCloning(false)\n }\n\n const cloneError = resp => {\n let msg = []\n if (resp.errors) {\n for (const field in resp.errors) {\n msg.push(`${field}: ${resp.errors[field]}`)\n }\n } else if (resp.error) {\n msg.push(resp.error)\n } else {\n msg.push('An error was encountered.')\n }\n toast.error(msg.join(','))\n }\n\n const saveClone = () => {\n apiCloneEvent(event.id, cloneDate, {\n success: () => setCloning(false),\n error: cloneError,\n successMsg: 'Successfully cloned event',\n successDispatch: [reduxDispatch, addNewEvent],\n })\n }\n\n const saveCloneAndAddAnother = () => {\n apiCloneEvent(event.id, cloneDate, {\n error: cloneError,\n successMsg: 'Successfully cloned event',\n successDispatch: [reduxDispatch, addNewEvent],\n })\n }\n\n const checkTeamsValidity = () => {\n apiCheckTeamsValidity(event.id, { successMsg: 'Teams look okay.' })\n }\n\n const removeEvent = () => setDeleting(true)\n\n const reallyDelete = () => {\n apiDeleteEvent(event.id, {\n successDispatch: [reduxDispatch, deleteEvent],\n successMsg: 'Deleted event',\n })\n }\n\n return (\n <>\n \n \n {props.showGroup && (\n \n {club.title} / {group.title}\n \n )}\n
\n \n
\n \n \n \n \n
\n\n \n {props.pastOrCompleted ? (\n \n \n \n ) : (\n \n \n \n \n \n )}\n \n \n\n \n \n \n
\n\n \n \n
\n \n
\n
{location.title}
\n
Signup by: {toTitleCase(event.event_type)}
\n {!props.pastOrCompleted && (\n
\n {group.cancel_requires_sub && (\n
Cancelling requires specifying a sub
\n )}\n \n {event.full && (\n \n )}\n
\n )}\n {event.pricing_tier != 'rsvp' && (\n
\n Scoring Progress:{' '}\n \n
\n )}\n \n
\n \n
Playing: {event.playing_count}
\n {event.waiting_count > 0 &&
Waiting: {event.waiting_count}
}\n {event.sub_count > 0 &&
Willing to Sub: {event.sub_count}
}\n {event.cancelled_count > 0 && (\n
Cannot Play: {event.cancelled_count}
\n )}\n {event.allowed_count > 0 && (\n
Invited to private event: {event.allowed_count}
\n )}\n
\n {canEditEvent() && (\n
\n \n
\n )}\n\n {event.scoring_progress == 'not_started' && (\n
\n \n
\n )}\n setDeleting(false)}\n />\n {event.event_type == 'TeamEvent' && (\n
\n \n
\n )}\n
\n
\n \n {canCloneEvent() && (\n
\n \n
\n Date for cloned event:\n \n
\n Existing events are highlighted in green. Selected date is\n in blue.\n
\n \n
\n
\n {cloning ? (\n \n \n \n \n Save and add another\n \n \n \n ) : (\n \n )}\n
\n )}\n
\n
\n \n )\n}\n\nexport default GroupEvent\n\nGroupEvent.propTypes = {\n accordionKey: PropTypes.string.isRequired,\n upcomingGroupEventDates: PropTypes.array,\n groupId: PropTypes.number.isRequired,\n event: PropTypes.object.isRequired,\n pastOrCompleted: PropTypes.bool.isRequired,\n showGroup: PropTypes.bool,\n withTime: PropTypes.bool,\n}\n","import {\n DELETE_ACCOUNT,\n LOAD_ACCOUNT,\n LOAD_ACCOUNTS,\n UPDATE_ACCOUNT,\n} from 'redux/action_types.js'\n\nexport function loadAccounts(response) {\n return {\n type: LOAD_ACCOUNTS,\n ...response,\n }\n}\n\nexport function loadAccount(response) {\n return {\n type: LOAD_ACCOUNT,\n ...response,\n }\n}\n\nexport function updateAccount(response) {\n return {\n type: UPDATE_ACCOUNT,\n ...response,\n }\n}\n\nexport function deleteAccount(response) {\n return {\n type: DELETE_ACCOUNT,\n accountId: response.id,\n }\n}\n","import {\n DELETE_EVENT,\n ADD_EVENT,\n UPDATE_USER_EVENT,\n LOAD_USER_EVENTS,\n} from 'redux/action_types.js'\n\nexport function updateUserEvent(data) {\n return {\n type: UPDATE_USER_EVENT,\n event: data.event,\n signup_list: data.signup_list,\n }\n}\n\nexport function addNewEvent(data) {\n return {\n type: ADD_EVENT,\n event: data.event,\n group_event: data.group_event,\n }\n}\n\nexport function deleteEvent(response) {\n return {\n type: DELETE_EVENT,\n eventId: response.id,\n group: response.group,\n }\n}\n\nexport function loadUserEvents(response) {\n return {\n type: LOAD_USER_EVENTS,\n ...response,\n }\n}\n","import {\n AUGMENT_GROUP_EVENTS,\n LOAD_MORE_PAST_EVENTS,\n UPDATE_GROUP_EVENT,\n REMOVE_GROUP_EVENTS,\n} from 'redux/action_types.js'\n\nexport function augmentGroupEvents(response) {\n return {\n type: AUGMENT_GROUP_EVENTS,\n group_events: response.events,\n groups: response.groups,\n clubs: response.clubs,\n locations: response.locations,\n }\n}\n\nexport function loadMorePastEvents(response) {\n // from the Manager/Events tab on user home page\n return {\n type: LOAD_MORE_PAST_EVENTS,\n group_events: response.events,\n group_id: response.group_id,\n no_more_past_events: response.events.length < 30,\n }\n}\n\nexport function updateGroupEvent(response) {\n return {\n type: UPDATE_GROUP_EVENT,\n group_event: response.event,\n }\n}\n\nexport function removeGroupEvents(groupId) {\n return {\n type: REMOVE_GROUP_EVENTS,\n groupId,\n }\n}\n","import {\n ADD_HELPER,\n REFRESH_EVENT_ON,\n REFRESH_EVENT_OFF,\n} from 'redux/action_types.js'\n\nexport function addHelper(key, value) {\n return {\n type: ADD_HELPER,\n helper: { [key]: value },\n }\n}\n\nexport function loadAllGroupClubOptions(response) {\n return {\n type: ADD_HELPER,\n helper: { all_group_club_options: response },\n }\n}\n\nexport function refreshEventOn() {\n return {\n type: REFRESH_EVENT_ON,\n }\n}\n\nexport function refreshEventOff() {\n return {\n type: REFRESH_EVENT_OFF,\n }\n}\n","import { ADD_MEMBER, UPDATE_MEMBER, DELETE_MEMBER } from 'redux/action_types.js'\n\nexport function addMember(response) {\n return {\n type: ADD_MEMBER,\n member: response.member,\n user: response.user,\n }\n}\n\nexport function updateMember(data) {\n return {\n type: UPDATE_MEMBER,\n ...data,\n }\n}\n\nexport function deleteMember(response) {\n return {\n type: DELETE_MEMBER,\n memberId: response.id,\n user: response.user,\n }\n}\n","import {\n AUGMENT_MOVEMENTS,\n LOAD_MOVEMENTS,\n ADD_MOVEMENT,\n UPDATE_MOVEMENT,\n DELETE_MOVEMENT,\n} from 'redux/action_types.js'\n\nexport function augmentMovements(movements) {\n return {\n type: AUGMENT_MOVEMENTS,\n movements,\n }\n}\n\nexport function loadMovements(response) {\n return {\n type: LOAD_MOVEMENTS,\n movements: response.movements,\n clubs: response.clubs,\n }\n}\n\nexport function addMovement(response) {\n return {\n type: ADD_MOVEMENT,\n movement: response.movement,\n }\n}\n\nexport function updateMovement(response) {\n return {\n type: UPDATE_MOVEMENT,\n movement: response.movement,\n }\n}\n\nexport function deleteMovement(response) {\n return {\n type: DELETE_MOVEMENT,\n movementId: response.id,\n }\n}\n","import {\n LOAD_USER_HOME_PAGE,\n LOAD_USERS,\n LOAD_USER,\n UPDATE_USER,\n DELETE_USER,\n MERGE_USER,\n} from 'redux/action_types.js'\n\nexport function loadUserHomePage(response) {\n return {\n type: LOAD_USER_HOME_PAGE,\n ...response,\n }\n}\n\nexport function loadUsers(response) {\n // May include users, groups, clubs, members\n return {\n type: LOAD_USERS,\n ...response,\n }\n}\n\nexport function loadUser(response) {\n // May include user, members, groups, clubs\n return {\n type: LOAD_USER,\n ...response,\n }\n}\n\nexport function deleteUser(response) {\n return {\n type: DELETE_USER,\n userId: response.id,\n }\n}\n// callback function after change detected\nexport function updateUser(data) {\n return {\n type: UPDATE_USER,\n ...data,\n }\n}\n\nexport function mergeUser(response) {\n return {\n type: MERGE_USER,\n ...response,\n }\n}\n","import styled, { css } from 'styled-components'\nimport { ColorConstants } from 'helpers/colors'\n\nexport const SettingsContainer = styled.div`\n display: flex;\n gap: 15px;\n flex-flow: row wrap;\n @media print {\n display: none;\n }\n ${p =>\n p.$size == 'xs' &&\n css`\n .form-group {\n margin-bottom: 0;\n }\n .form-group .form-control {\n height: 25px;\n padding: 2px 4px;\n line-height: 1.2;\n }\n .form-group .input-group-addon {\n padding: 2px 6px;\n }\n `}\n .find-someone-result {\n padding: 5px;\n }\n`\nexport const SettingsElement = styled.div`\n display: flex;\n flex-direction: column;\n ${p => p.$fullWidth && 'flex 0 0 100%;'}\n`\nexport const SettingsTitle = styled.div`\n font-size: 70%;\n color: ${ColorConstants.text.default};\n text-transform: uppercase;\n line-height: 1;\n border-bottom: 1px dashed #777;\n margin-bottom: 2px;\n`\nexport const SettingsBreaker = styled.div`\n flex-basis: 100%;\n height: 0;\n`\n\nexport const TextInButtonToolbar = styled.div`\n float: left;\n margin-left: 5px;\n`\n"],"names":["apiLoadAccounts","controls","get","apiLoadAccount","accountId","apiUpdateAccount","account","patch","apiAccountChangePlan","planId","plan_id","apiAccountChangeCreditCard","data","apiDeleteAccount","destroy","apiAddPlanOverride","override","apiDeletePlanOverride","starting","apiDeactivateAllGroups","apiGenerateOffCycleInvoice","off_cycle_date","apiGetLastPayouts","apiResetDemo","id","apiGetClubListing","apiGetAllUserActivity","page","apiGetSingleUserActivity","apiFetchEventList","eventType","apiFetchSingleEvent","eventId","apiFetchYearData","year","apiGetEventsSummary","apiStratified","stratified","apiRefreshEvent","apiToggleSignupOpen","source","apiChangeEventOption","option_name","value","apiSaveStrata","strata","clear_overrides","apiMemberSeatingHistory","apiToggleDirector","user_id","apiFetchPlayerList","apiUpdateEvent","apiChangeEventType","event_type","apiDeleteEvent","apiObliterateEvent","apiCloneEvent","new_date","post","apiPaymentLogs","apiResetPaymentCaches","apiSignupLogs","apiFindEvents","month","apiProcessAutoPays","apiRemoveAllScoring","apiAuditSignups","attemptFixes","apiRecomputeEstimatedAcblAwards","apiQuickAddEvent","apiReturnToSetup","apiAllow","event_id","member_id","apiDisallow","signup_id","apiCheckIn","apiChangeSignupPaymentType","payment_type","apiAdjustEventFee","adjusted_event_fee","apiFetchRelatedSignups","signupId","apiChangeSignupStationaryPreference","pref","apiGetSignupOverlaps","apiFindSomeone","text","fields","search_type","apiCheckAcblName","acbl_number","apiFindAcblNumber","short","apiGetMasterpointDate","apiFindUsersForClub","last","exact_match","club_id","apiGetUserList","userIds","join","apiFindMismatchedNames","apiFindMissingNumbers","apiFetchAvailableRegularPartners","apiUpdateMemberStatus","status","apiUpdateManager","manager","apiToggleManagerAsDirector","apiToggleManagerNotification","task","apiUpdateRegularPartner","regular_partner_id","apiUpdateStationaryPreference","stationary_preference","apiUpdatePermPriority","perm_priority","apiUpdateEstimatedMp","estimated_mp_holding","propagate","apiDeleteMember","apiUpdateAdjustedCourseFee","adjusted_course_fee","apiUpdateCoursePaymentMethod","apiChangeMemberStationaryPreference","memberId","event_source","user_source","apiFetchRecentEvents","offset","apiLoadMovements","apiAddMovement","movement","apiUpdateMovement","movementId","apiDeleteMovement","apiGetSectionEventId","apiAddSectionTable","apiRemoveSectionTable","apiSelectMovement","movement_id","apiRunSwiss","rounds","boards_per_round","apiSelectBoardsPerRound","apiStartGame","apiReopenScoring","apiCloseSectionWithoutScoring","apiChangeTeachingMode","teaching_mode","apiUpdateSectionMovement","structure","apiCallRound","apiFixCurrentRound","apiScoreSection","apiForceScoreSection","apiRemoveScoring","apiUnplayedRound","round","apiAllRemainingUnplayed","apiFakeRound","apiFakeRemainder","apiUpdateFouledBoards","apiClearFouledBoards","apiChangeSectionOption","apiSetScorekeeper","table","apiStartRoundTimer","apiChangeRoundTimer","minutes","apiRetrieveMatchingMovements","apiChangeMovement","apiScoringLogs","apiCaddyRequest","message","apiToggleHybridTable","section_id","apiMarkBoardNotPlayedForAll","board","apiFetchAvailablePartnersAndTeamMembers","apiCheckTeamsValidity","glowAnimation","keyframes","ColorConstants","positive","highlight","neonGreen","neonYellow","Glow","styled","Button","withConfig","displayName","componentId","props","React","bsStyle","disabled","onClick","clickAction","children","LockableButtonContainer","div","p","$destructive","border","danger","$constructive","success","bg","Instruction","really","setReally","buttonStyle","destructive","constructive","unlocked","word","toUpperCase","FormGroup","FormControl","type","placeholder","onChange","e","target","className","processing","handleSubmit","action","Spinner","Icon","icon","spaceAfter","warning","StyledNumberButton","n","number","classes","push","selected","handleClick","PrintWindowButton","key","bsSize","printWindow","window","print","style","processingText","loading","refresh","BprButton","bpr","currentBpr","set","setBoardsPerRound","range","allowGeneric","unshift","ButtonToolbar","map","boardsPerRound","event","signup","member","isDirector","directors","includes","team","team_mate_names","table0","partnerName","captain_id","partner_name","pendingPartnerName","pending_partner","first_name","last_name","intro","status_words","signup_time","DirectorTag","hideText","iconFirst","EventComment","withFee","hasComment","comment","length","hasFee","fee","tournament_code","TournamentCode","code","Fee","inColor","weight","currentUser","useCurrentUserState","dateTime","startsAt","starts_at","fullDateInZone","tz","withTime","TimeRange","startOnly","starts","EventFeeContainer","EventSeatingContainer","PreferenceRow","openPanel","usePageDispatch","isPlaying","hasEventFee","hasCourseFee","group","is_course","course_fee","paidForEvent","has_recorded_payment","paidForCourse","FeeWithOverride","adjustedFee","event_fee","PaymentRecorded","payer","withText","forText","hideCourseFee","payForCourse","payForEvent","canPayForEvent","invoiced","CourseEventFee","LocationDetail","address","csz","link","location","showLocationDetail","setShowLocationDetail","fullAddressText","spaceBefore","fullAddress","href","rel","toggleLocationDetail","OpenCloseIcon","open","title","Collapse","in","notes","parse","EventPanelHeading","EPHContainer","DateBox","date","flexed","GroupPanelHeading","compact","groupId","group_id","clubTitle","club_title","groupTitle","group_title","EventRating","acbl_rating","propTypes","PropTypes","isRequired","EventRestrictions","acbl_restrictions","EventSeating","user","isSelf","useSelector","state","getSignup","getMember","showOptions","setShowOptions","changingSignup","setChangingSignup","changingMember","setChangingMember","changingUser","setChangingUser","toggleOptions","t","canChange","canManageUser","changingSomething","changeForGroup","setLoading","successMsg","changeEverywhere","apiChangeUserStationaryPreference","StationaryPreferenceTag","changePref","Loading","HelpText","Date","ends","getTime","duration_in_minutes","HistoricalMasterpointsNote","scoring_progress","award_type","MasterpointsDisclaimer","acblEventId","acbl_results_retrieval","acbl_event_id","strong","RndButton","rnd","currentRnd","setRounds","ScoreComments","score","comments","i","c","commentor","ScoreRecorder","classNames","recorder","recorded_at","SlowTableWarning","StratWords","stratOverride","strat","show","justStrat","mpLevel","commaize","stratify_by","strats","helpers","subjectToChange","StratText","$small","small","label","upper","reverse","toTitleCase","help","error","replace","validationState","ControlLabel","overflow","componentClass","name","field","options","option","HelpBlock","isChecked","controlLabel","Checkbox","checked","RequiredIndicator","required","IndividualCheckbox","inline","DatePicker","highlightDates","highlightedDates","d","placeholderText","withPortal","dateHelp","hasHighlightedDates","DatePickerWithTimeZone","timeZone","showTimeSelect","timeIntervals","dateFormat","timeZoneToggle","fixedHeight","FormEditor","constructor","super","this","editor","handleChange","render","mergeTags","helpEditor","TrixEditor","FormTextInput","inputGroup","InputGroup","prepend","Addon","formControl","append","opts","inputType","inputRef","refNode","autoFocus","ariaLabel","min","max","step","labelText","hideLabel","Radio","FormField","handleDateChange","handleEditorChange","handleCheckboxChange","handleMultiCheckboxChange","canEdit","current","attributes","eventdatepicker","FormEventDatepicker","Object","assign","datepicker","FormDatepicker","select","FormSelect","radio","FormRadio","checkbox","FormCheckbox","multi_checkbox","FormCheckboxMulti","textarea","FormTextArea","Alert","active","AccordionContainer","$withDividers","DividerContainer","EntryContainer","$open","listingOpen","listingClosed","listing","commentInListing","ToggleContainer","EntryLeftContainer","$fixedWidth","$strong","EntryRightContainer","EntryListingIconsContainer","EntryMetaContainer","EntryNavigateContainer","ContentContainer","ContentGridContainer","ContentLeftContainer","ContentRightContainer","ContentMetaContainer","ContentActionsContainer","ContentButtonStackContainer","EntryLeft","fixedWidth","defaultProps","Entry","toggle","isOpen","useAccordion","accordionKey","entryIsOpen","toggleEntry","Left","Right","EntryRight","ListingIcons","EntryListingIcons","Navigate","EntryNavigate","Meta","EntryMeta","Content","Container","grid","ContentRight","ContentMeta","Actions","ContentActions","ButtonStack","ContentButtonStack","Accordion","withDividers","Divider","NavIconContainer","$current","$isNavToggler","NavColors","$navLevel","$subNavOpen","subNavBg","navBg","$isNavCycler","navHighlighted","NavText","Badge","$color","red","$inline","IconContainer","AppIconsContainer","lowerNav","PageIcons","NavIconsContainer","SubNavIconsContainer","MenuItemContent","span","$header","$clubTitle","$groupTitle","muted","default","NavCyclerAboveContainer","CurrentIndicator","AdditionalNavCycleItem","badge","rest","divider","MenuItem","header","Attributes","elementsWide","tight","Buttons","right","Row","vertical","indented","Element","Setting","ControlRow","Control","ControlDescription","getFullYear","showLinks","ErrorBoundary","errorInfo","componentDidCatch","setState","reload","clearStorage","localStorage","clear","sessionStorage","toast","info","Pane","helpPane","Header","whiteSpace","toString","componentStack","InteriorErrorBoundary","getDerivedStateFromError","SettingsElement","$fullWidth","fullWidth","SettingsTitle","LineBreak","SettingsBreaker","ListControlsContainer","instruction","darker","$stickyActive","$fixed","ClosedList","ListControls","sticky","keepHeading","collapseControls","setCollapseControls","useListControls","listControlsKey","stickyActive","setStickyActive","toggleControls","fixed","noClose","bordered","listType","SettingsContainer","$size","size","secondary","Sticky","innerZ","activeClass","top","onStateChange","STATUS_FIXED","startClosed","menuSelectorClassName","getIconClassname","visibleNavKeys","additionalItems","navLevel","useNavFunctions","getNavLevel","activeNavKey","usePageState","setActiveNavKey","setMenu","nk","menuItems","split","pop","Dropdown","pullRight","Col","bsRole","Menu","NavIcon","width","useWindowDimensions","clickArg","toggleSubNav","actions","subNav","path","removeActivePaneKeys","subNavOpen","navText","getNavText","light","negative","TabsContainer","brown","Tabs","intermediateNav","Tab","$active","black","TabContent","NavTabs","memoryKey","tabs","startOpen","firstTab","tab","activeTab","setActiveTab","usePaneState","showTabs","setShowTabs","s","changeTab","content","unloadWarning","Beforeunload","onBeforeunload","preventDefault","refreshing","loadHelpPane","LOAD_HELP_PANE","loadHelpArticle","LOAD_HELP_ARTICLE","loadHelpVideo","LOAD_HELP_VIDEO","Related","transfer","transferTo","related","help_type","selector","tags","helpTags","help_tags","helpTypeIcon","ht","transferToHelpInstructions","renderRelated","rows","pane","article","video","count","tag","values","helpType","keys","helpTypeName","isAdmin","updated_at","apiLoadHelpPane","apiLoadHelpArticle","helpArticle","apiLoadHelpVideo","helpVideo","record","audience","a","audienceOptionLabel","useContextualHelp","helpTerms","help_terms","fetching","popOverIndex","prepContentForPopovers","match","prepContentForButtons","prepContentForImages","img","transformContent","node","attribs","overlay","Popover","definition","OverlayTrigger","rootClose","trigger","placement","prepped","prepContent","transform","helpArticles","help_articles","reduxDispatch","useDispatch","displayed","closeHelp","showingHelp","setFetching","successDispatch","noop","HelpReturn","close","superheading","navButtons","DisplayedContent","Audience","RelatedContent","AdminActions","helpPanes","help_panes","LayoutPane","connect","helpVideos","help_videos","dispatch","bindActionCreators","HelpActions","ReactPlayer","url","playing","height","stackIndex","stack","back","next","transferToHistory","historyItems","h","eventKey","historyTitle","Toggle","Article","Video","CommonContent","navsVisible","closeCommonApp","big","APPS_WITH_SUBNAV","commonAppPane","commonAppPanes","setCommonAppPane","displaySubNav","setDisplaySubNav","app","passedLinks","links","renderElements","items","elements","item","signout","logout","admin_actions","toggleAdminActions","attrs","subnav","currentPath","subitem","finderSubNav","toggleFinderPane","activeAppPane","prevEvent","JSON","nextEvent","acblActive","managesAcblGroup","permanentize","clearDebugOptions","profileSubNav","relinquishable","toggleProfilePane","toggleAppPane","toggleMovementsPane","visible","AppIcons","AppSubNav","subNavFor","AppNav","firstName","clubs","deleting","setDeleting","stationaryCount","stationaries","canEditMovement","canManageClubId","creator_id","canCloneMovement","managedClubIds","canDeleteMovement","round_count","board_set_count","Preferred","preferred","ns_stationary","pluralize","board_group_count","description","EventType","is_barometer","public","section_movements_count","Confirm","confirmButton","onConfirm","reallyDelete","deleteThisMovement","cancelButton","onCancel","cancelDelete","previewMovement","editMovement","cloneMovement","togglePreferred","updateMovement","togglePublic","paneName","closeAccordion","movements","filterTables","setFilterTables","filterBarometer","setFilterBarometer","filterPreferred","setFilterPreferred","filterEventType","setFilterEventType","column","setColumn","direction","setDirection","search","setSearch","canAddMovement","sortValue","toLowerCase","table_count","handleSort","clickedColumn","changeSearch","changeTablesFilter","changeBarometerFilter","changePreferredFilter","changeEventTypeFilter","passesSearchFilter","passesTablesFilter","passesPreferredFilter","passesBarometerFilter","passesEventTypeFilter","sortIcon","thisCol","clearSearch","deleteMovement","movementRows","filteredCount","sortedMovements","sortMovements","sorted","sorter","sort","b","asc","aEmpty","bEmpty","table_count_section","sortMovement","MovementDetails","addMovement","fullCount","ButtonGroup","DropdownButton","onSelect","tableCountRange","counts","tables","SearchFilterResult","totalCount","noun","renderListControls","PreferredMovementNotation","clearPaneMemory","usePaneMemory","closePane","closeAction","forwardAction","closeAll","Return","closeText","heading","MovementEdit","cancel","convertAddToEdit","Movements","movementsLoaded","setMovementsLoaded","defaultClubId","parseInt","transition","panel","panelParameter","closePanel","loadMovements","response","addOrCloneMovement","mvmt","ns_pair","ew_pair","board_set","board_group","board_sets_are_identical","Transition","transitionKey","renderView","EditMovement","MovementDisplay","showTitle","origin","MovementListing","result","canManage","canEditUser","canResendNewUserEmail","email","current_sign_in_at","UserDetails","all","editUserProfile","isSomeKindOfManager","findAcblNumber","showMemberProfiles","resendNewUserEmail","apiResendWelcomeUserEmail","members_count","deleteUser","apiDeleteUser","removeResult","showUserActivity","full_name","showEmailPreferences","showUserCredits","showUserCharges","BecomeLink","allowed","userId","results","resultsReceived","loadAndSelectUser","users","searchName","setSearchName","searchEmail","setSearchEmail","consecutiveMatch","setConsecutiveMatch","searchError","_setSearchError","fullName","filtered","filter","digits","selectFilterCharsInOrder","phone","cell","matchesSearch","PageFilter","Checked","toggleSearchName","toggleSearchEmail","toggleConsecutiveMatch","Someone","updating","setUpdating","preference","setPreference","club","ControlToggle","left","newValue","apiSetEmailPreference","notify","setNotify","getUser","groups","groupIds","membership","group_ids","clubsGroups","club_ids","a_id","b_id","a_club","b_club","clubGroups","a_group","b_group","cg","LimitWidth","toggleNotify","hasId","clubId","ClubRow","email_blocks","GroupRow","sourceChannel","loadedUsers","setLoadedUsers","setResultsReceived","setResults","_setSearchName","_setSearchEmail","_setConsecutiveMatch","_searchError","setSearchError","newResults","assignAcblNumber","acblNumber","apiAssignAcblNumber","updateUser","successClose","apiLoadUser","loadUser","updateCreditBalance","credit_balance","updatedResults","r","UserEdit","FindAcblNumber","MemberProfiles","MemberProfileEdit","UserActivityLog","UserEmailPreferences","AdminCredits","creditableType","creditableId","creditableName","AdminCharges","chargeableType","chargeableId","chargeableName","SearchForSomeone","FindEventContainer","EventList","today","yearMo","y","m","thisYear","thisMonth","getMonth","currentYearMonth","maxYearMonth","minYearMonth","FindEvent","yearMonth","setYearMonth","day","setDay","getDate","events","safelyGet","updated","CalendarSelector","changeYearMonth","dayHighlight","$bg","canGoForward","canGoBack","eventsForDay","dayEvents","MONTH","EventBox","finderPane","FindSomeone","EntryData","EntryTitle","EntryVisibility","VisibleOrHiddenIcon","ProfileSectionTitle","UserProfile","editUser","current_sign_in_formatted","profile_reviewed","profileReviewed","apiUserProfileReviewed","ProfileEntry","username","email_visible","address_visible","csz_visible","phone_visible","cell_visible","discord_user_id","DiscordTag","hasDiscord","discordUser","discord_name","life_master","acbl_active","mp_holding","bbo_name","player_profile","PrivacyControlsMessage","currentUserId","isVisible","setIsVisible","fieldName","visibleStyle","hiddenStyle","makeVisible","apiPrivacyChange","errorMsg","makeHidden","UserPrivacy","findable","ShowHide","UserCredits","setAutoPay","setAutoPurchase","useCurrentUserDispatch","purchasing","setPurchasing","logs","setLogs","updatingAuto","setUpdatingAuto","changeAmount","borderBottom","creditBalance","MakePurchase","closePurchase","recordResult","log","savedCard","startPurchase","autoPay","toggleAutoPay","autoPurchase","toggleAutoPurchase","RbucksLog","additionalLogs","SupportOptions","setActivePane","canDebug","goToGroupAndClubManagers","Debugging","debug","setDebug","getDebugOptions","toggleDebugOption","trackPanels","trackReducer","trackUserSubscription","trackEventSubscription","trackCurrentUserSubscription","trackPlaySubscription","Support","Profile","profilePane","loadingCurrentUser","setLoadingCurrentUser","SingleEvent","auditResults","setAuditResults","resetting","setResetting","auditSignups","audit","clearAudit","ScoringProgress","scoringProgress","sections_count","playing_count","computed_scores_count","computed_plays_count","paid_with_rbucks_count","NavigateToEvent","removeScoring","reallyReset","onDismiss","ParsedHtml","setListType","loadingSingleEvent","setLoadingSingleEvent","singleEvent","setSingleEvent","singleEventId","setSingleEventId","sectionId","setSectionId","sectionEventId","setSectionEventId","groupEvents","group_events","isPastOrCompleted","is_over","scoring_status","singleEventNotFound","eventRows","is_today","GroupEvent","pastOrCompleted","showGroup","listTodaysEvents","augmentGroupEvents","listOpenEvents","listTypeTitle","fetchSingleEvent","clearSingleEvent","goToSectionEvent","resp","bootstrapUtils","addStyle","headerRef","isDemo","scrollTo","scrollIterator","showCopyright","setHeaderRef","ToastContainer","theme","Flip","position","hideProgressBar","autoClose","closeOnClick","ref","logoClickAction","isNotTable","branch","superHeading","selectedContent","PageContent","ContextualHelp","Finder","CommonNav","Copyright","activePane","subNavIsOpen","activeSubNavKey","component","subNavBadges","PaneContainer","$withFormKeyboardAction","PaneHeader","PaneSections","PaneTitle","PaneTitleContent","h1","$hasSuperheading","PaneTitleChildren","HelpPaneTitle","helpHeader","PaneSuperheading","PaneTitleBoard","PaneHeaderActions","$usesBurger","PaneHeaderSwitches","PaneHeaderBoardWrap","PageFilterContainer","PageFilterLabel","ActionListContainer","ActionList","BurgerContainer","WakeLockButton","BoardWrap","Board","Burger","toggleOpen","actionBadge","actionBadgeColor","color","wakeLock","burgerOpen","toggleBurgerOpen","useToggle","actionCount","hasActions","showBurger","burgerAt","widthButton","forceWidthUpdate","useWidthToggle","hasWidthToggle","showWidthToggle","wakeLockActive","released","RefreshButton","showPrint","isSupported","toggleWakeLock","release","request","switches","middleAction","omitHelp","setDisplayed","initializeStack","hasKeyboardAction","spinnerClass","reloadClass","iconClass","isRefreshing","SFRContainer","key1","key2","otherNavKey","otherNavText","otherNavLevel","toggleNav","multiNavElements","navCyclerInMenu","navCycleBadge","Cycler","NavCycler","NavToggler","PageNav","Toolbar","setShow","initialState","ToolbarContainer","$noMargin","noMargin","child","hasContentAbove","Controls","unique","fontSize","hasActive","Tools","$hasActive","$hasContentAbove","contentId","Tool","ToolIcon","$fontSize","closeContent","CollapseContent","toolbar","toolbarContent","TransitionGroup","CSSTransition","exit","timeout","enter","headerClick","headerClickAction","headerText","owner_name","at","event_title","HeaderLink","Logger","ns_pair_number","Math","abs","ew_pair_number","contract","was","logAction","scorer","logMessage","parameters","displayValue","v","stringify","entryCreate","k","entryUpdate","creditEntry","behalf","reason","purchaseEntry","credits","paid","adminCreditEntry","adminDebitEntry","adminTransferEntry","entry","trackable_type","UserLogEntry","EventLogEntry","ScoringLogEntry","CreditLogEntry","showEvent","showBalance","showUser","userName","details","time","created_at","toLocaleString","trim","lc","qty","eventFor","for","section_label","logEvent","credit_type","asCredits","invoice_date","logDetails","pricingTierText","tier","player_count","per_player","withPrecision","method","refunded_amount","invoice_id","balance","empty","ACBLMemberLegend","ACBLMemberTag","iconLegend","full","EventFullLegend","EventFullTag","EventSignupStatusLegend","EventSignupStatusTag","tableCount","playerCount","maxTables","TableCountLegend","TableCountTag","EventTagLegends","eventTypeWords","noIcon","GenericTag","inverted","isManager","ManagerLegend","ManagerTag","showPriority","priority","altText","isCourse","MembershipLegend","MembershipTag","StationaryPreferenceLegend","RegularPartnerLegend","RegularPartnerTag","includeACBL","maxMessages","VisibilityDisplay","PrivateEventTag","visibility","AcblMember","paid_thru","THIS_MONTH","masterpoints","rowSpan","colSpan","city","ACBL_RANK_NAMES","rank","previousPanel","closeAllPanels","first","setFirst","setLast","received","setReceived","setShort","receivedInitialResults","substr","receiveResults","forward","canSearchExact","MasterpointUpdateDate","clearEntries","searchExact","renderResults","inactiveCount","reduce","inactiveCounter","charge","card","brand","last4","convertPennies","pennies","pennies_refunded","refund","setRefundCharge","ChargeHistory","charges","setCharges","setPage","reachedEnd","setReachedEnd","hasFetched","setHasFetched","apiGetChargeHistory","retrievedIds","displayedCharges","additionalCharges","l","Charge","selectedId","fetchMoreCharges","maxRefundPennies","setRefund","toFixed","setCredits","setReason","reasonType","setReasonType","setProcessing","handleReasonTypeChange","refundAmountError","parseFloat","creditsError","reasonError","makeRefund","apiRefundCharge","refund_pennies","reason_type","done","refundCharge","RefundCharge","chargeable_id","accounts","toFrom","setToFrom","activeButton","setActiveButton","loadingAccounts","setLoadingAccounts","loadedAccounts","setLoadedAccounts","isUser","abortController","AbortController","loadAccounts","signal","abort","accountOptions","organization","makeCredit","apiAdminCredit","makeDebit","apiAdminDebit","BoxEvent","BoxDate","BoxTime","BoxInfo","BoxTier","BoxProgress","BoxType","BoxGo","BoxClub","BoxGroup","BoxComment","Counts","hideCounts","EventTimeRange","waiting_count","sub_count","cancelled_count","PricingTier","pricing_tier","getGroup","getClub","GPHContainer","$compact","$noBorder","noBorder","ClubTitle","GroupTitle","CourseIndicator","CheckoutForm","stripe","useStripe","useElements","canSubmit","setCanSubmit","saveCard","setSaveCard","useSavedCard","setUseSavedCard","handlePaymentMethodResult","async","paymentData","creditable_type","creditable_id","payment_method_id","paymentMethod","save_card","exp_mo","exp_month","exp_yr","exp_year","apiPurchaseCredits","successCallback","CardDetailsContainer","chargeSavedCard","apiPurchaseCreditsWithSavedCard","enterNewCard","onSubmit","createPaymentMethod","getElement","CardElement","billing_details","Label","CreditCardDetails","complete","PurchaseArea","QuantitySelection","PaymentForm","setQty","amount","masterpointDate","masterpoint_update_date","addHelper","recentEvents","getRecentEvents","showRecentEvents","canFetchRecentEvents","canFetchMore","getMoreRecentEvents","useMemberRecentEvents","canEditProfile","canManageGroupId","canRemoveMember","play_count","useNameForTitle","inactive","hidden","default_event_type","regular_partner_name","ManagerNotifications","discord_server_id","RecentEventsList","more","editThisProfile","removeMember","deleteMember","MembershipStatusCaution","variant","permPriorityOptions","permPriorityOption","regularPartnerOption","Definition","members","defaultEventType","currentMember","setCurrentMember","showDefinitions","setShowDefinitions","showMembershipCaution","setShowMembershipCaution","propagateMp","setPropagateMp","availableRegularPartners","setAvailableRegularPartners","loadingPartners","setLoadingPartners","updatingEstimatedMp","setUpdatingEstimatedMp","available_regular_partners","isParticipating","canManageGroup","canControlGroup","canManageClub","canControlClubId","canEditManager","canEditStatus","canEditStationaryPreference","canEditRegularPartner","canEditEstimatedMasterpoints","canPropgateEstimatedMasterpoints","setMember","handleStatusChange","handleManagerChange","changed","handleStationaryPreferenceChange","el","toggleDefinitions","showReturn","deceased","yesNo","currentValue","handleManagerAsDirectorToggle","entries","MANAGER_NOTIFICATIONS","manager_notifications","handleToggleNotification","toggleMembershipCaution","Select","clearable","regularPartner","dotMatch","maxLength","indexOf","substring","changePropagate","updateEstimatedMp","inactiveGroupCount","deactivatedGroupCount","account_active","showMemberTagLegend","setShowMemberTagLegend","showInactive","setShowInactive","showDeactivatedAccounts","setShowDeactivatedAccounts","sortedMembers","aMember","bMember","aGroup","bGroup","aClub","bClub","sort_order","toggleDeactivated","toggleInactive","toggleMemberLegends","currentClubId","memberRows","MemberProfile","MemberTagLegends","hasScores","sectionScoreFinder","boardGroup","boardSetNumber","multipleBoardSets","boardSetCount","phantomPair","isSitout","wrapContent","BoardSet","setNumber","boardsAtTable","boardNumber","boardGroupLetter","pair","showingNames","pairs","member1_name","member2_name","cells","PlayerNames","PairCells","BoardNumbers","iTable","combinedPairs","playerMovement","pairNumber","member_names","sitting","against","boardHasBeenPlayed","boardSet","bye_key","setText","boardGroups","boardNumbersInGroup","whereIsBoardSetGroup","phantom","setPhantom","START_OPEN","firstSitout","lastSitout","fs","playingWith","ls","lastRound","lastTable","BoardsPerRoundSelector","boardsDescription","sets","boardGroupCount","SplitButton","nsPairs","ewPairs","pair_number","where","Movement","phantom_pair_number","setKey","displayParameters","playedBoards","sectionParameters","MovementParameters","activeKey","tabClassName","ByRound","ByTable","ByPair","boardSets","ByBoard","MovementEditor","allBoardSetGroups","Array","from","_","bsgs","j","boardSetGroupText","bsg","floor","validPair","validBoardSet","bs","validBoardGroup","validate","errors","boardGroupsInUse","boardSetsInUse","boardPlayCounts","pairPlayCounts","missingPairs","missingBoards","consideredBoardSetRange","bsgText","addRound","newRound","computeMovement","removeRound","addTable","removeTable","addboardGroup","removeboardGroup","addboardSet","removeBoardSet","updateStructure","element","updateNsStationary","movers","updateBoardSetsAreIdentical","nsUp","nextTable","nsDown","priorTable","nsNext","nextRound","ewUp","ewDown","ewNext","boardsUp","g","boardsDown","boardsNext","boardGroupValueFromLetter","LETTERS","boardGroupSetsPlayedBy","plays","played","pairsMetBy","unmetPairs","playedPairs","pairsSkippingBoardGroup","_board_set","inputFor","showModifiers","locked","protectedRound","setShowModifiers","byRound","setByRound","viewByRound","viewByTable","modifiersVisible","modifiersHidden","ElementList","boardGroupUsage","inUse","boardSetGroupsInUse","tableRows","setRows","cn","SmallBSG","boardGroupPlays","SmallPairNumber","after","nsStationary","pairBoardsPlayed","flat","unplayed","boardGroupSets","pairPairsMet","duplicates","index","unmet","metCount","unmetCount","opp","cls","clubOptions","setEventType","EventTypeSelector","disallowIndividual","hasChanged","resetForm","showErrors","toggleErrors","receivedErrors","movementErrors","valid","unchanged","SaveWarning","base","decomposeFieldName","scoreLocks","canEditMeta","meta","setMeta","storedMovement","setStoredMovement","movementEditor","_originalStoredMovement","setOriginalStoredMovement","originalMovementEditor","setReceivedErrors","setShowErrors","setRefreshing","handleFormFieldChange","isStructureField","cleanValue","updateStoredStructure","updatedErrors","structureChanged","orig","moveCurrentToOriginalMovement","addErrors","first_9","maxValidPairNumber","unrecognizedPair","other","original","vstate","saveMovement","Info","Parameters","MovementRound","MovementTable","Analysis","MemberListStatus","MemberListEntry","ListNumber","Captain","TeamMate","signupList","signup_list","memberListOpen","setMemberListOpen","fetchingPlayerList","setFetchingPlayerList","listHasBeenFetched","setListHasBeenFetched","hasSignups","fetchPlayerList","updateUserEvent","togglePlayerList","playerList","words","statusWords","isArray","captain","shift","teamList","apiGetCreditsLog","displayedLogs","fetchMoreLogs","goToEvent","ActivityLogEntry","nextPage","UserDetailsContainer","UserName","LatestLogin","UserDetail","PlayerProfileContainer","creator","nameClick","HiddenIcon","childrenFirst","login","created_at_formatted","showCreator","WithVisibility","spam_block","email_bounce","PhoneLink","TitledField","bbo","acbl","showId","rbucks","discord","is_demo","profile","DEFAULT_VALUES","zip","time_zone","password","password_confirmation","banned","CONTACT_FIELDS","PRIVACY_FIELDS","USER_PW_FIELDS","PLAYER_FIELDS","ADMIN_FIELDS","initialUser","setUser","acblName","setAcblName","setErrors","parseAcblNumberEntry","found","newErrors","u","hasChangedValues","fieldsChanged","errorsInclude","userNeverSignedIn","canEditLogin","visibleToggle","toggleVisibility","VisibleIcon","tabTitle","hasChanges","hasErrors","updateUserProfile","apiUpdateUserProfile","defaultActiveKey","STATE_OPTIONS","TIME_ZONES","renderPlayerTab","invalid","validAcblNumber","HelpContext","Provider","HelpContextProvider","showHelp","setStack","setStackIndex","newPosition","pushToStack","context","undefined","Error","TRANSITION","fadeOnChange","slideOut","slideIn","slideDown","COMMON_APP_PANE_DEFAULTS","finder","actionTypes","setDefaultPanes","showDefaultPane","setShowCopyright","allPanelsClosed","previousPanelParameter","PageStateContext","PageDispatchContext","navKeys","initialPanes","initialPane","storedActivePane","pathname","nav","cuId","retrieveStoredValue","navKeyFor","defaultPanes","getInitialPanes","activePanes","contentScrollPosition","panelScrollPosition","commonAppScrollPosition","pageReducer","payload","console","wasShowingActivePane","isMainNav","subNavKeyFor","newKey","scrollY","PageProvider","setStoredValue","computedElements","pageDispatch","dismiss","navKey","thisNav","mainPane","subPane","selectedNav","firstElement","definitions","permanent","guest","removed","requested","undesired","indifferent","private","closed","not_started","RAILS_TIME_ZONE_TO_JAVASCRIPT","Samoa","Kamchatka","Wellington","Auckland","Fiji","Srednekolymsk","Magadan","Hobart","Vladivostok","Sydney","Melbourne","Guam","Canberra","Brisbane","Adelaide","Yakutsk","Tokyo","Seoul","Sapporo","Osaka","Darwin","Beijing","Chongqing","Ulaanbaatar","Taipei","Singapore","Perth","Irkutsk","Hanoi","Novosibirsk","Krasnoyarsk","Jakarta","Bangkok","Dhaka","Rangoon","Urumqi","Astana","Tashkent","Kathmandu","Mumbai","Kolkata","Chennai","Karachi","Islamabad","Ekaterinburg","Almaty","Samara","Muscat","Baku","Kabul","Yerevan","Tbilisi","Kuwait","Tehran","Baghdad","Istanbul","Volgograd","Riyadh","Nairobi","Moscow","Minsk","Tallinn","Athens","Bucharest","Cairo","Harare","Helsinki","Jerusalem","Kaliningrad","Kyiv","Pretoria","Riga","Sofia","Vilnius","Belgrade","Zurich","Zagreb","Warsaw","Vienna","Stockholm","Skopje","Sarajevo","Rome","Prague","Paris","Madrid","Ljubljana","Copenhagen","Budapest","Brussels","Bratislava","Bern","Berlin","Amsterdam","Dublin","UTC","Monrovia","London","Lisbon","Edinburgh","Casablanca","Azores","Greenland","Brasilia","Montevideo","Georgetown","Caracas","Newfoundland","Santiago","Quito","Lima","Bogota","Saskatchewan","Monterrey","Guadalajara","Chihuahua","Arizona","Mazatlan","Tijuana","Alaska","Hawaii","openEntryId","setOpenEntryId","openAccordionEntry","startCollapsed","toggleList","listIsOpen","closeListControls","openListControls","fetchRecent","setFetchRecent","setRecentEvents","setShowRecentEvents","setOffset","setCanFetchMore","priorPlayCount","playCount","recent_events","re","o","hasSubNav","subNavPanesFor","useWide","wide","_setWide","setWide","document","body","classList","remove","widthToggle","canBeWide","getWindowDimensions","innerWidth","innerHeight","windowDimensions","setWindowDimensions","handleResize","addEventListener","removeEventListener","well","StratDefContent","StratRangeDef","StratRow","tr","stratColor","$stratLabel","SectionStratCounts","deleteMessage","cloning","setCloning","cloneDate","setCloneDate","getLocation","location_id","cloneError","msg","EventDate","table_capacity","open_for_signup","cancel_requires_sub","PlayerList","allowed_count","editEvent","removeEvent","deleteEvent","checkTeamsValidity","upcomingGroupEventDates","addWeek","newDate","setDate","convertToLocalTime","saveClone","addNewEvent","saveCloneAndAddAnother","cancelClone","cloneEvent","LOAD_ACCOUNTS","loadAccount","LOAD_ACCOUNT","updateAccount","UPDATE_ACCOUNT","UPDATE_USER_EVENT","ADD_EVENT","group_event","DELETE_EVENT","loadUserEvents","LOAD_USER_EVENTS","AUGMENT_GROUP_EVENTS","locations","loadMorePastEvents","LOAD_MORE_PAST_EVENTS","no_more_past_events","updateGroupEvent","UPDATE_GROUP_EVENT","removeGroupEvents","REMOVE_GROUP_EVENTS","ADD_HELPER","helper","loadAllGroupClubOptions","all_group_club_options","addMember","ADD_MEMBER","updateMember","UPDATE_MEMBER","DELETE_MEMBER","augmentMovements","AUGMENT_MOVEMENTS","LOAD_MOVEMENTS","ADD_MOVEMENT","UPDATE_MOVEMENT","DELETE_MOVEMENT","loadUserHomePage","LOAD_USER_HOME_PAGE","loadUsers","LOAD_USERS","LOAD_USER","DELETE_USER","UPDATE_USER","mergeUser","MERGE_USER","css","TextInButtonToolbar"],"sourceRoot":""}