{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///jslib-html5-camera-photo.min.js","webpack:///webpack/bootstrap 45f91450196214fb6814","webpack:///./src/lib/MediaServices/constants.js","webpack:///./src/lib/index.js","webpack:///./src/lib/MediaServices/index.js","webpack:///./src/lib/MediaServices/helper.js","webpack:///./src/lib/constants.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","_defineProperty","obj","key","value","writable","SUPPORTED_FACING_MODES","FACING_MODES","SUPPORTED_IMAGE_TYPES","IMAGE_TYPES","FORMAT_TYPES","MINIMUM_CONSTRAINTS","_FORMAT_TYPES","USER","ENVIRONMENT","PNG","JPG","audio","video","_classCallCheck","instance","Constructor","TypeError","__WEBPACK_IMPORTED_MODULE_0__MediaServices__","__WEBPACK_IMPORTED_MODULE_1__constants__","_createClass","defineProperties","target","props","length","descriptor","protoProps","staticProps","DEFAULT_IMAGE_TYPE","MediaServices","CameraPhoto","videoElement","stream","numberOfMaxResolutionTry","settings","inputVideoDeviceInfos","windowURL","getWindowURL","mediaDevices","getNavigatorMediaDevices","idealFacingMode","idealResolution","_this","Promise","resolve","reject","constraints","getIdealConstraints","getUserMedia","then","_gotStream","_getInputVideoDeviceInfosPromise","catch","error","_this2","getMaxResolutionConstraints","_getStreamDevice","setTimeout","_getStreamDeviceMaxResolution","srcObject","videoSrc","createObjectURL","src","tracks","getTracks","getSettings","_this3","enumerateDevices","devices","forEach","device","kind","push","err","_setSettings","_setVideoSrc","_this4","stopCamera","_this5","arguments","undefined","userConfig","config","sizeFactor","DEFAULT_SIZE_FACTOR","imageType","imageCompression","DEFAULT_IMAGE_COMPRESSION","isImageMirror","DEFAULT_IMAGE_MIRROR","getDataUri","_this6","track","stop","Error","__WEBPACK_IMPORTED_MODULE_0__helper__","videoWidth","videoHeight","_getImageSize","getImageSize","imageWidth","imageHeight","canvas","document","createElement","width","height","context","getContext","setTransform","drawImage","window","URL","webkitURL","mozURL","msURL","NMDevice","isNewAPI","navigator","isOldAPI","mozGetUserMedia","webkitGetUserMedia","NMDeviceOld","polyfillGetUserMedia","constraint","assign","getSupportedConstraints","facingMode","idealConstraints","isMinimumConstraints","supports","includes","console","VIDEO_ADVANCED_CONSTRANTS","min","ideal","advanced","slice","_validateImgParam","join","_getValidImgParam","imgParam","e","parseFloat","toDataURL","_isEmptyObject","_typeof","__WEBPACK_IMPORTED_MODULE_0__constants__","Symbol","iterator","constructor"],"mappings":"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","file":"jslib-html5-camera-photo.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"JslibHtml5CameraPhoto\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"JslibHtml5CameraPhoto\"] = factory();\n\telse\n\t\troot[\"JslibHtml5CameraPhoto\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"JslibHtml5CameraPhoto\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"JslibHtml5CameraPhoto\"] = factory();\n\telse\n\t\troot[\"JslibHtml5CameraPhoto\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 1);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return SUPPORTED_FACING_MODES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return FACING_MODES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return SUPPORTED_IMAGE_TYPES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return IMAGE_TYPES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return FORMAT_TYPES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return MINIMUM_CONSTRAINTS; });\nvar _FORMAT_TYPES;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// camera constants\nvar USER = 'user';\nvar ENVIRONMENT = 'environment';\n\nvar SUPPORTED_FACING_MODES = [USER, ENVIRONMENT];\n\nvar FACING_MODES = {\n 'USER': USER,\n 'ENVIRONMENT': ENVIRONMENT\n};\n\n// Image constants\nvar PNG = 'png';\nvar JPG = 'jpg';\n\nvar SUPPORTED_IMAGE_TYPES = [JPG, PNG];\n\nvar IMAGE_TYPES = {\n 'PNG': PNG,\n 'JPG': JPG\n};\n\nvar FORMAT_TYPES = (_FORMAT_TYPES = {}, _defineProperty(_FORMAT_TYPES, JPG, 'image/jpeg'), _defineProperty(_FORMAT_TYPES, PNG, 'image/png'), _FORMAT_TYPES);\n\nvar MINIMUM_CONSTRAINTS = {\n audio: false,\n video: true\n};\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FACING_MODES\", function() { return FACING_MODES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IMAGE_TYPES\", function() { return IMAGE_TYPES; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__MediaServices__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(4);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\n\nvar DEFAULT_IMAGE_TYPE = __WEBPACK_IMPORTED_MODULE_0__MediaServices__[\"a\" /* default */].IMAGE_TYPES.PNG;\n\nvar CameraPhoto = function () {\n function CameraPhoto(videoElement) {\n _classCallCheck(this, CameraPhoto);\n\n this.videoElement = videoElement;\n this.stream = null;\n this.numberOfMaxResolutionTry = 1;\n this.settings = null;\n this.inputVideoDeviceInfos = [];\n\n // Set the right object depending on the browser.\n this.windowURL = __WEBPACK_IMPORTED_MODULE_0__MediaServices__[\"a\" /* default */].getWindowURL();\n this.mediaDevices = __WEBPACK_IMPORTED_MODULE_0__MediaServices__[\"a\" /* default */].getNavigatorMediaDevices();\n }\n\n _createClass(CameraPhoto, [{\n key: '_getStreamDevice',\n value: function _getStreamDevice(idealFacingMode, idealResolution) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n var constraints = __WEBPACK_IMPORTED_MODULE_0__MediaServices__[\"a\" /* default */].getIdealConstraints(idealFacingMode, idealResolution);\n\n _this.mediaDevices.getUserMedia(constraints).then(function (stream) {\n _this._gotStream(stream);\n _this._getInputVideoDeviceInfosPromise().then(function (inputVideoDeviceInfos) {\n _this.inputVideoDeviceInfos = inputVideoDeviceInfos;\n }).catch(function () {}).then(function () {\n resolve(stream);\n });\n }).catch(function (error) {\n // let {name, constraint, message} = error;\n // window.alert(name + ' ' + constraint + ' ' + message);\n reject(error);\n });\n });\n }\n }, {\n key: '_getStreamDeviceMaxResolution',\n value: function _getStreamDeviceMaxResolution(idealFacingMode) {\n var _this2 = this;\n\n var constraints = __WEBPACK_IMPORTED_MODULE_0__MediaServices__[\"a\" /* default */].getMaxResolutionConstraints(idealFacingMode, this.numberOfMaxResolutionTry);\n\n // all the trying is done...\n if (constraints == null) {\n var idealResolution = {};\n return this._getStreamDevice(idealFacingMode, idealResolution);\n }\n\n return new Promise(function (resolve, reject) {\n _this2.mediaDevices.getUserMedia(constraints).then(function (stream) {\n _this2._gotStream(stream);\n _this2._getInputVideoDeviceInfosPromise().then(function (inputVideoDeviceInfos) {\n _this2.inputVideoDeviceInfos = inputVideoDeviceInfos;\n }).catch(function () {}).then(function () {\n resolve(stream);\n });\n }).catch(function (error) {\n // let {name, constraint, message} = error;\n // console.log(name + ' ' + constraint + ' ' + message);\n // retry...\n setTimeout(function () {\n _this2.numberOfMaxResolutionTry += 1;\n _this2._getStreamDeviceMaxResolution(idealFacingMode).catch(function () {\n reject(error);\n });\n }, 20);\n });\n });\n }\n }, {\n key: '_setVideoSrc',\n value: function _setVideoSrc(stream) {\n if ('srcObject' in this.videoElement) {\n this.videoElement.srcObject = stream;\n } else {\n // using URL.createObjectURL() as fallback for old browsers\n var videoSrc = this.windowURL.createObjectURL(stream);\n this.videoElement.src = videoSrc;\n }\n }\n }, {\n key: '_setSettings',\n value: function _setSettings(stream) {\n // default setting is null\n this.settings = null;\n var tracks = stream && stream.getTracks ? stream.getTracks() : [];\n\n if (tracks.length > 0 && tracks[0].getSettings) {\n this.settings = tracks[0].getSettings();\n }\n }\n }, {\n key: '_getInputVideoDeviceInfosPromise',\n value: function _getInputVideoDeviceInfosPromise() {\n var _this3 = this;\n\n return new Promise(function (resolve, reject) {\n // only make shure the camera is sarted\n\n var inputVideoDeviceInfos = [];\n _this3.mediaDevices.enumerateDevices().then(function (devices) {\n devices.forEach(function (device) {\n if (device.kind === 'videoinput') {\n inputVideoDeviceInfos.push(device);\n }\n });\n resolve(inputVideoDeviceInfos);\n }).catch(function (err) {\n reject(err);\n });\n });\n }\n }, {\n key: '_gotStream',\n value: function _gotStream(stream) {\n this.stream = stream;\n this._setSettings(stream);\n this._setVideoSrc(stream);\n }\n }, {\n key: 'getCameraSettings',\n value: function getCameraSettings() {\n return this.settings;\n }\n }, {\n key: 'getInputVideoDeviceInfos',\n value: function getInputVideoDeviceInfos() {\n return this.inputVideoDeviceInfos;\n }\n }, {\n key: 'startCamera',\n value: function startCamera(idealFacingMode, idealResolution) {\n var _this4 = this;\n\n // stop the stream before playing it.\n return this.stopCamera().then(function () {}).catch(function () {})\n // Always called (when the promise is done)\n .then(function () {\n return _this4._getStreamDevice(idealFacingMode, idealResolution);\n });\n }\n }, {\n key: 'startCameraMaxResolution',\n value: function startCameraMaxResolution() {\n var _this5 = this;\n\n var idealFacingMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n // stop the stream before playing it.\n return this.stopCamera().then(function () {}).catch(function () {})\n // Always called (when the promise is done)\n .then(function () {\n return _this5._getStreamDeviceMaxResolution(idealFacingMode);\n });\n }\n }, {\n key: 'getDataUri',\n value: function getDataUri(userConfig) {\n var config = {\n sizeFactor: userConfig.sizeFactor === undefined ? __WEBPACK_IMPORTED_MODULE_1__constants__[\"c\" /* DEFAULT_SIZE_FACTOR */] : userConfig.sizeFactor,\n imageType: userConfig.imageType === undefined ? DEFAULT_IMAGE_TYPE : userConfig.imageType,\n imageCompression: userConfig.imageCompression === undefined ? __WEBPACK_IMPORTED_MODULE_1__constants__[\"a\" /* DEFAULT_IMAGE_COMPRESSION */] : userConfig.imageCompression,\n isImageMirror: userConfig.isImageMirror === undefined ? __WEBPACK_IMPORTED_MODULE_1__constants__[\"b\" /* DEFAULT_IMAGE_MIRROR */] : userConfig.isImageMirror\n };\n\n var dataUri = __WEBPACK_IMPORTED_MODULE_0__MediaServices__[\"a\" /* default */].getDataUri(this.videoElement, config);\n return dataUri;\n }\n }, {\n key: 'stopCamera',\n value: function stopCamera() {\n var _this6 = this;\n\n return new Promise(function (resolve, reject) {\n if (_this6.stream) {\n _this6.stream.getTracks().forEach(function (track) {\n track.stop();\n });\n _this6.videoElement.src = '';\n _this6.stream = null;\n _this6._setSettings(null);\n resolve();\n }\n reject(Error('no stream to stop!'));\n });\n }\n }]);\n\n return CameraPhoto;\n}();\n\nvar FACING_MODES = __WEBPACK_IMPORTED_MODULE_0__MediaServices__[\"a\" /* default */].FACING_MODES;\nvar IMAGE_TYPES = __WEBPACK_IMPORTED_MODULE_0__MediaServices__[\"a\" /* default */].IMAGE_TYPES;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (CameraPhoto);\n\n/***/ }),\n/* 2 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__helper__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(0);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\n\nvar MediaServices = function () {\n function MediaServices() {\n _classCallCheck(this, MediaServices);\n }\n\n _createClass(MediaServices, null, [{\n key: 'getDataUri',\n value: function getDataUri(videoElement, config) {\n var sizeFactor = config.sizeFactor,\n imageType = config.imageType,\n imageCompression = config.imageCompression,\n isImageMirror = config.isImageMirror;\n var videoWidth = videoElement.videoWidth,\n videoHeight = videoElement.videoHeight;\n\n var _getImageSize = Object(__WEBPACK_IMPORTED_MODULE_0__helper__[\"b\" /* getImageSize */])(videoWidth, videoHeight, sizeFactor),\n imageWidth = _getImageSize.imageWidth,\n imageHeight = _getImageSize.imageHeight;\n\n // Build the canvas size et draw the image to context from videoElement\n\n\n var canvas = document.createElement('canvas');\n canvas.width = imageWidth;\n canvas.height = imageHeight;\n var context = canvas.getContext('2d');\n\n // Flip horizontally (as css transform: rotateY(180deg))\n if (isImageMirror) {\n context.setTransform(-1, 0, 0, 1, canvas.width, 0);\n }\n\n context.drawImage(videoElement, 0, 0, imageWidth, imageHeight);\n\n // Get dataUri from canvas\n var dataUri = Object(__WEBPACK_IMPORTED_MODULE_0__helper__[\"a\" /* getDataUri */])(canvas, imageType, imageCompression);\n return dataUri;\n }\n }, {\n key: 'getWindowURL',\n value: function getWindowURL() {\n var windowURL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n return windowURL;\n }\n\n /*\n Inspiration : https://github.com/jhuckaby/webcamjs/blob/master/webcam.js\n */\n\n }, {\n key: 'getNavigatorMediaDevices',\n value: function getNavigatorMediaDevices() {\n var NMDevice = null;\n var isNewAPI = !!(navigator.mediaDevices && navigator.mediaDevices.getUserMedia);\n var isOldAPI = !!(navigator.mozGetUserMedia || navigator.webkitGetUserMedia);\n\n if (isNewAPI) {\n NMDevice = navigator.mediaDevices;\n } else if (isOldAPI) {\n var NMDeviceOld = navigator.mozGetUserMedia || navigator.webkitGetUserMedia;\n // Setup getUserMedia, with polyfill for older browsers\n // Adapted from: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia\n\n var polyfillGetUserMedia = {\n getUserMedia: function getUserMedia(constraint) {\n return new Promise(function (resolve, reject) {\n NMDeviceOld.call(navigator, constraint, resolve, reject);\n });\n }\n };\n\n // Overwrite getUserMedia() with the polyfill\n NMDevice = Object.assign(NMDeviceOld, polyfillGetUserMedia);\n }\n\n // If is no navigator.mediaDevices || navigator.mozGetUserMedia || navigator.webkitGetUserMedia\n // then is not supported so return null\n return NMDevice;\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API/Constraints\n\n }, {\n key: 'isSupportedFacingMode',\n value: function isSupportedFacingMode() {\n // navigator.mediaDevices\n return MediaServices.getNavigatorMediaDevices().getSupportedConstraints().facingMode;\n }\n }, {\n key: 'getIdealConstraints',\n value: function getIdealConstraints(idealFacingMode, idealResolution) {\n // default idealConstraints\n var idealConstraints = {\n audio: false,\n video: {}\n };\n\n if (Object(__WEBPACK_IMPORTED_MODULE_0__helper__[\"c\" /* isMinimumConstraints */])(idealFacingMode, idealResolution)) {\n return __WEBPACK_IMPORTED_MODULE_1__constants__[\"d\" /* MINIMUM_CONSTRAINTS */];\n }\n\n var supports = navigator.mediaDevices.getSupportedConstraints();\n /* eslint-env browser */\n // alert(JSON.stringify(supports));\n if (!supports.width || !supports.height || !supports.facingMode) {\n console.error('Constraint width height or facingMode not supported!');\n return __WEBPACK_IMPORTED_MODULE_1__constants__[\"d\" /* MINIMUM_CONSTRAINTS */];\n }\n\n // If is valid facingMode\n if (idealFacingMode && __WEBPACK_IMPORTED_MODULE_1__constants__[\"e\" /* SUPPORTED_FACING_MODES */].includes(idealFacingMode)) {\n // idealConstraints.video.facingMode = { ideal: idealFacingMode };\n idealConstraints.video.facingMode = idealFacingMode;\n }\n\n if (idealResolution && idealResolution.width) {\n idealConstraints.video.width = idealResolution.width;\n }\n\n if (idealResolution && idealResolution.height) {\n idealConstraints.video.height = idealResolution.height;\n }\n\n return idealConstraints;\n }\n }, {\n key: 'getMaxResolutionConstraints',\n value: function getMaxResolutionConstraints() {\n var idealFacingMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var numberOfMaxResolutionTry = arguments[1];\n\n var constraints = MediaServices.getIdealConstraints(idealFacingMode);\n var facingMode = constraints.video.facingMode;\n\n var VIDEO_ADVANCED_CONSTRANTS = [{ 'width': { 'min': 640 }, 'ideal': { 'facingMode': facingMode } }, { 'width': { 'min': 800 }, 'ideal': { 'facingMode': facingMode } }, { 'width': { 'min': 900 }, 'ideal': { 'facingMode': facingMode } }, { 'width': { 'min': 1024 }, 'ideal': { 'facingMode': facingMode } }, { 'width': { 'min': 1080 }, 'ideal': { 'facingMode': facingMode } }, { 'width': { 'min': 1280 }, 'ideal': { 'facingMode': facingMode } }, { 'width': { 'min': 1920 }, 'ideal': { 'facingMode': facingMode } }, { 'width': { 'min': 2560 }, 'ideal': { 'facingMode': facingMode } }, { 'width': { 'min': 3840 }, 'ideal': { 'facingMode': facingMode } }];\n\n if (numberOfMaxResolutionTry >= VIDEO_ADVANCED_CONSTRANTS.length) {\n return null;\n }\n\n // each number of try, we remove the last value of the array (the bigger minim width)\n var advanced = VIDEO_ADVANCED_CONSTRANTS.slice(0, -numberOfMaxResolutionTry);\n constraints.video.advanced = advanced;\n\n return constraints;\n }\n }, {\n key: 'FACING_MODES',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_1__constants__[\"a\" /* FACING_MODES */];\n }\n }, {\n key: 'IMAGE_TYPES',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_1__constants__[\"c\" /* IMAGE_TYPES */];\n }\n }]);\n\n return MediaServices;\n}();\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MediaServices);\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = getImageSize;\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = getDataUri;\n/* harmony export (immutable) */ __webpack_exports__[\"c\"] = isMinimumConstraints;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__constants__ = __webpack_require__(0);\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\nfunction _validateImgParam(imageType, imageCompression) {\n // validate the imageCompression\n if (!(imageCompression >= 0 && imageCompression <= 1)) {\n throw new Error(imageCompression + ' is invalid imageCompression, choose between: [0, 1]');\n }\n\n // validate the imageType\n if (!__WEBPACK_IMPORTED_MODULE_0__constants__[\"f\" /* SUPPORTED_IMAGE_TYPES */].includes(imageType)) {\n throw new Error(imageType + ' is invalid imageType, choose between: ' + __WEBPACK_IMPORTED_MODULE_0__constants__[\"f\" /* SUPPORTED_IMAGE_TYPES */].join(', '));\n }\n return true;\n}\n\nfunction _getValidImgParam(imageType, imageCompression) {\n var imgParam = {};\n try {\n _validateImgParam(imageType, imageCompression);\n imgParam.imageType = imageType;\n imgParam.imageCompression = imageCompression;\n } catch (e) {\n console.error(e);\n console.error('default value of ' + __WEBPACK_IMPORTED_MODULE_0__constants__[\"c\" /* IMAGE_TYPES */].PNG + ' is used');\n\n imgParam.imageType = __WEBPACK_IMPORTED_MODULE_0__constants__[\"c\" /* IMAGE_TYPES */].PNG;\n imgParam.imageCompression = null;\n }\n\n return imgParam;\n}\n\nfunction getImageSize(videoWidth, videoHeight, sizeFactor) {\n // calc the imageWidth\n var imageWidth = videoWidth * parseFloat(sizeFactor);\n // calc the ratio\n var ratio = videoWidth / imageWidth;\n // calc the imageHeight\n var imageHeight = videoHeight / ratio;\n\n return {\n imageWidth: imageWidth,\n imageHeight: imageHeight\n };\n}\n\nfunction getDataUri(canvas, imageType, imageCompression) {\n var imgParam = _getValidImgParam(imageType, imageCompression);\n\n if (imgParam.imageType === __WEBPACK_IMPORTED_MODULE_0__constants__[\"c\" /* IMAGE_TYPES */].JPG) {\n if (!imageCompression) {\n return canvas.toDataURL(__WEBPACK_IMPORTED_MODULE_0__constants__[\"b\" /* FORMAT_TYPES */][__WEBPACK_IMPORTED_MODULE_0__constants__[\"c\" /* IMAGE_TYPES */].JPG]);\n }\n return canvas.toDataURL(__WEBPACK_IMPORTED_MODULE_0__constants__[\"b\" /* FORMAT_TYPES */][__WEBPACK_IMPORTED_MODULE_0__constants__[\"c\" /* IMAGE_TYPES */].JPG], imageCompression);\n }\n\n return canvas.toDataURL(__WEBPACK_IMPORTED_MODULE_0__constants__[\"b\" /* FORMAT_TYPES */][imageType]);\n}\n\nfunction _isEmptyObject(obj) {\n if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object') {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nfunction isMinimumConstraints(idealFacingMode, idealResolution) {\n return !(idealFacingMode || idealResolution && !_isEmptyObject(idealResolution));\n}\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return DEFAULT_SIZE_FACTOR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return DEFAULT_IMAGE_COMPRESSION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return DEFAULT_IMAGE_MIRROR; });\nvar DEFAULT_SIZE_FACTOR = 1;\nvar DEFAULT_IMAGE_COMPRESSION = null;\nvar DEFAULT_IMAGE_MIRROR = false;\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// jslib-html5-camera-photo.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 45f91450196214fb6814","// camera constants\nconst USER = 'user';\nconst ENVIRONMENT = 'environment';\n\nexport const SUPPORTED_FACING_MODES = [USER, ENVIRONMENT];\n\nexport const FACING_MODES = {\n 'USER': USER,\n 'ENVIRONMENT': ENVIRONMENT\n};\n\n// Image constants\nconst PNG = 'png';\nconst JPG = 'jpg';\n\nexport const SUPPORTED_IMAGE_TYPES = [JPG, PNG];\n\nexport const IMAGE_TYPES = {\n 'PNG': PNG,\n 'JPG': JPG\n};\n\nexport const FORMAT_TYPES = {\n [JPG]: 'image/jpeg',\n [PNG]: 'image/png'\n};\n\nexport const MINIMUM_CONSTRAINTS = {\n audio: false,\n video: true\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/MediaServices/constants.js","import MediaServices from './MediaServices';\n\nimport {\n DEFAULT_SIZE_FACTOR,\n DEFAULT_IMAGE_COMPRESSION,\n DEFAULT_IMAGE_MIRROR } from './constants';\n\nconst DEFAULT_IMAGE_TYPE = MediaServices.IMAGE_TYPES.PNG;\n\nclass CameraPhoto {\n constructor (videoElement) {\n this.videoElement = videoElement;\n this.stream = null;\n this.numberOfMaxResolutionTry = 1;\n this.settings = null;\n this.inputVideoDeviceInfos = [];\n\n // Set the right object depending on the browser.\n this.windowURL = MediaServices.getWindowURL();\n this.mediaDevices = MediaServices.getNavigatorMediaDevices();\n }\n\n _getStreamDevice (idealFacingMode, idealResolution) {\n return new Promise((resolve, reject) => {\n let constraints =\n MediaServices.getIdealConstraints(idealFacingMode, idealResolution);\n\n this.mediaDevices.getUserMedia(constraints)\n .then((stream) => {\n this._gotStream(stream);\n this._getInputVideoDeviceInfosPromise()\n .then((inputVideoDeviceInfos) => {\n this.inputVideoDeviceInfos = inputVideoDeviceInfos;\n }).catch(() => {\n\n }).then(() => {\n resolve(stream);\n });\n })\n .catch((error) => {\n // let {name, constraint, message} = error;\n // window.alert(name + ' ' + constraint + ' ' + message);\n reject(error);\n });\n });\n }\n\n _getStreamDeviceMaxResolution (idealFacingMode) {\n let constraints =\n MediaServices.getMaxResolutionConstraints(idealFacingMode, this.numberOfMaxResolutionTry);\n\n // all the trying is done...\n if (constraints == null) {\n let idealResolution = {};\n return this._getStreamDevice(idealFacingMode, idealResolution);\n }\n\n return new Promise((resolve, reject) => {\n this.mediaDevices.getUserMedia(constraints)\n .then((stream) => {\n this._gotStream(stream);\n this._getInputVideoDeviceInfosPromise()\n .then((inputVideoDeviceInfos) => {\n this.inputVideoDeviceInfos = inputVideoDeviceInfos;\n }).catch(() => {\n\n }).then(() => {\n resolve(stream);\n });\n })\n .catch((error) => {\n // let {name, constraint, message} = error;\n // console.log(name + ' ' + constraint + ' ' + message);\n // retry...\n setTimeout(() => {\n this.numberOfMaxResolutionTry += 1;\n this._getStreamDeviceMaxResolution(idealFacingMode)\n .catch(() => {\n reject(error);\n });\n }, 20);\n });\n });\n }\n\n _setVideoSrc (stream) {\n if ('srcObject' in this.videoElement) {\n this.videoElement.srcObject = stream;\n } else {\n // using URL.createObjectURL() as fallback for old browsers\n let videoSrc = this.windowURL.createObjectURL(stream);\n this.videoElement.src = videoSrc;\n }\n }\n\n _setSettings (stream) {\n // default setting is null\n this.settings = null;\n const tracks = (stream && stream.getTracks)\n ? stream.getTracks()\n : [];\n\n if (tracks.length > 0 && tracks[0].getSettings) {\n this.settings = tracks[0].getSettings();\n }\n }\n\n _getInputVideoDeviceInfosPromise () {\n return new Promise((resolve, reject) => {\n // only make shure the camera is sarted\n\n let inputVideoDeviceInfos = [];\n this.mediaDevices.enumerateDevices()\n .then(function (devices) {\n devices.forEach(function (device) {\n if (device.kind === 'videoinput') {\n inputVideoDeviceInfos.push(device);\n }\n });\n resolve(inputVideoDeviceInfos);\n })\n .catch(function (err) {\n reject(err);\n });\n });\n }\n\n _gotStream (stream) {\n this.stream = stream;\n this._setSettings(stream);\n this._setVideoSrc(stream);\n }\n\n getCameraSettings () {\n return this.settings;\n }\n getInputVideoDeviceInfos () {\n return this.inputVideoDeviceInfos;\n }\n\n startCamera (idealFacingMode, idealResolution) {\n // stop the stream before playing it.\n return this.stopCamera()\n .then(() => {})\n .catch(() => {})\n // Always called (when the promise is done)\n .then(() => {\n return this._getStreamDevice(idealFacingMode, idealResolution);\n });\n }\n\n startCameraMaxResolution (idealFacingMode = {}) {\n // stop the stream before playing it.\n return this.stopCamera()\n .then(() => {})\n .catch(() => {})\n // Always called (when the promise is done)\n .then(() => {\n return this._getStreamDeviceMaxResolution(idealFacingMode);\n });\n }\n\n getDataUri (userConfig) {\n let config = {\n sizeFactor: userConfig.sizeFactor === undefined ? DEFAULT_SIZE_FACTOR : userConfig.sizeFactor,\n imageType: userConfig.imageType === undefined ? DEFAULT_IMAGE_TYPE : userConfig.imageType,\n imageCompression: userConfig.imageCompression === undefined ? DEFAULT_IMAGE_COMPRESSION : userConfig.imageCompression,\n isImageMirror: userConfig.isImageMirror === undefined ? DEFAULT_IMAGE_MIRROR : userConfig.isImageMirror\n };\n\n let dataUri = MediaServices.getDataUri(this.videoElement, config);\n return dataUri;\n }\n\n stopCamera () {\n return new Promise((resolve, reject) => {\n if (this.stream) {\n this.stream.getTracks().forEach(function (track) {\n track.stop();\n });\n this.videoElement.src = '';\n this.stream = null;\n this._setSettings(null);\n resolve();\n }\n reject(Error('no stream to stop!'));\n });\n }\n}\n\nexport const FACING_MODES = MediaServices.FACING_MODES;\nexport const IMAGE_TYPES = MediaServices.IMAGE_TYPES;\n\nexport default CameraPhoto;\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/index.js","import {getImageSize, getDataUri, isMinimumConstraints} from './helper';\n\nimport {\n SUPPORTED_FACING_MODES,\n FACING_MODES,\n IMAGE_TYPES,\n MINIMUM_CONSTRAINTS\n} from './constants';\n\nclass MediaServices {\n static getDataUri (videoElement, config) {\n let { sizeFactor, imageType, imageCompression, isImageMirror } = config;\n\n let {videoWidth, videoHeight} = videoElement;\n let {imageWidth, imageHeight} = getImageSize(videoWidth, videoHeight, sizeFactor);\n\n // Build the canvas size et draw the image to context from videoElement\n let canvas = document.createElement('canvas');\n canvas.width = imageWidth;\n canvas.height = imageHeight;\n let context = canvas.getContext('2d');\n\n // Flip horizontally (as css transform: rotateY(180deg))\n if (isImageMirror) {\n context.setTransform(-1, 0, 0, 1, canvas.width, 0);\n }\n\n context.drawImage(videoElement, 0, 0, imageWidth, imageHeight);\n\n // Get dataUri from canvas\n let dataUri = getDataUri(canvas, imageType, imageCompression);\n return dataUri;\n }\n\n static getWindowURL () {\n let windowURL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n return windowURL;\n }\n\n /*\n Inspiration : https://github.com/jhuckaby/webcamjs/blob/master/webcam.js\n */\n static getNavigatorMediaDevices () {\n let NMDevice = null;\n let isNewAPI = !!(navigator.mediaDevices && navigator.mediaDevices.getUserMedia);\n let isOldAPI = !!(navigator.mozGetUserMedia || navigator.webkitGetUserMedia);\n\n if (isNewAPI) {\n NMDevice = navigator.mediaDevices;\n } else if (isOldAPI) {\n let NMDeviceOld = navigator.mozGetUserMedia || navigator.webkitGetUserMedia;\n // Setup getUserMedia, with polyfill for older browsers\n // Adapted from: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia\n\n let polyfillGetUserMedia = {\n getUserMedia: function (constraint) {\n return new Promise(function (resolve, reject) {\n NMDeviceOld.call(navigator, constraint, resolve, reject);\n });\n }\n };\n\n // Overwrite getUserMedia() with the polyfill\n NMDevice = Object.assign(NMDeviceOld,\n polyfillGetUserMedia\n );\n }\n\n // If is no navigator.mediaDevices || navigator.mozGetUserMedia || navigator.webkitGetUserMedia\n // then is not supported so return null\n return NMDevice;\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API/Constraints\n static isSupportedFacingMode () {\n // navigator.mediaDevices\n return MediaServices.getNavigatorMediaDevices().getSupportedConstraints().facingMode;\n }\n\n static getIdealConstraints (idealFacingMode, idealResolution) {\n // default idealConstraints\n let idealConstraints = {\n audio: false,\n video: {}\n };\n\n if (isMinimumConstraints(idealFacingMode, idealResolution)) {\n return MINIMUM_CONSTRAINTS;\n }\n\n const supports = navigator.mediaDevices.getSupportedConstraints();\n /* eslint-env browser */\n // alert(JSON.stringify(supports));\n if (!supports.width || !supports.height || !supports.facingMode) {\n console.error('Constraint width height or facingMode not supported!');\n return MINIMUM_CONSTRAINTS;\n }\n\n // If is valid facingMode\n if (idealFacingMode && SUPPORTED_FACING_MODES.includes(idealFacingMode)) {\n // idealConstraints.video.facingMode = { ideal: idealFacingMode };\n idealConstraints.video.facingMode = idealFacingMode;\n }\n\n if (idealResolution && idealResolution.width) {\n idealConstraints.video.width = idealResolution.width;\n }\n\n if (idealResolution && idealResolution.height) {\n idealConstraints.video.height = idealResolution.height;\n }\n\n return idealConstraints;\n }\n\n static getMaxResolutionConstraints (idealFacingMode = {}, numberOfMaxResolutionTry) {\n let constraints = MediaServices.getIdealConstraints(idealFacingMode);\n const facingMode = constraints.video.facingMode;\n\n const VIDEO_ADVANCED_CONSTRANTS = [\n {'width': {'min': 640}, 'ideal': {'facingMode': facingMode}},\n {'width': {'min': 800}, 'ideal': {'facingMode': facingMode}},\n {'width': {'min': 900}, 'ideal': {'facingMode': facingMode}},\n {'width': {'min': 1024}, 'ideal': {'facingMode': facingMode}},\n {'width': {'min': 1080}, 'ideal': {'facingMode': facingMode}},\n {'width': {'min': 1280}, 'ideal': {'facingMode': facingMode}},\n {'width': {'min': 1920}, 'ideal': {'facingMode': facingMode}},\n {'width': {'min': 2560}, 'ideal': {'facingMode': facingMode}},\n {'width': {'min': 3840}, 'ideal': {'facingMode': facingMode}}\n ];\n\n if (numberOfMaxResolutionTry >= VIDEO_ADVANCED_CONSTRANTS.length) {\n return null;\n }\n\n // each number of try, we remove the last value of the array (the bigger minim width)\n let advanced = VIDEO_ADVANCED_CONSTRANTS.slice(0, -numberOfMaxResolutionTry);\n constraints.video.advanced = advanced;\n\n return constraints;\n }\n\n static get FACING_MODES () {\n return FACING_MODES;\n }\n\n static get IMAGE_TYPES () {\n return IMAGE_TYPES;\n }\n}\n\nexport default MediaServices;\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/MediaServices/index.js","import {\n SUPPORTED_IMAGE_TYPES,\n FORMAT_TYPES,\n IMAGE_TYPES\n} from './constants';\n\nfunction _validateImgParam (imageType, imageCompression) {\n // validate the imageCompression\n if (!(imageCompression >= 0 && imageCompression <= 1)) {\n throw new Error(imageCompression + ' is invalid imageCompression, choose between: [0, 1]');\n }\n\n // validate the imageType\n if (!SUPPORTED_IMAGE_TYPES.includes(imageType)) {\n throw new Error(imageType + ' is invalid imageType, choose between: ' + SUPPORTED_IMAGE_TYPES.join(', '));\n }\n return true;\n}\n\nfunction _getValidImgParam (imageType, imageCompression) {\n let imgParam = {};\n try {\n _validateImgParam(imageType, imageCompression);\n imgParam.imageType = imageType;\n imgParam.imageCompression = imageCompression;\n } catch (e) {\n console.error(e);\n console.error('default value of ' + IMAGE_TYPES.PNG + ' is used');\n\n imgParam.imageType = IMAGE_TYPES.PNG;\n imgParam.imageCompression = null;\n }\n\n return imgParam;\n}\n\nexport function getImageSize (videoWidth, videoHeight, sizeFactor) {\n // calc the imageWidth\n let imageWidth = videoWidth * parseFloat(sizeFactor);\n // calc the ratio\n let ratio = videoWidth / imageWidth;\n // calc the imageHeight\n let imageHeight = videoHeight / ratio;\n\n return {\n imageWidth,\n imageHeight\n };\n}\n\nexport function getDataUri (canvas, imageType, imageCompression) {\n const imgParam = _getValidImgParam(imageType, imageCompression);\n\n if (imgParam.imageType === IMAGE_TYPES.JPG) {\n if (!imageCompression) {\n return canvas.toDataURL(FORMAT_TYPES[IMAGE_TYPES.JPG]);\n }\n return canvas.toDataURL(FORMAT_TYPES[IMAGE_TYPES.JPG], imageCompression);\n }\n\n return canvas.toDataURL(FORMAT_TYPES[imageType]);\n}\n\nfunction _isEmptyObject (obj) {\n if (typeof obj === 'object') {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nexport function isMinimumConstraints (idealFacingMode, idealResolution) {\n return !(idealFacingMode || (idealResolution && !_isEmptyObject(idealResolution)));\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/MediaServices/helper.js","export const DEFAULT_SIZE_FACTOR = 1;\nexport const DEFAULT_IMAGE_COMPRESSION = null;\nexport const DEFAULT_IMAGE_MIRROR = false;\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/constants.js"],"sourceRoot":""}