boo-flash 0.1.8 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -12
- package/dist/app.js +647 -393
- package/package.json +3 -2
package/dist/app.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
// node_modules/@opentui/solid/index.js
|
|
1
|
+
// ../../node_modules/@opentui/solid/index.js
|
|
2
2
|
import { CliRenderer, createCliRenderer, engine as engine2 } from "@opentui/core";
|
|
3
3
|
import { createTestRenderer } from "@opentui/core/testing";
|
|
4
4
|
import { ASCIIFontRenderable, BoxRenderable, CodeRenderable, DiffRenderable, ImageRenderable, InputRenderable, LineNumberRenderable, MarkdownRenderable, ScrollBoxRenderable, SelectRenderable, TabSelectRenderable, TextareaRenderable, TextAttributes, TextNodeRenderable, TextRenderable } from "@opentui/core";
|
|
5
5
|
import { engine, Timeline } from "@opentui/core";
|
|
6
6
|
|
|
7
|
-
// node_modules/solid-js/dist/solid.js
|
|
7
|
+
// ../../node_modules/solid-js/dist/solid.js
|
|
8
8
|
var sharedConfig = {
|
|
9
9
|
context: void 0,
|
|
10
10
|
registry: void 0,
|
|
@@ -837,10 +837,10 @@ function Show(props) {
|
|
|
837
837
|
}, void 0, void 0);
|
|
838
838
|
}
|
|
839
839
|
|
|
840
|
-
// node_modules/@opentui/solid/index.js
|
|
840
|
+
// ../../node_modules/@opentui/solid/index.js
|
|
841
841
|
import { BaseRenderable, createTextAttributes, ImageRenderable as ImageRenderable2, InputRenderable as InputRenderable2, InputRenderableEvents, isTextNodeRenderable, isEditBufferRenderable, parseColor, Renderable, RootTextNodeRenderable, ScrollBoxRenderable as ScrollBoxRenderable2, SelectRenderable as SelectRenderable2, SelectRenderableEvents, TabSelectRenderable as TabSelectRenderable2, TabSelectRenderableEvents, TextNodeRenderable as TextNodeRenderable2, TextRenderable as TextRenderable2 } from "@opentui/core";
|
|
842
842
|
|
|
843
|
-
// node_modules/entities/dist/esm/decode-codepoint.js
|
|
843
|
+
// ../../node_modules/entities/dist/esm/decode-codepoint.js
|
|
844
844
|
var _a;
|
|
845
845
|
var decodeMap = /* @__PURE__ */ new Map([
|
|
846
846
|
[0, 65533],
|
|
@@ -894,7 +894,7 @@ function replaceCodePoint(codePoint) {
|
|
|
894
894
|
return (_a2 = decodeMap.get(codePoint)) !== null && _a2 !== void 0 ? _a2 : codePoint;
|
|
895
895
|
}
|
|
896
896
|
|
|
897
|
-
// node_modules/entities/dist/esm/internal/decode-shared.js
|
|
897
|
+
// ../../node_modules/entities/dist/esm/internal/decode-shared.js
|
|
898
898
|
function decodeBase64(input) {
|
|
899
899
|
const binary = (
|
|
900
900
|
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
@@ -924,10 +924,10 @@ function decodeBase64(input) {
|
|
|
924
924
|
return out;
|
|
925
925
|
}
|
|
926
926
|
|
|
927
|
-
// node_modules/entities/dist/esm/generated/decode-data-html.js
|
|
927
|
+
// ../../node_modules/entities/dist/esm/generated/decode-data-html.js
|
|
928
928
|
var htmlDecodeTree = /* @__PURE__ */ decodeBase64("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");
|
|
929
929
|
|
|
930
|
-
// node_modules/entities/dist/esm/internal/bin-trie-flags.js
|
|
930
|
+
// ../../node_modules/entities/dist/esm/internal/bin-trie-flags.js
|
|
931
931
|
var BinTrieFlags;
|
|
932
932
|
(function(BinTrieFlags2) {
|
|
933
933
|
BinTrieFlags2[BinTrieFlags2["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
@@ -936,7 +936,7 @@ var BinTrieFlags;
|
|
|
936
936
|
BinTrieFlags2[BinTrieFlags2["JUMP_TABLE"] = 127] = "JUMP_TABLE";
|
|
937
937
|
})(BinTrieFlags || (BinTrieFlags = {}));
|
|
938
938
|
|
|
939
|
-
// node_modules/entities/dist/esm/decode.js
|
|
939
|
+
// ../../node_modules/entities/dist/esm/decode.js
|
|
940
940
|
var CharCodes;
|
|
941
941
|
(function(CharCodes2) {
|
|
942
942
|
CharCodes2[CharCodes2["NUM"] = 35] = "NUM";
|
|
@@ -1331,7 +1331,7 @@ function decodeHTMLStrict(htmlString) {
|
|
|
1331
1331
|
return htmlDecoder(htmlString, DecodingMode.Strict);
|
|
1332
1332
|
}
|
|
1333
1333
|
|
|
1334
|
-
// node_modules/entities/dist/esm/escape.js
|
|
1334
|
+
// ../../node_modules/entities/dist/esm/escape.js
|
|
1335
1335
|
var getCodePoint = (
|
|
1336
1336
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
1337
1337
|
String.prototype.codePointAt == null ? (c, index) => (c.charCodeAt(index) & 64512) === 55296 ? (c.charCodeAt(index) - 55296) * 1024 + c.charCodeAt(index + 1) - 56320 + 65536 : c.charCodeAt(index) : (
|
|
@@ -1340,7 +1340,7 @@ var getCodePoint = (
|
|
|
1340
1340
|
)
|
|
1341
1341
|
);
|
|
1342
1342
|
|
|
1343
|
-
// node_modules/entities/dist/esm/index.js
|
|
1343
|
+
// ../../node_modules/entities/dist/esm/index.js
|
|
1344
1344
|
var EntityLevel;
|
|
1345
1345
|
(function(EntityLevel2) {
|
|
1346
1346
|
EntityLevel2[EntityLevel2["XML"] = 0] = "XML";
|
|
@@ -1355,7 +1355,7 @@ var EncodingMode;
|
|
|
1355
1355
|
EncodingMode2[EncodingMode2["Text"] = 4] = "Text";
|
|
1356
1356
|
})(EncodingMode || (EncodingMode = {}));
|
|
1357
1357
|
|
|
1358
|
-
// node_modules/@opentui/solid/index.js
|
|
1358
|
+
// ../../node_modules/@opentui/solid/index.js
|
|
1359
1359
|
import { BaseRenderable as BaseRenderable2, isTextNodeRenderable as isTextNodeRenderable2, TextNodeRenderable as TextNodeRenderable3, TextRenderable as TextRenderable3, Yoga } from "@opentui/core";
|
|
1360
1360
|
import { BoxRenderable as BoxRenderable2, RootRenderable } from "@opentui/core";
|
|
1361
1361
|
import { TimeToFirstDrawRenderable } from "@opentui/core";
|
|
@@ -2464,15 +2464,15 @@ var render = async (node, rendererOrConfig = {}) => {
|
|
|
2464
2464
|
// src/index.tsx
|
|
2465
2465
|
import { createCliRenderer as createCliRenderer2 } from "@opentui/core";
|
|
2466
2466
|
|
|
2467
|
-
// ../../
|
|
2467
|
+
// ../../packages/tui-shared/src/theme.ts
|
|
2468
2468
|
import { lstatSync, readFileSync } from "node:fs";
|
|
2469
2469
|
import { homedir } from "node:os";
|
|
2470
2470
|
import { join } from "node:path";
|
|
2471
2471
|
|
|
2472
|
-
// ../../
|
|
2472
|
+
// ../../packages/tui-shared/src/Boo.ghostty
|
|
2473
2473
|
var Boo_default = "# Boo: the default terminal palette, matching the native installer.\nbackground = #08080E\nforeground = #F5ECD8\ncursor-color = #25D9E8\ncursor-text = #071014\nselection-background = #0E5965\nselection-foreground = #F5ECD8\npalette = 0=#171522\npalette = 1=#FF577D\npalette = 2=#2BE566\npalette = 3=#FFD51A\npalette = 4=#5355C9\npalette = 5=#FF2A8A\npalette = 6=#25D9E8\npalette = 7=#B7AB9A\npalette = 8=#686379\npalette = 9=#FF839D\npalette = 10=#80F5A4\npalette = 11=#FFE873\npalette = 12=#9698FF\npalette = 13=#FF83BB\npalette = 14=#8CEEF5\npalette = 15=#F5ECD8\n# Extended terminal slots retain Boo's existing UI surface colors.\npalette = 16=#111018\npalette = 17=#171522\npalette = 18=#211D2C\npalette = 19=#071014\n";
|
|
2474
2474
|
|
|
2475
|
-
// ../../
|
|
2475
|
+
// ../../packages/tui-shared/src/theme.ts
|
|
2476
2476
|
var selectionPath = join(process.env.XDG_CONFIG_HOME || join(homedir(), ".config"), "ghostty/auto/theme.ghostty");
|
|
2477
2477
|
var resources = process.env.GHOSTTY_RESOURCES_DIR || "/usr/share/ghostty";
|
|
2478
2478
|
function colors(source) {
|
|
@@ -2547,31 +2547,270 @@ var palette = (() => {
|
|
|
2547
2547
|
// src/App.tsx
|
|
2548
2548
|
import { TextAttributes as TextAttributes2 } from "@opentui/core";
|
|
2549
2549
|
|
|
2550
|
-
// ../../
|
|
2550
|
+
// ../../packages/tui-shared/src/AnimatedBooLogoRenderable.ts
|
|
2551
|
+
import { OptimizedBuffer, Renderable as Renderable2, RGBA } from "@opentui/core";
|
|
2552
|
+
import { setImmediate as yieldToLoop } from "node:timers/promises";
|
|
2553
|
+
|
|
2554
|
+
// ../../packages/tui-shared/src/BooLogoAnimation.ts
|
|
2555
|
+
var BLINK_PERIOD = 4.6;
|
|
2556
|
+
var clips = {
|
|
2557
|
+
blink: { duration: 0.22 },
|
|
2558
|
+
boo: {
|
|
2559
|
+
duration: 1.65,
|
|
2560
|
+
frames: [
|
|
2561
|
+
{ at: 0, x: 1, y: 1 },
|
|
2562
|
+
{ at: 0.12, x: 1.1, y: 0.9 },
|
|
2563
|
+
{ at: 0.28, x: 0.94, y: 1.09 },
|
|
2564
|
+
{ at: 0.48, x: 1.03, y: 0.98 },
|
|
2565
|
+
{ at: 0.72, x: 1, y: 1 }
|
|
2566
|
+
]
|
|
2567
|
+
}
|
|
2568
|
+
};
|
|
2569
|
+
var clamp = (value, min, max) => Math.max(min, Math.min(max, value));
|
|
2570
|
+
function createMotion() {
|
|
2571
|
+
return { time: 0, boo: null };
|
|
2572
|
+
}
|
|
2573
|
+
function sayBoo(motion) {
|
|
2574
|
+
motion.boo = 0;
|
|
2575
|
+
}
|
|
2576
|
+
function advanceMotion(motion, deltaSeconds) {
|
|
2577
|
+
const delta = clamp(Number.isFinite(deltaSeconds) ? deltaSeconds : 0, 0, 0.1);
|
|
2578
|
+
motion.time += delta;
|
|
2579
|
+
if (motion.boo !== null) {
|
|
2580
|
+
motion.boo += delta;
|
|
2581
|
+
if (motion.boo >= clips.boo.duration) motion.boo = null;
|
|
2582
|
+
}
|
|
2583
|
+
}
|
|
2584
|
+
function pose(motion) {
|
|
2585
|
+
let x = 1;
|
|
2586
|
+
let y = 1;
|
|
2587
|
+
if (motion.boo !== null) {
|
|
2588
|
+
for (let index = 1; index < clips.boo.frames.length; index++) {
|
|
2589
|
+
if (motion.boo > clips.boo.frames[index].at) continue;
|
|
2590
|
+
const previous = clips.boo.frames[index - 1];
|
|
2591
|
+
const next = clips.boo.frames[index];
|
|
2592
|
+
const progress = clamp((motion.boo - previous.at) / (next.at - previous.at), 0, 1);
|
|
2593
|
+
x = previous.x + (next.x - previous.x) * progress;
|
|
2594
|
+
y = previous.y + (next.y - previous.y) * progress;
|
|
2595
|
+
break;
|
|
2596
|
+
}
|
|
2597
|
+
}
|
|
2598
|
+
const blink = (motion.time + 1.7) % BLINK_PERIOD;
|
|
2599
|
+
const eyes = blink < clips.blink.duration ? Math.max(0.1, Math.abs(blink / clips.blink.duration * 2 - 1)) : 1;
|
|
2600
|
+
return { x, y, eyes, bob: Math.sin(motion.time * 2.1) * 0.24 };
|
|
2601
|
+
}
|
|
2602
|
+
function wordmarkLayout(age = null) {
|
|
2603
|
+
const progress = age === null ? 0 : clamp(age / clips.boo.duration, 0, 1);
|
|
2604
|
+
const gap = 1 + Math.sin(progress * Math.PI) * 0.45;
|
|
2605
|
+
const letters2 = [];
|
|
2606
|
+
let x = 0;
|
|
2607
|
+
for (let index = 0; index < 5; index++) {
|
|
2608
|
+
const reveal = index < 3 || age === null ? index < 3 ? 1 : 0 : clamp((age - 0.14 - (index - 3) * 0.1) / 0.22, 0, 1) * clamp((1.58 - age) / 0.42, 0, 1);
|
|
2609
|
+
if (reveal <= 0) continue;
|
|
2610
|
+
const wave = age === null ? 0 : Math.sin(Math.PI * clamp((age - index * 0.045) / (1.65 - index * 0.045), 0, 1));
|
|
2611
|
+
const base = index < 2 ? 7 : 8 + Math.max(0, index - 2);
|
|
2612
|
+
const height = (base + wave * (index === 0 ? 0.5 : index === 1 ? 1.6 : 3)) * reveal;
|
|
2613
|
+
if (index > 0) x += gap * reveal;
|
|
2614
|
+
letters2.push({ glyph: Math.min(index, 2), x, width: 3 * reveal, height, faded: index >= 3 && progress > 0.8, wave, reveal });
|
|
2615
|
+
x += 3 * reveal;
|
|
2616
|
+
}
|
|
2617
|
+
return { width: x, letters: letters2 };
|
|
2618
|
+
}
|
|
2619
|
+
|
|
2620
|
+
// ../../packages/tui-shared/src/BooLogoData.ts
|
|
2551
2621
|
var LIGHT_COLORS = { inkColor: "#002B8F", accentColor: "#00E5FF", highlightColor: "#D0FAFF" };
|
|
2552
2622
|
var DARK_COLORS = { inkColor: "#8EEDFC", accentColor: "#235664", highlightColor: "#173D4B" };
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
|
|
2558
|
-
|
|
2559
|
-
|
|
2623
|
+
|
|
2624
|
+
// ../../packages/tui-shared/src/BooLogoTerminal.ts
|
|
2625
|
+
var LOGO_WIDTH = 34;
|
|
2626
|
+
var LOGO_HEIGHT = 18;
|
|
2627
|
+
var ghosts = {
|
|
2628
|
+
idle: [
|
|
2629
|
+
"..AAAAAA..",
|
|
2630
|
+
".ACD....A.",
|
|
2631
|
+
"ACD......A",
|
|
2632
|
+
"ACCD.....A",
|
|
2633
|
+
"AACD.....A",
|
|
2634
|
+
".ACD.....A",
|
|
2635
|
+
".ACD.....A",
|
|
2636
|
+
".ACD.....A",
|
|
2637
|
+
".ACD.....A",
|
|
2638
|
+
".ACD.....A",
|
|
2639
|
+
".ACA.A.A.A",
|
|
2640
|
+
"..A.A.A.A."
|
|
2641
|
+
],
|
|
2642
|
+
squash: [
|
|
2643
|
+
"..AAAAAAA..",
|
|
2644
|
+
".ACD.....A.",
|
|
2645
|
+
"ACD.......A",
|
|
2646
|
+
"ACCD......A",
|
|
2647
|
+
"AACD......A",
|
|
2648
|
+
".ACD......A",
|
|
2649
|
+
".ACD......A",
|
|
2650
|
+
".ACD......A",
|
|
2651
|
+
".ACD......A",
|
|
2652
|
+
".ACA.A.A.AA",
|
|
2653
|
+
"..A.A.A.A.."
|
|
2654
|
+
],
|
|
2655
|
+
stretch: [
|
|
2656
|
+
"..AAAAA..",
|
|
2657
|
+
".ACD...A.",
|
|
2658
|
+
"ACD.....A",
|
|
2659
|
+
"ACCD....A",
|
|
2660
|
+
"AACD....A",
|
|
2661
|
+
".ACD....A",
|
|
2662
|
+
".ACD....A",
|
|
2663
|
+
".ACD....A",
|
|
2664
|
+
".ACD....A",
|
|
2665
|
+
".ACD....A",
|
|
2666
|
+
".ACD....A",
|
|
2667
|
+
".ACA.A.AA",
|
|
2668
|
+
"..A.A.A.."
|
|
2669
|
+
]
|
|
2560
2670
|
};
|
|
2561
|
-
var
|
|
2562
|
-
"
|
|
2563
|
-
"
|
|
2564
|
-
"
|
|
2565
|
-
"AACCCCDD..BB..BB..AA....AA......AAAAAA..AA..AA",
|
|
2566
|
-
"EEAACCDD..AA..AA..AA....AAAAAA..AA..AA..AACCAA",
|
|
2567
|
-
"..AACCDD..AA..AA..AA....AA..AA..AACCAA..AACCAA",
|
|
2568
|
-
"..AACCDD..EE..EE..AA....AACCAA..AACCAA..AACCAA",
|
|
2569
|
-
"..AACCDD..........AA....AACCAA..AACCAA..AACCAA",
|
|
2570
|
-
"..AACCDD..........AA....AACCAA..AACCAA..AACCAA",
|
|
2571
|
-
"..AACCDD..........AA....AAAAAA..AAAAAA..AAAAAA",
|
|
2572
|
-
"..AACCAA..AA..AA..AA..........................",
|
|
2573
|
-
"....AA..AA..AA..AA............................"
|
|
2671
|
+
var letters = [
|
|
2672
|
+
["A..", "AAA", "A.A", "ACA", "ACA", "ACA", "AAA"],
|
|
2673
|
+
["AAA", "A.A", "ACA", "ACA", "ACA", "ACA", "AAA"],
|
|
2674
|
+
["AAA", "A.A", "ACA", "ACA", "ACA", "ACA", "ACA", "AAA"]
|
|
2574
2675
|
];
|
|
2676
|
+
var inks = { ".": 0, A: 1, C: 2, D: 3 };
|
|
2677
|
+
function terminalPortrait(motion) {
|
|
2678
|
+
const pixels = new Uint8Array(LOGO_WIDTH * LOGO_HEIGHT);
|
|
2679
|
+
const stamp = (rows, left, top2) => {
|
|
2680
|
+
for (let y = 0; y < rows.length; y++) {
|
|
2681
|
+
for (let x = 0; x < rows[y].length; x++) pixels[(top2 + y) * LOGO_WIDTH + left + x] = inks[rows[y][x]];
|
|
2682
|
+
}
|
|
2683
|
+
};
|
|
2684
|
+
const state = pose(motion);
|
|
2685
|
+
const ghost = state.y < 0.97 ? ghosts.squash : state.y > 1.04 ? ghosts.stretch : ghosts.idle;
|
|
2686
|
+
const top = 15 - ghost.length + Math.round(state.bob * 4);
|
|
2687
|
+
stamp(ghost, 11 - ghost[0].length, top);
|
|
2688
|
+
const eyeHeight = Math.max(1, Math.round(state.eyes * 3));
|
|
2689
|
+
const eyeTop = top + 4 + Math.floor((3 - eyeHeight) / 2);
|
|
2690
|
+
for (let y = eyeTop; y < eyeTop + eyeHeight; y++) {
|
|
2691
|
+
pixels[y * LOGO_WIDTH + 6] = 1;
|
|
2692
|
+
pixels[y * LOGO_WIDTH + 8] = 1;
|
|
2693
|
+
}
|
|
2694
|
+
if (motion.boo !== null && motion.boo > 0.12 && motion.boo < 0.85) pixels[(top + 8) * LOGO_WIDTH + 7] = 1;
|
|
2695
|
+
for (const [index, letter] of wordmarkLayout(motion.boo).letters.entries()) {
|
|
2696
|
+
if (letter.reveal < 0.5) continue;
|
|
2697
|
+
const glyph = letters[letter.glyph];
|
|
2698
|
+
const lift = Math.round(letter.wave * (index === 0 ? 1 : 2));
|
|
2699
|
+
stamp(glyph, 13 + index * 4, 13 - glyph.length - lift);
|
|
2700
|
+
}
|
|
2701
|
+
return pixels;
|
|
2702
|
+
}
|
|
2703
|
+
|
|
2704
|
+
// ../../packages/tui-shared/src/AnimatedBooLogoRenderable.ts
|
|
2705
|
+
var transparent = RGBA.fromInts(0, 0, 0, 0);
|
|
2706
|
+
var frameRate = 20;
|
|
2707
|
+
var AnimatedBooLogoRenderable = class extends Renderable2 {
|
|
2708
|
+
ready;
|
|
2709
|
+
initialized = false;
|
|
2710
|
+
motion = createMotion();
|
|
2711
|
+
idleFrames = [];
|
|
2712
|
+
booFrames = [];
|
|
2713
|
+
buffers = [];
|
|
2714
|
+
contextDestroyed = () => this.destroy();
|
|
2715
|
+
constructor(ctx, options = {}, signal) {
|
|
2716
|
+
signal?.throwIfAborted();
|
|
2717
|
+
if ("isDestroyed" in ctx && ctx.isDestroyed === true) throw new Error("Cannot prepare a logo for a destroyed renderer");
|
|
2718
|
+
const theme = options.theme ?? "dark";
|
|
2719
|
+
const scale = options.scale ?? 1;
|
|
2720
|
+
if (theme !== "light" && theme !== "dark") throw new TypeError("AnimatedBooLogoRenderable theme must be light or dark");
|
|
2721
|
+
if (scale !== 1 && scale !== 2) throw new TypeError("AnimatedBooLogoRenderable scale must be 1 or 2");
|
|
2722
|
+
super(ctx, { ...options, width: options.width ?? LOGO_WIDTH * scale, height: options.height ?? LOGO_HEIGHT * scale / 2, flexShrink: options.flexShrink ?? 0, live: options.live ?? true });
|
|
2723
|
+
ctx.once("destroy", this.contextDestroyed);
|
|
2724
|
+
this.ready = this.prepare(options, signal).then(() => {
|
|
2725
|
+
signal?.throwIfAborted();
|
|
2726
|
+
if (this.isDestroyed) throw new Error("Logo preparation stopped because its renderer was destroyed");
|
|
2727
|
+
this.initialized = true;
|
|
2728
|
+
this.requestRender();
|
|
2729
|
+
});
|
|
2730
|
+
void this.ready.catch((error) => {
|
|
2731
|
+
if (this.isDestroyed) return;
|
|
2732
|
+
this.destroy();
|
|
2733
|
+
if (!signal?.aborted) ctx.emit("render:error", { error, renderable: this });
|
|
2734
|
+
});
|
|
2735
|
+
}
|
|
2736
|
+
async prepare(options, signal) {
|
|
2737
|
+
const theme = options.theme ?? "dark", scale = options.scale ?? 1;
|
|
2738
|
+
const palette2 = theme === "light" ? LIGHT_COLORS : DARK_COLORS;
|
|
2739
|
+
const colors2 = [transparent, ...[palette2.inkColor, palette2.accentColor, palette2.highlightColor].map((color) => RGBA.fromHex(color))];
|
|
2740
|
+
const columns = LOGO_WIDTH * scale, rows = LOGO_HEIGHT * scale / 2;
|
|
2741
|
+
const cache = /* @__PURE__ */ new Map();
|
|
2742
|
+
const prepare = async (motion) => {
|
|
2743
|
+
await yieldToLoop(void 0, { signal });
|
|
2744
|
+
if (this.isDestroyed) throw new Error("Logo preparation stopped because its renderer was destroyed");
|
|
2745
|
+
const pixels = terminalPortrait(motion);
|
|
2746
|
+
const key = pixels.join("");
|
|
2747
|
+
const cached = cache.get(key);
|
|
2748
|
+
if (cached) return cached;
|
|
2749
|
+
const buffer = OptimizedBuffer.create(columns, rows, this.ctx.widthMethod, { respectAlpha: true });
|
|
2750
|
+
this.buffers.push(buffer);
|
|
2751
|
+
for (let y = 0; y < rows; y++) {
|
|
2752
|
+
for (let x = 0; x < columns; x++) {
|
|
2753
|
+
const column = Math.floor(x / scale);
|
|
2754
|
+
const top = pixels[Math.floor(y * 2 / scale) * LOGO_WIDTH + column];
|
|
2755
|
+
const bottom = pixels[Math.floor((y * 2 + 1) / scale) * LOGO_WIDTH + column];
|
|
2756
|
+
const char = top === bottom ? " " : top === 0 ? "\u2584" : "\u2580";
|
|
2757
|
+
buffer.setCell(x, y, char, colors2[top || bottom], colors2[top === 0 ? 0 : bottom]);
|
|
2758
|
+
}
|
|
2759
|
+
}
|
|
2760
|
+
cache.set(key, buffer);
|
|
2761
|
+
return buffer;
|
|
2762
|
+
};
|
|
2763
|
+
const idle = createMotion();
|
|
2764
|
+
for (let i = 0; i < Math.round(2 * BLINK_PERIOD * frameRate); i++) {
|
|
2765
|
+
this.idleFrames.push(await prepare(idle));
|
|
2766
|
+
advanceMotion(idle, 1 / frameRate);
|
|
2767
|
+
}
|
|
2768
|
+
const clip = createMotion();
|
|
2769
|
+
sayBoo(clip);
|
|
2770
|
+
while (clip.boo !== null) {
|
|
2771
|
+
this.booFrames.push(await prepare(clip));
|
|
2772
|
+
advanceMotion(clip, 1 / frameRate);
|
|
2773
|
+
}
|
|
2774
|
+
}
|
|
2775
|
+
sayBoo() {
|
|
2776
|
+
if (this.motion.boo !== null || this.isDestroyed) return;
|
|
2777
|
+
sayBoo(this.motion);
|
|
2778
|
+
this.requestRender();
|
|
2779
|
+
}
|
|
2780
|
+
onMouseEvent(event) {
|
|
2781
|
+
if (event.type === "up" && event.button === 0 && !event.isDragging) this.sayBoo();
|
|
2782
|
+
}
|
|
2783
|
+
onUpdate(deltaTime) {
|
|
2784
|
+
if (!this.initialized || !this.live) return;
|
|
2785
|
+
advanceMotion(this.motion, deltaTime / 1e3);
|
|
2786
|
+
}
|
|
2787
|
+
render(buffer, deltaTime) {
|
|
2788
|
+
if (!this.initialized) return;
|
|
2789
|
+
const width = this.width, height = this.height;
|
|
2790
|
+
if (!Number.isFinite(width) || !Number.isFinite(height) || width < 1 || height < 1) return;
|
|
2791
|
+
super.render(buffer, deltaTime);
|
|
2792
|
+
}
|
|
2793
|
+
renderSelf(buffer) {
|
|
2794
|
+
const width = this.width, height = this.height;
|
|
2795
|
+
const frame = this.motion.boo === null ? this.idleFrames[Math.floor(this.motion.time * frameRate) % this.idleFrames.length] : this.booFrames[Math.min(this.booFrames.length - 1, Math.floor(this.motion.boo * frameRate))];
|
|
2796
|
+
if (this.buffered) buffer.clear(transparent);
|
|
2797
|
+
buffer.drawFrameBuffer(
|
|
2798
|
+
this.buffered ? 0 : this.screenX,
|
|
2799
|
+
this.buffered ? 0 : this.screenY,
|
|
2800
|
+
frame,
|
|
2801
|
+
0,
|
|
2802
|
+
0,
|
|
2803
|
+
Math.min(width, frame.width),
|
|
2804
|
+
Math.min(height, frame.height)
|
|
2805
|
+
);
|
|
2806
|
+
}
|
|
2807
|
+
destroySelf() {
|
|
2808
|
+
this.ctx.off("destroy", this.contextDestroyed);
|
|
2809
|
+
for (const buffer of this.buffers) buffer.destroy();
|
|
2810
|
+
this.buffers.length = this.idleFrames.length = this.booFrames.length = 0;
|
|
2811
|
+
super.destroySelf();
|
|
2812
|
+
}
|
|
2813
|
+
};
|
|
2575
2814
|
|
|
2576
2815
|
// src/backend.ts
|
|
2577
2816
|
import { createHash as createHash2 } from "node:crypto";
|
|
@@ -3756,45 +3995,35 @@ var FlashBackend = class {
|
|
|
3756
3995
|
};
|
|
3757
3996
|
|
|
3758
3997
|
// package.json
|
|
3759
|
-
var version = "0.1.
|
|
3998
|
+
var version = "0.1.9";
|
|
3760
3999
|
|
|
3761
4000
|
// src/App.tsx
|
|
3762
4001
|
function FlashLogo() {
|
|
3763
|
-
const
|
|
3764
|
-
|
|
3765
|
-
|
|
3766
|
-
|
|
3767
|
-
|
|
3768
|
-
|
|
3769
|
-
|
|
4002
|
+
const renderer = useRenderer();
|
|
4003
|
+
let host;
|
|
4004
|
+
let logo;
|
|
4005
|
+
onMount(() => {
|
|
4006
|
+
const theme = themes.find((entry) => entry.ui === palette && !entry.error)?.kind === "Light" ? "light" : "dark";
|
|
4007
|
+
logo = new AnimatedBooLogoRenderable(renderer, {
|
|
4008
|
+
id: "flash-logo",
|
|
4009
|
+
theme
|
|
4010
|
+
});
|
|
4011
|
+
host.add(logo);
|
|
4012
|
+
});
|
|
4013
|
+
onCleanup(() => {
|
|
4014
|
+
if (logo) {
|
|
4015
|
+
if (!host.isDestroyed) host.remove(logo);
|
|
4016
|
+
logo.destroy();
|
|
4017
|
+
}
|
|
4018
|
+
});
|
|
3770
4019
|
return (() => {
|
|
3771
4020
|
var _el$ = createElement("box");
|
|
3772
|
-
|
|
3773
|
-
|
|
3774
|
-
setProp(_el$, "
|
|
4021
|
+
var _ref$ = host;
|
|
4022
|
+
typeof _ref$ === "function" ? use(_ref$, _el$) : host = _el$;
|
|
4023
|
+
setProp(_el$, "width", 34);
|
|
4024
|
+
setProp(_el$, "height", 9);
|
|
3775
4025
|
setProp(_el$, "flexShrink", 0);
|
|
3776
4026
|
setProp(_el$, "marginBottom", 1);
|
|
3777
|
-
insert(_el$, createComponent2(For, {
|
|
3778
|
-
each: rows,
|
|
3779
|
-
children: (row) => (() => {
|
|
3780
|
-
var _el$2 = createElement("text");
|
|
3781
|
-
setProp(_el$2, "height", 1);
|
|
3782
|
-
setProp(_el$2, "wrapMode", "none");
|
|
3783
|
-
insert(_el$2, createComponent2(For, {
|
|
3784
|
-
each: row,
|
|
3785
|
-
children: ([top, bottom]) => (() => {
|
|
3786
|
-
var _el$3 = createElement("span");
|
|
3787
|
-
insert(_el$3, top === bottom ? " " : "\u2580");
|
|
3788
|
-
effect((_$p) => setProp(_el$3, "style", {
|
|
3789
|
-
fg: colors2[top],
|
|
3790
|
-
bg: colors2[bottom]
|
|
3791
|
-
}, _$p));
|
|
3792
|
-
return _el$3;
|
|
3793
|
-
})()
|
|
3794
|
-
}));
|
|
3795
|
-
return _el$2;
|
|
3796
|
-
})()
|
|
3797
|
-
}));
|
|
3798
4027
|
return _el$;
|
|
3799
4028
|
})();
|
|
3800
4029
|
}
|
|
@@ -4070,31 +4299,31 @@ ${selection()}
|
|
|
4070
4299
|
if (key.name === "return" && !key.repeated) activate();
|
|
4071
4300
|
});
|
|
4072
4301
|
const row = (label, detail, index, danger = false, detailWhenTight = false) => (() => {
|
|
4073
|
-
var _el$
|
|
4074
|
-
insertNode(_el$
|
|
4075
|
-
setProp(_el$
|
|
4076
|
-
setProp(_el$
|
|
4077
|
-
setProp(_el$
|
|
4078
|
-
insert(_el$
|
|
4079
|
-
insert(_el$
|
|
4080
|
-
insert(_el$
|
|
4302
|
+
var _el$2 = createElement("box"), _el$3 = createElement("text");
|
|
4303
|
+
insertNode(_el$2, _el$3);
|
|
4304
|
+
setProp(_el$2, "paddingX", 1);
|
|
4305
|
+
setProp(_el$2, "flexShrink", 0);
|
|
4306
|
+
setProp(_el$3, "wrapMode", "none");
|
|
4307
|
+
insert(_el$3, () => cursor() === index ? "> " : " ", null);
|
|
4308
|
+
insert(_el$3, label, null);
|
|
4309
|
+
insert(_el$2, createComponent2(Show, {
|
|
4081
4310
|
get when() {
|
|
4082
4311
|
return detail && (!tight() || detailWhenTight);
|
|
4083
4312
|
},
|
|
4084
4313
|
get children() {
|
|
4085
|
-
var _el$
|
|
4086
|
-
setProp(_el$
|
|
4087
|
-
insert(_el$
|
|
4088
|
-
effect((_$p) => setProp(_el$
|
|
4089
|
-
return _el$
|
|
4314
|
+
var _el$4 = createElement("text");
|
|
4315
|
+
setProp(_el$4, "wrapMode", "none");
|
|
4316
|
+
insert(_el$4, ` ${detail}`);
|
|
4317
|
+
effect((_$p) => setProp(_el$4, "fg", palette.muted, _$p));
|
|
4318
|
+
return _el$4;
|
|
4090
4319
|
}
|
|
4091
4320
|
}), null);
|
|
4092
4321
|
effect((_p$) => {
|
|
4093
4322
|
var _v$ = detail && (!tight() || detailWhenTight) ? compact() ? 2 : 3 : 1, _v$2 = cursor() === index ? palette.selected : palette.panel, _v$3 = danger ? palette.warning : cursor() === index ? palette.accent : palette.foreground, _v$4 = TextAttributes2.BOLD;
|
|
4094
|
-
_v$ !== _p$.e && (_p$.e = setProp(_el$
|
|
4095
|
-
_v$2 !== _p$.t && (_p$.t = setProp(_el$
|
|
4096
|
-
_v$3 !== _p$.a && (_p$.a = setProp(_el$
|
|
4097
|
-
_v$4 !== _p$.o && (_p$.o = setProp(_el$
|
|
4323
|
+
_v$ !== _p$.e && (_p$.e = setProp(_el$2, "height", _v$, _p$.e));
|
|
4324
|
+
_v$2 !== _p$.t && (_p$.t = setProp(_el$2, "backgroundColor", _v$2, _p$.t));
|
|
4325
|
+
_v$3 !== _p$.a && (_p$.a = setProp(_el$3, "fg", _v$3, _p$.a));
|
|
4326
|
+
_v$4 !== _p$.o && (_p$.o = setProp(_el$3, "attributes", _v$4, _p$.o));
|
|
4098
4327
|
return _p$;
|
|
4099
4328
|
}, {
|
|
4100
4329
|
e: void 0,
|
|
@@ -4102,55 +4331,55 @@ ${selection()}
|
|
|
4102
4331
|
a: void 0,
|
|
4103
4332
|
o: void 0
|
|
4104
4333
|
});
|
|
4105
|
-
return _el$
|
|
4334
|
+
return _el$2;
|
|
4106
4335
|
})();
|
|
4107
4336
|
return (() => {
|
|
4108
|
-
var _el$
|
|
4109
|
-
insertNode(_el$
|
|
4110
|
-
setProp(_el$
|
|
4111
|
-
setProp(_el$
|
|
4112
|
-
setProp(_el$
|
|
4113
|
-
setProp(_el$
|
|
4114
|
-
insert(_el$
|
|
4337
|
+
var _el$5 = createElement("box"), _el$6 = createElement("box"), _el$7 = createElement("box"), _el$8 = createElement("text"), _el$0 = createElement("text"), _el$1 = createElement("box"), _el$10 = createElement("box"), _el$81 = createElement("box"), _el$82 = createElement("text"), _el$83 = createElement("text"), _el$84 = createTextNode(`v`);
|
|
4338
|
+
insertNode(_el$5, _el$6);
|
|
4339
|
+
setProp(_el$5, "width", "100%");
|
|
4340
|
+
setProp(_el$5, "height", "100%");
|
|
4341
|
+
setProp(_el$5, "justifyContent", "center");
|
|
4342
|
+
setProp(_el$5, "alignItems", "center");
|
|
4343
|
+
insert(_el$5, createComponent2(Show, {
|
|
4115
4344
|
get when() {
|
|
4116
|
-
return memo2(() => dimensions().width >=
|
|
4345
|
+
return memo2(() => dimensions().width >= 34)() && dimensions().height >= 34;
|
|
4117
4346
|
},
|
|
4118
4347
|
get children() {
|
|
4119
4348
|
return createComponent2(FlashLogo, {});
|
|
4120
4349
|
}
|
|
4121
|
-
}), _el$
|
|
4122
|
-
insertNode(_el$
|
|
4123
|
-
insertNode(_el$
|
|
4124
|
-
insertNode(_el$
|
|
4125
|
-
insertNode(_el$
|
|
4126
|
-
setProp(_el$
|
|
4127
|
-
setProp(_el$
|
|
4128
|
-
setProp(_el$
|
|
4129
|
-
setProp(_el$
|
|
4130
|
-
setProp(_el$
|
|
4131
|
-
insertNode(_el$
|
|
4132
|
-
insertNode(_el$
|
|
4133
|
-
setProp(_el$
|
|
4134
|
-
setProp(_el$
|
|
4135
|
-
setProp(_el$
|
|
4136
|
-
setProp(_el$
|
|
4137
|
-
insertNode(_el$
|
|
4138
|
-
insert(_el$
|
|
4139
|
-
setProp(_el$
|
|
4140
|
-
setProp(_el$
|
|
4141
|
-
setProp(_el$
|
|
4142
|
-
setProp(_el$
|
|
4143
|
-
setProp(_el$
|
|
4144
|
-
insert(_el$
|
|
4350
|
+
}), _el$6);
|
|
4351
|
+
insertNode(_el$6, _el$7);
|
|
4352
|
+
insertNode(_el$6, _el$1);
|
|
4353
|
+
insertNode(_el$6, _el$10);
|
|
4354
|
+
insertNode(_el$6, _el$81);
|
|
4355
|
+
setProp(_el$6, "id", "flash-card");
|
|
4356
|
+
setProp(_el$6, "border", true);
|
|
4357
|
+
setProp(_el$6, "borderStyle", "single");
|
|
4358
|
+
setProp(_el$6, "flexDirection", "column");
|
|
4359
|
+
setProp(_el$6, "paddingX", 1);
|
|
4360
|
+
insertNode(_el$7, _el$8);
|
|
4361
|
+
insertNode(_el$7, _el$0);
|
|
4362
|
+
setProp(_el$7, "height", 1);
|
|
4363
|
+
setProp(_el$7, "flexDirection", "row");
|
|
4364
|
+
setProp(_el$7, "justifyContent", "space-between");
|
|
4365
|
+
setProp(_el$7, "flexShrink", 0);
|
|
4366
|
+
insertNode(_el$8, createTextNode(`BOO FLASH`));
|
|
4367
|
+
insert(_el$0, () => props.backend.platformLabel);
|
|
4368
|
+
setProp(_el$1, "height", 1);
|
|
4369
|
+
setProp(_el$1, "flexShrink", 0);
|
|
4370
|
+
setProp(_el$10, "flexGrow", 1);
|
|
4371
|
+
setProp(_el$10, "minHeight", 0);
|
|
4372
|
+
setProp(_el$10, "overflow", "hidden");
|
|
4373
|
+
insert(_el$10, createComponent2(Show, {
|
|
4145
4374
|
get when() {
|
|
4146
4375
|
return visible();
|
|
4147
4376
|
},
|
|
4148
4377
|
get fallback() {
|
|
4149
4378
|
return (() => {
|
|
4150
|
-
var _el$
|
|
4151
|
-
insertNode(_el$
|
|
4152
|
-
effect((_$p) => setProp(_el$
|
|
4153
|
-
return _el$
|
|
4379
|
+
var _el$85 = createElement("text");
|
|
4380
|
+
insertNode(_el$85, createTextNode(`Enlarge the terminal to show the full choices and erase warning. Q quits.`));
|
|
4381
|
+
effect((_$p) => setProp(_el$85, "fg", palette.warning, _$p));
|
|
4382
|
+
return _el$85;
|
|
4154
4383
|
})();
|
|
4155
4384
|
},
|
|
4156
4385
|
get children() {
|
|
@@ -4159,11 +4388,11 @@ ${selection()}
|
|
|
4159
4388
|
return selection();
|
|
4160
4389
|
},
|
|
4161
4390
|
get children() {
|
|
4162
|
-
var _el$
|
|
4163
|
-
setProp(_el$
|
|
4164
|
-
insert(_el$
|
|
4165
|
-
effect((_$p) => setProp(_el$
|
|
4166
|
-
return _el$
|
|
4391
|
+
var _el$11 = createElement("text");
|
|
4392
|
+
setProp(_el$11, "flexShrink", 0);
|
|
4393
|
+
insert(_el$11, selection);
|
|
4394
|
+
effect((_$p) => setProp(_el$11, "fg", palette.foreground, _$p));
|
|
4395
|
+
return _el$11;
|
|
4167
4396
|
}
|
|
4168
4397
|
}), createComponent2(Show, {
|
|
4169
4398
|
get when() {
|
|
@@ -4171,43 +4400,43 @@ ${selection()}
|
|
|
4171
4400
|
},
|
|
4172
4401
|
get children() {
|
|
4173
4402
|
return [(() => {
|
|
4174
|
-
var _el$
|
|
4175
|
-
insertNode(_el$
|
|
4403
|
+
var _el$12 = createElement("text");
|
|
4404
|
+
insertNode(_el$12, createTextNode(`Choose the target computer's GPU`));
|
|
4176
4405
|
effect((_p$) => {
|
|
4177
4406
|
var _v$5 = palette.foreground, _v$6 = TextAttributes2.BOLD;
|
|
4178
|
-
_v$5 !== _p$.e && (_p$.e = setProp(_el$
|
|
4179
|
-
_v$6 !== _p$.t && (_p$.t = setProp(_el$
|
|
4407
|
+
_v$5 !== _p$.e && (_p$.e = setProp(_el$12, "fg", _v$5, _p$.e));
|
|
4408
|
+
_v$6 !== _p$.t && (_p$.t = setProp(_el$12, "attributes", _v$6, _p$.t));
|
|
4180
4409
|
return _p$;
|
|
4181
4410
|
}, {
|
|
4182
4411
|
e: void 0,
|
|
4183
4412
|
t: void 0
|
|
4184
4413
|
});
|
|
4185
|
-
return _el$
|
|
4414
|
+
return _el$12;
|
|
4186
4415
|
})(), (() => {
|
|
4187
|
-
var _el$
|
|
4188
|
-
insert(_el$
|
|
4416
|
+
var _el$14 = createElement("text");
|
|
4417
|
+
insert(_el$14, (() => {
|
|
4189
4418
|
var _c$ = memo2(() => !!loading());
|
|
4190
4419
|
return () => _c$() ? `${spinner()} Finding latest Boo release...` : memo2(() => !!catalog())() ? `Boo ${catalog().version} / ${catalog().revision.slice(0, 7)} / ${imageTime(catalog().timestamp, now())}` : "Dependencies needed. Enter to set up.";
|
|
4191
4420
|
})());
|
|
4192
|
-
effect((_$p) => setProp(_el$
|
|
4193
|
-
return _el$
|
|
4421
|
+
effect((_$p) => setProp(_el$14, "fg", palette.muted, _$p));
|
|
4422
|
+
return _el$14;
|
|
4194
4423
|
})(), (() => {
|
|
4195
|
-
var _el$
|
|
4196
|
-
setProp(_el$
|
|
4197
|
-
setProp(_el$
|
|
4198
|
-
setProp(_el$
|
|
4199
|
-
insert(_el$
|
|
4424
|
+
var _el$15 = createElement("box");
|
|
4425
|
+
setProp(_el$15, "gap", 0);
|
|
4426
|
+
setProp(_el$15, "marginBottom", 1);
|
|
4427
|
+
setProp(_el$15, "flexShrink", 0);
|
|
4428
|
+
insert(_el$15, createComponent2(For, {
|
|
4200
4429
|
each: profiles,
|
|
4201
4430
|
children: (profile, index) => row(profile.toUpperCase(), profile === "nvidia" ? "NVIDIA graphics" : `${profile === "intel" ? "Intel" : "AMD Radeon"} graphics`, index())
|
|
4202
4431
|
}), null);
|
|
4203
|
-
insert(_el$
|
|
4204
|
-
insert(_el$
|
|
4205
|
-
return _el$
|
|
4432
|
+
insert(_el$15, () => row("Candidates", "", 3), null);
|
|
4433
|
+
insert(_el$15, () => row("Clear cached images", "", 4), null);
|
|
4434
|
+
return _el$15;
|
|
4206
4435
|
})(), (() => {
|
|
4207
|
-
var _el$
|
|
4208
|
-
insertNode(_el$
|
|
4209
|
-
effect((_$p) => setProp(_el$
|
|
4210
|
-
return _el$
|
|
4436
|
+
var _el$16 = createElement("text");
|
|
4437
|
+
insertNode(_el$16, createTextNode(`All images support Intel and AMD x86_64 CPUs.`));
|
|
4438
|
+
effect((_$p) => setProp(_el$16, "fg", palette.muted, _$p));
|
|
4439
|
+
return _el$16;
|
|
4211
4440
|
})()];
|
|
4212
4441
|
}
|
|
4213
4442
|
}), createComponent2(Show, {
|
|
@@ -4216,34 +4445,34 @@ ${selection()}
|
|
|
4216
4445
|
},
|
|
4217
4446
|
get children() {
|
|
4218
4447
|
return [(() => {
|
|
4219
|
-
var _el$
|
|
4220
|
-
insertNode(_el$
|
|
4448
|
+
var _el$18 = createElement("text");
|
|
4449
|
+
insertNode(_el$18, createTextNode(`Clear cached images?`));
|
|
4221
4450
|
effect((_p$) => {
|
|
4222
4451
|
var _v$7 = palette.warning, _v$8 = TextAttributes2.BOLD;
|
|
4223
|
-
_v$7 !== _p$.e && (_p$.e = setProp(_el$
|
|
4224
|
-
_v$8 !== _p$.t && (_p$.t = setProp(_el$
|
|
4452
|
+
_v$7 !== _p$.e && (_p$.e = setProp(_el$18, "fg", _v$7, _p$.e));
|
|
4453
|
+
_v$8 !== _p$.t && (_p$.t = setProp(_el$18, "attributes", _v$8, _p$.t));
|
|
4225
4454
|
return _p$;
|
|
4226
4455
|
}, {
|
|
4227
4456
|
e: void 0,
|
|
4228
4457
|
t: void 0
|
|
4229
4458
|
});
|
|
4459
|
+
return _el$18;
|
|
4460
|
+
})(), (() => {
|
|
4461
|
+
var _el$20 = createElement("text");
|
|
4462
|
+
insertNode(_el$20, createTextNode(`Removes downloaded archives only, NOT USB contents. Active flashes are unaffected.`));
|
|
4463
|
+
effect((_$p) => setProp(_el$20, "fg", palette.foreground, _$p));
|
|
4230
4464
|
return _el$20;
|
|
4231
4465
|
})(), (() => {
|
|
4232
4466
|
var _el$22 = createElement("text");
|
|
4233
|
-
insertNode(_el$22, createTextNode(`
|
|
4234
|
-
effect((_$p) => setProp(_el$22, "fg", palette.
|
|
4467
|
+
insertNode(_el$22, createTextNode(`Images will download again when needed. Pending downloads may still finish and be cached.`));
|
|
4468
|
+
effect((_$p) => setProp(_el$22, "fg", palette.muted, _$p));
|
|
4235
4469
|
return _el$22;
|
|
4236
4470
|
})(), (() => {
|
|
4237
|
-
var _el$24 = createElement("
|
|
4238
|
-
|
|
4239
|
-
|
|
4471
|
+
var _el$24 = createElement("box");
|
|
4472
|
+
insert(_el$24, () => row("Go back", "", 0), null);
|
|
4473
|
+
insert(_el$24, () => row(loading() ? "Clearing..." : "Clear cached images", "", 1, true), null);
|
|
4474
|
+
effect((_$p) => setProp(_el$24, "gap", tight() ? 0 : 1, _$p));
|
|
4240
4475
|
return _el$24;
|
|
4241
|
-
})(), (() => {
|
|
4242
|
-
var _el$26 = createElement("box");
|
|
4243
|
-
insert(_el$26, () => row("Go back", "", 0), null);
|
|
4244
|
-
insert(_el$26, () => row(loading() ? "Clearing..." : "Clear cached images", "", 1, true), null);
|
|
4245
|
-
effect((_$p) => setProp(_el$26, "gap", tight() ? 0 : 1, _$p));
|
|
4246
|
-
return _el$26;
|
|
4247
4476
|
})()];
|
|
4248
4477
|
}
|
|
4249
4478
|
}), createComponent2(Show, {
|
|
@@ -4252,23 +4481,23 @@ ${selection()}
|
|
|
4252
4481
|
},
|
|
4253
4482
|
get children() {
|
|
4254
4483
|
return [(() => {
|
|
4255
|
-
var _el$
|
|
4256
|
-
insertNode(_el$
|
|
4484
|
+
var _el$25 = createElement("text");
|
|
4485
|
+
insertNode(_el$25, createTextNode(`Cache cleared`));
|
|
4257
4486
|
effect((_p$) => {
|
|
4258
4487
|
var _v$9 = palette.success, _v$0 = TextAttributes2.BOLD;
|
|
4259
|
-
_v$9 !== _p$.e && (_p$.e = setProp(_el$
|
|
4260
|
-
_v$0 !== _p$.t && (_p$.t = setProp(_el$
|
|
4488
|
+
_v$9 !== _p$.e && (_p$.e = setProp(_el$25, "fg", _v$9, _p$.e));
|
|
4489
|
+
_v$0 !== _p$.t && (_p$.t = setProp(_el$25, "attributes", _v$0, _p$.t));
|
|
4261
4490
|
return _p$;
|
|
4262
4491
|
}, {
|
|
4263
4492
|
e: void 0,
|
|
4264
4493
|
t: void 0
|
|
4265
4494
|
});
|
|
4266
|
-
return _el$
|
|
4495
|
+
return _el$25;
|
|
4267
4496
|
})(), (() => {
|
|
4268
|
-
var _el$
|
|
4269
|
-
insert(_el$
|
|
4270
|
-
effect((_$p) => setProp(_el$
|
|
4271
|
-
return _el$
|
|
4497
|
+
var _el$27 = createElement("text");
|
|
4498
|
+
insert(_el$27, notice);
|
|
4499
|
+
effect((_$p) => setProp(_el$27, "fg", palette.foreground, _$p));
|
|
4500
|
+
return _el$27;
|
|
4272
4501
|
})(), memo2(() => row("Go back", "", 0))];
|
|
4273
4502
|
}
|
|
4274
4503
|
}), createComponent2(Show, {
|
|
@@ -4277,29 +4506,29 @@ ${selection()}
|
|
|
4277
4506
|
},
|
|
4278
4507
|
get children() {
|
|
4279
4508
|
return [(() => {
|
|
4280
|
-
var _el$
|
|
4281
|
-
insertNode(_el$
|
|
4509
|
+
var _el$28 = createElement("text");
|
|
4510
|
+
insertNode(_el$28, createTextNode(`Candidates`));
|
|
4282
4511
|
effect((_p$) => {
|
|
4283
4512
|
var _v$1 = palette.foreground, _v$10 = TextAttributes2.BOLD;
|
|
4284
|
-
_v$1 !== _p$.e && (_p$.e = setProp(_el$
|
|
4285
|
-
_v$10 !== _p$.t && (_p$.t = setProp(_el$
|
|
4513
|
+
_v$1 !== _p$.e && (_p$.e = setProp(_el$28, "fg", _v$1, _p$.e));
|
|
4514
|
+
_v$10 !== _p$.t && (_p$.t = setProp(_el$28, "attributes", _v$10, _p$.t));
|
|
4286
4515
|
return _p$;
|
|
4287
4516
|
}, {
|
|
4288
4517
|
e: void 0,
|
|
4289
4518
|
t: void 0
|
|
4290
4519
|
});
|
|
4291
|
-
return _el$
|
|
4520
|
+
return _el$28;
|
|
4292
4521
|
})(), createComponent2(Show, {
|
|
4293
4522
|
get when() {
|
|
4294
4523
|
return !loading();
|
|
4295
4524
|
},
|
|
4296
4525
|
get fallback() {
|
|
4297
4526
|
return (() => {
|
|
4298
|
-
var _el$
|
|
4299
|
-
insertNode(_el$
|
|
4300
|
-
insert(_el$
|
|
4301
|
-
effect((_$p) => setProp(_el$
|
|
4302
|
-
return _el$
|
|
4527
|
+
var _el$87 = createElement("text"), _el$88 = createTextNode(` Finding completed candidates...`);
|
|
4528
|
+
insertNode(_el$87, _el$88);
|
|
4529
|
+
insert(_el$87, spinner, _el$88);
|
|
4530
|
+
effect((_$p) => setProp(_el$87, "fg", palette.muted, _$p));
|
|
4531
|
+
return _el$87;
|
|
4303
4532
|
})();
|
|
4304
4533
|
},
|
|
4305
4534
|
get children() {
|
|
@@ -4309,31 +4538,31 @@ ${selection()}
|
|
|
4309
4538
|
},
|
|
4310
4539
|
get fallback() {
|
|
4311
4540
|
return [(() => {
|
|
4312
|
-
var _el$
|
|
4313
|
-
insertNode(_el$
|
|
4314
|
-
effect((_$p) => setProp(_el$
|
|
4315
|
-
return _el$
|
|
4541
|
+
var _el$89 = createElement("text");
|
|
4542
|
+
insertNode(_el$89, createTextNode(`No completed candidates available`));
|
|
4543
|
+
effect((_$p) => setProp(_el$89, "fg", palette.muted, _$p));
|
|
4544
|
+
return _el$89;
|
|
4316
4545
|
})(), memo2(() => row("Go back", "", 0))];
|
|
4317
4546
|
},
|
|
4318
4547
|
get children() {
|
|
4319
4548
|
return [(() => {
|
|
4320
|
-
var _el$
|
|
4321
|
-
setProp(_el$
|
|
4322
|
-
insert(_el$
|
|
4549
|
+
var _el$30 = createElement("box");
|
|
4550
|
+
setProp(_el$30, "gap", 0);
|
|
4551
|
+
insert(_el$30, createComponent2(For, {
|
|
4323
4552
|
get each() {
|
|
4324
4553
|
return candidates().slice(Math.max(0, cursor() - 2), Math.max(3, cursor() + 1));
|
|
4325
4554
|
},
|
|
4326
4555
|
children: (c, index) => row(`${c.images[0].profile.toUpperCase()} ${c.revision.slice(0, 7)} #${c.candidate.number}`, imageTime(c.timestamp, now()), index() + Math.max(0, cursor() - 2), false, true)
|
|
4327
4556
|
}));
|
|
4328
|
-
return _el$
|
|
4557
|
+
return _el$30;
|
|
4329
4558
|
})(), (() => {
|
|
4330
|
-
var _el$
|
|
4331
|
-
insertNode(_el$
|
|
4332
|
-
insertNode(_el$
|
|
4333
|
-
insert(_el$
|
|
4334
|
-
insert(_el$
|
|
4335
|
-
effect((_$p) => setProp(_el$
|
|
4336
|
-
return _el$
|
|
4559
|
+
var _el$31 = createElement("text"), _el$32 = createTextNode(` of `), _el$33 = createTextNode(` candidates / Enter to choose`);
|
|
4560
|
+
insertNode(_el$31, _el$32);
|
|
4561
|
+
insertNode(_el$31, _el$33);
|
|
4562
|
+
insert(_el$31, () => cursor() + 1, _el$32);
|
|
4563
|
+
insert(_el$31, () => candidates().length, _el$33);
|
|
4564
|
+
effect((_$p) => setProp(_el$31, "fg", palette.muted, _$p));
|
|
4565
|
+
return _el$31;
|
|
4337
4566
|
})()];
|
|
4338
4567
|
}
|
|
4339
4568
|
});
|
|
@@ -4346,61 +4575,61 @@ ${selection()}
|
|
|
4346
4575
|
},
|
|
4347
4576
|
get children() {
|
|
4348
4577
|
return [(() => {
|
|
4349
|
-
var _el$
|
|
4350
|
-
insertNode(_el$
|
|
4578
|
+
var _el$34 = createElement("text");
|
|
4579
|
+
insertNode(_el$34, createTextNode(`Set up required tools`));
|
|
4351
4580
|
effect((_p$) => {
|
|
4352
4581
|
var _v$11 = palette.accent, _v$12 = TextAttributes2.BOLD;
|
|
4353
|
-
_v$11 !== _p$.e && (_p$.e = setProp(_el$
|
|
4354
|
-
_v$12 !== _p$.t && (_p$.t = setProp(_el$
|
|
4582
|
+
_v$11 !== _p$.e && (_p$.e = setProp(_el$34, "fg", _v$11, _p$.e));
|
|
4583
|
+
_v$12 !== _p$.t && (_p$.t = setProp(_el$34, "attributes", _v$12, _p$.t));
|
|
4355
4584
|
return _p$;
|
|
4356
4585
|
}, {
|
|
4357
4586
|
e: void 0,
|
|
4358
4587
|
t: void 0
|
|
4359
4588
|
});
|
|
4360
|
-
return _el$
|
|
4589
|
+
return _el$34;
|
|
4361
4590
|
})(), (() => {
|
|
4362
|
-
var _el$
|
|
4363
|
-
insertNode(_el$
|
|
4364
|
-
insert(_el$
|
|
4365
|
-
effect((_$p) => setProp(_el$
|
|
4366
|
-
return _el$
|
|
4591
|
+
var _el$36 = createElement("text"), _el$37 = createTextNode(`Missing: `);
|
|
4592
|
+
insertNode(_el$36, _el$37);
|
|
4593
|
+
insert(_el$36, () => dependencies3().missing.join(", "), null);
|
|
4594
|
+
effect((_$p) => setProp(_el$36, "fg", palette.foreground, _$p));
|
|
4595
|
+
return _el$36;
|
|
4367
4596
|
})(), createComponent2(Show, {
|
|
4368
4597
|
get when() {
|
|
4369
4598
|
return !error();
|
|
4370
4599
|
},
|
|
4371
4600
|
get fallback() {
|
|
4372
4601
|
return (() => {
|
|
4373
|
-
var _el$
|
|
4374
|
-
insert(_el$
|
|
4375
|
-
effect((_$p) => setProp(_el$
|
|
4376
|
-
return _el$
|
|
4602
|
+
var _el$91 = createElement("text");
|
|
4603
|
+
insert(_el$91, error);
|
|
4604
|
+
effect((_$p) => setProp(_el$91, "fg", palette.warning, _$p));
|
|
4605
|
+
return _el$91;
|
|
4377
4606
|
})();
|
|
4378
4607
|
},
|
|
4379
4608
|
get children() {
|
|
4380
|
-
var _el$
|
|
4381
|
-
insert(_el$
|
|
4609
|
+
var _el$38 = createElement("text");
|
|
4610
|
+
insert(_el$38, (() => {
|
|
4382
4611
|
var _c$2 = memo2(() => !!dependencies3().installer);
|
|
4383
4612
|
return () => _c$2() ? `${dependencies3().installer} will install ${dependencies3().missing.join(" and ")} and required dependencies, then continue.` : dependencies3().guidance;
|
|
4384
4613
|
})());
|
|
4385
|
-
effect((_$p) => setProp(_el$
|
|
4386
|
-
return _el$
|
|
4614
|
+
effect((_$p) => setProp(_el$38, "fg", palette.muted, _$p));
|
|
4615
|
+
return _el$38;
|
|
4387
4616
|
}
|
|
4388
4617
|
}), createComponent2(Show, {
|
|
4389
4618
|
get when() {
|
|
4390
4619
|
return !tight();
|
|
4391
4620
|
},
|
|
4392
4621
|
get children() {
|
|
4393
|
-
var _el$
|
|
4394
|
-
insert(_el$
|
|
4395
|
-
effect((_$p) => setProp(_el$
|
|
4396
|
-
return _el$
|
|
4622
|
+
var _el$39 = createElement("text");
|
|
4623
|
+
insert(_el$39, () => dependencies3().installer ? "Uses the ordinary terminal. Ctrl-C cancels and quits." : "Boo Flash will not change system packages on this platform.");
|
|
4624
|
+
effect((_$p) => setProp(_el$39, "fg", palette.muted, _$p));
|
|
4625
|
+
return _el$39;
|
|
4397
4626
|
}
|
|
4398
4627
|
}), (() => {
|
|
4399
|
-
var _el$
|
|
4400
|
-
insert(_el$
|
|
4401
|
-
insert(_el$
|
|
4402
|
-
effect((_$p) => setProp(_el$
|
|
4403
|
-
return _el$
|
|
4628
|
+
var _el$40 = createElement("box");
|
|
4629
|
+
insert(_el$40, () => row("Go back", "", 0), null);
|
|
4630
|
+
insert(_el$40, () => row(dependencies3().installer ? `Install ${dependencies3().missing.join(" + ")}` : "Refresh", "", 1), null);
|
|
4631
|
+
effect((_$p) => setProp(_el$40, "gap", tight() ? 0 : 1, _$p));
|
|
4632
|
+
return _el$40;
|
|
4404
4633
|
})()];
|
|
4405
4634
|
}
|
|
4406
4635
|
}), createComponent2(Show, {
|
|
@@ -4409,33 +4638,33 @@ ${selection()}
|
|
|
4409
4638
|
},
|
|
4410
4639
|
get children() {
|
|
4411
4640
|
return [(() => {
|
|
4412
|
-
var _el$
|
|
4413
|
-
insertNode(_el$
|
|
4414
|
-
insert(_el$
|
|
4415
|
-
insert(_el$
|
|
4641
|
+
var _el$41 = createElement("text"), _el$42 = createTextNode(` `);
|
|
4642
|
+
insertNode(_el$41, _el$42);
|
|
4643
|
+
insert(_el$41, spinner, _el$42);
|
|
4644
|
+
insert(_el$41, () => stopping() ? "Waiting for setup to stop..." : "Installing required tools", null);
|
|
4416
4645
|
effect((_p$) => {
|
|
4417
4646
|
var _v$13 = palette.accent, _v$14 = TextAttributes2.BOLD;
|
|
4418
|
-
_v$13 !== _p$.e && (_p$.e = setProp(_el$
|
|
4419
|
-
_v$14 !== _p$.t && (_p$.t = setProp(_el$
|
|
4647
|
+
_v$13 !== _p$.e && (_p$.e = setProp(_el$41, "fg", _v$13, _p$.e));
|
|
4648
|
+
_v$14 !== _p$.t && (_p$.t = setProp(_el$41, "attributes", _v$14, _p$.t));
|
|
4420
4649
|
return _p$;
|
|
4421
4650
|
}, {
|
|
4422
4651
|
e: void 0,
|
|
4423
4652
|
t: void 0
|
|
4424
4653
|
});
|
|
4654
|
+
return _el$41;
|
|
4655
|
+
})(), (() => {
|
|
4656
|
+
var _el$43 = createElement("text"), _el$44 = createTextNode(` via `);
|
|
4657
|
+
insertNode(_el$43, _el$44);
|
|
4658
|
+
insert(_el$43, () => dependencies3().missing.join(" + "), _el$44);
|
|
4659
|
+
insert(_el$43, () => dependencies3().installer, null);
|
|
4660
|
+
effect((_$p) => setProp(_el$43, "fg", palette.foreground, _$p));
|
|
4425
4661
|
return _el$43;
|
|
4426
4662
|
})(), (() => {
|
|
4427
|
-
var _el$45 = createElement("text"), _el$46 = createTextNode(`
|
|
4663
|
+
var _el$45 = createElement("text"), _el$46 = createTextNode(` uses the ordinary terminal. Ctrl-C cancels and quits; wait for cleanup.`);
|
|
4428
4664
|
insertNode(_el$45, _el$46);
|
|
4429
|
-
insert(_el$45, () => dependencies3().
|
|
4430
|
-
|
|
4431
|
-
effect((_$p) => setProp(_el$45, "fg", palette.foreground, _$p));
|
|
4665
|
+
insert(_el$45, () => dependencies3().installer, _el$46);
|
|
4666
|
+
effect((_$p) => setProp(_el$45, "fg", palette.muted, _$p));
|
|
4432
4667
|
return _el$45;
|
|
4433
|
-
})(), (() => {
|
|
4434
|
-
var _el$47 = createElement("text"), _el$48 = createTextNode(` uses the ordinary terminal. Ctrl-C cancels and quits; wait for cleanup.`);
|
|
4435
|
-
insertNode(_el$47, _el$48);
|
|
4436
|
-
insert(_el$47, () => dependencies3().installer, _el$48);
|
|
4437
|
-
effect((_$p) => setProp(_el$47, "fg", palette.muted, _$p));
|
|
4438
|
-
return _el$47;
|
|
4439
4668
|
})()];
|
|
4440
4669
|
}
|
|
4441
4670
|
}), createComponent2(Show, {
|
|
@@ -4444,26 +4673,26 @@ ${selection()}
|
|
|
4444
4673
|
},
|
|
4445
4674
|
get children() {
|
|
4446
4675
|
return [(() => {
|
|
4447
|
-
var _el$
|
|
4448
|
-
insertNode(_el$
|
|
4676
|
+
var _el$47 = createElement("text");
|
|
4677
|
+
insertNode(_el$47, createTextNode(`Choose a USB drive`));
|
|
4449
4678
|
effect((_p$) => {
|
|
4450
4679
|
var _v$15 = palette.foreground, _v$16 = TextAttributes2.BOLD;
|
|
4451
|
-
_v$15 !== _p$.e && (_p$.e = setProp(_el$
|
|
4452
|
-
_v$16 !== _p$.t && (_p$.t = setProp(_el$
|
|
4680
|
+
_v$15 !== _p$.e && (_p$.e = setProp(_el$47, "fg", _v$15, _p$.e));
|
|
4681
|
+
_v$16 !== _p$.t && (_p$.t = setProp(_el$47, "attributes", _v$16, _p$.t));
|
|
4453
4682
|
return _p$;
|
|
4454
4683
|
}, {
|
|
4455
4684
|
e: void 0,
|
|
4456
4685
|
t: void 0
|
|
4457
4686
|
});
|
|
4458
|
-
return _el$
|
|
4687
|
+
return _el$47;
|
|
4459
4688
|
})(), (() => {
|
|
4460
|
-
var _el$
|
|
4461
|
-
insert(_el$
|
|
4689
|
+
var _el$49 = createElement("text");
|
|
4690
|
+
insert(_el$49, (() => {
|
|
4462
4691
|
var _c$3 = memo2(() => !!loading());
|
|
4463
4692
|
return () => _c$3() ? `${spinner()} Checking disks and protected storage...` : "System, home and app storage are excluded.";
|
|
4464
4693
|
})());
|
|
4465
|
-
effect((_$p) => setProp(_el$
|
|
4466
|
-
return _el$
|
|
4694
|
+
effect((_$p) => setProp(_el$49, "fg", palette.muted, _$p));
|
|
4695
|
+
return _el$49;
|
|
4467
4696
|
})(), createComponent2(Show, {
|
|
4468
4697
|
get when() {
|
|
4469
4698
|
return !loading();
|
|
@@ -4475,31 +4704,31 @@ ${selection()}
|
|
|
4475
4704
|
},
|
|
4476
4705
|
get fallback() {
|
|
4477
4706
|
return (() => {
|
|
4478
|
-
var _el$
|
|
4479
|
-
insertNode(_el$
|
|
4480
|
-
effect((_$p) => setProp(_el$
|
|
4481
|
-
return _el$
|
|
4707
|
+
var _el$92 = createElement("text");
|
|
4708
|
+
insertNode(_el$92, createTextNode(`No eligible USB drives. Connect a writable external USB drive, then press R to refresh.`));
|
|
4709
|
+
effect((_$p) => setProp(_el$92, "fg", palette.warning, _$p));
|
|
4710
|
+
return _el$92;
|
|
4482
4711
|
})();
|
|
4483
4712
|
},
|
|
4484
4713
|
get children() {
|
|
4485
4714
|
return [(() => {
|
|
4486
|
-
var _el$
|
|
4487
|
-
setProp(_el$
|
|
4488
|
-
insert(_el$
|
|
4715
|
+
var _el$50 = createElement("box");
|
|
4716
|
+
setProp(_el$50, "gap", 0);
|
|
4717
|
+
insert(_el$50, createComponent2(For, {
|
|
4489
4718
|
get each() {
|
|
4490
4719
|
return disks3().slice(Math.max(0, cursor() - 2), Math.max(3, cursor() + 1));
|
|
4491
4720
|
},
|
|
4492
4721
|
children: (d, index) => row(d.name, `${path(d)} / ${bytes(d.bytes)} / USB`, index() + Math.max(0, cursor() - 2))
|
|
4493
4722
|
}));
|
|
4494
|
-
return _el$
|
|
4723
|
+
return _el$50;
|
|
4495
4724
|
})(), (() => {
|
|
4496
|
-
var _el$
|
|
4497
|
-
insert(_el$
|
|
4725
|
+
var _el$51 = createElement("text");
|
|
4726
|
+
insert(_el$51, (() => {
|
|
4498
4727
|
var _c$4 = memo2(() => cursor() < 0);
|
|
4499
4728
|
return () => _c$4() ? "Use arrows to select a drive. Nothing is selected yet." : `${cursor() + 1} of ${disks3().length} drives / Enter to review`;
|
|
4500
4729
|
})());
|
|
4501
|
-
effect((_$p) => setProp(_el$
|
|
4502
|
-
return _el$
|
|
4730
|
+
effect((_$p) => setProp(_el$51, "fg", palette.muted, _$p));
|
|
4731
|
+
return _el$51;
|
|
4503
4732
|
})()];
|
|
4504
4733
|
}
|
|
4505
4734
|
});
|
|
@@ -4512,36 +4741,36 @@ ${selection()}
|
|
|
4512
4741
|
},
|
|
4513
4742
|
get children() {
|
|
4514
4743
|
return [(() => {
|
|
4515
|
-
var _el$
|
|
4516
|
-
insertNode(_el$
|
|
4744
|
+
var _el$52 = createElement("text");
|
|
4745
|
+
insertNode(_el$52, createTextNode(`Erase this entire USB drive?`));
|
|
4517
4746
|
effect((_p$) => {
|
|
4518
4747
|
var _v$17 = palette.warning, _v$18 = TextAttributes2.BOLD;
|
|
4519
|
-
_v$17 !== _p$.e && (_p$.e = setProp(_el$
|
|
4520
|
-
_v$18 !== _p$.t && (_p$.t = setProp(_el$
|
|
4748
|
+
_v$17 !== _p$.e && (_p$.e = setProp(_el$52, "fg", _v$17, _p$.e));
|
|
4749
|
+
_v$18 !== _p$.t && (_p$.t = setProp(_el$52, "attributes", _v$18, _p$.t));
|
|
4521
4750
|
return _p$;
|
|
4522
4751
|
}, {
|
|
4523
4752
|
e: void 0,
|
|
4524
4753
|
t: void 0
|
|
4525
4754
|
});
|
|
4526
|
-
return _el$
|
|
4755
|
+
return _el$52;
|
|
4527
4756
|
})(), (() => {
|
|
4528
|
-
var _el$
|
|
4529
|
-
insertNode(_el$
|
|
4530
|
-
insertNode(_el$
|
|
4531
|
-
setProp(_el$
|
|
4532
|
-
setProp(_el$
|
|
4533
|
-
setProp(_el$
|
|
4534
|
-
insert(_el$
|
|
4535
|
-
insert(_el$
|
|
4757
|
+
var _el$54 = createElement("box"), _el$55 = createElement("text"), _el$56 = createElement("text");
|
|
4758
|
+
insertNode(_el$54, _el$55);
|
|
4759
|
+
insertNode(_el$54, _el$56);
|
|
4760
|
+
setProp(_el$54, "paddingX", 1);
|
|
4761
|
+
setProp(_el$55, "height", 1);
|
|
4762
|
+
setProp(_el$55, "wrapMode", "none");
|
|
4763
|
+
insert(_el$55, () => disk()?.name);
|
|
4764
|
+
insert(_el$56, (() => {
|
|
4536
4765
|
var _c$5 = memo2(() => !!disk());
|
|
4537
4766
|
return () => _c$5() ? `${path(disk())} / ${bytes(disk().bytes)}` : "";
|
|
4538
4767
|
})());
|
|
4539
4768
|
effect((_p$) => {
|
|
4540
4769
|
var _v$19 = palette.panelAlt, _v$20 = palette.foreground, _v$21 = TextAttributes2.BOLD, _v$22 = palette.accent;
|
|
4541
|
-
_v$19 !== _p$.e && (_p$.e = setProp(_el$
|
|
4542
|
-
_v$20 !== _p$.t && (_p$.t = setProp(_el$
|
|
4543
|
-
_v$21 !== _p$.a && (_p$.a = setProp(_el$
|
|
4544
|
-
_v$22 !== _p$.o && (_p$.o = setProp(_el$
|
|
4770
|
+
_v$19 !== _p$.e && (_p$.e = setProp(_el$54, "backgroundColor", _v$19, _p$.e));
|
|
4771
|
+
_v$20 !== _p$.t && (_p$.t = setProp(_el$55, "fg", _v$20, _p$.t));
|
|
4772
|
+
_v$21 !== _p$.a && (_p$.a = setProp(_el$55, "attributes", _v$21, _p$.a));
|
|
4773
|
+
_v$22 !== _p$.o && (_p$.o = setProp(_el$56, "fg", _v$22, _p$.o));
|
|
4545
4774
|
return _p$;
|
|
4546
4775
|
}, {
|
|
4547
4776
|
e: void 0,
|
|
@@ -4549,18 +4778,18 @@ ${selection()}
|
|
|
4549
4778
|
a: void 0,
|
|
4550
4779
|
o: void 0
|
|
4551
4780
|
});
|
|
4552
|
-
return _el$
|
|
4781
|
+
return _el$54;
|
|
4553
4782
|
})(), (() => {
|
|
4554
|
-
var _el$
|
|
4555
|
-
insertNode(_el$
|
|
4556
|
-
effect((_$p) => setProp(_el$
|
|
4557
|
-
return _el$
|
|
4783
|
+
var _el$57 = createElement("text");
|
|
4784
|
+
insertNode(_el$57, createTextNode(`ALL data and partitions on this drive will be lost. Back up anything you need before continuing.`));
|
|
4785
|
+
effect((_$p) => setProp(_el$57, "fg", palette.warning, _$p));
|
|
4786
|
+
return _el$57;
|
|
4558
4787
|
})(), (() => {
|
|
4559
|
-
var _el$
|
|
4560
|
-
insert(_el$
|
|
4561
|
-
insert(_el$
|
|
4562
|
-
effect((_$p) => setProp(_el$
|
|
4563
|
-
return _el$
|
|
4788
|
+
var _el$59 = createElement("box");
|
|
4789
|
+
insert(_el$59, () => row("Go back", "", 0), null);
|
|
4790
|
+
insert(_el$59, () => row("Erase & flash", "", 1, true), null);
|
|
4791
|
+
effect((_$p) => setProp(_el$59, "gap", tight() ? 0 : 1, _$p));
|
|
4792
|
+
return _el$59;
|
|
4564
4793
|
})()];
|
|
4565
4794
|
}
|
|
4566
4795
|
}), createComponent2(Show, {
|
|
@@ -4569,69 +4798,69 @@ ${selection()}
|
|
|
4569
4798
|
},
|
|
4570
4799
|
get children() {
|
|
4571
4800
|
return [(() => {
|
|
4572
|
-
var _el$
|
|
4573
|
-
insertNode(_el$
|
|
4574
|
-
insert(_el$
|
|
4575
|
-
insert(_el$
|
|
4801
|
+
var _el$60 = createElement("text"), _el$61 = createTextNode(` `);
|
|
4802
|
+
insertNode(_el$60, _el$61);
|
|
4803
|
+
insert(_el$60, spinner, _el$61);
|
|
4804
|
+
insert(_el$60, (() => {
|
|
4576
4805
|
var _c$6 = memo2(() => !!stopping());
|
|
4577
4806
|
return () => _c$6() ? "Stopping safely..." : progress().stage;
|
|
4578
4807
|
})(), null);
|
|
4579
4808
|
effect((_p$) => {
|
|
4580
4809
|
var _v$23 = palette.accent, _v$24 = TextAttributes2.BOLD;
|
|
4581
|
-
_v$23 !== _p$.e && (_p$.e = setProp(_el$
|
|
4582
|
-
_v$24 !== _p$.t && (_p$.t = setProp(_el$
|
|
4810
|
+
_v$23 !== _p$.e && (_p$.e = setProp(_el$60, "fg", _v$23, _p$.e));
|
|
4811
|
+
_v$24 !== _p$.t && (_p$.t = setProp(_el$60, "attributes", _v$24, _p$.t));
|
|
4583
4812
|
return _p$;
|
|
4584
4813
|
}, {
|
|
4585
4814
|
e: void 0,
|
|
4586
4815
|
t: void 0
|
|
4587
4816
|
});
|
|
4588
|
-
return _el$
|
|
4817
|
+
return _el$60;
|
|
4589
4818
|
})(), (() => {
|
|
4590
|
-
var _el$
|
|
4591
|
-
insert(_el$
|
|
4592
|
-
effect((_$p) => setProp(_el$
|
|
4593
|
-
return _el$
|
|
4819
|
+
var _el$62 = createElement("text");
|
|
4820
|
+
insert(_el$62, () => disk()?.name);
|
|
4821
|
+
effect((_$p) => setProp(_el$62, "fg", palette.foreground, _$p));
|
|
4822
|
+
return _el$62;
|
|
4594
4823
|
})(), (() => {
|
|
4595
|
-
var _el$
|
|
4596
|
-
insert(_el$
|
|
4824
|
+
var _el$63 = createElement("text");
|
|
4825
|
+
insert(_el$63, (() => {
|
|
4597
4826
|
var _c$7 = memo2(() => !!stopping());
|
|
4598
4827
|
return () => _c$7() ? "Waiting for all child processes to stop. Keep the USB connected." : progress().detail;
|
|
4599
4828
|
})());
|
|
4600
|
-
effect((_$p) => setProp(_el$
|
|
4601
|
-
return _el$
|
|
4829
|
+
effect((_$p) => setProp(_el$63, "fg", palette.muted, _$p));
|
|
4830
|
+
return _el$63;
|
|
4602
4831
|
})(), createComponent2(Show, {
|
|
4603
4832
|
get when() {
|
|
4604
4833
|
return percent() !== void 0;
|
|
4605
4834
|
},
|
|
4606
4835
|
get children() {
|
|
4607
4836
|
return [(() => {
|
|
4608
|
-
var _el$
|
|
4609
|
-
setProp(_el$
|
|
4610
|
-
insert(_el$
|
|
4837
|
+
var _el$64 = createElement("box");
|
|
4838
|
+
setProp(_el$64, "flexShrink", 0);
|
|
4839
|
+
insert(_el$64, createComponent2(Show, {
|
|
4611
4840
|
get when() {
|
|
4612
4841
|
return percent() > 0;
|
|
4613
4842
|
},
|
|
4614
4843
|
get children() {
|
|
4615
|
-
var _el$
|
|
4616
|
-
setProp(_el$
|
|
4844
|
+
var _el$65 = createElement("box");
|
|
4845
|
+
setProp(_el$65, "height", 1);
|
|
4617
4846
|
effect((_p$) => {
|
|
4618
4847
|
var _v$25 = `${percent() ?? 0}%`, _v$26 = palette.accent;
|
|
4619
|
-
_v$25 !== _p$.e && (_p$.e = setProp(_el$
|
|
4620
|
-
_v$26 !== _p$.t && (_p$.t = setProp(_el$
|
|
4848
|
+
_v$25 !== _p$.e && (_p$.e = setProp(_el$65, "width", _v$25, _p$.e));
|
|
4849
|
+
_v$26 !== _p$.t && (_p$.t = setProp(_el$65, "backgroundColor", _v$26, _p$.t));
|
|
4621
4850
|
return _p$;
|
|
4622
4851
|
}, {
|
|
4623
4852
|
e: void 0,
|
|
4624
4853
|
t: void 0
|
|
4625
4854
|
});
|
|
4626
|
-
return _el$
|
|
4855
|
+
return _el$65;
|
|
4627
4856
|
}
|
|
4628
4857
|
}));
|
|
4629
4858
|
effect((_p$) => {
|
|
4630
4859
|
var _v$27 = !tight(), _v$28 = palette.accent, _v$29 = tight() ? 1 : 3, _v$30 = palette.panelAlt;
|
|
4631
|
-
_v$27 !== _p$.e && (_p$.e = setProp(_el$
|
|
4632
|
-
_v$28 !== _p$.t && (_p$.t = setProp(_el$
|
|
4633
|
-
_v$29 !== _p$.a && (_p$.a = setProp(_el$
|
|
4634
|
-
_v$30 !== _p$.o && (_p$.o = setProp(_el$
|
|
4860
|
+
_v$27 !== _p$.e && (_p$.e = setProp(_el$64, "border", _v$27, _p$.e));
|
|
4861
|
+
_v$28 !== _p$.t && (_p$.t = setProp(_el$64, "borderColor", _v$28, _p$.t));
|
|
4862
|
+
_v$29 !== _p$.a && (_p$.a = setProp(_el$64, "height", _v$29, _p$.a));
|
|
4863
|
+
_v$30 !== _p$.o && (_p$.o = setProp(_el$64, "backgroundColor", _v$30, _p$.o));
|
|
4635
4864
|
return _p$;
|
|
4636
4865
|
}, {
|
|
4637
4866
|
e: void 0,
|
|
@@ -4639,44 +4868,44 @@ ${selection()}
|
|
|
4639
4868
|
a: void 0,
|
|
4640
4869
|
o: void 0
|
|
4641
4870
|
});
|
|
4642
|
-
return _el$
|
|
4871
|
+
return _el$64;
|
|
4643
4872
|
})(), (() => {
|
|
4644
|
-
var _el$
|
|
4645
|
-
insertNode(_el$
|
|
4646
|
-
insertNode(_el$
|
|
4647
|
-
insert(_el$
|
|
4648
|
-
insert(_el$
|
|
4649
|
-
insert(_el$
|
|
4873
|
+
var _el$66 = createElement("text"), _el$67 = createTextNode(`% `), _el$68 = createTextNode(` / `);
|
|
4874
|
+
insertNode(_el$66, _el$67);
|
|
4875
|
+
insertNode(_el$66, _el$68);
|
|
4876
|
+
insert(_el$66, percent, _el$67);
|
|
4877
|
+
insert(_el$66, () => bytes(progress().bytes ?? 0), _el$68);
|
|
4878
|
+
insert(_el$66, () => bytes(progress().total ?? 0), null);
|
|
4650
4879
|
effect((_p$) => {
|
|
4651
4880
|
var _v$31 = palette.foreground, _v$32 = TextAttributes2.BOLD;
|
|
4652
|
-
_v$31 !== _p$.e && (_p$.e = setProp(_el$
|
|
4653
|
-
_v$32 !== _p$.t && (_p$.t = setProp(_el$
|
|
4881
|
+
_v$31 !== _p$.e && (_p$.e = setProp(_el$66, "fg", _v$31, _p$.e));
|
|
4882
|
+
_v$32 !== _p$.t && (_p$.t = setProp(_el$66, "attributes", _v$32, _p$.t));
|
|
4654
4883
|
return _p$;
|
|
4655
4884
|
}, {
|
|
4656
4885
|
e: void 0,
|
|
4657
4886
|
t: void 0
|
|
4658
4887
|
});
|
|
4659
|
-
return _el$
|
|
4888
|
+
return _el$66;
|
|
4660
4889
|
})(), createComponent2(Show, {
|
|
4661
4890
|
get when() {
|
|
4662
4891
|
return !tight();
|
|
4663
4892
|
},
|
|
4664
4893
|
get children() {
|
|
4665
|
-
var _el$
|
|
4666
|
-
insert(_el$
|
|
4894
|
+
var _el$69 = createElement("text");
|
|
4895
|
+
insert(_el$69, (() => {
|
|
4667
4896
|
var _c$8 = memo2(() => !!progress().speed);
|
|
4668
4897
|
return () => _c$8() ? `${bytes(progress().speed)} / s` : "";
|
|
4669
4898
|
})());
|
|
4670
|
-
effect((_$p) => setProp(_el$
|
|
4671
|
-
return _el$
|
|
4899
|
+
effect((_$p) => setProp(_el$69, "fg", palette.muted, _$p));
|
|
4900
|
+
return _el$69;
|
|
4672
4901
|
}
|
|
4673
4902
|
})];
|
|
4674
4903
|
}
|
|
4675
4904
|
}), (() => {
|
|
4676
|
-
var _el$
|
|
4677
|
-
insertNode(_el$
|
|
4678
|
-
effect((_$p) => setProp(_el$
|
|
4679
|
-
return _el$
|
|
4905
|
+
var _el$70 = createElement("text");
|
|
4906
|
+
insertNode(_el$70, createTextNode(`Keep the USB connected until safe removal succeeds.`));
|
|
4907
|
+
effect((_$p) => setProp(_el$70, "fg", palette.warning, _$p));
|
|
4908
|
+
return _el$70;
|
|
4680
4909
|
})()];
|
|
4681
4910
|
}
|
|
4682
4911
|
}), createComponent2(Show, {
|
|
@@ -4685,34 +4914,34 @@ ${selection()}
|
|
|
4685
4914
|
},
|
|
4686
4915
|
get children() {
|
|
4687
4916
|
return [(() => {
|
|
4688
|
-
var _el$
|
|
4689
|
-
insert(_el$
|
|
4917
|
+
var _el$72 = createElement("text");
|
|
4918
|
+
insert(_el$72, () => props.backend.successTitle);
|
|
4690
4919
|
effect((_p$) => {
|
|
4691
4920
|
var _v$33 = palette.success, _v$34 = TextAttributes2.BOLD;
|
|
4692
|
-
_v$33 !== _p$.e && (_p$.e = setProp(_el$
|
|
4693
|
-
_v$34 !== _p$.t && (_p$.t = setProp(_el$
|
|
4921
|
+
_v$33 !== _p$.e && (_p$.e = setProp(_el$72, "fg", _v$33, _p$.e));
|
|
4922
|
+
_v$34 !== _p$.t && (_p$.t = setProp(_el$72, "attributes", _v$34, _p$.t));
|
|
4694
4923
|
return _p$;
|
|
4695
4924
|
}, {
|
|
4696
4925
|
e: void 0,
|
|
4697
4926
|
t: void 0
|
|
4698
4927
|
});
|
|
4699
|
-
return _el$
|
|
4928
|
+
return _el$72;
|
|
4700
4929
|
})(), (() => {
|
|
4701
|
-
var _el$
|
|
4702
|
-
insert(_el$
|
|
4703
|
-
effect((_$p) => setProp(_el$
|
|
4704
|
-
return _el$
|
|
4930
|
+
var _el$73 = createElement("text");
|
|
4931
|
+
insert(_el$73, () => props.backend.successDetail);
|
|
4932
|
+
effect((_$p) => setProp(_el$73, "fg", palette.foreground, _$p));
|
|
4933
|
+
return _el$73;
|
|
4705
4934
|
})(), (() => {
|
|
4706
|
-
var _el$
|
|
4707
|
-
insertNode(_el$
|
|
4708
|
-
effect((_$p) => setProp(_el$
|
|
4709
|
-
return _el$
|
|
4935
|
+
var _el$74 = createElement("text");
|
|
4936
|
+
insertNode(_el$74, createTextNode(`Compressed image and raw stream verified. Not a device read-back.`));
|
|
4937
|
+
effect((_$p) => setProp(_el$74, "fg", palette.muted, _$p));
|
|
4938
|
+
return _el$74;
|
|
4710
4939
|
})(), (() => {
|
|
4711
|
-
var _el$
|
|
4712
|
-
setProp(_el$
|
|
4713
|
-
insert(_el$
|
|
4714
|
-
insert(_el$
|
|
4715
|
-
return _el$
|
|
4940
|
+
var _el$76 = createElement("box");
|
|
4941
|
+
setProp(_el$76, "gap", 1);
|
|
4942
|
+
insert(_el$76, () => row("Choose another image", "", 0), null);
|
|
4943
|
+
insert(_el$76, () => row("Quit", "", 1), null);
|
|
4944
|
+
return _el$76;
|
|
4716
4945
|
})()];
|
|
4717
4946
|
}
|
|
4718
4947
|
}), createComponent2(Show, {
|
|
@@ -4721,67 +4950,67 @@ ${selection()}
|
|
|
4721
4950
|
},
|
|
4722
4951
|
get children() {
|
|
4723
4952
|
return [(() => {
|
|
4724
|
-
var _el$
|
|
4725
|
-
insertNode(_el$
|
|
4953
|
+
var _el$77 = createElement("text");
|
|
4954
|
+
insertNode(_el$77, createTextNode(`Flash not completed`));
|
|
4726
4955
|
effect((_p$) => {
|
|
4727
4956
|
var _v$35 = palette.danger, _v$36 = TextAttributes2.BOLD;
|
|
4728
|
-
_v$35 !== _p$.e && (_p$.e = setProp(_el$
|
|
4729
|
-
_v$36 !== _p$.t && (_p$.t = setProp(_el$
|
|
4957
|
+
_v$35 !== _p$.e && (_p$.e = setProp(_el$77, "fg", _v$35, _p$.e));
|
|
4958
|
+
_v$36 !== _p$.t && (_p$.t = setProp(_el$77, "attributes", _v$36, _p$.t));
|
|
4730
4959
|
return _p$;
|
|
4731
4960
|
}, {
|
|
4732
4961
|
e: void 0,
|
|
4733
4962
|
t: void 0
|
|
4734
4963
|
});
|
|
4735
|
-
return _el$
|
|
4964
|
+
return _el$77;
|
|
4736
4965
|
})(), (() => {
|
|
4737
|
-
var _el$
|
|
4738
|
-
insert(_el$
|
|
4739
|
-
effect((_$p) => setProp(_el$
|
|
4740
|
-
return _el$
|
|
4966
|
+
var _el$79 = createElement("text");
|
|
4967
|
+
insert(_el$79, error);
|
|
4968
|
+
effect((_$p) => setProp(_el$79, "fg", palette.foreground, _$p));
|
|
4969
|
+
return _el$79;
|
|
4741
4970
|
})(), (() => {
|
|
4742
|
-
var _el$
|
|
4743
|
-
setProp(_el$
|
|
4744
|
-
insert(_el$
|
|
4745
|
-
insert(_el$
|
|
4746
|
-
return _el$
|
|
4971
|
+
var _el$80 = createElement("box");
|
|
4972
|
+
setProp(_el$80, "gap", 1);
|
|
4973
|
+
insert(_el$80, () => row("Refresh & try again", "", 0), null);
|
|
4974
|
+
insert(_el$80, () => row("Quit", "", 1), null);
|
|
4975
|
+
return _el$80;
|
|
4747
4976
|
})()];
|
|
4748
4977
|
}
|
|
4749
4978
|
})];
|
|
4750
4979
|
}
|
|
4751
4980
|
}));
|
|
4752
|
-
insertNode(_el$
|
|
4753
|
-
insertNode(_el$
|
|
4754
|
-
setProp(_el$
|
|
4755
|
-
setProp(_el$
|
|
4756
|
-
setProp(_el$
|
|
4757
|
-
setProp(_el$
|
|
4758
|
-
setProp(_el$
|
|
4759
|
-
setProp(_el$
|
|
4760
|
-
setProp(_el$
|
|
4761
|
-
insert(_el$
|
|
4981
|
+
insertNode(_el$81, _el$82);
|
|
4982
|
+
insertNode(_el$81, _el$83);
|
|
4983
|
+
setProp(_el$81, "height", 1);
|
|
4984
|
+
setProp(_el$81, "flexShrink", 0);
|
|
4985
|
+
setProp(_el$81, "flexDirection", "row");
|
|
4986
|
+
setProp(_el$81, "gap", 1);
|
|
4987
|
+
setProp(_el$82, "flexGrow", 1);
|
|
4988
|
+
setProp(_el$82, "minWidth", 0);
|
|
4989
|
+
setProp(_el$82, "wrapMode", "none");
|
|
4990
|
+
insert(_el$82, (() => {
|
|
4762
4991
|
var _c$9 = memo2(() => !!busy());
|
|
4763
4992
|
return () => _c$9() ? "Esc cancel / Q stop & quit" : dimensions().width < 56 ? "\u2191\u2193 Enter / Esc / R / Q quit" : "Arrows / Enter / Esc back / R refresh / Q quit";
|
|
4764
4993
|
})());
|
|
4765
|
-
insertNode(_el$
|
|
4766
|
-
setProp(_el$
|
|
4767
|
-
setProp(_el$
|
|
4768
|
-
insert(_el$
|
|
4994
|
+
insertNode(_el$83, _el$84);
|
|
4995
|
+
setProp(_el$83, "flexShrink", 0);
|
|
4996
|
+
setProp(_el$83, "wrapMode", "none");
|
|
4997
|
+
insert(_el$83, version, null);
|
|
4769
4998
|
effect((_p$) => {
|
|
4770
4999
|
var _v$37 = palette.background, _v$38 = dimensions().width <= 80 ? "100%" : 80, _v$39 = dimensions().height <= 24 ? "100%" : 24, _v$40 = palette.border, _v$41 = palette.card, _v$42 = palette.accent, _v$43 = TextAttributes2.BOLD, _v$44 = palette.muted, _v$45 = palette.danger, _v$46 = tight() ? 0 : 1, _v$47 = tight() ? 0 : 1, _v$48 = tight() || (compact() || dimensions().width < 56) && (screen() === "setup" || !!image()) ? 0 : 1, _v$49 = palette.muted, _v$50 = palette.muted;
|
|
4771
|
-
_v$37 !== _p$.e && (_p$.e = setProp(_el$
|
|
4772
|
-
_v$38 !== _p$.t && (_p$.t = setProp(_el$
|
|
4773
|
-
_v$39 !== _p$.a && (_p$.a = setProp(_el$
|
|
4774
|
-
_v$40 !== _p$.o && (_p$.o = setProp(_el$
|
|
4775
|
-
_v$41 !== _p$.i && (_p$.i = setProp(_el$
|
|
4776
|
-
_v$42 !== _p$.n && (_p$.n = setProp(_el$
|
|
4777
|
-
_v$43 !== _p$.s && (_p$.s = setProp(_el$
|
|
4778
|
-
_v$44 !== _p$.h && (_p$.h = setProp(_el$
|
|
4779
|
-
_v$45 !== _p$.r && (_p$.r = setProp(_el$
|
|
4780
|
-
_v$46 !== _p$.d && (_p$.d = setProp(_el$
|
|
4781
|
-
_v$47 !== _p$.l && (_p$.l = setProp(_el$
|
|
4782
|
-
_v$48 !== _p$.u && (_p$.u = setProp(_el$
|
|
4783
|
-
_v$49 !== _p$.c && (_p$.c = setProp(_el$
|
|
4784
|
-
_v$50 !== _p$.w && (_p$.w = setProp(_el$
|
|
5000
|
+
_v$37 !== _p$.e && (_p$.e = setProp(_el$5, "backgroundColor", _v$37, _p$.e));
|
|
5001
|
+
_v$38 !== _p$.t && (_p$.t = setProp(_el$6, "width", _v$38, _p$.t));
|
|
5002
|
+
_v$39 !== _p$.a && (_p$.a = setProp(_el$6, "height", _v$39, _p$.a));
|
|
5003
|
+
_v$40 !== _p$.o && (_p$.o = setProp(_el$6, "borderColor", _v$40, _p$.o));
|
|
5004
|
+
_v$41 !== _p$.i && (_p$.i = setProp(_el$6, "backgroundColor", _v$41, _p$.i));
|
|
5005
|
+
_v$42 !== _p$.n && (_p$.n = setProp(_el$8, "fg", _v$42, _p$.n));
|
|
5006
|
+
_v$43 !== _p$.s && (_p$.s = setProp(_el$8, "attributes", _v$43, _p$.s));
|
|
5007
|
+
_v$44 !== _p$.h && (_p$.h = setProp(_el$0, "fg", _v$44, _p$.h));
|
|
5008
|
+
_v$45 !== _p$.r && (_p$.r = setProp(_el$1, "backgroundColor", _v$45, _p$.r));
|
|
5009
|
+
_v$46 !== _p$.d && (_p$.d = setProp(_el$1, "marginTop", _v$46, _p$.d));
|
|
5010
|
+
_v$47 !== _p$.l && (_p$.l = setProp(_el$10, "paddingTop", _v$47, _p$.l));
|
|
5011
|
+
_v$48 !== _p$.u && (_p$.u = setProp(_el$10, "gap", _v$48, _p$.u));
|
|
5012
|
+
_v$49 !== _p$.c && (_p$.c = setProp(_el$82, "fg", _v$49, _p$.c));
|
|
5013
|
+
_v$50 !== _p$.w && (_p$.w = setProp(_el$83, "fg", _v$50, _p$.w));
|
|
4785
5014
|
return _p$;
|
|
4786
5015
|
}, {
|
|
4787
5016
|
e: void 0,
|
|
@@ -4799,7 +5028,7 @@ ${selection()}
|
|
|
4799
5028
|
c: void 0,
|
|
4800
5029
|
w: void 0
|
|
4801
5030
|
});
|
|
4802
|
-
return _el$
|
|
5031
|
+
return _el$5;
|
|
4803
5032
|
})();
|
|
4804
5033
|
}
|
|
4805
5034
|
|
|
@@ -4867,6 +5096,31 @@ if (args.length > 1 || args.some((arg) => !["--list-images", "--clear-cache"].in
|
|
|
4867
5096
|
for (const signal of signals) process.off(signal, quit);
|
|
4868
5097
|
}
|
|
4869
5098
|
}
|
|
5099
|
+
/*!
|
|
5100
|
+
* Boo artwork derived from @simonklee/bigfeelings@0.2.1; motion and scene shared
|
|
5101
|
+
* with the Boo website (originally website/src/lib/boo-animation.ts).
|
|
5102
|
+
*
|
|
5103
|
+
* MIT License
|
|
5104
|
+
* Copyright (c) 2026 Simon Klee
|
|
5105
|
+
*
|
|
5106
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5107
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
5108
|
+
* in the Software without restriction, including without limitation the rights
|
|
5109
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
5110
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
5111
|
+
* furnished to do so, subject to the following conditions:
|
|
5112
|
+
*
|
|
5113
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
5114
|
+
* copies or substantial portions of the Software.
|
|
5115
|
+
*
|
|
5116
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
5117
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
5118
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
5119
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
5120
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
5121
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
5122
|
+
* SOFTWARE.
|
|
5123
|
+
*/
|
|
4870
5124
|
/*!
|
|
4871
5125
|
* Artwork derived from @simonklee/bigfeelings@0.2.1, original octant painter,
|
|
4872
5126
|
* scale 4, time 0, right-facing ghost at (0,0), wordmark at (48,0).
|