{"version":3,"sources":["webpack:///./app/javascript/src/device-choice/support.js","webpack:///./app/javascript/packs/device-choice-support.js"],"names":["DeviceChoice","this","allDevices","window","tbDevices","setupControls","setupSearch","document","querySelectorAll","forEach","input","addEventListener","updateResults","bind","a","onClickDevice","e","clickedElement","target","i","tagName","parentNode","getAttribute","htmlString","nextElementSibling","innerHTML","trim","getElementById","style","display","scrollTo","top","manufacturers","Array","from","map","el","iosVersions","androidVersions","resolutions","length","push","querySelector","checked","includes","splice","indexOf","newResults","filter","device","platform_name","resolution","test_environment","version","renderDevices","devices","fuse","Fuse","shouldSort","threshold","location","distance","maxPatternLength","minMatchCharLength","keys","context","term","value","results","search","result","item","keyCode","preventDefault","classNames","available","sampleApp","img","name","cpu","model_number","join","deviceChoice"],"mappings":"81CAAqBA,E,WACpB,c,4FAAgB,CAAD,QACdC,KAAKC,WAAaC,OAAOC,UACzBH,KAAKI,gBACLJ,KAAKK,YAAYL,KAAKC,Y,oDAGvB,WAAkB,IAAD,OAChBK,SAASC,iBAAiB,qBAAqBC,SAAQ,SAACC,GACvDA,EAAMC,iBAAiB,SAAU,EAAKC,cAAcC,KAAK,OAG1DN,SAASC,iBAAiB,oCAAoCC,SAAQ,SAACK,GACtEA,EAAEH,iBAAiB,QAAS,EAAKI,cAAcF,KAAK,S,2BAItD,SAAeG,GAGd,IAFA,IAAIC,EAAiBD,EAAEE,OACnBC,EAAI,EACDF,GAA6C,MAA3BA,EAAeG,SAAmBD,EAAI,GAC9DF,EAAiBA,EAAeI,WAChCF,GAAK,EAGN,GAAiD,SAA7CF,EAAeK,aAAa,aAAyB,CACxD,IAAMC,EAAaN,EAAeO,mBAAmBC,UAAUC,OAC/DnB,SAASoB,eAAe,WAAWF,UAAYF,EAC/ChB,SAASoB,eAAe,gBAAgBC,MAAMC,QAAU,QACxD1B,OAAO2B,SAAS,CAAEC,IAAK,O,2BAIzB,SAAef,GACd,IAAMC,EAAiBD,EAAEE,OACnBc,EAAgBC,MAAMC,KAAK3B,SAASC,iBAAiB,4DAA4D2B,KAAI,SAACC,GAAD,OAAQA,EAAGd,aAAa,iBAC7Ie,EAAcJ,MAAMC,KAAK3B,SAASC,iBAAiB,2DAA2D2B,KAAI,SAACC,GAAD,OAAQA,EAAGd,aAAa,iBAC1IgB,EAAkBL,MAAMC,KAAK3B,SAASC,iBAAiB,+DAA+D2B,KAAI,SAACC,GAAD,OAAQA,EAAGd,aAAa,iBAClJiB,EAAcN,MAAMC,KAAK3B,SAASC,iBAAiB,0DAA0D2B,KAAI,SAACC,GAAD,OAAQA,EAAGd,aAAa,iBAElH,IAAzBU,EAAcQ,SACjBR,EAAcS,KAAK,OACnBlC,SAASmC,cAAc,uDAAuDC,SAAU,GAGrFX,EAAcQ,OAAS,GAAKR,EAAcY,SAAS,QAAwD,QAA9C3B,EAAeK,aAAa,gBAC5Ff,SAASmC,cAAc,uDAAuDC,SAAU,EACxFX,EAAca,OAAOb,EAAcc,QAAQ,OAAQ,IAGzB,IAAvBT,EAAYG,SACfH,EAAYI,KAAK,OACjBlC,SAASmC,cAAc,qDAAqDC,SAAU,GAGnFN,EAAYG,OAAS,GAAKH,EAAYO,SAAS,QAAwD,QAA9C3B,EAAeK,aAAa,gBACxFf,SAASmC,cAAc,qDAAqDC,SAAU,EACtFN,EAAYQ,OAAOR,EAAYS,QAAQ,OAAQ,IAGjB,IAA3BR,EAAgBE,SACnBF,EAAgBG,KAAK,OACrBlC,SAASmC,cAAc,yDAAyDC,SAAU,GAGvFL,EAAgBE,OAAS,GAAKF,EAAgBM,SAAS,QAAwD,QAA9C3B,EAAeK,aAAa,gBAChGf,SAASmC,cAAc,yDAAyDC,SAAU,EAC1FL,EAAgBO,OAAOP,EAAgBQ,QAAQ,OAAQ,IAG7B,IAAvBP,EAAYC,SACfD,EAAYE,KAAK,OACjBlC,SAASmC,cAAc,qDAAqDC,SAAU,GAGnFJ,EAAYC,OAAS,GAAKD,EAAYK,SAAS,QAAwD,QAA9C3B,EAAeK,aAAa,gBACxFf,SAASmC,cAAc,qDAAqDC,SAAU,EACtFJ,EAAYM,OAAON,EAAYO,QAAQ,OAAQ,IAGhD,IACIC,EAAU,EADA9C,KAAKC,YAGd8B,EAAcY,SAAS,SAC3BG,EAAaA,EAAWC,QAAO,SAACC,GAAD,OAAYjB,EAAcY,SAASK,EAAOC,mBAErEX,EAAYK,SAAS,SACzBG,EAAaA,EAAWC,QAAO,SAACC,GAAD,OAAYV,EAAYK,SAASK,EAAOE,gBAEnEb,EAAgBM,SAAS,SAC7BG,EAAaA,EAAWC,QAAO,SAACC,GAAD,OAAYX,EAAgBM,SAASK,EAAOG,iBAAiBC,UAAqC,YAAzBJ,EAAOC,kBAE3Gb,EAAYO,SAAS,SACzBG,EAAaA,EAAWC,QAAO,SAACC,GAAD,OAAYZ,EAAYO,SAASK,EAAOG,iBAAiBC,UAAqC,QAAzBJ,EAAOC,kBAG5GjD,KAAKqD,cAAcP,K,yBAGpB,SAAaQ,GACZ,IASMC,EAAO,IAAIC,KAAKF,EATN,CACfG,YAAY,EACZC,UAAW,GACXC,SAAU,EACVC,SAAU,IACVC,iBAAkB,GAClBC,mBAAoB,EACpBC,KAAM,CAAC,UAGFC,EAAUhE,KAEhBM,SAASC,iBAAiB,iCAAiCC,SAAQ,SAACC,GACnEA,EAAMC,iBAAiB,SAAS,WAC/B,IAAMuD,EAAOjE,KAAKkE,MACZC,EAAUZ,EAAKa,OAAOH,GAAM/B,KAAI,SAACmC,GAAD,OAAYA,EAAOC,QACrDH,EAAQ5B,OAAS,EACpByB,EAAQX,cAAcc,GAEtBH,EAAQX,cAAcW,EAAQ/D,eAIhCQ,EAAMC,iBAAiB,WAAW,SAAUK,GAC3C,GAAkB,KAAdA,EAAEwD,QAEL,OADAxD,EAAEyD,kBACK,U,2BAMX,SAAelB,GAqBdhD,SAASmC,cAAc,kCAAkCjB,UAAY8B,EAAQpB,KApBhE,SAACc,GACb,IAAMyB,EAAazB,EAAO0B,UAAY,YAAc,cAC9CC,EAAqC,YAAzB3B,EAAOC,cAA8B,2CAA6C,2CACpG,MAAM,cAAN,OAAqBwB,EAArB,oDACgCzB,EAAO4B,IADvC,kDAEsB5B,EAAO6B,KAF7B,yDAGiC7B,EAAOE,WAHxC,kDAI0BF,EAAO8B,IAJjC,oDAK4B9B,EAAO+B,aALnC,uQAQ8B/B,EAAOG,iBAAiBC,QARtD,2CAS0BuB,EAT1B,kDAUiC3B,EAAO6B,KAVxC,6FAYmC7B,EAAOC,cAZ1C,oDAiBsF+B,KAAK,S,mFCxJ9F9E,OAAO+E,aAAe,IAAIlF,I","file":"js/device-choice-support-6d10a14cdc10169fe127.chunk.js","sourcesContent":["export default class DeviceChoice {\n\tconstructor () {\n\t\tthis.allDevices = window.tbDevices\n\t\tthis.setupControls()\n\t\tthis.setupSearch(this.allDevices)\n\t}\n\n\tsetupControls () {\n\t\tdocument.querySelectorAll('#deviceForm input').forEach((input) => {\n\t\t\tinput.addEventListener('change', this.updateResults.bind(this))\n\t\t})\n\n\t\tdocument.querySelectorAll('.device-choice .search-results a').forEach((a) => {\n\t\t\ta.addEventListener('click', this.onClickDevice.bind(this))\n\t\t})\n\t}\n\n\tonClickDevice (e) {\n\t\tlet clickedElement = e.target\n\t\tlet i = 0\n\t\twhile (clickedElement && clickedElement.tagName !== 'A' && i < 4) {\n\t\t\tclickedElement = clickedElement.parentNode\n\t\t\ti += 1\n\t\t}\n\n\t\tif (clickedElement.getAttribute('data-type') === 'caps') {\n\t\t\tconst htmlString = clickedElement.nextElementSibling.innerHTML.trim()\n\t\t\tdocument.getElementById('capCode').innerHTML = htmlString\n\t\t\tdocument.getElementById('flash_notice').style.display = 'block'\n\t\t\twindow.scrollTo({ top: 0 })\n\t\t}\n\t}\n\n\tupdateResults (e) {\n\t\tconst clickedElement = e.target\n\t\tconst manufacturers = Array.from(document.querySelectorAll('#deviceForm input[data-category=\"manufacturer\"]:checked')).map((el) => el.getAttribute('data-value'))\n\t\tconst iosVersions = Array.from(document.querySelectorAll('#deviceForm input[data-category=\"ios-version\"]:checked')).map((el) => el.getAttribute('data-value'))\n\t\tconst androidVersions = Array.from(document.querySelectorAll('#deviceForm input[data-category=\"android-version\"]:checked')).map((el) => el.getAttribute('data-value'))\n\t\tconst resolutions = Array.from(document.querySelectorAll('#deviceForm input[data-category=\"resolution\"]:checked')).map((el) => el.getAttribute('data-value'))\n\n\t\tif (manufacturers.length === 0) {\n\t\t\tmanufacturers.push('all')\n\t\t\tdocument.querySelector('#deviceForm ul.manufacturer input[data-value=\"all\"]').checked = true\n\t\t}\n\n\t\tif (manufacturers.length > 1 && manufacturers.includes('all') && clickedElement.getAttribute('data-value') !== 'all') {\n\t\t\tdocument.querySelector('#deviceForm ul.manufacturer input[data-value=\"all\"]').checked = false\n\t\t\tmanufacturers.splice(manufacturers.indexOf('all'), 1)\n\t\t}\n\n\t\tif (iosVersions.length === 0) {\n\t\t\tiosVersions.push('all')\n\t\t\tdocument.querySelector('#deviceForm ul.iosVersion input[data-value=\"all\"]').checked = true\n\t\t}\n\n\t\tif (iosVersions.length > 1 && iosVersions.includes('all') && clickedElement.getAttribute('data-value') !== 'all') {\n\t\t\tdocument.querySelector('#deviceForm ul.iosVersion input[data-value=\"all\"]').checked = false\n\t\t\tiosVersions.splice(iosVersions.indexOf('all'), 1)\n\t\t}\n\n\t\tif (androidVersions.length === 0) {\n\t\t\tandroidVersions.push('all')\n\t\t\tdocument.querySelector('#deviceForm ul.androidVersion input[data-value=\"all\"]').checked = true\n\t\t}\n\n\t\tif (androidVersions.length > 1 && androidVersions.includes('all') && clickedElement.getAttribute('data-value') !== 'all') {\n\t\t\tdocument.querySelector('#deviceForm ul.androidVersion input[data-value=\"all\"]').checked = false\n\t\t\tandroidVersions.splice(androidVersions.indexOf('all'), 1)\n\t\t}\n\n\t\tif (resolutions.length === 0) {\n\t\t\tresolutions.push('all')\n\t\t\tdocument.querySelector('#deviceForm ul.resolution input[data-value=\"all\"]').checked = true\n\t\t}\n\n\t\tif (resolutions.length > 1 && resolutions.includes('all') && clickedElement.getAttribute('data-value') !== 'all') {\n\t\t\tdocument.querySelector('#deviceForm ul.resolution input[data-value=\"all\"]').checked = false\n\t\t\tresolutions.splice(resolutions.indexOf('all'), 1)\n\t\t}\n\n\t\tconst items = this.allDevices\n\t\tlet newResults = [...items]\n\n\t\tif (!manufacturers.includes('all')) {\n\t\t\tnewResults = newResults.filter((device) => manufacturers.includes(device.platform_name))\n\t\t}\n\t\tif (!resolutions.includes('all')) {\n\t\t\tnewResults = newResults.filter((device) => resolutions.includes(device.resolution))\n\t\t}\n\t\tif (!androidVersions.includes('all')) {\n\t\t\tnewResults = newResults.filter((device) => androidVersions.includes(device.test_environment.version) || device.platform_name !== 'Android')\n\t\t}\n\t\tif (!iosVersions.includes('all')) {\n\t\t\tnewResults = newResults.filter((device) => iosVersions.includes(device.test_environment.version) || device.platform_name !== 'iOS')\n\t\t}\n\n\t\tthis.renderDevices(newResults)\n\t}\n\n\tsetupSearch (devices) {\n\t\tconst options = {\n\t\t\tshouldSort: true,\n\t\t\tthreshold: 0.6,\n\t\t\tlocation: 0,\n\t\t\tdistance: 100,\n\t\t\tmaxPatternLength: 32,\n\t\t\tminMatchCharLength: 1,\n\t\t\tkeys: ['name']\n\t\t}\n\t\tconst fuse = new Fuse(devices, options)\n\t\tconst context = this\n\n\t\tdocument.querySelectorAll('.device-choice .search-device').forEach((input) => {\n\t\t\tinput.addEventListener('keyup', function () {\n\t\t\t\tconst term = this.value\n\t\t\t\tconst results = fuse.search(term).map((result) => result.item)\n\t\t\t\tif (results.length > 0) {\n\t\t\t\t\tcontext.renderDevices(results)\n\t\t\t\t} else {\n\t\t\t\t\tcontext.renderDevices(context.allDevices)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tinput.addEventListener('keydown', function (e) {\n\t\t\t\tif (e.keyCode === 13) {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\trenderDevices (devices) {\n\t\tconst Item = (device) => {\n\t\t\tconst classNames = device.available ? 'available' : 'unavailable'\n\t\t\tconst sampleApp = device.platform_name === 'Android' ? 'https://testingbot.com/appium/sample.apk' : 'https://testingbot.com/appium/sample.ipa'\n\t\t\treturn `
  • \n\t\t\t\t
    \n\t\t\t\t
    ${device.name}
    \n\t\t\t\t
    Resolution: ${device.resolution}
    \n\t\t\t\t
    CPU: ${device.cpu}
    \n\t\t\t\t
    Model: ${device.model_number}
    \n\t\t\t\tDesired Capabilities\n\t\t\t\t
    DesiredCapabilities caps = new DesiredCapabilities();\ncaps.setCapability(\"version\", \"${device.test_environment.version}\");\ncaps.setCapability(\"app\", \"${sampleApp}\");\ncaps.setCapability(\"deviceName\", \"${device.name}\");\ncaps.setCapability(\"realDevice\", true);\ncaps.setCapability(\"platformName\", \"${device.platform_name}\");
    \n\t\t\t\t
    \n\t\t\t
  • `\n\t\t}\n\n\t\tdocument.querySelector('.device-choice .search-results').innerHTML = devices.map(Item).join('')\n\t}\n}\n","import DeviceChoice from './../src/device-choice/support.js'\nwindow.deviceChoice = new DeviceChoice()\n"],"sourceRoot":""}