{"version":3,"sources":["webpack://scanovate_card_capture/webpack/universalModuleDefinition","webpack://scanovate_card_capture/webpack/bootstrap","webpack://scanovate_card_capture/./node_modules/debug/src/browser.js","webpack://scanovate_card_capture/./lib/video.js","webpack://scanovate_card_capture/./lib/browserDetector.js","webpack://scanovate_card_capture/./lib/customErrors.js","webpack://scanovate_card_capture/./lib/index.js","webpack://scanovate_card_capture/./node_modules/process/browser.js","webpack://scanovate_card_capture/./node_modules/debug/src/common.js","webpack://scanovate_card_capture/./node_modules/ms/index.js","webpack://scanovate_card_capture/./lib/mediaDeviceAdapter.js","webpack://scanovate_card_capture/./lib/backCamerasKeywords.js","webpack://scanovate_card_capture/./lib/translations/languageManager.js","webpack://scanovate_card_capture/./node_modules/component-emitter/index.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","log","args","console","formatArgs","this","useColors","namespace","humanize","diff","color","splice","index","lastC","replace","match","save","namespaces","storage","setItem","removeItem","error","load","getItem","process","env","DEBUG","type","__nwjs","navigator","userAgent","toLowerCase","document","documentElement","style","WebkitAppearance","firebug","exception","table","parseInt","RegExp","$1","localStorage","localstorage","colors","formatters","j","v","JSON","stringify","message","debug","require","mediaDeviceAdapter","browserDetector","backCamerasChecks","ScanovateCameraError","Video","constructor","element","constraintsObj","_stream","canvas","context","lastDeviceId","ctx","drawingFunc","ang","setTransform","width","height","capture","quality","Promise","res","rej","createElement","getContext","max","Math","videoWidth","videoHeight","min","isHeightGreaterThanWidth","drawRotatedImageOnCanvas","drawImage","toDataURL","_initVideo","exactId","controls","constrains","video","facingMode","audio","deviceId","exact","destroy","then","stream","e","_attachStreamToElement","NO_VIDEO_ELEMENT_MESSAGE","undefined","Error","_finishVideoSetup","canPlayEventListener","promise","play","catch","playEventListener","loadedMetadataEventListener","addEventListener","videoReadyState","readyState","srcObject","urlObj","URL","webkitURL","mozURL","msURL","src","createObjectURL","err","mediaDevices","enumerateDevices","devices","filteredVideoDevices","filter","elem","kind","finalFilteredDevices","label","isBackLabelFound","isLabelBackLabel","length","reject","customErrors","CameraNoRelevantDeviceFound","init","reopenCameraIfNeeded","isSecondTime","shouldEnumerateDevices","enum","CHROME","detectBroswer","findLastEnumeratedDeviceId","resolve","_","originalError","GetUserMediaNotImplemented","array","optionalExtraLog","tempArrayRef","Array","isArray","forEach","getTracks","track","stop","stopStreaming","forceStreamEnding","SAFARI","removeListeners","removeEventListener","removeElement","removeElementFunc","parentNode","removeChild","ScanovateError","stack","enumObjForExport","FIREFOX","OPERA","TRIDENT","EDGE","UNKNOWN","sUsrAg","sBrowser","indexOf","videoFromCamera","translations","Emitter","instance","applyConfig","data","COLORS","instructionsColor","setProperty","loaderColor","popupBackgroundColor","popupTextColor","primaryColor","backArrow","instructionsTextColor","positionInstructionTextBackground","FONT","NUMBER_OF_IMAGES","configObj","matches","location","origin","serverDomain","serverPort","port","protocol","Capture","super","translation","getTranslationObject","language","numOfPics","initPromise","videoObj","firstPage","img_1","img_2","applyNewConfig","createDiv","id","className","visibility","opacity","attributes","div","setAttribute","classList","add","img","setTimeout","emit","destroyFirstPage","querySelector","background","images","bodyElement","loaderElement","backButtonElement","onclick","backButtonElementImg","mainContainerElement","videoContainerElement","videoBoxElement","autoplay","muted","playsinline","tempImgResult","instructionsTextElement","appendChild","captureButtonContainer","captureButtonElement","modalElement","modalContentElement","escapeButton","innerHTML","CONFIRM_BUTTON","modalText","POPUP_TEXT","modalGif","elementsArray","aspectRatio","dontCreateVideo","postVideoInitFunc","checkOrientation","POSITION_INSTRUCTION_FRONT_SIDE","innerWidth","innerHeight","marginBottom","marginRight","maxHeight","maxWidth","fontSize","right","top","bottom","left","marginLeft","flexDirection","transform","escapemodal","display","captureImage","POSITION_INSTRUCTION_BACK_SIDE","push","SHOW_RESULTS","redirectToResults","getComputedStyle","getPropertyValue","secondPage","texts","mainContainer","imgResultMainContainer","resultsContainer","ancherTag","redirectToCapture","backButton","backButtonImg","imageContiner","imgResultWrap_1","imageTitle1","imgResult1","imgResultWrap_2","imageTitle2","imgResult2","title","RESULTS_PAGE_TITLE","innerTitle","RESULTS_CONDITIONS_TITLE","CONDITIONS","text","indexLogo","CONDITION","captureButtonsContinaer","ancherTag1","destroySecondPage","okButton","ancherTag2","tryAgainButton","TRY_AGAIN_BUTTON","justifyContent","alignItems","flex","paddingLeft","paddingright","body","padding","margin","position","remove","bd","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","concat","drainQueue","timeout","len","run","marker","runClearTimeout","Item","noop","nextTick","arguments","apply","browser","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","selectColor","hash","charCodeAt","createDebug","abs","prevTime","enabled","self","curr","Number","Date","ms","prev","coerce","unshift","format","formatter","val","extend","instances","delimiter","newDebug","toNamespace","regexp","toString","substring","default","disable","names","map","skips","join","enable","split","substr","test","keys","h","plural","msAbs","isPlural","round","options","str","String","exec","parseFloat","parse","isFinite","long","fmtLong","fmtShort","constraints","getUserMedia","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","backCamerasKeywords","includes","obj","mixin","event","fn","_callbacks","cb","callbacks","slice","hasListeners"],"mappings":"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","file":"script.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([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"scanovate_card_capture\"] = factory();\n\telse\n\t\troot[\"scanovate_card_capture\"] = factory();\n})(window, function() {\nreturn "," \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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\nfunction log(...args) {\n\t// This hackery is required for IE8/9, where\n\t// the `console.log` function doesn't have 'apply'\n\treturn typeof console === 'object' &&\n\t\tconsole.log &&\n\t\tconsole.log(...args);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","'use strict';\n\nconst debug = require('debug')('active-ocr-client:video'),\n mediaDeviceAdapter = require('./mediaDeviceAdapter'),\n browserDetector = require('./browserDetector'),\n backCamerasChecks = require('./backCamerasKeywords'),\n {ScanovateCameraError} = require('./customErrors');\n\nclass Video {\n constructor(element, constraintsObj) {\n this.constraintsObj = constraintsObj;\n this._stream = this.canvas = this.context = this.lastDeviceId = null;\n this.element = element;\n }\n\n static drawRotatedImageOnCanvas(ctx, drawingFunc, ang = 90) {\n if (ang === 90 || ang === 270) {\n if (ang === 90) {\n ctx.setTransform(0, 1, -1, 0, ctx.canvas.width, 0)\n } else {\n ctx.setTransform(0, -1, 1, 0, 0, ctx.canvas.height)\n }\n } else {\n if (ang === 0) {\n ctx.setTransform(1, 0, 0, 1, 0, 0)\n } else {\n ctx.setTransform(-1, 0, 0, -1, ctx.canvas.width, ctx.canvas.height)\n }\n }\n drawingFunc && drawingFunc();\n ctx.setTransform(1, 0, 0, 1, 0, 0); // reset default transform\n }\n\n capture(quality) {\n return new Promise((res, rej) => {\n if (!this.canvas) {\n this.canvas = document.createElement('canvas');\n }\n if (!this.context) {\n this.context = this.canvas.getContext('2d');\n }\n const max = Math.max(this.element.videoWidth, this.element.videoHeight),\n min = Math.min(this.element.videoWidth, this.element.videoHeight);\n\n if (this.canvas.width !== max) {\n this.canvas.width = max;\n // debug(`media recorder updateSize, width: ${canvas.width}, height: ${canvas.height}`);\n }\n if (this.canvas.height !== min) {\n this.canvas.height = min;\n // debug(`media recorder updateSize, width: ${canvas.width}, height: ${canvas.height}`);\n }\n // this.canvas.width = this.element.videoWidth;\n // this.canvas.height = this.element.videoHeight;\n const isPortrait = this.isHeightGreaterThanWidth();\n if (isPortrait) {\n Video.drawRotatedImageOnCanvas(this.context, () => {\n this.context.drawImage(this.element, 0, 0)\n }, 270);\n // this.context.drawImage(this.element, 0, 0, this.canvas.width, this.canvas.height);\n } else {\n this.context.drawImage(this.element, 0, 0, this.canvas.width, this.canvas.height);\n }\n\n const base64Thing = this.canvas.toDataURL('image/jpeg', quality);\n return res(base64Thing);\n // this.canvas.toBlob((blob) => {\n // console.log(blob);\n // res(blob);\n // }, 'image/jpeg', quality);\n });\n }\n\n isHeightGreaterThanWidth() {\n if (!this.element) {\n return null;\n }\n return (this.element.videoHeight > this.element.videoWidth);\n }\n\n _initVideo(exactId) {\n return new Promise((res, rej) => {\n debug('video init start');\n this.element.controls = false;\n\n // {facingMode: 'environment', width: 720, height: 1280}\n\n let constrains = {\n video: {\n facingMode: 'environment',\n width: this.constraintsObj.width,\n height: this.constraintsObj.height\n }, audio: false\n };\n if (exactId) {\n constrains.video.deviceId = {exact: exactId};\n }\n\n this.destroy(false);\n if (exactId !== null && exactId !== undefined && this.lastDeviceId !== exactId) {\n // Video._destroyOriginalVideoStream();\n this.lastDeviceId = exactId;\n }\n debug(`constrains: ${JSON.stringify(constrains)}`);\n if (this._stream === null) {\n mediaDeviceAdapter(constrains).then((stream) => {\n debug('navigator.mediaDevices.getUserMedia called');\n this._stream = stream;\n res(this._stream);\n }, (e) => {\n debug(`getUserMedia error, name: ${e && e.name}, message: ${e && e.message}`);\n rej(new ScanovateCameraError(e && e.message));\n });\n } else {\n debug('Reusing previous stream');\n res(this._stream);\n }\n });\n }\n\n _attachStreamToElement() {\n debug(`_attachStreamToElement called`);\n const NO_VIDEO_ELEMENT_MESSAGE = \"video element was destroyed or wasn't set\";\n return new Promise((res, rej) => {\n if (this.element === null || this.element === undefined) {\n return rej(new Error(NO_VIDEO_ELEMENT_MESSAGE));\n }\n const _finishVideoSetup = () => {\n if (this.element === null || this.element === undefined) {\n return rej(new Error(NO_VIDEO_ELEMENT_MESSAGE));\n }\n debug('calling _finishVideoSetup');\n this.element.width = this.element.videoWidth || 320;\n this.element.height = this.element.videoHeight || 240;\n // Camera init completed\n res(this.element);\n };\n\n this.canPlayEventListener = () => {\n if (this.element === null || this.element === undefined) {\n return rej(new Error(NO_VIDEO_ELEMENT_MESSAGE));\n }\n const promise = this.element.play();\n\n if (promise !== undefined) {\n promise.then(() => {\n debug('Autoplay started');\n }).catch(() => {\n debug('Autoplay was prevented');\n // Show a \"Play\" button so that user can start playback.\n });\n }\n };\n this.playEventListener = () => {\n debug('canPlayEventListener called');\n _finishVideoSetup();\n };\n this.loadedMetadataEventListener = () => {\n if (this.element === null || this.element === undefined) {\n return rej(new Error(NO_VIDEO_ELEMENT_MESSAGE));\n }\n debug('loadedMetadataEventListener called');\n };\n this.element.addEventListener('play', this.playEventListener, false);\n const videoReadyState = this.element.readyState;\n debug(`Video element readyState: ${videoReadyState}`);\n if (videoReadyState === 3 || videoReadyState === 4) {\n this.loadedMetadataEventListener();\n this.canPlayEventListener();\n } else {\n this.element.addEventListener('canplay', this.canPlayEventListener, false);\n this.element.addEventListener('loadedmetadata', this.loadedMetadataEventListener, false);\n }\n try {\n // Older browsers may not have srcObject\n if (\"srcObject\" in this.element) {\n this.element.srcObject = this._stream;\n debug('srcObject in video element was set');\n } else {\n // Avoid using this in new browsers, as it is going away.\n const urlObj = window.URL || window.webkitURL || window.mozURL || window.msURL;\n this.element.src = urlObj.createObjectURL(this._stream);\n debug('src in video element was set');\n }\n } catch (err) {\n debug(`can't send a stream to a video element. err name: ${err.name}, err message: ${err.message}`);\n rej(err)\n }\n });\n }\n\n\n static findLastEnumeratedDeviceId(){\n return navigator.mediaDevices.enumerateDevices().then(function (devices) {\n const filteredVideoDevices = devices.filter(function(elem){\n return (elem.kind === 'videoinput');\n });\n let finalFilteredDevices = filteredVideoDevices.filter(function(elem){\n const label = elem.label;\n const isBackLabelFound = backCamerasChecks.isLabelBackLabel(label);\n debug(`Label \"${label}\" is found to be backside? ${isBackLabelFound}`);\n return isBackLabelFound;\n });\n if(finalFilteredDevices.length === 0){\n finalFilteredDevices = filteredVideoDevices;\n }\n debug(`Found #${finalFilteredDevices.length} relevant devices`);\n if (finalFilteredDevices.length === 0) {\n return Promise.reject(new customErrors.CameraNoRelevantDeviceFound())\n }\n // if (finalFilteredDevices.length === 1) {\n // return null;\n // }\n return finalFilteredDevices[finalFilteredDevices.length-1].deviceId;\n });\n }\n\n init() {\n const reopenCameraIfNeeded = (isSecondTime) => {\n const shouldEnumerateDevices = (browserDetector.enum.CHROME === browserDetector.detectBroswer());\n const initialPromise = shouldEnumerateDevices ? Video.findLastEnumeratedDeviceId() : Promise.resolve();\n return initialPromise.then((lastDeviceId) => {\n const shouldAttamptInitAgain = !!(isSecondTime || (lastDeviceId && lastDeviceId !== this.lastDeviceId && shouldEnumerateDevices));\n let promise = shouldAttamptInitAgain ? this._initVideo(lastDeviceId) : Promise.resolve();\n return promise.then(()=>{\n this._attachStreamToElement();\n });\n });\n };\n\n return this._initVideo(this.lastDeviceId)\n .then((_) => {\n return reopenCameraIfNeeded(false);\n })\n .catch((originalError) => {\n if (originalError instanceof GetUserMediaNotImplemented) {\n throw originalError;\n }\n return reopenCameraIfNeeded(true).catch((err) => {\n throw err;\n });\n }).catch((err) => {\n debug(`Error enumerating devices: ${err.message}`);\n throw err;\n });\n }\n\n static killStream(array, optionalExtraLog) {\n optionalExtraLog && debug(`killStream optionalExtraLog: ${optionalExtraLog}`);\n let tempArrayRef = array;\n if (!array) {\n return;\n } else if (!Array.isArray(array)) {\n tempArrayRef = [array];\n }\n tempArrayRef.forEach((stream, index) => {\n debug(`Stops camera stream #${index}`);\n let tracks = (stream && stream.getTracks()) || [];\n tracks.forEach(function (track) {\n track.stop();\n });\n });\n }\n\n stopStreaming(forceStreamEnding) {\n debug(`stopStreaming has called`);\n if(forceStreamEnding === true || browserDetector.enum.SAFARI !== browserDetector.detectBroswer()) {\n ((this._stream && this._stream.getTracks()) || []).forEach(function (track) {\n track.stop();\n });\n this._stream = null;\n }\n if (this.element && this.element.srcObject) {\n this.element.srcObject = null;\n } else if (this.element && this.element.src) {\n this.element.src = null;\n }\n }\n\n removeListeners() {\n if (this.element) {\n this.element.removeEventListener('play', this.playEventListener, false);\n this.element.removeEventListener('canplay', this.canPlayEventListener, false);\n this.element.removeEventListener('loadedmetadata', this.loadedMetadataEventListener, false);\n // this.element.removeEventListener('loadedmetadata', this.canPlayEventListener, false);\n // this.element.removeEventListener('loadeddata', this.canPlayEventListener, false);\n // this.element.removeEventListener('progress', this.canPlayEventListener, false);\n }\n }\n\n destroy(removeElement) {\n debug(`Destroying video, removeElement: ${removeElement}`);\n this.stopStreaming(removeElement !== false);\n this.removeListeners();\n const removeElementFunc = () => {\n if (this.element) {\n debug(\"Removing video element\");\n this.element.parentNode.removeChild(this.element);\n this.element = null;\n }\n };\n if (removeElement !== null && removeElement !== undefined) {\n if (removeElement === true) {\n removeElementFunc();\n }\n } else {\n removeElementFunc();\n }\n }\n}\nfunction ScanovateError() {\n}\n\nScanovateError.prototype = new Error;\n\nfunction GetUserMediaNotImplemented() {\n this.name = 'getUserMediaNotImplemented';\n this.message = 'getUserMedia is not implemented in this browser';\n this.stack = (new Error()).stack;\n}\n\nfunction CameraNoRelevantDeviceFound() {\n this.name = 'CameraNoRelevantDeviceFound';\n this.message = 'No relevant device found during enumeration';\n this.stack = (new Error()).stack;\n}\n\nGetUserMediaNotImplemented.prototype = new ScanovateError;\n\nCameraNoRelevantDeviceFound.prototype = new ScanovateError;\n\nmodule.exports = Video;","'use strict';\n\nlet debug = require('debug')('active-ocr-client:browserDetector');\n\nconst enumObjForExport = {\n FIREFOX: 'Mozilla Firefox',\n OPERA: 'Opera',\n TRIDENT: 'Microsoft Internet Explorer',\n EDGE: 'Microsoft Edge',\n CHROME: 'Google Chrome or Chromium',\n SAFARI: 'Apple Safari',\n UNKNOWN: 'unknown'\n};\n\nmodule.exports = {\n detectBroswer,\n enum: enumObjForExport\n};\n\nfunction detectBroswer() {\n const sUsrAg = navigator.userAgent;\n let sBrowser;\n\n//The order matters here, and this may report false positives for unlisted browsers.\n\n if (sUsrAg.indexOf(\"Firefox\") > -1) {\n sBrowser = enumObjForExport.FIREFOX;\n //\"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0\"\n } else if (sUsrAg.indexOf(\"Opera\") > -1) {\n sBrowser = enumObjForExport.OPERA;\n } else if (sUsrAg.indexOf(\"Trident\") > -1) {\n sBrowser = enumObjForExport.TRIDENT;\n //\"Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; Zoom 3.6.0; wbx 1.0.0; rv:11.0) like Gecko\"\n } else if (sUsrAg.indexOf(\"Edge\") > -1) {\n sBrowser = enumObjForExport.EDGE;\n //\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299\"\n } else if (sUsrAg.indexOf(\"Chrome\") > -1) {\n sBrowser = enumObjForExport.CHROME;\n //\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.181 Chrome/66.0.3359.181 Safari/537.36\"\n } else if (sUsrAg.indexOf(\"Safari\") > -1) {\n sBrowser = enumObjForExport.SAFARI;\n //\"Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1 980x1306\"\n } else {\n sBrowser = enumObjForExport.UNKNOWN;\n }\n \n return sBrowser;\n}","'use strict';\n\nmodule.exports = {\n ScanovateCameraError\n}\n\nfunction ScanovateCameraError(message) {\n this.message = message;\n this.name = 'ScanovateCameraError';\n}\nScanovateCameraError.prototype = new Error;","'use strict';\n\nconst videoFromCamera = require('./video'),\n browserDetector = require('./browserDetector'),\n // data = require('./translations/text.json'),\n {ScanovateCameraError} = require('./customErrors'),\n debug = require('debug')('active-ocr-client:manager'),\n video = require('./video'),\n translations = require('./translations/languageManager'),\n Emitter = require('component-emitter');\n\nconst dom = document.documentElement;\nlet instance = null;\n\n//\n// function _openFullscreen(elem) {\n// try {\n// const requestFullScreen = elem.requestFullscreen || elem.mozRequestFullScreen || elem.webkitRequestFullScreen || elem.msRequestFullscreen;\n// if (requestFullScreen) {\n// const fullScreenCall = requestFullScreen.call(elem);\n// if (fullScreenCall != null && typeof fullScreenCall.then === 'function') {\n// fullScreenCall.then(function () {\n// debug(`Successfully enabled full-screen mode`);\n// }).catch(err => {\n// debug(`Error attempting to enable full-screen mode: ${err.message} (${err.name})`);\n// });\n// }\n// }\n// } catch (e) {\n// }\n// }\n\nfunction scanovateLoadCss(url) {\n return new Promise((resolve, reject) => {\n try {\n const link = document.createElement('link');\n link.type = 'text/css';\n link.rel = 'stylesheet';\n link.onload = function () {\n resolve();\n };\n link.onerror = () => {\n reject(new Error('CSS loading error'))\n };\n link.href = url;\n document.head.appendChild(link);\n } catch (err) {\n reject(err);\n }\n\n });\n}\n\nfunction applyConfig(data){\n const root = document.documentElement;\n if (data.COLORS) {\n data.COLORS.instructionsColor && root.style.setProperty('--scanovate-card-capture-instructions-color', data.COLORS.instructionsColor);\n data.COLORS.loaderColor && root.style.setProperty('--scanovate-card-capture-loader-color', data.COLORS.loaderColor);\n data.COLORS.popupBackgroundColor && root.style.setProperty('--scanovate-card-capture-popup-background-color', data.COLORS.popupBackgroundColor);\n data.COLORS.popupTextColor && root.style.setProperty('--scanovate-card-capture-popup-text-color', data.COLORS.popupTextColor);\n data.COLORS.primaryColor && root.style.setProperty('--scanovate-card-capture-primary-color', `${data.COLORS.primaryColor}`);\n data.COLORS.backArrow && root.style.setProperty('--scanovate-card-capture-back-arrow-color', `${data.COLORS.backArrow}`);\n data.COLORS.instructionsTextColor && root.style.setProperty('--scanovate-card-capture-instructions-text-color', `${data.COLORS.instructionsTextColor}`);\n data.COLORS.positionInstructionTextBackground && root.style.setProperty('--scanovate-card-capture-instructions-background-color', `${data.COLORS.positionInstructionTextBackground}`);\n }\n if (data.FONT) {\n data.FONT && root.style.setProperty('--scanovate-card-capture-font', `${data.FONT}`);\n }\n console.log(`card_capture is configured to capture #${(data && data.NUMBER_OF_IMAGES) || 1} images`);\n return data;\n}\n\nmodule.exports = function connect(configObj) {\n\n const matches = document.location.origin.match(/^https?\\:\\/\\/([^\\/:?#]+)(?:[\\/:?#]|$)/i),\n serverDomain = matches && matches[1],\n serverPort = location.port,// || 443,\n serverFullAddress = `${location.protocol}//${serverDomain}:${serverPort}`;\n // scanovateLoadCss(`scanovate_card_capture/assets/main.css`);\n\n\n class Capture extends Emitter {\n constructor(configObj) {\n super();\n this.data = applyConfig.call(this, configObj || {});\n this.translation = translations.getTranslationObject((this.data && this.data.language) ?this.data && this.data.language : 'en');\n this.numOfPics = this.data.NUMBER_OF_IMAGES;\n this.initPromise;\n this.videoObj;\n this.firstPage.bind(this);\n this.img_1 = null;\n this.img_2 = null;\n }\n\n applyNewConfig(configObj){\n this.data = applyConfig.call(this, configObj || this.data || {});\n }\n\n createDiv(element, id, className, visibility, opacity, src, attributes) {\n let div = document.createElement(element);\n if (id) {\n div.setAttribute('id', id);\n }\n if (className) {\n div.classList.add(className);\n }\n if (visibility) {\n div.style.visibility = visibility;\n }\n if (opacity) {\n div.style.opacity = opacity;\n }\n if (element === 'img' && src) {\n div.src = src;\n }\n if (attributes && typeof attributes === 'object') {\n debug(`Will put the following attributes on element: ${JSON.stringify(attributes)}`);\n for (let property in attributes) {\n debug(`Attribute '${property}' will have the following property: ${attributes[property] || ''}`)\n div.setAttribute(property, attributes[property] || '')\n }\n }\n\n return div;\n }\n\n firstPage(img) {\n if(img) {\n setTimeout(()=>{\n this.emit('success', {\n \"firstCapture\":img,\n \"secondCapture\": null\n });\n instance = null;\n this.destroyFirstPage();\n return document.createElement('div');\n },10000)\n }\n document.querySelector('html').style.background = 'black';\n const constraints = {\n // width: 1280,\n // height: 720,\n width: 1920,\n height: 1080,\n aspectRatio: 1.777777778\n };\n this.numOfPics = this.data.NUMBER_OF_IMAGES = typeof this.data.NUMBER_OF_IMAGES === 'number' ? this.data.NUMBER_OF_IMAGES : 1;\n const images = [];\n let bodyElement;\n\n if (bodyElement) {\n return bodyElement\n }\n bodyElement = document.createElement('section');\n\n\n const loaderElement = this.createDiv('img', 'loader', 'scanovate-card-capture-index-loader', undefined, 1.0)\n const backButtonElement = this.createDiv('button', 'back-button', 'scanovate-card-capture-index-back-button', 'hidden', undefined);\n backButtonElement.onclick = this.destroyFirstPage.bind(this);\n const backButtonElementImg = this.createDiv('img', undefined, 'scanovate-card-capture-index-arrow', undefined, undefined)\n const mainContainerElement = this.createDiv('div', 'main-container', 'scanovate-card-capture-index-main-container', 'hidden');\n const videoContainerElement = this.createDiv('div', undefined, 'scanovate-card-capture-index-video-container');\n const videoBoxElement = this.createDiv('video', 'video', 'scanovate-card-capture-index-video', 'hidden', undefined, undefined, {\n autoplay: null,\n muted: null,\n playsinline: null\n });\n videoBoxElement.muted = true;\n const tempImgResult = this.createDiv('img', 'resultImg', 'scanovate-card-capture-index-video');\n tempImgResult.classList.add('scanovate-card-capture-index-temp-background-img');\n const instructionsTextElement = this.createDiv('h1', 'video-title', 'scanovate-card-capture-index-video-title');\n videoContainerElement.appendChild(videoBoxElement);\n videoContainerElement.appendChild(instructionsTextElement);\n const captureButtonContainer = this.createDiv('div', undefined, 'scanovate-card-capture-index-capture-button-container');\n const captureButtonElement = this.createDiv('button', 'capture-button', 'scanovate-card-capture-index-capture-button', 'hidden')\n const modalElement = this.createDiv('div', 'myModal', 'scanovate-card-capture-index-modal');\n const modalContentElement = this.createDiv('div', 'modal-content', 'scanovate-card-capture-index-modal-content')\n const escapeButton = this.createDiv('div', undefined, 'scanovate-card-capture-index-close');\n escapeButton.innerHTML += (this.data && this.data.CONFIRM_BUTTON) || this.translation.CONFIRM_BUTTON;\n // escapeButton.onclick = escapeModal();\n const modalText = this.createDiv('p', undefined, 'scanovate-card-capture-index-modal-text')\n modalText.innerHTML += (this.data && this.data.POPUP_TEXT) || this.translation.POPUP_TEXT;\n //for local running\n const modalGif = this.createDiv('img', undefined, 'scanovate-card-capture-index-modal-gif', undefined, undefined, \"scanovate_card_capture/assets/flip_ocr.gif\");\n bodyElement.appendChild(loaderElement);\n // bodyElement.appendChild(backButtonElement);\n bodyElement.appendChild(mainContainerElement);\n bodyElement.appendChild(modalElement);\n backButtonElement.appendChild(backButtonElementImg);\n mainContainerElement.appendChild(backButtonElement);\n mainContainerElement.appendChild(videoContainerElement);\n mainContainerElement.appendChild(captureButtonContainer);\n videoContainerElement.appendChild(instructionsTextElement);\n videoContainerElement.appendChild(tempImgResult);\n captureButtonContainer.appendChild(captureButtonElement);\n modalElement.appendChild(modalContentElement);\n modalContentElement.appendChild(modalGif);\n modalContentElement.appendChild(modalText);\n modalContentElement && (modalContentElement.innerHTML += '<hr>');\n modalContentElement.appendChild(escapeButton);\n\n const elementsArray = [bodyElement, backButtonElement, mainContainerElement, videoContainerElement, modalElement];\n\n this.videoObj = new videoFromCamera(videoBoxElement, constraints);\n\n const init = (dontCreateVideo) => {\n for (let i = 0; i < elementsArray.length; i++) {\n if (elementsArray[i] === 'undefined' || elementsArray[i] === 'null') {\n return;\n }\n }\n // loaderElement.style.opacity = '1';\n backButtonElement.style.visibility = 'hidden';\n mainContainerElement.style.visibility = 'hidden';\n videoBoxElement.style.visibility = 'hidden';\n captureButtonElement.style.visibility = 'hidden';\n const postVideoInitFunc = function(){\n videoContainerElement.appendChild(videoBoxElement);\n checkOrientation();\n loaderElement.style.opacity = '0';\n backButtonElement.style.visibility = 'visible';\n mainContainerElement.style.visibility = 'visible';\n videoBoxElement.style.visibility = 'visible';\n }\n if(dontCreateVideo !== true){\n this.initPromise = this.videoObj.init().then(res => {\n postVideoInitFunc();\n }).catch(e => {\n debug(`Error name: ${e && e.name}, message: ${e && e.message}`)\n this.emit('error', e);\n });\n } else {\n postVideoInitFunc();\n }\n instructionsTextElement.innerHTML = (this.data && this.data.POSITION_INSTRUCTION_FRONT_SIDE) || this.translation.POSITION_INSTRUCTION_FRONT_SIDE;\n }\n const checkOrientation = () => {\n if (window.innerWidth > window.innerHeight) {\n // bodyElement.style.height = 'unset';\n backButtonElement.style.marginBottom = '225px'\n backButtonElement.style.marginRight = '15px'\n videoBoxElement.style.maxHeight = '248px'\n videoBoxElement.style.maxWidth = '440px'\n instructionsTextElement.style.fontSize = '17px'\n tempImgResult.style.maxHeight = '248px'\n tempImgResult.style.maxWidth = '440px'\n captureButtonContainer.style.right = '10px';\n captureButtonContainer.style.top = '45%';\n captureButtonContainer.style.bottom = 'unset';\n captureButtonContainer.style.left = 'unset';\n captureButtonContainer.style.width = '35'\n captureButtonContainer.style.height = '35'\n captureButtonContainer.style.marginLeft = '15'\n mainContainerElement.style.flexDirection = \"row\";\n instructionsTextElement.style.transform = 'rotate(0deg)';\n tempImgResult.style.transform = 'rotate(0deg)';\n // modalContentElement.style.margin = \"7% auto\";\n // modalContentElement.style.height = \"255\";\n } else {\n backButtonElement.style.marginBottom = '10px'\n backButtonElement.style.marginRight = '300px'\n bodyElement.style.height = '100%';\n videoBoxElement.style.maxHeight = '440px'\n videoBoxElement.style.maxWidth = '248px'\n instructionsTextElement.style.fontSize = '14px'\n tempImgResult.style.maxHeight = '440px'\n tempImgResult.style.maxWidth = '440px'\n captureButtonContainer.style.bottom = '20px';\n captureButtonContainer.style.left = '45%';\n captureButtonContainer.style.right = 'unset';\n captureButtonContainer.style.top = 'unset';\n tempImgResult.style.transform = 'rotate(90deg)'\n captureButtonContainer.style.width = '35'\n captureButtonContainer.style.height = '35'\n mainContainerElement.style.flexDirection = \"column\";\n instructionsTextElement.style.transform = 'rotate(90deg)';\n // modalContentElement.style.margin = \"50% auto\"\n // modalContentElement.style.height = \"265px\";\n }\n }\n init();\n const reusedInit = () => {\n init(true);\n }\n window.addEventListener('resize', reusedInit, false);\n\n const escapemodal = () => {\n modalElement.style.display = \"none\";\n tempImgResult.style.display = 'none';\n videoBoxElement.style.display = 'block';\n }\n\n const captureImage = () => {\n videoBoxElement.style.display = 'none'\n // videoContainerElement.appendChild(tempImgResult);\n tempImgResult.style.display = 'block';\n modalElement.style.display = \"flex\";\n instructionsTextElement.innerHTML = (this.data && this.data.POSITION_INSTRUCTION_BACK_SIDE) || this.translation.POSITION_INSTRUCTION_BACK_SIDE;\n let promiseImg = this.videoObj.capture();\n promiseImg.then(res => {\n images.push(res);\n tempImgResult.src = images[0];\n if (images.length === this.numOfPics) {\n modalElement.style.display = \"none\";\n videoBoxElement.style.display = 'block';\n tempImgResult.style.display = 'none';\n this.img_1 = images[0];\n this.img_2 = images[1];\n this.emit('success', {\n \"firstCapture\": images[0],\n \"secondCapture\": images[1] === undefined ? null : images[1]\n });\n if (document.querySelector('body')) {\n document.querySelector('body').style.background = 'unset';\n }\n if (this.data && this.data.SHOW_RESULTS) {\n this.redirectToResults();\n\n }\n instance = null;\n // debug(`KILL_STREAM_AFTER_USAGE: ${this.data.KILL_STREAM_AFTER_USAGE}`);\n // this.destroyFirstPage(this.data && this.data.KILL_STREAM_AFTER_USAGE);\n this.destroyFirstPage();\n }\n })\n }\n\n const destroy = () => {\n window.removeEventListener('resize', checkOrientation);\n }\n\n // captureButtonElement.onclick = captureImage;\n if(!img){\n mainContainerElement.onclick = () => {\n let style = window.getComputedStyle(modalElement);\n if (style.getPropertyValue(\"display\") === \"none\") {\n captureImage();\n }\n }\n escapeButton.onclick = escapemodal;\n }\n\n return bodyElement;\n\n }\n\n secondPage() {\n let texts = [];\n\n let img_1 = this.img_1\n let img_2 = null;\n if (this.numOfPics > 1) {\n img_2 = this.img_2;\n }\n let res = {\n \"firstCapture\": img_1,\n \"secondCapture\": img_2\n }\n this.emit('success', res);\n const bodyElement = document.createElement('main');\n const mainContainer = this.createDiv('div', 'main-container', 'scanovate-card-capture-main-container')\n const imgResultMainContainer = this.createDiv('div', undefined, 'scanovate-card-capture-image-result-container');\n const resultsContainer = this.createDiv('div', 'data-result', 'scanovate-card-capture-data-result')\n const ancherTag = this.createDiv('a');\n ancherTag.onclick = () => {\n this.redirectToCapture();\n\n }\n const backButton = this.createDiv('button', undefined, 'scanovate-card-capture-back-button');\n const backButtonImg = this.createDiv('img', undefined, 'scanovate-card-capture-arrow', undefined, undefined);\n const imageContiner = this.createDiv('div', 'image-result-container', 'scanovate-card-capture-image-result-container');\n const imgResultWrap_1 = this.createDiv('div', undefined, 'scanovate-card-capture-image-result-wrap');\n const imageTitle1 = this.createDiv('p', 'image-title-1', 'scanovate-card-capture-img-title');\n const imgResult1 = this.createDiv('img', 'image_1', 'scanovate-card-capture-img-result', undefined, undefined, img_1);\n const imgResultWrap_2 = this.createDiv('div', undefined, 'scanovate-card-capture-image-result-wrap');\n const imageTitle2 = this.createDiv('p', 'image-title-2', 'scanovate-card-capture-img-title');\n let imgResult2;\n if (this.numOfPics > 1) {\n imgResult2 = this.createDiv('img', 'image_2', 'scanovate-card-capture-img-result', undefined, undefined, img_2);\n }\n const title = this.createDiv('p', 'title', 'scanovate-card-capture-title')\n title.innerHTML = this.data.RESULTS_PAGE_TITLE\n const innerTitle = this.createDiv('p', 'text', 'scanovate-card-capture-inner-title')\n innerTitle.innerHTML = this.data.RESULTS_CONDITIONS_TITLE\n for (let i = 0; i < this.data.CONDITIONS.length; i++) {\n let text = this.createDiv('p', undefined, 'scanovate-card-capture-text')\n const indexLogo = this.createDiv('span', undefined, 'scanovate-card-capture-row-number');\n indexLogo.innerHTML += `${i + 1}`;\n const textData = this.createDiv('span', `inner-text-${i + 1}`);\n textData.innerHTML += this.data.CONDITIONS[i].CONDITION;\n text.appendChild(indexLogo);\n text.innerHTML += ` ${this.data.CONDITIONS[i].CONDITION}`;\n texts.push(text);\n }\n const captureButtonsContinaer = this.createDiv('div', undefined, 'scanovate-card-capture-buttons-container');\n const ancherTag1 = this.createDiv('a');\n ancherTag1.onclick = () => {\n this.destroySecondPage.call(this);\n window.removeEventListener('resize', checkOrientation);\n }\n const okButton = this.createDiv('input', undefined, 'scanovate-card-capture-ok-button');\n okButton.type = 'button';\n okButton.value = this.data.CONFIRM_BUTTON;\n const ancherTag2 = this.createDiv('a');\n ancherTag2.onclick = () => {\n this.redirectToCapture();\n };\n const tryAgainButton = this.createDiv('input', undefined, 'scanovate-card-capture-tryagain-button');\n tryAgainButton.type = 'button';\n tryAgainButton.value = this.data.TRY_AGAIN_BUTTON;\n\n bodyElement.appendChild(mainContainer);\n mainContainer.appendChild(imgResultMainContainer);\n mainContainer.appendChild(resultsContainer);\n imgResultMainContainer.appendChild(ancherTag);\n ancherTag.appendChild(backButton);\n backButton.appendChild(backButtonImg)\n imgResultMainContainer.appendChild(imageContiner)\n imageContiner.appendChild(imgResultWrap_1)\n imgResultWrap_1.appendChild(imageTitle1);\n imgResultWrap_1.appendChild(imgResult1);\n imageContiner.appendChild(imgResultWrap_2)\n imgResultWrap_2.appendChild(imageTitle2);\n if (this.numOfPics > 1) {\n imgResultWrap_2.appendChild(imgResult2);\n }\n resultsContainer.appendChild(title)\n resultsContainer.appendChild(innerTitle)\n resultsContainer.appendChild(texts[0])\n resultsContainer.appendChild(texts[1])\n resultsContainer.appendChild(texts[2])\n resultsContainer.appendChild(captureButtonsContinaer)\n captureButtonsContinaer.appendChild(okButton)\n captureButtonsContinaer.appendChild(ancherTag1)\n captureButtonsContinaer.appendChild(ancherTag2)\n ancherTag2.appendChild(tryAgainButton)\n ancherTag1.appendChild(okButton);\n const init = () => {\n if (this.data.NUMBER_OF_IMAGES === 1) {\n imgResultWrap_2.style.visibility = 'hidden'\n }\n if (window.innerWidth > window.innerHeight) {\n mainContainer.style.flexDirection = \"row\";\n imageContiner.style.justifyContent = \"unset\";\n resultsContainer.style.alignItems = \"unset\";\n resultsContainer.style.flex = 'inherit';\n resultsContainer.style.paddingLeft = '30'\n resultsContainer.style.paddingright = '30'\n imgResult1.style.width = '300';\n imgResult1.style.height = '176';\n if (this.numOfPics > 1) {\n imgResult2.style.width = '300';\n imgResult2.style.height = '176';\n }\n title.style.fontSize = '30px';\n } else {\n mainContainer.style.flexDirection = \"column\";\n imageContiner.style.justifyContent = \"space-evenly\";\n resultsContainer.style.paddingLeft = '30'\n resultsContainer.style.paddingright = '30'\n resultsContainer.style.alignItems = \"center\";\n resultsContainer.style.flex = '0.5';\n imgResult1.style.width = '500';\n imgResult1.style.height = '294';\n if (this.numOfPics > 1) {\n imgResult2.style.width = '500';\n imgResult2.style.height = '294';\n }\n title.style.fontSize = '30px';\n }\n }\n init();\n\n const checkOrientation = () => {\n init()\n }\n window.addEventListener('resize', checkOrientation, false);\n\n const destroy = () => {\n window.removeEventListener('resize', checkOrientation);\n }\n\n return bodyElement;\n\n }\n\n redirectToCapture(img) {\n // dom.innerHTML = '';\n // dom.childNodes[1].remove();\n // this.destroy();\n let bodyElement = this.firstPage(img);\n let body = document.querySelector('body');\n body.style.padding = '0';\n body.style.margin = '0';\n body.style.position = 'fixed';\n body.appendChild(bodyElement);\n if (document.querySelector('main')) {\n document.querySelector('main').remove()\n }\n // document.querySelector('head').innerHTML += '<link rel=\"stylesheet\" href=\"scanovate_card_capture/assets/main.css\" type=\"text/css\"/>';\n\n }\n\n redirectToResults() {\n // dom.innerHTML = '';\n // this.destroyFirstPage(this.data.KILL_STREAM_AFTER_USAGE);\n this.destroyFirstPage();\n let bodyElement = this.secondPage();\n let bd = document.querySelector('body');\n bd.style.position = 'fixed';\n bd.style.margin = '0';\n bd.style.padding = '0';\n // bd.childNodes[4].remove();\n bd.appendChild(bodyElement);\n if (document.querySelector('section')) {\n document.querySelector('section').remove()\n }\n if (document.querySelector('body')) {\n document.querySelector('body').style.background = 'unset';\n }\n // document.querySelector('head').innerHTML += '<link rel=\"stylesheet\" href=\"scanovate_card_capture/assets/main.css\" type=\"text/css\"/>';\n }\n\n init(configObj, img) {\n debug(`Card capture is initiating with the following config: ${JSON.stringify(configObj)}`);\n this.applyNewConfig(configObj || null);\n this.redirectToCapture(img);\n }\n\n destroyFirstPage() {\n debug(`destroy first page has called`);\n if (document.querySelector('section')) {\n document.querySelector('section').remove();\n }\n if (document.querySelector('body')) {\n document.querySelector('body').style.background = 'unset';\n }\n instance = null;\n document.querySelector('html').style.background = 'unset';\n window.onclick = null;\n this.initPromise = null;\n if (this.videoObj !== null && this.videoObj !== undefined) {\n this.videoObj.destroy(null);\n this.videoObj = null;\n }\n }\n\n destroySecondPage() {\n if (document.querySelector('main')) {\n document.querySelector('main').remove();\n }\n if (document.querySelector('body')) {\n document.querySelector('body').style.background = 'unset';\n }\n document.body.style.height = 'inherent';\n document.body.style.position = 'initial';\n document.body.style.padding = 'inherent';\n document.body.style.margin = 'inherent';\n }\n\n }\n\n if (instance === null) {\n instance = new Capture()\n }\n\n return instance;\n}\n\n\n\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* Active `debug` instances.\n\t*/\n\tcreateDebug.instances = [];\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn match;\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.enabled = createDebug.enabled(namespace);\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = selectColor(namespace);\n\t\tdebug.destroy = destroy;\n\t\tdebug.extend = extend;\n\t\t// Debug.formatArgs = formatArgs;\n\t\t// debug.rawLog = rawLog;\n\n\t\t// env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\tcreateDebug.instances.push(debug);\n\n\t\treturn debug;\n\t}\n\n\tfunction destroy() {\n\t\tconst index = createDebug.instances.indexOf(this);\n\t\tif (index !== -1) {\n\t\t\tcreateDebug.instances.splice(index, 1);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0; i < createDebug.instances.length; i++) {\n\t\t\tconst instance = createDebug.instances[i];\n\t\t\tinstance.enabled = createDebug.enabled(instance.namespace);\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","'use strict';\n\nmodule.exports = function UserMediaAccess(constraints) {\n // Older browsers might not implement mediaDevices at all, so we set an empty object first\n if (navigator.mediaDevices === undefined) {\n navigator.mediaDevices = {};\n }\n\n // Some browsers partially implement mediaDevices. We can't just assign an object\n // with getUserMedia as it would overwrite existing properties.\n // Here, we will just add the getUserMedia property if it's missing.\n if (navigator.mediaDevices.getUserMedia === undefined) {\n // First get a hold of the legacy getUserMedia, if present\n const getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;\n\n // Some browsers just don't implement it - return a rejected promise with an error\n // to keep a consistent interface\n if (!getUserMedia) {\n return Promise.reject(new Error('getUserMedia'));\n }\n\n // Otherwise, wrap the call to the old navigator.getUserMedia with a Promise\n return new Promise(function (resolve, reject) {\n getUserMedia.call(navigator, constraints, resolve, reject);\n });\n } else {\n return navigator.mediaDevices.getUserMedia(constraints);\n }\n};","'use strict'\n\nconst backCamerasKeywords = [\n \"rear\",\n \"back\",\n \"rück\",\n \"arrière\",\n \"trasera\",\n \"trás\",\n \"traseira\",\n \"posteriore\",\n \"åŽé¢\",\n \"後é¢\",\n \"背é¢\",\n \"åŽç½®\", // alternative\n \"後置\", // alternative\n \"背置\", // alternative\n \"задней\",\n \"الخلÙية\",\n \"후\",\n \"arka\",\n \"achterzijde\",\n \"หลัง\",\n \"baksidan\",\n \"bagside\",\n \"sau\",\n \"bak\",\n \"tylny\",\n \"takakamera\",\n \"belakang\",\n \"×חורית\",\n \"πίσω\",\n \"spate\",\n \"hátsó\",\n \"zadnÃ\",\n \"darrere\",\n \"zadná\",\n \"заднÑ\",\n \"stražnja\",\n \"belakang\",\n \"बैक\"\n]\n\nmodule.exports = {\n isLabelBackLabel\n}\n\nfunction isLabelBackLabel(label){\n if(!label){\n return false;\n }\n for(let i = 0; i < backCamerasKeywords.length; i++){\n if(label.toLowerCase().includes(backCamerasKeywords[i])){\n return true;\n }\n }\n return false;\n}","'use strict';\n\nmodule.exports = {\n getTranslationObject\n};\n\n/**\n * Gets a language object instance\n * @param {String} language a country's internet code, e.g. 'IL'\n */\nfunction getTranslationObject(language) {\n if(language === 'en'){\n return require('./english');\n } else {\n return require('./hebrew')\n }\n}","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n var args = [].slice.call(arguments, 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n"],"sourceRoot":""}