@datamoc/mw_games 0.41.0 → 0.43.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 (160) hide show
  1. package/CHANGELOG.md +105 -0
  2. package/README.md +62 -1
  3. package/REFERENCE.md +73 -8
  4. package/api-surface.json +696 -0
  5. package/data/microgm-essential.PROVENANCE.md +13 -0
  6. package/data/microgm-essential.sf2 +0 -0
  7. package/data/soundfont-catalog.json +8 -0
  8. package/dist/audio/AudioLoader.d.ts +28 -0
  9. package/dist/audio/AudioLoader.d.ts.map +1 -0
  10. package/dist/audio/AudioLoader.js +53 -0
  11. package/dist/audio/AudioLoader.js.map +1 -0
  12. package/dist/audio/Channels.d.ts +1 -0
  13. package/dist/audio/Channels.d.ts.map +1 -1
  14. package/dist/audio/Channels.js +2 -1
  15. package/dist/audio/Channels.js.map +1 -1
  16. package/dist/audio/MidiRender.d.ts +19 -1
  17. package/dist/audio/MidiRender.d.ts.map +1 -1
  18. package/dist/audio/MidiRender.js +24 -1
  19. package/dist/audio/MidiRender.js.map +1 -1
  20. package/dist/audio/MusicPlayer.d.ts +80 -0
  21. package/dist/audio/MusicPlayer.d.ts.map +1 -0
  22. package/dist/audio/MusicPlayer.js +147 -0
  23. package/dist/audio/MusicPlayer.js.map +1 -0
  24. package/dist/audio/SampleDecoder.d.ts +16 -2
  25. package/dist/audio/SampleDecoder.d.ts.map +1 -1
  26. package/dist/audio/SampleDecoder.js +10 -6
  27. package/dist/audio/SampleDecoder.js.map +1 -1
  28. package/dist/audio/Sound.d.ts +2 -0
  29. package/dist/audio/Sound.d.ts.map +1 -1
  30. package/dist/audio/Sound.js +3 -0
  31. package/dist/audio/Sound.js.map +1 -1
  32. package/dist/audio/SoundFont.d.ts +40 -5
  33. package/dist/audio/SoundFont.d.ts.map +1 -1
  34. package/dist/audio/SoundFont.js +52 -14
  35. package/dist/audio/SoundFont.js.map +1 -1
  36. package/dist/audio/Synth.d.ts +1 -1
  37. package/dist/audio/Synth.d.ts.map +1 -1
  38. package/dist/audio/Synth.js +4 -0
  39. package/dist/audio/Synth.js.map +1 -1
  40. package/dist/audio/index.d.ts +8 -4
  41. package/dist/audio/index.d.ts.map +1 -1
  42. package/dist/audio/index.js +4 -2
  43. package/dist/audio/index.js.map +1 -1
  44. package/dist/core/DialogueText.d.ts +25 -0
  45. package/dist/core/DialogueText.d.ts.map +1 -1
  46. package/dist/core/DialogueText.js +25 -0
  47. package/dist/core/DialogueText.js.map +1 -1
  48. package/dist/core/Motion.d.ts +20 -0
  49. package/dist/core/Motion.d.ts.map +1 -1
  50. package/dist/core/Motion.js +20 -0
  51. package/dist/core/Motion.js.map +1 -1
  52. package/dist/core/Save.d.ts +31 -0
  53. package/dist/core/Save.d.ts.map +1 -1
  54. package/dist/core/Save.js +31 -0
  55. package/dist/core/Save.js.map +1 -1
  56. package/dist/core/Twee.d.ts +34 -0
  57. package/dist/core/Twee.d.ts.map +1 -1
  58. package/dist/core/Twee.js +34 -0
  59. package/dist/core/Twee.js.map +1 -1
  60. package/dist/mw_games.global.js +22 -22
  61. package/dist/mwl/index.d.ts +2 -0
  62. package/dist/mwl/index.d.ts.map +1 -1
  63. package/dist/mwl/index.js +1 -0
  64. package/dist/mwl/index.js.map +1 -1
  65. package/dist/mwl/objects.d.ts +31 -0
  66. package/dist/mwl/objects.d.ts.map +1 -0
  67. package/dist/mwl/objects.js +83 -0
  68. package/dist/mwl/objects.js.map +1 -0
  69. package/dist/mwl/schema.d.ts +1 -1
  70. package/dist/mwl/schema.d.ts.map +1 -1
  71. package/dist/mwl/tables.d.ts +2 -0
  72. package/dist/mwl/tables.d.ts.map +1 -1
  73. package/dist/mwl/tables.js +13 -0
  74. package/dist/mwl/tables.js.map +1 -1
  75. package/dist/physics/XpbdWorld.d.ts +68 -5
  76. package/dist/physics/XpbdWorld.d.ts.map +1 -1
  77. package/dist/physics/XpbdWorld.js +135 -6
  78. package/dist/physics/XpbdWorld.js.map +1 -1
  79. package/dist/testing/index.d.ts +16 -0
  80. package/dist/testing/index.d.ts.map +1 -1
  81. package/dist/testing/index.js +21 -0
  82. package/dist/testing/index.js.map +1 -1
  83. package/dist/three-d/Collision3D.d.ts +46 -2
  84. package/dist/three-d/Collision3D.d.ts.map +1 -1
  85. package/dist/three-d/Collision3D.js +46 -2
  86. package/dist/three-d/Collision3D.js.map +1 -1
  87. package/dist/three-d/Grid.d.ts +12 -1
  88. package/dist/three-d/Grid.d.ts.map +1 -1
  89. package/dist/three-d/Grid.js +12 -1
  90. package/dist/three-d/Grid.js.map +1 -1
  91. package/dist/three-d/Vox.d.ts +13 -1
  92. package/dist/three-d/Vox.d.ts.map +1 -1
  93. package/dist/three-d/Vox.js +13 -1
  94. package/dist/three-d/Vox.js.map +1 -1
  95. package/dist/two-d/Game.d.ts +21 -1
  96. package/dist/two-d/Game.d.ts.map +1 -1
  97. package/dist/two-d/Game.js +73 -6
  98. package/dist/two-d/Game.js.map +1 -1
  99. package/dist/two-d/Scene2D.d.ts +24 -0
  100. package/dist/two-d/Scene2D.d.ts.map +1 -1
  101. package/dist/two-d/Scene2D.js +30 -0
  102. package/dist/two-d/Scene2D.js.map +1 -1
  103. package/dist/two-d/render/SceneTransition.d.ts +272 -0
  104. package/dist/two-d/render/SceneTransition.d.ts.map +1 -0
  105. package/dist/two-d/render/SceneTransition.js +431 -0
  106. package/dist/two-d/render/SceneTransition.js.map +1 -0
  107. package/dist/two-d/render/index.d.ts +2 -0
  108. package/dist/two-d/render/index.d.ts.map +1 -1
  109. package/dist/two-d/render/index.js +1 -0
  110. package/dist/two-d/render/index.js.map +1 -1
  111. package/dist/two-d/ui/Button.d.ts +23 -0
  112. package/dist/two-d/ui/Button.d.ts.map +1 -1
  113. package/dist/two-d/ui/Button.js +37 -0
  114. package/dist/two-d/ui/Button.js.map +1 -1
  115. package/dist/two-d/ui/DropdownView.d.ts +49 -3
  116. package/dist/two-d/ui/DropdownView.d.ts.map +1 -1
  117. package/dist/two-d/ui/DropdownView.js +150 -9
  118. package/dist/two-d/ui/DropdownView.js.map +1 -1
  119. package/dist/two-d/ui/ScrollBox.d.ts +90 -0
  120. package/dist/two-d/ui/ScrollBox.d.ts.map +1 -1
  121. package/dist/two-d/ui/ScrollBox.js +206 -4
  122. package/dist/two-d/ui/ScrollBox.js.map +1 -1
  123. package/dist/two-d/ui/ScrollText.d.ts +122 -0
  124. package/dist/two-d/ui/ScrollText.d.ts.map +1 -0
  125. package/dist/two-d/ui/ScrollText.js +202 -0
  126. package/dist/two-d/ui/ScrollText.js.map +1 -0
  127. package/dist/two-d/ui/Tooltip.d.ts +70 -1
  128. package/dist/two-d/ui/Tooltip.d.ts.map +1 -1
  129. package/dist/two-d/ui/Tooltip.js +115 -3
  130. package/dist/two-d/ui/Tooltip.js.map +1 -1
  131. package/dist/two-d/ui/Window.d.ts +35 -2
  132. package/dist/two-d/ui/Window.d.ts.map +1 -1
  133. package/dist/two-d/ui/Window.js +58 -3
  134. package/dist/two-d/ui/Window.js.map +1 -1
  135. package/dist/two-d/ui/index.d.ts +7 -5
  136. package/dist/two-d/ui/index.d.ts.map +1 -1
  137. package/dist/two-d/ui/index.js +3 -2
  138. package/dist/two-d/ui/index.js.map +1 -1
  139. package/dist/two-d/ui/theme.d.ts +18 -0
  140. package/dist/two-d/ui/theme.d.ts.map +1 -1
  141. package/dist/two-d/ui/theme.js.map +1 -1
  142. package/dist/version.d.ts +1 -1
  143. package/dist/version.js +1 -1
  144. package/package.json +14 -3
  145. package/sbom.cdx.json +462 -243
  146. package/tools/browser-driver.mjs +3 -3
  147. package/tools/browser-smoke.mjs +19 -2
  148. package/tools/build-tablebases.mjs +7 -3
  149. package/tools/compile-openings.mjs +7 -3
  150. package/tools/compile-resources.d.mts +8 -0
  151. package/tools/compile-resources.mjs +62 -14
  152. package/tools/emit-page.d.mts +9 -0
  153. package/tools/emit-page.mjs +57 -4
  154. package/tools/find-chrome.mjs +4 -2
  155. package/tools/init.mjs +11 -3
  156. package/tools/play-uci.mjs +9 -5
  157. package/tools/svg-optimise.d.mts +8 -0
  158. package/tools/svg-optimise.mjs +45 -0
  159. package/tools/vite.mjs +10 -1
  160. package/tools.md +5 -2
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/two-d/ui/Button.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/two-d/ui/Button.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,28 @@
1
1
  import { Container } from 'pixi.js';
