@netless/window-manager 0.4.52 → 0.4.54

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@netless/window-manager",
3
- "version": "0.4.52",
3
+ "version": "0.4.54",
4
4
  "description": "",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.es.js",
@@ -3,7 +3,6 @@ import { Cursor } from "./Cursor";
3
3
  import { CursorState, Events } from "../constants";
4
4
  import { emitter } from "../InternalEmitter";
5
5
  import { SideEffectManager } from "side-effect-manager";
6
- import { throttle } from "lodash";
7
6
  import { WindowManager } from "../index";
8
7
  import type { CursorMovePayload, ApplianceIcons } from "../index";
9
8
  import type { PositionType } from "../AttributesDelegate";
@@ -106,15 +105,27 @@ export class CursorManager {
106
105
  return this.manager.focusApp?.view;
107
106
  }
108
107
 
109
- private mouseMoveListener = throttle((event: PointerEvent) => {
110
- const isTouch = event.pointerType === "touch";
111
- if (isTouch) {
112
- if (!event.isPrimary) return;
113
- }
108
+ private mouseMoveListener_ = (event: PointerEvent, isTouch: boolean) => {
114
109
  const type = this.getType(event);
115
110
  this.updateCursor(type, event.clientX, event.clientY);
116
111
  isTouch && this.showPencilEraserIfNeeded(type, event.clientX, event.clientY);
117
- }, 48);
112
+ }
113
+
114
+ private mouseMoveTimer = 0;
115
+ private mouseMoveListener = (event: PointerEvent) => {
116
+ const isTouch = event.pointerType === "touch";
117
+ if (isTouch && !event.isPrimary) return;
118
+
119
+ const now = Date.now()
120
+ if (now - this.mouseMoveTimer > 48) {
121
+ this.mouseMoveTimer = now;
122
+ this.mouseMoveListener_(event, isTouch);
123
+ }
124
+ }
125
+
126
+ private mouseLeaveListener = () => {
127
+ this.hideCursor(this.manager.uid);
128
+ }
118
129
 
119
130
  private showPencilEraserIfNeeded(event: EventType, clientX: number, clientY: number) {
120
131
  const self = findMemberByUid(this.manager.room, this.manager.uid);
@@ -187,10 +198,6 @@ export class CursorManager {
187
198
  }
188
199
  };
189
200
 
190
- private mouseLeaveListener = () => {
191
- this.hideCursor(this.manager.uid);
192
- };
193
-
194
201
  public updateContainerRect() {
195
202
  this.containerRect = WindowManager.container?.getBoundingClientRect();
196
203
  this.wrapperRect = WindowManager.wrapper?.getBoundingClientRect();
package/src/Helper.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import { getVersionNumber, wait } from "./Utils/Common";
2
2
  import { log } from "./Utils/log";
3
3
  import { REQUIRE_VERSION } from "./constants";
4
+ import type { Room, RoomMember } from "white-web-sdk";
4
5
  import { WhiteVersion } from "white-web-sdk";
5
6
  import { WhiteWebSDKInvalidError } from "./Utils/error";
6
7
  import { WindowManager } from "./index";
7
- import type { Room } from "white-web-sdk";
8
8
 
9
9
  export const setupWrapper = (
10
10
  root: HTMLElement
@@ -43,9 +43,17 @@ export const checkVersion = () => {
43
43
  };
44
44
 
45
45
  export const findMemberByUid = (room: Room | undefined, uid: string) => {
46
- const roomMembers = room?.state.roomMembers;
47
- return roomMembers?.find(member => member.payload?.uid === uid);
48
- };
46
+ const roomMembers = room?.state.roomMembers || [];
47
+ let maxMemberId = 0;
48
+ let result: RoomMember | undefined = undefined;
49
+ for (const member of roomMembers) {
50
+ if (member.payload?.uid === uid && maxMemberId < member.memberId) {
51
+ maxMemberId = member.memberId;
52
+ result = member;
53
+ }
54
+ }
55
+ return result;
56
+ }
49
57
 
50
58
  export const createInvisiblePlugin = async (room: Room) => {
51
59
  try {