/* Library for 'interface' HTML files that are to be used from within BangleApps See: README.md / `apps.json`: `interface` element This exposes a 'Puck' object (a simple version of https://github.com/espruino/EspruinoWebTools/blob/master/puck.js) and calls `onInit` when it's ready. `Puck` can be used for sending/receiving data to the correctly connected device with Puck.eval/write. Puck.write(data,callback) Puck.eval(data,callback) There is also: Util.readStorageFile(filename,callback) Util.eraseStorageFile(filename,callback) Util.showModal(title) Util.hideModal() */ var __id = 0, __idlookup = []; var Puck = { eval : function(data,callback) { __id++; __idlookup[__id] = callback; window.postMessage({type:"eval",data:data,id:__id}); },write : function(data,callback) { __id++; __idlookup[__id] = callback; window.postMessage({type:"write",data:data,id:__id}); } }; var Util = { readStorageFile : function(filename,callback) { __id++; __idlookup[__id] = callback; window.postMessage({type:"readstoragefile",data:filename,id:__id}); }, eraseStorageFile : function(filename,callback) { Puck.write(`\x10require("Storage").open(${JSON.stringify(filename)}","r").erase()\n`,callback); }, showModal : function(title) { if (!Util.domModal) { Util.domModal = document.createElement('div'); Util.domModal.id = "status-modal"; Util.domModal.classList.add("modal"); Util.domModal.classList.add("active"); Util.domModal.innerHTML = `