2
2
  import { Dropdown, type DropdownOptions } from './Dropdown.ts';
3
+ import { ScrollBox } from './ScrollBox.ts';
3
4
  export interface DropdownViewOptions extends DropdownOptions {
5
+ /** the closed button's width, and the list's; the least width when `autoWidth` is on */
4
6
  width: number;
5
7
  /** the height of the closed button and of each row of the open list; 28 when omitted */
6
8
  rowHeight?: number;
9
+ /** rows shown at once; a longer list scrolls inside the box. 8 when omitted */
10
+ maxVisibleRows?: number;
11
+ /** widens the view to fit the longest label instead of cutting it off at `width` */
12
+ autoWidth?: boolean;
7
13
  }
8
14
  /**
9
15
  * The widget for a `Dropdown` model: a button showing the current choice that opens a column
10
- * of buttons beneath it, the chosen row marked with `Button.setSelected`. Picking a row
16
+ * of buttons beneath it, the highlighted row marked with `Button.setSelected`. Picking a row
11
17
  * selects it, closes the list and fires the model's `onChange`; clicking the closed button
12
18
  * again closes it.
13
19
  *
20
+ * The list sits on an opaque backdrop, shows at most `maxVisibleRows` rows and scrolls (wheel,
21
+ * touch drag, keys, scrollbar) beyond that, opening with the chosen row in view. `autoWidth`
22
+ * measures the labels so none is cut off. The keyboard goes through `handleKey` (arrows, Page,
23
+ * Home, End, Enter, Escape) and a click elsewhere through `handleOutsideClick`, which the owning
24
+ * scene forwards from its own input, since the view does not own the stage.
25
+ *
14
26
  * The list is drawn in this container's own space below the button, so a game places the view
15
27
  * where the closed button should sit and keeps it above its siblings when it is open.
16
28
  *
@@ -20,21 +32,55 @@ export interface DropdownViewOptions extends DropdownOptions {
20
32
  *
21
33
  * const level = new DropdownView({
22
34
  * width: 180,
23
- * options: [{ label: 'Level 1' }, { label: 'Level 2' }],
35
+ * maxVisibleRows: 6,
36
+ * options: Array.from({ length: 30 }, (_, i) => ({ label: `Level ${i + 1}` })),
24
37
  * });
25
38
  * level.model.onChange.add(({ index }) => console.log('chose', index));
26
39
  * level.model.open();
27
40
  * level.refresh();
41
+ * level.handleKey('PageDown'); // the highlight moves a page, the list scrolls to it
28
42
  * ```
29
43
  */
