{"version":3,"sources":["webpack:///./src/views/Programs/Communications/vue/MessageConfirmationModal.vue?0de7","webpack:///./src/views/Programs/Communications/vue/MessageConfirmationModal.vue","webpack:///./src/views/Programs/Communications/vue/MessageConfirmationModal.vue?eb85","webpack:///./src/views/Programs/Communications/vue/MessageConfirmationModal.vue?e94b","webpack:///./src/lib/common/programTypeHelpers.ts","webpack:///./src/views/Programs/Communications/data/filterOptions.ts","webpack:///./src/components/Communication/GospelViedoSelector/GospelVideoSelector.vue?31e0","webpack:///./src/components/Communication/GospelViedoSelector/GospelVideoSelector.vue","webpack:///./src/components/Communication/GospelViedoSelector/GospelVideoSelector.vue?301e","webpack:///./src/components/Communication/GospelViedoSelector/GospelVideoSelector.vue?ed2d","webpack:///./src/views/Programs/Communications/ext/MessageLogic.ts","webpack:///./src/elements/ToClipboardBtn.vue?9d31","webpack:///./src/views/Programs/Communications/vue/CommunicationWarning.vue?7978","webpack:///./src/views/Programs/Communications/vue/CommunicationWarning.vue","webpack:///./src/views/Programs/Communications/vue/CommunicationWarning.vue?6437","webpack:///./src/views/Programs/Communications/vue/CommunicationWarning.vue?07ad","webpack:///./src/components/Communication/RecipientListManager.vue?1b22","webpack:///./src/components/Communication/RecipientListManager.vue","webpack:///./src/components/Communication/RecipientListManager.vue?72b0","webpack:///./src/components/Communication/RecipientListManager.vue?ebc4","webpack:///./src/elements/InputlessStringValidator.vue?1b9c","webpack:///./src/elements/InputlessStringValidator.vue","webpack:///./src/elements/InputlessStringValidator.vue?e81d","webpack:///./src/elements/InputlessStringValidator.vue?6a7c","webpack:///./src/components/Communication/GospelViedoSelector/GospelVideoSelector.vue?ec80","webpack:///./src/views/Programs/Communications/vue/Filters/MessageFilterModal.vue?9c08","webpack:///./src/elements/PracticeFacilitySelector.vue?bf85","webpack:///./src/elements/ToClipboardBtn.vue?f4e4","webpack:///./src/elements/ToClipboardBtn.vue","webpack:///./src/elements/ToClipboardBtn.vue?c9c2","webpack:///./src/elements/ToClipboardBtn.vue?bd5c","webpack:///./src/components/Communication/RecipientListPreview.vue?084f","webpack:///./src/lib/support/utilities/email/emailUtil.ts","webpack:///./src/components/Communication/RecipientListPreview.vue","webpack:///./src/components/Communication/RecipientListPreview.vue?cd9b","webpack:///./src/components/Communication/RecipientListPreview.vue?2eea","webpack:///./src/components/Communication/RecipientListPreview.vue?0c63","webpack:///./src/components/Communication/MessageChannelData.ts","webpack:///./src/components/Communication/RecipientListManager.vue?d58d","webpack:///./src/views/Programs/Communications/vue/Filters/MessageFilterModal.vue?bb82","webpack:///./src/components/Communication/MessageProgramSelector.vue?adad","webpack:///./src/components/Communication/MessageProgramSelector.vue","webpack:///./src/components/Communication/MessageProgramSelector.vue?d6b2","webpack:///./src/components/Communication/MessageProgramSelector.vue?faa5","webpack:///./src/views/Programs/Communications/vue/Filters/DivisionTeamSelector.vue?4dad","webpack:///./src/views/Programs/Communications/vue/Filters/DivisionTeamSelector.vue","webpack:///./src/views/Programs/Communications/vue/Filters/DivisionTeamSelector.vue?c6e1","webpack:///./src/views/Programs/Communications/vue/Filters/DivisionTeamSelector.vue?30ab","webpack:///./src/elements/PracticeFacilitySelector.vue?5e4f","webpack:///./src/elements/PracticeFacilitySelector.vue","webpack:///./src/elements/PracticeFacilitySelector.vue?0f1a","webpack:///./src/elements/PracticeFacilitySelector.vue?7e90","webpack:///./src/views/Programs/Communications/vue/Filters/MessageFilterModal.vue","webpack:///./src/views/Programs/Communications/vue/Filters/MessageFilterModal.vue?92b0","webpack:///./src/views/Programs/Communications/vue/Filters/MessageFilterModal.vue?a313","webpack:///./src/views/Programs/Communications/ext/RecipientGroups.ts","webpack:///./src/views/Programs/Communications/ext/allRecipients.ts","webpack:///./src/views/Programs/Communications/model/Recipients.ts","webpack:///./src/views/Programs/Communications/vue/RecipientGroupInput.vue?68c9","webpack:///./src/views/Programs/Communications/vue/RecipientGroupInput.vue","webpack:///./src/views/Programs/Communications/vue/RecipientGroupInput.vue?82b2","webpack:///./src/views/Programs/Communications/vue/RecipientGroupInput.vue?88ae","webpack:///./src/components/Communication/GospelViedoSelector/GospelVideoSelectorData.ts","webpack:///./src/components/Communication/MessageProgramSelector.vue?fe71","webpack:///./src/views/Programs/Volunteers/ext/routeutils.ts"],"names":["render","_vm","this","_h","$createElement","_c","_self","attrs","show","errorOccurred","on","close","staticClass","class","scheduledDate","_v","_s","_e","viewMessageHistory","viewScheduled","staticRenderFns","name","props","value","type","Boolean","required","String","default","components","InfoModal","setup","emit","root","get","set","v","leagueType","router","currentRoute","fullPath","$nextTick","$router","push","$route","params","id","component","useProgramType","getters","leagueAbstraction","programType","useIsRunningChallenge","UPWARDRUNNING","paymentOptions","label","evalOptions","coachAssignOptions","programOptions","multiPartnerOptions","genderOptions","list","emitValue","description","url","currentOption","theGospelTruthFull","theGospelTruthShort","fromDoToDone","thePortal","situationRoom","gospelLiterally","graffitiGospel","greatestSuperheroGospel","none","text","title","$emit","val","clear","currentGospelOption","option","RadioGroupInput","messageLogic","allTeams","isRunningChallenge","showConfirmationModal","showFilters","loadingRecipients","showSendDrop","showScheduleSendModal","sendCommunicationOn","minutesToAdd","now","Date","sendOn","diff","toggleSendDrop","sendDropAway","sendCommunicationOnFormatted","toLocaleTimeString","year","month","day","hour","minute","accountNumber","authorization","firstAccountNumber","providerInfo","communications","currentItem","messagePreviewLoading","upwardLeagueID","hasPartners","accounts","length","hasRecipients","recipients","hasSelectedRecipients","isSending","send","dispatch","sendMessage","loadRunningRecipients","upwardRunningId","setRecipientsFromRunningParticipants","isSendReady","previewMessage","messagePreview","allRecipients","allEmailAddresses","compose","filterBuilder","filterList","f","paymentStatus","evalStatus","coachTeamStatus","typeProgramID","viewAllLeagueContacts","startGrade","endGrade","isByAge","gender","practiceNight","teams","names","map","t","find","at","teamID","teamName","filter","n","join","seasonEndDate","LEAGUE","leagues","CAMP","camps","campEndDate","reset","commit","clearMessageInformation","path","query","isAllowed","hasCredits","isAfterSeasonEndDate","require","toLowerCase","selectAllParticipants","removeAllParticipants","_l","recipient","key","getRecipientClasses","email","$event","toggleRecipient","getIconClasses","InputLabel","MemoInput","channel","EMAIL","store","updateRecipients","updateRecipientsAndPreview","updatedRecipients","isSelected","isRecipientValid","SMS","phone","r","VeeValidateRules","veeValidateMode","scopedSlots","_u","fn","ref","errors","directives","rawName","expression","domProps","target","composing","internalValue","ValidationProvider","ctx","iconClick","handleInput","handleChange","handleBlur","setInternalValue","copyAddress","stringArray","Array","Loading","copyAddresses","showSpinner","document","execCommand","setTimeout","addEventListener","copyEmailAddress","copyGuard","e","csv","reduce","s","a","clipboardData","setData","preventDefault","recipientGroups","item","group","getRecipientClass","contact","isEmailValid","re","match","isEmailChannel","groups","selectedGroups","v4","createRecipient","getAdditionalRecipients","delimitedRecipients","toDelimited","split","individualsRecreational","messagePreviewRecipients","to","individualsRunning","selectedRecipients","individuals","recipientValid","MessageChannelTypes","small","model","callback","$$v","pymtStatus","setGrades","slots","slotChange","slot","practice","practiceFacilities","program","cheer","programs","p","sport","optionaValue","programId","data","divisionTree","openNodes","selected","staticStyle","sortedTeams","Tree","fetchedTeams","rootid","upwId","sort","b","includes","tt","getTreeNodeTeam","ids","divisionID","children","makeTree","tree","divisions","arr","d","getDivision","divisionExists","divisionName","getTeams","divisionId","x","undefined","loading","fetchTeams","immediate","index","elementId","stopPropagation","guid","indexOf","facilities","facilitiesClient","retrieveAll","availability","some","typeFacilityEventID","PRACTICES","facilityID","facilityName","Modal","GradeRangeDropdowns","MessageProgramSelector","DayOfWeekPicker","SwitchSlot","DivisionTeamSelector","PracticeFacilitySelector","setPaymentStatus","isLeague","setEvalStatus","setTypeProgramID","setViewAllLeagueContacts","setCoachTeamStatus","days","setPracticeNight","setTeams","practiceFacilityIDs","setPracticeFacilityIDs","filterRecipients","retrieveRecipientList","communicationType","grades","setStartGrade","setEndGrade","setGender","hasCheer","i","debouncedFilterRecipients","deep","opportunityType","RecipientTypes","getRecipientGroups","retval","optionText","PARENTS","optionValue","COACHES","isUpwardSelect","refLabel","REFEREES","COMMISSIONERS","OTHERS","mergeAllRecipients","preview","additionalEmailArray","getAllEmailAddresses","emailAddresses","trim","mergeAndCreateRecipients","toDelimitedArray","emails","getEmptyRecipients","getEmptyRecipient","CheckboxGroupInput","setSelectedGroups","retrieveMessagePreview","emailText","smsText","GospelVideoOptions","Map","VolunteerRouteRuntimeException","routeActionToVolunteer","routeName","currentVolunteer","startsWith","individualID","getRouteCategoryName","routepath","matches","getLeagueType","routeParts"],"mappings":"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","file":"js/chunk-557876ea.63c7c60f.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('InfoModal',{attrs:{\"show\":_vm.show,\"title\":\"Message Confirmation\",\"button-text\":\"Ok\",\"showClose\":_vm.errorOccurred},on:{\"close\":_vm.close}},[(!_vm.errorOccurred)?_c('i',{staticClass:\"col-12 text-center m-auto fas text-success fa-4x pb-4\",class:[!_vm.scheduledDate ? 'fa-check-circle' : 'fa-calendar']}):_c('i',{staticClass:\"col-12 text-center m-auto fas text-error fa-4x pb-4\",class:['fa fa-exclamation-triangle']}),(!_vm.scheduledDate && !_vm.errorOccurred)?_c('h3',{staticClass:\"col-12 text-center pb-4\"},[_vm._v(\" Your message has been sent! \")]):(_vm.errorOccurred)?_c('h3',{staticClass:\"col-12 text-center pb-4\"},[_vm._v(\" A problem occurred while sending your message. \")]):_c('h3',{staticClass:\"col-12 text-center pb-4\"},[_vm._v(\"Your message is scheduled to send on \"+_vm._s(_vm.scheduledDate)+\"!\")]),_c('div',{staticClass:\"col-12 text-center\"},[(!_vm.scheduledDate && !_vm.errorOccurred)?_c('button',{staticClass:\"btn btn-light\",on:{\"click\":_vm.viewMessageHistory}},[_c('i',{staticClass:\"fas fa-history\"}),_vm._v(\" View History \")]):_vm._e(),(_vm.scheduledDate)?_c('button',{staticClass:\"btn btn-light\",on:{\"click\":_vm.viewScheduled}},[_c('i',{staticClass:\"far fa-calendar-check\"}),_vm._v(\" View Scheduled \")]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, computed } from '@vue/composition-api'\nimport InfoModal from '@/components/InfoModal.vue'\nimport router from '@/router/index'\n\nimport { getLeagueType } from '@/views/Programs/Volunteers/ext/routeutils'\n\nexport default defineComponent({\n name: 'MessageConfirmationModal',\n props: {\n value: { type: Boolean, required: true },\n scheduledDate: { type: String, required: false, default: '' },\n errorOccurred: { type: Boolean, required: false, default: false },\n },\n components: { InfoModal },\n setup(props, { emit, root }) {\n const show = computed({\n get(): boolean {\n return props.value\n },\n set(v: boolean) {\n emit('input', v)\n },\n })\n\n const leagueType = computed(() => {\n return getLeagueType(router.currentRoute.fullPath)\n })\n\n function viewMessageHistory() {\n close()\n root.$nextTick(() => {\n root.$router.push(`/programs/${leagueType.value}/${root.$route.params.id}/communications/history`)\n })\n }\n function viewScheduled() {\n root.$nextTick(() => {\n root.$router.push(`/programs/${leagueType.value}/${root.$route.params.id}/communications/scheduled`)\n })\n }\n function close() {\n show.value = false\n emit('close')\n }\n return { viewMessageHistory, show, close, viewScheduled }\n },\n})\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MessageConfirmationModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MessageConfirmationModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MessageConfirmationModal.vue?vue&type=template&id=678e07c5&\"\nimport script from \"./MessageConfirmationModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./MessageConfirmationModal.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { UpwardOpportunityTypes } from './upwardOpportunityTypes'\nimport store from '@/store'\nimport { computed } from '@vue/composition-api'\n\nexport const useProgramType = (type: UpwardOpportunityTypes) => {\n return computed(() => store.getters.leagueAbstraction.programType === type)\n}\n\n// Reactive convenience methods for common program type checks\nexport const useIsLeague = () => useProgramType(UpwardOpportunityTypes.LEAGUE)\nexport const useIsCamp = () => useProgramType(UpwardOpportunityTypes.CAMP)\nexport const useIsClinic = () => useProgramType(UpwardOpportunityTypes.CLINIC)\nexport const useIsRunningChallenge = () => useProgramType(UpwardOpportunityTypes.UPWARDRUNNING)\nexport const useIsUpwardSelect = () => useProgramType(UpwardOpportunityTypes.UPWARDSELECT)\nexport const useIsConnect = () => useProgramType(UpwardOpportunityTypes.CONNECT)\nexport const useIsLicensing = () => useProgramType(UpwardOpportunityTypes.LICENSING)\n","interface Option {\n label: string\n value: string\n}\nexport const paymentOptions: Option[] = [\n { label: 'Player has paid', value: 'Paid' },\n { label: 'Player has NOT paid', value: 'Not Paid' },\n { label: 'Paid and unpaid', value: 'All' },\n]\n\nexport const evalOptions: Option[] = [\n { label: 'Player has been evaluated', value: 'Evaluated' },\n { label: 'Player has NOT been evaluated', value: 'Not Evaluated' },\n { label: 'Evaluated and unevaluated', value: 'All' },\n]\n\nexport const coachAssignOptions: Option[] = [\n { label: 'Assigned to a team', value: 'Assigned to a Team' },\n { label: 'Unassigned', value: 'Unassigned' },\n { label: 'Unapproved', value: 'Unapproved' },\n { label: 'All Approved', value: 'All Approved' },\n]\n\nexport const programOptions: Option[] = [\n { value: 'PLAYER', label: 'Sport Only' },\n { value: 'CHEER', label: 'Cheer Only' },\n { value: 'ALL', label: 'All' },\n]\n\nexport const FilterByOptions: Option[] = [\n { label: 'All', value: 'all' },\n { label: 'Division', value: 'division' },\n { label: 'Team', value: 'team' },\n { label: 'Practice Night', value: 'night' },\n]\n\nexport const multiPartnerOptions = [\n { label: 'Communicate with My Church Contacts Only', value: false },\n { label: 'Communicate with All Contacts', value: true },\n]\n\nexport const genderOptions: Option[] = [\n { label: 'Male', value: 'M' },\n { label: 'Female', value: 'F' },\n { label: 'Both', value: 'E' },\n]\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('p',{staticClass:\"small text-muted\"},[_vm._v(\" Make a selection to prepopulate your message with text that includes the video link. \")]),_c('radio-group-input',{attrs:{\"value\":_vm.value,\"items-list\":_vm.list,\"value-property-name\":\"value\",\"text-property-name\":\"text\",\"item-class\":\"form-check form-check-inline\",\"wrapperClass\":\"input-label-inline\",\"sub-text\":\"Select a video and will will prepolutate a message for you with a link to the video of your choide.\"},on:{\"input\":_vm.emitValue}}),(_vm.description)?_c('div',{staticClass:\"border m-3 p-3 text-center details\"},[_c('p',{staticClass:\"text-muted small\"},[_vm._v(_vm._s(_vm.description))]),(_vm.url)?_c('a',{attrs:{\"target\":\"_blank\",\"href\":_vm.url}},[_vm._v(\"Preview Video\")]):_vm._e()]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from 'vue-property-decorator'\nimport RadioGroupInput from '@/elements/RadioGroupInput.vue'\nimport {\n GospelVideoOptions,\n GospelVideoOption,\n} from '@/components/Communication/GospelViedoSelector/GospelVideoSelectorData'\n\n//These are strings because that is what the API expects\n@Component({\n components: { RadioGroupInput },\n})\nexport default class GospelVideoSelector extends Vue {\n @Prop({ type: String, required: false })\n private readonly value!: string\n\n currentOption = ''\n theGospelTruthFull = GospelVideoOptions.get('TheGospelTruthFull')\n theGospelTruthShort = GospelVideoOptions.get('TheGospelTruthShort')\n fromDoToDone = GospelVideoOptions.get('FromDoToDone')\n thePortal = GospelVideoOptions.get('ThePortal')\n situationRoom = GospelVideoOptions.get('SituationRoom')\n gospelLiterally = GospelVideoOptions.get('GospelLiterally')\n graffitiGospel = GospelVideoOptions.get('GraffitiGospel')\n greatestSuperheroGospel = GospelVideoOptions.get('GreatestSuperheroGospel')\n none = GospelVideoOptions.get('None')\n\n list = [\n { value: this.theGospelTruthFull?.id, text: this.theGospelTruthFull?.title },\n { value: this.theGospelTruthShort?.id, text: this.theGospelTruthShort?.title },\n { value: this.fromDoToDone?.id, text: this.fromDoToDone?.title },\n { value: this.thePortal?.id, text: this.thePortal?.title },\n { value: this.situationRoom?.id, text: this.situationRoom?.title },\n { value: this.gospelLiterally?.id, text: this.gospelLiterally?.title },\n { value: this.graffitiGospel?.id, text: this.graffitiGospel?.title },\n { value: this.greatestSuperheroGospel?.id, text: this.greatestSuperheroGospel?.title },\n { value: this.none?.id, text: this.none?.title },\n ]\n\n get url(): string {\n if (!this.currentGospelOption.url) return ''\n return this.currentGospelOption.url\n }\n\n get description(): string {\n if (!this.currentGospelOption.description) return ''\n return this.currentGospelOption.description\n }\n\n get currentGospelOption(): GospelVideoOption {\n const option = GospelVideoOptions.get(this.currentOption)\n return option ? option : ({} as GospelVideoOption)\n }\n\n clear() {\n this.$emit('input', '')\n }\n\n emitValue(val: string) {\n if (val === this.none?.id) {\n this.clear()\n }\n this.currentOption = val\n this.$emit('input', val)\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GospelVideoSelector.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GospelVideoSelector.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GospelVideoSelector.vue?vue&type=template&id=ee54c5d4&\"\nimport script from \"./GospelVideoSelector.vue?vue&type=script&lang=ts&\"\nexport * from \"./GospelVideoSelector.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./GospelVideoSelector.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","//logic shared by SMS and Email messages\nimport { ref, computed } from '@vue/composition-api'\nimport { cloneDeep } from 'lodash'\nimport { mergeAllRecipients, getAllEmailAddresses } from '@/views/Programs/Communications/ext/allRecipients'\nimport { ProgramTypes } from '@/lib/common/ProgramTypes'\nimport store from '@/store'\nimport dayjs from 'dayjs'\nimport { DivisionTeamInfo } from '@/GeneratedTypes/ListInfo/DivisionTeamInfo'\nimport { UpwardOpportunityTypes } from '@/lib/common/upwardOpportunityTypes'\nimport { getProperGradeLabel } from '@/services/gradeService'\nimport { EmailCompose } from '@/views/Programs/Communications/model/EmailCompose'\nimport { useIsRunningChallenge } from '@/lib/common/programTypeHelpers'\nimport router from '@/router'\n\nexport function messageLogic() {\n const allTeams = ref([])\n const isRunningChallenge = computed(() => useIsRunningChallenge().value)\n const errorOccurred = ref(false)\n const showConfirmationModal = ref(false)\n const showFilters = ref(false)\n const loadingRecipients = ref(false)\n const showSendDrop = ref(false)\n const showScheduleSendModal = ref(false)\n const sendCommunicationOn = ref(null)\n const minutesToAdd = computed((): number | null => {\n if (!sendCommunicationOn.value) return null\n const now = dayjs(new Date(Date.now()))\n const sendOn = dayjs(sendCommunicationOn.value)\n return sendOn.diff(now, 'minute', false)\n })\n\n const toggleSendDrop = () => {\n showSendDrop.value = !showSendDrop.value\n }\n const sendDropAway = () => {\n showSendDrop.value = false\n }\n const sendCommunicationOnFormatted = computed((): string => {\n return (\n sendCommunicationOn.value?.toLocaleTimeString([], {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n }) || ''\n )\n })\n\n const accountNumber = computed(() => store.getters.authorization.firstAccountNumber)\n const providerInfo = computed(() => store.getters.communications.currentItem)\n const messagePreviewLoading = computed(() => store.getters.communications.messagePreviewLoading)\n const upwardLeagueID = computed(() => store.getters.leagueAbstraction.currentItem.upwardLeagueID) // either the UPWID or the URID\n const hasPartners = computed(() => {\n return (store.getters.leagueAbstraction.currentItem.accounts ?? []).length > 1\n })\n\n const hasRecipients = computed(() => {\n const recipients = store.getters.communications.hasSelectedRecipients\n if (!recipients) {\n return ''\n }\n return String(recipients)\n })\n\n const isSending = ref(false)\n async function send(type: 'sendemail' | 'sendsms') {\n isSending.value = true\n errorOccurred.value = false\n try {\n await store.dispatch.communications.sendMessage({\n type: type,\n sendCommunicationOn: sendCommunicationOn.value,\n minutesToAdd: minutesToAdd.value,\n })\n } catch (e) {\n errorOccurred.value = true\n } finally {\n isSending.value = false\n showConfirmationModal.value = true\n }\n }\n\n const loadRunningRecipients = async (upwardRunningId: string) => {\n loadingRecipients.value = true\n await store.dispatch.communications.setRecipientsFromRunningParticipants({\n upwardRunningId,\n })\n loadingRecipients.value = false\n }\n\n // Used to disable the send button until after the data\n // is loaded.\n const isSendReady = computed(() => {\n if (isRunningChallenge.value) {\n return !loadingRecipients.value\n } else {\n return !messagePreviewLoading.value\n }\n })\n\n const previewMessage = computed(() => store.getters.communications.messagePreview)\n\n // used to get all email when recreational league is in play\n const allRecipients = computed(() => {\n return mergeAllRecipients(cloneDeep(previewMessage.value))\n })\n\n //used to get all email addresses when running challenge is in play\n function allEmailAddresses(compose: EmailCompose): string[] {\n return getAllEmailAddresses(cloneDeep(compose))\n }\n\n function filterBuilder(list: string, label: string, value: string | null) {\n return `${list} ${label}: ${value}`\n }\n\n const filterList = computed(() => {\n let list = ''\n const f = store.getters.communications.messagePreview\n if (f.paymentStatus != 'All') {\n list = filterBuilder(\n list,\n 'payment status',\n store.getters.communications.messagePreview.paymentStatus ?? 'All'\n )\n }\n\n if (f.evalStatus != 'All') {\n list = filterBuilder(\n list,\n 'eval status',\n store.getters.communications.messagePreview.evalStatus ?? 'All'\n )\n }\n\n if (f.coachTeamStatus != 'All Approved') {\n list = filterBuilder(\n list,\n 'coach assignment',\n store.getters.communications.messagePreview.coachTeamStatus ?? 'All'\n )\n }\n\n if (f.typeProgramID != '') {\n list = filterBuilder(\n list,\n 'program',\n ProgramTypes[store.getters.communications.messagePreview.typeProgramID ?? '']\n )\n }\n\n if (hasPartners.value) {\n if (f.viewAllLeagueContacts) {\n list = filterBuilder(list, 'recipients across all churches', 'yes')\n }\n }\n\n if (f.startGrade != 'K3' || f.endGrade != '12th') {\n const isByAge = store.getters.leagueAbstraction.isByAge\n list = filterBuilder(\n list,\n isByAge ? 'ages' : 'grades',\n `${getProperGradeLabel(f.startGrade!, isByAge, '')} to ${getProperGradeLabel(\n f.endGrade!,\n isByAge,\n ''\n )}`\n )\n }\n if (f.gender != 'E') {\n list = filterBuilder(list, 'participant gender', f.gender == 'M' ? 'Male' : 'Female')\n }\n if (f.practiceNight && f.practiceNight != 'All') {\n list = filterBuilder(list, 'practice night', f.practiceNight)\n }\n if (f.teams && f.teams.length > 0) {\n const names = f.teams\n .map((t) => allTeams.value.find((at) => at.teamID == t)?.teamName)\n .filter((n) => {\n return !!n\n })\n list = filterBuilder(list, 'teams', names.join(', '))\n }\n return list\n })\n\n const seasonEndDate = computed(() => {\n switch (store.getters.leagueAbstraction.programType) {\n case UpwardOpportunityTypes.LEAGUE:\n return store.getters.leagues.currentItem.seasonEndDate\n case UpwardOpportunityTypes.CAMP:\n return store.getters.camps.currentItem.campEndDate\n default:\n null\n }\n })\n\n function close() {\n reset()\n }\n\n function reset() {\n // First clear the store state\n store.commit.communications.clearMessageInformation()\n\n // Let the UI update in the next tick to avoid validation issues\n router.push({\n path: router.currentRoute.path,\n query: { t: String(Date.now()) }, // Use 't' instead of 'r' to be more semantic (timestamp)\n })\n }\n\n return {\n showConfirmationModal,\n showFilters,\n loadingRecipients,\n send,\n isSending,\n allRecipients, //for recreational leagues\n allEmailAddresses, //for running challenges\n previewMessage,\n filterList,\n accountNumber,\n upwardLeagueID,\n providerInfo,\n showSendDrop,\n showScheduleSendModal,\n sendDropAway,\n toggleSendDrop,\n minutesToAdd,\n sendCommunicationOn,\n sendCommunicationOnFormatted,\n allTeams,\n errorOccurred,\n seasonEndDate,\n hasRecipients,\n loadRunningRecipients,\n messagePreviewLoading,\n isSendReady,\n isRunningChallenge,\n close,\n }\n}\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToClipboardBtn.vue?vue&type=style&index=0&id=467421d2&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(!_vm.isAllowed)?_c('div',{staticClass:\"row mt-3\"},[_c('div',{staticClass:\"col-md-12\"},[_c('span',{staticClass:\"alert alert-warning\",attrs:{\"role\":\"alert\"}},[_c('b',[_vm._v(_vm._s(_vm.label))]),_vm._v(\" is not enabled for this program. \")])])]):(!_vm.hasCredits)?_c('div',{staticClass:\"row mt-3\"},[_c('div',{staticClass:\"col-md-12\"},[_c('span',{staticClass:\"alert alert-warning\",attrs:{\"role\":\"alert\"}},[_vm._v(\" You have reached the limit of \"),_c('b',[_vm._v(_vm._s(_vm.text))]),_vm._v(\" messages you can send \")])])]):_vm._e(),(!_vm.isAfterSeasonEndDate)?_c('div',{staticClass:\"row mt-3\"},[_c('div',{staticClass:\"col-md-12\"},[_c('span',{staticClass:\"alert alert-warning\",attrs:{\"role\":\"alert\"}},[_vm._v(\" \"+_vm._s(_vm.label)+\" is not allowed on historical programs \")])])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, computed } from '@vue/composition-api'\nexport default defineComponent({\n name: 'name',\n props: {\n hasCredits: { type: Boolean, require: true },\n isAllowed: { type: Boolean, required: true },\n isAfterSeasonEndDate: { type: Boolean, required: true },\n label: { type: String, required: true },\n },\n components: {},\n setup(props) {\n const text = computed(() => props.label.toLowerCase())\n return { text }\n },\n})\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommunicationWarning.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommunicationWarning.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CommunicationWarning.vue?vue&type=template&id=043c6ce7&\"\nimport script from \"./CommunicationWarning.vue?vue&type=script&lang=ts&\"\nexport * from \"./CommunicationWarning.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('button',{staticClass:\"btn btn-link p-0 m-0 mr-4\",on:{\"click\":_vm.selectAllParticipants}},[_vm._v(\"add all\")]),_c('button',{staticClass:\"btn btn-link p-0 m-0\",on:{\"click\":_vm.removeAllParticipants}},[_vm._v(\"remove all\")]),_c('div',{staticClass:\"card bg-white recipient-list\"},[_c('div',{staticClass:\"card-body p-2\"},_vm._l((_vm.recipients),function(recipient){return _c('div',{key:recipient.id,staticClass:\"badge badge-pill no-dismiss mr-2 recipient-pill\",class:_vm.getRecipientClasses(recipient),attrs:{\"title\":recipient.email},on:{\"click\":function($event){return _vm.toggleRecipient(recipient)}}},[_vm._v(\" \"+_vm._s(recipient.name)+\" \"),_c('i',{staticClass:\"fa\",class:_vm.getIconClasses(recipient)})])}),0)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, computed } from '@vue/composition-api'\nimport InputLabel from '@/elements/InputLabel.vue'\nimport MemoInput from '@/elements/MemoInput.vue'\nimport { Recipient } from '@/views/Programs/Communications/model/Recipients'\nimport store from '@/store'\nimport { MessageChannelTypes } from '@/components/Communication/MessageChannelData'\nexport default defineComponent({\n name: 'RecipientListManager',\n components: { InputLabel, MemoInput },\n props: {\n channel: {\n type: String,\n required: true,\n default: MessageChannelTypes.EMAIL,\n },\n },\n setup(props) {\n // Computed property to maintain a reactive copy of the recipients list\n const recipients = computed(() => store.getters.communications.recipients)\n\n // Helper function to emit updates to the parent component\n const updateRecipients = (recipients: Recipient[]) => {\n store.dispatch.communications.updateRecipientsAndPreview({ recipients, type: props.channel })\n }\n\n // Selects all recipients in the list\n const selectAllParticipants = () => {\n const updatedRecipients = recipients.value.map((recipient) => ({\n ...recipient,\n isSelected: isRecipientValid(recipient) ? true : recipient.isSelected,\n }))\n updateRecipients(updatedRecipients)\n }\n\n // Deselects all recipients in the list\n const removeAllParticipants = () => {\n const updatedRecipients = recipients.value.map((recipient) => ({\n ...recipient,\n isSelected: false,\n }))\n updateRecipients(updatedRecipients)\n }\n\n // Validates if a recipient has the required contact information for the selected channel\n const isRecipientValid = (recipient: Recipient) => {\n if (props.channel === MessageChannelTypes.SMS && !recipient.phone) {\n return false\n }\n if (props.channel === MessageChannelTypes.EMAIL && !recipient.email) {\n return false\n }\n return true\n }\n\n // Toggles the selection state of a single recipient\n const toggleRecipient = (recipient: Recipient) => {\n if (!isRecipientValid(recipient)) {\n return\n }\n\n const updatedRecipients = recipients.value.map((r) => {\n if (r.id === recipient.id) {\n return {\n ...r,\n isSelected: !r.isSelected,\n }\n }\n return r\n })\n updateRecipients(updatedRecipients)\n }\n\n // Returns CSS classes for recipient pills based on selection state\n const getRecipientClasses = (recipient: Recipient) => ({\n 'text-decoration-line-through': !isRecipientValid(recipient),\n 'border bg-light': isRecipientValid(recipient) && recipient.isSelected,\n })\n\n // Returns icon classes based on selection state\n const getIconClasses = (recipient: Recipient) => {\n if (!isRecipientValid(recipient)) {\n return {}\n }\n return {\n 'fa-times text-danger': recipient.isSelected,\n 'fa-plus text-success': !recipient.isSelected,\n }\n }\n\n return {\n recipients,\n selectAllParticipants,\n removeAllParticipants,\n toggleRecipient,\n getRecipientClasses,\n getIconClasses,\n }\n },\n})\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecipientListManager.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecipientListManager.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RecipientListManager.vue?vue&type=template&id=7b92f26b&scoped=true&\"\nimport script from \"./RecipientListManager.vue?vue&type=script&lang=ts&\"\nexport * from \"./RecipientListManager.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RecipientListManager.vue?vue&type=style&index=0&id=7b92f26b&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7b92f26b\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('validation-provider',{attrs:{\"rules\":_vm.VeeValidateRules,\"mode\":_vm.veeValidateMode},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.internalValue),expression:\"internalValue\"}],attrs:{\"type\":\"hidden\",\"id\":_vm.id,\"name\":_vm.name},domProps:{\"value\":(_vm.internalValue)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.internalValue=$event.target.value}}}),(errors[0])?_c('p',{staticClass:\"inline-error m-0\"},[_vm._v(_vm._s(errors[0]))]):_vm._e()]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, watch, onMounted } from '@vue/composition-api'\nimport { getProps, useTextlike } from '@/composables/TextLike'\nimport { ValidationProvider } from 'vee-validate'\n\nexport default defineComponent({\n name: 'InputlessStringValidator',\n components: {\n ValidationProvider,\n },\n props: {\n value: { type: String, default: '', required: false },\n ...getProps(),\n },\n setup(props, ctx) {\n const { iconClick, internalValue, handleInput, handleChange, handleBlur } = useTextlike(\n props,\n ctx\n )\n\n internalValue.value = props.value\n\n function setInternalValue() {\n internalValue.value = props.value\n }\n\n watch(\n () => props.value,\n () => {\n setInternalValue()\n }\n )\n\n onMounted(() => {\n setInternalValue()\n })\n\n return {\n iconClick,\n internalValue,\n handleInput,\n handleChange,\n handleBlur,\n }\n },\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputlessStringValidator.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputlessStringValidator.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./InputlessStringValidator.vue?vue&type=template&id=9d45766c&\"\nimport script from \"./InputlessStringValidator.vue?vue&type=script&lang=ts&\"\nexport * from \"./InputlessStringValidator.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GospelVideoSelector.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MessageFilterModal.vue?vue&type=style&index=0&id=52b9bd62&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PracticeFacilitySelector.vue?vue&type=style&index=0&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"btn btn-xs\",on:{\"click\":_vm.copyAddress}},[(_vm.showSpinner)?_c('loading',{attrs:{\"is-small\":\"\"}}):_c('i',{staticClass:\"far fa-copy\"}),_c('span',{staticClass:\"d-inline-block cue ml-1\"},[_vm._v(\" Copy to Clipboard\")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\nimport { defineComponent, ref, onMounted } from '@vue/composition-api'\nimport Loading from '@/elements/Loading.vue'\nexport default defineComponent({\n name: 'ToClipboardBtn',\n props: {\n stringArray: { type: Array, required: false, default: '' },\n },\n components: { Loading },\n setup(props) {\n const copyAddresses = ref(false)\n const showSpinner = ref(false)\n\n onMounted(() => {\n document.addEventListener('copy', copyEmailAddress)\n })\n\n function copyAddress() {\n showSpinner.value = true\n\n copyAddresses.value = true\n document.execCommand('copy')\n copyAddresses.value = false\n\n setTimeout(() => {\n showSpinner.value = false\n }, 500)\n }\n\n const copyGuard = ref(false)\n function copyEmailAddress(e: any) {\n if (!copyAddresses.value || copyGuard.value) {\n return\n }\n copyGuard.value = true\n const csv = props.stringArray.reduce((s, a) => `${s},${a}`)\n\n e.clipboardData.setData('text/plain', csv)\n\n // This is necessary to prevent the current document selection from\n // being written to the clipboard.\n e.preventDefault()\n copyGuard.value = false\n }\n return { copyAddress, showSpinner, copyAddresses }\n },\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToClipboardBtn.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToClipboardBtn.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ToClipboardBtn.vue?vue&type=template&id=467421d2&scoped=true&\"\nimport script from \"./ToClipboardBtn.vue?vue&type=script&lang=ts&\"\nexport * from \"./ToClipboardBtn.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ToClipboardBtn.vue?vue&type=style&index=0&id=467421d2&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"467421d2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('input-label',{attrs:{\"label\":\"To\",\"required\":\"\"}}),_c('div',{staticClass:\"card bg-white recipient-list\"},[_c('div',{staticClass:\"card-body p-2\"},[(_vm.recipientGroups.length > 0)?_vm._l((_vm.groups),function(item){return _c('div',{key:item.id,staticClass:\"badge no-dismiss bg-primary badge-pill badge-primary mr-2\"},[_vm._v(\" \"+_vm._s(item.group)+\" \")])}):_vm._e(),_vm._l((_vm.individuals),function(item){return _c('div',{key:item.id,staticClass:\"recipient badge no-dismiss badge-pill mr-2\",class:_vm.getRecipientClass(item.contact),attrs:{\"title\":item.contact}},[_vm._v(\" \"+_vm._s(item.name)+\" \")])})],2)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export function isEmailValid(email: string) {\n if (!email || typeof email !== 'string') return false\n const re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n return email.match(re) !== null\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, computed, PropType } from '@vue/composition-api'\nimport InputLabel from '@/elements/InputLabel.vue'\nimport { isEmailValid } from '@/lib/support/utilities/email/emailUtil'\nimport { isPhoneValid } from '@/lib/support/utilities/phone/phoneUtil'\nimport { MessageChannelTypes } from '@/components/Communication/MessageChannelData'\nimport { useIsRunningChallenge } from '@/lib/common/programTypeHelpers'\nimport store from '@/store'\nimport uuid from 'uuid'\n\ninterface Recipient {\n id: string\n contact: string\n name: string\n}\n\nexport default defineComponent({\n name: 'RecipientListPreview',\n components: { InputLabel },\n props: {\n recipientGroups: {\n type: Array as PropType,\n default: () => [],\n required: false,\n },\n channel: {\n type: String,\n default: MessageChannelTypes.EMAIL,\n required: true,\n },\n },\n setup(props) {\n const isRunningChallenge = useIsRunningChallenge()\n const isEmailChannel = computed(() => props.channel.toLowerCase() === MessageChannelTypes.EMAIL)\n\n const groups = computed(() => {\n const selectedGroups = store.getters.communications.messagePreview.selectedGroups\n return selectedGroups.map((group) => ({ id: uuid.v4(), group }))\n })\n\n const createRecipient = (contact: string, name: string = contact): Recipient => ({\n id: uuid.v4(),\n contact,\n name,\n })\n\n const getAdditionalRecipients = computed(() => {\n const delimitedRecipients = store.getters.communications.messagePreview.toDelimited.split(',')\n return delimitedRecipients.map((r) => createRecipient(r))\n })\n\n const individualsRecreational = computed(() => {\n const messagePreviewRecipients = store.getters.communications.messagePreview.to\n return [...getAdditionalRecipients.value, ...messagePreviewRecipients.map((r) => createRecipient(r))]\n })\n\n const individualsRunning = computed(() => {\n const selectedRecipients = store.getters.communications.recipients\n .filter((recipient) => recipient.isSelected)\n .map((recipient) =>\n createRecipient(isEmailChannel.value ? recipient.email : recipient.phone, recipient.name)\n )\n\n return [...getAdditionalRecipients.value, ...selectedRecipients]\n })\n\n const individuals = computed(() =>\n isRunningChallenge.value ? individualsRunning.value : individualsRecreational.value\n )\n\n const recipientValid = (recipient: string): boolean => {\n if (!recipient) return false\n return isEmailChannel.value ? isEmailValid(recipient) : isPhoneValid(recipient)\n }\n\n const getRecipientClass = (contact: string) => ({\n 'valid-pill': recipientValid(contact),\n 'invalid-pill': !recipientValid(contact),\n })\n\n return {\n groups,\n individuals,\n getRecipientClass,\n }\n },\n})\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecipientListPreview.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecipientListPreview.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RecipientListPreview.vue?vue&type=template&id=bd63836c&scoped=true&\"\nimport script from \"./RecipientListPreview.vue?vue&type=script&lang=ts&\"\nexport * from \"./RecipientListPreview.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RecipientListPreview.vue?vue&type=style&index=0&id=bd63836c&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bd63836c\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecipientListPreview.vue?vue&type=style&index=0&id=bd63836c&scoped=true&lang=scss&\"","export enum MessageChannelTypes {\n 'EMAIL' = 'email',\n 'SMS' = 'sms',\n}\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecipientListManager.vue?vue&type=style&index=0&id=7b92f26b&scoped=true&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"title\":\"Recipient Filters\",\"is-small\":_vm.small},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('div',{staticClass:\"row bg-light-2 m-1\"},[_c('div',{staticClass:\"col-auto\"},[_c('h6',[_vm._v(\"Parents/Guardians (paid)\")]),_c('RadioGroupInput',{attrs:{\"value-property-name\":\"value\",\"text-property-name\":\"label\",\"items-list\":_vm.paymentOptions},model:{value:(_vm.pymtStatus),callback:function ($$v) {_vm.pymtStatus=$$v},expression:\"pymtStatus\"}})],1),(_vm.isLeague)?_c('div',{staticClass:\"col-auto\"},[_c('h6',[_vm._v(\"Parents/Guardians (player eval)\")]),_c('RadioGroupInput',{attrs:{\"value-property-name\":\"value\",\"text-property-name\":\"label\",\"items-list\":_vm.evalOptions},model:{value:(_vm.evalStatus),callback:function ($$v) {_vm.evalStatus=$$v},expression:\"evalStatus\"}})],1):_vm._e(),_c('div',{staticClass:\"col-auto\"},[_c('h6',[_vm._v(\"Coaches\")]),_c('RadioGroupInput',{attrs:{\"value-property-name\":\"value\",\"text-property-name\":\"label\",\"items-list\":_vm.coachAssignOptions},model:{value:(_vm.coachTeamStatus),callback:function ($$v) {_vm.coachTeamStatus=$$v},expression:\"coachTeamStatus\"}})],1),(_vm.hasCheer)?_c('div',{staticClass:\"col-auto\"},[_c('h6',[_vm._v(\"Program\")]),_c('MessageProgramSelector',{model:{value:(_vm.typeProgramID),callback:function ($$v) {_vm.typeProgramID=$$v},expression:\"typeProgramID\"}})],1):_vm._e(),(_vm.hasPartners)?_c('div',{staticClass:\"col-auto\"},[_c('h6',[_vm._v(\"Churches\")]),_c('RadioGroupInput',{attrs:{\"items-list\":_vm.multiPartnerOptions,\"value-property-name\":\"value\",\"text-property-name\":\"label\"},model:{value:(_vm.viewAllLeagueContacts),callback:function ($$v) {_vm.viewAllLeagueContacts=$$v},expression:\"viewAllLeagueContacts\"}})],1):_vm._e(),_c('div',{staticClass:\"col-auto\"},[_c('h6',[_vm._v(_vm._s(_vm.isByAge ? 'Ages' : 'Grades'))]),_c('GradeRangeDropdowns',{attrs:{\"isByAge\":_vm.isByAge,\"startGrade\":_vm.startGrade,\"endGrade\":_vm.endGrade},on:{\"change\":_vm.setGrades}})],1),_c('div',{staticClass:\"col-auto\"},[_c('h6',[_vm._v(\"Participant Gender\")]),_c('RadioGroupInput',{attrs:{\"items-list\":_vm.genderOptions,\"value-property-name\":\"value\",\"text-property-name\":\"label\"},model:{value:(_vm.gender),callback:function ($$v) {_vm.gender=$$v},expression:\"gender\"}})],1)]),_c('div',{staticClass:\"row bg-light-2 m-1\"},[_c('div',{staticClass:\"col-12\"},[_c('h6',[_vm._v(\"Mutually Exclusive Filters\")]),_c('SwitchSlot',{attrs:{\"mode\":\"buttons\",\"options\":_vm.slots},on:{\"change\":_vm.slotChange},model:{value:(_vm.slot),callback:function ($$v) {_vm.slot=$$v},expression:\"slot\"}},[(_vm.isLeague)?_c('div',{attrs:{\"slot\":\"nights\"},slot:\"nights\"},[_c('DayOfWeekPicker',{attrs:{\"mode\":\"radio\",\"all-option\":\"\"},model:{value:(_vm.practice),callback:function ($$v) {_vm.practice=$$v},expression:\"practice\"}})],1):_vm._e(),_c('div',{attrs:{\"slot\":\"teams\"},slot:\"teams\"},[_c('DivisionTeamSelector',{model:{value:(_vm.teams),callback:function ($$v) {_vm.teams=$$v},expression:\"teams\"}})],1),_c('div',{attrs:{\"slot\":\"practiceFacilities\"},slot:\"practiceFacilities\"},[_c('practice-facility-selector',{model:{value:(_vm.practiceFacilities),callback:function ($$v) {_vm.practiceFacilities=$$v},expression:\"practiceFacilities\"}})],1)])],1)]),_c('template',{slot:\"footer\"},[_c('button',{staticClass:\"btn btn-success\",on:{\"click\":_vm.close}},[_vm._v(\"Filter Recipients\")])])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('radio-group-input',{attrs:{\"items-list\":_vm.programOptions,\"value-property-name\":\"value\",\"text-property-name\":\"label\"},model:{value:(_vm.program),callback:function ($$v) {_vm.program=$$v},expression:\"program\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from 'vue-property-decorator'\nimport { cloneDeep } from 'lodash'\n\nimport RadioGroupInput from '@/elements/RadioGroupInput.vue'\n\nimport { programOptions } from '@/views/Programs/Communications/data/filterOptions'\nimport { isCheer } from '@/lib/common/ProgramTypes'\nimport store from '@/store'\n\n//These are strings because that is what the API expects\n@Component({\n components: { RadioGroupInput },\n data() {\n return { programOptions }\n },\n})\nexport default class MessageProgramSelector extends Vue {\n @Prop({ type: String, required: false })\n private readonly value!: string\n\n currentOption = ''\n\n clear() {\n this.$emit('input', '')\n }\n\n emitValue(val: string) {\n if (val === programOptions[0].value) {\n this.clear()\n }\n this.currentOption = val\n this.$emit('input', val)\n }\n\n get program() {\n return this.optionaValue()\n }\n set program(v: string) {\n const id = this.programId(v)\n this.$emit('input', id)\n }\n\n get programs() {\n return cloneDeep(store.getters.leagueAbstraction.currentItem.programs) ?? []\n }\n\n /**\n * Converts an option (cheer or sport) to a typeProgramID\n */\n programId(option: string) {\n if (option == 'ALL') return ''\n\n if (option == 'CHEER') {\n const cheer = this.programs.find((p) => isCheer(p.typeProgramID))\n return cheer?.typeProgramID ?? ''\n }\n //this.program will be SPORT\n const sport = this.programs.find((p) => !isCheer(p.typeProgramID))\n return sport?.typeProgramID ?? ''\n }\n\n /**\n * Converts a typeProgramID to an option (cheer or sport)\n */\n optionaValue() {\n if (this.value == '') return programOptions[2].value // ALL\n\n const program = this.programs.find((p) => p.typeProgramID == this.value)\n\n if (program && isCheer(program.typeProgramID)) {\n return programOptions[1].value // CHEER\n }\n return programOptions[0].value // SPORT\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MessageProgramSelector.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MessageProgramSelector.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MessageProgramSelector.vue?vue&type=template&id=4fc5baa3&\"\nimport script from \"./MessageProgramSelector.vue?vue&type=script&lang=ts&\"\nexport * from \"./MessageProgramSelector.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MessageProgramSelector.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6\"},[_c('div',[(_vm.loading)?_c('loading',{attrs:{\"is-small\":\"\"}}):_c('Tree',{staticClass:\"bg-white p-2\",attrs:{\"items\":_vm.divisionTree,\"selectable\":\"\",\"return-object\":\"\",\"open\":_vm.openNodes,\"dense\":\"\",\"open-on-click\":\"\"},on:{\"update:open\":function($event){_vm.openNodes=$event}},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}})],1)]),_c('div',{staticClass:\"col-6\"},[_c('div',{staticClass:\"bg-white p-2\",staticStyle:{\"min-height\":\"100px\"}},[_c('h6',[_vm._v(\"Selected Teams\")]),_vm._l((_vm.sortedTeams),function(t){return _c('div',{key:t.id,staticClass:\"badge no-dismiss bg-primary badge-pill badge-primary mr-2\"},[_vm._v(\" \"+_vm._s(t.name)+\" \")])}),(!_vm.sortedTeams.length)?_c('div',{staticClass:\"text-center\"},[_c('span',{staticClass:\"text-muted font-italic\"},[_vm._v(\"No teams selected\")])]):_vm._e()],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, ref, watch, computed, PropType } from '@vue/composition-api'\nimport { cloneDeep } from 'lodash'\nimport uuid from 'uuid'\n\nimport Tree from '@/components/Tree.vue'\nimport Loading from '@/elements/Loading.vue'\n\nimport { DivisionTeamInfo } from '@/GeneratedTypes/ListInfo/DivisionTeamInfo'\n\nimport store from '@/store'\n\ninterface TreeNode {\n 'item-key': string\n id?: number\n name: string\n children: TreeNode[]\n}\n\nexport default defineComponent({\n name: 'DivisionTeamSelector',\n props: {\n value: { type: Array as PropType, required: false, default: () => [] }, //array of selected teamID's\n },\n components: { Tree, Loading },\n setup(props, { emit }) {\n let fetchedTeams = ref(null)\n let divisionTree = ref([])\n const rootid = uuid.v4()\n const openNodes = ref([rootid])\n\n const upwId = computed(() => store.getters.leagueAbstraction.currentItem.upwardLeagueID ?? '')\n\n const sortedTeams = computed(() => {\n const s = cloneDeep(selected.value) as TreeNode[]\n return s.sort((a, b) => (a.name > b.name ? 1 : -1))\n })\n\n const selected = computed({\n get(): TreeNode[] {\n if (fetchedTeams.value) {\n return fetchedTeams.value\n .filter((t) => props.value.includes(t.teamID))\n .map((tt) => getTreeNodeTeam(tt))\n } else {\n return []\n }\n },\n set(v: TreeNode[]) {\n const ids = v.map((t) => t.id ?? 0)\n emit('input', ids)\n },\n })\n\n function getTreeNodeTeam(t: DivisionTeamInfo): TreeNode {\n return {\n 'item-key': `${t.divisionID}${t.teamID}`,\n id: t.teamID,\n name: t.teamName ?? '',\n children: [],\n }\n }\n\n function makeTree() {\n //root node\n const tree: TreeNode = {\n 'item-key': rootid,\n name: 'All Divisions',\n children: [],\n }\n\n //all other nodes\n if (fetchedTeams.value?.length) {\n const divisions = fetchedTeams.value.reduce((arr: TreeNode[], d) => {\n getDivision(arr, d)\n return arr\n }, [])\n tree.children = divisions\n }\n return tree\n }\n\n function getDivision(arr: any, d: DivisionTeamInfo) {\n if (!divisionExists(arr, d.divisionID)) {\n arr.push({\n 'item-key': d.divisionID,\n id: d.divisionID,\n name: d.divisionName ?? '',\n children: getTeams(d.divisionID),\n })\n }\n }\n\n function getTeams(divisionId: number) {\n const x = fetchedTeams.value?.reduce((arr: TreeNode[], t) => {\n if (t.divisionID == divisionId) {\n arr.push({\n 'item-key': `${t.divisionID}${t.teamID}`,\n id: t.teamID,\n name: t.teamName ?? '',\n } as TreeNode)\n }\n return arr\n }, [])\n return x ?? []\n }\n\n function divisionExists(divisions: TreeNode[] | undefined, divisionId: number) {\n if (divisions == undefined) return false\n if (divisions.find((d) => d.id == divisionId)) return true\n return false\n }\n\n const loading = ref(false)\n async function fetchTeams() {\n loading.value = true\n try {\n fetchedTeams.value = await store.dispatch.teams.fetchTeams({ upwId: upwId.value })\n } finally {\n loading.value = false\n }\n }\n\n watch(\n () => upwId.value,\n async () => {\n await fetchTeams()\n },\n { immediate: true }\n )\n watch(\n () => fetchedTeams.value,\n () => {\n divisionTree.value?.push(makeTree())\n }\n )\n return { selected, divisionTree, loading, sortedTeams, openNodes }\n },\n})\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DivisionTeamSelector.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DivisionTeamSelector.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DivisionTeamSelector.vue?vue&type=template&id=1d0dc09a&\"\nimport script from \"./DivisionTeamSelector.vue?vue&type=script&lang=ts&\"\nexport * from \"./DivisionTeamSelector.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._l((_vm.practiceFacilities),function(item,index){return _c('div',{key:((item.id) + \"-checkbox-\" + (item.selected)),class:{ 'pf-item': true, 'padding-fix': index === 0 }},[_c('input',{key:(\"key-\" + (item.id) + \"-\" + (item.selected)),attrs:{\"type\":\"checkbox\",\"name\":_vm.elementId,\"id\":_vm.elementId + index},domProps:{\"checked\":item.selected},on:{\"change\":function($event){$event.stopPropagation();return _vm.handleChange(item.id)}}}),_c('label',{staticClass:\"pl-2 pr-2 form-check-label\",attrs:{\"for\":_vm.elementId + index}},[_vm._v(_vm._s(item.description))])])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, ref, computed, PropType, onMounted } from '@vue/composition-api'\nimport RadioGroupInput from '@/elements/RadioGroupInput.vue'\nimport uuid from 'uuid'\nimport { cloneDeep } from 'lodash'\n\nimport store from '@/store'\nimport facilitiesClient from '@/clients/facilitiesClient'\nimport { LeagueFacility } from '@/GeneratedTypes/LeagueFacility'\nimport { FacilityEventEnum } from '@/lib/support/models/FacilityAvailability/types'\n\ninterface PracticeFacilityType {\n id: number\n description: string\n selected: boolean\n}\nexport default defineComponent({\n name: 'PracticeFacilitySelector',\n props: {\n value: { type: Array as PropType, required: false, default: () => [] }, //array of selected facility IDs\n id: { type: String, required: false, default: '' },\n },\n components: { RadioGroupInput },\n setup(props, { emit }) {\n const guid = uuid.v4()\n const elementId = computed(() => props.id || `checkbox-${guid}`)\n const practiceFacilities = ref([])\n const internalValue = ref([])\n\n onMounted(async () => {\n internalValue.value = cloneDeep(props.value)\n const facilities = ref([])\n facilities.value =\n (await facilitiesClient.retrieveAll(\n store.getters.leagueAbstraction.currentItem.upwardLeagueID ?? '',\n false\n )) ?? []\n practiceFacilities.value =\n facilities.value\n .filter((x) => x.availability?.some((a) => a.typeFacilityEventID == FacilityEventEnum.PRACTICES))\n .map((x) => ({\n id: x.facilityID,\n description: x.facilityName,\n selected: internalValue.value.some((s) => s == x.facilityID),\n })) ?? []\n })\n\n function handleChange(value: number) {\n const index = internalValue.value.indexOf(value)\n\n /* This filter takes care of multiple values appearing in the array like ['1','1','2'] */\n if (index !== undefined && index >= 0) {\n internalValue.value = internalValue.value.filter((x) => x !== value)\n } else {\n internalValue.value.push(value)\n }\n emit('input', internalValue.value)\n emit('change', internalValue.value)\n }\n\n return {\n elementId,\n practiceFacilities,\n handleChange,\n }\n },\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PracticeFacilitySelector.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PracticeFacilitySelector.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PracticeFacilitySelector.vue?vue&type=template&id=76b2b090&\"\nimport script from \"./PracticeFacilitySelector.vue?vue&type=script&lang=ts&\"\nexport * from \"./PracticeFacilitySelector.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PracticeFacilitySelector.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, computed, ref, watch } from '@vue/composition-api'\nimport { cloneDeep, debounce } from 'lodash'\n\nimport Modal from '@/components/Modal.vue'\nimport GradeRangeDropdowns from '@/elements/GradeRangeDropdowns.vue'\nimport RadioGroupInput from '@/elements/RadioGroupInput.vue'\nimport MessageProgramSelector from '@/components/Communication/MessageProgramSelector.vue'\nimport SwitchSlot from '@/elements/SwitchSlot.vue'\nimport DayOfWeekPicker from '@/elements/DayOfWeekPicker.vue'\nimport DivisionTeamSelector from '@/views/Programs/Communications/vue/Filters/DivisionTeamSelector.vue'\nimport PracticeFacilitySelector from '@/elements/PracticeFacilitySelector.vue'\n\nimport {\n paymentOptions,\n evalOptions,\n coachAssignOptions,\n multiPartnerOptions,\n genderOptions,\n} from '@/views/Programs/Communications/data/filterOptions'\nimport { days } from '@/lib/support/models/UpwardTypes/UpdwardDayTypeID/days'\nimport { UpwardOpportunityTypes } from '@/lib/common/upwardOpportunityTypes'\nimport { MessageChannelTypes } from '@/components/Communication/MessageChannelData'\n\nimport store from '@/store'\n\nexport default defineComponent({\n name: 'MessageFilterModal',\n props: {\n value: { type: Boolean, required: false },\n channel: {\n type: String,\n default: MessageChannelTypes.EMAIL,\n required: false,\n },\n },\n data() {\n return { paymentOptions, evalOptions, coachAssignOptions, multiPartnerOptions, genderOptions }\n },\n components: {\n Modal,\n GradeRangeDropdowns,\n RadioGroupInput,\n MessageProgramSelector,\n DayOfWeekPicker,\n SwitchSlot,\n DivisionTeamSelector,\n PracticeFacilitySelector,\n },\n setup(props, { emit }) {\n const pymtStatus = computed({\n get(): string {\n return store.getters.communications.messagePreview.paymentStatus ?? 'All'\n },\n set(paymentStatus: string) {\n store.commit.communications.setPaymentStatus({ paymentStatus })\n },\n })\n\n const isLeague = computed(() => {\n return store.getters.leagueAbstraction.programType == UpwardOpportunityTypes.LEAGUE\n })\n\n const isByAge = computed(() => store.getters.leagueAbstraction.isByAge)\n\n const evalStatus = computed({\n get(): string {\n return store.getters.communications.messagePreview.evalStatus ?? 'All'\n },\n set(evalStatus: string) {\n store.commit.communications.setEvalStatus({ evalStatus })\n },\n })\n\n const typeProgramID = computed({\n get(): string {\n return store.getters.communications.messagePreview.typeProgramID ?? ''\n },\n set(typeProgramID: string) {\n store.commit.communications.setTypeProgramID({ typeProgramID })\n },\n })\n const viewAllLeagueContacts = computed({\n get(): boolean {\n return store.getters.communications.messagePreview.viewAllLeagueContacts ?? false\n },\n set(viewAllLeagueContacts: boolean) {\n store.commit.communications.setViewAllLeagueContacts({ viewAllLeagueContacts })\n },\n })\n\n const coachTeamStatus = computed({\n get(): string {\n return store.getters.communications.messagePreview.coachTeamStatus ?? 'All'\n },\n set(coachTeamStatus: string) {\n store.commit.communications.setCoachTeamStatus({ coachTeamStatus })\n },\n })\n\n const practice = computed({\n get(): number | null {\n return (\n days.find((p) => p.name == store.getters.communications.messagePreview.practiceNight)?.value ?? null\n )\n },\n set(v: number | null) {\n const practiceNight = days.find((d) => d.value == v)?.name ?? 'All'\n store.commit.communications.setPracticeNight({ practiceNight })\n },\n })\n\n const teams = computed({\n get(): number[] {\n return store.getters.communications.messagePreview.teams ?? []\n },\n set(teams: number[]) {\n store.commit.communications.setTeams({ teams })\n },\n })\n\n const practiceFacilities = computed({\n get(): number[] {\n return store.getters.communications.messagePreview.practiceFacilityIDs ?? []\n },\n set(practiceFacilityIDs: number[]) {\n store.commit.communications.setPracticeFacilityIDs({ practiceFacilityIDs })\n },\n })\n\n async function filterRecipients() {\n await store.dispatch.communications.retrieveRecipientList({\n communicationType: props.channel as MessageChannelTypes,\n })\n }\n\n const show = computed({\n get(): boolean {\n return props.value\n },\n set(v: boolean) {\n emit('input', v)\n },\n })\n\n function close() {\n emit('input', false)\n }\n\n function setGrades(grades: string[]) {\n store.commit.communications.setStartGrade({ startGrade: grades[0] })\n store.commit.communications.setEndGrade({ endGrade: grades[grades.length - 1] })\n }\n const startGrade = computed(() => store.getters.communications.messagePreview.startGrade ?? 'K3')\n const endGrade = computed(() => store.getters.communications.messagePreview.endGrade ?? '12th')\n\n const gender = computed({\n get(): string {\n return store.getters.communications.messagePreview.gender ?? 'E'\n },\n set(gender: string) {\n store.commit.communications.setGender({ gender })\n },\n })\n\n const programs = computed(() => {\n return cloneDeep(store.getters.leagueAbstraction.currentItem.programs) ?? []\n })\n\n const hasPartners = computed(() => {\n return (store.getters.leagueAbstraction.currentItem.accounts ?? []).length > 1\n })\n\n const hasCheer = computed(() => {\n return programs.value.length > 1\n })\n\n const small = computed(() => {\n return !hasCheer.value && !hasPartners.value\n })\n\n const slots = computed(() => {\n return [\n { text: 'Practice Nights', value: 'nights' },\n { text: 'Division/Teams', value: 'teams' },\n { text: 'Practice Facilities', value: 'practiceFacilities' },\n ].filter((i) => {\n if (!isLeague.value) return i.value === 'teams'\n return true\n })\n })\n const slot = ref('nights')\n function slotChange(v: string) {\n // These filters are mutually exclusive,\n // so clear the filters when the slot changes\n if (v === 'teams') {\n store.commit.communications.setPracticeNight({ practiceNight: 'All' })\n store.commit.communications.setPracticeFacilityIDs({ practiceFacilityIDs: [] })\n } else if (v === 'nights') {\n store.commit.communications.setPracticeFacilityIDs({ practiceFacilityIDs: [] })\n store.commit.communications.setTeams({ teams: [] })\n teams.value = []\n } else if (v === 'practiceFacilities') {\n store.commit.communications.setTeams({ teams: [] })\n teams.value = []\n store.commit.communications.setPracticeNight({ practiceNight: 'All' })\n }\n }\n\n // Create debounced version of filterRecipients\n const debouncedFilterRecipients = debounce(async () => {\n await filterRecipients()\n }, 300)\n\n // Watch for changes in filter values\n watch(\n [\n evalStatus,\n typeProgramID,\n viewAllLeagueContacts,\n coachTeamStatus,\n pymtStatus,\n gender,\n startGrade,\n endGrade,\n ],\n async () => {\n await debouncedFilterRecipients()\n },\n { deep: true }\n )\n\n // Watch practice/teams/facilities separately since they're mutually exclusive\n watch(\n [practice, teams, practiceFacilities],\n async () => {\n await debouncedFilterRecipients()\n },\n { deep: true }\n )\n\n return {\n show,\n setGrades,\n startGrade,\n endGrade,\n hasCheer,\n hasPartners,\n small,\n pymtStatus,\n evalStatus,\n coachTeamStatus,\n typeProgramID,\n viewAllLeagueContacts,\n slot,\n slots,\n practice,\n teams,\n close,\n isLeague,\n practiceFacilities,\n slotChange,\n gender,\n isByAge,\n }\n },\n get isLeague() {\n const opportunityType = store.getters.leagueAbstraction.programType\n if (opportunityType == UpwardOpportunityTypes.LEAGUE) {\n return true\n }\n return false\n },\n})\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MessageFilterModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MessageFilterModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MessageFilterModal.vue?vue&type=template&id=52b9bd62&scoped=true&\"\nimport script from \"./MessageFilterModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./MessageFilterModal.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MessageFilterModal.vue?vue&type=style&index=0&id=52b9bd62&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"52b9bd62\",\n null\n \n)\n\nexport default component.exports","import store from '@/store'\nexport interface RecipientGroupOptions {\n optionText: string\n optionValue: string\n}\n\n//since these are directly tied to the database(ouch), I am putting them in one place here\n//plus Cindy had a note previously to get rid of the file these were in.\nexport enum RecipientTypes {\n PARENTS = 'Parents/Guardians',\n COACHES = 'Coaches',\n REFEREES = 'Referees',\n COMMISSIONERS = 'Commissioners',\n OTHERS = 'Other Volunteers',\n}\n\n//add ability to change the option descriptions without killing the database procedure tightly coupled with these values\n//this should all probably be refactored to NOT tightly couple the database parameters to front-end descriptions.\nexport function getRecipientGroups() {\n const retval = [] as RecipientGroupOptions[]\n retval.push({ optionText: RecipientTypes.PARENTS, optionValue: RecipientTypes.PARENTS })\n retval.push({ optionText: RecipientTypes.COACHES, optionValue: RecipientTypes.COACHES })\n if (!store.getters.leagueAbstraction.isUpwardSelect) {\n retval.push({\n optionText: store.getters.leagueAbstraction.refLabel + 's',\n optionValue: RecipientTypes.REFEREES,\n })\n }\n retval.push({ optionText: RecipientTypes.COMMISSIONERS, optionValue: RecipientTypes.COMMISSIONERS })\n retval.push({ optionText: RecipientTypes.OTHERS, optionValue: RecipientTypes.OTHERS })\n return retval\n}\n","import { PreviewMessage } from '@/models/Communication/PreviewMessage'\nimport { Recipients, Recipient, getEmptyRecipient } from '@/views/Programs/Communications/model/Recipients'\nimport { EmailCompose } from '@/views/Programs/Communications/model/EmailCompose'\nimport uuid from 'uuid'\nimport { PartnerChallengeParticipantInfo } from '@/models/UpwardRunning/PartnerChallengeParticipantInfo'\n\n//Used with recreational league; get the list of recipients.\nexport function mergeAllRecipients(preview: PreviewMessage) {\n if (preview && preview.to) {\n const additionalEmailArray = preview.toDelimited != '' ? preview.toDelimited.split(', ') : []\n return [...additionalEmailArray, ...preview.to]\n }\n return []\n}\n\n//Used with running challenge; get all email addresses from the compose object.\nexport function getAllEmailAddresses(compose: EmailCompose): string[] {\n const emailAddresses: string[] = []\n\n // Add emails from toDelimited array\n if (compose.recipients.toDelimited) {\n emailAddresses.push(...compose.recipients.toDelimited.map((email) => email.trim()))\n }\n\n // Add emails from recipients array\n if (compose.recipients.recipients) {\n emailAddresses.push(\n ...compose.recipients.recipients\n .filter((recipient) => recipient.isSelected)\n .map((recipient) => recipient.email)\n )\n }\n\n return emailAddresses\n}\n\nexport function createRecipientsFromChallengeParticipants(\n participants: PartnerChallengeParticipantInfo[]\n): Recipient[] {\n if (!participants?.length) {\n return []\n }\n\n return participants.map((participant) => {\n const recipient = getEmptyRecipient()\n recipient.id = uuid.v4()\n recipient.name = participant.formattedName ?? ''\n recipient.email = participant.emailAddress ?? ''\n recipient.phone = participant.phoneNumber ?? ''\n recipient.isSelected = false\n return recipient\n })\n}\n\nexport function mergeAndCreateRecipients(preview: PreviewMessage) {\n if (preview && preview.to) {\n //convert the toDelimited string to an array\n const toDelimitedArray = preview.toDelimited != '' ? preview.toDelimited.split(', ') : []\n //combine the toDelimited array with the to array\n const emails = [...toDelimitedArray, ...preview.to]\n //create an array of recipients\n const allRecipients: Recipient[] = []\n if (emails.length) {\n allRecipients.push(\n ...emails.map((email: string) => {\n const recipient = getEmptyRecipient()\n recipient.id = uuid.v4()\n recipient.email = email\n recipient.name = email\n recipient.isSelected = true\n return recipient\n })\n )\n }\n return allRecipients\n }\n return []\n}\n\n// Merge all the recipients from the list with the extra ones that where added manually\n// by the user (aka the toDelimited values)\nexport function mergeAllEmailRecipients(recipients: Recipients): Recipient[] {\n if (!recipients?.recipients) {\n return []\n }\n\n const allRecipients: Recipient[] = []\n\n // First add the toDelimited emails addresses\n if (recipients.toDelimited) {\n const additionalEmails = recipients.toDelimited.map((email: string) => email.trim())\n allRecipients.push(\n ...additionalEmails.map((email: string) => {\n const recipient = getEmptyRecipient()\n recipient.id = uuid.v4()\n recipient.email = email\n recipient.name = email\n recipient.isSelected = true\n return recipient\n })\n )\n }\n\n // Then add the selected recipients\n const selectedRecipients = recipients.recipients.filter((r) => r?.isSelected && r.email)\n allRecipients.push(...selectedRecipients)\n\n return allRecipients\n}\n","export interface Recipients {\n selectedGroups: string[]\n toDelimited: string[] // Used in the call to send email and sms. Just the selected emails or phone numbers\n recipients: Recipient[] //List of all recipients with a flag indicating if they are selected or not\n}\n\nexport interface Recipient {\n id: string | number\n name: string\n email: string\n phone: string\n isSelected: boolean\n}\n\nexport function getEmptyRecipients(): Recipients {\n return {\n selectedGroups: [],\n toDelimited: [],\n recipients: [],\n }\n}\n\nexport function getEmptyRecipient(): Recipient {\n return {\n id: '',\n name: '',\n email: '',\n phone: '',\n isSelected: false,\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('CheckboxGroupInput',{attrs:{\"label\":_vm.label,\"items-list\":_vm.recipientGroups,\"textPropertyName\":\"optionText\",\"valuePropertyName\":\"optionValue\"},model:{value:(_vm.selectedGroups),callback:function ($$v) {_vm.selectedGroups=$$v},expression:\"selectedGroups\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, computed } from '@vue/composition-api'\nimport store from '@/store'\n\nimport CheckboxGroupInput from '@/elements/CheckboxGroupInput.vue'\nimport { getRecipientGroups } from '@/views/Programs/Communications/ext/RecipientGroups'\nimport { MessageChannelTypes } from '@/components/Communication/MessageChannelData'\n\nexport default defineComponent({\n name: 'RecipientGroupInput',\n props: {\n label: { type: String, required: false, default: 'Recipient Groups' },\n channel: {\n type: String,\n default: MessageChannelTypes.EMAIL,\n required: false,\n },\n },\n components: { CheckboxGroupInput },\n setup(props) {\n const recipientGroups = getRecipientGroups()\n\n const selectedGroups = computed({\n get() {\n return [...store.getters.communications.messagePreview.selectedGroups]\n },\n set(groups: string[]) {\n store.commit.communications.setSelectedGroups({\n groups,\n })\n retrieveMessagePreview()\n },\n })\n\n //Get the recipients for the selected groups\n const retrieveMessagePreview = async () => {\n try {\n await store.dispatch.communications.retrieveRecipientList({\n communicationType: props.channel as MessageChannelTypes,\n })\n } finally {\n }\n }\n\n return { selectedGroups, recipientGroups }\n },\n})\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecipientGroupInput.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecipientGroupInput.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RecipientGroupInput.vue?vue&type=template&id=6c809dbc&\"\nimport script from \"./RecipientGroupInput.vue?vue&type=script&lang=ts&\"\nexport * from \"./RecipientGroupInput.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export interface GospelVideoOption {\n id: string\n title: string\n url: string\n description: string\n emailText: string\n smsText: string\n}\n\nconst theGospelTruthShort: GospelVideoOption = {\n id: 'TheGospelTruthShort',\n title: 'The Gospel Truth (Short Version)',\n url: 'https://www.upward.org/the-gospel-truth-shortversion/',\n description: `Is the story of Jesus true? A former police detective walks us through some of the evidence that shows that Jesus stands apart from the myths of the past. The biblical story of Jesus is reliable, and it invites each of us to take a step of faith toward Him.`,\n emailText:\n 'Parents and players - Here is an important video to watch as part of our season. Your coach will take the time to discuss what you viewed in the video at an upcoming practice',\n smsText: 'Upward Sports: Here is an important video to watch as part of our season. ',\n}\n\nconst theGospelTruthFull: GospelVideoOption = {\n id: 'TheGospelTruthFull',\n title: 'The Gospel Truth (Full Version)',\n url: 'https://www.upward.org/the-gospel-truth-fullversion/',\n description: `Is the story of Jesus true? A former police detective walks us through some of the evidence that shows that Jesus stands apart from the myths of the past. The biblical story of Jesus is reliable, and it invites each of us to take a step of faith toward Him.`,\n emailText:\n 'Parents and players - Here is an important video to watch as part of our season. Your coach will take the time to discuss what you viewed in the video at an upcoming practice',\n smsText: 'Upward Sports: Here is an important video to watch as part of our season. ',\n}\n\nconst fromDoToDone: GospelVideoOption = {\n id: 'FromDoToDone',\n title: 'From Do to Done',\n url: 'https://www.upward.org/from-do-to-done/',\n description: `Go from what we think of as a list of things we have to do to become a Christian, to understanding what God has already done for us.`,\n emailText:\n 'Parents and players - Here is an important video to watch as part of our season. Your coach will take the time to discuss what you viewed in the video at an upcoming practice',\n smsText: 'Upward Sports: Here is an important video to watch as part of our season. ',\n}\n\nconst thePortal: GospelVideoOption = {\n id: 'ThePortal',\n title: 'The Portal',\n url: 'https://www.upward.org/theportal/',\n description: `Look through a portal to see how God can transform feelings of despair, loneliness, and obscurity to hope, companionship, and being seen by God the Creator.`,\n emailText:\n 'Parents and players - Here is an important video to watch as part of our season. Your coach will take the time to discuss what you viewed in the video at an upcoming practice',\n smsText: 'Upward Sports: Here is an important video to watch as part of our season. ',\n}\n\nconst situationRoom: GospelVideoOption = {\n id: 'SituationRoom',\n title: 'Situation Room',\n url: 'https://www.upward.org/situationroom/',\n description: `Humanity has a problem. A big problem. And there's only one solution.`,\n emailText:\n 'Parents and players - Here is an important video to watch as part of our season. Your coach will take the time to discuss what you viewed in the video at an upcoming practice',\n smsText: 'Upward Sports: Here is an important video to watch as part of our season. ',\n}\n\nconst gospelLiterally: GospelVideoOption = {\n id: 'GospelLiterally',\n title: 'The Gospel Literally',\n url: 'https://www.upward.org/thegospelliterally/',\n description:\n 'Are we too short to be with God? Does God pay us with death? Why does God want our hearts? All these confusing questions get answered.',\n emailText:\n 'Parents and players - Here is an important video to watch as part of our season. Your coach will take the time to discuss what you viewed in the video at an upcoming practice',\n smsText: 'Upward Sports: Here is an important video to watch as part of our season. ',\n}\n\nconst graffitiGospel: GospelVideoOption = {\n id: 'GraffitiGospel',\n title: 'Graffiti Gospel',\n url: 'https://www.upward.org/graffitigospel',\n description: 'Watch an artist share the Gospel while creating a graffiti art mural.',\n emailText:\n 'Parents and players - Here is an important video to watch as part of our season. Your coach will take the time to discuss what you viewed in the video at an upcoming practice',\n smsText: 'Upward Sports: Here is an important video to watch as part of our season. ',\n}\n\nconst greatestSuperheroGospel: GospelVideoOption = {\n id: 'GreatestSuperheroGospel',\n title: 'The Greatest Superhero',\n url: 'https://www.upward.org/greatestsuperhero',\n description: 'Learn with Captain Kaboom about the greatest superhero.',\n emailText:\n 'Parents and players - Here is an important video to watch as part of our season. Your coach will take the time to discuss what you viewed in the video at an upcoming practice',\n smsText: 'Upward Sports: Here is an important video to watch as part of our season. ',\n}\n\nconst none: GospelVideoOption = {\n id: 'None',\n title: 'None',\n url: '',\n description: '',\n emailText: '',\n smsText: '',\n}\n\nexport const GospelVideoOptions = new Map([\n ['FromDoToDone', fromDoToDone],\n ['ThePortal', thePortal],\n ['SituationRoom', situationRoom],\n ['GospelLiterally', gospelLiterally],\n ['GraffitiGospel', graffitiGospel],\n ['GreatestSuperheroGospel', greatestSuperheroGospel],\n ['TheGospelTruthFull', theGospelTruthFull],\n ['TheGospelTruthShort', theGospelTruthShort],\n ['None', none],\n])\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MessageProgramSelector.vue?vue&type=style&index=0&lang=css&\"","import { Route } from 'vue-router'\nimport { LeagueVolunteerInfo } from '@/GeneratedTypes/ListInfo/LeagueVolunteerInfo'\nimport { RuntimeException } from '@/lib/common/exceptions/RuntimeException'\nimport { LeagueVolunteer } from '@/GeneratedTypes/LeagueVolunteer'\nimport { getEmptyLeagueVolunteer, LeagueVolunteerSeedInfo } from '@/lib/support/models/LeagueVolunteer/data'\nimport { leagueVolunteerInfoToLeagueVolunteer } from '@/lib/support/models/LeagueVolunteer/leagueVolunteerInfoToLeagueVolunteer'\nimport { newPlayerID } from '@/lib/support/models/LeaguePlayerInfo/data'\n\nclass VolunteerRouteRuntimeException extends RuntimeException {\n name = 'Volunteer Route Error'\n}\n\n/***\n * Takes the route name (edit,copy,new) and produces a volunteer model for initial edit.\n * @param routeName\n * @param currentVolunteer\n */\n\nexport function routeActionToVolunteer(\n routeName: string | null | undefined,\n currentVolunteer: LeagueVolunteerInfo\n): LeagueVolunteer {\n if (routeName?.startsWith('new-volunteer')) {\n return getEmptyLeagueVolunteer(new LeagueVolunteerSeedInfo())\n }\n\n if (routeName?.startsWith('edit-volunteer')) {\n return {\n ...getEmptyLeagueVolunteer(new LeagueVolunteerSeedInfo()),\n ...leagueVolunteerInfoToLeagueVolunteer(currentVolunteer),\n }\n }\n\n if (routeName?.startsWith('copy-volunteer')) {\n return {\n ...getEmptyLeagueVolunteer(new LeagueVolunteerSeedInfo()),\n ...leagueVolunteerInfoToLeagueVolunteer(currentVolunteer),\n individualID: newPlayerID(),\n }\n }\n\n throw new VolunteerRouteRuntimeException('expected a valid routeName, got ' + routeName)\n}\n\n/**\n * Takes a URL our route and returns the category name part\n * @param routepath\n */\nexport function getRouteCategoryName(routepath: Route | string) {\n if (typeof routepath == 'string') {\n const matches = routepath.match(/volunteers\\/(\\S+)\\/(\\S+)/)\n if (matches?.length == 3) {\n return matches[2]\n }\n return ''\n }\n return routepath.params['type'] ?? ''\n}\n\n/**\n * Takes a URL our route and returns the category name part\n * @param routepath\n */\nexport function getLeagueType(routepath: Route | string) {\n if (typeof routepath == 'string') {\n const routeParts = routepath.split('/')\n if (routeParts?.length > 3) {\n return routeParts[2]\n }\n return ''\n }\n return ''\n}\n"],"sourceRoot":""}