{"version":3,"sources":["webpack:///./src/views/ContactUs.vue?e63d","webpack:///./node_modules/client-website-ts-library/components/ReCaptcha.vue?285b","webpack:///./node_modules/client-website-ts-library/components/ReCaptcha.vue?c1f0","webpack:///./node_modules/client-website-ts-library/components/ReCaptcha.vue?83ee","webpack:///./node_modules/client-website-ts-library/components/ReCaptcha.vue","webpack:///./node_modules/client-website-ts-library/components/VideoRecorder.vue?d8cd","webpack:///./node_modules/client-website-ts-library/components/VideoRecorder.vue?c337","webpack:///./node_modules/client-website-ts-library/components/VideoRecorder.vue?c12c","webpack:///./node_modules/client-website-ts-library/components/VideoRecorder.vue","webpack:///./node_modules/client-website-ts-library/components/VideoRecorder.vue?a6af","webpack:///./node_modules/client-website-ts-library/components/Map/Map.vue?0d6e","webpack:///./node_modules/client-website-ts-library/components/Map/Map.vue?484d","webpack:///./node_modules/client-website-ts-library/components/Map/Map.vue?5d21","webpack:///./node_modules/client-website-ts-library/components/Map/Map.vue","webpack:///./node_modules/client-website-ts-library/components/Map/Map.vue?c455","webpack:///./src/views/ContactUs.vue?e7df","webpack:///./src/views/ContactUs.vue","webpack:///./src/views/ContactUs.vue?e268","webpack:///./src/views/ContactUs.vue?8f5a","webpack:///./node_modules/client-website-ts-library/components/ReCaptcha.vue?2a77"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","class","recaptchaVersion","attrs","id","siteKey","callbackFunctionName","staticRenderFns","GetGuid","response","responseWaiter","Website","Settings","ReCaptcha","ReCaptchaSiteKey","ReCaptchaVersion","window","Log","Debug","loadLibrary","then","Info","catch","Error","grecaptcha","reset","Promise","resolve","reject","length","win","execute","ex","undefined","scr","document","createElement","pl_recaptcha_loaded","onerror","async","defer","head","appendChild","src","component","domProps","_s","def","Labels","Prompt","needsFallback","isMobile","on","uploadVideo","_v","Upload","Record","showRecorder","directives","name","rawName","value","isActive","ready","expression","isRunningOutatime","formattedTime","ref","doneRecording","isRecording","toggleRecording","cancelRecording","initVideoStream","_e","fatalErrorMessage","needsPermissions","hasNoDevices","permissionDenied","hasFatalError","videoBlob","outatimeThreshold","captureConfig","currentTime","currentTimeInterval","videoStream","mediaRecorder","capturedChunks","test","navigator","userAgent","mins","Math","floor","secs","totalMins","MaxRecordLength","totalSecs","fallback","mediaDevices","enumerateDevices","availableDevices","some","device","kind","permissions","query","res","state","Warning","err","stopRecording","startRecording","codecs","codec","i","MediaRecorder","isTypeSupported","initCaptureConfig","mimeType","ondataavailable","e","push","data","onstop","Blob","type","clearInterval","start","setInterval","stop","hideRecorder","$emit","fi","accept","setAttribute","style","display","createFileInput","onchange","files","file","size","MaxFileSize","alert","FormattedMaxFileSize","remove","onblur","setTimeout","body","click","getTracks","forEach","track","constraints","audio","video","width","height","getUserMedia","mediaStream","$refs","preview","srcObject","message","config","MapProvider","settings","$event","MapBoxMap","Config","center","zoom","map","SetCenter","GetZoom","components","office","Phone","Fax","Email","AddressLine1","AddressLine2","staticStyle","mapSettings","Offices","Get","WebsiteId","Markers","Address","Title","FranchiseName","Coordinate","Lat","Lon","console","debug","Map","Form"],"mappings":"4JAAA,W,mICAIA,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,YAAYC,MAAM,CAAC,qBAA8C,IAAxBP,EAAIQ,mBAAyB,CAACJ,EAAG,MAAM,CAACE,YAAY,+BAA+BG,MAAM,CAAC,GAAK,aAAeT,EAAIU,GAAG,eAAeV,EAAIW,QAAQ,YAAoC,IAAxBX,EAAIQ,iBAAyB,GAAK,YAAY,gBAAgBR,EAAIY,qBAAqB,wBAAwBZ,EAAIY,2BAC1aC,EAAkB,G,gDCkBtB,IAAqB,EAArB,cAAuC,OAAvC,c,oBACmB,KAAAH,GAAK,OAAMI,UAEpB,KAAAC,SAA0B,KAE1B,KAAAC,eAAsF,KAEtF,KAAAL,QAAU,OAAOM,QAAQC,SAAUC,UAAUC,iBAE7C,KAAAZ,iBAAmB,OAAOS,QAAQC,SAAUC,UAAUE,iBAE9D,2BACE,MAAO,uBAAuBpB,KAAKS,GAGrC,UACGY,OAAerB,KAAKW,sBAAyBG,IAC5C,OAAOQ,IAAI,OAASC,MAAO,cAAe,gBAE1CvB,KAAKc,SAAWA,GAAY,KAED,OAAxBd,KAAKe,gBAA6C,OAAlBf,KAAKc,WACtCd,KAAKe,eAAef,KAAKc,UACzBd,KAAKe,eAAiB,OAI1Bf,KAAKwB,cAAcC,KAAK,KACtB,OAAOH,IAAI,OAASI,KAAM,cAAe,sBACxCC,MAAM,KACP,OAAOL,IAAI,OAASM,MAAO,cAAe,8BAG5C,OAAON,IAAI,OAASI,KAAM,cAAe,uBAAwB1B,KAAKS,IAGxE,QACGY,OAAeQ,WAAWC,QAG7B,cACE,OAAO,IAAIC,QAAQ,CAACC,EAASC,KAC3B,GAAqB,OAAlBjC,KAAKc,UAAqBd,KAAKc,SAASoB,OAAS,EAElD,YADAF,EAAQhC,KAAKc,UAIfd,KAAKe,eAAiB,KACpB,OAAOO,IAAI,OAASC,MAAO,cAAe,sBAC1CS,KAGF,MAAMG,EAAMd,OAEZ,IACEc,EAAIN,WAAWO,UACf,MAAOC,GACP,OAAOf,IAAI,OAASM,MAAO,cAAe,4BAA6BS,GACvEF,EAAIN,WAAW/B,OAAO,aAAaE,KAAKS,IACxC0B,EAAIN,WAAWO,aAKrB,cACE,OAAO,IAAIL,QAAiB,CAACC,EAASC,KACpC,QAAkCK,IAA9BjB,OAAeQ,WAIjB,OAHA,OAAOP,IAAI,OAASC,MAAO,cAAe,sCAE1CS,GAAQ,GAIV,MAAMO,EAAMC,SAASC,cAAc,UAElCpB,OAAeqB,oBAAsB,KACpCV,GAAQ,IAGVO,EAAII,QAAU,KACZV,KAGFM,EAAIK,OAAQ,EACZL,EAAIM,OAAQ,EAEZL,SAASM,KAAKC,YAAYR,GAE1BA,EAAIS,IAAM,yEAxFK,EAAS,yBAD7B,QACoB,WCnBiS,I,wBCQlTC,EAAY,eACd,EACAnD,EACAc,GACA,EACA,KACA,WACA,MCfE,GDmBWqC,E,QCnBF,WAAa,IAAIlD,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,uBAAuB,CAACF,EAAG,MAAM,CAACE,YAAY,6BAA6B,CAACF,EAAG,IAAI,CAAC+C,SAAS,CAAC,UAAYnD,EAAIoD,GAAGpD,EAAIqD,IAAIC,OAAOC,WAAYvD,EAAIwD,gBAAkBxD,EAAIyD,SAAUrD,EAAG,SAAS,CAACsD,GAAG,CAAC,MAAQ1D,EAAI2D,cAAc,CAAC3D,EAAI4D,GAAG5D,EAAIoD,GAAGpD,EAAIqD,IAAIC,OAAOO,QAAU7D,EAAIqD,IAAIC,OAAOQ,WAAW1D,EAAG,SAAS,CAACsD,GAAG,CAAC,MAAQ1D,EAAI+D,eAAe,CAAC/D,EAAI4D,GAAG5D,EAAIoD,GAAGpD,EAAIqD,IAAIC,OAAOQ,YAAY,GAAG1D,EAAG,SAAS,CAACK,MAAM,CAAC,GAAK,aAAa,CAACL,EAAG,MAAM,CAAC4D,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOnE,EAAIoE,UAAYpE,EAAIqE,QAAUrE,EAAIwD,cAAec,WAAW,wCAAwChE,YAAY,kBAAkB,CAACF,EAAG,MAAM,CAACE,YAAY,4BAA4B,CAACF,EAAG,MAAM,CAACE,YAAY,qCAAqC,CAACF,EAAG,OAAO,CAACE,YAAY,uBAAuBC,MAAM,CAAC,oCAAqCP,EAAIuE,oBAAoB,CAACvE,EAAI4D,GAAG5D,EAAIoD,GAAGpD,EAAIwE,oBAAoBpE,EAAG,QAAQ,CAACqE,IAAI,UAAUnE,YAAY,0BAA0BG,MAAM,CAAC,SAAW,GAAG,MAAQ,GAAG,YAAc,IAAI0C,SAAS,CAAC,OAAQ,OAAU/C,EAAG,MAAM,CAACE,YAAY,4BAA4B,CAACF,EAAG,SAAS,CAACE,YAAY,wDAAwDG,MAAM,CAAC,KAAO,UAAUiD,GAAG,CAAC,MAAQ1D,EAAI0E,gBAAgB,CAAC1E,EAAI4D,GAAG,UAAUxD,EAAG,SAAS,CAACE,YAAY,8DAA8DC,MAAM,CAAC,UAAaP,EAAI2E,aAAalE,MAAM,CAAC,KAAO,UAAUiD,GAAG,CAAC,MAAQ1D,EAAI4E,mBAAmBxE,EAAG,SAAS,CAACE,YAAY,wDAAwDG,MAAM,CAAC,KAAO,UAAUiD,GAAG,CAAC,MAAQ1D,EAAI6E,kBAAkB,CAAC7E,EAAI4D,GAAG,cAAe5D,EAAoB,iBAAEI,EAAG,MAAM,CAACE,YAAY,yBAAyB,CAACF,EAAG,MAAM,CAACE,YAAY,+BAA+B,CAACF,EAAG,MAAM,CAACE,YAAY,wBAAwBG,MAAM,CAAC,MAAQ,6BAA6B,QAAU,YAAY,KAAO,OAAO,OAAS,OAAO,eAAe,IAAI,iBAAiB,QAAQ,kBAAkB,UAAU,CAACL,EAAG,UAAU,CAACK,MAAM,CAAC,OAAS,2BAA2BL,EAAG,OAAO,CAACK,MAAM,CAAC,EAAI,IAAI,EAAI,IAAI,MAAQ,KAAK,OAAS,KAAK,GAAK,IAAI,GAAK,WAAWL,EAAG,IAAI,CAACE,YAAY,kCAAkC,CAACN,EAAI4D,GAAG,uEAAuExD,EAAG,MAAM,CAACE,YAAY,kCAAkC,CAACF,EAAG,SAAS,CAACE,YAAY,yEAAyEoD,GAAG,CAAC,MAAQ1D,EAAI6E,kBAAkB,CAAC7E,EAAI4D,GAAG,YAAYxD,EAAG,SAAS,CAACE,YAAY,gCAAgCoD,GAAG,CAAC,MAAQ1D,EAAI8E,kBAAkB,CAAC9E,EAAI4D,GAAG,eAAe5D,EAAI+E,KAAM/E,EAAoB,iBAAEI,EAAG,MAAM,CAACE,YAAY,yBAAyB,CAACF,EAAG,MAAM,CAACE,YAAY,+BAA+B,CAACF,EAAG,MAAM,CAACE,YAAY,4BAA4BG,MAAM,CAAC,MAAQ,6BAA6B,QAAU,YAAY,KAAO,OAAO,OAAS,OAAO,eAAe,IAAI,iBAAiB,QAAQ,kBAAkB,UAAU,CAACL,EAAG,OAAO,CAACK,MAAM,CAAC,EAAI,uGAAuGL,EAAG,OAAO,CAACK,MAAM,CAAC,GAAK,IAAI,GAAK,IAAI,GAAK,KAAK,GAAK,YAAYL,EAAG,IAAI,CAACE,YAAY,kCAAkC,CAACN,EAAI4D,GAAG,gEAAgExD,EAAG,MAAM,CAACE,YAAY,2EAA2E,CAACF,EAAG,SAAS,CAACE,YAAY,gCAAgCoD,GAAG,CAAC,MAAQ1D,EAAI6E,kBAAkB,CAAC7E,EAAI4D,GAAG,cAAc5D,EAAI+E,KAAM/E,EAAiB,cAAEI,EAAG,MAAM,CAACE,YAAY,yBAAyB,CAACF,EAAG,MAAM,CAACE,YAAY,+BAA+B,CAACF,EAAG,MAAM,CAACE,YAAY,iCAAiCG,MAAM,CAAC,MAAQ,6BAA6B,QAAU,YAAY,KAAO,OAAO,OAAS,OAAO,eAAe,IAAI,iBAAiB,QAAQ,kBAAkB,UAAU,CAACL,EAAG,OAAO,CAACK,MAAM,CAAC,EAAI,8FAA8FL,EAAG,OAAO,CAACK,MAAM,CAAC,GAAK,KAAK,GAAK,IAAI,GAAK,KAAK,GAAK,QAAQL,EAAG,OAAO,CAACK,MAAM,CAAC,GAAK,KAAK,GAAK,KAAK,GAAK,QAAQ,GAAK,YAAYL,EAAG,IAAI,CAACE,YAAY,kCAAkC,CAACN,EAAI4D,GAAG,0BAA0BxD,EAAG,IAAI,CAACE,YAAY,kCAAkC,CAACN,EAAI4D,GAAG,IAAI5D,EAAIoD,GAAGpD,EAAIgF,mBAAmB,OAAO5E,EAAG,MAAM,CAACE,YAAY,2EAA2E,CAACF,EAAG,SAAS,CAACE,YAAY,gCAAgCoD,GAAG,CAAC,MAAQ1D,EAAI6E,kBAAkB,CAAC7E,EAAI4D,GAAG,cAAc5D,EAAI+E,UAAU,KACz5I,EAAkB,GCoFtB,IAAqB,EAArB,cAA2C,OAA3C,c,oBAIU,KAAAX,UAAW,EAEX,KAAAC,OAAQ,EAER,KAAAb,eAAgB,EAMhB,KAAAyB,kBAAmB,EAEnB,KAAAC,cAAe,EAEf,KAAAC,kBAAmB,EAEnB,KAAAC,eAAgB,EAEhB,KAAAJ,kBAAoB,GAEpB,KAAAL,aAAc,EAEd,KAAAU,UAAyB,KAEzB,KAAAC,kBAAmC,KAEnC,KAAAC,cAA2C,KAE3C,KAAAC,YAAc,EAEd,KAAAC,oBAAqC,KAErC,KAAAC,YAAkC,KAElC,KAAAC,cAAsC,KAEtC,KAAAC,eAAyB,GA9BjC,eACE,MAAO,4BAA4BC,KAAKC,UAAUC,WA+BpD,oBACE,IAAIC,EAAwBC,KAAKC,MAAMjG,KAAKuF,YAAc,IACtDW,EAAwBlG,KAAKuF,YAAsB,GAAPQ,EAE5CI,EAA6BH,KAAKC,MAAMjG,KAAKoD,IAAIgD,gBAAkB,IACnEC,EAA6BrG,KAAKoD,IAAIgD,gBAA+B,GAAZD,EAK7D,OAHID,EAAO,KAAIA,EAAO,IAAMA,GACxBG,EAAY,KAAIA,EAAY,IAAMA,GAE/BN,EAAO,IAAMG,EAAO,MAAQC,EAAY,IAAME,EAGvD,wBACE,OAAOrG,KAAKuF,aAA0C,IAA3BvF,KAAKoD,IAAIgD,gBAGtC,UAEE,IAA8D,IAA1D,4BAA4BR,KAAKC,UAAUC,WAI7C,OAHA,OAAOxE,IAAI,OAASC,MAAO,mBAAoB,uDAE/CvB,KAAKsG,WAIH,kBAAmBjF,QAAUwE,UAAUU,cAAgBV,UAAUU,aAAaC,kBAChF,OAAOlF,IAAI,OAASC,MAAO,mBAAoB,iDAE/CsE,UAAUU,aAAaC,mBAAmB/E,KAAMgF,IAE9C,GAAIA,EAAiBC,KAAMC,GAA2B,eAAhBA,EAAOC,MAG3C,GAAG,gBAAiBf,UAAW,CAC7B,OAAOvE,IAAI,OAASC,MAAO,mBAAoB,6DAE/C,IAEEsE,UAAUgB,YAAYC,MAAM,CAAE9C,KAAM,WAAYvC,KAAKsF,IAClC,YAAdA,EAAIC,OACL,OAAO1F,IAAI,OAASC,MAAO,mBAAoB,sCAG/CvB,KAAKoE,OAAQ,EACbpE,KAAKgF,kBAAmB,IAExB,OAAO1D,IAAI,OAASC,MAAO,mBAAoB,8BAE/CvB,KAAKoE,OAAQ,KAGjB,MAAO/B,GACP,OAAOf,IAAI,OAAS2F,QAAS,mBAAoB,yCAA0C5E,GAG3FrC,KAAKgF,kBAAmB,QAG1B,OAAO1D,IAAI,OAASC,MAAO,mBAAoB,mEAG/CvB,KAAKgF,kBAAmB,OAI1B,OAAO1D,IAAI,OAASC,MAAO,mBAAoB,6EAC/CvB,KAAKsG,aAGN3E,MAAOuF,IACR,OAAO5F,IAAI,OAASM,MAAO,mBAAoB,oCAAqCsF,GAEpFlH,KAAKsG,eAGP,OAAOhF,IAAI,OAASC,MAAO,mBAAoB,iFAE/CvB,KAAKsG,YAID,kBACFtG,KAAK0E,YACP1E,KAAKmH,gBAELnH,KAAKoH,iBAID,oBACN,MAAMC,EAAS,CACX,YACA,aACA,yBACA,aACA,wBACA,2BAGJrH,KAAKsF,cAAgB,CACnBgC,MAAO,IAGT,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAOnF,OAAQqF,GAAK,EACtC,GAAIC,cAAcC,gBAAgBJ,EAAOE,IAAK,CAC5CvH,KAAKsF,cAAcgC,MAAQD,EAAOE,GAClC,MAIJ,GAAwC,IAApCvH,KAAKsF,cAAcgC,MAAMpF,OAC3B,MAAM,IAAIN,MAAM,oCAGlB,OAAON,IAAI,OAASC,MAAO,mBAAoB,eAAe8F,EAAOE,IAG/D,iBACFvH,KAAK0E,cAET1E,KAAK0E,aAAc,EAEnB1E,KAAK6E,kBAAkBpD,KAAK,KAK1B,GAJAzB,KAAK2F,eAAiB,GAEtB,OAAOrE,IAAI,OAASC,MAAO,mBAAoB,mBAEpB,OAAvBvB,KAAK0F,cAAwB,CAE/B,GAA2B,OAAvB1F,KAAKsF,cACP,IACEtF,KAAK0H,oBACL,MAAOrF,GAKP,OAJA,OAAOf,IAAI,OAASM,MAAO,mBAAoB,6CAE/C5B,KAAKsG,WAMTtG,KAAK0F,cAAgB,IAAI8B,cAAcxH,KAAKyF,YAAc,CACxDkC,SAAU3H,KAAKsF,cAAegC,QAGhCtH,KAAK0F,cAAckC,gBAAmBC,IACpC7H,KAAK2F,eAAemC,KAAKD,EAAEE,OAG7B/H,KAAK0F,cAAcsC,OAAS,KAC1BhI,KAAKoF,UAAY,IAAI6C,KAAKjI,KAAK2F,eAAgB,CAAEuC,KAAMlI,KAAKsF,cAAegC,QAE3EtH,KAAK0E,aAAc,EAEnBrD,OAAO8G,cAAcnI,KAAKwF,qBAC1BxF,KAAKuF,YAAc,EAEnB,OAAOjE,IAAI,OAASC,MAAO,mBAAoB,qBAE/CvB,KAAKyE,iBAGP,OAAOnD,IAAI,OAASC,MAAO,mBAAoB,4BAA6BvB,KAAK0F,eAGnF1F,KAAKuF,YAAc,EAEnBvF,KAAK0F,cAAc0C,QAEnBpI,KAAKwF,oBAAsBnE,OAAOgH,YAAY,KAC5CrI,KAAKuF,aAAe,EAEhBvF,KAAKuF,aAAevF,KAAKoD,IAAIgD,kBAC/B,OAAO9E,IAAI,OAASC,MAAO,mBAAoB,oCAC/CvB,KAAKmH,kBAEN,QAIC,gBACNnH,KAAK0F,cAAe4C,OAGd,gBACNtI,KAAKuI,eAELvI,KAAKwI,MAAM,OAAQxI,KAAKoF,WAGlB,kBACFpF,KAAK0E,aACP1E,KAAKmH,gBAGPnH,KAAKyE,gBAGC,kBACN,MAAMgE,EAAKjG,SAASC,cAAc,SASlC,OAPAgG,EAAGP,KAAO,OACVO,EAAGC,OAAS,YAEZD,EAAGE,aAAa,UAAW,eAE3BF,EAAGG,MAAMC,QAAU,OAEZJ,EAGD,WACNzI,KAAKoE,OAAQ,EACbpE,KAAKuD,eAAgB,EAGf,cACN,MAAMkF,EAAKzI,KAAK8I,kBAEhBL,EAAGM,SAAW,KAGZ,GAFA,OAAOzH,IAAI,OAASC,MAAO,mBAAoB,qBAAsBkH,EAAGO,OAEpEP,EAAGO,MAAO9G,OAAQ,CACpB,MAAM+G,EAAOR,EAAGO,MAAO,GAEpBC,EAAKC,KAAOlJ,KAAKoD,IAAI+F,YACtBC,MAAM,gEAAgEpJ,KAAKoD,IAAIiG,uEAE/ErJ,KAAKoF,UAAYqD,EAAGO,MAAO,GAE3BhJ,KAAKyE,iBAGPgE,EAAGa,WAIPb,EAAGc,OAAS,KACVC,WAAW,KAET,OAAOlI,IAAI,OAASC,MAAO,mBAAoB,4BAE/CkH,EAAGa,UACF,MAGL9G,SAASiH,KAAK1G,YAAY0F,GAE1BA,EAAGiB,QAGG,eACmB,OAArB1J,KAAKyF,cACPzF,KAAKyF,YAAakE,YAAYC,SAAQ,SAASC,GAC7CA,EAAMvB,UAGRtI,KAAKyF,YAAc,KACnBzF,KAAK0F,cAAgB,MAGvB1F,KAAKmE,UAAW,EAGV,eACNnE,KAAK6E,kBAAkBpD,KAAK,KAC1BzB,KAAKmE,UAAW,IACfxC,MAAM,KACP3B,KAAKuD,eAAgB,IAIjB,kBACN,OAAO,IAAIxB,QAAQ,CAACC,EAASC,KAC3B,GAAyB,OAArBjC,KAAKyF,YAGP,OAFAzF,KAAKgF,kBAAmB,OACxBhD,IAIF,MAAM8H,EAAc,CAAEC,OAAO,EAAMC,MAAO,CAAEC,MAAO,KAAMC,OAAQ,MAEjErE,UAAUU,aAAa4D,aAAaL,GAAarI,KAAM2I,IAErD,OAAO9I,IAAI,OAASC,MAAO,mBAAoB,qCAE/CvB,KAAKoE,OAAQ,EAEbpE,KAAKyF,YAAc2E,EAEnBpK,KAAKgF,kBAAmB,EAEvBhF,KAAKqK,MAAMC,QAA6BC,UAAYvK,KAAKyF,YAE1DzD,MAECL,MAAOU,IAIR,OAFA,OAAOf,IAAI,OAASM,MAAO,mBAAoB,+BAAgCS,EAAG2B,KAAM3B,EAAGmI,SAEnFnI,EAAG2B,MACT,IAAK,gBAEHhE,KAAKiF,cAAe,EAGpBjF,KAAKsG,WAEL,MACF,IAAK,kBAEHtG,KAAKkF,kBAAmB,EAExB,MAGJjD,QAKN,mBACMjC,KAAKuD,cACPvD,KAAK0D,cAEL1D,KAAK8D,iBA9WT,yBADC,kB,0BADkB,EAAa,yBADjC,QACoB,WCrFqS,ICQtT,G,UAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,OAIa,I,yGCnBf,W,gECAA,IAAIhE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,OAAO,CAAEN,EAAY,SAAE,CAA4B,GAA1BA,EAAI0K,OAAOC,YAAkBvK,EAAG,YAAY,CAACqE,IAAI,MAAMhE,MAAM,CAAC,eAAeT,EAAI4K,UAAUlH,GAAG,CAAC,MAAQ,SAASmH,GAAQ,OAAO7K,EAAIyI,MAAM,QAASoC,OAAY7K,EAAI+E,MAAM/E,EAAI+E,MAAM,IAC7TlE,EAAkB,G,oCCatB,MAAMiK,EAAY,IAAM,gDAOxB,IAAqB,EAArB,cAAiC,OAAjC,c,oBAIU,KAAAJ,OAASK,EAAA,KAAO9J,QAAQC,SAAUyJ,YAEnC,UAAUK,EAAoBC,GAClChL,KAAKqK,MAAMY,IAAYC,UAAUH,EAAQC,GAGrC,UACL,OAAQhL,KAAKqK,MAAMY,IAAYE,YATjC,yBADC,kB,+BADkB,EAAG,yBALvB,eAAU,CACTC,WAAY,CACVP,gBAGiB,WCrB6S,I,wBCQ9T5H,EAAY,eACd,EACAnD,EACAc,GACA,EACA,KACA,WACA,MAIa,aAAAqC,E,2CCnBf,W,yCCAA,IAAInD,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,OAAO,CAACA,EAAG,eAAe,CAACK,MAAM,CAAC,MAAO,EAAK,MAAQ,gBAAgBL,EAAG,aAAa,CAACA,EAAG,mBAAmB,CAAEJ,EAAU,OAAEI,EAAG,MAAM,CAACE,YAAY,2BAA2B,CAACF,EAAG,KAAK,CAAEJ,EAAIsL,OAAOC,MAAY,OAAEnL,EAAG,KAAK,CAACE,YAAY,0BAA0B,CAACF,EAAG,IAAI,CAACE,YAAY,+BAA+BG,MAAM,CAAC,KAAO,OAAST,EAAIsL,OAAOC,QAAQ,CAACnL,EAAG,OAAO,CAACE,YAAY,+BAA+B,CAACN,EAAI4D,GAAG,aAAa5D,EAAI4D,GAAG,IAAI5D,EAAIoD,GAAGpD,EAAIsL,OAAOC,OAAO,SAASvL,EAAI+E,KAAM/E,EAAIsL,OAAOE,IAAU,OAAEpL,EAAG,KAAK,CAACE,YAAY,0BAA0B,CAACF,EAAG,IAAI,CAACE,YAAY,gCAAgC,CAACF,EAAG,OAAO,CAACE,YAAY,+BAA+B,CAACN,EAAI4D,GAAG,WAAW5D,EAAI4D,GAAG,IAAI5D,EAAIoD,GAAGpD,EAAIsL,OAAOE,KAAK,SAASxL,EAAI+E,KAAM/E,EAAIsL,OAAOC,MAAY,OAAEnL,EAAG,KAAK,CAACE,YAAY,0BAA0B,CAACF,EAAG,IAAI,CAACE,YAAY,+BAA+BG,MAAM,CAAC,KAAO,UAAYT,EAAIsL,OAAOG,QAAQ,CAACrL,EAAG,OAAO,CAACE,YAAY,+BAA+B,CAACN,EAAI4D,GAAG,aAAa5D,EAAI4D,GAAG,IAAI5D,EAAIoD,GAAGpD,EAAIsL,OAAOG,OAAO,SAASzL,EAAI+E,KAAK3E,EAAG,KAAK,CAACE,YAAY,0BAA0B,CAACF,EAAG,IAAI,CAACE,YAAY,gCAAgC,CAACF,EAAG,OAAO,CAACE,YAAY,+BAA+B,CAACN,EAAI4D,GAAG,eAAe5D,EAAI4D,GAAG,IAAI5D,EAAIoD,GAAGpD,EAAIsL,OAAOI,cAAc,KAAK1L,EAAIoD,GAAGpD,EAAIsL,OAAOK,cAAc,aAAa3L,EAAI+E,QAAQ,GAAG3E,EAAG,aAAa,CAACA,EAAG,eAAe,CAACJ,EAAI4D,GAAG,kBAAkBxD,EAAG,mBAAmB,CAACE,YAAY,6BAA6B,CAACF,EAAG,OAAO,CAACK,MAAM,CAAC,KAAO,iCAAiC,IAAI,GAAIT,EAAe,YAAEI,EAAG,aAAa,CAACA,EAAG,MAAM,CAACwL,YAAY,CAAC,aAAa,SAASnL,MAAM,CAAC,SAAWT,EAAI6L,gBAAgB,GAAG7L,EAAI+E,MAAM,IACpsDlE,EAAkB,G,oFC8DtB,IAAqB,EAArB,cAAuC,eAAO,SAA9C,c,oBACU,KAAAyK,OAAwB,KAExB,KAAAO,YAAkC,KAE1C,UACE,OAAIC,QAAQC,IAAI,OAAO9K,QAAQC,SAAU8K,WAAWtK,KAAM4J,IACxDrL,KAAKqL,OAASA,EAEdrL,KAAK4L,YAAc,IAAI,OAAY,CACjCI,QAAS,CACP,IAAI,OAAU,CACZC,QAAS,GAAGjM,KAAKqL,OAAOI,gBAAgBzL,KAAKqL,OAAOK,eACpDQ,MAAOlM,KAAKqL,OAAOc,cACnBC,WAAY,CACVC,KAAM,SACNC,IAAK,gBAMbC,QAAQC,MAAMxM,KAAK4L,iBAtBJ,EAAS,gBAN7B,eAAU,CACTR,WAAY,CACVqB,IAAA,OACAC,OAAA,SAGiB,WC/D+W,I,wBCQhYzJ,EAAY,eACd,EACAnD,EACAc,GACA,EACA,KACA,WACA,MAIa,aAAAqC,E,2CCnBf","file":"js/chunk-a22b4dd6.aa1a38a0.js","sourcesContent":["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!./ContactUs.vue?vue&type=style&index=0&id=cf4283fa&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"recaptcha\",class:{'recaptcha--visible': _vm.recaptchaVersion == 20}},[_c('div',{staticClass:\"g-recaptcha recaptcha__inner\",attrs:{\"id\":'recaptcha_' + _vm.id,\"data-sitekey\":_vm.siteKey,\"data-size\":_vm.recaptchaVersion == 20 ? '' : 'invisible',\"data-callback\":_vm.callbackFunctionName,\"data-expired-callback\":_vm.callbackFunctionName}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\n\r\nimport { Config, Logger, LogLevel } from \"../services\";\r\nimport { Utils } from \"../util\";\r\n\r\n@Component\r\nexport default class ReCaptcha extends Vue {\r\n private readonly id = Utils.GetGuid();\r\n\r\n private response: string | null = null;\r\n\r\n private responseWaiter: ((value?: string | PromiseLike | undefined) => void) | null = null;\r\n\r\n private siteKey = Config.Website.Settings!.ReCaptcha.ReCaptchaSiteKey;\r\n\r\n private recaptchaVersion = Config.Website.Settings!.ReCaptcha.ReCaptchaVersion;\r\n\r\n get callbackFunctionName() {\r\n return `_recaptcha_callback_${this.id}`;\r\n }\r\n\r\n mounted() {\r\n (window as any)[this.callbackFunctionName] = (response: string | null) => {\r\n Logger.Log(LogLevel.Debug, '[ReCaptcha]', 'Got response');\r\n\r\n this.response = response || null;\r\n\r\n if(this.responseWaiter !== null && this.response !== null) {\r\n this.responseWaiter(this.response);\r\n this.responseWaiter = null;\r\n }\r\n }\r\n\r\n this.loadLibrary().then(() => {\r\n Logger.Log(LogLevel.Info, '[ReCaptcha]', 'Loaded ReCaptcha');\r\n }).catch(() => {\r\n Logger.Log(LogLevel.Error, '[ReCaptcha]', 'Failed to load ReCaptcha');\r\n });\r\n\r\n Logger.Log(LogLevel.Info, '[ReCaptcha]', 'Registered ReCaptcha', this.id);\r\n }\r\n\r\n reset() {\r\n (window as any).grecaptcha.reset();\r\n }\r\n\r\n getResponse(): Promise {\r\n return new Promise((resolve, reject) => {\r\n if(this.response !== null && this.response.length > 0) {\r\n resolve(this.response);\r\n return;\r\n }\r\n\r\n this.responseWaiter = () => {\r\n Logger.Log(LogLevel.Debug, '[ReCaptcha]', 'Resolving response');\r\n resolve();\r\n };\r\n\r\n const win = window as any;\r\n\r\n try {\r\n win.grecaptcha.execute();\r\n } catch (ex) {\r\n Logger.Log(LogLevel.Error, '[ReCaptcha]', 'Error executing recaptcha', ex)\r\n win.grecaptcha.render(`recaptcha_${this.id}`);\r\n win.grecaptcha.execute();\r\n }\r\n });\r\n }\r\n\r\n loadLibrary(): Promise {\r\n return new Promise((resolve, reject) => {\r\n if((window as any).grecaptcha !== undefined) {\r\n Logger.Log(LogLevel.Debug, '[ReCaptcha]', 'ReCaptcha is already defined.');\r\n\r\n resolve(true);\r\n return;\r\n }\r\n \r\n const scr = document.createElement('script');\r\n\r\n (window as any).pl_recaptcha_loaded = () => {\r\n resolve(true);\r\n }\r\n\r\n scr.onerror = () => {\r\n reject();\r\n }\r\n\r\n scr.async = true;\r\n scr.defer = true;\r\n\r\n document.head.appendChild(scr);\r\n\r\n scr.src = 'https://www.google.com/recaptcha/api.js?onload=pl_recaptcha_loaded';\r\n });\r\n }\r\n}\r\n","import mod from \"-!../../cache-loader/dist/cjs.js??ref--14-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../ts-loader/index.js??ref--14-3!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./ReCaptcha.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../cache-loader/dist/cjs.js??ref--14-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../ts-loader/index.js??ref--14-3!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./ReCaptcha.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ReCaptcha.vue?vue&type=template&id=95eda1a8&scoped=true&\"\nimport script from \"./ReCaptcha.vue?vue&type=script&lang=ts&\"\nexport * from \"./ReCaptcha.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ReCaptcha.vue?vue&type=style&index=0&id=95eda1a8&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"95eda1a8\",\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:\"video-recorder-wrap\"},[_c('div',{staticClass:\"video-recorder__form-elem\"},[_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.def.Labels.Prompt)}}),(_vm.needsFallback || !_vm.isMobile)?_c('Button',{on:{\"click\":_vm.uploadVideo}},[_vm._v(_vm._s(_vm.def.Labels.Upload || _vm.def.Labels.Record))]):_c('Button',{on:{\"click\":_vm.showRecorder}},[_vm._v(_vm._s(_vm.def.Labels.Record))])],1),_c('portal',{attrs:{\"to\":\"overlays\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isActive && _vm.ready && !_vm.needsFallback),expression:\"isActive && ready && !needsFallback\"}],staticClass:\"video-recorder\"},[_c('div',{staticClass:\"video-recorder__viewport\"},[_c('div',{staticClass:\"video-recorder__viewport__overlay\"},[_c('span',{staticClass:\"video-recorder__time\",class:{'video-recorder__time--running-out': _vm.isRunningOutatime}},[_vm._v(_vm._s(_vm.formattedTime))])]),_c('video',{ref:\"preview\",staticClass:\"video-recorder__preview\",attrs:{\"autoplay\":\"\",\"muted\":\"\",\"playsinline\":\"\"},domProps:{\"muted\":true}})]),_c('div',{staticClass:\"video-recorder__controls\"},[_c('button',{staticClass:\"video-recorder__control video-recorder__control--text\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.doneRecording}},[_vm._v(\"Done\")]),_c('button',{staticClass:\"video-recorder__control video-recorder__control__start-stop\",class:{'recording': _vm.isRecording},attrs:{\"type\":\"button\"},on:{\"click\":_vm.toggleRecording}}),_c('button',{staticClass:\"video-recorder__control video-recorder__control--text\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.cancelRecording}},[_vm._v(\"Cancel\")])]),(_vm.needsPermissions)?_c('div',{staticClass:\"video-recorder__modal\"},[_c('div',{staticClass:\"video-recorder__modal__icon\"},[_c('svg',{staticClass:\"feather feather-video\",attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"#333\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}},[_c('polygon',{attrs:{\"points\":\"23 7 16 12 23 17 23 7\"}}),_c('rect',{attrs:{\"x\":\"1\",\"y\":\"5\",\"width\":\"15\",\"height\":\"14\",\"rx\":\"2\",\"ry\":\"2\"}})])]),_c('p',{staticClass:\"video-recorder__modal__message\"},[_vm._v(\" We need permission to use your camera & microphone to continue. \")]),_c('div',{staticClass:\"video-recorder__modal__buttons\"},[_c('button',{staticClass:\"video-recorder__modal__button video-recorder__modal__button--secondary\",on:{\"click\":_vm.cancelRecording}},[_vm._v(\"Cancel\")]),_c('button',{staticClass:\"video-recorder__modal__button\",on:{\"click\":_vm.initVideoStream}},[_vm._v(\"Allow\")])])]):_vm._e(),(_vm.permissionDenied)?_c('div',{staticClass:\"video-recorder__modal\"},[_c('div',{staticClass:\"video-recorder__modal__icon\"},[_c('svg',{staticClass:\"feather feather-video-off\",attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"#333\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}},[_c('path',{attrs:{\"d\":\"M16 16v1a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2m5.66 0H14a2 2 0 0 1 2 2v3.34l1 1L23 7v10\"}}),_c('line',{attrs:{\"x1\":\"1\",\"y1\":\"1\",\"x2\":\"23\",\"y2\":\"23\"}})])]),_c('p',{staticClass:\"video-recorder__modal__message\"},[_vm._v(\" Permission to access the camera & microphone was denied. \")]),_c('div',{staticClass:\"video-recorder__modal__buttons video-recorder__modal__buttons--centered\"},[_c('button',{staticClass:\"video-recorder__modal__button\",on:{\"click\":_vm.cancelRecording}},[_vm._v(\"Okay\")])])]):_vm._e(),(_vm.hasFatalError)?_c('div',{staticClass:\"video-recorder__modal\"},[_c('div',{staticClass:\"video-recorder__modal__icon\"},[_c('svg',{staticClass:\"feather feather-alert-triangle\",attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"#333\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}},[_c('path',{attrs:{\"d\":\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"}}),_c('line',{attrs:{\"x1\":\"12\",\"y1\":\"9\",\"x2\":\"12\",\"y2\":\"13\"}}),_c('line',{attrs:{\"x1\":\"12\",\"y1\":\"17\",\"x2\":\"12.01\",\"y2\":\"17\"}})])]),_c('p',{staticClass:\"video-recorder__modal__message\"},[_vm._v(\" An error occurred. \")]),_c('p',{staticClass:\"video-recorder__modal__message\"},[_vm._v(\" \"+_vm._s(_vm.fatalErrorMessage)+\" \")]),_c('div',{staticClass:\"video-recorder__modal__buttons video-recorder__modal__buttons--centered\"},[_c('button',{staticClass:\"video-recorder__modal__button\",on:{\"click\":_vm.cancelRecording}},[_vm._v(\"Okay\")])])]):_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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\n\r\nimport { Config, Logger, LogLevel } from \"../services\";\r\nimport { VideoRecorderField } from \"../types/Forms/FieldTypes\";\r\n\r\ninterface VideoCaptureConfig {\r\n codec: string;\r\n}\r\n\r\n@Component\r\nexport default class VideoRecorder extends Vue {\r\n @Prop()\r\n private readonly def!: VideoRecorderField;\r\n\r\n private isActive = false;\r\n\r\n private ready = false;\r\n\r\n private needsFallback = false;\r\n\r\n private get isMobile(): boolean {\r\n return /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);\r\n }\r\n\r\n private needsPermissions = false;\r\n\r\n private hasNoDevices = false;\r\n\r\n private permissionDenied = false;\r\n\r\n private hasFatalError = false;\r\n \r\n private fatalErrorMessage = '';\r\n\r\n private isRecording = false;\r\n\r\n private videoBlob: Blob | null = null;\r\n\r\n private outatimeThreshold: number | null = null;\r\n\r\n private captureConfig: VideoCaptureConfig | null = null;\r\n\r\n private currentTime = 0;\r\n\r\n private currentTimeInterval: number | null = null;\r\n\r\n private videoStream: MediaStream | null = null;\r\n\r\n private mediaRecorder: MediaRecorder | null = null;\r\n\r\n private capturedChunks: Blob[] = [];\r\n\r\n get formattedTime(): string {\r\n let mins: string | number = Math.floor(this.currentTime / 60);\r\n let secs: string | number = this.currentTime - (mins * 60);\r\n\r\n let totalMins: string | number = Math.floor(this.def.MaxRecordLength / 60);\r\n let totalSecs: string | number = this.def.MaxRecordLength - (totalMins * 60);\r\n\r\n if (secs < 10) secs = \"0\" + secs;\r\n if (totalSecs < 10) totalSecs = \"0\" + totalSecs;\r\n\r\n return mins + \":\" + secs + \" / \" + totalMins + \":\" + totalSecs;\r\n }\r\n\r\n get isRunningOutatime(): boolean {\r\n return this.currentTime >= this.def.MaxRecordLength * 0.75;\r\n }\r\n\r\n mounted() {\r\n\r\n if (/iPhone|iPad|iPod|Android/i.test(navigator.userAgent) === false) {\r\n Logger.Log(LogLevel.Debug, '[Video Recorder]', 'Falling back to upload on a non-mobile device.');\r\n\r\n this.fallback();\r\n return;\r\n }\r\n\r\n if ('MediaRecorder' in window && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {\r\n Logger.Log(LogLevel.Debug, '[Video Recorder]', 'MediaRecorder, enumerateDevices are supported');\r\n\r\n navigator.mediaDevices.enumerateDevices().then((availableDevices) => {\r\n\r\n if (availableDevices.some((device) => device.kind === 'videoinput')) {\r\n\r\n // Check that the permissions API is supported\r\n if('permissions' in navigator) {\r\n Logger.Log(LogLevel.Debug, '[Video Recorder]', 'Attempting to determine if camera permissions are granted');\r\n\r\n try {\r\n // Check to see if we have permission to use the camera\r\n navigator.permissions.query({ name: \"camera\" }).then(res => {\r\n if(res.state !== 'granted') {\r\n Logger.Log(LogLevel.Debug, '[Video Recorder]', 'Camera permissions not yet granted');\r\n \r\n // If the state is not granted, we need to ask for permissions\r\n this.ready = true;\r\n this.needsPermissions = true;\r\n } else {\r\n Logger.Log(LogLevel.Debug, '[Video Recorder]', 'Camera permissions granted');\r\n\r\n this.ready = true;\r\n }\r\n });\r\n } catch (ex) {\r\n Logger.Log(LogLevel.Warning, '[Video Recorder]', 'Failed to get camera permissions state', ex);\r\n\r\n // Error checking for permissions\r\n this.needsPermissions = true;\r\n }\r\n } else {\r\n Logger.Log(LogLevel.Debug, '[Video Recorder]', 'Permissions API not supported. Requesting permissions manually.');\r\n\r\n // The permissions API isn't supported\r\n this.needsPermissions = true;\r\n }\r\n\r\n } else {\r\n Logger.Log(LogLevel.Debug, '[Video Recorder]', 'No videoinput devices are available. Falling back to traditional methods.');\r\n this.fallback();\r\n }\r\n\r\n }).catch((err) => {\r\n Logger.Log(LogLevel.Error, '[Video Recorder]', 'Failed to enumerate media devices', err);\r\n\r\n this.fallback();\r\n });\r\n } else {\r\n Logger.Log(LogLevel.Debug, '[Video Recorder]', 'MediaRecorder is not supported, falling back to traditional upload mechanisms');\r\n\r\n this.fallback();\r\n }\r\n }\r\n\r\n private toggleRecording(): void {\r\n if (this.isRecording) {\r\n this.stopRecording();\r\n } else {\r\n this.startRecording();\r\n }\r\n }\r\n\r\n private initCaptureConfig(): void {\r\n const codecs = [\r\n \"video/mp4\",\r\n \"video/mpeg\",\r\n \"video/webm;codecs=h264\",\r\n \"video/webm\",\r\n \"video/webm;codecs=vp8\",\r\n \"video/webm;codecs=daala\"\r\n ];\r\n\r\n this.captureConfig = {\r\n codec: ''\r\n };\r\n\r\n for (var i = 0; i < codecs.length; i += 1) {\r\n if (MediaRecorder.isTypeSupported(codecs[i])) {\r\n this.captureConfig.codec = codecs[i];\r\n break;\r\n }\r\n }\r\n\r\n if (this.captureConfig.codec.length === 0) {\r\n throw new Error('Unable to find a suitable codec.');\r\n }\r\n\r\n Logger.Log(LogLevel.Debug, '[Video Recorder]', `Using codec ${codecs[i]}`)\r\n }\r\n\r\n private startRecording() {\r\n if (this.isRecording) return;\r\n\r\n this.isRecording = true;\r\n\r\n this.initVideoStream().then(() => {\r\n this.capturedChunks = [];\r\n\r\n Logger.Log(LogLevel.Debug, '[Video Recorder]', 'Start Recording');\r\n\r\n if (this.mediaRecorder === null) {\r\n\r\n if (this.captureConfig === null) {\r\n try {\r\n this.initCaptureConfig();\r\n } catch (ex) {\r\n Logger.Log(LogLevel.Error, '[Video Recorder]', 'Failed to initialise capture config.');\r\n \r\n this.fallback();\r\n\r\n return;\r\n }\r\n }\r\n\r\n this.mediaRecorder = new MediaRecorder(this.videoStream!, {\r\n mimeType: this.captureConfig!.codec\r\n });\r\n\r\n this.mediaRecorder.ondataavailable = (e: BlobEvent) => {\r\n this.capturedChunks.push(e.data);\r\n }\r\n\r\n this.mediaRecorder.onstop = () => {\r\n this.videoBlob = new Blob(this.capturedChunks, { type: this.captureConfig!.codec });\r\n\r\n this.isRecording = false;\r\n\r\n window.clearInterval(this.currentTimeInterval!);\r\n this.currentTime = 0;\r\n\r\n Logger.Log(LogLevel.Debug, '[Video Recorder]', 'Stopped recording');\r\n\r\n this.doneRecording();\r\n }\r\n\r\n Logger.Log(LogLevel.Debug, '[Video Recorder]', 'Initialised MediaRecorder', this.mediaRecorder);\r\n }\r\n\r\n this.currentTime = 0;\r\n\r\n this.mediaRecorder.start();\r\n\r\n this.currentTimeInterval = window.setInterval(() => {\r\n this.currentTime += 1;\r\n \r\n if (this.currentTime >= this.def.MaxRecordLength) {\r\n Logger.Log(LogLevel.Debug, '[Video Recorder]', 'Outatime 🔥 (stopping recording)');\r\n this.stopRecording();\r\n }\r\n }, 1000);\r\n });\r\n }\r\n\r\n private stopRecording(): void {\r\n this.mediaRecorder!.stop();\r\n }\r\n\r\n private doneRecording(): void {\r\n this.hideRecorder();\r\n\r\n this.$emit('done', this.videoBlob);\r\n }\r\n\r\n private cancelRecording(): void {\r\n if (this.isRecording) {\r\n this.stopRecording();\r\n }\r\n\r\n this.doneRecording();\r\n }\r\n\r\n private createFileInput(): HTMLInputElement {\r\n const fi = document.createElement('input');\r\n\r\n fi.type = 'file';\r\n fi.accept = 'video/mp4';\r\n\r\n fi.setAttribute('capture', 'environment');\r\n\r\n fi.style.display = 'none';\r\n\r\n return fi as HTMLInputElement;\r\n }\r\n\r\n private fallback(): void {\r\n this.ready = false;\r\n this.needsFallback = true;\r\n }\r\n\r\n private uploadVideo(): void {\r\n const fi = this.createFileInput();\r\n\r\n fi.onchange = () => {\r\n Logger.Log(LogLevel.Debug, '[Video Recorder]', 'File value changed', fi.files);\r\n\r\n if (fi.files!.length) {\r\n const file = fi.files![0];\r\n\r\n if(file.size > this.def.MaxFileSize) {\r\n alert(`The selected file excedes the maximum allowable file size of ${this.def.FormattedMaxFileSize}. Please select a different video to continue.`);\r\n } else {\r\n this.videoBlob = fi.files![0];\r\n\r\n this.doneRecording();\r\n }\r\n \r\n fi.remove();\r\n }\r\n };\r\n\r\n fi.onblur = () => {\r\n setTimeout(() => {\r\n \r\n Logger.Log(LogLevel.Debug, '[Video Recorder]', 'Removing file input node');\r\n\r\n fi.remove();\r\n }, 100);\r\n }\r\n\r\n document.body.appendChild(fi);\r\n\r\n fi.click();\r\n }\r\n\r\n private hideRecorder(): void {\r\n if (this.videoStream !== null) {\r\n this.videoStream!.getTracks().forEach(function(track) {\r\n track.stop();\r\n });\r\n\r\n this.videoStream = null;\r\n this.mediaRecorder = null;\r\n }\r\n\r\n this.isActive = false;\r\n }\r\n\r\n private showRecorder(): void {\r\n this.initVideoStream().then(() => {\r\n this.isActive = true;\r\n }).catch(() => {\r\n this.needsFallback = true;\r\n });\r\n }\r\n\r\n private initVideoStream(): Promise {\r\n return new Promise((resolve, reject) => {\r\n if (this.videoStream !== null) {\r\n this.needsPermissions = false;\r\n resolve();\r\n return;\r\n }\r\n\r\n const constraints = { audio: true, video: { width: 1280, height: 720 } }; \r\n\r\n navigator.mediaDevices.getUserMedia(constraints).then((mediaStream) => {\r\n\r\n Logger.Log(LogLevel.Debug, '[Video Recorder]', 'Successfully obtained MediaStream');\r\n\r\n this.ready = true;\r\n\r\n this.videoStream = mediaStream;\r\n\r\n this.needsPermissions = false;\r\n\r\n (this.$refs.preview as HTMLVideoElement).srcObject = this.videoStream;\r\n\r\n resolve();\r\n\r\n }).catch((ex) => {\r\n\r\n Logger.Log(LogLevel.Error, '[Video Recorder]', 'Failed to obtain MediaStream', ex.name, ex.message);\r\n\r\n switch (ex.name) {\r\n case \"NotFoundError\":\r\n\r\n this.hasNoDevices = true;\r\n\r\n // Fall back to requesting a normal upload\r\n this.fallback();\r\n\r\n break;\r\n case \"NotAllowedError\":\r\n\r\n this.permissionDenied = true;\r\n\r\n break;\r\n }\r\n\r\n reject();\r\n });\r\n });\r\n }\r\n\r\n requestRecording(): void {\r\n if (this.needsFallback) {\r\n this.uploadVideo();\r\n } else {\r\n this.showRecorder();\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../cache-loader/dist/cjs.js??ref--14-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../ts-loader/index.js??ref--14-3!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./VideoRecorder.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../cache-loader/dist/cjs.js??ref--14-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../ts-loader/index.js??ref--14-3!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./VideoRecorder.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VideoRecorder.vue?vue&type=template&id=52ca9bb4&scoped=true&\"\nimport script from \"./VideoRecorder.vue?vue&type=script&lang=ts&\"\nexport * from \"./VideoRecorder.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./VideoRecorder.vue?vue&type=style&index=0&id=52ca9bb4&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"52ca9bb4\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src/index.js??ref--6-oneOf-1-2!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./VideoRecorder.vue?vue&type=style&index=0&id=52ca9bb4&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"map\"},[(_vm.settings)?[(_vm.config.MapProvider == 2)?_c('MapBoxMap',{ref:\"map\",attrs:{\"map-settings\":_vm.settings},on:{\"moved\":function($event){return _vm.$emit('moved', $event)}}}):_vm._e()]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport { Coordinate, MapSettings } from \"../../types\";\r\nimport { Config } from \"../../services/Config\";\r\n\r\n\r\nconst MapBoxMap = () => import(\"./Providers/MapBoxMap.vue\");\r\n\r\n@Component({\r\n components: {\r\n MapBoxMap,\r\n },\r\n})\r\nexport default class Map extends Vue {\r\n @Prop()\r\n private readonly settings!: MapSettings;\r\n\r\n private config = Config.Website.Settings!.MapProvider;\r\n\r\n public SetCenter(center: Coordinate, zoom: number) {\r\n (this.$refs.map as any).SetCenter(center, zoom);\r\n }\r\n\r\n public GetZoom(): number {\r\n return (this.$refs.map as any).GetZoom();\r\n }\r\n}\r\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../ts-loader/index.js??ref--14-3!../../../cache-loader/dist/cjs.js??ref--0-0!../../../vue-loader/lib/index.js??vue-loader-options!./Map.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../ts-loader/index.js??ref--14-3!../../../cache-loader/dist/cjs.js??ref--0-0!../../../vue-loader/lib/index.js??vue-loader-options!./Map.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Map.vue?vue&type=template&id=5d1f1668&scoped=true&\"\nimport script from \"./Map.vue?vue&type=script&lang=ts&\"\nexport * from \"./Map.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Map.vue?vue&type=style&index=0&id=5d1f1668&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5d1f1668\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../cache-loader/dist/cjs.js??ref--0-0!../../../vue-loader/lib/index.js??vue-loader-options!./Map.vue?vue&type=style&index=0&id=5d1f1668&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Page',[_c('SiteMasthead',{attrs:{\"mini\":true,\"title\":\"Contact Us\"}}),_c('ContentRow',[_c('ContentContainer',[(_vm.office)?_c('div',{staticClass:\"office__contact-methods\"},[_c('ul',[(_vm.office.Phone.length)?_c('li',{staticClass:\"office__contact-method\"},[_c('a',{staticClass:\"office__contact-method__link\",attrs:{\"href\":'tel:' + _vm.office.Phone}},[_c('span',{staticClass:\"office__contact-method__key\"},[_vm._v(\"Phone: \")]),_vm._v(\" \"+_vm._s(_vm.office.Phone)+\" \")])]):_vm._e(),(_vm.office.Fax.length)?_c('li',{staticClass:\"office__contact-method\"},[_c('a',{staticClass:\"office__contact-method__link\"},[_c('span',{staticClass:\"office__contact-method__key\"},[_vm._v(\"Fax: \")]),_vm._v(\" \"+_vm._s(_vm.office.Fax)+\" \")])]):_vm._e(),(_vm.office.Phone.length)?_c('li',{staticClass:\"office__contact-method\"},[_c('a',{staticClass:\"office__contact-method__link\",attrs:{\"href\":'mailto:' + _vm.office.Email}},[_c('span',{staticClass:\"office__contact-method__key\"},[_vm._v(\"Email: \")]),_vm._v(\" \"+_vm._s(_vm.office.Email)+\" \")])]):_vm._e(),_c('li',{staticClass:\"office__contact-method\"},[_c('a',{staticClass:\"office__contact-method__link\"},[_c('span',{staticClass:\"office__contact-method__key\"},[_vm._v(\"Address: \")]),_vm._v(\" \"+_vm._s(_vm.office.AddressLine1)+\", \"+_vm._s(_vm.office.AddressLine2)+\" \")])])])]):_vm._e()])],1),_c('ContentRow',[_c('SectionTitle',[_vm._v(\"Get In Touch\")]),_c('ContentContainer',{staticClass:\"content-container--narrow\"},[_c('Form',{attrs:{\"type\":\"Generic.WebsiteContactForm\"}})],1)],1),(_vm.mapSettings)?_c('Deferrable',[_c('Map',{staticStyle:{\"max-height\":\"500px\"},attrs:{\"settings\":_vm.mapSettings}})],1):_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\n\n\n\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 { Component, Mixins } from 'vue-property-decorator';\nimport { Office, MapSettings, MapMarker } from 'client-website-ts-library/types';\nimport { API, Config } from 'client-website-ts-library/services';\nimport { Map } from 'client-website-ts-library/components';\nimport { View } from 'client-website-ts-library/plugins';\nimport Form from '@/components/Forms/Form.vue';\n\n@Component({\n components: {\n Map,\n Form,\n },\n})\nexport default class ContactUs extends Mixins(View) {\n private office: Office | null = null;\n\n private mapSettings: MapSettings | null = null;\n\n mounted() {\n API.Offices.Get(Config.Website.Settings!.WebsiteId).then((office) => {\n this.office = office;\n\n this.mapSettings = new MapSettings({\n Markers: [\n new MapMarker({\n Address: `${this.office.AddressLine1} ${this.office.AddressLine2}`,\n Title: this.office.FranchiseName,\n Coordinate: {\n Lat: -16.926770,\n Lon: 145.778760,\n },\n }),\n ],\n });\n\n console.debug(this.mapSettings);\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!./ContactUs.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!./ContactUs.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ContactUs.vue?vue&type=template&id=cf4283fa&scoped=true&\"\nimport script from \"./ContactUs.vue?vue&type=script&lang=ts&\"\nexport * from \"./ContactUs.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ContactUs.vue?vue&type=style&index=0&id=cf4283fa&scoped=true&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 \"cf4283fa\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src/index.js??ref--6-oneOf-1-2!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./ReCaptcha.vue?vue&type=style&index=0&id=95eda1a8&scoped=true&lang=css&\""],"sourceRoot":""}