@rydr/game-sdk 7.0.1 → 7.1.0

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 (95) hide show
  1. package/README.md +19 -0
  2. package/dist/protocol/glyphs.d.ts +7 -0
  3. package/dist/protocol/glyphs.d.ts.map +1 -1
  4. package/dist/protocol/glyphs.js +26 -0
  5. package/dist/protocol/glyphs.js.map +1 -1
  6. package/dist/protocol/version.d.ts +1 -1
  7. package/dist/protocol/version.js +1 -1
  8. package/dist/ui/README.md +119 -0
  9. package/dist/ui/controller/combo-demo.d.ts +74 -0
  10. package/dist/ui/controller/combo-demo.d.ts.map +1 -0
  11. package/dist/ui/controller/combo-demo.js +295 -0
  12. package/dist/ui/controller/combo-demo.js.map +1 -0
  13. package/dist/ui/controller/combo-strip.d.ts +36 -0
  14. package/dist/ui/controller/combo-strip.d.ts.map +1 -0
  15. package/dist/ui/controller/combo-strip.js +66 -0
  16. package/dist/ui/controller/combo-strip.js.map +1 -0
  17. package/dist/ui/controller/control-trainer.d.ts +132 -0
  18. package/dist/ui/controller/control-trainer.d.ts.map +1 -0
  19. package/dist/ui/controller/control-trainer.js +570 -0
  20. package/dist/ui/controller/control-trainer.js.map +1 -0
  21. package/dist/ui/controller/controller-map.d.ts +82 -0
  22. package/dist/ui/controller/controller-map.d.ts.map +1 -0
  23. package/dist/ui/controller/controller-map.js +291 -0
  24. package/dist/ui/controller/controller-map.js.map +1 -0
  25. package/dist/ui/controller/controller-pad.d.ts +122 -0
  26. package/dist/ui/controller/controller-pad.d.ts.map +1 -0
  27. package/dist/ui/controller/controller-pad.js +200 -0
  28. package/dist/ui/controller/controller-pad.js.map +1 -0
  29. package/dist/ui/controller/index.d.ts +26 -0
  30. package/dist/ui/controller/index.d.ts.map +1 -0
  31. package/dist/ui/controller/index.js +26 -0
  32. package/dist/ui/controller/index.js.map +1 -0
  33. package/dist/ui/controller/input-chip.d.ts +100 -0
  34. package/dist/ui/controller/input-chip.d.ts.map +1 -0
  35. package/dist/ui/controller/input-chip.js +322 -0
  36. package/dist/ui/controller/input-chip.js.map +1 -0
  37. package/dist/ui/controller/layouts/dualsense.d.ts +12 -0
  38. package/dist/ui/controller/layouts/dualsense.d.ts.map +1 -0
  39. package/dist/ui/controller/layouts/dualsense.js +64 -0
  40. package/dist/ui/controller/layouts/dualsense.js.map +1 -0
  41. package/dist/ui/controller/layouts/index.d.ts +20 -0
  42. package/dist/ui/controller/layouts/index.d.ts.map +1 -0
  43. package/dist/ui/controller/layouts/index.js +34 -0
  44. package/dist/ui/controller/layouts/index.js.map +1 -0
  45. package/dist/ui/controller/layouts/joycon.d.ts +21 -0
  46. package/dist/ui/controller/layouts/joycon.d.ts.map +1 -0
  47. package/dist/ui/controller/layouts/joycon.js +76 -0
  48. package/dist/ui/controller/layouts/joycon.js.map +1 -0
  49. package/dist/ui/controller/layouts/switch-pro.d.ts +12 -0
  50. package/dist/ui/controller/layouts/switch-pro.d.ts.map +1 -0
  51. package/dist/ui/controller/layouts/switch-pro.js +60 -0
  52. package/dist/ui/controller/layouts/switch-pro.js.map +1 -0
  53. package/dist/ui/controller/layouts/xbox.d.ts +11 -0
  54. package/dist/ui/controller/layouts/xbox.d.ts.map +1 -0
  55. package/dist/ui/controller/layouts/xbox.js +59 -0
  56. package/dist/ui/controller/layouts/xbox.js.map +1 -0
  57. package/dist/ui/controller/layouts/zwift.d.ts +27 -0
  58. package/dist/ui/controller/layouts/zwift.d.ts.map +1 -0
  59. package/dist/ui/controller/layouts/zwift.js +62 -0
  60. package/dist/ui/controller/layouts/zwift.js.map +1 -0
  61. package/dist/ui/controller/pad-svg.d.ts +105 -0
  62. package/dist/ui/controller/pad-svg.d.ts.map +1 -0
  63. package/dist/ui/controller/pad-svg.js +289 -0
  64. package/dist/ui/controller/pad-svg.js.map +1 -0
  65. package/dist/ui/controller/parts-map.d.ts +96 -0
  66. package/dist/ui/controller/parts-map.d.ts.map +1 -0
  67. package/dist/ui/controller/parts-map.js +187 -0
  68. package/dist/ui/controller/parts-map.js.map +1 -0
  69. package/dist/ui/controller/styles.d.ts +19 -0
  70. package/dist/ui/controller/styles.d.ts.map +1 -0
  71. package/dist/ui/controller/styles.js +364 -0
  72. package/dist/ui/controller/styles.js.map +1 -0
  73. package/dist/ui/controller/tokens.d.ts +106 -0
  74. package/dist/ui/controller/tokens.d.ts.map +1 -0
  75. package/dist/ui/controller/tokens.js +50 -0
  76. package/dist/ui/controller/tokens.js.map +1 -0
  77. package/dist/ui/controller/types.d.ts +157 -0
  78. package/dist/ui/controller/types.d.ts.map +1 -0
  79. package/dist/ui/controller/types.js +61 -0
  80. package/dist/ui/controller/types.js.map +1 -0
  81. package/dist/ui/index.d.ts +8 -0
  82. package/dist/ui/index.d.ts.map +1 -1
  83. package/dist/ui/index.js +8 -0
  84. package/dist/ui/index.js.map +1 -1
  85. package/dist/ui/keycap.d.ts +14 -0
  86. package/dist/ui/keycap.d.ts.map +1 -1
  87. package/dist/ui/keycap.js +5 -0
  88. package/dist/ui/keycap.js.map +1 -1
  89. package/dist/ui/showcase/gallery.d.ts +13 -1
  90. package/dist/ui/showcase/gallery.d.ts.map +1 -1
  91. package/dist/ui/showcase/gallery.js.map +1 -1
  92. package/dist/ui/showcase/index.d.ts.map +1 -1
  93. package/dist/ui/showcase/index.js +257 -1
  94. package/dist/ui/showcase/index.js.map +1 -1
  95. package/package.json +1 -1