30
44
  export declare class DropdownView extends Container {
31
45
  readonly model: Dropdown;
32
- private readonly width_;
46
+ private width_;
33
47
  private readonly rowHeight;
48
+ private readonly maxRows;
34
49
  private readonly head;
35
50
  private readonly list;
51
+ private readonly backdrop;
52
+ private box;
53
+ private listHeight;
54
+ private readonly themeListener;
36
55
  constructor(options: DropdownViewOptions);
56
+ /** how wide `text` is as a row's caption, plus the button's own padding */
57
+ protected measureLabel(text: string): number;
58
+ private labelWidth;
59
+ /** the view's current width: `width`, or what the longest label needed with `autoWidth` */
60
+ get viewWidth(): number;
61
+ /** how many rows the open list shows at once (fewer than `maxVisibleRows` for a short list) */
62
+ get visibleRows(): number;
63
+ /** the open list's scrolling box, or null while closed; its `offset` is what a test reads */
64
+ get scroller(): ScrollBox | null;
65
+ /** lets a list that would run off the bottom of a `height`-tall viewport show fewer rows */
66
+ fitBelow(globalY: number, viewportHeight: number): number;
37
67
  /** redraws the closed label and the open list from the model; call after changing the model directly */
38
68
  refresh(): void;
69
+ /**
70
+ * A key for the view: closed, Enter/Space/ArrowDown open it; open, the arrows, Page and Home/End
71
+ * move the highlight (the list scrolls to keep it in view), Enter picks it and Escape closes
72
+ * without changing the choice.
73
+ *
74
+ * @returns true when the key was used, so the caller does not also act on it
75
+ */
76
+ handleKey(key: string): boolean;
77
+ /**
78
+ * A press at a screen position: closes the open list, keeping the old choice, when it landed
79
+ * outside the button and the list.
80
+ *
81
+ * @returns true when it closed the list
82
+ */
83
+ handleOutsideClick(globalX: number, globalY: number): boolean;
84
+ destroy(options?: Parameters<Container['destroy']>[0]): void;
39
85
  }
