{"version":3,"sources":["webpack:///./node_modules/client-website-ts-library/components/Map/Map.vue","webpack:///./node_modules/client-website-ts-library/components/Map/Map.vue?ca4b","webpack:///./node_modules/client-website-ts-library/components/Map/Map.vue?7741","webpack:///./node_modules/client-website-ts-library/components/Map/Map.vue?f68e","webpack:///./node_modules/client-website-ts-library/components/ReCaptcha.vue","webpack:///./node_modules/client-website-ts-library/components/ReCaptcha.vue?be59","webpack:///./node_modules/client-website-ts-library/components/ReCaptcha.vue?97c8","webpack:///./node_modules/client-website-ts-library/components/ReCaptcha.vue?0851","webpack:///./node_modules/client-website-ts-library/components/VideoRecorder.vue","webpack:///./node_modules/client-website-ts-library/components/VideoRecorder.vue?44ee","webpack:///./node_modules/client-website-ts-library/components/VideoRecorder.vue?5892","webpack:///./node_modules/client-website-ts-library/components/VideoRecorder.vue?7463","webpack:///./node_modules/client-website-ts-library/components/ReCaptcha.vue?7948","webpack:///./node_modules/client-website-ts-library/components/Map/Map.vue?8ab3","webpack:///./node_modules/client-website-ts-library/components/VideoRecorder.vue?1876","webpack:///./node_modules/client-website-ts-library/components/MultiSelect.vue?1eb5","webpack:///./node_modules/client-website-ts-library/components/MultiSelect.vue","webpack:///./node_modules/client-website-ts-library/components/MultiSelect.vue?cb18","webpack:///./node_modules/client-website-ts-library/components/MultiSelect.vue?7010","webpack:///./node_modules/client-website-ts-library/components/MultiSelect.vue?cfde"],"names":["render","_vm","this","_c","_self","_setupProxy","staticClass","settings","config","MapProvider","ref","attrs","on","$event","$emit","_e","staticRenderFns","MapBoxMap","Map","Vue","constructor","Config","Website","Settings","SetCenter","center","zoom","$refs","map","GetZoom","__decorate","Prop","Component","components","component","class","recaptchaVersion","id","siteKey","callbackFunctionName","ReCaptcha","Utils","GetGuid","response","responseWaiter","ReCaptchaSiteKey","ReCaptchaVersion","mounted","window","Logger","Log","LogLevel","Debug","loadLibrary","then","Info","catch","Error","reset","grecaptcha","getResponse","Promise","resolve","reject","length","win","execute","ex","undefined","scr","document","createElement","pl_recaptcha_loaded","onerror","async","defer","head","appendChild","src","domProps","_s","def","Labels","Prompt","needsFallback","isMobile","uploadVideo","_v","Upload","Record","showRecorder","directives","name","rawName","value","isActive","ready","expression","isRunningOutatime","formattedTime","doneRecording","isRecording","toggleRecording","cancelRecording","needsPermissions","initVideoStream","permissionDenied","hasFatalError","fatalErrorMessage","VideoRecorder","hasNoDevices","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","initCaptureConfig","codecs","codec","i","MediaRecorder","isTypeSupported","mimeType","ondataavailable","e","push","data","onstop","Blob","type","clearInterval","start","setInterval","stop","hideRecorder","createFileInput","fi","accept","setAttribute","style","display","onchange","files","file","size","MaxFileSize","alert","FormattedMaxFileSize","remove","onblur","setTimeout","body","click","getTracks","forEach","track","constraints","audio","video","width","height","getUserMedia","mediaStream","preview","srcObject","message","requestRecording","focused","background","focusBg","itemBorderRad","defocus","_l","previewItems","item","key","Value","Label","removeItem","selectedValue","previewCount","search","searchPlaceholder","updateSearch","gotFocus","target","composing","searchResults","result","Option","Selected","select","noResults","MultiSelect","requestAnimationFrame","results","options","loweredSearch","toLowerCase","filter","itm","indexOf","r","s","enableCustom","customLabelPrefix","customValuePrefix","option","v","idx","findIndex","splice","setValues","opt","slice","required","default"],"mappings":"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","file":"js/chunk-59dcb3a5.722f0f6b.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;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)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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--15-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../ts-loader/index.js??ref--15-3!../../../cache-loader/dist/cjs.js??ref--1-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--15-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../ts-loader/index.js??ref--15-3!../../../cache-loader/dist/cjs.js??ref--1-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&prod&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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;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}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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--15-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../ts-loader/index.js??ref--15-3!../../cache-loader/dist/cjs.js??ref--1-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--15-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../ts-loader/index.js??ref--15-3!../../cache-loader/dist/cjs.js??ref--1-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&prod&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 render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;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)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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--15-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../ts-loader/index.js??ref--15-3!../../cache-loader/dist/cjs.js??ref--1-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--15-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../ts-loader/index.js??ref--15-3!../../cache-loader/dist/cjs.js??ref--1-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&prod&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--7-oneOf-1-0!../../css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src/index.js??ref--7-oneOf-1-2!../../cache-loader/dist/cjs.js??ref--1-0!../../vue-loader/lib/index.js??vue-loader-options!./ReCaptcha.vue?vue&type=style&index=0&id=95eda1a8&prod&scoped=true&lang=css&\"","export * from \"-!../../../mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../cache-loader/dist/cjs.js??ref--1-0!../../../vue-loader/lib/index.js??vue-loader-options!./Map.vue?vue&type=style&index=0&id=5d1f1668&prod&scoped=true&lang=css&\"","export * from \"-!../../mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src/index.js??ref--7-oneOf-1-2!../../cache-loader/dist/cjs.js??ref--1-0!../../vue-loader/lib/index.js??vue-loader-options!./VideoRecorder.vue?vue&type=style&index=0&id=52ca9bb4&prod&scoped=true&lang=css&\"","export * from \"-!../../mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src/index.js??ref--7-oneOf-1-2!../../cache-loader/dist/cjs.js??ref--1-0!../../vue-loader/lib/index.js??vue-loader-options!./MultiSelect.vue?vue&type=style&index=0&id=396af627&prod&scoped=true&lang=css&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"multi-select\",class:{'multi-select--focused': _vm.focused},style:({\n '--ms-bg': _vm.background,\n '--focus-bg': _vm.focusBg,\n '--item-border-rad': _vm.itemBorderRad,\n})},[_c('div',{staticClass:\"multi-select__abyss\",on:{\"click\":_vm.defocus}}),_c('div',{staticClass:\"multi-select__input-wrapper\"},[_c('div',{staticClass:\"multi-select__values\"},[_vm._l((_vm.previewItems),function(item){return _c('div',{key:item.Value,staticClass:\"multi-select__value\"},[_c('span',{staticClass:\"multi-select__value__label\"},[_vm._v(_vm._s(item.Label))]),_c('button',{staticClass:\"multi-select__value__remove\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.removeItem(item.Value)}}},[_c('Icon',{attrs:{\"icon\":\"close-button\",\"colour\":\"white\"}})],1)])}),(_vm.selectedValue.length + 1 > _vm.previewCount)?_c('div',{staticClass:\"multi-select__value\"},[_c('span',{staticClass:\"multi-select__value__label\"},[_vm._v(_vm._s(_vm.selectedValue.length + 1 - _vm.previewCount)+\" more\")])]):_vm._e()],2),_c('div',{staticClass:\"multi-select__input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.search),expression:\"search\"}],staticClass:\"multi-select__input\",attrs:{\"type\":\"text\",\"placeholder\":_vm.searchPlaceholder},domProps:{\"value\":(_vm.search)},on:{\"keyup\":_vm.updateSearch,\"focus\":_vm.gotFocus,\"input\":function($event){if($event.target.composing)return;_vm.search=$event.target.value}}})])]),_c('div',{staticClass:\"multi-select__dropdown\"},[(_vm.searchResults.length)?_c('ul',{staticClass:\"multi-select__dropdown__results\"},_vm._l((_vm.searchResults),function(result){return _c('li',{key:result.Option.Value,staticClass:\"multi-select__dropdown__result\",class:{'multi-select__dropdown__result--selected': result.Selected},on:{\"click\":function($event){return _vm.select(result)}}},[_vm._v(\" \"+_vm._s(result.Option.Label)+\" \")])}),0):_c('div',{staticClass:\"multi-select__dropdown__no-results\"},[_vm._v(\" \"+_vm._s(_vm.noResults)+\" \")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\n\r\ninterface MultiSelectOption {\r\n Value: string;\r\n Label: string;\r\n}\r\n\r\ninterface MultiSelectResult {\r\n Option: MultiSelectOption;\r\n Selected: boolean;\r\n}\r\n\r\nexport {\r\n MultiSelectOption\r\n}\r\n\r\n@Component\r\nexport default class MultiSelect extends Vue {\r\n @Prop({ required: true })\r\n private readonly options!: MultiSelectOption[];\r\n\r\n @Prop({ default: false })\r\n private readonly enableCustom!: boolean;\r\n\r\n @Prop({ default: 'Search for ' })\r\n private readonly customLabelPrefix!: string;\r\n\r\n @Prop({ default: 'search:' })\r\n private readonly customValuePrefix!: string;\r\n\r\n @Prop({ default: 5 })\r\n private readonly previewCount!: number;\r\n\r\n @Prop({ default: 'Search' })\r\n private readonly searchPlaceholder!: string;\r\n\r\n @Prop({ default: 'No results found' })\r\n private readonly noResults!: string;\r\n\r\n @Prop({ default: 'transparent' })\r\n private readonly background!: string;\r\n\r\n @Prop({ default: '#fff' })\r\n private readonly focusBg!: string;\r\n\r\n @Prop({ default: '0.25em' })\r\n private readonly itemBorderRad!: string;\r\n\r\n private focused = false;\r\n\r\n private selectedValue: MultiSelectOption[] = [];\r\n\r\n private search = '';\r\n\r\n private searchResults: MultiSelectResult[] = [];\r\n\r\n gotFocus() {\r\n this.focused = true;\r\n this.updateSearch();\r\n }\r\n\r\n defocus() {\r\n requestAnimationFrame(() => {\r\n this.focused = false;\r\n });\r\n }\r\n\r\n updateSearch() {\r\n let results: MultiSelectOption[];\r\n\r\n if (this.search.length === 0) {\r\n results = this.options;\r\n } else {\r\n const loweredSearch = this.search.toLowerCase();\r\n\r\n results = this.options.filter((itm) => itm.Label.toLowerCase().indexOf(loweredSearch) !== -1);\r\n }\r\n\r\n this.searchResults = results\r\n .map((r) => ({ Option: r, Selected: this.selectedValue.some((s) => s.Value === r.Value) }));\r\n\r\n if (this.enableCustom) {\r\n this.searchResults.push({\r\n Option: {\r\n Label: `${this.customLabelPrefix}${this.search}`,\r\n Value: `${this.customValuePrefix}${this.search}`,\r\n },\r\n Selected: false,\r\n });\r\n }\r\n }\r\n\r\n select(option: MultiSelectResult) {\r\n if (!this.selectedValue.some((v) => v.Value === option.Option.Value)) {\r\n this.selectedValue.push(option.Option);\r\n\r\n this.search = '';\r\n\r\n this.updateSearch();\r\n\r\n this.$emit('updated', this.selectedValue);\r\n } else {\r\n this.removeItem(option.Option.Value);\r\n }\r\n }\r\n\r\n removeItem(value: string) {\r\n const idx = this.selectedValue.findIndex((itm) => itm.Value === value);\r\n\r\n if(idx !== -1) {\r\n this.selectedValue.splice(idx, 1);\r\n\r\n this.updateSearch();\r\n\r\n this.$emit('updated', this.selectedValue);\r\n }\r\n }\r\n\r\n public setValues(value: string[]): void {\r\n this.selectedValue = this.options.filter((opt) => value.indexOf(opt.Value) !== -1);\r\n }\r\n\r\n get previewItems(): MultiSelectOption[] {\r\n return this.selectedValue.slice(0, this.previewCount - 1);\r\n }\r\n}\r\n","import mod from \"-!../../cache-loader/dist/cjs.js??ref--15-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../ts-loader/index.js??ref--15-3!../../cache-loader/dist/cjs.js??ref--1-0!../../vue-loader/lib/index.js??vue-loader-options!./MultiSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../cache-loader/dist/cjs.js??ref--15-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../ts-loader/index.js??ref--15-3!../../cache-loader/dist/cjs.js??ref--1-0!../../vue-loader/lib/index.js??vue-loader-options!./MultiSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MultiSelect.vue?vue&type=template&id=396af627&scoped=true&\"\nimport script from \"./MultiSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./MultiSelect.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MultiSelect.vue?vue&type=style&index=0&id=396af627&prod&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 \"396af627\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}