{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./app/javascript/packs/application.js","webpack:///./app/javascript/vnc.js","webpack:///./app/javascript/stripe.js","webpack:///./app/javascript/intercom.js","webpack:///./app/javascript/machine.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","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","Rails","start","Turbolinks","document","addEventListener","button","querySelector","onclick","ga","hitType","eventCategory","eventAction","classList","remove","vncWs","adjustVNCViewerSize","el","getElementById","getComputedStyle","parentNode","w","clientWidth","parseFloat","paddingLeft","paddingRight","style","width","height","disconnect","screen","vncWsAddr","getAttribute","RFB","viewOnly","scaleViewport","vncConnect","window","stripe","card","setupBillingForm","elements","base","color","fontFamily","fontSize","fontStyle","fontWeight","letterSpacing","mount","event","displayError","error","textContent","message","preventDefault","createToken","then","result","disabled","token","form","hiddenInput","createElement","setAttribute","id","appendChild","submit","stripeTokenHandler","add","script","type","src","body","onload","Stripe","process","innerWidth","update","Intercom","ic","intercomSettings","arguments","q","args","push","async","x","getElementsByTagName","insertBefore","attachEvent","loadIntercom","hide_default_launcher","link","attributes","removeNamedItem","onSSHSelectionChange","e","sshPubkey","sshOptions","target","checked","contains","required","onPasswordBlur","passwordValidation","length","onPasswordChange","generatePassword","ajax","url","success","data","passwordField","password","failure","importGitHubKeys","encodeURIComponent","keys","join","$","modal","alert","statusWs","close","statusWsAddr","progress","WebSocket","innerText","transitionStyle","transition","setTimeout","JSON","parse","Progress","Completed","Failed","visit","showLoadingProgress","sshCheckbox","passwordInput","githubImportButton"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,UAIjBlC,EAAoBA,EAAoBmC,EAAI,G,kCClFrD,2BAcAC,MAAMC,QACNC,WAAWD,QAEXE,SAASC,iBAAiB,mBAAmB,WAC3C,IAAMC,EAASF,SAASG,cAAc,oBAClCD,IACFA,EAAOE,QAAU,WACfC,GAAG,OAAQ,CACTC,QAAS,QACTC,cAAe,SACfC,YAAa,YAGjBN,EAAOO,UAAUC,OAAO,wB,cC3B5B,IAAIC,EAEJ,SAASC,IACP,IAAMC,EAAKb,SAASc,eAAe,kBACnC,GAAKD,EAAL,CACA,IAAMjB,EAAImB,iBAAiBF,EAAGG,YAC1BC,EACFJ,EAAGG,WAAWE,YACdC,WAAWvB,EAAEwB,aACbD,WAAWvB,EAAEyB,cACfJ,EAAIA,EAAI,IAAM,IAAMA,EACpBJ,EAAGS,MAAMC,MAAT,UAAoBN,EAApB,MACAJ,EAAGS,MAAME,OAAT,UAAyB,IAAJP,EAArB,OAeFjB,SAASC,iBAAiB,mBAAmB,WACvCU,IACFA,EAAMc,aACNd,EAAQ,MAfZ,WACE,IAAMe,EAAS1B,SAASc,eAAe,kBACvC,GAAKY,EAAL,CACA,IAAMC,EAAYD,EAAOE,aAAa,gBACjCD,IAELf,KACAD,EAAQ,IAAIkB,IAAIH,EAAQC,IAClBG,UAAW,EACjBnB,EAAMoB,cAAgB,UAQtBC,MAGFC,OAAOhC,iBAAiB,SAAUW,I,cCnClC,IAAIsB,EAAS,KACTC,EAAO,KAeX,SAASC,IACP,IAAMC,EAAWH,EAAOG,YAExBF,EAAOE,EAASlD,OAAO,OAAQ,CAC7BmC,MAAO,CACLgB,KAAM,CACJC,MAAO,UACPC,WAAY,YACZC,SAAU,OACVC,UAAW,SACXC,WAAY,MACZC,cAAe,cAIhBC,MAAM,iBACXV,EAAKlC,iBAAiB,UAAU,SAAsB6C,GACpD,IAAMC,EAAe/C,SAASc,eAAe,eACzCgC,EAAME,MACRD,EAAaE,YAAcH,EAAME,MAAME,QAEvCH,EAAaE,YAAc,MAGlBjD,SAASc,eAAe,gBAChCb,iBAAiB,UAAU,SAAkB6C,GAChDA,EAAMK,iBAENjB,EACGkB,YAAYjB,EAAM,CACjB/D,KAAM4B,SAASc,eAAe,QAAQhC,QAEvCuE,MAAK,SAAuBC,GACvBA,EAAON,OAEYhD,SAASc,eAAe,eAChCmC,YAAcK,EAAON,MAAME,QAExClD,SAASG,cAAc,uBAAuB8C,YAAc,OAC5DjD,SAASG,cAAc,uBAAuBoD,UAAW,GApDnE,SAA4BC,GAE1B,IAAMC,EAAOzD,SAASc,eAAe,gBAC/B4C,EAAc1D,SAAS2D,cAAc,SAC3CD,EAAYE,aAAa,OAAQ,UACjCF,EAAYE,aAAa,OAAQ,gBACjCF,EAAYE,aAAa,QAASJ,EAAMK,IACxCJ,EAAKK,YAAYJ,GAGjBD,EAAKM,SA6CGC,CAAmBV,EAAOE,aAKlCxD,SAASG,cAAc,oBAAoBM,UAAUC,OAAO,UAC5DV,SAASG,cAAc,uBAAuBM,UAAUwD,IAAI,UAc9DjE,SAASC,iBAAiB,mBAAmB,WAX7C,IACQiE,EAWDlE,SAASG,cAAc,iBAIvB+B,EAGHE,MAlBI8B,EAASlE,SAAS2D,cAAc,WAC/BQ,KAAO,kBACdD,EAAOE,IAAM,4BACbpE,SAASqE,KAAKP,YAAYI,GAC1BA,EAAOI,OAAS,WACdpC,EAASD,OAAOsC,OAAOC,oCACvBpC,MAMAD,EAAO,QAUXF,OAAOhC,iBAAiB,UAAU,WAC3BkC,IACDF,OAAOwC,YAAc,IACvBtC,EAAKuC,OAAO,CAAEpD,MAAO,CAAEgB,KAAM,CAAEG,SAAU,WAEzCN,EAAKuC,OAAO,CAAEpD,MAAO,CAAEgB,KAAM,CAAEG,SAAU,gB,cC9F7CzC,SAASC,iBAAiB,mBAAmB,WACtCgC,OAAO0C,UAgCd,WAEE,IAAI1D,EAAIgB,OACJ2C,EAAK3D,EAAE0D,SACX,GAAkB,oBAAPC,EACTA,EAAG,sBACHA,EAAG,SAAU3D,EAAE4D,sBACV,CACL,IAAI1G,EAAI6B,SACJnC,EAAI,SAAJA,IACFA,EAAEK,EAAE4G,YAENjH,EAAEkH,EAAI,GACNlH,EAAEK,EAAI,SAAS8G,GACbnH,EAAEkH,EAAEE,KAAKD,IAEX/D,EAAE0D,SAAW9G,EACb,IAAIC,EAAI,WACN,IAAI8B,EAAIzB,EAAEwF,cAAc,UACxB/D,EAAEuE,KAAO,kBACTvE,EAAEsF,OAAQ,EACVtF,EAAEwE,IAAM,6CACR,IAAIe,EAAIhH,EAAEiH,qBAAqB,UAAU,GACzCD,EAAEnE,WAAWqE,aAAazF,EAAGuF,IAE3BlE,EAAEqE,YACJrE,EAAEqE,YAAY,SAAUxH,GAExBmD,EAAEhB,iBAAiB,OAAQnC,GAAG,IA3DhCyH,GAEEvF,SAASG,cAAc,mBACzB8B,OAAO0C,SAAS,SAAU,CACxBa,uBAAuB,IAGzBvD,OAAO0C,SAAS,UAIlB,IAAIc,EAAOzF,SAASG,cAAc,yBAC9BsF,IACFA,EAAKrF,QAAU,WAEb,OADAuE,SAAS,SACF,GAETc,EAAKC,WAAWC,gBAAgB,wBAIlCF,EAAOzF,SAASG,cAAc,8BAE5BsF,EAAKrF,QAAU,WAEb,OADAuE,SAAS,aACF,GAETc,EAAKC,WAAWC,gBAAgB,6B,cC9BpC,SAASC,EAAqBC,GAC5B,IAAMC,EAAY9F,SAASG,cAAc,kBACnC4F,EAAa/F,SAASG,cAAc,mBACrC2F,GAAcC,IAIfF,EAAEG,OAAOC,QACPF,EAAWtF,UAAUyF,SAAS,YAChCH,EAAWtF,UAAUC,OAAO,UAC5BoF,EAAUK,UAAW,GAEbJ,EAAWtF,UAAUyF,SAAS,YACxCH,EAAWtF,UAAUwD,IAAI,UACzB6B,EAAUK,UAAW,IAgBzB,SAASC,EAAeP,GACtB,IAAMQ,EAAqBrG,SAASG,cAAc,2BAC9C0F,EAAEG,OAAOlH,MAAMwH,OAAS,GAAKT,EAAEG,OAAOlH,MAAMwH,QAAU,IACxDD,EAAmBpD,YAAc,wBAC5BoD,EAAmB5F,UAAUyF,SAAS,gBACzCG,EAAmB5F,UAAUwD,IAAI,gBAKvC,SAASsC,EAAiBV,GACxB,IAAMQ,EAAqBrG,SAASG,cAAc,2BAC5C0F,EAAEG,OAAOlH,MAAMwH,OAAS,GAAKT,EAAEG,OAAOlH,MAAMwH,QAAU,IAC1DD,EAAmBpD,YACjB,gDACEoD,EAAmB5F,UAAUyF,SAAS,gBACxCG,EAAmB5F,UAAUC,OAAO,gBAK1C,SAAS8F,EAAiB1D,GACxB,IAAM5C,EAAS4C,EAAMkD,OACrB9F,EAAOqD,UAAW,EAClB1D,MAAM4G,KAAK,CACTtC,KAAM,OACNuC,IAAK,qBACLC,QAAS,SAAwBC,GAC/B,IAAMC,EAAgB7G,SAASG,cAAc,qBAC7C0G,EAAc/H,MAAQ8H,EAAKE,SAC3BP,EAAiB,CAAEP,OAAQa,IAC3B3G,EAAOqD,UAAW,GAEpBwD,QATS,WAUP7G,EAAOqD,UAAW,KAKxB,SAASyD,EAAiBnB,GACxBA,EAAEG,OAAOzC,UAAW,EACpB1D,MAAM4G,KAAK,CACTtC,KAAM,OACNuC,IAAK,sBACLE,KAAK,mBAAD,OAAqBK,mBACvBjH,SAASG,cAAc,uBAAuBrB,QAEhD6H,QANS,SAMDC,IACNf,EAAEG,OAAOzC,UAAW,EAChBqD,EAAKM,OACQlH,SAASG,cAAc,kBAC/BrB,MAAQ8H,EAAKM,KAAKC,KAAK,MAE9BC,EAAE,gBAAgBC,MAAM,SACA,cAAfT,EAAK5D,OAEdsE,MAAM,mCAGVP,QAlBS,WAoBPO,MAAM,iBACNzB,EAAEG,OAAOzC,UAAW,KAkB1B,IAAIgE,EA8BJvH,SAASC,iBAAiB,mBAAmB,YA5B7C,WACMsH,IACFA,EAASC,QACTD,EAAW,MAEb,IAAME,EAAezH,SAASc,eAAe,qBAC7C,GAAI2G,EAAc,CAEhB,IAAMC,EAAW1H,SAASG,cAAc,2BACxCoH,EAAW,IAAII,UAAUF,EAAaG,YAC7B3H,iBAAiB,WAAW,SAAyB6C,GAC5D,GAA6B,SAAzB4E,EAASpG,MAAMC,MAAkB,CACnC,IAAMsG,EAAkBH,EAASpG,MAAMwG,WACvCJ,EAASpG,MAAMwG,WAAa,OAC5BC,YAAW,WACTL,EAASpG,MAAMwG,WAAaD,IAC3B,IAEL,IAAMjB,EAAOoB,KAAKC,MAAMnF,EAAM8D,MAE9B,GADAc,EAASpG,MAAMC,MAAf,UAA0BqF,EAAKsB,SAA/B,KACItB,EAAKuB,WAAavB,EAAKwB,OAAQ,CACjC,IAAM1B,EAAM1G,SAASc,eAAe,wBAAwB8G,UAC5D7H,WAAWsI,MAAM3B,QAOvB4B,GAEA,IAAM7C,EAAOzF,SAASG,cAAc,6BAChCsF,IACFA,EAAKrF,QAAUoG,EACff,EAAKC,WAAWC,gBAAgB,2BAGlC,IAAM4C,EAAcvI,SAASG,cAAc,kBACvCoI,IACFA,EAAYtI,iBAAiB,SAAU2F,GACvC2C,EAAY9H,UAAUC,OAAO,iBAC7BkF,EAAqB,CAAEI,OAAQuC,KAYjC,IAAMC,EAAgBxI,SAASG,cAAc,yBACzCqI,IACFA,EAAcvI,iBAAiB,OAAQmG,GACvCoC,EAAcvI,iBAAiB,QAASsG,GACxCiC,EAAc9C,WAAWC,gBAAgB,wBAG3C,IAAM8C,EAAqBzI,SAASG,cAAc,qBAC9CsI,IACFA,EAAmBrI,QAAU4G,EAC7ByB,EAAmBhI,UAAUC,OAAO,qBAItC0G,EAAE,kCAAkCC,MAAM","file":"js/application-b866816bfc4eaa99de85.js","sourcesContent":[" \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 = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","/* eslint no-console:0 */\n// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n//\n// To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate\n// layout file, like app/views/layouts/application.html.erb\nimport \"vnc\";\nimport \"stripe\";\nimport \"intercom\";\n\nimport \"machine\";\n\nRails.start();\nTurbolinks.start();\n\ndocument.addEventListener(\"turbolinks:load\", function onLoadForApp() {\n const button = document.querySelector(\".js-track-signup\");\n if (button) {\n button.onclick = function trackSignup() {\n ga(\"send\", {\n hitType: \"event\",\n eventCategory: \"Button\",\n eventAction: \"signup\"\n });\n };\n button.classList.remove(\"js-track-signup\");\n }\n});\n","let vncWs;\n\nfunction adjustVNCViewerSize() {\n const el = document.getElementById(\"zeromac-screen\");\n if (!el) return;\n const s = getComputedStyle(el.parentNode);\n let w =\n el.parentNode.clientWidth -\n parseFloat(s.paddingLeft) -\n parseFloat(s.paddingRight);\n w = w < 320 ? 320 : w;\n el.style.width = `${w}px`;\n el.style.height = `${w * 0.75}px`;\n}\n\nfunction vncConnect() {\n const screen = document.getElementById(\"zeromac-screen\");\n if (!screen) return;\n const vncWsAddr = screen.getAttribute(\"data-ws-addr\");\n if (!vncWsAddr) return;\n\n adjustVNCViewerSize();\n vncWs = new RFB(screen, vncWsAddr);\n vncWs.viewOnly = false;\n vncWs.scaleViewport = \"local\";\n}\n\ndocument.addEventListener(\"turbolinks:load\", () => {\n if (vncWs) {\n vncWs.disconnect();\n vncWs = null;\n }\n vncConnect();\n});\n\nwindow.addEventListener(\"resize\", adjustVNCViewerSize);\n","let stripe = null;\nlet card = null;\n\nfunction stripeTokenHandler(token) {\n // Insert the token ID into the form so it gets submitted to the server\n const form = document.getElementById(\"payment-form\");\n const hiddenInput = document.createElement(\"input\");\n hiddenInput.setAttribute(\"type\", \"hidden\");\n hiddenInput.setAttribute(\"name\", \"stripe_token\");\n hiddenInput.setAttribute(\"value\", token.id);\n form.appendChild(hiddenInput);\n\n // Submit the form\n form.submit();\n}\n\nfunction setupBillingForm() {\n const elements = stripe.elements();\n\n card = elements.create(\"card\", {\n style: {\n base: {\n color: \"#495057\",\n fontFamily: \"system-ui\",\n fontSize: \"16px\",\n fontStyle: \"normal\",\n fontWeight: \"400\",\n letterSpacing: \"normal\"\n }\n }\n });\n card.mount(\"#card-element\");\n card.addEventListener(\"change\", function onChangeCard(event) {\n const displayError = document.getElementById(\"card-errors\");\n if (event.error) {\n displayError.textContent = event.error.message;\n } else {\n displayError.textContent = \"\";\n }\n });\n const form = document.getElementById(\"payment-form\");\n form.addEventListener(\"submit\", function onSubmit(event) {\n event.preventDefault();\n\n stripe\n .createToken(card, {\n name: document.getElementById(\"name\").value\n })\n .then(function onCreateToken(result) {\n if (result.error) {\n // Inform the user if there was an error.\n const errorElement = document.getElementById(\"card-errors\");\n errorElement.textContent = result.error.message;\n // re-enable submit button (got disabled via data-disabled-with attribute)\n document.querySelector(\"button[type=submit]\").textContent = \"Save\";\n document.querySelector(\"button[type=submit]\").disabled = false;\n } else {\n // Send the token to your server.\n stripeTokenHandler(result.token);\n }\n });\n });\n\n document.querySelector(\".js-payment-card\").classList.remove(\"d-none\");\n document.querySelector(\".js-payment-loading\").classList.add(\"d-none\");\n}\n\nfunction loadStripe() {\n const script = document.createElement(\"script\");\n script.type = \"text/javascript\";\n script.src = \"https://js.stripe.com/v3/\";\n document.body.appendChild(script);\n script.onload = function onloadStripe() {\n stripe = window.Stripe(process.env.STRIPE_TOKEN);\n setupBillingForm();\n };\n}\n\ndocument.addEventListener(\"turbolinks:load\", function onLoadForStripe() {\n if (!document.querySelector(\"#card-element\")) {\n card = null;\n return;\n }\n if (!stripe) {\n loadStripe();\n } else {\n setupBillingForm();\n }\n});\n\nwindow.addEventListener(\"resize\", function onResizeForStripe() {\n if (!card) return;\n if (window.innerWidth <= 768) {\n card.update({ style: { base: { fontSize: \"14px\" } } });\n } else {\n card.update({ style: { base: { fontSize: \"16px\" } } });\n }\n});\n","/* eslint-disable */\ndocument.addEventListener(\"turbolinks:load\", function() {\n if (!window.Intercom) {\n loadIntercom();\n }\n if (document.querySelector(\"#zeromac-screen\")) {\n window.Intercom(\"update\", {\n hide_default_launcher: true\n });\n } else {\n window.Intercom(\"update\");\n }\n\n // hook up intercom to support link\n let link = document.querySelector(\"*[data-show-intercom]\");\n if (link) {\n link.onclick = function() {\n Intercom(\"show\");\n return false;\n };\n link.attributes.removeNamedItem(\"data-show-intercom\");\n }\n\n // clear intercom session when logging out\n link = document.querySelector(\"*[data-logout-intercom]\");\n if (link) {\n link.onclick = function() {\n Intercom(\"shutdown\");\n return true;\n };\n link.attributes.removeNamedItem(\"data-logout-intercom\");\n }\n});\n\nfunction loadIntercom() {\n // this is the intercom-provided js, with the prettifier run on it\n var w = window;\n var ic = w.Intercom;\n if (typeof ic === \"function\") {\n ic(\"reattach_activator\");\n ic(\"update\", w.intercomSettings);\n } else {\n var d = document;\n var i = function() {\n i.c(arguments);\n };\n i.q = [];\n i.c = function(args) {\n i.q.push(args);\n };\n w.Intercom = i;\n var l = function() {\n var s = d.createElement(\"script\");\n s.type = \"text/javascript\";\n s.async = true;\n s.src = \"https://widget.intercom.io/widget/lo4yltzp\";\n var x = d.getElementsByTagName(\"script\")[0];\n x.parentNode.insertBefore(s, x);\n };\n if (w.attachEvent) {\n w.attachEvent(\"onload\", l);\n } else {\n w.addEventListener(\"load\", l, false);\n }\n }\n}\n","function onSSHSelectionChange(e) {\n const sshPubkey = document.querySelector(\".js-ssh-pubkey\");\n const sshOptions = document.querySelector(\".js-ssh-options\");\n if (!sshPubkey || !sshOptions) {\n return;\n }\n\n if (e.target.checked) {\n if (sshOptions.classList.contains(\"d-none\")) {\n sshOptions.classList.remove(\"d-none\");\n sshPubkey.required = true;\n }\n } else if (!sshOptions.classList.contains(\"d-none\")) {\n sshOptions.classList.add(\"d-none\");\n sshPubkey.required = false;\n }\n}\n\n// var privkeyRegexp = new RegExp(\"-----BEGIN \");\n// var pubkeyRegexp = new RegExp(\"^\\\\s*[a-z0-9\\\\-]+ [A-Za-z0-9/\\\\+\\\\=]+ \");\n// function onSSHPubkeyChange(e) {\n// if (privkeyRegexp.test(e.target.value)) {\n// // console.log(\"looks like a private key\");\n// } else if (pubkeyRegexp.test(e.target.value)) {\n// // console.log(\"seems fine\");\n// } else {\n// // console.log(\"it's not right\");\n// }\n// }\n\nfunction onPasswordBlur(e) {\n const passwordValidation = document.querySelector(\".js-password-validation\");\n if (e.target.value.length > 0 && e.target.value.length <= 4) {\n passwordValidation.textContent = \"Password is too short\";\n if (!passwordValidation.classList.contains(\"text-danger\")) {\n passwordValidation.classList.add(\"text-danger\");\n }\n }\n}\n\nfunction onPasswordChange(e) {\n const passwordValidation = document.querySelector(\".js-password-validation\");\n if (!(e.target.value.length > 0 && e.target.value.length <= 4)) {\n passwordValidation.textContent =\n \"Don't forget it. It won't be displayed again.\";\n if (passwordValidation.classList.contains(\"text-danger\")) {\n passwordValidation.classList.remove(\"text-danger\");\n }\n }\n}\n\nfunction generatePassword(event) {\n const button = event.target;\n button.disabled = true;\n Rails.ajax({\n type: \"POST\",\n url: \"/generate_password\",\n success: function onAjaxPassword(data) {\n const passwordField = document.querySelector(\"#machine_password\");\n passwordField.value = data.password;\n onPasswordChange({ target: passwordField });\n button.disabled = false;\n },\n failure() {\n button.disabled = false;\n }\n });\n}\n\nfunction importGitHubKeys(e) {\n e.target.disabled = true;\n Rails.ajax({\n type: \"POST\",\n url: \"/import_github_keys\",\n data: `github_username=${encodeURIComponent(\n document.querySelector(\".js-github-username\").value\n )}`,\n success(data) {\n e.target.disabled = false;\n if (data.keys) {\n const pubkey = document.querySelector(\".js-ssh-pubkey\");\n pubkey.value = data.keys.join(\"\\n\");\n // eslint-disable-next-line no-undef\n $(\"#githubModal\").modal(\"hide\");\n } else if (data.error === \"Not found\") {\n // eslint-disable-next-line no-alert\n alert(\"GitHub username was not found.\");\n }\n },\n failure() {\n // eslint-disable-next-line no-alert\n alert(\"Unknown error\");\n e.target.disabled = false;\n }\n });\n}\n\n// function debounced(delay, fn) {\n// let timerId;\n// return function(...args) {\n// if (timerId) {\n// clearTimeout(timerId);\n// }\n// timerId = setTimeout(() => {\n// fn(...args);\n// timerId = null;\n// }, delay);\n// };\n// }\n\nlet statusWs;\n\nfunction showLoadingProgress() {\n if (statusWs) {\n statusWs.close();\n statusWs = null;\n }\n const statusWsAddr = document.getElementById(\"zeromac-status-ws\");\n if (statusWsAddr) {\n // show the status screen\n const progress = document.querySelector(\".js-provision-progress\");\n statusWs = new WebSocket(statusWsAddr.innerText);\n statusWs.addEventListener(\"message\", function statusWsMessage(event) {\n if (progress.style.width === \"100%\") {\n const transitionStyle = progress.style.transition;\n progress.style.transition = \"none\";\n setTimeout(function resetTransition() {\n progress.style.transition = transitionStyle;\n }, 25);\n }\n const data = JSON.parse(event.data);\n progress.style.width = `${data.Progress}%`;\n if (data.Completed || data.Failed) {\n const url = document.getElementById(\"zeromac-machine-page\").innerText;\n Turbolinks.visit(url);\n }\n });\n }\n}\n\ndocument.addEventListener(\"turbolinks:load\", function onLoadForMachine() {\n showLoadingProgress();\n\n const link = document.querySelector(\"*[data-generate-password]\");\n if (link) {\n link.onclick = generatePassword;\n link.attributes.removeNamedItem(\"data-generate-password\");\n }\n\n const sshCheckbox = document.querySelector(\".js-ssh-toggle\");\n if (sshCheckbox) {\n sshCheckbox.addEventListener(\"change\", onSSHSelectionChange);\n sshCheckbox.classList.remove(\"js-ssh-toggle\");\n onSSHSelectionChange({ target: sshCheckbox });\n }\n\n // let sshPubkeyTextarea = document.querySelector(\"[data-validate-key]\");\n // if (sshPubkeyTextarea) {\n // sshPubkeyTextarea.addEventListener(\n // \"input\",\n // debounced(200, onSSHPubkeyChange)\n // );\n // sshPubkeyTextarea.attributes.removeNamedItem(\"data-validate-key\");\n // }\n\n const passwordInput = document.querySelector(\"[data-password-field]\");\n if (passwordInput) {\n passwordInput.addEventListener(\"blur\", onPasswordBlur);\n passwordInput.addEventListener(\"input\", onPasswordChange);\n passwordInput.attributes.removeNamedItem(\"data-password-field\");\n }\n\n const githubImportButton = document.querySelector(\".js-import-github\");\n if (githubImportButton) {\n githubImportButton.onclick = importGitHubKeys;\n githubImportButton.classList.remove(\"js-import-github\");\n }\n\n // eslint-disable-next-line no-undef\n $('.modal[data-show-modal=\"true\"]').modal(\"show\");\n});\n"],"sourceRoot":""}