{"version":3,"file":"./js/index.392dfa.bundle.js","mappings":"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","sources":["webpack://squeezelite-esp32/webpack/runtime/chunk loaded","webpack://squeezelite-esp32/./src/js/custom.js","webpack://squeezelite-esp32/./src/index.ts","webpack://squeezelite-esp32/webpack/bootstrap","webpack://squeezelite-esp32/webpack/runtime/compat get default export","webpack://squeezelite-esp32/webpack/runtime/define property getters","webpack://squeezelite-esp32/webpack/runtime/global","webpack://squeezelite-esp32/webpack/runtime/hasOwnProperty shorthand","webpack://squeezelite-esp32/webpack/runtime/make namespace object","webpack://squeezelite-esp32/webpack/runtime/node module decorator","webpack://squeezelite-esp32/webpack/runtime/jsonp chunk loading","webpack://squeezelite-esp32/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var he = require('he');\nvar Promise = require('es6-promise').Promise;\nwindow.bootstrap = require('bootstrap');\nimport Cookies from 'js-cookie';\n\n\n\nif (!String.prototype.format) {\n Object.assign(String.prototype, {\n format() {\n const args = arguments;\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return typeof args[number] !== 'undefined' ? args[number] : match;\n });\n },\n });\n}\nif (!String.prototype.encodeHTML) {\n Object.assign(String.prototype, {\n encodeHTML() {\n return he.encode(this).replace(/\\n/g, '
');\n },\n });\n}\nObject.assign(Date.prototype, {\n toLocalShort() {\n const opt = { dateStyle: 'short', timeStyle: 'short' };\n return this.toLocaleString(undefined, opt);\n },\n});\nfunction handleNVSVisible(){\n let nvs_previous_checked = isEnabled(Cookies.get(\"show-nvs\"));\n $('input#show-nvs')[0].checked = nvs_previous_checked ;\n if ($('input#show-nvs')[0].checked || recovery) {\n $('*[href*=\"-nvs\"]').show();\n } else {\n $('*[href*=\"-nvs\"]').hide();\n }\n}\n\n\nfunction isEnabled(val) {\n return val!=undefined && typeof val === 'string' && val.match(\"[Yy1]\");\n}\n\nconst nvsTypes = {\n NVS_TYPE_U8: 0x01,\n\n /*! < Type uint8_t */\n NVS_TYPE_I8: 0x11,\n\n /*! < Type int8_t */\n NVS_TYPE_U16: 0x02,\n\n /*! < Type uint16_t */\n NVS_TYPE_I16: 0x12,\n\n /*! < Type int16_t */\n NVS_TYPE_U32: 0x04,\n\n /*! < Type uint32_t */\n NVS_TYPE_I32: 0x14,\n\n /*! < Type int32_t */\n NVS_TYPE_U64: 0x08,\n\n /*! < Type uint64_t */\n NVS_TYPE_I64: 0x18,\n\n /*! < Type int64_t */\n NVS_TYPE_STR: 0x21,\n\n /*! < Type string */\n NVS_TYPE_BLOB: 0x42,\n\n /*! < Type blob */\n NVS_TYPE_ANY: 0xff /*! < Must be last */,\n};\nconst btIcons = {\n bt_playing: {'label':'','icon': 'media_bluetooth_on'},\n bt_disconnected: {'label':'','icon': 'media_bluetooth_off'},\n bt_neutral: {'label':'','icon': 'bluetooth'},\n bt_connecting: {'label':'','icon': 'bluetooth_searching'},\n bt_connected: {'label':'','icon': 'bluetooth_connected'},\n bt_disabled: {'label':'','icon': 'bluetooth_disabled'},\n play_arrow: {'label':'','icon': 'play_circle_filled'},\n pause: {'label':'','icon': 'pause_circle'},\n stop: {'label':'','icon': 'stop_circle'},\n '': {'label':'','icon':''}\n};\nconst batIcons = [\n { icon: \"battery_0_bar\", label:'▪', ranges: [{ f: 5.8, t: 6.8 }, { f: 8.8, t: 10.2 }] },\n { icon: \"battery_2_bar\", label:'▪▪', ranges: [{ f: 6.8, t: 7.4 }, { f: 10.2, t: 11.1 }] },\n { icon: \"battery_3_bar\", label:'▪▪▪', ranges: [{ f: 7.4, t: 7.5 }, { f: 11.1, t: 11.25 }] },\n { icon: \"battery_4_bar\", label:'▪▪▪▪', ranges: [{ f: 7.5, t: 7.8 }, { f: 11.25, t: 11.7 }] }\n];\nconst btStateIcons = [\n { desc: 'Idle', sub: ['bt_neutral'] },\n { desc: 'Discovering', sub: ['bt_connecting'] },\n { desc: 'Discovered', sub: ['bt_connecting'] },\n { desc: 'Unconnected', sub: ['bt_disconnected'] },\n { desc: 'Connecting', sub: ['bt_connecting'] },\n {\n desc: 'Connected',\n sub: ['bt_connected', 'play_arrow', 'bt_playing', 'pause', 'stop'],\n },\n { desc: 'Disconnecting', sub: ['bt_disconnected'] },\n];\n\nconst pillcolors = {\n MESSAGING_INFO: 'badge-success',\n MESSAGING_WARNING: 'badge-warning',\n MESSAGING_ERROR: 'badge-danger',\n};\nconst connectReturnCode = {\n OK: 0,\n FAIL: 1,\n DISC: 2,\n LOST: 3,\n RESTORE: 4,\n ETH: 5\n}\nconst taskStates = {\n 0: 'eRunning',\n /*! < A task is querying the state of itself, so must be running. */\n 1: 'eReady',\n /*! < The task being queried is in a read or pending ready list. */\n 2: 'eBlocked',\n /*! < The task being queried is in the Blocked state. */\n 3: 'eSuspended',\n /*! < The task being queried is in the Suspended state, or is in the Blocked state with an infinite time out. */\n 4: 'eDeleted',\n};\nlet flashState = {\n NONE: 0,\n REBOOT_TO_RECOVERY: 2,\n SET_FWURL: 5,\n FLASHING: 6,\n DONE: 7,\n UPLOADING: 8,\n ERROR: 9,\n UPLOADCOMPLETE: 10,\n _state: -1,\n olderRecovery: false,\n statusText: '',\n flashURL: '',\n flashFileName: '',\n statusPercent: 0,\n Completed: false,\n recovery: false,\n prevRecovery: false,\n updateModal: new bootstrap.Modal(document.getElementById('otadiv'), {}),\n reset: function () {\n\n this.olderRecovery = false;\n this.statusText = '';\n this.statusPercent = -1;\n this.flashURL = '';\n this.flashFileName = undefined;\n this.UpdateProgress();\n $('#rTable tr.release').removeClass('table-success table-warning');\n $('.flact').prop('disabled', false);\n $('#flashfilename').value = null;\n $('#fw-url-input').value = null;\n if(!this.isStateError()){\n $('span#flash-status').html('');\n $('#fwProgressLabel').parent().removeClass('bg-danger');\n }\n this._state = this.NONE\n return this;\n },\n isStateUploadComplete: function () {\n return this._state == this.UPLOADCOMPLETE;\n },\n isStateError: function () {\n return this._state == this.ERROR;\n },\n isStateNone: function () {\n return this._state == this.NONE;\n },\n isStateRebootRecovery: function () {\n return this._state == this.REBOOT_TO_RECOVERY;\n },\n isStateSetUrl: function () {\n return this._state == this.SET_FWURL;\n },\n isStateFlashing: function () {\n return this._state == this.FLASHING;\n },\n isStateDone: function () {\n return this._state == this.DONE;\n },\n isStateUploading: function () {\n return this._state == this.UPLOADING;\n },\n init: function () {\n this._state = this.NONE;\n return this;\n },\n\n SetStateError: function () {\n this._state = this.ERROR;\n $('#fwProgressLabel').parent().addClass('bg-danger');\n return this;\n },\n SetStateNone: function () {\n this._state = this.NONE;\n return this;\n },\n SetStateRebootRecovery: function () {\n this._state = this.REBOOT_TO_RECOVERY;\n // Reboot system to recovery mode\n this.SetStatusText('Starting recovery mode.')\n $.ajax({\n url: '/recovery.json',\n context: this,\n dataType: 'text',\n method: 'POST',\n cache: false,\n contentType: 'application/json; charset=utf-8',\n data: JSON.stringify({\n timestamp: Date.now(),\n }),\n error: function (xhr, _ajaxOptions, thrownError) {\n this.setOTAError(`Unexpected error while trying to restart to recovery. (status=${xhr.status ?? ''}, error=${thrownError ?? ''} ) `);\n },\n complete: function (response) {\n this.SetStatusText('Waiting for system to boot.')\n },\n });\n return this;\n },\n SetStateSetUrl: function () {\n this._state = this.SET_FWURL;\n this.statusText = 'Sending firmware download location.';\n let confData = {\n fwurl: {\n value: this.flashURL,\n type: 33,\n }\n };\n post_config(confData);\n return this;\n },\n SetStateFlashing: function () {\n this._state = this.FLASHING;\n return this;\n },\n SetStateDone: function () {\n this._state = this.DONE;\n this.reset();\n return this;\n },\n SetStateUploading: function () {\n this._state = this.UPLOADING;\n return this.SetStatusText('Sending file to device.');\n },\n SetStateUploadComplete: function () {\n this._state = this.UPLOADCOMPLETE;\n return this;\n },\n\n isFlashExecuting: function () {\n return true === (this._state != this.UPLOADING && (this.statusText !== '' || this.statusPercent >= 0));\n },\n\n\n\n toString: function () {\n let keys = Object.keys(this);\n return keys.find(x => this[x] === this._state);\n },\n\n setOTATargets: function () {\n this.flashURL = '';\n this.flashFileName = '';\n this.flashURL = $('#fw-url-input').val();\n let fileInput = $('#flashfilename')[0].files;\n if (fileInput.length > 0) {\n this.flashFileName = fileInput[0];\n }\n if (this.flashFileName.length == 0 && this.flashURL.length == 0) {\n this.setOTAError('Invalid url or file. Cannot start OTA');\n }\n return this;\n },\n\n setOTAError: function (message) {\n this.SetStateError().SetStatusPercent(0).SetStatusText(message).reset();\n return this;\n },\n\n ShowDialog: function () {\n if (!this.isStateNone()) {\n this.updateModal.show();\n $('.flact').prop('disabled', true);\n }\n return this;\n },\n\n SetStatusPercent: function (pct) {\n var pctChanged = (this.statusPercent != pct);\n this.statusPercent = pct;\n if (pctChanged) {\n if (!this.isStateUploading() && !this.isStateFlashing()) {\n this.SetStateFlashing();\n }\n if (pct == 100) {\n if (this.isStateFlashing()) {\n this.SetStateDone();\n }\n else if (this.isStateUploading()) {\n this.statusPercent = 0;\n this.SetStateFlashing();\n }\n }\n this.UpdateProgress().ShowDialog();\n }\n return this;\n },\n SetStatusText: function (txt) {\n var changed = (this.statusText != txt);\n this.statusText = txt;\n if (changed) {\n $('span#flash-status').html(this.statusText);\n this.ShowDialog();\n }\n\n return this;\n },\n UpdateProgress: function () {\n $('.progress-bar')\n .css('width', this.statusPercent + '%')\n .attr('aria-valuenow', this.statusPercent)\n .text(this.statusPercent + '%')\n $('.progress-bar').html((this.isStateDone() ? 100 : this.statusPercent) + '%');\n return this;\n },\n StartOTA: function () {\n this.logEvent(this.StartOTA.name);\n $('#fwProgressLabel').parent().removeClass('bg-danger');\n this.setOTATargets();\n if (this.isStateError()) {\n return this;\n }\n if (!recovery) {\n this.SetStateRebootRecovery();\n }\n else {\n this.SetStateFlashing().TargetReadyStartOTA();\n }\n\n return this;\n },\n UploadLocalFile: function () {\n this.SetStateUploading();\n const xhttp = new XMLHttpRequest();\n xhttp.context = this;\n var boundHandleUploadProgressEvent = this.HandleUploadProgressEvent.bind(this);\n var boundsetOTAError=this.setOTAError.bind(this);\n xhttp.upload.addEventListener(\"progress\",boundHandleUploadProgressEvent, false);\n xhttp.onreadystatechange = function () {\n if (xhttp.readyState === 4) {\n if (xhttp.status === 0 || xhttp.status === 404) {\n boundsetOTAError(`Upload Failed. Recovery version might not support uploading. Please use web update instead.`);\n }\n }\n };\n xhttp.open('POST', '/flash.json', true);\n xhttp.send(this.flashFileName);\n },\n TargetReadyStartOTA: function () {\n if (recovery && this.prevRecovery && !this.isStateRebootRecovery() && !this.isStateFlashing()) {\n // this should only execute once, while being in a valid state\n return this;\n }\n\n this.logEvent(this.TargetReadyStartOTA.name);\n if (!recovery) {\n console.error('Event TargetReadyStartOTA fired in the wrong mode ');\n return this;\n }\n this.prevRecovery = true;\n\n if (this.flashFileName !== '') {\n this.UploadLocalFile();\n }\n else if (this.flashURL != '') {\n this.SetStateSetUrl();\n }\n else {\n this.setOTAError('Invalid URL or file name while trying to start the OTa process')\n }\n },\n HandleUploadProgressEvent: function (data) {\n this.logEvent(this.HandleUploadProgressEvent.name);\n this.SetStateUploading().SetStatusPercent(Math.round(data.loaded / data.total * 100)).SetStatusText('Uploading file to device');\n },\n EventTargetStatus: function (data) {\n if (!this.isStateNone()) {\n this.logEvent(this.EventTargetStatus.name);\n }\n if (data.ota_pct ?? -1 >= 0) {\n this.olderRecovery = true;\n this.SetStatusPercent(data.ota_pct);\n }\n if ((data.ota_dsc ?? '') != '') {\n this.olderRecovery = true;\n this.SetStatusText(data.ota_dsc);\n }\n\n if (data.recovery != undefined) {\n this.recovery = data.recovery === 1 ? true : false;\n }\n if (this.isStateRebootRecovery() && this.recovery) {\n this.TargetReadyStartOTA();\n }\n },\n EventOTAMessageClass: function (data) {\n this.logEvent(this.EventOTAMessageClass.name);\n var otaData = JSON.parse(data);\n this.SetStatusPercent(otaData.ota_pct).SetStatusText(otaData.ota_dsc);\n },\n logEvent: function (fun) {\n console.log(`${fun}, flash state ${this.toString()}, recovery: ${this.recovery}, ota pct: ${this.statusPercent}, ota desc: ${this.statusText}`);\n }\n\n};\nwindow.hideSurrounding = function (obj) {\n $(obj).parent().parent().hide();\n}\n\nlet presetsloaded = false;\nlet is_i2c_locked = false;\nlet statusInterval = 2000;\nlet messageInterval = 2500;\nfunction post_config(data) {\n let confPayload = {\n timestamp: Date.now(),\n config: data\n };\n $.ajax({\n url: '/config.json',\n dataType: 'text',\n method: 'POST',\n cache: false,\n contentType: 'application/json; charset=utf-8',\n data: JSON.stringify(confPayload),\n error: handleExceptionResponse,\n });\n}\n\n\nwindow.hFlash = function () {\n // reset file upload selection if any;\n $('#flashfilename').value = null\n flashState.StartOTA();\n}\nwindow.handleReboot = function (link) {\n if (link == 'reboot_ota') {\n $('#reboot_ota_nav').removeClass('active').prop(\"disabled\", true); delayReboot(500, '', 'reboot_ota');\n }\n else {\n $('#reboot_nav').removeClass('active'); delayReboot(500, '', link);\n }\n}\nfunction isConnected(){\n return ConnectedTo.hasOwnProperty('ip') && ConnectedTo.ip!='0.0.0.0'&& ConnectedTo.ip!='';\n}\nfunction getIcon(icons){\n return isConnected()?icons.icon:icons.label;\n}\nfunction handlebtstate(data) {\n let icon = '';\n let tt = '';\n if (data.bt_status !== undefined && data.bt_sub_status !== undefined) {\n const iconindex = btStateIcons[data.bt_status].sub[data.bt_sub_status];\n if (iconindex) {\n icon = btIcons[iconindex];\n tt = btStateIcons[data.bt_status].desc;\n } else {\n icon = btIcons.bt_connected;\n tt = 'Output status';\n }\n }\n\n $('#o_type').attr('title', tt);\n $('#o_bt').html(isConnected()?icon.label:icon.text);\n}\nfunction handleTemplateTypeRadio(outtype) {\n $('#o_type').children('span').css({ display: 'none' });\n if (outtype === 'bt') {\n output = 'bt';\n } else if (outtype === 'spdif') {\n output = 'spdif';\n } else {\n output = 'i2s';\n }\n $('#' + output).prop('checked', true);\n $('#o_' + output).css({ display: 'inline' });\n}\n\nfunction handleExceptionResponse(xhr, _ajaxOptions, thrownError) {\n console.log(xhr.status);\n console.log(thrownError);\n if (thrownError !== '') {\n showLocalMessage(thrownError, 'MESSAGING_ERROR');\n }\n}\nfunction HideCmdMessage(cmdname) {\n $('#toast_' + cmdname)\n .removeClass('table-success')\n .removeClass('table-warning')\n .removeClass('table-danger')\n .addClass('table-success')\n .removeClass('show');\n $('#msg_' + cmdname).html('');\n}\nfunction showCmdMessage(cmdname, msgtype, msgtext, append = false) {\n let color = 'table-success';\n if (msgtype === 'MESSAGING_WARNING') {\n color = 'table-warning';\n } else if (msgtype === 'MESSAGING_ERROR') {\n color = 'table-danger';\n }\n $('#toast_' + cmdname)\n .removeClass('table-success')\n .removeClass('table-warning')\n .removeClass('table-danger')\n .addClass(color)\n .addClass('show');\n let escapedtext = msgtext\n .substring(0, msgtext.length - 1)\n .encodeHTML()\n .replace(/\\n/g, '
');\n escapedtext =\n ($('#msg_' + cmdname).html().length > 0 && append\n ? $('#msg_' + cmdname).html() + '
'\n : '') + escapedtext;\n $('#msg_' + cmdname).html(escapedtext);\n}\n\nlet releaseURL =\n 'https://api.github.com/repos/sle118/squeezelite-esp32/releases';\n\nlet recovery = false;\nlet messagesHeld = false;\nconst commandHeader = 'squeezelite -b 500:2000 -d all=info -C 30 -W';\n//let blockFlashButton = false;\nlet apList = null;\n//let selectedSSID = '';\n//let checkStatusInterval = null;\nlet messagecount = 0;\nlet messageseverity = 'MESSAGING_INFO';\nlet SystemConfig = {};\nlet LastCommandsState = null;\nvar output = '';\nlet hostName = '';\nlet versionName = 'Squeezelite-ESP32';\nlet prevmessage = '';\nlet project_name = versionName;\nlet board_model = '';\nlet platform_name = versionName;\nlet preset_name = '';\nlet btSinkNamesOptSel = '#cfg-audio-bt_source-sink_name';\nlet ConnectedTo = {};\nlet ConnectingToSSID = {};\nlet lmsBaseUrl;\nlet prevLMSIP = '';\nconst ConnectingToActions = {\n 'CONN': 0, 'MAN': 1, 'STS': 2,\n}\n\nPromise.prototype.delay = function (duration) {\n return this.then(\n function (value) {\n return new Promise(function (resolve) {\n setTimeout(function () {\n resolve(value);\n }, duration);\n });\n },\n function (reason) {\n return new Promise(function (_resolve, reject) {\n setTimeout(function () {\n reject(reason);\n }, duration);\n });\n }\n );\n};\n\nfunction getConfigJson(slimMode) {\n const config = {};\n $('input.nvs').each(function (_index, entry) {\n if (!slimMode) {\n const nvsType = parseInt(entry.attributes.nvs_type.value, 10);\n if (entry.id !== '') {\n config[entry.id] = {};\n if (\n nvsType === nvsTypes.NVS_TYPE_U8 ||\n nvsType === nvsTypes.NVS_TYPE_I8 ||\n nvsType === nvsTypes.NVS_TYPE_U16 ||\n nvsType === nvsTypes.NVS_TYPE_I16 ||\n nvsType === nvsTypes.NVS_TYPE_U32 ||\n nvsType === nvsTypes.NVS_TYPE_I32 ||\n nvsType === nvsTypes.NVS_TYPE_U64 ||\n nvsType === nvsTypes.NVS_TYPE_I64\n ) {\n config[entry.id].value = parseInt(entry.value);\n } else {\n config[entry.id].value = entry.value;\n }\n config[entry.id].type = nvsType;\n }\n } else {\n config[entry.id] = entry.value;\n }\n });\n const key = $('#nvs-new-key').val();\n const val = $('#nvs-new-value').val();\n if (key !== '') {\n if (!slimMode) {\n config[key] = {};\n config[key].value = val;\n config[key].type = 33;\n } else {\n config[key] = val;\n }\n }\n return config;\n}\n\nfunction handleHWPreset(allfields, reboot) {\n\n const selJson = JSON.parse(allfields[0].value);\n var cmd = allfields[0].attributes.cmdname.value;\n\n console.log(`selected model: ${selJson.name}`);\n let confPayload = {\n timestamp: Date.now(),\n config: { model_config: { value: selJson.name, type: 33 } }\n };\n for (const [name, value] of Object.entries(selJson.config)) {\n const storedval = (typeof value === 'string' || value instanceof String) ? value : JSON.stringify(value);\n confPayload.config[name] = {\n value: storedval,\n type: 33,\n }\n showCmdMessage(\n cmd,\n 'MESSAGING_INFO',\n `Setting ${name}=${storedval} `,\n true\n );\n }\n\n showCmdMessage(\n cmd,\n 'MESSAGING_INFO',\n `Committing `,\n true\n );\n $.ajax({\n url: '/config.json',\n dataType: 'text',\n method: 'POST',\n cache: false,\n contentType: 'application/json; charset=utf-8',\n data: JSON.stringify(confPayload),\n error: function (xhr, _ajaxOptions, thrownError) {\n handleExceptionResponse(xhr, _ajaxOptions, thrownError);\n showCmdMessage(\n cmd,\n 'MESSAGING_ERROR',\n `Unexpected error ${(thrownError !== '') ? thrownError : 'with return status = ' + xhr.status} `,\n true\n );\n },\n success: function (response) {\n showCmdMessage(\n cmd,\n 'MESSAGING_INFO',\n `Saving complete `,\n true\n );\n console.log(response);\n if (reboot) {\n delayReboot(2500, cmd);\n }\n },\n });\n\n\n\n\n\n}\n\n\n// pull json file from https://gist.githubusercontent.com/sle118/dae585e157b733a639c12dc70f0910c5/raw/b462691f69e2ad31ac95c547af6ec97afb0f53db/squeezelite-esp32-presets.json and\nfunction loadPresets() {\n if ($(\"#cfg-hw-preset-model_config\").length == 0) return;\n if (presetsloaded) return;\n presetsloaded = true;\n $('#cfg-hw-preset-model_config').html('');\n $.getJSON(\n 'https://gist.githubusercontent.com/sle118/dae585e157b733a639c12dc70f0910c5/raw/',\n { _: new Date().getTime() },\n function (data) {\n $.each(data, function (key, val) {\n $('#cfg-hw-preset-model_config').append(``);\n if (preset_name !== '' && preset_name == val.name) {\n $('#cfg-hw-preset-model_config').val(preset_name);\n }\n });\n if (preset_name !== '') {\n ('#prev_preset').show().val(preset_name);\n }\n }\n\n ).fail(function (jqxhr, textStatus, error) {\n const err = textStatus + ', ' + error;\n console.log('Request Failed: ' + err);\n }\n );\n}\n\nfunction delayReboot(duration, cmdname, ota = 'reboot') {\n const url = '/' + ota + '.json';\n $('tbody#tasks').empty();\n $('#tasks_sect').css('visibility', 'collapse');\n Promise.resolve({ cmdname: cmdname, url: url })\n .delay(duration)\n .then(function (data) {\n if (data.cmdname.length > 0) {\n showCmdMessage(\n data.cmdname,\n 'MESSAGING_WARNING',\n 'System is rebooting.\\n',\n true\n );\n } else {\n showLocalMessage('System is rebooting.\\n', 'MESSAGING_WARNING');\n }\n console.log('now triggering reboot');\n $(\"button[onclick*='handleReboot']\").addClass('rebooting');\n $.ajax({\n url: data.url,\n dataType: 'text',\n method: 'POST',\n cache: false,\n contentType: 'application/json; charset=utf-8',\n data: JSON.stringify({\n timestamp: Date.now(),\n }),\n error: handleExceptionResponse,\n complete: function () {\n console.log('reboot call completed');\n Promise.resolve(data)\n .delay(6000)\n .then(function (rdata) {\n if (rdata.cmdname.length > 0) {\n HideCmdMessage(rdata.cmdname);\n }\n getCommands();\n getConfig();\n });\n },\n });\n });\n}\n// eslint-disable-next-line no-unused-vars\nwindow.saveAutoexec1 = function (apply) {\n showCmdMessage('cfg-audio-tmpl', 'MESSAGING_INFO', 'Saving.\\n', false);\n let commandLine = commandHeader + ' -n \"' + $('#player').val() + '\"';\n if (output === 'bt') {\n commandLine += ' -o \"BT\" -R -Z 192000';\n showCmdMessage(\n 'cfg-audio-tmpl',\n 'MESSAGING_INFO',\n 'Remember to configure the Bluetooth audio device name.\\n',\n true\n );\n } else if (output === 'spdif') {\n commandLine += ' -o SPDIF -Z 192000';\n } else {\n commandLine += ' -o I2S';\n }\n if ($('#optional').val() !== '') {\n commandLine += ' ' + $('#optional').val();\n }\n const data = {\n timestamp: Date.now(),\n };\n data.config = {\n autoexec1: { value: commandLine, type: 33 },\n autoexec: {\n value: $('#disable-squeezelite').prop('checked') ? '0' : '1',\n type: 33,\n },\n };\n\n $.ajax({\n url: '/config.json',\n dataType: 'text',\n method: 'POST',\n cache: false,\n contentType: 'application/json; charset=utf-8',\n data: JSON.stringify(data),\n error: handleExceptionResponse,\n complete: function (response) {\n if (\n response.responseText &&\n JSON.parse(response.responseText).result === 'OK'\n ) {\n showCmdMessage('cfg-audio-tmpl', 'MESSAGING_INFO', 'Done.\\n', true);\n if (apply) {\n delayReboot(1500, 'cfg-audio-tmpl');\n }\n } else if (JSON.parse(response.responseText).result) {\n showCmdMessage(\n 'cfg-audio-tmpl',\n 'MESSAGING_WARNING',\n JSON.parse(response.responseText).Result + '\\n',\n true\n );\n } else {\n showCmdMessage(\n 'cfg-audio-tmpl',\n 'MESSAGING_ERROR',\n response.statusText + '\\n'\n );\n }\n console.log(response.responseText);\n },\n });\n console.log('sent data:', JSON.stringify(data));\n}\nwindow.handleDisconnect = function () {\n $.ajax({\n url: '/connect.json',\n dataType: 'text',\n method: 'DELETE',\n cache: false,\n contentType: 'application/json; charset=utf-8',\n data: JSON.stringify({\n timestamp: Date.now(),\n }),\n });\n}\nfunction setPlatformFilter(val) {\n if ($('.upf').filter(function () { return $(this).text().toUpperCase() === val.toUpperCase() }).length > 0) {\n $('#splf').val(val).trigger('input');\n return true;\n }\n return false;\n}\nwindow.handleConnect = function () {\n ConnectingToSSID.ssid = $('#manual_ssid').val();\n ConnectingToSSID.pwd = $('#manual_pwd').val();\n ConnectingToSSID.dhcpname = $('#dhcp-name2').val();\n $(\"*[class*='connecting']\").hide();\n $('#ssid-wait').text(ConnectingToSSID.ssid);\n $('.connecting').show();\n $.ajax({\n url: '/connect.json',\n dataType: 'text',\n method: 'POST',\n cache: false,\n contentType: 'application/json; charset=utf-8',\n data: JSON.stringify({\n timestamp: Date.now(),\n ssid: ConnectingToSSID.ssid,\n pwd: ConnectingToSSID.pwd\n }),\n error: handleExceptionResponse,\n });\n\n // now we can re-set the intervals regardless of result\n\n}\n$(document).ready(function () {\n $('.material-icons').each(function (_index, entry) {\n entry.attributes['icon']=entry.textContent;\n });\n setIcons(true);\n handleNVSVisible();\n flashState.init();\n $('#fw-url-input').on('input', function () {\n if ($(this).val().length > 8 && ($(this).val().startsWith('http://') || $(this).val().startsWith('https://'))) {\n $('#start-flash').show();\n }\n else {\n $('#start-flash').hide();\n }\n });\n $('.upSrch').on('input', function () {\n const val = this.value;\n $(\"#rTable tr\").removeClass(this.id + '_hide');\n if (val.length > 0) {\n $(`#rTable td:nth-child(${$(this).parent().index() + 1})`).filter(function () {\n return !$(this).text().toUpperCase().includes(val.toUpperCase());\n }).parent().addClass(this.id + '_hide');\n }\n $('[class*=\"_hide\"]').hide();\n $('#rTable tr').not('[class*=\"_hide\"]').show()\n\n });\n setTimeout(refreshAP, 1500);\n\n $('#WifiConnectDialog')[0].addEventListener('shown.bs.modal', function (event) {\n $(\"*[class*='connecting']\").hide();\n\n if (event?.relatedTarget) {\n ConnectingToSSID.Action = ConnectingToActions.CONN;\n if ($(event.relatedTarget).children('td:eq(1)').text() == ConnectedTo.ssid) {\n ConnectingToSSID.Action = ConnectingToActions.STS;\n }\n else {\n if (!$(event.relatedTarget).is(':last-child')) {\n ConnectingToSSID.ssid = $(event.relatedTarget).children('td:eq(1)').text();\n $('#manual_ssid').val(ConnectingToSSID.ssid);\n }\n else {\n ConnectingToSSID.Action = ConnectingToActions.MAN;\n ConnectingToSSID.ssid = '';\n $('#manual_ssid').val(ConnectingToSSID.ssid);\n }\n }\n }\n\n\n if (ConnectingToSSID.Action !== ConnectingToActions.STS) {\n $('.connecting-init').show();\n $('#manual_ssid').trigger('focus');\n }\n else {\n handleWifiDialog();\n }\n });\n\n $('#WifiConnectDialog')[0].addEventListener('hidden.bs.modal', function () {\n $('#WifiConnectDialog input').val('');\n });\n\n $('#uCnfrm')[0].addEventListener('shown.bs.modal', function () {\n $('#selectedFWURL').text($('#fw-url-input').val());\n });\n\n $('input#show-commands')[0].checked = LastCommandsState === 1;\n $('a[href^=\"#tab-commands\"]').hide();\n $('#load-nvs').on('click', function () {\n $('#nvsfilename').trigger('click');\n });\n $('#nvsfilename').on('change', function () {\n if (typeof window.FileReader !== 'function') {\n throw \"The file API isn't supported on this browser.\";\n }\n if (!this.files) {\n throw 'This browser does not support the `files` property of the file input.';\n }\n if (!this.files[0]) {\n return undefined;\n }\n\n const file = this.files[0];\n let fr = new FileReader();\n fr.onload = function (e) {\n let data = {};\n try {\n data = JSON.parse(e.target.result);\n } catch (ex) {\n alert('Parsing failed!\\r\\n ' + ex);\n }\n $('input.nvs').each(function (_index, entry) {\n $(this).parent().removeClass('bg-warning').removeClass('bg-success');\n if (data[entry.id]) {\n if (data[entry.id] !== entry.value) {\n console.log(\n 'Changed ' + entry.id + ' ' + entry.value + '==>' + data[entry.id]\n );\n $(this).parent().addClass('bg-warning');\n $(this).val(data[entry.id]);\n }\n else {\n $(this).parent().addClass('bg-success');\n }\n }\n });\n var changed = $(\"input.nvs\").children('.bg-warning');\n if (changed) {\n alert('Highlighted values were changed. Press Commit to change on the device');\n }\n }\n fr.readAsText(file);\n this.value = null;\n\n }\n );\n $('#clear-syslog').on('click', function () {\n messagecount = 0;\n messageseverity = 'MESSAGING_INFO';\n $('#msgcnt').text('');\n $('#syslogTable').html('');\n });\n\n $('#ok-credits').on('click', function () {\n $('#credits').slideUp('fast', function () { });\n $('#app').slideDown('fast', function () { });\n });\n\n $('#acredits').on('click', function (event) {\n event.preventDefault();\n $('#app').slideUp('fast', function () { });\n $('#credits').slideDown('fast', function () { });\n });\n\n $('input#show-commands').on('click', function () {\n this.checked = this.checked ? 1 : 0;\n if (this.checked) {\n $('a[href^=\"#tab-commands\"]').show();\n LastCommandsState = 1;\n } else {\n LastCommandsState = 0;\n $('a[href^=\"#tab-commands\"]').hide();\n }\n });\n\n $('input#show-nvs').on('click', function () {\n this.checked = this.checked ? 1 : 0;\n Cookies.set(\"show-nvs\", this.checked?'Y':'N');\n handleNVSVisible();\n });\n $('#btn_reboot_recovery').on('click', function () {\n handleReboot('recovery');\n });\n $('#btn_reboot').on('click', function () {\n handleReboot('reboot');\n });\n $('#btn_flash').on('click', function () {\n hFlash();\n });\n $('#save-autoexec1').on('click', function () {\n saveAutoexec1(false);\n });\n $('#commit-autoexec1').on('click', function () {\n saveAutoexec1(true);\n });\n $('#btn_disconnect').on('click', function () {\n ConnectedTo={};\n refreshAPHTML2();\n $.ajax({\n url: '/connect.json',\n dataType: 'text',\n method: 'DELETE',\n cache: false,\n contentType: 'application/json; charset=utf-8',\n data: JSON.stringify({\n timestamp: Date.now(),\n }),\n });\n });\n $('#btnJoin').on('click', function () {\n handleConnect();\n });\n $('#reboot_nav').on('click', function () {\n handleReboot('reboot');\n });\n $('#reboot_ota_nav').on('click', function () {\n handleReboot('reboot_ota');\n });\n\n $('#save-as-nvs').on('click', function () {\n const config = getConfigJson(true);\n const a = document.createElement('a');\n a.href = URL.createObjectURL(\n new Blob([JSON.stringify(config, null, 2)], {\n type: 'text/plain',\n })\n );\n a.setAttribute(\n 'download',\n 'nvs_config_' + hostName + '_' + Date.now() + 'json'\n );\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n });\n\n $('#save-nvs').on('click', function () {\n post_config(getConfigJson(false));\n });\n\n $('#fwUpload').on('click', function () {\n const fileInput = document.getElementById('flashfilename').files;\n if (fileInput.length === 0) {\n alert('No file selected!');\n } else {\n $('#fw-url-input').value = null;\n flashState.StartOTA();\n }\n\n });\n $('[name=output-tmpl]').on('click', function () {\n handleTemplateTypeRadio(this.id);\n });\n\n $('#chkUpdates').on('click', function () {\n $('#rTable').html('');\n $.getJSON(releaseURL, function (data) {\n let i = 0;\n const branches = [];\n data.forEach(function (release) {\n const namecomponents = release.name.split('#');\n const branch = namecomponents[3];\n if (!branches.includes(branch)) {\n branches.push(branch);\n }\n });\n let fwb = '';\n branches.forEach(function (branch) {\n fwb += '';\n });\n $('#fwbranch').append(fwb);\n\n data.forEach(function (release) {\n let url = '';\n release.assets.forEach(function (asset) {\n if (asset.name.match(/\\.bin$/)) {\n url = asset.browser_download_url;\n }\n });\n const namecomponents = release.name.split('#');\n const ver = namecomponents[0];\n const cfg = namecomponents[2];\n const branch = namecomponents[3];\n var bits = ver.substr(ver.lastIndexOf('-') + 1);\n bits = (bits == '32' || bits == '16') ? bits : '';\n\n let body = release.body;\n body = body.replace(/'/gi, '\"');\n body = body.replace(\n /[\\s\\S]+(### Revision Log[\\s\\S]+)### ESP-IDF Version Used[\\s\\S]+/,\n '$1'\n );\n body = body.replace(/- \\(.+?\\) /g, '- ').encodeHTML();\n $('#rTable').append(`\n ${ver}${new Date(release.created_at).toLocalShort()}\n ${cfg}${branch}${bits}`\n );\n });\n if (i > 7) {\n $('#releaseTable').append(\n \"\" +\n \"\" +\n \"\" +\n '' +\n ''\n );\n $('#showallbutton').on('click', function () {\n $('tr.hide').removeClass('hide');\n $('tr#showall').addClass('hide');\n });\n }\n $('#searchfw').css('display', 'inline');\n if (!setPlatformFilter(platform_name)) {\n setPlatformFilter(project_name)\n }\n $('#rTable tr.release').on('click', function () {\n var url = this.attributes['fwurl'].value;\n if (lmsBaseUrl) {\n url = url.replace(/.*\\/download\\//, lmsBaseUrl + '/plugins/SqueezeESP32/firmware/');\n }\n $('#fw-url-input').val(url);\n $('#start-flash').show();\n $('#rTable tr.release').removeClass('table-success table-warning');\n $(this).addClass('table-success table-warning');\n });\n\n }).fail(function () {\n alert('failed to fetch release history!');\n });\n });\n $('#fwcheck').on('click', function () {\n $('#releaseTable').html('');\n $('#fwbranch').empty();\n $.getJSON(releaseURL, function (data) {\n let i = 0;\n const branches = [];\n data.forEach(function (release) {\n const namecomponents = release.name.split('#');\n const branch = namecomponents[3];\n if (!branches.includes(branch)) {\n branches.push(branch);\n }\n });\n let fwb;\n branches.forEach(function (branch) {\n fwb += '';\n });\n $('#fwbranch').append(fwb);\n\n data.forEach(function (release) {\n let url = '';\n release.assets.forEach(function (asset) {\n if (asset.name.match(/\\.bin$/)) {\n url = asset.browser_download_url;\n }\n });\n const namecomponents = release.name.split('#');\n const ver = namecomponents[0];\n const idf = namecomponents[1];\n const cfg = namecomponents[2];\n const branch = namecomponents[3];\n\n let body = release.body;\n body = body.replace(/'/gi, '\"');\n body = body.replace(\n /[\\s\\S]+(### Revision Log[\\s\\S]+)### ESP-IDF Version Used[\\s\\S]+/,\n '$1'\n );\n body = body.replace(/- \\(.+?\\) /g, '- ');\n const trclass = i++ > 6 ? ' hide' : '';\n $('#releaseTable').append(\n \"\" +\n \"\" +\n ver +\n '' +\n '' +\n new Date(release.created_at).toLocalShort() +\n '' +\n '' +\n cfg +\n '' +\n '' +\n idf +\n '' +\n '' +\n branch +\n '' +\n \"\" +\n ''\n );\n });\n if (i > 7) {\n $('#releaseTable').append(\n \"\" +\n \"\" +\n \"\" +\n '' +\n ''\n );\n $('#showallbutton').on('click', function () {\n $('tr.hide').removeClass('hide');\n $('tr#showall').addClass('hide');\n });\n }\n $('#searchfw').css('display', 'inline');\n }).fail(function () {\n alert('failed to fetch release history!');\n });\n });\n\n $('#updateAP').on('click', function () {\n refreshAP();\n console.log('refresh AP');\n });\n\n // first time the page loads: attempt to get the connection status and start the wifi scan\n getConfig();\n getCommands();\n getMessages();\n checkStatus();\n\n});\n\n// eslint-disable-next-line no-unused-vars\nwindow.setURL = function (button) {\n let url = button.dataset.url;\n\n $('[data-bs-url^=\"http\"]')\n .addClass('btn-success')\n .removeClass('btn-danger');\n $('[data-bs-url=\"' + url + '\"]')\n .addClass('btn-danger')\n .removeClass('btn-success');\n\n // if user can proxy download through LMS, modify the URL\n if (lmsBaseUrl) {\n url = url.replace(/.*\\/download\\//, lmsBaseUrl + '/plugins/SqueezeESP32/firmware/');\n }\n\n $('#fwurl').val(url);\n}\n\n\nfunction rssiToIcon(rssi) {\n if (rssi >= -55) {\n return {'label':'****','icon':`signal_wifi_statusbar_4_bar`};\n } else if (rssi >= -60) {\n return {'label':'***','icon':`network_wifi_3_bar`};\n } else if (rssi >= -65) {\n return {'label':'**','icon':`network_wifi_2_bar`};\n } else if (rssi >= -70) {\n return {'label':'*','icon':`network_wifi_1_bar`};\n } else {\n return {'label':'.','icon':`signal_wifi_statusbar_null`};\n }\n}\n\nfunction refreshAP() {\n if (ConnectedTo?.urc === connectReturnCode.ETH) return;\n $.ajaxSetup({\n timeout: 3000 //Time in milliseconds\n });\n $.getJSON('/scan.json', async function () {\n await sleep(2000);\n $.getJSON('/ap.json', function (data) {\n if (data.length > 0) {\n // sort by signal strength\n data.sort(function (a, b) {\n const x = a.rssi;\n const y = b.rssi;\n // eslint-disable-next-line no-nested-ternary\n return x < y ? 1 : x > y ? -1 : 0;\n });\n apList = data;\n refreshAPHTML2(apList);\n\n }\n });\n });\n}\nfunction formatAP(ssid, rssi, auth) {\n const rssi_icon=rssiToIcon(rssi);\n const auth_icon={label:auth == 0 ? '🔓' : '🔒',icon:auth == 0 ? 'no_encryption' : 'lock'};\n \n return `${ssid}\n ${getIcon(rssi_icon)}\n \t\n ${getIcon(auth_icon)}\n `;\n}\nfunction refreshAPHTML2(data) {\n let h = '';\n $('#wifiTable tr td:first-of-type').text('');\n $('#wifiTable tr').removeClass('table-success table-warning');\n if (data) {\n data.forEach(function (e) {\n h += formatAP(e.ssid, e.rssi, e.auth);\n });\n $('#wifiTable').html(h);\n }\n if ($('.manual_add').length == 0) {\n $('#wifiTable').append(formatAP('Manual add', 0, 0));\n $('#wifiTable tr:last').addClass('table-light text-dark').addClass('manual_add');\n }\n if (ConnectedTo.ssid && (ConnectedTo.urc === connectReturnCode.OK || ConnectedTo.urc === connectReturnCode.RESTORE)) {\n const wifiSelector = `#wifiTable td:contains(\"${ConnectedTo.ssid}\")`;\n if ($(wifiSelector).filter(function () { return $(this).text() === ConnectedTo.ssid; }).length == 0) {\n $('#wifiTable').prepend(`${formatAP(ConnectedTo.ssid, ConnectedTo.rssi ?? 0, 0)}`);\n }\n $(wifiSelector).filter(function () { return $(this).text() === ConnectedTo.ssid; }).siblings().first().html('✓').parent().addClass((ConnectedTo.urc === connectReturnCode.OK ? 'table-success' : 'table-warning'));\n $('span#foot-if').html(`SSID: ${ConnectedTo.ssid}, IP: ${ConnectedTo.ip}`);\n $('#wifiStsIcon').html(rssiToIcon(ConnectedTo.rssi));\n\n }\n else if (ConnectedTo?.urc !== connectReturnCode.ETH) {\n $('span#foot-if').html('');\n }\n\n}\nfunction refreshETH() {\n\n if (ConnectedTo.urc === connectReturnCode.ETH) {\n $('span#foot-if').html(`Network: Ethernet, IP: ${ConnectedTo.ip}`);\n }\n}\nfunction showTask(task) {\n console.debug(\n this.toLocaleString() +\n '\\t' +\n task.nme +\n '\\t' +\n task.cpu +\n '\\t' +\n taskStates[task.st] +\n '\\t' +\n task.minstk +\n '\\t' +\n task.bprio +\n '\\t' +\n task.cprio +\n '\\t' +\n task.num\n );\n $('tbody#tasks').append(\n '' +\n task.num +\n '' +\n task.nme +\n '' +\n task.cpu +\n '' +\n taskStates[task.st] +\n '' +\n task.minstk +\n '' +\n task.bprio +\n '' +\n task.cprio +\n ''\n );\n}\nfunction btExists(name) {\n return getBTSinkOpt(name).length > 0;\n}\nfunction getBTSinkOpt(name) {\n return $(`${btSinkNamesOptSel} option:contains('${name}')`);\n}\nfunction getMessages() {\n $.ajaxSetup({\n timeout: messageInterval //Time in milliseconds\n });\n $.getJSON('/messages.json', async function (data) {\n for (const msg of data) {\n const msgAge = msg.current_time - msg.sent_time;\n var msgTime = new Date();\n msgTime.setTime(msgTime.getTime() - msgAge);\n switch (msg.class) {\n case 'MESSAGING_CLASS_OTA':\n flashState.EventOTAMessageClass(msg.message);\n break;\n case 'MESSAGING_CLASS_STATS':\n // for task states, check structure : task_state_t\n var statsData = JSON.parse(msg.message);\n console.debug(\n msgTime.toLocalShort() +\n ' - Number of running tasks: ' +\n statsData.ntasks\n );\n console.debug(\n msgTime.toLocalShort() +\n '\\tname' +\n '\\tcpu' +\n '\\tstate' +\n '\\tminstk' +\n '\\tbprio' +\n '\\tcprio' +\n '\\tnum'\n );\n if (statsData.tasks) {\n if ($('#tasks_sect').css('visibility') === 'collapse') {\n $('#tasks_sect').css('visibility', 'visible');\n }\n $('tbody#tasks').html('');\n statsData.tasks\n .sort(function (a, b) {\n return b.cpu - a.cpu;\n })\n .forEach(showTask, msgTime);\n } else if ($('#tasks_sect').css('visibility') === 'visible') {\n $('tbody#tasks').empty();\n $('#tasks_sect').css('visibility', 'collapse');\n }\n break;\n case 'MESSAGING_CLASS_SYSTEM':\n showMessage(msg, msgTime);\n break;\n case 'MESSAGING_CLASS_CFGCMD':\n var msgparts = msg.message.split(/([^\\n]*)\\n(.*)/gs);\n showCmdMessage(msgparts[1], msg.type, msgparts[2], true);\n break;\n case 'MESSAGING_CLASS_BT':\n if ($(\"#cfg-audio-bt_source-sink_name\").is('input')) {\n var attr = $(\"#cfg-audio-bt_source-sink_name\")[0].attributes;\n var attrs = '';\n for (var j = 0; j < attr.length; j++) {\n if (attr.item(j).name != \"type\") {\n attrs += `${attr.item(j).name} = \"${attr.item(j).value}\" `;\n }\n }\n var curOpt = $(\"#cfg-audio-bt_source-sink_name\")[0].value;\n $(\"#cfg-audio-bt_source-sink_name\").replaceWith(` `);\n }\n JSON.parse(msg.message).forEach(function (btEntry) {\n //\n // \n if (!btExists(btEntry.name)) {\n $(\"#cfg-audio-bt_source-sink_name\").append(``);\n showMessage({ type: msg.type, message: `BT Audio device found: ${btEntry.name} RSSI: ${btEntry.rssi} ` }, msgTime);\n }\n getBTSinkOpt(btEntry.name).attr('data-bs-description', `${btEntry.name} (${btEntry.rssi}dB)`)\n .attr('rssi', btEntry.rssi)\n .attr('value', btEntry.name)\n .text(`${btEntry.name} [${btEntry.rssi}dB]`).trigger('change');\n\n });\n $(btSinkNamesOptSel).append($(`${btSinkNamesOptSel} option`).remove().sort(function (a, b) {\n console.log(`${parseInt($(a).attr('rssi'))} < ${parseInt($(b).attr('rssi'))} ? `);\n return parseInt($(a).attr('rssi')) < parseInt($(b).attr('rssi')) ? 1 : -1;\n }));\n break;\n default:\n break;\n }\n }\n setTimeout(getMessages,messageInterval);\n }).fail(function (xhr, ajaxOptions, thrownError) {\n \n if (xhr.status == 404) {\n $('.orec').hide(); // system commands won't be available either\n messagesHeld = true;\n }\n else {\n handleExceptionResponse(xhr, ajaxOptions, thrownError);\n }\n if(xhr.status == 0 && xhr.readyState ==0){\n // probably a timeout. Target is rebooting? \n setTimeout(getMessages,messageInterval*2); // increase duration if a failure happens\n }\n else if(!messagesHeld){\n // 404 here means we rebooted to an old recovery\n setTimeout(getMessages,messageInterval); // increase duration if a failure happens\n }\n \n }\n );\n\n /*\n Minstk is minimum stack space left\nBprio is base priority\ncprio is current priority\nnme is name\nst is task state. I provided a \"typedef\" that you can use to convert to text\ncpu is cpu percent used\n*/\n}\nfunction handleRecoveryMode(data) {\n const locRecovery = data.recovery ?? 0;\n if (locRecovery === 1) {\n recovery = true;\n $('.recovery_element').show();\n $('.ota_element').hide();\n $('#boot-button').html('Reboot');\n $('#boot-form').attr('action', '/reboot_ota.json');\n } else {\n if(!recovery && messagesHeld){\n messagesHeld=false;\n setTimeout(getMessages,messageInterval); // increase duration if a failure happens\n }\n recovery = false;\n \n $('.recovery_element').hide();\n $('.ota_element').show();\n $('#boot-button').html('Recovery');\n $('#boot-form').attr('action', '/recovery.json');\n }\n \n}\n\nfunction hasConnectionChanged(data) {\n // gw: \"192.168.10.1\"\n // ip: \"192.168.10.225\"\n // netmask: \"255.255.255.0\"\n // ssid: \"MyTestSSID\"\n\n return (data.urc !== ConnectedTo.urc ||\n data.ssid !== ConnectedTo.ssid ||\n data.gw !== ConnectedTo.gw ||\n data.netmask !== ConnectedTo.netmask ||\n data.ip !== ConnectedTo.ip || data.rssi !== ConnectedTo.rssi)\n}\nfunction handleWifiDialog(data) {\n if ($('#WifiConnectDialog').is(':visible')) {\n if (ConnectedTo.ip) {\n $('#ipAddress').text(ConnectedTo.ip);\n }\n if (ConnectedTo.ssid) {\n $('#connectedToSSID').text(ConnectedTo.ssid);\n }\n if (ConnectedTo.gw) {\n $('#gateway').text(ConnectedTo.gw);\n }\n if (ConnectedTo.netmask) {\n $('#netmask').text(ConnectedTo.netmask);\n }\n if (ConnectingToSSID.Action === undefined || (ConnectingToSSID.Action && ConnectingToSSID.Action == ConnectingToActions.STS)) {\n $(\"*[class*='connecting']\").hide();\n $('.connecting-status').show();\n }\n if (SystemConfig.ap_ssid) {\n $('#apName').text(SystemConfig.ap_ssid.value);\n }\n if (SystemConfig.ap_pwd) {\n $('#apPass').text(SystemConfig.ap_pwd.value);\n }\n if (!data) {\n return;\n }\n else {\n switch (data.urc) {\n case connectReturnCode.OK:\n if (data.ssid && data.ssid === ConnectingToSSID.ssid) {\n $(\"*[class*='connecting']\").hide();\n $('.connecting-success').show();\n ConnectingToSSID.Action = ConnectingToActions.STS;\n }\n break;\n case connectReturnCode.FAIL:\n // \n if (ConnectingToSSID.Action != ConnectingToActions.STS && ConnectingToSSID.ssid == data.ssid) {\n $(\"*[class*='connecting']\").hide();\n $('.connecting-fail').show();\n }\n break;\n case connectReturnCode.LOST:\n\n break;\n case connectReturnCode.RESTORE:\n if (ConnectingToSSID.Action != ConnectingToActions.STS && ConnectingToSSID.ssid != data.ssid) {\n $(\"*[class*='connecting']\").hide();\n $('.connecting-fail').show();\n }\n break;\n case connectReturnCode.DISC:\n // that's a manual disconnect\n // if ($('#wifi-status').is(':visible')) {\n // $('#wifi-status').slideUp('fast', function() {});\n // $('span#foot-wifi').html('');\n\n // } \n break;\n default:\n break;\n }\n }\n\n }\n}\nfunction setIcons(offline){\n $('.material-icons').each(function (_index, entry) {\n entry.textContent = entry.attributes[offline?'aria-label':'icon'].value;\n });\n}\nfunction handleNetworkStatus(data) {\n setIcons(!isConnected());\n if (hasConnectionChanged(data) || !data.urc) {\n ConnectedTo = data;\n $(\".if_eth\").hide();\n $('.if_wifi').hide();\n if (!data.urc || ConnectedTo.urc != connectReturnCode.ETH) {\n $('.if_wifi').show();\n refreshAPHTML2();\n }\n else {\n $(\".if_eth\").show();\n refreshETH();\n }\n\n }\n handleWifiDialog(data);\n}\n\n\n\nfunction batteryToIcon(voltage) {\n /* Assuming Li-ion 18650s as a power source, 3.9V per cell, or above is treated\n as full charge (>75% of capacity). 3.4V is empty. The gauge is loosely\n following the graph here:\n https://learn.adafruit.com/li-ion-and-lipoly-batteries/voltages\n using the 0.2C discharge profile for the rest of the values.\n*/\n\n for (const iconEntry of batIcons) {\n for (const entryRanges of iconEntry.ranges) {\n if (inRange(voltage, entryRanges.f, entryRanges.t)) {\n return { label: iconEntry.label, icon:iconEntry.icon};\n }\n }\n }\n\n\n return {label:'▪▪▪▪',icon:\"battery_full\"};\n}\nfunction checkStatus() {\n $.ajaxSetup({\n timeout: statusInterval //Time in milliseconds\n });\n $.getJSON('/status.json', function (data) {\n handleRecoveryMode(data);\n handleNVSVisible();\n handleNetworkStatus(data);\n handlebtstate(data);\n flashState.EventTargetStatus(data);\n\n if (data.project_name && data.project_name !== '') {\n project_name = data.project_name;\n }\n if (data.platform_name && data.platform_name !== '') {\n platform_name = data.platform_name;\n }\n if (board_model === '') board_model = project_name;\n if (board_model === '') board_model = 'Squeezelite-ESP32';\n if (data.version && data.version !== '') {\n versionName = data.version;\n $(\"#navtitle\").html(`${board_model}${recovery ? '
[recovery]' : ''}`);\n $('span#foot-fw').html(`fw: ${versionName}, mode: ${recovery ? \"Recovery\" : project_name}`);\n } else {\n $('span#flash-status').html('');\n }\n if (data.Voltage) {\n const bat_icon=batteryToIcon(data.Voltage);\n $('#battery').html(`${getIcon(bat_icon)}`);\n $('#battery').attr(\"aria-label\",bat_icon.label);\n $('#battery').attr(\"icon\",bat_icon.icon);\n $('#battery').show();\n } else {\n $('#battery').hide();\n }\n if ((data.message ?? '') != '' && prevmessage != data.message) {\n // supporting older recovery firmwares - messages will come from the status.json structure\n prevmessage = data.message;\n showLocalMessage(data.message, 'MESSAGING_INFO')\n }\n is_i2c_locked = data.is_i2c_locked;\n if (is_i2c_locked) {\n $('flds-cfg-hw-preset').hide();\n }\n else {\n $('flds-cfg-hw-preset').show();\n }\n $(\"button[onclick*='handleReboot']\").removeClass('rebooting');\n\n if (typeof lmsBaseUrl == \"undefined\" || data.lms_ip != prevLMSIP && data.lms_ip && data.lms_port) {\n const baseUrl = 'http://' + data.lms_ip + ':' + data.lms_port;\n prevLMSIP = data.lms_ip;\n $.ajax({\n url: baseUrl + '/plugins/SqueezeESP32/firmware/-check.bin',\n type: 'HEAD',\n dataType: 'text',\n cache: false,\n error: function () {\n // define the value, so we don't check it any more.\n lmsBaseUrl = '';\n },\n success: function () {\n lmsBaseUrl = baseUrl;\n }\n });\n }\n $('#o_jack').css({ display: Number(data.Jack) ? 'inline' : 'none' });\n setTimeout(checkStatus,statusInterval);\n }).fail(function (xhr, ajaxOptions, thrownError) {\n handleExceptionResponse(xhr, ajaxOptions, thrownError);\n if(xhr.status == 0 && xhr.readyState ==0){\n // probably a timeout. Target is rebooting? \n setTimeout(checkStatus,messageInterval*2); // increase duration if a failure happens\n }\n else {\n setTimeout(checkStatus,messageInterval); // increase duration if a failure happens\n }\n });\n}\n// eslint-disable-next-line no-unused-vars\nwindow.runCommand = function (button, reboot) {\n let cmdstring = button.attributes.cmdname.value;\n showCmdMessage(\n button.attributes.cmdname.value,\n 'MESSAGING_INFO',\n 'Executing.',\n false\n );\n const fields = document.getElementById('flds-' + cmdstring);\n const allfields = fields?.querySelectorAll('select,input');\n if (cmdstring === 'cfg-hw-preset') return handleHWPreset(allfields, reboot);\n cmdstring += ' ';\n if (fields) {\n\n for (const field of allfields) {\n let qts = '';\n let opt = '';\n let attr = field.attributes;\n let isSelect = $(field).is('select');\n const hasValue = attr?.hasvalue?.value === 'true';\n const validVal = (isSelect && field.value !== '--') || (!isSelect && field.value !== '');\n\n if (!hasValue || hasValue && validVal) {\n if (attr?.longopts?.value !== 'undefined') {\n opt += '--' + attr?.longopts?.value;\n } else if (attr?.shortopts?.value !== 'undefined') {\n opt = '-' + attr.shortopts.value;\n }\n\n if (attr?.hasvalue?.value === 'true') {\n if (attr?.value !== '') {\n qts = /\\s/.test(field.value) ? '\"' : '';\n cmdstring += opt + ' ' + qts + field.value + qts + ' ';\n }\n } else {\n // this is a checkbox\n if (field?.checked) {\n cmdstring += opt + ' ';\n }\n }\n }\n }\n }\n\n console.log(cmdstring);\n\n const data = {\n timestamp: Date.now(),\n };\n data.command = cmdstring;\n\n $.ajax({\n url: '/commands.json',\n dataType: 'text',\n method: 'POST',\n cache: false,\n contentType: 'application/json; charset=utf-8',\n data: JSON.stringify(data),\n error: function (xhr, _ajaxOptions, thrownError) {\n var cmd = JSON.parse(this.data).command;\n if (xhr.status == 404) {\n showCmdMessage(\n cmd.substr(0, cmd.indexOf(' ')),\n 'MESSAGING_ERROR',\n `${recovery ? 'Limited recovery mode active. Unsupported action ' : 'Unexpected error while processing command'}`,\n true\n );\n }\n else {\n handleExceptionResponse(xhr, _ajaxOptions, thrownError);\n showCmdMessage(\n cmd.substr(0, cmd.indexOf(' ') - 1),\n 'MESSAGING_ERROR',\n `Unexpected error ${(thrownError !== '') ? thrownError : 'with return status = ' + xhr.status}`,\n true\n );\n }\n },\n success: function (response) {\n $('.orec').show();\n console.log(response);\n if (\n JSON.parse(response).Result === 'Success' &&\n reboot\n ) {\n delayReboot(2500, button.attributes.cmdname.value);\n }\n },\n });\n}\nfunction getLongOps(data, name, longopts) {\n return data.values[name] !== undefined ? data.values[name][longopts] : \"\";\n}\nfunction getCommands() {\n $.ajaxSetup({\n timeout: 7000 //Time in milliseconds\n });\n $.getJSON('/commands.json', function (data) {\n console.log(data);\n $('.orec').show();\n data.commands.forEach(function (command) {\n if ($('#flds-' + command.name).length === 0) {\n const cmdParts = command.name.split('-');\n const isConfig = cmdParts[0] === 'cfg';\n const targetDiv = '#tab-' + cmdParts[0] + '-' + cmdParts[1];\n let innerhtml = '';\n innerhtml += `
${command.help.encodeHTML().replace(/\\n/g, '
')}
`;\n if (command.argtable) {\n command.argtable.forEach(function (arg) {\n let placeholder = arg.datatype || '';\n const ctrlname = command.name + '-' + arg.longopts;\n const curvalue = getLongOps(data, command.name, arg.longopts);\n\n let attributes = 'hasvalue=' + arg.hasvalue + ' ';\n attributes += 'longopts=\"' + arg.longopts + '\" ';\n attributes += 'shortopts=\"' + arg.shortopts + '\" ';\n attributes += 'checkbox=' + arg.checkbox + ' ';\n attributes += 'cmdname=\"' + command.name + '\" ';\n attributes +=\n 'id=\"' +\n ctrlname +\n '\" name=\"' +\n ctrlname +\n '\" hasvalue=\"' +\n arg.hasvalue +\n '\" ';\n let extraclass = arg.mincount > 0 ? 'bg-success' : '';\n if (arg.glossary === 'hidden') {\n attributes += ' style=\"visibility: hidden;\"';\n }\n if (arg.checkbox) {\n innerhtml += `
`;\n } else {\n innerhtml += `
`;\n if (placeholder.includes('|')) {\n extraclass = placeholder.startsWith('+') ? ' multiple ' : '';\n placeholder = placeholder\n .replace('<', '')\n .replace('=', '')\n .replace('>', '');\n innerhtml += `';\n } else {\n innerhtml += ``;\n }\n }\n\n innerhtml += `${arg.checkbox ? '
' : ''}Previous value: ${arg.checkbox ? (curvalue ? 'Checked' : 'Unchecked') : (curvalue || '')}${arg.checkbox ? '' : '
'}`;\n });\n }\n innerhtml += `
\n
\n
\n Result\n
\n
\n
`;\n if (isConfig) {\n innerhtml +=\n `\n`;\n } else {\n innerhtml += ``;\n }\n innerhtml += '
';\n if (isConfig) {\n $(targetDiv).append(innerhtml);\n } else {\n $('#commands-list').append(innerhtml);\n }\n }\n });\n $(\".sclk\").off('click').on('click', function () { runCommand(this, false); });\n $(\".cclk\").off('click').on('click', function () { runCommand(this, true); });\n data.commands.forEach(function (command) {\n $('[cmdname=' + command.name + ']:input').val('');\n $('[cmdname=' + command.name + ']:checkbox').prop('checked', false);\n if (command.argtable) {\n command.argtable.forEach(function (arg) {\n const ctrlselector = '#' + command.name + '-' + arg.longopts;\n const ctrlValue = getLongOps(data, command.name, arg.longopts);\n if (arg.checkbox) {\n $(ctrlselector)[0].checked = ctrlValue;\n } else {\n if (ctrlValue !== undefined) {\n $(ctrlselector)\n .val(ctrlValue)\n .trigger('change');\n }\n if (\n $(ctrlselector)[0].value.length === 0 &&\n (arg.datatype || '').includes('|')\n ) {\n $(ctrlselector)[0].value = '--';\n }\n }\n });\n }\n });\n loadPresets();\n }).fail(function (xhr, ajaxOptions, thrownError) {\n if (xhr.status == 404) {\n $('.orec').hide();\n }\n else {\n handleExceptionResponse(xhr, ajaxOptions, thrownError);\n }\n $('#commands-list').empty();\n\n });\n}\n\nfunction getConfig() {\n $.ajaxSetup({\n timeout: 7000 //Time in milliseconds\n });\n $.getJSON('/config.json', function (entries) {\n $('#nvsTable tr').remove();\n const data = (entries.config ? entries.config : entries);\n SystemConfig = data;\n Object.keys(data)\n .sort()\n .forEach(function (key) {\n let val = data[key].value;\n if (key === 'autoexec') {\n if (data.autoexec.value === '0') {\n $('#disable-squeezelite')[0].checked = true;\n } else {\n $('#disable-squeezelite')[0].checked = false;\n }\n } else if (key === 'autoexec1') {\n const re = /-o\\s?([\"][^\"]*[\"]|[^-]+)/g;\n const m = re.exec(val);\n if (m[1].toUpperCase().startsWith('I2S')) {\n handleTemplateTypeRadio('i2s');\n } else if (m[1].toUpperCase().startsWith('SPDIF')) {\n handleTemplateTypeRadio('spdif');\n } else if (m[1].toUpperCase().startsWith('\"BT')) {\n handleTemplateTypeRadio('bt');\n }\n } else if (key === 'host_name') {\n val = val.replaceAll('\"', '');\n $('input#dhcp-name1').val(val);\n $('input#dhcp-name2').val(val);\n $('#player').val(val);\n document.title = val;\n hostName = val;\n } else if (key === 'rel_api') {\n releaseURL = val;\n }\n else if (key === 'enable_airplay') {\n $(\"#s_airplay\").css({ display: isEnabled(val) ? 'inline' : 'none' })\n }\n else if (key === 'enable_cspot') {\n $(\"#s_cspot\").css({ display: isEnabled(val) ? 'inline' : 'none' })\n }\n else if (key == 'preset_name') {\n preset_name = val;\n }\n else if (key == 'board_model') {\n board_model = val;\n }\n\n $('tbody#nvsTable').append(\n '' +\n '' +\n key +\n '' +\n \"\" +\n \"' +\n '' +\n ''\n );\n $('input#' + key).val(data[key].value);\n });\n $('tbody#nvsTable').append(\n \"\"\n );\n if (entries.gpio) {\n $('#pins').show();\n $('tbody#gpiotable tr').remove();\n entries.gpio.forEach(function (gpioEntry) {\n $('tbody#gpiotable').append(\n '' +\n gpioEntry.group +\n '' +\n gpioEntry.name +\n '' +\n gpioEntry.gpio +\n '' +\n (gpioEntry.fixed ? 'Fixed' : 'Configuration') +\n ''\n );\n });\n }\n else {\n $('#pins').hide();\n }\n }).fail(function (xhr, ajaxOptions, thrownError) {\n handleExceptionResponse(xhr, ajaxOptions, thrownError);\n });\n}\nfunction showLocalMessage(message, severity) {\n const msg = {\n message: message,\n type: severity,\n };\n showMessage(msg, new Date());\n}\n\nfunction showMessage(msg, msgTime) {\n let color = 'table-success';\n\n if (msg.type === 'MESSAGING_WARNING') {\n color = 'table-warning';\n if (messageseverity === 'MESSAGING_INFO') {\n messageseverity = 'MESSAGING_WARNING';\n }\n } else if (msg.type === 'MESSAGING_ERROR') {\n if (\n messageseverity === 'MESSAGING_INFO' ||\n messageseverity === 'MESSAGING_WARNING'\n ) {\n messageseverity = 'MESSAGING_ERROR';\n }\n color = 'table-danger';\n }\n if (++messagecount > 0) {\n $('#msgcnt').removeClass('badge-success');\n $('#msgcnt').removeClass('badge-warning');\n $('#msgcnt').removeClass('badge-danger');\n $('#msgcnt').addClass(pillcolors[messageseverity]);\n $('#msgcnt').text(messagecount);\n }\n\n $('#syslogTable').append(\n \"\" +\n '' +\n msgTime.toLocalShort() +\n '' +\n '' +\n msg.message.encodeHTML() +\n '' +\n ''\n );\n}\n\nfunction inRange(x, min, max) {\n return (x - min) * (x - max) <= 0;\n}\n\nfunction sleep(ms) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nrequire(\"bootstrap\");\nrequire(\"./sass/main.scss\");\nrequire(\"./assets/images/favicon-32x32.png\");\nrequire(\"./js/custom.js\");\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t826: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunksqueezelite_esp32\"] = self[\"webpackChunksqueezelite_esp32\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [987], () => (__webpack_require__(607)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","he","require","Promise","handleNVSVisible","nvs_previous_checked","isEnabled","Cookies","$","checked","recovery","show","hide","val","undefined","match","window","bootstrap","String","prototype","format","Object","assign","args","arguments","this","replace","number","encodeHTML","encode","Date","toLocalShort","toLocaleString","dateStyle","timeStyle","nvsTypes","btIcons","bt_playing","bt_disconnected","bt_neutral","bt_connecting","bt_connected","bt_disabled","play_arrow","pause","stop","batIcons","icon","label","ranges","f","t","btStateIcons","desc","sub","pillcolors","MESSAGING_INFO","MESSAGING_WARNING","MESSAGING_ERROR","connectReturnCode","OK","FAIL","DISC","LOST","RESTORE","ETH","taskStates","flashState","NONE","REBOOT_TO_RECOVERY","SET_FWURL","FLASHING","DONE","UPLOADING","ERROR","UPLOADCOMPLETE","_state","olderRecovery","statusText","flashURL","flashFileName","statusPercent","Completed","prevRecovery","updateModal","Modal","document","getElementById","reset","UpdateProgress","removeClass","prop","value","isStateError","html","parent","isStateUploadComplete","isStateNone","isStateRebootRecovery","isStateSetUrl","isStateFlashing","isStateDone","isStateUploading","init","SetStateError","addClass","SetStateNone","SetStateRebootRecovery","SetStatusText","ajax","url","context","dataType","method","cache","contentType","data","JSON","stringify","timestamp","now","error","xhr","_ajaxOptions","thrownError","_xhr$status","setOTAError","concat","status","complete","response","SetStateSetUrl","post_config","fwurl","type","SetStateFlashing","SetStateDone","SetStateUploading","SetStateUploadComplete","isFlashExecuting","toString","_this","keys","find","x","setOTATargets","fileInput","files","length","message","SetStatusPercent","ShowDialog","pct","pctChanged","txt","changed","css","attr","text","StartOTA","logEvent","name","TargetReadyStartOTA","UploadLocalFile","xhttp","XMLHttpRequest","boundHandleUploadProgressEvent","HandleUploadProgressEvent","bind","boundsetOTAError","upload","addEventListener","onreadystatechange","readyState","open","send","console","Math","round","loaded","total","EventTargetStatus","_data$ota_pct","_data$ota_dsc","ota_pct","ota_dsc","EventOTAMessageClass","otaData","parse","fun","log","hideSurrounding","obj","presetsloaded","messageInterval","confPayload","config","handleExceptionResponse","isConnected","ConnectedTo","hasOwnProperty","ip","getIcon","icons","handleTemplateTypeRadio","outtype","children","display","output","showLocalMessage","showCmdMessage","cmdname","msgtype","msgtext","append","color","escapedtext","substring","hFlash","handleReboot","link","delayReboot","lmsBaseUrl","releaseURL","messagesHeld","messagecount","messageseverity","SystemConfig","LastCommandsState","hostName","versionName","prevmessage","project_name","board_model","platform_name","preset_name","btSinkNamesOptSel","ConnectingToSSID","prevLMSIP","ConnectingToActions","getConfigJson","slimMode","each","_index","entry","id","nvsType","parseInt","attributes","nvs_type","key","duration","empty","resolve","delay","then","rdata","HideCmdMessage","getCommands","getConfig","setPlatformFilter","filter","toUpperCase","trigger","rssiToIcon","rssi","refreshAP","_ConnectedTo","urc","ajaxSetup","timeout","getJSON","_asyncToGenerator","_regeneratorRuntime","_callee","_context","prev","next","sleep","sort","a","b","y","refreshAPHTML2","formatAP","ssid","auth","rssi_icon","auth_icon","_ConnectedTo2","h","forEach","e","_ConnectedTo$rssi","wifiSelector","prepend","siblings","first","showTask","task","debug","nme","cpu","st","minstk","bprio","cprio","num","getBTSinkOpt","getMessages","_ref2","_callee2","_iterator","_step","_loop","msgTime","statsData","msgparts","attrs","j","curOpt","_context3","_createForOfIteratorHelper","msg","msgAge","_context2","current_time","sent_time","setTime","getTime","t0","abrupt","ntasks","tasks","showMessage","split","is","item","replaceWith","btEntry","remove","s","n","done","delegateYield","t1","finish","setTimeout","_x","apply","fail","ajaxOptions","handleWifiDialog","gw","netmask","Action","STS","ap_ssid","ap_pwd","setIcons","offline","textContent","handleNetworkStatus","hasConnectionChanged","checkStatus","_data$message","_data$recovery","handleRecoveryMode","tt","bt_status","bt_sub_status","iconindex","handlebtstate","version","Voltage","bat_icon","voltage","_i2","_batIcons","_step2","iconEntry","_iterator2","entryRanges","err","batteryToIcon","is_i2c_locked","lms_ip","lms_port","baseUrl","success","Number","Jack","getLongOps","longopts","values","commands","command","cmdParts","isConfig","targetDiv","innerhtml","help","argtable","arg","placeholder","datatype","ctrlname","curvalue","hasvalue","shortopts","checkbox","extraclass","mincount","glossary","includes","startsWith","choice","off","on","runCommand","ctrlselector","ctrlValue","_","jqxhr","textStatus","entries","autoexec","m","exec","replaceAll","title","gpio","gpioEntry","fixed","group","severity","ms","reason","_resolve","reject","saveAutoexec1","commandLine","commandHeader","autoexec1","responseText","result","Result","handleDisconnect","handleConnect","pwd","dhcpname","ready","index","not","event","relatedTarget","CONN","MAN","FileReader","file","fr","onload","target","ex","alert","readAsText","slideUp","slideDown","preventDefault","createElement","href","URL","createObjectURL","Blob","setAttribute","body","appendChild","click","removeChild","branches","release","branch","push","fwb","assets","asset","browser_download_url","namecomponents","ver","cfg","bits","substr","lastIndexOf","created_at","i","idf","trclass","setURL","button","dataset","reboot","cmdstring","fields","allfields","querySelectorAll","selJson","cmd","model_config","_i","_Object$entries","_Object$entries$_i","_slicedToArray","storedval","handleHWPreset","_step3","_iterator3","_attr$hasvalue","field","qts","opt","isSelect","hasValue","validVal","_attr$longopts","_attr$shortopts","_attr$hasvalue2","_attr$longopts2","test","indexOf","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","every","splice","r","getter","__esModule","d","definition","o","defineProperty","enumerable","get","g","globalThis","Function","Symbol","toStringTag","nmd","paths","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}