{"version":3,"sources":["webpack:///./src/lib/support/utilities/smsCount.ts","webpack:///./src/views/Programs/Communications/vue/SmsMessageInput.vue?8f98","webpack:///./src/views/Programs/Communications/vue/SmsPreviewer.vue?bc1a","webpack:///./src/views/Programs/Communications/Sms.vue?2182","webpack:///./src/views/Programs/Communications/vue/SmsComposer.vue?a9e7","webpack:///./src/views/Programs/Communications/vue/SmsRecipientInput.vue?487b","webpack:///./src/views/Programs/Communications/vue/SmsRecipientInput.vue","webpack:///./src/views/Programs/Communications/vue/SmsRecipientInput.vue?ba08","webpack:///./src/views/Programs/Communications/vue/SmsRecipientInput.vue?eda7","webpack:///./src/views/Programs/Communications/vue/SmsMessageInput.vue?d123","webpack:///./src/views/Programs/Communications/vue/SmsMessageInput.vue","webpack:///./src/views/Programs/Communications/vue/SmsMessageInput.vue?5692","webpack:///./src/views/Programs/Communications/vue/SmsMessageInput.vue?fecc","webpack:///./src/views/Programs/Communications/vue/SmsComposer.vue","webpack:///./src/views/Programs/Communications/vue/SmsComposer.vue?1372","webpack:///./src/views/Programs/Communications/vue/SmsComposer.vue?5015","webpack:///./src/views/Programs/Communications/vue/SmsPreviewer.vue?6dcf","webpack:///./src/views/Programs/Communications/model/MessageFilters.ts","webpack:///./src/views/Programs/Communications/vue/SmsPreviewer.vue","webpack:///./src/views/Programs/Communications/vue/SmsPreviewer.vue?8d51","webpack:///./src/views/Programs/Communications/vue/SmsPreviewer.vue?ec13","webpack:///./src/views/Programs/Communications/Sms.vue","webpack:///./src/views/Programs/Communications/Sms.vue?c811","webpack:///./src/views/Programs/Communications/Sms.vue?ea6b"],"names":["gsm7bitChars","gsm7bitExChar","gsm7bitRegExp","RegExp","gsm7bitExRegExp","gsm7bitExOnlyRegExp","detectEncoding","text","match","GSM_7BIT","GSM_7BIT_EX","UTF16","countGsm7bitEx","results","char","push","length","messageLength","multiMessageLength","encoding","perMessage","messages","Math","ceil","remaining","perMultiMessage","render","_vm","this","_h","$createElement","_c","_self","isAllowed","hasCredits","isTooLate","staticClass","_v","ref","attrs","loadingRecipients","slot","domProps","_s","filterList","_e","directives","name","rawName","value","expression","isSendReady","on","sendSms","toggleSendDrop","class","show","showSendDrop","$event","preventDefault","scheduleSend","sendCommunicationOnFormatted","errorOccurred","close","model","callback","$$v","showConfirmationModal","showScheduleSendModal","handleDatePicked","handleDateCancelled","staticRenderFns","scopedSlots","_u","key","fn","invalid","errors","hasRecipients","MessageChannelTypes","SMS","additionalRecipients","props","components","MemoInput","RecipientGroupInput","RecipientListManager","Loading","setup","isRunningChallenge","loadRunningRecipients","router","currentRoute","params","id","get","store","getters","communications","messagePreview","toDelimited","set","trim","replace","split","join","commit","setToDelimited","component","toggle","showVideo","videoId","maxCharactersReached","readOnly","maxCharacterCount","message","charactersRemaining","_m","GospelVideoSelector","messageBody","setMessageBody","defaultVideoId","noneId","maxPages","c","option","smsText","url","VeeValidateForm","SmsRecipientInput","InputlessStringValidator","InputLabel","SmsMessageInput","form","triggerValidation","reportValidity","count","filterClick","clipBoardRecipients","_t","normalizePhone","smsAssignedNumber","showFilters","getEmptyMessageFilters","teams","practiceNight","startGrade","endGrade","paymentStatus","evalStatus","coachTeamStatus","typeProgramID","viewAllLeagueContacts","practiceFacilityIDs","gender","data","RecipientListPreview","ToClipboardBtn","MessageFilterModal","filters","toCount","to","delimitedString","filter","recipient","messagePreviewLoading","currentItem","phone","includes","cleaned","charAt","substring","SmsComposer","SmsPreviewer","MessageConfirmationModal","CommunicationWarning","DatePicker","mixins","ctx","logic","smsComposer","datePicked","sendCommunicationOn","providerInfo","smsMaxCredits","smsCredits","isSMSAllowed","isAfterRunningProgram","isAfterSeasonEndDate","seasonEndDate","diff","startDt","upwardRunning","currentChallenge","startDate","isValid","send","loadTeams","Promise","resolve","root","$nextTick","dispatch","fetchTeams","upwId","upwardLeagueID","allTeams","clearMessageInformation"],"mappings":"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","file":"js/chunk-bcf15e72.2581940a.js","sourcesContent":["const gsm7bitChars = `@£$¥èéùìòÇØøÅåΔ_ΦΓΛΩΠΨΣΘΞÆæßÉ !\\\\\\\"#¤%&'()*+,-./0123456789:;<=>?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà`\nconst gsm7bitExChar = `\\\\^{}\\\\\\\\\\\\[~\\\\]|€\\\\n\\\\r`\nconst gsm7bitRegExp = RegExp(`^[${gsm7bitChars}]*$`)\nconst gsm7bitExRegExp = RegExp(`^[${gsm7bitChars + gsm7bitExChar}]*$`)\nconst gsm7bitExOnlyRegExp = RegExp(`^[\\\\${gsm7bitExChar}]*$`)\n\nfunction detectEncoding(text: string): string {\n switch (false) {\n case text.match(gsm7bitRegExp) === null:\n return GSM_7BIT\n case text.match(gsm7bitExRegExp) === null:\n return GSM_7BIT_EX\n default:\n return UTF16\n }\n}\n\nfunction countGsm7bitEx(text: string): number {\n const results: string[] = []\n\n for (const char of text) {\n if (char.match(gsm7bitExOnlyRegExp) !== null) {\n results.push(char)\n }\n }\n\n return results.length\n}\n\nconst GSM_7BIT = 'GSM_7BIT'\nconst GSM_7BIT_EX = 'GSM_7BIT_EX'\nconst UTF16 = 'UTF16'\n\nconst messageLength: MessageLengthTypes = {\n GSM_7BIT: 160,\n GSM_7BIT_EX: 160,\n UTF16: 70,\n}\nconst multiMessageLength: MessageLengthTypes = {\n GSM_7BIT: 153,\n GSM_7BIT_EX: 153,\n UTF16: 67,\n}\n\ninterface MessageLengthTypes {\n [key: string]: number\n}\n\nexport interface CounterResult {\n encoding: string\n length: number\n messages: number\n perMessage: number\n perMultiMessage: number\n remaining: number\n}\n\nexport default function (text: string): CounterResult {\n const encoding = detectEncoding(text)\n let length = text.length\n if (encoding === GSM_7BIT_EX) {\n length += countGsm7bitEx(text)\n }\n\n let perMessage = messageLength[encoding]\n if (length > perMessage) {\n perMessage = multiMessageLength[encoding]\n }\n\n const messages = Math.ceil(length / perMessage)\n let remaining = perMessage * messages - length\n if (remaining === 0 && messages === 0) {\n remaining = perMessage\n }\n\n return { encoding, length, perMessage, perMultiMessage: multiMessageLength[encoding], remaining, messages }\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!./SmsMessageInput.vue?vue&type=style&index=0&id=68ded4b7&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!./SmsPreviewer.vue?vue&type=style&index=0&id=4a9bdb03&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.isAllowed || !_vm.hasCredits || !_vm.isTooLate)?_c('CommunicationWarning',{attrs:{\"has-credits\":_vm.hasCredits,\"is-allowed\":_vm.isAllowed,\"is-After-SeasonEndDate\":_vm.isTooLate,\"label\":\"SMS\"}}):_c('div',{staticClass:\"row no-gutters\"},[_c('div',{staticClass:\"col-12 col-lg-6\"},[_c('h5',{staticClass:\"pt-3 pl-4 text-primary\"},[_vm._v(\"Compose\")]),_c('SmsComposer',{ref:\"smsComposer\"})],1),_c('div',{staticClass:\"col-12 col-lg-6\"},[_c('h5',{staticClass:\"pt-3 pl-4 text-primary\"},[_vm._v(\"Preview\")]),_c('SmsPreviewer',{attrs:{\"loading-recipients\":_vm.loadingRecipients}},[_c('template',{slot:\"filters\"},[(_vm.filterList)?_c('div',[_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(\"Active Recipient Filters:\")]),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.filterList)}})]):_vm._e()]),_c('div',{directives:[{name:\"on-clickaway\",rawName:\"v-on-clickaway\",value:(_vm.sendDropAway),expression:\"sendDropAway\"}],staticClass:\"btn-group dropup\"},[_c('button',{staticClass:\"btn btn-success\",attrs:{\"disabled\":!_vm.isSendReady},on:{\"click\":_vm.sendSms}},[(_vm.isSending)?_c('loading',{attrs:{\"is-small\":\"\"}}):_c('i',{staticClass:\"fa fa-paper-plane\"}),_vm._v(\" Send \")],1),_c('button',{staticClass:\"btn btn-success dropdown-toggle\",attrs:{\"type\":\"button\",\"aria-haspopup\":\"true\",\"aria-expanded\":\"false\"},on:{\"click\":_vm.toggleSendDrop}}),_c('div',{staticClass:\"dropdown-menu\",class:{ show: _vm.showSendDrop }},[_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.scheduleSend($event)}}},[_vm._v(\"Schedule Send\")])])])],2)],1),_c('MessageConfirmationModal',{attrs:{\"scheduledDate\":_vm.sendCommunicationOnFormatted,\"errorOccurred\":_vm.errorOccurred},on:{\"close\":_vm.close},model:{value:(_vm.showConfirmationModal),callback:function ($$v) {_vm.showConfirmationModal=$$v},expression:\"showConfirmationModal\"}}),_c('DatePicker',{attrs:{\"pickLabel\":\"Send\",\"show\":_vm.showScheduleSendModal},on:{\"picked\":_vm.handleDatePicked,\"cancelled\":_vm.handleDateCancelled}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('VeeValidateForm',{ref:\"form\",scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar invalid = ref.invalid;\nvar errors = ref.errors;\nreturn [_c('div',{staticClass:\"bg-light-1 p-3 m-3\"},[_c('InputLabel',{staticClass:\"mb-2\",attrs:{\"required\":\"\",\"label\":\"Recipients\"}}),_c('InputlessStringValidator',{staticClass:\"d-inline-block\",attrs:{\"vee-validate-rules\":\"required\"},model:{value:(_vm.hasRecipients),callback:function ($$v) {_vm.hasRecipients=$$v},expression:\"hasRecipients\"}}),_c('SmsRecipientInput')],1),_c('div',{staticClass:\"bg-light-1 p-3 m-3\"},[_c('SmsMessageInput')],1)]}}])})}\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',{staticClass:\"row\"},[(_vm.isRunningChallenge)?_c('div',{staticClass:\"col-12 col-md-8 col-lg-12 col-xl-12\"},[(_vm.loadingRecipients)?_c('loading',{staticClass:\"mr-2\",attrs:{\"is-small\":\"\"}}):_c('RecipientListManager',{attrs:{\"channel\":_vm.MessageChannelTypes.SMS}})],1):_c('RecipientGroupInput',{staticClass:\"col-12 col-md-4 col-lg-12 col-xl-5\",attrs:{\"label\":\"\",\"channel\":_vm.MessageChannelTypes.SMS}}),_c('div',{staticClass:\"col-12 col-md-8 col-lg-12 col-xl-12\"},[_c('label',{staticClass:\"text-muted\"},[_vm._v(\"Additional Recipients\")]),_c('MemoInput',{attrs:{\"sub-text\":\"Separate with commas - (999)-999-9999, 999-999-9999. Add up to 20 additional phone numbers.\",\"rows\":4,\"vee-validate-rules\":\"max_additional_recipient|exclude-semi-colon|northamerican_phone:multiple\",\"vee-validate-mode\":\"eager\"},model:{value:(_vm.additionalRecipients),callback:function ($$v) {_vm.additionalRecipients=$$v},expression:\"additionalRecipients\"}})],1)],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\n\n\n\n\n\nimport { defineComponent, computed, onMounted } from '@vue/composition-api'\n\nimport MemoInput from '@/elements/MemoInput.vue'\nimport RecipientGroupInput from '@/views/Programs/Communications/vue/RecipientGroupInput.vue'\nimport store from '@/store'\nimport { MessageChannelTypes } from '@/components/Communication/MessageChannelData'\nimport { useIsRunningChallenge } from '@/lib/common/programTypeHelpers'\nimport RecipientListManager from '@/components/Communication/RecipientListManager.vue'\nimport { messageLogic } from '@/views/Programs/Communications/ext/MessageLogic'\nimport router from '@/router'\nimport Loading from '@/elements/Loading.vue'\n\nexport default defineComponent({\n name: 'EmailRecipientInput',\n props: {},\n components: { MemoInput, RecipientGroupInput, RecipientListManager, Loading },\n setup() {\n const isRunningChallenge = useIsRunningChallenge()\n const { loadRunningRecipients, loadingRecipients } = messageLogic()\n\n onMounted(() => {\n if (isRunningChallenge.value) {\n loadRunningRecipients(router.currentRoute.params.id)\n }\n })\n\n const additionalRecipients = computed({\n get() {\n return store.getters.communications.messagePreview.toDelimited\n },\n set(additionalRecipients: string) {\n //clean the string\n const toDelimited = additionalRecipients\n .trim()\n .replace(/(^,)|(,$)/g, '') //remove trailing comma\n .split(' ') //remove extra spaces\n .join('')\n\n //update the store\n store.commit.communications.setToDelimited({ toDelimited })\n },\n })\n\n return { additionalRecipients, MessageChannelTypes, isRunningChallenge, loadingRecipients }\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!./SmsRecipientInput.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!./SmsRecipientInput.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SmsRecipientInput.vue?vue&type=template&id=de0af7a2&\"\nimport script from \"./SmsRecipientInput.vue?vue&type=script&lang=ts&\"\nexport * from \"./SmsRecipientInput.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',{staticClass:\"sms-message-input\"},[(!_vm.isRunningChallenge)?_c('button',{staticClass:\"btn btn-outline-primary float-right mb-3\",on:{\"click\":_vm.toggle}},[_vm._v(\" \"+_vm._s(_vm.showVideo ? 'Hide' : 'Add')+\" Gospel Videos \")]):_vm._e(),(_vm.showVideo)?_c('div',{staticClass:\"my-4 clear bg-white p-2\"},[_c('GospelVideoSelector',{staticClass:\"flex-form\",model:{value:(_vm.videoId),callback:function ($$v) {_vm.videoId=$$v},expression:\"videoId\"}})],1):_vm._e(),_c('memo-input',{attrs:{\"id\":\"sms-message-body\",\"label\":\"Message\",\"halt-input\":_vm.maxCharactersReached,\"required\":\"\",\"rows\":5,\"is-read-only\":_vm.readOnly,\"max-length\":_vm.maxCharacterCount},model:{value:(_vm.message),callback:function ($$v) {_vm.message=$$v},expression:\"message\"}}),_c('div',{staticClass:\"small ml-1\"},[_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.charactersRemaining.messages)+\" of 3 \")]),_vm._v(\"SMS pages, \"),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.charactersRemaining.remaining)+\" \")]),_vm._v(\"characters left \")]),_vm._m(0)],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"alert-warning px-5 py-2 text-left mb-3 clean-print\"},[_vm._v(\" These messages are sent from a number that \"),_c('b',[_vm._v(\"CANNOT\")]),_vm._v(\" accept replies. Be sure to include a number recipients can reply to if applicable to your message. \")])}]\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\nimport { defineComponent, computed, ref, watch } from '@vue/composition-api'\n\nimport GospelVideoSelector from '@/components/Communication/GospelViedoSelector/GospelVideoSelector.vue'\nimport MemoInput from '@/elements/MemoInput.vue'\nimport store from '@/store'\n\nimport Count from '@/lib/support/utilities/smsCount.ts'\nimport { GospelVideoOptions } from '@/components/Communication/GospelViedoSelector/GospelVideoSelectorData'\nimport { useIsRunningChallenge } from '@/lib/common/programTypeHelpers'\n\nexport default defineComponent({\n name: 'SmsMessageInput',\n components: { GospelVideoSelector, MemoInput },\n setup() {\n const isRunningChallenge = useIsRunningChallenge()\n const message = computed({\n get() {\n return store.getters.communications.messagePreview.messageBody\n },\n set(messageBody: string) {\n store.commit.communications.setMessageBody({ messageBody })\n },\n })\n\n const showVideo = ref(false)\n function toggle() {\n showVideo.value = !showVideo.value\n }\n\n const charactersRemaining = computed(() => {\n return Count(message.value)\n })\n\n const defaultVideoId = computed(() => {\n const noneId = GospelVideoOptions.get('None')?.id\n return noneId ?? ''\n })\n const videoId = ref(defaultVideoId.value)\n\n const maxPages = 3\n const maxCharacterCount = computed(() => {\n const c = Count(message.value)\n\n if (message.value) {\n return c.perMessage * maxPages\n }\n return c.perMultiMessage * maxPages\n })\n\n const maxCharactersReached = computed(() => {\n return (\n charactersRemaining.value.messages > maxPages ||\n (charactersRemaining.value.messages === maxPages && charactersRemaining.value.remaining === 0)\n )\n })\n\n const readOnly = ref(false)\n watch(\n () => videoId.value,\n () => {\n if (videoId.value != 'None') {\n const option = GospelVideoOptions.get(videoId.value)\n message.value = `${option?.smsText} ${option?.url}`\n readOnly.value = true\n } else {\n message.value = ''\n readOnly.value = false\n }\n }\n )\n return {\n message,\n charactersRemaining,\n maxCharacterCount,\n maxCharactersReached,\n videoId,\n showVideo,\n toggle,\n readOnly,\n isRunningChallenge,\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!./SmsMessageInput.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!./SmsMessageInput.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SmsMessageInput.vue?vue&type=template&id=68ded4b7&scoped=true&\"\nimport script from \"./SmsMessageInput.vue?vue&type=script&lang=ts&\"\nexport * from \"./SmsMessageInput.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SmsMessageInput.vue?vue&type=style&index=0&id=68ded4b7&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 \"68ded4b7\",\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\nimport { defineComponent, ref } from '@vue/composition-api'\n\nimport VeeValidateForm from '@/elements/VeeValidateForm.vue'\nimport SmsRecipientInput from '@/views/Programs/Communications/vue/SmsRecipientInput.vue'\nimport SmsMessageInput from '@/views/Programs/Communications/vue/SmsMessageInput.vue'\nimport InputlessStringValidator from '@/elements/InputlessStringValidator.vue'\nimport InputLabel from '@/elements/InputLabel.vue'\nimport { messageLogic } from '@/views/Programs/Communications/ext/MessageLogic'\n\nexport default defineComponent({\n name: 'SmsComposer',\n props: {},\n components: {\n VeeValidateForm,\n SmsRecipientInput,\n InputlessStringValidator,\n InputLabel,\n SmsMessageInput,\n },\n setup() {\n const form = ref(null)\n const { hasRecipients } = messageLogic()\n\n async function triggerValidation() {\n return await form.value.reportValidity()\n }\n\n return {\n form,\n hasRecipients,\n triggerValidation,\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!./SmsComposer.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!./SmsComposer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SmsComposer.vue?vue&type=template&id=5050b15d&\"\nimport script from \"./SmsComposer.vue?vue&type=script&lang=ts&\"\nexport * from \"./SmsComposer.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',{staticClass:\"sms-preview\"},[_c('div',{staticClass:\"bg-light-1 p-3 my-3\"},[_c('div',{staticClass:\"d-flex justify-content-center align-items-center\"},[_c('h5',{staticClass:\"font-weight-bold font-italic d-inline m-0 text-success\"},[(_vm.messagePreviewLoading)?_c('loading',{staticClass:\"mr-2\",attrs:{\"is-small\":\"\"}}):_c('span',[_vm._v(\" \"+_vm._s(_vm.count)+\" \")]),_c('div',{staticClass:\"d-inline-block pt-1\"},[_vm._v(\"recipients\")])],1),(!_vm.isRunningChallenge)?_c('button',{staticClass:\"btn btn-outline-primary ml-4\",on:{\"click\":_vm.filterClick}},[_vm._v(\" Filter Recipient List \")]):_vm._e()]),_c('RecipientListPreview',{attrs:{\"channel\":_vm.MessageChannelTypes.SMS}}),_c('div',{staticClass:\"text-right\"},[_c('ToClipboardBtn',{staticClass:\"my-1\",attrs:{\"string-array\":_vm.clipBoardRecipients}})],1),_vm._t(\"filters\")],2),_c('div',{staticClass:\"preview-message bg-light-1 p-3 my-3\"},[_c('div',{staticClass:\"message bg-white p-3\"},[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.messageBody)}})]),_c('div',{staticClass:\"row p-2 my-1\"},[_c('div',{staticClass:\"col-9\"},[_c('input-label',{attrs:{\"label\":\"Messages you send will appear from \"}}),_c('b',[_vm._v(\" \"+_vm._s(_vm.normalizePhone(_vm.smsAssignedNumber))+\" \")])],1),_c('div',{staticClass:\"col-3 d-flex justify-content-end\"},[_vm._t(\"default\")],2)])]),_c('MessageFilterModal',{attrs:{\"channel\":_vm.MessageChannelTypes.SMS},model:{value:(_vm.showFilters),callback:function ($$v) {_vm.showFilters=$$v},expression:\"showFilters\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { CommunicationCriteria } from '@/GeneratedTypes/Communication/CommunicationCriteria'\nimport {\n paymentOptions,\n evalOptions,\n coachAssignOptions,\n} from '@/views/Programs/Communications/data/filterOptions'\n\nexport interface MessageFilters {\n teams: number[]\n practiceNight: string | null\n startGrade: string | null\n endGrade: string | null\n paymentStatus: string | null\n evalStatus: string | null\n coachTeamStatus: string | null\n typeProgramID: string | null\n viewAllLeagueContacts: boolean\n practiceFacilityIDs: number[]\n gender: string | null\n}\n\nexport function getEmptyMessageFilters(): MessageFilters {\n return {\n teams: [],\n practiceNight: null,\n startGrade: 'K3',\n endGrade: '12th',\n paymentStatus: paymentOptions[2].value, // All\n evalStatus: evalOptions[2].value, //All\n coachTeamStatus: coachAssignOptions[3].value, // All Approved\n typeProgramID: '',\n viewAllLeagueContacts: false,\n practiceFacilityIDs: [],\n gender: 'E',\n }\n}\nexport function convertToMessageFilters(criteria?: CommunicationCriteria | null): MessageFilters {\n const empty = getEmptyMessageFilters()\n if (!criteria) return empty\n return {\n teams: criteria.teams ?? empty.teams,\n practiceNight: criteria.practiceNight ?? empty.practiceNight,\n startGrade: criteria.startGrade ?? empty.startGrade,\n endGrade: criteria.endGrade ?? empty.endGrade,\n paymentStatus: criteria.paymentStatus ?? empty.paymentStatus,\n evalStatus: criteria.evalStatus ?? empty.evalStatus,\n coachTeamStatus: criteria.coachTeamStatus ?? empty.coachTeamStatus,\n typeProgramID: criteria.typeProgramID ?? empty.typeProgramID,\n viewAllLeagueContacts: criteria.viewAllLeagueContacts ?? empty.viewAllLeagueContacts,\n practiceFacilityIDs: criteria.practiceFacilityIDs ?? empty.practiceFacilityIDs,\n gender: criteria.gender ?? empty.gender,\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\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 } from '@vue/composition-api'\n\nimport RecipientListPreview from '@/components/Communication/RecipientListPreview.vue'\nimport MessageFilterModal from '@/views/Programs/Communications/vue/Filters/MessageFilterModal.vue'\nimport InputLabel from '@/elements/InputLabel.vue'\nimport Loading from '@/elements/Loading.vue'\nimport ToClipboardBtn from '@/elements/ToClipboardBtn.vue'\n\nimport { MessageChannelTypes } from '@/components/Communication/MessageChannelData'\n\nimport store from '@/store'\nimport { MessageFilters, getEmptyMessageFilters } from '@/views/Programs/Communications/model/MessageFilters'\nimport { useIsRunningChallenge } from '@/lib/common/programTypeHelpers'\n\nexport default defineComponent({\n name: 'SmsPreviewer',\n data() {\n return {\n MessageChannelTypes,\n }\n },\n components: { RecipientListPreview, InputLabel, Loading, ToClipboardBtn, MessageFilterModal },\n\n setup() {\n const isRunningChallenge = useIsRunningChallenge()\n\n const showFilters = ref(false)\n const filters = ref(getEmptyMessageFilters())\n\n function filterClick() {\n showFilters.value = true\n }\n\n const count = computed(() => {\n const toCount = [...store.getters.communications.messagePreview.to].length\n return toCount + additionalRecipients.value.length\n })\n\n const additionalRecipients = computed(() => {\n const delimitedString = store.getters.communications.messagePreview.toDelimited\n if (!delimitedString) return []\n return delimitedString.split(',').filter((recipient) => recipient.trim() !== '')\n })\n\n const clipBoardRecipients = computed(() => {\n return [...store.getters.communications.messagePreview.to, ...additionalRecipients.value]\n })\n\n const messagePreviewLoading = computed(() => store.getters.communications.messagePreviewLoading)\n\n const messageBody = computed({\n get() {\n return store.getters.communications.messagePreview.messageBody\n },\n set(messageBody: string) {\n store.commit.communications.setMessageBody({\n messageBody,\n })\n },\n })\n\n const smsAssignedNumber = computed(() => store.getters.communications.currentItem.smsAssignedNumber)\n\n const normalizePhone = (phone: string) => {\n if (!phone) return phone\n if (phone.includes('(')) return phone\n let cleaned = phone.charAt(0) === '+' ? phone.substring(1) : phone\n cleaned = cleaned.charAt(0) === '1' ? cleaned.substring(1) : cleaned\n var match = cleaned.match(/^(\\d{3})(\\d{3})(\\d{4})$/)!\n return '(' + match[1] + ') ' + match[2] + '-' + match[3]\n }\n return {\n count,\n clipBoardRecipients,\n showFilters,\n filters,\n normalizePhone,\n messageBody,\n messagePreviewLoading,\n filterClick,\n isRunningChallenge,\n smsAssignedNumber,\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!./SmsPreviewer.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!./SmsPreviewer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SmsPreviewer.vue?vue&type=template&id=4a9bdb03&scoped=true&\"\nimport script from \"./SmsPreviewer.vue?vue&type=script&lang=ts&\"\nexport * from \"./SmsPreviewer.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SmsPreviewer.vue?vue&type=style&index=0&id=4a9bdb03&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 \"4a9bdb03\",\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\nimport { defineComponent, ref, computed, onUnmounted, onMounted } from '@vue/composition-api'\n\nimport Loading from '@/elements/Loading.vue'\nimport SmsComposer from '@/views/Programs/Communications/vue/SmsComposer.vue'\nimport SmsPreviewer from '@/views/Programs/Communications/vue/SmsPreviewer.vue'\nimport MessageConfirmationModal from '@/views/Programs/Communications/vue/MessageConfirmationModal.vue'\nimport CommunicationWarning from '@/views/Programs/Communications/vue/CommunicationWarning.vue'\nimport dayjs from 'dayjs'\nimport { messageLogic } from '@/views/Programs/Communications/ext/MessageLogic'\nimport store from '@/store'\nimport { mixin as clickaway } from 'vue-clickaway'\nimport DatePicker from '@/components/ModalDateTimePicker.vue'\n\nexport default defineComponent({\n name: 'Sms',\n props: {},\n components: {\n SmsComposer,\n SmsPreviewer,\n MessageConfirmationModal,\n CommunicationWarning,\n DatePicker,\n Loading,\n },\n mixins: [clickaway],\n setup(props, ctx) {\n const logic = messageLogic()\n const smsComposer = ref(null)\n\n // Add new functions for date picker handling\n const handleDatePicked = async (datePicked: Date) => {\n logic.sendCommunicationOn.value = datePicked\n logic.showScheduleSendModal.value = false\n await sendSms()\n }\n\n const handleDateCancelled = () => {\n logic.showScheduleSendModal.value = false\n logic.sendCommunicationOn.value = null\n }\n\n const hasCredits = computed(() => {\n return (\n logic.providerInfo.value.smsMaxCredits < 0 ||\n logic.providerInfo.value.smsCredits < logic.providerInfo.value.smsMaxCredits\n )\n })\n\n const isAllowed = computed(() => {\n return logic.providerInfo.value.isSMSAllowed\n })\n\n const isTooLate = computed(() => {\n if (logic.isRunningChallenge.value) {\n return isAfterRunningProgram.value\n } else {\n return isAfterSeasonEndDate.value\n }\n return true\n })\n\n const isAfterSeasonEndDate = computed(() => {\n if (logic.seasonEndDate.value) {\n return dayjs().diff(logic.seasonEndDate.value, 'month', true) < 12\n }\n return false\n })\n\n const isAfterRunningProgram = computed(() => {\n //Is running program start date more than 14 weeks from today\n const startDt = store.getters.upwardRunning.currentChallenge.startDate\n if (startDt) {\n return dayjs().diff(startDt, 'week', true) < 14\n }\n return true\n })\n\n async function sendSms() {\n const isValid = await smsComposer.value.triggerValidation()\n if (isValid) {\n await logic.send('sendsms')\n }\n }\n async function scheduleSend() {\n logic.showScheduleSendModal.value = (await smsComposer.value.triggerValidation()) as boolean\n }\n\n function loadTeams() {\n return new Promise((resolve) => {\n ctx.root.$nextTick(async () => {\n try {\n logic.allTeams.value = await store.dispatch.teams.fetchTeams({\n upwId: logic.upwardLeagueID.value ?? '',\n })\n } finally {\n resolve()\n }\n })\n })\n }\n\n onMounted(async () => {\n await loadTeams()\n })\n onUnmounted(() => store.commit.communications.clearMessageInformation())\n\n return {\n smsComposer, //ref to child component\n sendSms,\n isAllowed,\n hasCredits,\n isTooLate,\n scheduleSend,\n ...logic,\n handleDatePicked,\n handleDateCancelled,\n isAfterSeasonEndDate,\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!./Sms.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!./Sms.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Sms.vue?vue&type=template&id=07dbe42b&\"\nimport script from \"./Sms.vue?vue&type=script&lang=ts&\"\nexport * from \"./Sms.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"],"sourceRoot":""}