pxt-common-packages 12.3.4 → 12.3.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.
Files changed (41) hide show
  1. package/built/common-sim.d.ts +12 -2
  2. package/built/common-sim.js +45 -4
  3. package/libs/azureiot/built/debug/binary.js +461 -461
  4. package/libs/base/pxtbase.h +4 -0
  5. package/libs/browser-events/browserEvents.cpp +4 -0
  6. package/libs/browser-events/browserEvents.ts +115 -36
  7. package/libs/browser-events/keyboard.ts +147 -41
  8. package/libs/browser-events/shims.d.ts +2 -0
  9. package/libs/browser-events/sim/keyboard.ts +36 -3
  10. package/libs/browser-events/sim/mouseState.ts +15 -1
  11. package/libs/color/built/debug/binary.js +8 -8
  12. package/libs/color-sensor/built/debug/binary.js +8 -8
  13. package/libs/controller/built/debug/binary.js +8560 -8315
  14. package/libs/controller---none/built/debug/binary.js +8539 -8294
  15. package/libs/datalogger/built/debug/binary.js +63 -63
  16. package/libs/edge-connector/built/debug/binary.js +8 -8
  17. package/libs/esp32/built/debug/binary.js +462 -462
  18. package/libs/game/built/debug/binary.js +8452 -8207
  19. package/libs/game/game.ts +5 -2
  20. package/libs/lcd/built/debug/binary.js +8 -8
  21. package/libs/light-spectrum-sensor/built/debug/binary.js +8 -8
  22. package/libs/lora/built/debug/binary.js +8 -8
  23. package/libs/matrix-keypad/built/debug/binary.js +8 -8
  24. package/libs/mixer/playable.ts +6 -2
  25. package/libs/mixer/soundEffect.ts +2 -2
  26. package/libs/mqtt/built/debug/binary.js +176 -176
  27. package/libs/net/built/debug/binary.js +176 -176
  28. package/libs/net-game/built/debug/binary.js +10394 -10149
  29. package/libs/palette/built/debug/binary.js +8451 -8206
  30. package/libs/pixel/built/debug/binary.js +8 -8
  31. package/libs/power/built/debug/binary.js +8 -8
  32. package/libs/proximity/built/debug/binary.js +8 -8
  33. package/libs/radio/built/debug/binary.js +8 -8
  34. package/libs/radio-broadcast/built/debug/binary.js +8 -8
  35. package/libs/rotary-encoder/built/debug/binary.js +8 -8
  36. package/libs/screen/built/debug/binary.js +50 -50
  37. package/libs/screen---st7735/screen.cpp +2 -2
  38. package/libs/servo/built/debug/binary.js +8 -8
  39. package/libs/sprite-scaling/built/debug/binary.js +8451 -8206
  40. package/libs/storyboard/built/debug/binary.js +8451 -8206
  41. package/package.json +2 -2
@@ -1166,9 +1166,13 @@ bool removeElement(RefCollection *c, TValue x);
1166
1166
  #define FLASH_TOP 0x00000000
1167
1167
  #else
1168
1168
  #if MICROBIT_CODAL
1169
+ #if MICROBIT_TOP_OF_FLASH
1169
1170
  #define FLASH_TOP MICROBIT_TOP_OF_FLASH
1170
1171
  #else
1171
1172
  #define FLASH_TOP 0x00000000
1173
+ #endif
1174
+ #else
1175
+ #define FLASH_TOP 0x00000000
1172
1176
  #endif
1173
1177
  #endif
1174
1178
 
@@ -27,6 +27,10 @@ int wheelDz() {
27
27
  return -1;
28
28
  }
29
29
 
30
+ //%
31
+ void _setCursorVisible(bool visible) {
32
+ }
33
+
30
34
  //%
