{
}
}
+ protected [EVENT.SESSION_CURSORS](cursors: message.SessionCursor[]) {
+ // TODO: State retention logic.
+ Vue.set(this._state, 'cursors', cursors)
+ }
+
/////////////////////////////
// Control Events
/////////////////////////////
diff --git a/src/component/main.vue b/src/component/main.vue
index 824d6e3f..b64b197f 100644
--- a/src/component/main.vue
+++ b/src/component/main.vue
@@ -3,6 +3,7 @@
+
void
+
+export interface Dimension {
+ width: number
+ height: number
+}
diff --git a/src/component/types/events.ts b/src/component/types/events.ts
index 3e81d305..ea74e34e 100644
--- a/src/component/types/events.ts
+++ b/src/component/types/events.ts
@@ -14,6 +14,7 @@ export const SESSION_CREATED = 'session/created'
export const SESSION_DELETED = 'session/deleted'
export const SESSION_PROFILE = 'session/profile'
export const SESSION_STATE = 'session/state'
+export const SESSION_CURSORS = 'session/cursors'
export const CONTROL_HOST = 'control/host'
export const CONTROL_RELEASE = 'control/release'
diff --git a/src/component/types/messages.ts b/src/component/types/messages.ts
index a607cbb6..8446b118 100644
--- a/src/component/types/messages.ts
+++ b/src/component/types/messages.ts
@@ -87,6 +87,12 @@ export interface SessionData {
is_watching: boolean
}
+export interface SessionCursor {
+ id: string
+ x: number
+ y: number
+}
+
/////////////////////////////
// Control
/////////////////////////////
diff --git a/src/component/types/state.ts b/src/component/types/state.ts
index c3227c2c..cf6e975e 100644
--- a/src/component/types/state.ts
+++ b/src/component/types/state.ts
@@ -9,6 +9,7 @@ export default interface State {
screen: Screen
session_id: string | null
sessions: Record
+ cursors: SessionCursor[]
}
/////////////////////////////
@@ -118,3 +119,9 @@ export interface Session {
profile: MemberProfile
state: SessionState
}
+
+export interface SessionCursor {
+ id: string
+ x: number
+ y: number
+}