@phreshos/client 0.1.53 → 0.1.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/dist/desktop/viewport.d.ts +11 -5
- package/dist/desktop/viewport.js +42 -18
- package/package.json +3 -3
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
import type { DesktopViewportEvents,
|
|
1
|
+
import type { DesktopOffset, DesktopViewportEvents, WritableDesktopViewportSource } from "@phreshos/core";
|
|
2
2
|
import Events from "../events.js";
|
|
3
|
-
/**
|
|
4
|
-
export default class ClientViewport extends Events<DesktopViewportEvents, never> implements
|
|
3
|
+
/** The Desktop viewport containing this Client Endpoint: its size, where it looks on the plane, and moving that view. */
|
|
4
|
+
export default class ClientViewport extends Events<DesktopViewportEvents, never> implements WritableDesktopViewportSource {
|
|
5
5
|
constructor();
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
size(): Promise<Readonly<{
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
8
9
|
}>>;
|
|
10
|
+
offset(): Promise<Readonly<{
|
|
11
|
+
x: number;
|
|
12
|
+
y: number;
|
|
13
|
+
}>>;
|
|
14
|
+
move(offset: DesktopOffset): Promise<void>;
|
|
9
15
|
}
|
package/dist/desktop/viewport.js
CHANGED
|
@@ -1,33 +1,57 @@
|
|
|
1
1
|
import Events from "../events.js";
|
|
2
2
|
import wire from "../wire.js";
|
|
3
|
-
/**
|
|
3
|
+
/** The Desktop viewport containing this Client Endpoint: its size, where it looks on the plane, and moving that view. */
|
|
4
4
|
export default class ClientViewport extends Events {
|
|
5
5
|
constructor() {
|
|
6
6
|
super((event, listener, impossible) => wire.on("host-desktop-viewport", event, value => {
|
|
7
|
-
const
|
|
8
|
-
if (
|
|
9
|
-
listener(
|
|
7
|
+
const parsed = parse(event, value);
|
|
8
|
+
if (parsed)
|
|
9
|
+
listener(parsed);
|
|
10
10
|
}, null, impossible), observer => wire.onAll("host-desktop-viewport", (event, value) => {
|
|
11
|
-
const
|
|
12
|
-
if (typeof event === "string" &&
|
|
13
|
-
observer(event,
|
|
11
|
+
const parsed = typeof event === "string" ? parse(event, value) : null;
|
|
12
|
+
if (typeof event === "string" && parsed)
|
|
13
|
+
observer(event, parsed);
|
|
14
14
|
}));
|
|
15
15
|
}
|
|
16
|
-
async
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
return snapshot;
|
|
16
|
+
async size() {
|
|
17
|
+
const size = createSize((await state()).size);
|
|
18
|
+
if (!size)
|
|
19
|
+
throw new Error("The System returned an invalid Desktop size");
|
|
20
|
+
return size;
|
|
22
21
|
}
|
|
22
|
+
async offset() {
|
|
23
|
+
const offset = createOffset((await state()).offset);
|
|
24
|
+
if (!offset)
|
|
25
|
+
throw new Error("The System returned an invalid Desktop offset");
|
|
26
|
+
return offset;
|
|
27
|
+
}
|
|
28
|
+
async move(offset) {
|
|
29
|
+
const target = createOffset(offset);
|
|
30
|
+
if (!target)
|
|
31
|
+
throw new Error("A Desktop offset needs finite x and y");
|
|
32
|
+
await wire.request(["moveDesktopViewport", target]);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async function state() {
|
|
36
|
+
const answer = await wire.request(["desktopViewport"]);
|
|
37
|
+
return record(answer[0]) ? answer[0] : {};
|
|
23
38
|
}
|
|
24
|
-
function
|
|
25
|
-
if (
|
|
39
|
+
function parse(event, value) {
|
|
40
|
+
if (event === "resize")
|
|
41
|
+
return createSize(value);
|
|
42
|
+
if (event === "move")
|
|
43
|
+
return createOffset(value);
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
function createSize(value) {
|
|
47
|
+
if (!record(value) || !finite(value.width) || !finite(value.height))
|
|
26
48
|
return null;
|
|
27
|
-
|
|
28
|
-
|
|
49
|
+
return Object.freeze({ width: value.width, height: value.height });
|
|
50
|
+
}
|
|
51
|
+
function createOffset(value) {
|
|
52
|
+
if (!record(value) || !finite(value.x) || !finite(value.y))
|
|
29
53
|
return null;
|
|
30
|
-
return Object.freeze({
|
|
54
|
+
return Object.freeze({ x: value.x, y: value.y });
|
|
31
55
|
}
|
|
32
56
|
function record(value) {
|
|
33
57
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@phreshos/client",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.54",
|
|
4
4
|
"description": "The SDK used by a Program's client endpoint.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/main.js",
|
|
@@ -46,13 +46,13 @@
|
|
|
46
46
|
"test": "vitest run --project default"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
|
-
"@phreshos/core": "^0.1.
|
|
49
|
+
"@phreshos/core": "^0.1.64"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
52
|
"@the-link/messagepack": "^0.1.0"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@phreshos/core": "^0.1.
|
|
55
|
+
"@phreshos/core": "^0.1.64",
|
|
56
56
|
"typescript": "^6.0.3",
|
|
57
57
|
"vitest": "^4.1.10"
|
|
58
58
|
}
|