@benev/tact 0.4.0-6 → 0.4.0-8

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.
Files changed (82) hide show
  1. package/README.md +95 -26
  2. package/package.json +3 -2
  3. package/s/lib/input/controller.ts +4 -1
  4. package/s/lib/input/data/intent/decode.ts +2 -2
  5. package/s/lib/input/data/intent/encode.ts +2 -2
  6. package/s/lib/input/data/intent/minihash.ts +5 -0
  7. package/s/lib/input/decoder.ts +2 -2
  8. package/s/lib/input/evaluate/context.ts +5 -1
  9. package/s/lib/input/evaluate/evaluate.ts +27 -14
  10. package/s/lib/input/investigate/hash-bindings.ts +5 -3
  11. package/s/lib/input/investigate/investigate.ts +24 -9
  12. package/s/lib/input/test.ts +52 -30
  13. package/s/lib/input/testing/quickbind.ts +3 -3
  14. package/s/lib/ui/deck/auto-gamepads.ts +1 -0
  15. package/s/lib/ui/deck/collector.ts +3 -3
  16. package/s/lib/ui/deck/hub.ts +4 -3
  17. package/s/lib/ui/deck/setup/deck.ts +33 -20
  18. package/s/lib/ui/deck/setup/tact.ts +20 -11
  19. package/s/lib/ui/deck/setup/types.ts +1 -0
  20. package/s/lib/ui/deck/setup/utils/broadcast-channel.ts +17 -0
  21. package/s/lib/ui/deck/setup/utils/kv.ts +20 -0
  22. package/s/lib/ui/deck/types.ts +1 -1
  23. package/s/lib/ui/views/customize/view.ts +3 -3
  24. package/s/lib/utils/hash.ts +47 -0
  25. package/x/demo/main.bundle.min.js +104 -104
  26. package/x/demo/main.bundle.min.js.map +4 -4
  27. package/x/gamepad/index.html +1 -1
  28. package/x/index.html +2 -2
  29. package/x/lib/input/controller.js +1 -1
  30. package/x/lib/input/controller.js.map +1 -1
  31. package/x/lib/input/data/intent/decode.d.ts +1 -1
  32. package/x/lib/input/data/intent/decode.js +2 -2
  33. package/x/lib/input/data/intent/decode.js.map +1 -1
  34. package/x/lib/input/data/intent/encode.d.ts +1 -1
  35. package/x/lib/input/data/intent/encode.js +2 -2
  36. package/x/lib/input/data/intent/encode.js.map +1 -1
  37. package/x/lib/input/data/intent/minihash.d.ts +1 -0
  38. package/x/lib/input/data/intent/minihash.js +4 -0
  39. package/x/lib/input/data/intent/minihash.js.map +1 -0
  40. package/x/lib/input/decoder.d.ts +1 -1
  41. package/x/lib/input/decoder.js +2 -2
  42. package/x/lib/input/decoder.js.map +1 -1
  43. package/x/lib/input/evaluate/context.d.ts +3 -1
  44. package/x/lib/input/evaluate/context.js.map +1 -1
  45. package/x/lib/input/evaluate/evaluate.js +24 -11
  46. package/x/lib/input/evaluate/evaluate.js.map +1 -1
  47. package/x/lib/input/investigate/hash-bindings.d.ts +1 -1
  48. package/x/lib/input/investigate/hash-bindings.js +5 -3
  49. package/x/lib/input/investigate/hash-bindings.js.map +1 -1
  50. package/x/lib/input/investigate/investigate.d.ts +2 -1
  51. package/x/lib/input/investigate/investigate.js +14 -9
  52. package/x/lib/input/investigate/investigate.js.map +1 -1
  53. package/x/lib/input/test.d.ts +4 -2
  54. package/x/lib/input/test.js +49 -22
  55. package/x/lib/input/test.js.map +1 -1
  56. package/x/lib/input/testing/quickbind.d.ts +3 -2
  57. package/x/lib/input/testing/quickbind.js +3 -3
  58. package/x/lib/input/testing/quickbind.js.map +1 -1
  59. package/x/lib/ui/deck/auto-gamepads.js +1 -0
  60. package/x/lib/ui/deck/auto-gamepads.js.map +1 -1
  61. package/x/lib/ui/deck/collector.js +2 -2
  62. package/x/lib/ui/deck/collector.js.map +1 -1
  63. package/x/lib/ui/deck/hub.js +4 -3
  64. package/x/lib/ui/deck/hub.js.map +1 -1
  65. package/x/lib/ui/deck/setup/deck.js +23 -13
  66. package/x/lib/ui/deck/setup/deck.js.map +1 -1
  67. package/x/lib/ui/deck/setup/tact.d.ts +2 -2
  68. package/x/lib/ui/deck/setup/tact.js +15 -8
  69. package/x/lib/ui/deck/setup/tact.js.map +1 -1
  70. package/x/lib/ui/deck/setup/types.d.ts +1 -0
  71. package/x/lib/ui/deck/setup/utils/broadcast-channel.d.ts +4 -0
  72. package/x/lib/ui/deck/setup/utils/broadcast-channel.js +10 -0
  73. package/x/lib/ui/deck/setup/utils/broadcast-channel.js.map +1 -0
  74. package/x/lib/ui/deck/setup/utils/kv.d.ts +5 -0
  75. package/x/lib/ui/deck/setup/utils/kv.js +12 -0
  76. package/x/lib/ui/deck/setup/utils/kv.js.map +1 -0
  77. package/x/lib/ui/deck/types.d.ts +1 -0
  78. package/x/lib/ui/views/customize/view.js +3 -3
  79. package/x/lib/ui/views/customize/view.js.map +1 -1
  80. package/x/lib/utils/hash.d.ts +1 -0
  81. package/x/lib/utils/hash.js +47 -0
  82. package/x/lib/utils/hash.js.map +1 -0
