aboutsummaryrefslogtreecommitdiffstats
path: root/packages/shared
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2021-12-23 21:29:26 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2021-12-23 21:29:26 +0100
commitd303f2e3415237e1a519db21ad4e089c2ba7e9f9 (patch)
tree5d562dcaf7bb9c83c1930c7d7cf1b2c9de75e15b /packages/shared
parentbuild: Enable asar (diff)
downloadsophie-d303f2e3415237e1a519db21ad4e089c2ba7e9f9.tar.gz
sophie-d303f2e3415237e1a519db21ad4e089c2ba7e9f9.tar.zst
sophie-d303f2e3415237e1a519db21ad4e089c2ba7e9f9.zip
feat: Add BrowserView and synchronize its position
Diffstat (limited to 'packages/shared')
-rw-r--r--packages/shared/package.json3
-rw-r--r--packages/shared/src/contextBridge/SophieRenderer.ts6
-rw-r--r--packages/shared/src/index.ts11
-rw-r--r--packages/shared/src/ipc/MainToRendererIpcMessage.ts4
-rw-r--r--packages/shared/src/ipc/RendererToMainIpcMessage.ts5
-rw-r--r--packages/shared/src/schemas.ts34
-rw-r--r--packages/shared/src/stores/SharedStore.ts12
-rw-r--r--packages/shared/vite.config.js1
8 files changed, 68 insertions, 8 deletions
diff --git a/packages/shared/package.json b/packages/shared/package.json
index 83aec54..f5d4f90 100644
--- a/packages/shared/package.json
+++ b/packages/shared/package.json
@@ -17,6 +17,7 @@
17 }, 17 },
18 "dependencies": { 18 "dependencies": {
19 "mobx": "^6.3.10", 19 "mobx": "^6.3.10",
20 "mobx-state-tree": "^5.1.0" 20 "mobx-state-tree": "^5.1.0",
21 "zod": "^3.11.6"
21 } 22 }
22} 23}
diff --git a/packages/shared/src/contextBridge/SophieRenderer.ts b/packages/shared/src/contextBridge/SophieRenderer.ts
index 0d82d56..f2e2180 100644
--- a/packages/shared/src/contextBridge/SophieRenderer.ts
+++ b/packages/shared/src/contextBridge/SophieRenderer.ts
@@ -20,8 +20,12 @@
20 20
21import { SharedStoreListener } from '../stores/SharedStore'; 21import { SharedStoreListener } from '../stores/SharedStore';
22 22
23import { BrowserViewBounds, PaletteMode } from '../schemas';
24
23export interface SophieRenderer { 25export interface SophieRenderer {
24 setSharedStoreListener(listener: SharedStoreListener): void; 26 setSharedStoreListener(listener: SharedStoreListener): void;
25 27
26 buttonClick(): void; 28 setBrowserViewBounds(bounds: BrowserViewBounds): void;
29
30 setPaletteMode(mode: PaletteMode): void;
27} 31}
diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts
index 250700f..0a1ec40 100644
--- a/packages/shared/src/index.ts
+++ b/packages/shared/src/index.ts
@@ -24,9 +24,18 @@ export { MainToRendererIpcMessage } from './ipc/MainToRendererIpcMessage';
24export { RendererToMainIpcMessage } from './ipc/RendererToMainIpcMessage'; 24export { RendererToMainIpcMessage } from './ipc/RendererToMainIpcMessage';
25 25
26export type { 26export type {
27 BrowserViewBounds,
28 PaletteMode,
29} from './schemas';
30export {
31 browserViewBounds,
32 paletteMode
33} from './schemas';
34
35export type {
27 SharedStore, 36 SharedStore,
28 SharedStoreListener, 37 SharedStoreListener,
29 SharedStoreSnapshotIn, 38 SharedStoreSnapshotIn,
30 SharedStoreSnapshotOut, 39 SharedStoreSnapshotOut,
31} from './stores/SharedStore'; 40} from './stores/SharedStore';
32export { sharedStore } from './stores/SharedStore'; 41export { emptySharedStore, sharedStore } from './stores/SharedStore';
diff --git a/packages/shared/src/ipc/MainToRendererIpcMessage.ts b/packages/shared/src/ipc/MainToRendererIpcMessage.ts
index e68d676..92da489 100644
--- a/packages/shared/src/ipc/MainToRendererIpcMessage.ts
+++ b/packages/shared/src/ipc/MainToRendererIpcMessage.ts
@@ -19,6 +19,6 @@
19 */ 19 */
20 20
21export enum MainToRendererIpcMessage { 21export enum MainToRendererIpcMessage {
22 SharedStoreSnapshot = "sophie-shared-store-snapshot", 22 SharedStoreSnapshot = 'sophie-shared-store-snapshot',
23 SharedStorePatch = "sophie-shared-store-patch", 23 SharedStorePatch = 'sophie-shared-store-patch',
24} 24}
diff --git a/packages/shared/src/ipc/RendererToMainIpcMessage.ts b/packages/shared/src/ipc/RendererToMainIpcMessage.ts
index a7aa664..ba354d1 100644
--- a/packages/shared/src/ipc/RendererToMainIpcMessage.ts
+++ b/packages/shared/src/ipc/RendererToMainIpcMessage.ts
@@ -19,6 +19,7 @@
19 */ 19 */
20 20
21export enum RendererToMainIpcMessage { 21export enum RendererToMainIpcMessage {
22 SharedStoreSnapshotRequest = "sophie-shared-store-snapshot-request", 22 SharedStoreSnapshotRequest = 'sophie-shared-store-snapshot-request',
23 ButtonClick = "sophie-button-click" 23 SetBrowserViewBounds = 'sophie-set-browser-view-bounds',
24 SetPaletteMode = 'sophie-set-palette-mode',
24} 25}
diff --git a/packages/shared/src/schemas.ts b/packages/shared/src/schemas.ts
new file mode 100644
index 0000000..8827467
--- /dev/null
+++ b/packages/shared/src/schemas.ts
@@ -0,0 +1,34 @@
1/*
2 * Copyright (C) 2021-2022 Kristóf Marussy <kristof@marussy.com>
3 *
4 * This file is part of Sophie.
5 *
6 * Sophie is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Affero General Public License as
8 * published by the Free Software Foundation, version 3.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 *
18 * SPDX-License-Identifier: AGPL-3.0-only
19 */
20
21import { z } from 'zod';
22
23export const browserViewBounds = z.object({
24 x: z.number().nonnegative(),
25 y: z.number().nonnegative(),
26 width: z.number().nonnegative(),
27 height: z.number().nonnegative(),
28});
29
30export type BrowserViewBounds = z.infer<typeof browserViewBounds>;
31
32export const paletteMode = z.enum(['light', 'dark']);
33
34export type PaletteMode = z.infer<typeof paletteMode>;
diff --git a/packages/shared/src/stores/SharedStore.ts b/packages/shared/src/stores/SharedStore.ts
index 7fd65b7..7c2b742 100644
--- a/packages/shared/src/stores/SharedStore.ts
+++ b/packages/shared/src/stores/SharedStore.ts
@@ -27,10 +27,20 @@ import {
27} from 'mobx-state-tree'; 27} from 'mobx-state-tree';
28 28
29export const sharedStore = types.model("SharedStore", { 29export const sharedStore = types.model("SharedStore", {
30 browserViewBounds: types.model("BrowserViewBoundsStore", {
31 x: 0,
32 y: 0,
33 width: 0,
34 height: 0,
35 }),
30 shouldUseDarkColors: true, 36 shouldUseDarkColors: true,
31 clickCount: 0
32}); 37});
33 38
39export const emptySharedStore: SharedStoreSnapshotIn = {
40 browserViewBounds: {
41 },
42};
43
34export interface SharedStore extends Instance<typeof sharedStore> {} 44export interface SharedStore extends Instance<typeof sharedStore> {}
35 45
36export interface SharedStoreSnapshotIn extends SnapshotIn<typeof sharedStore> {} 46export interface SharedStoreSnapshotIn extends SnapshotIn<typeof sharedStore> {}
diff --git a/packages/shared/vite.config.js b/packages/shared/vite.config.js
index 76bd965..2867541 100644
--- a/packages/shared/vite.config.js
+++ b/packages/shared/vite.config.js
@@ -29,6 +29,7 @@ const config = makeConfig({
29 external: [ 29 external: [
30 'mobx', 30 'mobx',
31 'mobx-state-tree', 31 'mobx-state-tree',
32 'zod',
32 ...builtinModules, 33 ...builtinModules,
33 ], 34 ],
34 }, 35 },