40
86
  //# sourceMappingURL=DropdownView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownView.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/DropdownView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAE/D,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,wFAAwF;IACxF,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,YAAa,SAAQ,SAAS;IAC1C,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IAExC,YAAY,OAAO,EAAE,mBAAmB,EAkBvC;IAED,wGAAwG;IACxG,OAAO,IAAI,IAAI,CAuBd;CACD"}
1
+ {"version":3,"file":"DropdownView.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/DropdownView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,SAAS,EAA8B,MAAM,SAAS,CAAC;AAEnF,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC3D,wFAAwF;IACxF,KAAK,EAAE,MAAM,CAAC;IACd,wFAAwF;IACxF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,YAAa,SAAQ,SAAS;IAC1C,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,GAAG,CAA0B;IACrC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IAEtD,YAAY,OAAO,EAAE,mBAAmB,EAuBvC;IAED,2EAA2E;IAC3E,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ3C;IAED,OAAO,CAAC,UAAU;IAIlB,2FAA2F;IAC3F,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,+FAA+F;IAC/F,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,6FAA6F;IAC7F,IAAI,QAAQ,IAAI,SAAS,GAAG,IAAI,CAE/B;IAED,4FAA4F;IAC5F,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAGxD;IAED,wGAAwG;IACxG,OAAO,IAAI,IAAI,CA6Cd;IAED;;;;;;OAMG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAyC9B;IAED;;;;;OAKG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAS5D;IAEQ,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAGpE;CACD"}
@@ -1,12 +1,20 @@
1
- import { Container } from 'pixi.js';
1
+ import { CanvasTextMetrics, Container, Graphics, Point, TextStyle } from 'pixi.js';
2
2
  import { Button } from './Button.js';
3
3
  import { Dropdown } from './Dropdown.js';
