init from webxdc/hello

using flake to setup dev environment with webxdc-dev
This commit is contained in:
sorrel 2024-06-19 16:12:42 -04:00
commit ef6ab83090
7 changed files with 1335 additions and 0 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
node_modules/**
.envrc

BIN
dist/myapp.xdc vendored Normal file

Binary file not shown.

27
flake.lock Normal file
View file

@ -0,0 +1,27 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1718160348,
"narHash": "sha256-9YrUjdztqi4Gz8n3mBuqvCkMo4ojrA6nASwyIKWMpus=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "57d6973abba7ea108bac64ae7629e7431e0199b6",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

22
flake.nix Normal file
View file

@ -0,0 +1,22 @@
{
description = "webxdc go application";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
};
outputs = { self, nixpkgs }:
let
system = "x86_64-linux";
pkgs = import nixpkgs { inherit system; };
nodejs = pkgs.nodejs-slim;
in {
devShells = {
x86_64-linux = {
default = pkgs.mkShell {
buildInputs = [ nodejs ];
};
};
};
};
}

1208
package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

9
package.json Normal file
View file

@ -0,0 +1,9 @@
{
"devDependencies": {
"webxdc-dev": "^0.9.0"
},
"scripts": {
"build": "zip -9 --recurse-paths dist/myapp.xdc src",
"webxdc-dev": "webxdc-dev run --port 4000 src"
}
}

67
src/index.html Normal file
View file

@ -0,0 +1,67 @@
<!DOCTYPE html>
<html>
<head>
<title>Hello</title>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width"/>
<script src="webxdc.js"></script>
<style type="text/css">
body {
font-family: Helvetica, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Hello</h1>
<form>
<input id="input" type="text" placeholder="Message" autofocus required />
<input type="submit" onclick="sendMsg(); return false;" value="Send" />
</form>
<p id="output"></p>
<p><em><small id="deviceName"></small></em></p>
<script>
var El = function (tag, text) {
var el = document.createElement(tag);
el.innerText = text || '';
return el;
};
// handle past and future state updates
window.webxdc.setUpdateListener(function (update) {
var output = document.getElementById('output');
// when appending content to an element with output.innerHTML +=
// that content is implicitly parsed, making it possible for messages
// to be interpreted as scripts. Creating elements directly,
// injecting content as plain text, and appending them to the DOM
// is a much safer practice.
[
El('strong', update.payload.name + ':'),
El('span', update.payload.msg),
El('br'),
].forEach(function (item) {
output.appendChild(item);
});
});
function sendMsg() {
msg = document.getElementById("input").value;
info = 'someone typed "' + msg + '"';
document.getElementById("input").value = '';
// send new updates
window.webxdc.sendUpdate({
payload: {
name: window.webxdc.selfName,
msg,
},
info,
}, info);
}
(function () {
window.deviceName.innerText = 'this is ' + window.webxdc.selfName;
})()
</script>
</body>
</html>