platypush/platypush/backend/http/webapp/dist/static/js/6739.14f222c1.js.map

1 line
12 KiB
Plaintext

{"version":3,"file":"static/js/6739.14f222c1.js","mappings":"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","sources":["webpack://platypush/./src/components/panels/CameraAndroidIpcam/Index.vue","webpack://platypush/./src/components/panels/CameraAndroidIpcam/Index.vue?3624"],"sourcesContent":["<template>\n <div class=\"camera\">\n <Loading v-if=\"loading\" />\n\n <div class=\"camera-selector\">\n <div class=\"left\">\n <label>\n <select ref=\"cameraSelector\" @change=\"onCameraSelected\">\n <option selected disabled v-if=\"!Object.keys(cameras).length\">-- No cameras available</option>\n <option v-for=\"name in Object.keys(cameras)\" :key=\"name\" :value=\"name\" v-text=\"name\" />\n </select>\n </label>\n </div>\n\n <div class=\"right\">\n <button type=\"button\" @click=\"updateCameraStatus\" :disabled=\"loading\">\n <i class=\"fas fa-sync-alt\" title=\"Refresh cameras\" />\n </button>\n </div>\n </div>\n\n <div class=\"camera-container\">\n <div class=\"frame-container\" ref=\"frameContainer\">\n <div class=\"no-frame\" v-if=\"!streaming && !capturing && !captured\">The camera is not active</div>\n <img class=\"frame\" ref=\"frame\" alt=\"\" src=\"\">\n </div>\n\n <div class=\"controls\">\n <div class=\"left\">\n <button type=\"button\" @click=\"startStreaming\" :disabled=\"capturing || loading\" v-if=\"!streaming\">\n <i class=\"fa fa-play\" title=\"Start video\" />\n </button>\n\n <button type=\"button\" @click=\"stopStreaming\" :disabled=\"capturing || loading\" v-else>\n <i class=\"fa fa-stop\" title=\"Stop video\" />\n </button>\n\n <button type=\"button\" @click=\"capture\" :disabled=\"streaming || capturing || loading\">\n <i class=\"fas fa-camera\" title=\"Take a picture\" />\n </button>\n </div>\n\n <div class=\"right\">\n <button type=\"button\" @click=\"flipCamera\" :disabled=\"loading\">\n <i class=\"fas fa-retweet\" title=\"Flip camera\" />\n </button>\n\n <button type=\"button\" @click=\"recording = true\" v-if=\"!recording\" :disabled=\"loading\">\n <i class=\"fa fa-volume-mute\" title=\"Start audio\" />\n </button>\n\n <button type=\"button\" @click=\"recording = false\" v-else :disabled=\"loading\">\n <i class=\"fa fa-volume-up\" title=\"Stop audio\" />\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"sound-container\">\n <audio autoplay preload=\"none\" ref=\"player\" v-if=\"recording\">\n <source :src=\"cameras[selectedCamera].audio_url\" type=\"audio/x-wav;codec=pcm\">\n Your browser does not support audio elements\n </audio>\n </div>\n </div>\n</template>\n\n<script>\nimport Utils from \"@/Utils\";\nimport Loading from \"@/components/Loading\";\n\nexport default {\n name: \"CameraAndroidIpcam\",\n components: {Loading},\n mixins: [Utils],\n\n data() {\n return {\n loading: false,\n streaming: false,\n capturing: false,\n recording: false,\n captured: false,\n cameras: {},\n selectedCamera: undefined,\n }\n },\n\n computed: {\n config() {\n return this.$root.config['camera.android.ipcam']\n },\n },\n\n methods: {\n startStreaming() {\n if (this.streaming)\n return\n\n const cam = this.cameras[this.selectedCamera]\n this.streaming = true\n this.capturing = false\n this.captured = false\n this.$refs.frame.setAttribute('src', cam.stream_url)\n },\n\n stopStreaming() {\n if (!this.streaming)\n return\n\n this.streaming = false\n this.capturing = false\n this.$refs.frame.removeAttribute('src')\n },\n\n capture() {\n if (this.capturing)\n return\n\n const cam = this.cameras[this.selectedCamera]\n this.streaming = false\n this.capturing = true\n this.captured = true\n this.$refs.frame.setAttribute('src', cam.image_url + '?t=' + (new Date()).getTime())\n },\n\n onFrameLoaded() {\n if (this.capturing)\n this.capturing = false\n },\n\n onCameraSelected(event) {\n this.selectedCamera = event.target.value\n },\n\n async flipCamera() {\n const cam = this.cameras[this.selectedCamera]\n this.loading = true\n\n try {\n const value = !cam.ffc\n await this.request('camera.android.ipcam.set_front_facing_camera', {\n activate: value, camera: cam.name\n })\n\n this.cameras[this.selectedCamera].ffc = value\n } finally {\n this.loading = false\n }\n },\n\n async updateCameraStatus() {\n this.loading = true\n\n try {\n const cameras = await this.request('camera.android.ipcam.status')\n this.cameras = cameras.reduce((cameras, cam) => {\n for (const attr of ['stream_url', 'image_url', 'audio_url']) {\n if (cam[attr].startsWith('https://')) {\n cam[attr] = cam[attr].replace('https://', 'http://')\n }\n\n if (cam.name in this.config.cameras && this.config.cameras[cam.name].username) {\n cam[attr] = 'http://' + this.config.cameras[cam.name].username + ':' +\n this.config.cameras[cam.name].password + '@' + cam[attr].substr(7)\n }\n }\n\n cameras[cam.name] = cam\n return cameras\n }, {})\n\n if (cameras.length)\n this.selectedCamera = cameras[0].name\n\n } finally {\n this.loading = false\n }\n },\n },\n\n mounted() {\n this.$refs.frame.addEventListener('load', this.onFrameLoaded)\n this.updateCameraStatus()\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"../Camera/common\";\n\n$controls-height: 3.5em;\n\n.camera {\n .camera-selector {\n width: 100%;\n height: $controls-height;\n margin-top: -3em;\n box-shadow: $border-shadow-bottom;\n display: flex;\n align-items: center;\n\n .left,\n .right {\n display: flex;\n }\n\n .left {\n width: 90%;\n }\n\n .right {\n width: 10%;\n justify-content: right;\n }\n\n label {\n width: 100%;\n padding-left: 1em;\n select {\n width: 100%;\n }\n }\n\n button {\n background: none;\n border: none;\n &:hover {\n color: $default-hover-fg;\n }\n }\n }\n\n .camera-container {\n margin-top: 2em;\n min-width: 640px;\n min-height: calc(480px + #{$controls-height});\n\n .frame-container {\n min-width: 640px;\n min-height: 480px;\n }\n\n .controls {\n height: $controls-height;\n }\n }\n}\n\n//.camera {\n// min-height: 90%;\n// overflow: auto;\n// display: flex;\n// flex-direction: column;\n// align-items: center;\n//\n// .camera-container {\n// min-width: 640px;\n// min-height: 480px;\n// position: relative;\n// background: black;\n// margin-bottom: 1em;\n//\n// .frame, .no-frame {\n// position: absolute;\n// top: 0;\n// width: 100%;\n// height: 100%;\n// }\n//\n// .frame {\n// z-index: 1;\n// }\n//\n// .no-frame {\n// display: flex;\n// background: rgba(0, 0, 0, 0.1);\n// color: white;\n// align-items: center;\n// justify-content: center;\n// z-index: 2;\n// }\n// }\n//}\n</style>\n","import { render } from \"./Index.vue?vue&type=template&id=a0c26180&scoped=true\"\nimport script from \"./Index.vue?vue&type=script&lang=js\"\nexport * from \"./Index.vue?vue&type=script&lang=js\"\n\nimport \"./Index.vue?vue&type=style&index=0&id=a0c26180&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a0c26180\"]])\n\nexport default __exports__"],"names":["class","selected","disabled","title","ref","alt","src","autoplay","preload","loading","onCameraSelected","Object","keys","cameras","length","name","key","value","type","updateCameraStatus","streaming","capturing","captured","stopStreaming","startStreaming","capture","flipCamera","recording","selectedCamera","audio_url","components","Loading","mixins","Utils","data","undefined","computed","config","this","$root","methods","cam","$refs","frame","setAttribute","stream_url","removeAttribute","image_url","Date","getTime","onFrameLoaded","event","target","async","ffc","request","activate","camera","reduce","attr","startsWith","replace","username","password","substr","mounted","addEventListener","__exports__","render"],"sourceRoot":""}