4
+ import { ScrollBox } from './ScrollBox.js';
5
+ import { theme, themeChanged } from './theme.js';
4
6
  /**
5
7
  * The widget for a `Dropdown` model: a button showing the current choice that opens a column
6
- * of buttons beneath it, the chosen row marked with `Button.setSelected`. Picking a row
8
+ * of buttons beneath it, the highlighted row marked with `Button.setSelected`. Picking a row
7
9
  * selects it, closes the list and fires the model's `onChange`; clicking the closed button
8
10
  * again closes it.
9
11
  *
12
+ * The list sits on an opaque backdrop, shows at most `maxVisibleRows` rows and scrolls (wheel,
13
+ * touch drag, keys, scrollbar) beyond that, opening with the chosen row in view. `autoWidth`
14
+ * measures the labels so none is cut off. The keyboard goes through `handleKey` (arrows, Page,
15
+ * Home, End, Enter, Escape) and a click elsewhere through `handleOutsideClick`, which the owning
16
+ * scene forwards from its own input, since the view does not own the stage.
17
+ *
10
18
  * The list is drawn in this container's own space below the button, so a game places the view
11
19
  * where the closed button should sit and keeps it above its siblings when it is open.
12
20
  *
@@ -16,20 +24,29 @@ import { Dropdown } from './Dropdown.js';
16
24
  *
17
25
  * const level = new DropdownView({
18
26
  * width: 180,
19
- * options: [{ label: 'Level 1' }, { label: 'Level 2' }],
27
+ * maxVisibleRows: 6,
28
+ * options: Array.from({ length: 30 }, (_, i) => ({ label: `Level ${i + 1}` })),
20
29
  * });
21
30
  * level.model.onChange.add(({ index }) => console.log('chose', index));
22
31
  * level.model.open();
23
32
  * level.refresh();
33
+ * level.handleKey('PageDown'); // the highlight moves a page, the list scrolls to it
24
34
  * ```
25
35
  */