@@ -0,0 +1,36 @@
1
+ /**
2
+ * COMBO STRIP — the row of chips that says what to press for one action.
3
+ *
4
+ * [L2] + [✕] two controls held together (the default)
5
+ * [L2] → [✕] two controls in order (`action.sequence`)
6
+ * [stick◀] one control
7
+ *
8
+ * This is the "combination" half of a callout card, and the demo drives the same object, so the static
9
+ * legend and the animated tutorial can never disagree about what a combination looks like.
10
+ *
11
+ * Addressing is by INDEX rather than by token, because a combination may legitimately repeat a control
12
+ * (a double-tap sequence is `["DIAMOND_DOWN", "DIAMOND_DOWN"]`) and a token lookup would drive both
13
+ * chips at once. `setPressed(token, …)` exists for convenience and hits the first match.
14
+ */
15
+ import { type InputChip, type InputChipOptions } from "./input-chip.js";
16
+ import type { ComboToken, ControlAction } from "./tokens.js";
17
+ export interface ComboStrip {
18
+ readonly el: HTMLElement;
19
+ readonly tokens: readonly ComboToken[];
20
+ readonly chips: readonly InputChip[];
21
+ /** Press/release the chip at `index`. Out-of-range indices are ignored. */
22
+ setPressedAt(index: number, on: boolean): void;
23
+ /** Press/release the FIRST chip carrying `token`. */
24
+ setPressed(token: ComboToken, on: boolean): void;
25
+ setAllPressed(on: boolean): void;
26
+ /** Deflect the stick chip at `index` (no-op on other chip kinds). Convention: right = +1, up = +1. */
27
+ setDeflectionAt(index: number, x: number, y: number): void;
28
+ /**
29
+ * In a sequence, mark separators before `step` as done so the eye can follow the progression.
30
+ * `-1` clears. No effect on a simultaneous combo, which has no ordering to show.
31
+ */
32
+ setStep(step: number): void;
33
+ dispose(): void;
34
+ }
35
+ export declare function createComboStrip(action: ControlAction, opts?: InputChipOptions): ComboStrip;
36
+ //# sourceMappingURL=combo-strip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combo-strip.d.ts","sourceRoot":"","sources":["../../../src/ui/controller/combo-strip.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAmB,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEzF,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE7D,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;IACrC,2EAA2E;IAC3E,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/C,qDAAqD;IACrD,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;IACjD,aAAa,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,sGAAsG;IACtG,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3D;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,GAAE,gBAAqB,GAAG,UAAU,CAiD/F"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * COMBO STRIP — the row of chips that says what to press for one action.
3
+ *
4
+ * [L2] + [✕] two controls held together (the default)
5
+ * [L2] → [✕] two controls in order (`action.sequence`)
6
+ * [stick◀] one control
7
+ *
8
+ * This is the "combination" half of a callout card, and the demo drives the same object, so the static
9
+ * legend and the animated tutorial can never disagree about what a combination looks like.
10
+ *
11
+ * Addressing is by INDEX rather than by token, because a combination may legitimately repeat a control
12
+ * (a double-tap sequence is `["DIAMOND_DOWN", "DIAMOND_DOWN"]`) and a token lookup would drive both
13
+ * chips at once. `setPressed(token, …)` exists for convenience and hits the first match.
14
+ */
15
+ import { createInputChip } from "./input-chip.js";
16
+ import { injectPadCss } from "./styles.js";
17
+ export function createComboStrip(action, opts = {}) {
18
+ injectPadCss();
19
+ const el = document.createElement("span");
20
+ el.className = "rydr-pad-strip";
21
+ const tokens = [...action.combo];
22
+ const chips = [];
23
+ const seps = [];
24
+ tokens.forEach((token, i) => {
25
+ if (i > 0) {
26
+ const sep = document.createElement("span");
27
+ sep.className = "rydr-pad-strip-sep";
28
+ // "+" = at the same time, "→" = then. The glyph is the whole explanation.
29
+ sep.textContent = action.sequence ? "→" : "+";
30
+ el.appendChild(sep);
31
+ seps.push(sep);
32
+ }
33
+ const chip = createInputChip(token, opts);
34
+ chips.push(chip);
35
+ el.appendChild(chip.el);
36
+ });
37
+ const setPressedAt = (index, on) => chips[index]?.setPressed(on);
38
+ return {
39
+ el,
40
+ tokens,
41
+ chips,
42
+ setPressedAt,
43
+ setPressed(token, on) {
44
+ const i = tokens.indexOf(token);
45
+ if (i >= 0)
46
+ setPressedAt(i, on);
47
+ },
48
+ setAllPressed(on) {
49
+ for (const chip of chips)
50
+ chip.setPressed(on);
51
+ },
52
+ setDeflectionAt(index, x, y) {
53
+ chips[index]?.setDeflection(x, y);
54
+ },
55
+ setStep(step) {
56
+ // Separator i sits between chip i and chip i+1, so it is "done" once step has passed chip i+1.
57
+ seps.forEach((sep, i) => sep.classList.toggle("done", action.sequence === true && step > i));
58
+ },
59
+ dispose() {
60
+ for (const chip of chips)
61
+ chip.dispose();
62
+ el.remove();
63
+ },
64
+ };
65
+ }
66
+ //# sourceMappingURL=combo-strip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combo-strip.js","sourceRoot":"","sources":["../../../src/ui/controller/combo-strip.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,eAAe,EAAyC,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAsB3C,MAAM,UAAU,gBAAgB,CAAC,MAAqB,EAAE,OAAyB,EAAE;IACjF,YAAY,EAAE,CAAC;IACf,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,EAAE,CAAC,SAAS,GAAG,gBAAgB,CAAC;IAEhC,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAkB,EAAE,CAAC;IAE/B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAC1B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACV,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC3C,GAAG,CAAC,SAAS,GAAG,oBAAoB,CAAC;YACrC,0EAA0E;YAC1E,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAC9C,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;QACD,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAA+B,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;IAE7F,OAAO;QACL,EAAE;QACF,MAAM;QACN,KAAK;QACL,YAAY;QACZ,UAAU,CAAC,KAAK,EAAE,EAAE;YAClB,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC;gBAAE,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,aAAa,CAAC,EAAE;YACd,KAAK,MAAM,IAAI,IAAI,KAAK;gBAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,eAAe,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,CAAC,IAAI;YACV,+FAA+F;YAC/F,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/F,CAAC;QACD,OAAO;YACL,KAAK,MAAM,IAAI,IAAI,KAAK;gBAAE,IAAI,CAAC,OAAO,EAAE,CAAC;YACzC,EAAE,CAAC,MAAM,EAAE,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * CONTROL TRAINER — a guided lesson: "here's what to press; now you do it."
3
+ *
4
+ * Where {@link mountComboDemo} only *shows* a combination on a loop, this one **watches the rider** and
5
+ * gates on them actually performing it. It exists for the paired lessons where two related controls have
6
+ * to be taught together — the case that named it being the trainer resistance, which is one concept
7
+ * (`Changer la résistance`) with two opposite halves (`−` and `+`).
8
+ *
9
+ * ```ts
10
+ * mountControlTrainer(modalBody, {
11
+ * title: "Changer la résistance",
12
+ * press: shellInput,
13
+ * steps: [
14
+ * { label: "Réduire la résistance", combo: ["LSTICK_PRESS", "LB"] },
15
+ * { label: "Augmenter la résistance", combo: ["LSTICK_PRESS", "RB"] },
16
+ * ],
17
+ * onComplete: () => closeModal(),
18
+ * });
19
+ * ```
20
+ *
21
+ * Layout: the title, then one panel per step laid left → right, then **one shared controller drawing
22
+ * spanning the full width** underneath. Sharing the drawing is the point — both halves of the lesson are
23
+ * on the same physical pad, and seeing the left paddle and the right paddle light up on one picture is
24
+ * what teaches the pairing.
25
+ *
26
+ * Each step walks three states, and each one has to *look* like what it means:
27
+ *
28
+ * 1. **hint** — whitish, pulsing, on both the panel's chips and the pad's buttons. This is an
29
+ * instruction, so it must not look like a press; the pulse is what separates the two, since a solid
30
+ * fill is what a real press already looks like. The prompt shows **one step at a time, alternating**,
31
+ * and builds each combination up **cumulatively** — the first control lights, STAYS lit, and the next
32
+ * joins it a beat later. Prompting both halves at once would light four controls on one pad and read
33
+ * as "press all of this"; blinking them in turn would never show that they are held together.
34
+ * 2. **active** — the accent colour, and the pulse STOPS. The rider has started but the combination
35
+ * isn't complete yet: on a two-control step this is the state between the first control and the
36
+ * second.
37
+ * 3. **done** — the step's PANEL turns green and its ✓ pops, the moment the WHOLE combination is held.
38
+ * Holding all of it is doing it; there is nothing further to wait for, and it stays done whether or
39
+ * not the rider keeps the controls down.
40
+ *
41
+ * **The controller drawing is never green.** White and blue have already taught the rider that colour on
42
+ * the pad means *now*, so progress there would be a third colour breaking that rule — a green button
43
+ * beside a white one reads as "and this one too". Progress lives on the panels, whose chips picture the
44
+ * same combination one line up, so the confirmation still lands on the controls they just pressed. See
45
+ * `paint` for the two languages.
46
+ *
47
+ * When every step is done, `onComplete` fires after a short beat so the last ✓ is actually seen. The
48
+ * component does not close anything itself — it has no idea it's in a modal. The host owns that, exactly
49
+ * as with every other piece of this kit.
50
+ *
51
+ * ⚠️ **The resistance case needs a shell-side input source.** `LB`/`RB` are shell-owned: the
52
+ * SDK client turns those keys into `trainer.adjustResistance` intents and they never reach a game's
53
+ * `onButton` (see {@link ShellControl}). So a *game* can build a trainer for its own buttons, but a
54
+ * resistance lesson has to be driven by the shell, which is also the only place that lesson belongs.
55
+ */
56
+ import type { ButtonEdge } from "../../protocol/buttons.js";
57
+ import type { AxisName } from "../../protocol/buttons.js";
58
+ import type { GlyphSet } from "../../protocol/glyphs.js";
59
+ import { type ControllerPad } from "./controller-pad.js";
60
+ import type { StickPictogramStyle } from "./input-chip.js";
61
+ import { type ComboToken, type ControlName } from "./tokens.js";
62
+ import type { PadBrandKey } from "./types.js";
63
+ /**
64
+ * The input the lesson watches.
65
+ *
66
+ * Typed on {@link ControlName}, not `ButtonName`, so a shell-side source can report `LB`/`RB`.
67
+ * A `PlatformSession` satisfies it structurally and can drive any lesson made of game buttons.
68
+ */
69
+ export interface TrainerInputSource {
70
+ onButton(cb: (e: {
71
+ name: ControlName;
72
+ edge: ButtonEdge;
73
+ }) => void): () => void;
74
+ axis?(name: AxisName): number;
75
+ hardware?: {
76
+ current: {
77
+ glyphSet?: GlyphSet;
78
+ };
79
+ subscribe?(cb: (snapshot: {
80
+ glyphSet?: GlyphSet;
81
+ }) => void): () => void;
82
+ };
83
+ }
84
+ export interface TrainerStep {
85
+ /** What the rider has to do — the panel heading. */
86
+ label: string;
87
+ /** The controls that do it. Several tokens = they must all be engaged together. */
88
+ combo: readonly ComboToken[];
89
+ /** The controls must be engaged IN ORDER rather than together. */
90
+ sequence?: boolean;
91
+ /** A quieter line under the label. */
92
+ hint?: string;
93
+ /** Stable key, for `onStepComplete`. Falls back to `label`. */
94
+ id?: string;
95
+ }
96
+ export interface ControlTrainerOptions {
97
+ /** The one thing the lesson is about — e.g. "Changer la résistance". */
98
+ title: string;
99
+ /** One panel per step, laid left → right in the order given. */
100
+ steps: readonly TrainerStep[];
101
+ /** The input to watch. Without it the lesson still renders and prompts, but can never complete. */
102
+ press?: TrainerInputSource;
103
+ brand?: PadBrandKey;
104
+ glyphSet?: GlyphSet;
105
+ labels?: boolean;
106
+ accent?: string;
107
+ colored?: boolean;
108
+ stickStyle?: StickPictogramStyle;
109
+ /** Pad size preset. Default `"lg"` — the drawing is the shared reference here, so make it readable. */
110
+ size?: "sm" | "md" | "lg";
111
+ /**
112
+ * How long to hold on the final ✓ before `onComplete`. Default 900ms.
113
+ *
114
+ * Not decoration: firing the instant the last control is released would yank the lesson away before the
115
+ * rider sees that they got it right, which is the only feedback the whole exercise exists to give.
116
+ */
117
+ completionDelayMs?: number;
118
+ onStepComplete?(step: TrainerStep, index: number): void;
119
+ /** Every step done. The host closes its modal here — the component never closes itself. */
120
+ onComplete?(): void;
121
+ }
122
+ export interface ControlTrainer {
123
+ readonly root: HTMLDivElement;
124
+ readonly pad: ControllerPad;
125
+ /** Which steps are done, by index. */
126
+ completed(): readonly boolean[];
127
+ /** Back to square one — every step un-done, prompts pulsing again. */
128
+ reset(): void;
129
+ dispose(): void;
130
+ }
131
+ export declare function mountControlTrainer(host: HTMLElement, opts: ControlTrainerOptions): ControlTrainer;
132
+ //# sourceMappingURL=control-trainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"control-trainer.d.ts","sourceRoot":"","sources":["../../../src/ui/controller/control-trainer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,KAAK,EAAkB,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAI3E,OAAO,EAAgD,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC9G,OAAO,KAAK,EAAE,WAAW,EAAW,MAAM,YAAY,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC/E,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC9B,QAAQ,CAAC,EAAE;QACT,OAAO,EAAE;YAAE,QAAQ,CAAC,EAAE,QAAQ,CAAA;SAAE,CAAC;QACjC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE;YAAE,QAAQ,CAAC,EAAE,QAAQ,CAAA;SAAE,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;KACzE,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,qBAAqB;IACpC,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9B,mGAAmG;IACnG,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,uGAAuG;IACvG,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACxD,2FAA2F;IAC3F,UAAU,CAAC,IAAI,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;IAC5B,sCAAsC;IACtC,SAAS,IAAI,SAAS,OAAO,EAAE,CAAC;IAChC,sEAAsE;IACtE,KAAK,IAAI,IAAI,CAAC;IACd,OAAO,IAAI,IAAI,CAAC;CACjB;AA0DD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,qBAAqB,GAAG,cAAc,CAuelG"}