31
35
  int currentTime() {
32
36
  return -1;
@@ -4,66 +4,94 @@
4
4
  //% block="Browser Events"
5
5
  namespace browserEvents {
6
6
  export enum Event {
7
+ //% block="pointer down"
7
8
  PointerDown = 6857,
9
+ //% block="pointer up"
8
10
  PointerUp = 6858,
11
+ //% block="pointer move"
9
12
  PointerMove = 6859,
13
+ //% block="pointer leave"
10
14
  PointerLeave = 6860,
15
+ //% block="pointer enter"
11
16
  PointerEnter = 6861,
17
+ //% block="pointer cancel"
12
18
  PointerCancel = 6862,
19
+ //% block="pointer over"
13
20
  PointerOver = 6863,
21
+ //% block="pointer out"
14
22
  PointerOut = 6864,
23
+ //% block="wheel"
15
24
  Wheel = 6865,
25
+ //% block="key down"
16
26
  KeyDown = 6866,
27
+ //% block="key up"
17
28
  KeyUp = 6867
18
29
  }
19
30
 
20
31
  export enum MouseButtonId {
32
+ //% block="left"
21
33
  Left = 1,
34
+ //% block="right"
22
35
  Right = 3,
36
+ //% block="wheel"
23
37
  Wheel = 2,
38
+ //% block="back"
24
39
  Back = 4,
40
+ //% block="forward"
25
41
  Forward = 5
26
42
  }
27
43
 
28
44
  export enum MouseButtonEvent {
45
+ //% block="pressed"
29
46
  Pressed = Event.PointerDown,
47
+ //% block="released"
30
48
  Released = Event.PointerUp,
31
49
  }
32
50
 
51
+ //% whenUsed
52
+ const INTERNAL_POINTER_DOWN = 6868;
53
+ //% whenUsed
54
+ const INTERNAL_POINTER_UP = 6869;
55
+
56
+ type MouseHandler = (x: number, y: number) => void;
57
+
33
58
  //% fixedInstances
34
59
  export class MouseButton {
35
60
  protected _pressed: boolean;
36
- protected pressHandler: (x: number, y: number) => void;
37
- protected pressListeners: ((x: number, y: number) => void)[];
38
- protected releaseHandler: (x: number, y: number) => void;
39
- protected releaseListeners: ((x: number, y: number) => void)[];
61
+
62
+ protected sceneStack: _SceneButtonHandlers<MouseHandler>[];
63
+
64
+ protected get state(): _SceneButtonHandlers<MouseHandler> {
65
+ return this.sceneStack[this.sceneStack.length - 1];
66
+ }
40
67
 
41
68
  constructor(public id: number) {
42
- control.internalOnEvent(Event.PointerDown, this.id, () => this.setPressed(true), 16);
43
- control.internalOnEvent(Event.PointerUp, this.id, () => this.setPressed(false), 16);
69
+ control.internalOnEvent(INTERNAL_POINTER_DOWN, this.id, () => this.setPressed(true), 16);
70
+ control.internalOnEvent(INTERNAL_POINTER_UP, this.id, () => this.setPressed(false), 16);
44
71
 
45
72
  this._pressed = false;
46
- this.pressListeners = [];
47
- this.releaseListeners = [];
73
+
74
+ this.sceneStack = [new _SceneButtonHandlers<MouseHandler>(id, invokeMouseHandler)];
75
+
76
+ game.addScenePushHandler(() => {
77
+ this.sceneStack.push(new _SceneButtonHandlers<MouseHandler>(id, invokeMouseHandler));
78
+ });
79
+ game.addScenePopHandler(() => {
80
+ this.sceneStack.pop();
81
+ if (this.sceneStack.length === 0) {
82
+ this.sceneStack = [new _SceneButtonHandlers<MouseHandler>(id, invokeMouseHandler)];
83
+ }
84
+ });
48
85
  }
49
86
 
50
87
  setPressed(pressed: boolean) {
51
88
  this._pressed = pressed;
89
+
52
90
  if (pressed) {
53
- if (this.pressHandler) {
54
- this.pressHandler(mouseX(), mouseY());
55
- }
56
- for (const handler of this.pressListeners) {
57
- handler(mouseX(), mouseY());
58
- }
91
+ control.raiseEvent(MouseButtonEvent.Pressed, this.id);
59
92
  }
60
93
  else {
61
- if (this.releaseHandler) {
62
- this.releaseHandler(mouseX(), mouseY());
63
- }
64
- for (const handler of this.releaseListeners) {
65
- handler(mouseX(), mouseY());
66
- }
94
+ control.raiseEvent(MouseButtonEvent.Released, this.id);
67
95
  }
68
96
  }
69
97
 
@@ -73,12 +101,7 @@ namespace browserEvents {
73
101
  //% group="Mouse"
74
102
  //% weight=50
75
103
  onEvent(event: MouseButtonEvent, handler: (x: number, y: number) => void) {
76
- if (event === MouseButtonEvent.Pressed) {
77
- this.pressHandler = handler;
78
- }
79
- else {
80
- this.releaseHandler = handler;
81
- }
104
+ this.state.onEvent(event, handler);
82
105
  }
83
106
 
84
107
  //% blockId=browserEvents_mouseButton_isPressed
@@ -98,24 +121,72 @@ namespace browserEvents {
98
121
  }
99
122
 
100
123
  addEventListener(event: MouseButtonEvent, handler: (x: number, y: number) => void) {
101
- if (event === MouseButtonEvent.Pressed) {
102
- this.pressListeners.push(handler);
103
- }
104
- else {
105
- this.releaseListeners.push(handler);
106
- }
124
+ this.state.addEventListener(event, handler);
107
125
  }
108
126
 
109
127
  removeEventListener(event: MouseButtonEvent, handler: (x: number, y: number) => void) {
110
- if (event === MouseButtonEvent.Pressed) {
111
- this.pressListeners = this.pressListeners.filter(p => p !== handler);
128
+ this.state.removeEventListener(event, handler);
129
+ }
130
+ }
131
+
132
+ export class _SceneButtonHandlers<U> {
133
+ protected handlers: ButtonHandler<U>[];
134
+
135
+ constructor(public id: number, protected invokeHandler: (handler: U) => void) {
136
+ this.handlers = [];
137
+ }
138
+
139
+ onEvent(event: number, handler: U) {
140
+ this.getHandler(event, true).handler = handler;
141
+ }
142
+
143
+ addEventListener(event: number, handler: U) {
144
+ this.getHandler(event, true).listeners.push(handler);
145
+ }
146
+
147
+ removeEventListener(event: number, handler: U) {
148
+ const eventHandler = this.getHandler(event);
149
+
150
+ if (eventHandler) {
151
+ eventHandler.listeners = eventHandler.listeners.filter(h => h !== handler);
112
152
  }
113
- else {
114
- this.releaseListeners = this.releaseListeners.filter(p => p !== handler);
153
+ }
154
+
155
+ protected getHandler(event: number, createIfMissing?: boolean) {
156
+ for (const handler of this.handlers) {
157
+ if (handler.event === event) return handler;
115
158
  }
159
+
160
+ if (createIfMissing) {
161
+ const newHandler = new ButtonHandler<U>(event, this.id, this.invokeHandler);
162
+ this.handlers.push(newHandler);
163
+ return newHandler;
164
+ }
165
+
166
+ return undefined;
116
167
  }
117
168
  }
118
169
 
170
+ class ButtonHandler<U> {
171
+ handler: U;
172
+ listeners: U[] = [];
173
+
174
+ constructor(public readonly event: number, id: number, invokeHandler: (handler: U) => void) {
175
+ control.onEvent(event, id, () => {
176
+ if (this.handler) {
177
+ invokeHandler(this.handler);
178
+ }
179
+ for (const listener of this.listeners) {
180
+ invokeHandler(listener);
181
+ }
182
+ });
183
+ }
184
+ }
185
+
186
+ function invokeMouseHandler(handler: MouseHandler) {
187
+ handler(mouseX(), mouseY());
188
+ }
189
+
119
190
  //% blockId=browserEvents_onEvent
120
191
  //% block="on browser event $event"
121
192
  //% draggableParameters="reporter"
@@ -147,6 +218,14 @@ namespace browserEvents {
147
218
  });
148
219
  }
149
220
 
221
+ //% blockId=browserEvents_setCursorVisible
222
+ //% block="set cursor visible $visible"
223
+ //% group="Mouse"
224
+ //% weight=0
225
+ export function setCursorVisible(visible: boolean) {
226
+ _setCursorVisible(visible);
227
+ }
228
+
150
229
  //% fixedInstance whenUsed block="left"
151
230
  export const MouseLeft = new MouseButton(MouseButtonId.Left);
152
231
 
@@ -62,14 +62,29 @@ namespace browserEvents {
62
62
  ArrowRight = 39,
63
63
  PageDown = 34,
64
64
  End = 35,
65
- Home = 36
65
+ Home = 36,
66
+ LeftShift = 1016,
67
+ RightShift = 1017,
68
+ LeftControl = 1018,
69
+ RightControl = 1019,
70
+ Backspace = 8,
71
+ Delete = 46,
66
72
  }
67
73
 
68
74
  export enum KeyEvent {
69
- Pressed,
70
- Released
75
+ //% block="pressed"
76
+ Pressed = 6872,
77
+ //% block="released"
78
+ Released = 6873,
79
+ //% block="repeat"
80
+ Repeat = 6874
71
81
  }
72
82
 
83
+ //% whenUsed
84
+ const INTERNAL_KEY_DOWN = 6870;
85
+ //% whenUsed
86
+ const INTERNAL_KEY_UP = 6871;
87
+
73
88
  export function keyToString(key: Key) {
74
89
  switch (key) {
75
90
  case Key.Q:
@@ -198,44 +213,95 @@ namespace browserEvents {
198
213
  return "-";
199
214
  case Key.Equals:
200
215
  return "=";
216
+ case Key.LeftShift:
217
+ return "LeftShift";
218
+ case Key.RightShift:
219
+ return "RightShift";
220
+ case Key.LeftControl:
221
+ return "LeftControl";
222
+ case Key.RightControl:
223
+ return "RightControl";
224
+ case Key.Backspace:
225
+ return "Backspace";
226
+ case Key.Delete:
227
+ return "Delete";
201
228
  }
202
229
  }
203
230
 
231
+ //% whenUsed
232
+ let _buttonsPendingInit: KeyButton[];
233
+
234
+ let defaultRepeatDelay = 500;
235
+ let defaultRepeatInterval = 30;
236
+
237
+ type KeyHandler = () => void;
204
238
 
205
239
  //% fixedInstances
206
240
  export class KeyButton {
207
241
  protected _pressed: boolean;
208
- protected pressHandler: () => void;
209
- protected pressListeners: (() => void)[];
210
- protected releaseHandler: () => void;
211
- protected releaseListeners: (() => void)[];
242
+ public repeatDelay: number;
243
+ public repeatInterval: number;
244
+ private _repeatCount: number;
245
+ private _pressedElapsed: number;
212
246
 
213
- constructor(public id: number) {
214
- control.onEvent(Event.KeyUp, this.id, () => this.setPressed(false), 16);
215
- control.onEvent(Event.KeyDown, this.id, () => this.setPressed(true), 16);
247
+ protected sceneStack: _SceneButtonHandlers<KeyHandler>[];
248
+
249
+ protected get state(): _SceneButtonHandlers<KeyHandler> {
250
+ return this.sceneStack[this.sceneStack.length - 1];
251
+ }
216
252
 
253
+ constructor(public id: number) {
254
+ // use internalOnEvent so that events fire regardless of the current scene
255
+ control.internalOnEvent(INTERNAL_KEY_UP, this.id, () => this.setPressed(false), 16);
256
+ control.internalOnEvent(INTERNAL_KEY_DOWN, this.id, () => this.setPressed(true), 16);
217
257
  this._pressed = false;
218
- this.pressListeners = [];
219
- this.releaseListeners = [];
258
+
259
+ // this code may run before game/scene.ts, in which case calling this.__registerUpdate
260
+ // will trigger an exception. to prevent that, start a thread that pauses until we
261
+ // detect that an event context has been registered and then call it
262
+ if (control.eventContext()) {
263
+ this.__registerUpdate();
264
+ }
265
+ else {
266
+ if (!_buttonsPendingInit) {
267
+ _buttonsPendingInit = [];
268
+ control.runInBackground(() => {
269
+ pauseUntil(() => !!control.eventContext());
270
+ for (const button of _buttonsPendingInit) {
271
+ button.__registerUpdate();
272
+ }
273
+ _buttonsPendingInit = undefined;
274
+ });
275
+ }
276
+ _buttonsPendingInit.push(this);
277
+ }
278
+
279
+ this.sceneStack = [new _SceneButtonHandlers<KeyHandler>(id, invokeKeyHandler)];
280
+
281
+ game.addScenePushHandler(() => {
282
+ this.sceneStack.push(new _SceneButtonHandlers<KeyHandler>(id, invokeKeyHandler));
283
+ this.__registerUpdate();
284
+ });
285
+ game.addScenePopHandler(() => {
286
+ this.sceneStack.pop();
287
+ if (this.sceneStack.length === 0) {
288
+ this.sceneStack = [new _SceneButtonHandlers<KeyHandler>(id, invokeKeyHandler)];
289
+ this.__registerUpdate();
290
+ }
291
+ });
220
292
  }
221
293
 
222
294
  setPressed(pressed: boolean) {
295
+ if (this._pressed === pressed) return;
296
+
223
297
  this._pressed = pressed;
224
298
  if (pressed) {
225
- if (this.pressHandler) {
226
- this.pressHandler();
227
- }
228
- for (const handler of this.pressListeners) {
229
- handler();
230
- }
299
+ this._repeatCount = 0;
300
+ this._pressedElapsed = 0;
301
+ control.raiseEvent(KeyEvent.Pressed, this.id);
231
302
  }
232
303
  else {
233
- if (this.releaseHandler) {
234
- this.releaseHandler();
235
- }
236
- for (const handler of this.releaseListeners) {
237
- handler();
238
- }
304
+ control.raiseEvent(KeyEvent.Released, this.id);
239
305
  }
240
306
  }
241
307
 
@@ -244,12 +310,7 @@ namespace browserEvents {
244
310
  //% group="Keyboard"
245
311
  //% weight=100
246
312
  onEvent(event: KeyEvent, handler: () => void) {
247
- if (event === KeyEvent.Pressed) {
248
- this.pressHandler = handler;
249
- }
250
- else {
251
- this.releaseHandler = handler;
252
- }
313
+ this.state.onEvent(event, handler);
253
314
  }
254
315
 
255
316
  //% blockId=browserEvents_key_isPressed
@@ -269,22 +330,38 @@ namespace browserEvents {
269
330
  }
270
331
 
271
332
  addEventListener(event: KeyEvent, handler: () => void) {
272
- if (event === KeyEvent.Pressed) {
273
- this.pressListeners.push(handler);
274
- }
275
- else {
276
- this.releaseListeners.push(handler);
277
- }
333
+ this.state.addEventListener(event, handler);
278
334
  }
279
335
 
280
336
  removeEventListener(event: KeyEvent, handler: () => void) {
281
- if (event === KeyEvent.Pressed) {
282
- this.pressListeners = this.pressListeners.filter(p => p !== handler);
283
- }
284
- else {
285
- this.releaseListeners = this.releaseListeners.filter(p => p !== handler);
337
+ this.state.removeEventListener(event, handler);
338
+ }
339
+
340
+ __update() {
341
+ const delay = this.repeatDelay === undefined ? defaultRepeatDelay : this.repeatDelay;
342
+ const interval = this.repeatInterval === undefined ? defaultRepeatInterval : this.repeatInterval;
343
+ if (!this._pressed) return;
344
+ this._pressedElapsed += game.eventContext().deltaTimeMillis;
345
+
346
+ // inital delay
347
+ if (this._pressedElapsed < delay)
348
+ return;
349
+
350
+ // repeat count for this step
351
+ const count = Math.floor((this._pressedElapsed - delay - interval) / interval);
352
+ if (count != this._repeatCount) {
353
+ this._repeatCount = count;
354
+ control.raiseEvent(KeyEvent.Repeat, this.id);
286
355
  }
287
356
  }
357
+
358
+ __registerUpdate() {
359
+ game.eventContext().registerFrameHandler(scene.CONTROLLER_PRIORITY, () => this.__update());
360
+ }
361
+ }
362
+
363
+ function invokeKeyHandler(handler: KeyHandler) {
364
+ handler();
288
365
  }
289
366
 
290
367
  //% fixedInstance whenUsed
@@ -476,6 +553,35 @@ namespace browserEvents {
476
553
  //% fixedInstance whenUsed
477
554
  export const Home = new KeyButton(Key.Home);
478
555
 
556
+ //% fixedInstance whenUsed
557
+ export const LeftShift = new KeyButton(Key.LeftShift);
558
+
559
+ //% fixedInstance whenUsed
560
+ export const RightShift = new KeyButton(Key.RightShift);
561
+
562
+ //% fixedInstance whenUsed
563
+ export const LeftControl = new KeyButton(Key.LeftControl);
564
+
565
+ //% fixedInstance whenUsed
566
+ export const RightControl = new KeyButton(Key.RightControl);
567
+
568
+ //% fixedInstance whenUsed
569
+ export const Backspace = new KeyButton(Key.Backspace);
570
+
571
+ //% fixedInstance whenUsed
572
+ export const Delete = new KeyButton(Key.Delete);
573
+
479
574
  //% fixedInstance whenUsed
480
575
  export const Any = new KeyButton(0);
576
+
577
+ //% blockId=browser_events_setKeyboardRepeatDefault
578
+ //% block="set keyboard repeat delay $delay ms interval $interval ms"
579
+ //% delay.defl=500
580
+ //% interval.defl=30
581
+ //% group="Keyboard"
582
+ //% weight=0
583
+ export function setKeyboardRepeatDefault(delay: number, interval: number) {
584
+ defaultRepeatDelay = Math.max(delay, 0);
585
+ defaultRepeatInterval = Math.max(interval, 1);
586
+ }
481
587
  }
@@ -9,6 +9,8 @@ declare namespace browserEvents {
9
9
  function wheelDy(): number;
10
10
  //% shim=browserEvents::wheelDz
11
11
  function wheelDz(): number;
12
+ //% shim=browserEvents::_setCursorVisible
13
+ function _setCursorVisible(visible: boolean): void;
12
14
 
13
15
  //% shim=browserEvents::currentTime
14
16
  function currentTime(): number;
@@ -62,15 +62,44 @@ namespace pxsim.browserEvents {
62
62
  ArrowRight = 39,
63
63
  PageDown = 34,
64
64
  End = 35,
65
- Home = 36
65
+ Home = 36,
66
+ LeftShift = 1016,
67
+ RightShift = 1017,
68
+ LeftControl = 1018,
69
+ RightControl = 1019,
70
+ Backspace = 8,
71
+ Delete = 46,
66
72
  }
67
73
 
68
74
  export function onKeyboardEvent(event: KeyboardEvent, pressed: boolean) {
75
+ const eventValue = getValueForKey(event);
76
+
77
+ fireEvent(eventValue as Key, pressed);
78
+
79
+ if (eventValue === Key.Shift) {
80
+ if (event.location === event.DOM_KEY_LOCATION_LEFT) {
81
+ fireEvent(Key.LeftShift, pressed);
82
+ }
83
+ else if (event.location === event.DOM_KEY_LOCATION_RIGHT) {
84
+ fireEvent(Key.RightShift, pressed);
85
+ }
86
+ }
87
+ if (eventValue === Key.Control) {
88
+ if (event.location === event.DOM_KEY_LOCATION_LEFT) {
89
+ fireEvent(Key.LeftControl, pressed);
90
+ }
91
+ else if (event.location === event.DOM_KEY_LOCATION_RIGHT) {
92
+ fireEvent(Key.RightControl, pressed);
93
+ }
94
+ }
95
+ }
96
+
97
+ function fireEvent(key: Key, pressed: boolean) {
69
98
  if (pressed) {
70
- board().bus.queue(6866, getValueForKey(event));
99
+ board().bus.queue(INTERNAL_KEY_DOWN, key);
71
100
  }
72
101
  else {
73
- board().bus.queue(6867, getValueForKey(event));
102
+ board().bus.queue(INTERNAL_KEY_UP, key);
74
103
  }
75
104
  }
76
105
 
@@ -249,6 +278,10 @@ namespace pxsim.browserEvents {
249
278
  return Key.End;
250
279
  case "Home":
251
280
  return Key.Home;
281
+ case "Delete":
282
+ return Key.Delete;
283
+ case "Backspace":
284
+ return Key.Backspace;
252
285
  default:
253
286
  return 0;
254
287
  }
@@ -5,6 +5,11 @@ namespace pxsim.browserEvents {
5
5
 
6
6
  const THROTTLE_INTERVAL = 50;
7
7
 
8
+ export const INTERNAL_KEY_DOWN = 6870;
9
+ export const INTERNAL_KEY_UP = 6871;
10
+ export const INTERNAL_POINTER_DOWN = 6868;
11
+ export const INTERNAL_POINTER_UP = 6869;
12
+
8
13
  export type MouseEvent = "pointerdown" | "pointerup" | "pointermove" | "pointerleave" | "pointerenter" | "pointercancel" | "pointerover" | "pointerout";
9
14
  export class MouseState {
10
15
  protected x: number;
@@ -43,10 +48,19 @@ namespace pxsim.browserEvents {
43
48
  "pointerout",
44
49
  ];
45
50
 
51
+ let eventId = 6857 + events.indexOf(event.type);
52
+
53
+ if (event.type === "pointerdown") {
54
+ eventId = INTERNAL_POINTER_DOWN;
55
+ }
56
+ else if (event.type === "pointerup") {
57
+ eventId = INTERNAL_POINTER_UP;
58
+ }
59
+
46
60
  // We add 1 to the button here because the left button is 0 and
47
61
  // that's used as a wildcard in our event bus
48
62
  board().bus.queue(
49
- 6857 + events.indexOf(event.type),
63
+ eventId,
50
64
  (event.button || 0) + 1
51
65
  );
52
66
  }
@@ -56,7 +56,7 @@ const pxsim_pxtrt = pxsim.pxtrt;
56
56
  const pxsim_numops = pxsim.numops;
57
57
 
58
58
 
59
- function _main___P141050(s) {
59
+ function _main___P141198(s) {
60
60
  let r0 = s.r0, step = s.pc;
61
61
  s.pc = -1;
62
62
 
@@ -66,19 +66,19 @@ if (yieldSteps-- < 0 && maybeYield(s, step, r0) || runtime !== pxsim.runtime) re
66
66
  switch (step) {
67
67
  case 0:
68
68
 
69
- globals._intervals___141293 = (undefined);
70
- globals._pollEventQueue___141306 = (undefined);
69
+ globals._intervals___141441 = (undefined);
70
+ globals._pollEventQueue___141454 = (undefined);
71
71
  r0 = undefined;
72
72
  return leave(s, r0)
73
73
  default: oops()
74
74
  } } }
75
- _main___P141050.info = {"start":0,"length":0,"line":0,"column":0,"endLine":0,"endColumn":0,"fileName":"colorbuffer.ts","functionName":"<main>","argumentNames":[]}
76
- _main___P141050.continuations = [ ]
75
+ _main___P141198.info = {"start":0,"length":0,"line":0,"column":0,"endLine":0,"endColumn":0,"fileName":"colorbuffer.ts","functionName":"<main>","argumentNames":[]}
76
+ _main___P141198.continuations = [ ]
77
77
 
78
- function _main___P141050_mk(s) {
78
+ function _main___P141198_mk(s) {
79
79
  checkStack(s.depth);
80
80
  return {
81
- parent: s, fn: _main___P141050, depth: s.depth + 1,
81
+ parent: s, fn: _main___P141198, depth: s.depth + 1,
82
82
  pc: 0, retval: undefined, r0: undefined, overwrittenPC: false, lambdaArgs: null,
83
83
  } }
84
84
 
@@ -88,5 +88,5 @@ function _main___P141050_mk(s) {
88
88
 
89
89
  const breakpoints = setupDebugger(1, [])
90
90
 
91
- return _main___P141050
91
+ return _main___P141198
92
92
  })
@@ -56,7 +56,7 @@ const pxsim_pxtrt = pxsim.pxtrt;
56
56
  const pxsim_numops = pxsim.numops;
57
57
 
58
58
 
59
- function _main___P98645(s) {
59
+ function _main___P98756(s) {
60
60
  let r0 = s.r0, step = s.pc;
61
61
  s.pc = -1;
62
62
 
@@ -66,19 +66,19 @@ if (yieldSteps-- < 0 && maybeYield(s, step, r0) || runtime !== pxsim.runtime) re
66
66
  switch (step) {
67
67
  case 0:
68
68
 
69
- globals._intervals___98888 = (undefined);
70
- globals._pollEventQueue___98901 = (undefined);
69
+ globals._intervals___98999 = (undefined);
70
+ globals._pollEventQueue___99012 = (undefined);
71
71
  r0 = undefined;
72
72
  return leave(s, r0)
73
73
  default: oops()
74
74
  } } }
75
- _main___P98645.info = {"start":0,"length":0,"line":0,"column":0,"endLine":0,"endColumn":0,"fileName":"tcs34725.ts","functionName":"<main>","argumentNames":[]}
76
- _main___P98645.continuations = [ ]
75
+ _main___P98756.info = {"start":0,"length":0,"line":0,"column":0,"endLine":0,"endColumn":0,"fileName":"tcs34725.ts","functionName":"<main>","argumentNames":[]}
76
+ _main___P98756.continuations = [ ]
77
77
 
78
- function _main___P98645_mk(s) {
78
+ function _main___P98756_mk(s) {
79
79
  checkStack(s.depth);
80
80
  return {
81
- parent: s, fn: _main___P98645, depth: s.depth + 1,
81
+ parent: s, fn: _main___P98756, depth: s.depth + 1,
82
82
  pc: 0, retval: undefined, r0: undefined, overwrittenPC: false, lambdaArgs: null,
83
83
  } }
84
84
 
@@ -88,5 +88,5 @@ function _main___P98645_mk(s) {
88
88
 
89
89
  const breakpoints = setupDebugger(1, [])
90
90
 
91
- return _main___P98645
91
+ return _main___P98756
92
92
  })