26
36
  export class DropdownView extends Container {
27
37
  constructor(options) {
28
38
  super();
29
39
  this.list = new Container();
40
+ this.backdrop = new Graphics();
41
+ this.box = null;
42
+ this.listHeight = 0;
43
+ this.themeListener = () => this.refresh();
30
44
  this.model = new Dropdown(options);
31
- this.width_ = options.width;
32
45
  this.rowHeight = options.rowHeight ?? 28;
46
+ this.maxRows = Math.max(1, options.maxVisibleRows ?? 8);
47
+ this.width_ = options.autoWidth
48
+ ? Math.max(options.width, ...this.model.options.map((option) => this.labelWidth(option.label)))
49
+ : options.width;
33
50
  this.head = new Button({
34
51
  width: this.width_,
35
52
  height: this.rowHeight,
@@ -41,22 +58,71 @@ export class DropdownView extends Container {
41
58
  },
42
59
  });
43
60
  this.list.y = this.rowHeight;
61
+ this.list.addChild(this.backdrop);
44
62
  this.addChild(this.head, this.list);
45
63
  this.refresh();
64
+ themeChanged.add(this.themeListener);
65
+ }
66
+ /** how wide `text` is as a row's caption, plus the button's own padding */
67
+ measureLabel(text) {
68
+ try {
69
+ const style = new TextStyle({ fontFamily: theme().font.family, fontSize: theme().font.size });
70
+ return CanvasTextMetrics.measureText(text, style).width;
71
+ }
72
+ catch {
73
+ //no canvas to measure with (a test, a server): an average glyph width instead
74
+ return text.length * theme().font.size * 0.6;
75
+ }
76
+ }
77
+ labelWidth(text) {
78
+ return Math.ceil(this.measureLabel(text)) + 2 * theme().padding + 16;
79
+ }
80
+ /** the view's current width: `width`, or what the longest label needed with `autoWidth` */
81
+ get viewWidth() {
82
+ return this.width_;
83
+ }
84
+ /** how many rows the open list shows at once (fewer than `maxVisibleRows` for a short list) */
85
+ get visibleRows() {
86
+ return Math.min(this.maxRows, this.model.options.length);
87
+ }
88
+ /** the open list's scrolling box, or null while closed; its `offset` is what a test reads */
89
+ get scroller() {
90
+ return this.box;
91
+ }
92
+ /** lets a list that would run off the bottom of a `height`-tall viewport show fewer rows */
93
+ fitBelow(globalY, viewportHeight) {
94
+ const rows = Math.floor((viewportHeight - globalY - this.rowHeight) / this.rowHeight);
95
+ return Math.max(1, Math.min(this.maxRows, rows));
46
96
  }
47
97
  /** redraws the closed label and the open list from the model; call after changing the model directly */
48
98
  refresh() {
49
99
  const model = this.model;
50
100
  this.head.setText(`${model.selected?.label ?? ''} ▾`);
51
101
  this.head.setDisabled(model.disabled);
52
- for (const child of this.list.removeChildren())
53
- child.destroy({ children: true });
102
+ this.box?.destroy({ children: true });
103
+ this.box = null;
54
104
  this.list.visible = model.isOpen;
105
+ this.backdrop.clear();
55
106
  if (!model.isOpen)
56
107
  return;
108
+ const rows = this.visibleRows;
109
+ this.listHeight = rows * this.rowHeight;
110
+ const t = theme();
111
+ this.backdrop
112
+ .rect(0, 0, this.width_, this.listHeight)
113
+ .fill({ color: t.color.panelFill, alpha: 1 })
114
+ .stroke({ color: t.color.panelBorder, width: 1 });
115
+ const box = new ScrollBox({
116
+ width: this.width_,
117
+ height: this.listHeight,
118
+ contentHeight: model.options.length * this.rowHeight,
119
+ touch: true,
120
+ lineHeight: this.rowHeight,
121
+ });
122
+ const rowWidth = this.width_ - (box.scrollable ? 8 : 0);
57
123
  model.options.forEach((option, index) => {
58
124
  const row = new Button({
59
- width: this.width_,
125
+ width: rowWidth,
60
126
  height: this.rowHeight,
61
127
  text: option.label,
62
128
  disabled: option.disabled,
@@ -67,9 +133,84 @@ export class DropdownView extends Container {
67
133
  },
68
134
  });
69
135
  row.y = index * this.rowHeight;
70
- row.setSelected(index === model.selectedIndex);
71
- this.list.addChild(row);
136
+ row.setSelected(index === model.highlight);
137
+ box.content.addChild(row);
72
138
  });
139
+ box.scrollIntoView(model.highlight * this.rowHeight, this.rowHeight);
140
+ this.box = box;
141
+ this.list.addChild(box);
142
+ }
143
+ /**
144
+ * A key for the view: closed, Enter/Space/ArrowDown open it; open, the arrows, Page and Home/End
145
+ * move the highlight (the list scrolls to keep it in view), Enter picks it and Escape closes
146
+ * without changing the choice.
147
+ *
148
+ * @returns true when the key was used, so the caller does not also act on it
149
+ */
150
+ handleKey(key) {
151
+ const model = this.model;
152
+ if (model.disabled)
153
+ return false;
154
+ if (!model.isOpen) {
155
+ if (key !== 'Enter' && key !== ' ' && key !== 'ArrowDown')
156
+ return false;
157
+ model.open();
158
+ this.refresh();
159
+ return true;
160
+ }
161
+ const count = model.options.length;
162
+ switch (key) {
163
+ case 'Escape':
164
+ model.cancel();
165
+ break;
166
+ case 'Enter':
167
+ case ' ':
168
+ model.confirm();
169
+ break;
170
+ case 'ArrowUp':
171
+ model.move(-1);
172
+ break;
173
+ case 'ArrowDown':
174
+ model.move(1);
175
+ break;
176
+ case 'PageUp':
177
+ model.setHighlight(Math.max(0, model.highlight - this.maxRows));
178
+ break;
179
+ case 'PageDown':
180
+ model.setHighlight(Math.min(count - 1, model.highlight + this.maxRows));
181
+ break;
182
+ case 'Home':
183
+ model.setHighlight(0);
184
+ break;
185
+ case 'End':
186
+ model.setHighlight(count - 1);
187
+ break;
188
+ default:
189
+ return false;
190
+ }
191
+ this.refresh();
192
+ return true;
193
+ }
194
+ /**
195
+ * A press at a screen position: closes the open list, keeping the old choice, when it landed
196
+ * outside the button and the list.
197
+ *
198
+ * @returns true when it closed the list
199
+ */
200
+ handleOutsideClick(globalX, globalY) {
201
+ if (!this.model.isOpen)
202
+ return false;
203
+ const local = this.toLocal(new Point(globalX, globalY));
204
+ const inside = local.x >= 0 && local.x <= this.width_ && local.y >= 0 && local.y <= this.rowHeight + this.listHeight;
205
+ if (inside)
206
+ return false;
207
+ this.model.cancel();
208
+ this.refresh();
209
+ return true;
210
+ }
211
+ destroy(options) {
212
+ themeChanged.remove(this.themeListener);
213
+ super.destroy(options);
73
214
  }
74
215
  }