@@ -1,6 +1,6 @@
1
1
  import { RMap } from "@e280/strata";
2
2
  import { guarantee } from "@e280/stz";
3
- import { InputDecoder } from "../../input/decoder.js";
3
+ import { Decoder } from "../../input/decoder.js";
4
4
  import { decodeParcels } from "../../input/data/parcel/decode.js";
5
5
  export class Collector {
6
6
  #bindings;
@@ -15,7 +15,7 @@ export class Collector {
15
15
  }));
16
16
  }
17
17
  #getDecoder(playerId) {
18
- return guarantee(this.#decoders, playerId, () => new InputDecoder(this.#bindings));
18
+ return guarantee(this.#decoders, playerId, () => new Decoder(this.#bindings));
19
19
  }
20
20
  decodeAll(...buffers) {
21
21
  const grouped = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"collector.js","sourceRoot":"","sources":["../../../../s/lib/ui/deck/collector.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,cAAc,CAAA;AACjC,OAAO,EAAC,SAAS,EAAC,MAAM,WAAW,CAAA;AAInC,OAAO,EAAC,YAAY,EAAC,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAC,aAAa,EAAC,MAAM,mCAAmC,CAAA;AAE/D,MAAM,OAAO,SAAS;IACrB,SAAS,CAAG;IACZ,SAAS,GAAG,IAAI,IAAI,EAA6B,CAAA;IAEjD,YAAY,QAAW;QACtB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAED,IAAI,OAAO;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YACxD,QAAQ;YACR,MAAM,EAAE,OAAO,CAAC,MAAM;SACtB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,WAAW,CAAC,QAAkB;QAC7B,OAAO,SAAS,CACf,IAAI,CAAC,SAAS,EACd,QAAQ,EACR,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CACtC,CAAA;IACF,CAAC;IAED,SAAS,CAAC,GAAG,OAAsB;QAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAA;QAElD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC9B,KAAK,MAAM,EAAC,QAAQ,EAAE,OAAO,EAAC,IAAI,aAAa,CAAC,MAAM,CAAC;gBACtD,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACtD,CAAC;QAED,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,OAAO;YACxC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAA;QAE9C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACzB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACjC,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAA;IACpB,CAAC;CACD"}
1
+ {"version":3,"file":"collector.js","sourceRoot":"","sources":["../../../../s/lib/ui/deck/collector.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,cAAc,CAAA;AACjC,OAAO,EAAC,SAAS,EAAC,MAAM,WAAW,CAAA;AAInC,OAAO,EAAC,OAAO,EAAC,MAAM,wBAAwB,CAAA;AAC9C,OAAO,EAAC,aAAa,EAAC,MAAM,mCAAmC,CAAA;AAE/D,MAAM,OAAO,SAAS;IACrB,SAAS,CAAG;IACZ,SAAS,GAAG,IAAI,IAAI,EAAwB,CAAA;IAE5C,YAAY,QAAW;QACtB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAED,IAAI,OAAO;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YACxD,QAAQ;YACR,MAAM,EAAE,OAAO,CAAC,MAAM;SACtB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,WAAW,CAAC,QAAkB;QAC7B,OAAO,SAAS,CACf,IAAI,CAAC,SAAS,EACd,QAAQ,EACR,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CACjC,CAAA;IACF,CAAC;IAED,SAAS,CAAC,GAAG,OAAsB;QAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAA;QAElD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC9B,KAAK,MAAM,EAAC,QAAQ,EAAE,OAAO,EAAC,IAAI,aAAa,CAAC,MAAM,CAAC;gBACtD,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACtD,CAAC;QAED,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,OAAO;YACxC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAA;QAE9C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACzB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACjC,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAA;IACpB,CAAC;CACD"}
@@ -1,17 +1,18 @@
1
1
  import { RMap, RSet } from "@e280/strata";
2
2
  import { got, IdCounter } from "@e280/stz";
3
+ import { minihash } from "../../input/data/intent/minihash.js";
3
4
  import { encodeParcels } from "../../input/data/parcel/encode.js";
4
5
  import { encodeIntents } from "../../input/data/intent/encode.js";
5
6
  import { hashBindings } from "../../input/investigate/hash-bindings.js";
6
7
  export class Hub {
7
8
  bindings;
8
- #hash;
9
+ #minihash;
9
10
  #ids = new IdCounter();
10
11
  #unassigned = new RSet();
11
12
  #players = new RMap();
12
13
  constructor(bindings) {
13
14
  this.bindings = bindings;
14
- this.#hash = hashBindings(bindings);
15
+ this.#minihash = minihash(hashBindings(bindings));
15
16
  }
16
17
  get playerIds() {
17
18
  return [...this.#players.keys()];
@@ -67,7 +68,7 @@ export class Hub {
67
68
  const changedIntents = [...intents]
68
69
  .filter(([, value]) => value !== 0)
69
70
  .map(([id, value]) => ({ id, value }));
70
- return encodeIntents(this.#hash, changedIntents);
71
+ return encodeIntents(this.#minihash, changedIntents);
71
72
  }
72
73
  encodeAll(time = performance.now()) {
73
74
  // drain and discard unused controller inputs.
@@ -1 +1 @@
1
- {"version":3,"file":"hub.js","sourceRoot":"","sources":["../../../../s/lib/ui/deck/hub.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hub.js","sourceRoot":"","sources":["../../../../s/lib/ui/deck/hub.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,30 @@
1
- import { IdbMagazine, idbOpen, Kv } from "@e280/kv";
1
+ import { disposer, ev } from "@e280/stz";
2
2
  import { Hub } from "../hub.js";
3
3
  import { asDeck } from "../types.js";
4
+ import { setupKv } from "./utils/kv.js";
4
5
  import { Controls } from "../controls/controls.js";
5
6
  import { firstPreset } from "../utils/first-preset.js";
7
+ import { setupBroadcastChannel } from "./utils/broadcast-channel.js";
6
8
  export async function setupDeck(params) {
7
- const kv = params.kv
8
- ?? new Kv(new IdbMagazine(await idbOpen("tact", "kv")));
9
- const broadcastChannel = params.broadcastChannel
10
- ?? new BroadcastChannel("tact");
11
- const { maxPlayers } = params;
12
- const { bindings } = firstPreset(params.presets).profile;
13
- const hub = new Hub(bindings);
14
- const controls = new Controls({ ...params, kv });
15
- await controls.load();
16
- broadcastChannel.onmessage = () => controls.load();
17
- controls.on(() => broadcastChannel.postMessage({}));
18
- return asDeck({ hub, controls, maxPlayers });
9
+ const { dispose, schedule, disposable } = disposer();
10
+ const namespace = params.namespace
11
+ ? `tact_${params.namespace}`
12
+ : "tact";
13
+ const { kv } = disposable(await setupKv(namespace, params.kv));
14
+ const { broadcastChannel } = disposable(await setupBroadcastChannel(namespace, params.broadcastChannel));
15
+ try {
16
+ const { maxPlayers } = params;
17
+ const { bindings } = firstPreset(params.presets).profile;
18
+ const hub = new Hub(bindings);
19
+ const controls = new Controls({ ...params, kv });
20
+ schedule(ev(broadcastChannel, { message: () => controls.load() }));
21
+ schedule(controls.on(() => broadcastChannel.postMessage({})));
22
+ await controls.load();
23
+ return asDeck({ hub, controls, maxPlayers, dispose });
24
+ }
25
+ catch (error) {
26
+ dispose();
27
+ throw error;
28
+ }
19
29
  }
20
30
  //# sourceMappingURL=deck.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deck.js","sourceRoot":"","sources":["../../../../../s/lib/ui/deck/setup/deck.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAE,OAAO,EAAE,EAAE,EAAC,MAAM,UAAU,CAAA;AAEjD,OAAO,EAAC,GAAG,EAAC,MAAM,WAAW,CAAA;AAC7B,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAA;AAElC,OAAO,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAA;AAEhD,OAAO,EAAC,WAAW,EAAC,MAAM,0BAA0B,CAAA;AAEpD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAqB,MAAsB;IACzE,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE;WAChB,IAAI,EAAE,CAAC,IAAI,WAAW,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;IAExD,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB;WAC5C,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAEhC,MAAM,EAAC,UAAU,EAAC,GAAG,MAAM,CAAA;IAC3B,MAAM,EAAC,QAAQ,EAAC,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAA;IAEtD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC7B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAC,GAAG,MAAM,EAAE,EAAE,EAAC,CAAC,CAAA;IAE9C,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAErB,gBAAgB,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;IAClD,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAA;IAEnD,OAAO,MAAM,CAAC,EAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAC,CAAC,CAAA;AAC3C,CAAC"}
1
+ {"version":3,"file":"deck.js","sourceRoot":"","sources":["../../../../../s/lib/ui/deck/setup/deck.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAE,EAAE,EAAC,MAAM,WAAW,CAAA;AACtC,OAAO,EAAC,GAAG,EAAC,MAAM,WAAW,CAAA;AAC7B,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAA;AAClC,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAA;AAErC,OAAO,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAA;AAEhD,OAAO,EAAC,WAAW,EAAC,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAC,qBAAqB,EAAC,MAAM,8BAA8B,CAAA;AAElE,MAAM,CAAC,KAAK,UAAU,SAAS,CAAqB,MAAsB;IACzE,MAAM,EAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAC,GAAG,QAAQ,EAAE,CAAA;IAElD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS;QACjC,CAAC,CAAC,QAAQ,MAAM,CAAC,SAAS,EAAE;QAC5B,CAAC,CAAC,MAAM,CAAA;IAET,MAAM,EAAC,EAAE,EAAC,GAAG,UAAU,CACtB,MAAM,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,CACnC,CAAA;IAED,MAAM,EAAC,gBAAgB,EAAC,GAAG,UAAU,CACpC,MAAM,qBAAqB,CAAC,SAAS,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAC/D,CAAA;IAED,IAAI,CAAC;QACJ,MAAM,EAAC,UAAU,EAAC,GAAG,MAAM,CAAA;QAC3B,MAAM,EAAC,QAAQ,EAAC,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAA;QACtD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC7B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAC,GAAG,MAAM,EAAE,EAAE,EAAC,CAAC,CAAA;QAE9C,QAAQ,CAAC,EAAE,CAAC,gBAAgB,EAAE,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAC,CAAC,CAAC,CAAA;QAChE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAE7D,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QACrB,OAAO,MAAM,CAAC,EAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAC,CAAC,CAAA;IACpD,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACd,OAAO,EAAE,CAAA;QACT,MAAM,KAAK,CAAA;IACZ,CAAC;AACF,CAAC"}
@@ -1,11 +1,9 @@
1
1
  import { SetupParams } from "./types.js";
2
- import { Collector } from "../collector.js";
3
2
  import { Bindings } from "../../../input/types.js";
4
3
  import { Controller } from "../../../input/controller.js";
5
4
  import { Visualizer } from "../../views/visualizer/visualizer.js";
6
5
  export declare function setupTact<B extends Bindings>(params: SetupParams<B>): Promise<{
7
6
  deck: import("../types.js").Deck<B>;
8
- collector: Collector<B>;
9
7
  gamepads: (defaultProfileKey?: string) => () => void;
10
8
  mouseKeyboard: () => Controller<B>;
11
9
  visualizer: Visualizer;
@@ -16,4 +14,6 @@ export declare function setupTact<B extends Bindings>(params: SetupParams<B>): P
16
14
  TactVisualizer: new () => HTMLElement;
17
15
  };
18
16
  registerElements: () => void;
17
+ encodeAll: (time?: number) => ArrayBuffer;
18
+ dispose: () => void;
19
19
  }>;
@@ -1,6 +1,6 @@
1
+ import { disposer } from "@e280/stz";
1
2
  import { register } from "@e280/sly";
2
3
  import { setupDeck } from "./deck.js";
3
- import { Collector } from "../collector.js";
4
4
  import { autoGamepads } from "../auto-gamepads.js";
5
5
  import { ellipsis } from "../../../utils/ellipsis.js";
6
6
  import { firstPreset } from "../utils/first-preset.js";
@@ -16,9 +16,9 @@ import { makeControllersElement } from "../../views/controllers/view.js";
16
16
  import devicesSvg from "../../icons/akar/devices.svg.js";
17
17
  import gameControllerSvg from "../../icons/akar/game-controller.svg.js";
18
18
  export async function setupTact(params) {
19
- const deck = await setupDeck(params);
19
+ const { dispose, schedule, disposable } = disposer();
20
+ const deck = disposable(await setupDeck(params));
20
21
  const first = firstPreset(deck.controls.presets);
21
- const collector = new Collector(first.profile.bindings);
22
22
  const visualizer = new Visualizer();
23
23
  const elements = {
24
24
  TactDeck: makeDeckElement(deck),
@@ -27,7 +27,7 @@ export async function setupTact(params) {
27
27
  TactVisualizer: makeVisualizerElement(visualizer),
28
28
  };
29
29
  function gamepads(defaultProfileKey) {
30
- return autoGamepads(deck.hub, (controller, source) => {
30
+ const stop = autoGamepads(deck.hub, (controller, source) => {
31
31
  const handle = `${source.pad.gamepad.id} ${source.pad.gamepad.index + 1}`;
32
32
  deck.controls.attach(controller, {
33
33
  icon: gameControllerSvg,
@@ -38,13 +38,15 @@ export async function setupTact(params) {
38
38
  });
39
39
  return () => deck.controls.detach(controller);
40
40
  });
41
+ schedule(stop);
42
+ return stop;
41
43
  }
42
44
  function mouseKeyboard() {
43
45
  const { key, profile } = first;
44
- const controller = new Controller({
46
+ const controller = disposable(new Controller({
45
47
  bindings: profile.bindings,
46
- source: new Sources(new KeyboardSource(), new PointerSource()),
47
- });
48
+ source: disposable(new Sources(disposable(new KeyboardSource()), disposable(new PointerSource()))),
49
+ }));
48
50
  deck.hub.plug(controller);
49
51
  deck.controls.attach(controller, {
50
52
  icon: devicesSvg,
@@ -53,6 +55,10 @@ export async function setupTact(params) {
53
55
  tooltip: "",
54
56
  defaultProfileKey: key,
55
57
  });
58
+ schedule(() => {
59
+ deck.hub.remove(controller);
60
+ deck.controls.detach(controller);
61
+ });
56
62
  return controller;
57
63
  }
58
64
  function registerElements() {
@@ -60,12 +66,13 @@ export async function setupTact(params) {
60
66
  }
61
67
  return {
62
68
  deck,
63
- collector,
64
69
  gamepads,
65
70
  mouseKeyboard,
66
71
  visualizer,
67
72
  elements,
68
73
  registerElements,
74
+ encodeAll: deck.hub.encodeAll.bind(deck.hub),
75
+ dispose,
69
76
  };
70
77
  }
71
78
  //# sourceMappingURL=tact.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tact.js","sourceRoot":"","sources":["../../../../../s/lib/ui/deck/setup/tact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tact.js","sourceRoot":"","sources":["../../../../../s/lib/ui/deck/setup/tact.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { Bindings } from "../../../input/types.js";
4
4
  export type SetupParams<B extends Bindings> = {
5
5
  maxPlayers: number;
6
6
  presets: Presets<B>;
7
+ namespace?: string;
7
8
  kv?: Kv;
8
9
  broadcastChannel?: BroadcastChannel;
9
10
  };
@@ -0,0 +1,4 @@
1
+ export declare function setupBroadcastChannel(namespace: string, broadcastChannel: BroadcastChannel | undefined): Promise<{
2
+ broadcastChannel: BroadcastChannel;
3
+ dispose: () => void;
4
+ }>;
@@ -0,0 +1,10 @@
1
+ export async function setupBroadcastChannel(namespace, broadcastChannel) {
2
+ let dispose = () => { };
3
+ if (!broadcastChannel) {
4
+ const bc = new BroadcastChannel(namespace);
5
+ broadcastChannel = bc;
6
+ dispose = () => bc.close();
7
+ }
8
+ return { broadcastChannel, dispose };
9
+ }
10
+ //# sourceMappingURL=broadcast-channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broadcast-channel.js","sourceRoot":"","sources":["../../../../../../s/lib/ui/deck/setup/utils/broadcast-channel.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,SAAiB,EACjB,gBAA8C;IAG/C,IAAI,OAAO,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;IAEtB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAA;QAC1C,gBAAgB,GAAG,EAAE,CAAA;QACrB,OAAO,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;IAC3B,CAAC;IAED,OAAO,EAAC,gBAAgB,EAAE,OAAO,EAAC,CAAA;AACnC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Kv } from "@e280/kv";
2
+ export declare function setupKv(namespace: string, kv: Kv | undefined): Promise<{
3
+ kv: Kv<unknown>;
4
+ dispose: () => void;
5
+ }>;
@@ -0,0 +1,12 @@
1
+ import { IdbMagazine, idbOpen, Kv } from "@e280/kv";
2
+ export async function setupKv(namespace, kv) {
3
+ let dispose = () => { };
4
+ if (!kv) {
5
+ const idb = await idbOpen(namespace, "kv");
6
+ const magazine = new IdbMagazine(idb);
7
+ kv = new Kv(magazine);
8
+ dispose = () => idb.db.close();
9
+ }
10
+ return { kv, dispose };
11
+ }
12
+ //# sourceMappingURL=kv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kv.js","sourceRoot":"","sources":["../../../../../../s/lib/ui/deck/setup/utils/kv.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAE,OAAO,EAAE,EAAE,EAAC,MAAM,UAAU,CAAA;AAEjD,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,SAAiB,EACjB,EAAkB;IAGnB,IAAI,OAAO,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;IAEtB,IAAI,CAAC,EAAE,EAAE,CAAC;QACT,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;QAC1C,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAA;QACrC,EAAE,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAA;QACrB,OAAO,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;IAC/B,CAAC;IAED,OAAO,EAAC,EAAE,EAAE,OAAO,EAAC,CAAA;AACrB,CAAC"}
@@ -13,6 +13,7 @@ export type Deck<B extends Bindings = any> = {
13
13
  hub: Hub<B>;
14
14
  maxPlayers: number;
15
15
  controls: Controls<B>;
16
+ dispose: () => void;
16
17
  };
17
18
  export declare const asDeck: <B extends Bindings>(deck: Deck<B>) => Deck<B>;
18
19
  export declare const asPresets: <B extends Bindings>(presets: Presets<B>) => Presets<B>;
@@ -17,15 +17,15 @@ export const [CustomizeView, makeCustomizeElement] = shadowDuplex((options) => {
17
17
  const baseline = profile.basedOn
18
18
  ? profiles.get(profile.basedOn)
19
19
  : profile;
20
- const updateBindings = (bindings) => {
20
+ const updateBindings = async (bindings) => {
21
21
  let key = $profileKey();
22
22
  if (profiles.isPreset(key)) {
23
23
  const basedOn = key;
24
24
  const freshKey = makeId();
25
25
  key = freshKey;
26
- profiles.clone(freshKey, basedOn);
26
+ await profiles.clone(freshKey, basedOn);
27
27
  }
28
- profiles.update(key, { bindings });
28
+ await profiles.update(key, { bindings });
29
29
  $profileKey(key);
30
30
  };
31
31
  const updateLabel = (profileKey, label) => profiles.update(profileKey, { label });
@@ -1 +1 @@
1
- {"version":3,"file":"view.js","sourceRoot":"","sources":["../../../../../s/lib/ui/views/customize/view.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../../../../s/lib/ui/views/customize/view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function hash(...entropy: (string | number | Uint8Array)[]): Uint8Array;
@@ -0,0 +1,47 @@
1
+ import { blake3 } from "@awasm/noble/js.js";
2
+ import { dataViewFrom, txt } from "@e280/stz";
3
+ const endian = false;
4
+ var EntropyType;
5
+ (function (EntropyType) {
6
+ EntropyType[EntropyType["String"] = 0] = "String";
7
+ EntropyType[EntropyType["Number"] = 1] = "Number";
8
+ EntropyType[EntropyType["Bytes"] = 2] = "Bytes";
9
+ })(EntropyType || (EntropyType = {}));
10
+ export function hash(...entropy) {
11
+ if (entropy.length === 0)
12
+ throw new RangeError("hash requires entropy");
13
+ const hasher = blake3.create();
14
+ const typeTag = new Uint8Array(1);
15
+ const lengthTag = new Uint8Array(4);
16
+ const lengthDataview = dataViewFrom(lengthTag);
17
+ for (const part of entropy) {
18
+ if (typeof part === "string") {
19
+ const bytes = txt.toBytes(part);
20
+ typeTag[0] = EntropyType.String;
21
+ lengthDataview.setUint32(0, bytes.byteLength, endian);
22
+ hasher.update(typeTag);
23
+ hasher.update(lengthTag);
24
+ hasher.update(bytes);
25
+ }
26
+ else if (typeof part === "number") {
27
+ const bytes = new Uint8Array(8);
28
+ dataViewFrom(bytes).setFloat64(0, part, endian);
29
+ typeTag[0] = EntropyType.Number;
30
+ lengthDataview.setUint32(0, bytes.byteLength, endian);
31
+ hasher.update(typeTag);
32
+ hasher.update(lengthTag);
33
+ hasher.update(bytes);
34
+ }
35
+ else if (part instanceof Uint8Array) {
36
+ typeTag[0] = EntropyType.Bytes;
37
+ lengthDataview.setUint32(0, part.byteLength, endian);
38
+ hasher.update(typeTag);
39
+ hasher.update(lengthTag);
40
+ hasher.update(part);
41
+ }
42
+ else
43
+ throw new Error("unknown part type");
44
+ }
45
+ return hasher.digest();
46
+ }
47
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../s/lib/utils/hash.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,oBAAoB,CAAA;AACzC,OAAO,EAAC,YAAY,EAAE,GAAG,EAAC,MAAM,WAAW,CAAA;AAE3C,MAAM,MAAM,GAAG,KAAK,CAAA;AACpB,IAAK,WAAmC;AAAxC,WAAK,WAAW;IAAE,iDAAM,CAAA;IAAE,iDAAM,CAAA;IAAE,+CAAK,CAAA;AAAA,CAAC,EAAnC,WAAW,KAAX,WAAW,QAAwB;AAExC,MAAM,UAAU,IAAI,CAAC,GAAG,OAAyC;IAChE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QACvB,MAAM,IAAI,UAAU,CAAC,uBAAuB,CAAC,CAAA;IAE9C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAA;IAC9B,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAA;IACjC,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAA;IACnC,MAAM,cAAc,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;IAE9C,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAC/B,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAA;YAC/B,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;YACrD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACtB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YACxB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACrB,CAAC;aACI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAA;YAC/B,YAAY,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;YAC/C,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAA;YAC/B,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;YACrD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACtB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YACxB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACrB,CAAC;aACI,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;YACrC,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,CAAA;YAC9B,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;YACpD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACtB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YACxB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACpB,CAAC;;YACI,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;IAC1C,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,EAAgB,CAAA;AACrC,CAAC"}