{"version":3,"file":"js/3868-6899a95044d895ea6a2f.js","mappings":"mIAcA,MAAMA,GAAUC,EAAAA,EAAAA,MAEVC,EAAY,CAChBC,YAAaA,CAACC,EAAS,CAAC,KAAMC,EAAAA,EAAAA,KAAOC,EAAAA,EAAAA,QAAO,aAAcF,EAAQJ,GAClEO,WAAYA,CAACC,EAAIJ,EAAS,CAAC,KACzBC,EAAAA,EAAAA,KAAOC,EAAAA,EAAAA,QAAQ,aAAYE,KAAOJ,EAAQJ,GAC5CS,cAAeA,CAACC,EAAO,CAAC,KAAMC,EAAAA,EAAAA,KAAQL,EAAAA,EAAAA,QAAO,aAAcI,EAAMV,GACjEY,kBAAmBA,CAACJ,EAAIJ,EAAS,CAAC,EAAGM,EAAO,CAAC,KAC3CG,EAAAA,EAAAA,KAAOP,EAAAA,EAAAA,QAAQ,aAAYE,gBAAkBE,EAAMV,EAASI,GAC9DU,cAAeA,CAACN,EAAIJ,EAAS,CAAC,EAAGM,EAAO,CAAC,KACvCG,EAAAA,EAAAA,KAAOP,EAAAA,EAAAA,QAAQ,aAAYE,YAAcE,EAAMV,EAASI,GAC1DW,aAAcA,CAACX,EAAS,CAAC,KAAMC,EAAAA,EAAAA,KAAOC,EAAAA,EAAAA,QAAO,cAAeF,EAAQJ,GACpEgB,YAAaA,CAACR,EAAIJ,EAAS,CAAC,KAC1BC,EAAAA,EAAAA,KAAOC,EAAAA,EAAAA,QAAQ,cAAaE,KAAOJ,EAAQJ,GAC7CiB,mBAAoBA,CAACb,EAAS,CAAC,KAC7BC,EAAAA,EAAAA,KAAOC,EAAAA,EAAAA,QAAO,qBAAsBF,EAAQJ,GAC9CkB,kBAAmBA,CAACd,EAAS,CAAC,KAC5BO,EAAAA,EAAAA,KAAQL,EAAAA,EAAAA,QAAQ,iBAAiBF,EAAQJ,GAC3CmB,8BAA+BA,CAACf,EAAS,CAAC,KACxCO,EAAAA,EAAAA,KAAQL,EAAAA,EAAAA,QAAQ,sCAAsCF,EAAQJ,GAChEoB,iBAAkBA,CAAChB,EAAS,CAAC,KAC3BC,EAAAA,EAAAA,KAAOC,EAAAA,EAAAA,QAAO,kBAAmBF,EAAQJ,GAC3CqB,gBAAiBA,CAACb,EAAIJ,EAAS,CAAC,KAC9BC,EAAAA,EAAAA,KAAOC,EAAAA,EAAAA,QAAQ,kBAAiBE,KAAOJ,EAAQJ,GACjDsB,eAAgBA,CAAClB,EAAS,CAAC,KACzBC,EAAAA,EAAAA,KAAOC,EAAAA,EAAAA,QAAO,gBAAiBF,EAAQJ,GACzCuB,YAAaA,CAACnB,EAAS,CAAC,KAAMC,EAAAA,EAAAA,KAAOC,EAAAA,EAAAA,QAAO,aAAcF,EAAQJ,GAClEwB,sBAAuBA,CAAChB,EAAIJ,EAAS,CAAC,KACpCC,EAAAA,EAAAA,KAAOC,EAAAA,EAAAA,QAAQ,aAAYE,kBAAoBJ,EAAQJ,GACzDyB,yBAA0BA,CAACjB,EAAIJ,EAAS,CAAC,KACvCC,EAAAA,EAAAA,KAAOC,EAAAA,EAAAA,QAAQ,sBAAqBE,kBAAoBJ,EAAQJ,GAClE0B,mBAAqBtB,IACnBC,EAAAA,EAAAA,KAAOC,EAAAA,EAAAA,QAAO,sBAAuBF,EAAQJ,GAC/C2B,SAAUA,CAACvB,EAAS,CAAC,KAAMC,EAAAA,EAAAA,KAAOC,EAAAA,EAAAA,QAAO,UAAWF,EAAQJ,GAC5D4B,cAAeA,CAACpB,EAAIJ,EAAS,CAAC,KAC5BC,EAAAA,EAAAA,KAAOC,EAAAA,EAAAA,QAAQ,gBAAeE,KAAOJ,EAAQJ,GAC/C6B,YAAaA,CAACzB,EAAS,CAAC,KAAMC,EAAAA,EAAAA,KAAOC,EAAAA,EAAAA,QAAO,aAAcF,EAAQJ,GAClE8B,WAAYA,CAACtB,EAAIJ,EAAS,CAAC,KACzBC,EAAAA,EAAAA,KAAOC,EAAAA,EAAAA,QAAQ,aAAYE,KAAOJ,EAAQJ,GAC5C+B,MAAOA,CAAC3B,EAAS,CAAC,KAAMC,EAAAA,EAAAA,KAAOC,EAAAA,EAAAA,QAAO,aAAcF,EAAQJ,GAC5DgC,WAAYA,CAACxB,EAAIJ,EAAS,CAAC,EAAGM,EAAO,CAAC,KACpCG,EAAAA,EAAAA,KAAOP,EAAAA,EAAAA,QAAQ,aAAYE,aAAeE,EAAMV,EAASI,GAC3D6B,sBAAuBA,CAACvB,EAAO,CAAC,KAC9BC,EAAAA,EAAAA,KAAQL,EAAAA,EAAAA,QAAO,cAAeI,EAAMV,GACtCkC,cAAeA,CAACxB,EAAO,CAAC,KACtB,IAAIyB,EAAkB,IAAKzB,EAAM0B,QAASpC,EAAgB,QAE1D,OAAOa,EAAAA,EAAAA,KAAOP,EAAAA,EAAAA,QAAO,aAAc6B,EAAiBnC,EAAQ,EAE9DqC,kBAAmBA,CAAC3B,EAAO,CAAC,KAC1BG,EAAAA,EAAAA,KAAOP,EAAAA,EAAAA,QAAO,mBAAoBI,EAAMV,GAC1CsC,eAAgBA,CAAC5B,EAAO,CAAC,KACvBG,EAAAA,EAAAA,KAAOP,EAAAA,EAAAA,QAAO,mBAAoBI,EAAMV,GAC1CuC,eAAgBA,CAAC7B,EAAO,CAAC,KACvBG,EAAAA,EAAAA,KAAOP,EAAAA,EAAAA,QAAO,mBAAoBI,EAAMV,GAC1CwC,mBAAoBA,CAAC9B,EAAO,CAAC,KAC3BC,EAAAA,EAAAA,KAAQL,EAAAA,EAAAA,QAAO,qBAAsBI,EAAMV,GAC7CyC,mBAAoBA,CAAC/B,EAAO,CAAC,KAC3BC,EAAAA,EAAAA,KAAQL,EAAAA,EAAAA,QAAO,yBAA0BI,EAAMV,GACjD0C,cAAeA,CAAClC,EAAIE,EAAO,CAAC,KAC1BiC,EAAAA,EAAAA,KAASrC,EAAAA,EAAAA,QAAQ,aAAYE,KAAOE,EAAMV,GAC5C4C,oBAAqBA,CAAClC,EAAO,CAAC,EAAGmC,KAC/BlC,EAAAA,EAAAA,KACEL,EAAAA,EAAAA,QAAQ,cAAauC,2BACrBnC,EACAV,GAEJ8C,WAAYA,CAACpC,EAAO,CAAC,KAEnB,IAAIyB,EAAkB,IAAKzB,EAAM0B,QAASpC,EAAgB,QAC1D,OAAOW,EAAAA,EAAAA,KAAQL,EAAAA,EAAAA,QAAO,sBAAuB6B,EAAiBnC,EAAQ,EAExE+C,eAAgBA,CAAC3C,EAAS,CAAC,KACzBC,EAAAA,EAAAA,KAAOC,EAAAA,EAAAA,QAAO,0BAA2BF,EAAQJ,GACnDgD,uBAAyBC,IACvB5C,EAAAA,EAAAA,KAAOC,EAAAA,EAAAA,QAAQ,kCAAiC2C,KAAcjD,GAChEkD,kBAAmBA,CAACxC,EAAO,CAAC,KAC1BC,EAAAA,EAAAA,KAAQL,EAAAA,EAAAA,QAAQ,qBAAqBI,EAAMV,GAC7CmD,mBAAoBA,CAACzC,EAAO,CAAC,KAC3BC,EAAAA,EAAAA,KAAQL,EAAAA,EAAAA,QAAQ,eAAeI,EAAMV,IAGzC,K,wnBC1FO,MAAMoD,EAAqB,CAChCC,QAAS,EACTC,MAAO,EACPC,KAAM,KACNC,KAAM,KACNC,KAAM,MAUKnD,EAAUoD,GAAU,IAAEC,EAAAA,EAAAA,GAAY,UAAW,MAAMD,IAOnDE,EAAmBA,EAAGC,cACjCC,MAAMC,QAAQF,EAASG,MACnBH,EAASG,KAAKC,KAAKC,GAAWA,EAAO1D,KACrCqD,EAASG,KAAKxD,IAAM,GAOb2D,EAA0BA,EAAGN,eACxC,MAAMO,EAAaC,IAAIR,EAAU,aAAcT,GAC/C,MAAO,CACLG,KACGa,EAAWb,MAAQe,IAASF,EAAWb,OAAUH,EAAmBG,KACvEE,KACGW,EAAWX,MAAQa,IAASF,EAAWX,OAAUL,EAAmBK,KACvEH,MACGc,EAAWd,OAASgB,IAASF,EAAWd,QACzCF,EAAmBE,MACrBE,KACGY,EAAWZ,MAAQc,IAASF,EAAWZ,OAAUJ,EAAmBI,KACxE,EAOUe,EAAcA,EACzBlB,UACAe,YAAcd,QAAOC,OAAMC,OAAMC,WAC5BJ,EAAUE,EAAOA,EAAOF,EAMlBmB,EAAkBA,EAC7BnB,UACAe,YAAcd,QAAOC,OAAMC,OAAMC,WAC5BA,GAAQJ,EAAUI,EAAOA,EAAOJ,EAM1BoB,EAAaA,EACxBpB,UACAe,YAAcd,QAAOC,OAAMC,OAAMC,WAC7BD,GAAQH,EAMDqB,EAAcA,EACzBrB,UACAe,YAAcd,QAAOC,OAAMC,OAAMC,WAC7BH,GAASD,EAMTsB,EAAeA,EAAGtB,UAASe,YAAcd,QAAOC,OAAMC,OAAMC,WAChEA,IACCiB,EAAY,CACXrB,UACAe,WAAY,CAAEd,QAAOC,OAAMC,OAAMC,UAO/BmB,EAAeA,EAAGvB,UAASe,YAAcd,QAAOC,OAAMC,OAAMC,WAChED,IACCiB,EAAW,CACVpB,UACAe,WAAY,CAAEd,QAAOC,OAAMC,OAAMC,UAOxBoB,EAAmBA,EAC9BxB,UACAe,YAAcd,QAAOC,OAAMC,OAAMC,YAG1B,CACLF,MAFFF,GAAU,GAEQG,EAAOH,EAAU,EAAIG,EACrCC,KAAMJ,EAAUC,EAAQD,EAAU,EAAIC,EACtCA,QACAE,SAWSsB,EAAmBA,EAC9BC,WACAC,UACAC,aACAC,YAAY,CAAC,MAEb,IAAIC,EAAY,GAOhB,OALAJ,EAASC,IACPD,EAASC,GAASf,KAAKzD,IACrB2E,EAAUC,KAAKH,EAAWzE,GAAI,IAG3B2E,CAAS,EAOX,SAASE,IACd,MAAON,EAAUO,IAAeC,EAAAA,EAAAA,UAAS,CAAC,IACnCC,EAAWC,IAAgBF,EAAAA,EAAAA,UAAS,OACpCG,EAAOC,IAAYJ,EAAAA,EAAAA,UAAS,OAC5BnB,EAAYwB,IAAiBL,EAAAA,EAAAA,UAASnC,GAQ7C,MAAO,CACL2B,WACAO,cACAE,YACAC,eACAC,QACAC,WACAvB,aACAwB,gBACAC,YAfmBb,GACnBL,EAAa,CAAEtB,QAAS2B,EAASZ,eAejC0B,YAbmBd,GACnBJ,EAAa,CAAEvB,QAAS2B,EAASZ,eAcrC,CAEO,MAAM2B,EAAsB,CACjChB,SAAUiB,IAAAA,OAAiBC,WAC3BX,YAAaU,IAAAA,KAAeC,WAC5BT,UAAWQ,IAAAA,KACXP,aAAcO,IAAAA,KAAeC,WAC7B7B,WAAY4B,IAAAA,MAAgB,CAC1B1C,MAAO0C,IAAAA,IACPzC,KAAMyC,IAAAA,IACNxC,KAAMwC,IAAAA,IACNvC,KAAMuC,IAAAA,MAERJ,cAAeI,IAAAA,KAAeC,WAC9BJ,YAAaG,IAAAA,KAAeC,WAC5BH,YAAaE,IAAAA,KAAeC,YAGjBC,EAAgBA,KAC3B,MAAMC,EACJC,SAASC,cAAc,+BACvBD,SAASC,cAAc,8BAA8BC,QAavD,MATmB,CACjBC,OAAQ,2BACR,kBAAmB,QACnB,eAAgB,2BAChB,eANAH,SAASC,cAAc,4BACvBD,SAASC,cAAc,2BAA2BC,QAMlDE,cAAe,UAAYL,EAC3BM,OAAQL,SAASM,OAGF,EAGNC,EAAgBC,IAAM,CACjCA,OAAQA,EAAOC,cACf7G,QAASkG,IACTY,YAAa,e,uECrNA,SAASnD,EAAYoD,EAAKC,EAAW,MAClD,MAAMC,GAAcC,EAAAA,EAAAA,UAASH,GAE7B,MAAoC,kBAAtBI,QAAQC,WACpBD,QAAQC,UAAUC,eAAeJ,GAC/BE,QAAQC,UAAUH,GAClBD,CACN,C,uPCTA,MAAMM,EAAa,MACbC,EAAc,OACdC,EAAa,MACbC,EAAgB,SAChBC,EAAe,QAiDdC,eAAeC,EACpBC,GACA,OAAEjB,EAASU,EAAU,QAAEtH,EAAO,KAAEU,EAAI,OAAEN,GAAW,CAAC,GAWlD,IAAI0H,EARA1H,IACFyH,EAAME,EAAkBF,EAAKzH,IAG3BM,IACFA,EAAOsH,KAAKC,WAAUC,EAAAA,EAAAA,gBAAexH,KAIvC,IACEoH,QAAYK,MAAMN,EAAK,CACrBnH,OACAkG,OAAQA,EAAOC,cACf7G,QAASA,EACT8G,YAAa,eAEjB,CAAE,MAAOsB,GAEP,GADAA,EAAIC,YAAa,EAEfjC,SAASkC,SAASC,SAASC,SAAS,UACpCpC,SAASkC,SAASC,SAASC,SAAS,YACpCpC,SAASkC,SAASC,SAASC,SAAS,QAEpC,MAAMJ,EAER,MAAMA,CACR,CAEA,KAAMN,EAAIW,QAAU,KAAOX,EAAIW,OAAS,KAAM,CAC5C,MAAM/C,EAAQ,IAAIgD,MAAMZ,EAAIa,YAI5B,GAHAjD,EAAM2C,YAAa,EACnB3C,EAAMoC,IAAMA,EACZA,EAAIc,aAAeC,EAAkBf,GAEnC1B,SAASkC,SAASC,SAASC,SAAS,UACpCpC,SAASkC,SAASC,SAASC,SAAS,YACpCpC,SAASkC,SAASC,SAASC,SAAS,QAEpC,MAAM9C,CAEV,CAMA,OAJmB,MAAfoC,EAAIW,SACNX,EAAIc,aAAeC,EAAkBf,IAGhCA,CACT,CAQOH,eAAetH,EACpByI,EACA1I,EAAS,CAAC,EACVJ,EAAU+I,KAEV,aAAanB,EAASkB,EAAU,CAC9BlC,OAAQU,EACRtH,UACAI,UAEJ,CASOuH,eAAehH,EACpBmI,EACApI,EAAO,CAAC,EACRV,EAAU+I,KAEV,aAAanB,EAASkB,EAAU,CAC9BlC,OAAQW,EACRvH,UACAU,QAEJ,CASOiH,eAAe9G,EACpBiI,EACApI,EAAO,CAAC,EACRV,EAAU+I,IACV3I,EAAS,CAAC,GAEV,aAAawH,EAASkB,EAAU,CAC9BlC,OAAQY,EACRxH,UACAU,OACAN,UAEJ,CASOuH,eAAehF,EACpBmG,EACApI,EAAO,CAAC,EACRV,EAAU+I,IACV3I,EAAS,CAAC,GAEV,aAAawH,EAASkB,EAAU,CAC9BlC,OAAQc,EACR1H,UACAU,OACAN,UAEJ,CAQOuH,eAAeqB,EACpBF,EACApI,EAAO,CAAC,EACRV,EAAU+I,KAEV,aAAanB,EAASkB,EAAU,CAC9BlC,OAAQa,EACRzH,UACAU,QAEJ,CAOO,MAAMqH,EAAoBA,CAACF,EAAKzH,IACrC6I,EAAAA,aACE,CACEpB,MACAqB,OAAOhB,EAAAA,EAAAA,gBACLiB,OAAOC,KAAKhJ,GAAQiJ,QAAO,CAACC,EAAqBC,KAG/C,IAAIxC,EAAMwC,EACNC,EAAQpJ,EAAOmJ,GAcnB,OAXIE,IAASrJ,EAAOmJ,MAAYzF,MAAMC,QAAQ3D,EAAOmJ,IAEnDJ,OAAOC,KAAKhJ,EAAOmJ,IAAQG,SAASC,IAClCL,EAAqB,GAAEC,KAASI,MAC9BvJ,EAAOmJ,GAAOI,EAAe,IAIjCL,EAAoBvC,GAAOyC,EAGtBF,CAAmB,GACzB,CAAC,KAGR,CAAEM,UAAU,EAAMC,YAAa,YAO7BhB,EAAoBlB,UACxB,IACE,OAAOmC,EAAAA,EAAAA,oBAAmBhC,EAAIiC,OAChC,CAAE,MAAO3B,GACP,MACF,GAOI4B,EAAWC,IACd7D,SAASC,cAAe,cAAa4D,QAAa,CAAC,GAAG3D,SAAS4D,QAC9D,SACA,IAMSnB,EAAoBA,KAAA,CAC/BxC,OAAQ,2BACR,kBAAmB,QACnB,eAAgB,mBAChB,eAAgByD,EAAQ,cACxBxD,cAAgB,UAASwD,EAAQ,mBACjCvD,OAAQL,SAASM,SAMNzG,EAAwBA,KAAA,CACnCsG,OAAQ,2BACR,kBAAmB,QACnB,eAAgB,2BAChB,eAAgByD,EAAQ,cACxBxD,cAAgB,UAASwD,EAAQ,mBACjCvD,OAAQL,SAASM,Q,2znGCzRnB,MAAM,SAAEyD,IAAaxG,EAAAA,EAAAA,GAAY,gBAAkB,CAAC,EAEpDyG,EAAAA,EAEGC,IAAIC,EAAAA,IAEJC,KAAK,CACJC,UAAW,CACTC,GAAI,CACFC,YAAaD,GAEfE,GAAI,CACFD,YAAaC,IAGjBC,IAAKT,EACLU,YAAa,KAEbC,MAAO,CAAEC,aAAa,KAG1B,MAAeX,EAAI,C","sources":["webpack://bravely/./app/javascript/utils/api/endpoints.js","webpack://bravely/./app/javascript/utils/api/helpers.js","webpack://bravely/./app/javascript/utils/data.js","webpack://bravely/./app/javascript/utils/fetch.js","webpack://bravely/./app/javascript/utils/i18n.js"],"sourcesContent":["import {\n apiGet,\n apiPost,\n apiPut,\n apiPatch,\n jsonApiRequestHeaders,\n} from '../fetch';\nimport { apiUrl } from './helpers';\n/**\n * ================================================================\n * API Endpoints (Grape)\n * ================================================================\n */\n\nconst headers = jsonApiRequestHeaders();\n\nconst endpoints = {\n getConsults: (params = {}) => apiGet(apiUrl('/consults'), params, headers),\n getConsult: (id, params = {}) =>\n apiGet(apiUrl(`/consults/${id}`), params, headers),\n createConsult: (body = {}) => apiPost(apiUrl('/consults'), body, headers),\n rescheduleConsult: (id, params = {}, body = {}) =>\n apiPut(apiUrl(`/consults/${id}/reschedule`), body, headers, params),\n cancelConsult: (id, params = {}, body = {}) =>\n apiPut(apiUrl(`/consults/${id}/cancel`), body, headers, params),\n getEmployees: (params = {}) => apiGet(apiUrl('/employees'), params, headers),\n getEmployee: (id, params = {}) =>\n apiGet(apiUrl(`/employees/${id}`), params, headers),\n getEmployeeCourses: (params = {}) =>\n apiGet(apiUrl('/employee_courses'), params, headers),\n getAvailableSlots: (params = {}) =>\n apiPost(apiUrl(`/availability`), params, headers),\n claimOrganizationCoachingSlot: (params = {}) =>\n apiPost(apiUrl(`/organization_coaching_slots/claim`), params, headers),\n getOrganizations: (params = {}) =>\n apiGet(apiUrl('/organizations'), params, headers),\n getOrganization: (id, params = {}) =>\n apiGet(apiUrl(`/organizations/${id}`), params, headers),\n getSubmissions: (params = {}) =>\n apiGet(apiUrl('/submissions'), params, headers),\n getPrograms: (params = {}) => apiGet(apiUrl('/programs'), params, headers),\n getUserProgramJourney: (id, params = {}) =>\n apiGet(apiUrl(`/programs/${id}/user-journey`), params, headers),\n getUserProgramJourneyPro: (id, params = {}) =>\n apiGet(apiUrl(`/employee_programs/${id}/user-journey`), params, headers),\n getUserProgramsPro: (params) =>\n apiGet(apiUrl('/employee_programs'), params, headers),\n getTodos: (params = {}) => apiGet(apiUrl('/todos'), params, headers),\n getSubmission: (id, params = {}) =>\n apiGet(apiUrl(`/submissions/${id}`), params, headers),\n getMessages: (params = {}) => apiGet(apiUrl('/messages'), params, headers),\n getMessage: (id, params = {}) =>\n apiGet(apiUrl(`/messages/${id}`), params, headers),\n getMe: (params = {}) => apiGet(apiUrl('/users/me'), params, headers),\n markNoShow: (id, params = {}, body = {}) =>\n apiPut(apiUrl(`/consults/${id}/no_show`), body, headers, params),\n subscribeDailyMoments: (body = {}) =>\n apiPost(apiUrl('/campaigns'), body, headers),\n updateProfile: (body = {}) => {\n let bodyWithCookies = { ...body, cookies: headers['Cookie'] };\n\n return apiPut(apiUrl('/users/me'), bodyWithCookies, headers);\n },\n updateContactInfo: (body = {}) =>\n apiPut(apiUrl('/users/contacts'), body, headers),\n updatePassword: (body = {}) =>\n apiPut(apiUrl('/users/password'), body, headers),\n updateLanguage: (body = {}) =>\n apiPut(apiUrl('/users/language'), body, headers),\n bookingFlowStarted: (body = {}) =>\n apiPost(apiUrl('/consults/started'), body, headers),\n notificationViewed: (body = {}) =>\n apiPost(apiUrl('/notifications/viewed'), body, headers),\n updateConsult: (id, body = {}) =>\n apiPatch(apiUrl(`/consults/${id}`), body, headers),\n signupToDailymoment: (body = {}, resourceId) =>\n apiPost(\n apiUrl(`/employees/${resourceId}/sign_up_daily_moments`),\n body,\n headers\n ),\n trackEvent: (body = {}) => {\n // forces cookies sending to grape-api using request's body. Grape-Api uses a different cookie jar than Rails\n let bodyWithCookies = { ...body, cookies: headers['Cookie'] };\n return apiPost(apiUrl('/users/track_event'), bodyWithCookies, headers);\n },\n disconnectGcal: (params = {}) =>\n apiGet(apiUrl('/users/disconnect_gcal'), params, headers),\n fetchRescheduleWarning: (consultId) =>\n apiGet(apiUrl(`/reschedule/warning?consult_id=${consultId}`), headers),\n trackFairUseEvent: (body = {}) =>\n apiPost(apiUrl(`/reschedule/track`), body, headers),\n updateVideoSession: (body = {}) =>\n apiPost(apiUrl(`/zoom/video`), body, headers),\n};\n\nexport default endpoints;\n\n/**\n * Expose API functions to window for\n * convenient development & debugging\n */\nif (__DEVELOPMENT__) {\n window.BravelyApi = endpoints;\n}\n","import { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport get from 'lodash.get';\nimport parseInt from 'lodash.parseint';\nimport BravelyData from '../data';\n\nexport const INITIAL_PAGINATION = {\n current: 1,\n first: 1,\n next: null,\n last: null,\n prev: null,\n};\n\n/**\n * API URL Helper\n * Builds absolute URL with apiHost (subdomain)\n * @param {String} path '/consults'\n * @returns {String}\n * @example '/consults' --> 'https://api.workbravely.com/v1/pro/consults';\n */\nexport const apiUrl = (path) => `${BravelyData('apiHost', '')}${path}`;\n\n/**\n * IDs Helper\n * @param {Object} response JSON API Response\n * @returns {Array[String]} IDs or ID from record(s) found in response -- { data: [] } | { data: {} }\n */\nexport const parseResponseIds = ({ response }) =>\n Array.isArray(response.data)\n ? response.data.map((record) => record.id)\n : response.data.id || [];\n\n/**\n * Pagination Helper\n * @param {Object} response JSON API Response\n * @returns {Object} Extra pagination info from response and include current page\n */\nexport const parseResponsePagination = ({ response }) => {\n const pagination = get(response, 'links.page', INITIAL_PAGINATION);\n return {\n next:\n (pagination.next && parseInt(pagination.next)) || INITIAL_PAGINATION.next,\n prev:\n (pagination.prev && parseInt(pagination.prev)) || INITIAL_PAGINATION.prev,\n first:\n (pagination.first && parseInt(pagination.first)) ||\n INITIAL_PAGINATION.first,\n last:\n (pagination.last && parseInt(pagination.last)) || INITIAL_PAGINATION.last,\n };\n};\n\n/**\n * @param {Object} pagination\n * @returns {String|Number}\n */\nexport const getNextPage = ({\n current,\n pagination: { first, next, last, prev },\n}) => (current < next ? next : current);\n\n/**\n * @param {Object} pagination\n * @returns {String|Number}\n */\nexport const getPreviousPage = ({\n current,\n pagination: { first, next, last, prev },\n}) => (prev && current > prev ? prev : current);\n\n/**\n * @param {Object} pagination\n * @returns {Boolean}\n */\nexport const isLastPage = ({\n current,\n pagination: { first, next, last, prev },\n}) => last == current;\n\n/**\n * @param {Object} pagination\n * @returns {Boolean}\n */\nexport const isFirstPage = ({\n current,\n pagination: { first, next, last, prev },\n}) => first == current;\n\n/**\n * @param {Object} pagination\n * @returns {Boolean}\n */\nconst _hasPrevPage = ({ current, pagination: { first, next, last, prev } }) =>\n prev &&\n !isFirstPage({\n current,\n pagination: { first, next, last, prev },\n });\n\n/**\n * @param {Object} pagination\n * @returns {Boolean}\n */\nconst _hasNextPage = ({ current, pagination: { first, next, last, prev } }) =>\n last &&\n !isLastPage({\n current,\n pagination: { first, next, last, prev },\n });\n\n/**\n * @param {Object} pagination\n * @returns {Boolean}\n */\nexport const updatePagination = ({\n current,\n pagination: { first, next, last, prev },\n}) => {\n current = 1 * current;\n return {\n next: current < last ? current + 1 : last,\n prev: current > first ? current - 1 : first,\n first,\n last,\n };\n};\n\n/**\n * @param {Array} pagedIds\n * @param {Integer} pageNum\n * @param {Object} sourceData (Probably App State)\n * @param {Object} localData (Probably Component State)\n * @returns {Object} localData\n */\nexport const preparePagedData = ({\n pagedIds,\n pageNum,\n sourceData,\n localData = {},\n}) => {\n let pagedData = [];\n\n pagedIds[pageNum] &&\n pagedIds[pageNum].map((id) => {\n pagedData.push(sourceData[id]);\n });\n\n return pagedData;\n};\n\n/**\n * Custon Pagination Hook for Paged Components\n * @returns {Array}\n */\nexport function usePagination() {\n const [pagedIds, setPagedIds] = useState({});\n const [isLoading, setIsLoading] = useState(null);\n const [error, setError] = useState(null);\n const [pagination, setPagination] = useState(INITIAL_PAGINATION);\n\n const hasPrevPage = (pageNum) =>\n _hasPrevPage({ current: pageNum, pagination });\n\n const hasNextPage = (pageNum) =>\n _hasNextPage({ current: pageNum, pagination });\n\n return {\n pagedIds,\n setPagedIds,\n isLoading,\n setIsLoading,\n error,\n setError,\n pagination,\n setPagination,\n hasPrevPage,\n hasNextPage,\n };\n}\n\nexport const paginationPropTypes = {\n pagedIds: PropTypes.object.isRequired,\n setPagedIds: PropTypes.func.isRequired,\n isLoading: PropTypes.bool,\n setIsLoading: PropTypes.func.isRequired,\n pagination: PropTypes.shape({\n first: PropTypes.any,\n next: PropTypes.any,\n last: PropTypes.any,\n prev: PropTypes.any,\n }),\n setPagination: PropTypes.func.isRequired,\n hasPrevPage: PropTypes.func.isRequired,\n hasNextPage: PropTypes.func.isRequired,\n};\n\nexport const getAPIHeaders = () => {\n const bearerToken =\n document.querySelector('meta[name=\"bravely-token\"]') &&\n document.querySelector('meta[name=\"bravely-token\"]').content;\n const csrfToken =\n document.querySelector('meta[name=\"csrf-token\"]') &&\n document.querySelector('meta[name=\"csrf-token\"]').content;\n const apiHeaders = {\n Accept: 'application/vnd.api+json',\n 'Accept-Language': 'en-US',\n 'Content-Type': 'application/vnd.api+json',\n 'X-CSRF-Token': csrfToken,\n Authorization: 'Bearer ' + bearerToken,\n Cookie: document.cookie,\n };\n\n return apiHeaders;\n};\n\nexport const fetchOptions = (method) => ({\n method: method.toUpperCase(),\n headers: getAPIHeaders(),\n credentials: 'same-origin',\n});\n","import { camelize } from 'humps';\n\n/**\n * @param {string} key camelCase|snake_case read from PAGE_DATA\n * @param {mixed} fallback null|mixed if key is missing or falsey,\n */\nexport default function BravelyData(key, fallback = null) {\n const pageDataKey = camelize(key);\n\n return typeof Bravely.PAGE_DATA === 'object' &&\n Bravely.PAGE_DATA.hasOwnProperty(pageDataKey)\n ? Bravely.PAGE_DATA[pageDataKey]\n : fallback;\n}\n","import { camelizeKeys, decamelizeKeys } from 'humps';\nimport isObject from 'lodash.isobject';\nimport queryString from 'query-string';\n\nconst METHOD_GET = 'GET';\nconst METHOD_POST = 'POST';\nconst METHOD_PUT = 'PUT';\nconst METHOD_DELETE = 'DELETE';\nconst METHOD_PATCH = 'PATCH';\n\n/**\n * Opinionated fetch() wrapper for using our API that does the following:\n *\n * 1. sends same-origin cookies along for authentication\n * 2. includes the CSRF token as a header\n * 3. serializes params:\n * - converts camelCase -> snake_case\n * - if method is GET or DELETE, transforms params to query params\n * - otherwise (POST or PUT), serializes params to JSON\n * 4. rejects with error for non-2XX responses\n * 5. deserializes response from JSON, and converts snake_case JSON -> camelCase\n * JSON\n *\n * Returns a standard Response object, with an additional `parsed` field added\n * containing parsed JSON, if applicable.\n *\n * Throws an Error that either comes from fetch() (for e.g. \"could not connect\n * to host\"), or is constructed from a non-2XX HTTP response (e.g. \"bad\n * request\"). This error has a `fetchError` property set to `true` on it so it\n * can be easily distinguished from other unexpected errors:\n *\n * ```\n * let resp;\n * try {\n * resp = await apiFetch('/api/availability', {\n * params: {\n * tz: this.props.selectedTimeZone,\n * },\n * });\n * } catch(err) {\n * if (!err.fetchError) {\n * // unexpected error\n * throw err;\n * }\n *\n * if (err.res) {\n * // handle HTTP error\n * const message = err.res.error.message;\n * // ...\n * } else {\n * // handle fetch() error\n * const message = 'An unexpected error occurred';\n * // ...\n * }\n * }\n * ```\n */\nexport async function apiFetch(\n url,\n { method = METHOD_GET, headers, body, params } = {}\n) {\n // 1. Append ?query to URL if necessary\n if (params) {\n url = appendQueryParams(url, params);\n }\n // 2. Decamelize and Stringify Body\n if (body) {\n body = JSON.stringify(decamelizeKeys(body));\n }\n // 3. Make Request\n let res;\n try {\n res = await fetch(url, {\n body,\n method: method.toUpperCase(),\n headers: headers,\n credentials: 'same-origin',\n });\n } catch (err) {\n err.fetchError = true;\n if (\n document.location.pathname.includes('activ') ||\n document.location.pathname.includes('confirm') ||\n document.location.pathname.includes('book')\n ) {\n throw err;\n }\n throw err;\n }\n\n if (!(res.status >= 200 && res.status < 300)) {\n const error = new Error(res.statusText);\n error.fetchError = true;\n error.res = res;\n res.parsed = await parseResponseJson(res);\n if (\n document.location.pathname.includes('activ') ||\n document.location.pathname.includes('confirm') ||\n document.location.pathname.includes('book')\n ) {\n throw error;\n }\n }\n\n if (res.status !== 204) {\n res.parsed = await parseResponseJson(res);\n }\n\n return res;\n}\n\n/**\n * GET API Fetch Convienience Wrapper\n * @param {String} endpoint\n * @param {Object} params\n * @returns {Promise}\n */\nexport async function apiGet(\n endpoint,\n params = {},\n headers = apiRequestHeaders()\n) {\n return await apiFetch(endpoint, {\n method: METHOD_GET,\n headers,\n params,\n });\n}\n\n/**\n * POST API Fetch Convienience Wrapper\n * @param {String} endpoint\n * @param {Object} body\n * @param {Object} headers\n * @returns {Promise}\n */\nexport async function apiPost(\n endpoint,\n body = {},\n headers = apiRequestHeaders()\n) {\n return await apiFetch(endpoint, {\n method: METHOD_POST,\n headers,\n body,\n });\n}\n\n/**\n * PUT API Fetch Convienience Wrapper\n * @param {String} endpoint\n * @param {Object} body\n * @param {Object} headers\n * @returns {Promise}\n */\nexport async function apiPut(\n endpoint,\n body = {},\n headers = apiRequestHeaders(),\n params = {}\n) {\n return await apiFetch(endpoint, {\n method: METHOD_PUT,\n headers,\n body,\n params,\n });\n}\n\n/**\n * PATCH API Fetch Convienience Wrapper\n * @param {String} endpoint\n * @param {Object} body\n * @param {Object} headers\n * @returns {Promise}\n */\nexport async function apiPatch(\n endpoint,\n body = {},\n headers = apiRequestHeaders(),\n params = {}\n) {\n return await apiFetch(endpoint, {\n method: METHOD_PATCH,\n headers,\n body,\n params,\n });\n}\n\n/**\n * DELETE API Fetch Convienience Wrapper\n * @param {String} endpoint\n * @param {Object} params\n * @returns {Promise}\n */\nexport async function apiDelete(\n endpoint,\n body = {},\n headers = apiRequestHeaders()\n) {\n return await apiFetch(endpoint, {\n method: METHOD_DELETE,\n headers,\n body,\n });\n}\n\n/**\n * @param {String} url\n * @param {Object} params\n * @returns {String} url?params\n */\nexport const appendQueryParams = (url, params) =>\n queryString.stringifyUrl(\n {\n url,\n query: decamelizeKeys(\n Object.keys(params).reduce((preparedQueryParams, param) => {\n // 1. Default\n // Pass Key/Value back through preparedQueryParams\n let key = param;\n let value = params[param];\n // 2. Object Handling\n // Convert { filter: { name: \"johnny\" }} => { filter[name]: johnny }\n if (isObject(params[param]) && !Array.isArray(params[param])) {\n // 3a. Format & Apply Object Key / Value\n Object.keys(params[param]).forEach((objectParamKey) => {\n preparedQueryParams[`${param}[${objectParamKey}]`] =\n params[param][objectParamKey];\n });\n } else {\n // 3b. Re-Apply Key / Value\n preparedQueryParams[key] = value;\n }\n\n return preparedQueryParams;\n }, {})\n ),\n },\n { skipNull: true, arrayFormat: 'bracket' }\n );\n\n/**\n * @param {Response} res\n * @returns {Object}\n */\nconst parseResponseJson = async (res) => {\n try {\n return camelizeKeys(await res.json());\n } catch (err) {\n return;\n }\n};\n\n/**\n * @param {String} name Meta Tag name attribute\n * @returns {String} Meta Tag content attribute\n */\nconst getMeta = (name) =>\n (document.querySelector(`meta[name=\"${name}\"]`) || {}).content?.replace(\n /[=\\n]/g,\n ''\n );\n\n/**\n * API Fetch Request Headers\n */\nexport const apiRequestHeaders = () => ({\n Accept: 'application/vnd.api+json',\n 'Accept-Language': 'en-US',\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': getMeta('csrf-token'),\n Authorization: `Bearer ${getMeta('bravely-token')}`,\n Cookie: document.cookie,\n});\n\n/**\n * JSON API Request Headers\n */\nexport const jsonApiRequestHeaders = () => ({\n Accept: 'application/vnd.api+json',\n 'Accept-Language': 'en-US',\n 'Content-Type': 'application/vnd.api+json',\n 'X-CSRF-Token': getMeta('csrf-token'),\n Authorization: `Bearer ${getMeta('bravely-token')}`,\n Cookie: document.cookie,\n});\n","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport BravelyData from 'utils/data';\nimport { en, sp } from './translations';\n\nconst { language } = BravelyData('currentUser') || {};\n\ni18n\n // pass the i18n instance to react-i18next\n .use(initReactI18next)\n // initialize i18next. For all options read: https://www.i18next.com/overview/configuration-options\n .init({\n resources: {\n en: {\n translation: en,\n },\n sp: {\n translation: sp,\n },\n },\n lng: language,\n fallbackLng: 'en',\n // Prevent usage of react suspense to avoid breaking the code\n react: { useSuspense: false },\n });\n\nexport default i18n;\n"],"names":["headers","jsonApiRequestHeaders","endpoints","getConsults","params","apiGet","apiUrl","getConsult","id","createConsult","body","apiPost","rescheduleConsult","apiPut","cancelConsult","getEmployees","getEmployee","getEmployeeCourses","getAvailableSlots","claimOrganizationCoachingSlot","getOrganizations","getOrganization","getSubmissions","getPrograms","getUserProgramJourney","getUserProgramJourneyPro","getUserProgramsPro","getTodos","getSubmission","getMessages","getMessage","getMe","markNoShow","subscribeDailyMoments","updateProfile","bodyWithCookies","cookies","updateContactInfo","updatePassword","updateLanguage","bookingFlowStarted","notificationViewed","updateConsult","apiPatch","signupToDailymoment","resourceId","trackEvent","disconnectGcal","fetchRescheduleWarning","consultId","trackFairUseEvent","updateVideoSession","INITIAL_PAGINATION","current","first","next","last","prev","path","BravelyData","parseResponseIds","response","Array","isArray","data","map","record","parseResponsePagination","pagination","get","parseInt","getNextPage","getPreviousPage","isLastPage","isFirstPage","_hasPrevPage","_hasNextPage","updatePagination","preparePagedData","pagedIds","pageNum","sourceData","localData","pagedData","push","usePagination","setPagedIds","useState","isLoading","setIsLoading","error","setError","setPagination","hasPrevPage","hasNextPage","paginationPropTypes","PropTypes","isRequired","getAPIHeaders","bearerToken","document","querySelector","content","Accept","Authorization","Cookie","cookie","fetchOptions","method","toUpperCase","credentials","key","fallback","pageDataKey","camelize","Bravely","PAGE_DATA","hasOwnProperty","METHOD_GET","METHOD_POST","METHOD_PUT","METHOD_DELETE","METHOD_PATCH","async","apiFetch","url","res","appendQueryParams","JSON","stringify","decamelizeKeys","fetch","err","fetchError","location","pathname","includes","status","Error","statusText","parsed","parseResponseJson","endpoint","apiRequestHeaders","apiDelete","queryString","query","Object","keys","reduce","preparedQueryParams","param","value","isObject","forEach","objectParamKey","skipNull","arrayFormat","camelizeKeys","json","getMeta","name","replace","language","i18n","use","initReactI18next","init","resources","en","translation","sp","lng","fallbackLng","react","useSuspense"],"sourceRoot":""}