75
216
  //# sourceMappingURL=DropdownView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownView.js","sourceRoot":"","sources":["../../../src/two-d/ui/DropdownView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAwB,MAAM,eAAe,CAAC;AAQ/D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,YAAa,SAAQ,SAAS;IAO1C,YAAY,OAA4B;QACvC,KAAK,EAAE,CAAC;QAHQ,SAAI,GAAG,IAAI,SAAS,EAAE,CAAC;QAIvC,IAAI,CAAC,KAAK,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC;YACtB,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,MAAM,EAAE,IAAI,CAAC,SAAS;YACtB,IAAI,EAAE,EAAE;YACR,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;YAC7B,OAAO,EAAE,GAAG,EAAE;gBACb,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;gBACxB,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,CAAC;SACD,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC;IAED,wGAAwG;IACxG,OAAO;QACN,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YAAE,KAAK,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAClF,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO;QAC1B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACvC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC;gBACtB,KAAK,EAAE,IAAI,CAAC,MAAM;gBAClB,MAAM,EAAE,IAAI,CAAC,SAAS;gBACtB,IAAI,EAAE,MAAM,CAAC,KAAK;gBAClB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,OAAO,EAAE,GAAG,EAAE;oBACb,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBAC1B,KAAK,CAAC,OAAO,EAAE,CAAC;oBAChB,IAAI,CAAC,OAAO,EAAE,CAAC;gBAChB,CAAC;aACD,CAAC,CAAC;YACH,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;YAC/B,GAAG,CAAC,WAAW,CAAC,KAAK,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC;YAC/C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACJ,CAAC;CACD"}
1
+ {"version":3,"file":"DropdownView.js","sourceRoot":"","sources":["../../../src/two-d/ui/DropdownView.ts"],"names":[],"mappings":"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"}
@@ -13,18 +13,74 @@ import { Signal } from '../../core/Signal.ts';
13
13
  * ```
14
14
  */
15
15
  export declare function scrollOffset(offset: number, contentSize: number, viewportSize: number): number;
16
+ /**
17
+ * Touch scrolling as plain numbers: feed it pointer positions and it says how far the content moves
18
+ * while the finger is down, then keeps coasting after release with a friction that decays the speed.
19
+ * No pointer events or clock of its own, so it is the same under a test as under a finger.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * import { ScrollDrag } from '@datamoc/mw_games/two-d/ui';
24
+ *
25
+ * const drag = new ScrollDrag();
26
+ * drag.start(200, 0);
27
+ * console.log(drag.move(170, 0.1)); // 30: the content follows the finger up
28
+ * drag.end();
29
+ * console.log(drag.step(1 / 60) > 0); // true: it keeps coasting
30
+ * ```
31
+ */
32
+ export declare class ScrollDrag {
33
+ /** content pixels per second the content keeps moving at after release; 0 when at rest */
34
+ velocity: number;
35
+ dragging: boolean;
36
+ /** how far the pointer has travelled since `start`, to tell a drag from a tap */
37
+ travelled: number;
38
+ private lastY;
39
+ private lastTime;
40
+ private readonly friction;
41
+ private readonly minSpeed;
42
+ /**
43
+ * @param friction fraction of the speed lost per second of coasting; 0.92 when omitted
44
+ * @param minSpeed the speed, in pixels per second, below which it counts as at rest; 8 when omitted
45
+ */
46
+ constructor(friction?: number, minSpeed?: number);
47
+ start(y: number, time: number): void;
48
+ /** @returns how far the content should move for this pointer position */
49
+ move(y: number, time: number): number;
50
+ end(): void;
51
+ /** @returns how far the content coasts in `dt` seconds, 0 once it has stopped */
52
+ step(dt: number): number;
53
+ /** stops coasting, for when the content hit an end */
54
+ stop(): void;
55
+ }
16
56
  export interface ScrollBoxOptions {
17
57
  width: number;
58
+ /** the viewport's height, or its largest height when `autoHeight` is on */
18
59
  height: number;
19
60
  /** how tall the content is; set it again with `setContentHeight` as the content changes */
20
61
  contentHeight?: number;
21
62
  offset?: number;
63
+ /** dragging the content scrolls it and it coasts on release (`update(dt)` drives the coasting) */
64
+ touch?: boolean;
65
+ /** `handleKey` scrolls by line, page and to the ends */
66
+ keyboard?: boolean;
67
+ /** a viewport as tall as the content, up to `height` */
68
+ autoHeight?: boolean;
69
+ /** how far an arrow key scrolls; 24 when omitted */
70
+ lineHeight?: number;
22
71
  }
72
+ /** the key names `ScrollBox.handleKey` answers to, as `KeyboardEvent.key` spells them */
73
+ export type ScrollKey = 'ArrowUp' | 'ArrowDown' | 'PageUp' | 'PageDown' | 'Home' | 'End';
23
74
  /**
24
75
  * A clipped viewport with a scrollbar: put rows in `content` and they scroll inside the box,
25
76
  * everything outside it hidden by a mask. The scrollbar is drawn from the theme; the wheel,
26
77
  * `scrollBy` and `scrollIntoView` all run through `scrollOffset`, so they clamp the same way.
27
78
  *
79
+ * `touch: true` lets a finger drag the content (a drag ends the tap on the rows under it) and coast
80
+ * on release, `keyboard: true` makes `handleKey` scroll by line, page and to the ends, the scrollbar's
81
+ * thumb can be dragged and its track clicked, and `autoHeight` sizes the viewport to the content up
82
+ * to `height`. Call `update(dt)` each frame for the coasting.
83
+ *
28
84
  * @example
29
85
  * ```ts
30
86
  * import { ScrollBox } from '@datamoc/mw_games/two-d/ui';
@@ -42,14 +98,22 @@ export declare class ScrollBox extends Container {
42
98
  private track;
43
99
  private thumb;
44
100
  private width_;
101
+ private maxHeight_;
45
102
  private height_;
46
103
  private contentHeight_;
47
104
  private offset_;
105
+ private readonly auto;
106
+ private readonly lineHeight;
107
+ private readonly drag;
108
+ private dragMoved;
109
+ private thumbGrab;
48
110
  private readonly themeListener;
49
111
  constructor(options: ScrollBoxOptions);
50
112
  get offset(): number;
51
113
  get contentHeight(): number;
52
114
  get viewportHeight(): number;
115
+ /** the viewport's height: the content's, capped at the maximum, when `autoHeight` is on */
116
+ private fit;
53
117
  /** how far the content can scroll; 0 when it all fits */
54
118
  get maxOffset(): number;
55
119
  get scrollable(): boolean;
@@ -59,6 +123,32 @@ export declare class ScrollBox extends Container {
59
123
  scrollTo(offset: number): void;
60
124
  /** scrolls just enough to bring a `height`-tall item at `top` fully into view */
61
125
  scrollIntoView(top: number, height: number): void;
126
+ /**
127
+ * Scrolls for a key a keyboard-driven list was handed (`KeyboardEvent.key`).
128
+ *
129
+ * @returns true when the key is one this box scrolls by, so a caller can stop it going further
130
+ */
131
+ handleKey(key: string): boolean;
132
+ /** a finger or button went down at `y` (any one coordinate space, `time` in seconds) */
133
+ dragStart(y: number, time: number): void;
134
+ /** the pointer moved while down; the content follows once it has travelled a few pixels */
135
+ dragMove(y: number, time: number): void;
136
+ dragEnd(): void;
137
+ /** true once the pointer travelled far enough to count as a drag rather than a tap */
138
+ get dragged(): boolean;
139
+ /** advances touch coasting; call once a frame from the owning scene's `update` */
140
+ update(dt: number): void;
141
+ /** where the scrollbar's thumb sits and how tall it is, in the box's own space */
142
+ get thumbMetrics(): {
143
+ y: number;
144
+ height: number;
145
+ };
146
+ /** the thumb was grabbed at `y` */
147
+ thumbDragStart(y: number): void;
148
+ /** the thumb moved to `y`: the offset follows in proportion to the thumb's travel */
149
+ thumbDragMove(y: number): void;
150
+ /** a click on the track at local `y` puts the thumb's centre there */
151
+ scrollToThumbCentre(y: number): void;
62
152
  private setOffset;
63
153
  private readonly handleWheel;
64
154
  private draw;
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollBox.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/ScrollBox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAE9F;AAED,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,2FAA2F;IAC3F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,SAAU,SAAQ,SAAS;IACvC,QAAQ,CAAC,QAAQ,iBAAwB;IAEzC,kCAAkC;IAClC,QAAQ,CAAC,OAAO,8CAAmB;IAEnC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,KAAK,CAAkB;IAE/B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IAEnD,YAAY,OAAO,EAAE,gBAAgB,EAoBpC;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,yDAAyD;IACzD,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAGrC;IAED,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAI1C;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE5B;IAED,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE7B;IAED,iFAAiF;IACjF,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAGhD;IAED,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAE1B;IAEF,OAAO,CAAC,IAAI;IAmBH,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAGpE;CACD"}
1
+ {"version":3,"file":"ScrollBox.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/ScrollBox.ts"],"names":[],"mappings":"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"}