@edv4h/usketch-plugin-portal 0.2.4 → 0.3.0
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/plugin.d.ts +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +77 -8
- package/dist/plugin.js.map +1 -1
- package/dist/portal-layer.d.ts +14 -1
- package/dist/portal-layer.d.ts.map +1 -1
- package/dist/portal-layer.js +32 -8
- package/dist/portal-layer.js.map +1 -1
- package/dist/portal-store.d.ts +13 -0
- package/dist/portal-store.d.ts.map +1 -1
- package/dist/portal-store.js +13 -8
- package/dist/portal-store.js.map +1 -1
- package/package.json +2 -2
package/dist/plugin.d.ts
CHANGED
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":"AAAA,OAAO,EAMN,KAAK,aAAa,EAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC;AAC9B,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,mBAAmB,CAAC;AAGnE,MAAM,WAAW,mBAAmB;IACnC,iEAAiE;IACjE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;IACX,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;iCAE6B;IAC7B,UAAU,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC;CACvC;AAID;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,aAAa,CA0I9E"}
|
package/dist/plugin.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { generateId, } from "@edv4h/usketch-shared";
|
|
2
3
|
import { PortalLayer } from "./portal-layer.js";
|
|
3
4
|
import { createPortalStore, defaultPortalBox } from "./portal-store.js";
|
|
4
5
|
const LAYER_ID = "portal";
|
|
@@ -19,13 +20,6 @@ export function createPortalPlugin(options) {
|
|
|
19
20
|
userId: options.userId ?? "local",
|
|
20
21
|
boardId: options.boardId,
|
|
21
22
|
});
|
|
22
|
-
ctx.layers.register({
|
|
23
|
-
id: LAYER_ID,
|
|
24
|
-
order: 150,
|
|
25
|
-
fixed: true,
|
|
26
|
-
render: () => (_jsx(PortalLayer, { portalStore: store, store: ctx.store, shapes: ctx.shapes, Chrome: options.components?.Chrome })),
|
|
27
|
-
});
|
|
28
|
-
ctx.events.emit("layers:changed", {});
|
|
29
23
|
const boundsOf = (shapeId) => {
|
|
30
24
|
const shape = ctx.store.getShape(shapeId);
|
|
31
25
|
if (!shape)
|
|
@@ -35,6 +29,35 @@ export function createPortalPlugin(options) {
|
|
|
35
29
|
? def.getBounds(shape)
|
|
36
30
|
: { x: shape.x, y: shape.y, width: shape.width, height: shape.height };
|
|
37
31
|
};
|
|
32
|
+
// Restore a held portal's shape back to the canvas (undoable). Held
|
|
33
|
+
// portals own the only copy of the shape, so "closing" one restores it
|
|
34
|
+
// instead of discarding it.
|
|
35
|
+
const restoreToCanvas = (entry, shared) => {
|
|
36
|
+
const snapshot = entry.shape;
|
|
37
|
+
// Re-add the held shape unless there's no snapshot, or a shape with the
|
|
38
|
+
// same id is already on the canvas (conflict) — in which case we only
|
|
39
|
+
// detach the portal. Either way go through a Command so it's undoable.
|
|
40
|
+
const readd = !!snapshot && !ctx.store.getShape(snapshot.id);
|
|
41
|
+
ctx.commands.execute({
|
|
42
|
+
execute() {
|
|
43
|
+
if (readd && snapshot)
|
|
44
|
+
ctx.store.addShape(snapshot);
|
|
45
|
+
store.remove(entry.id);
|
|
46
|
+
},
|
|
47
|
+
undo() {
|
|
48
|
+
store.insert(entry, shared);
|
|
49
|
+
if (readd && snapshot)
|
|
50
|
+
ctx.store.deleteShape(snapshot.id);
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
ctx.layers.register({
|
|
55
|
+
id: LAYER_ID,
|
|
56
|
+
order: 150,
|
|
57
|
+
fixed: true,
|
|
58
|
+
render: () => (_jsx(PortalLayer, { portalStore: store, store: ctx.store, shapes: ctx.shapes, Chrome: options.components?.Chrome, onRestore: restoreToCanvas })),
|
|
59
|
+
});
|
|
60
|
+
ctx.events.emit("layers:changed", {});
|
|
38
61
|
const offActions = [
|
|
39
62
|
ctx.actions.register({
|
|
40
63
|
id: "portal:pin-selected",
|
|
@@ -56,13 +79,59 @@ export function createPortalPlugin(options) {
|
|
|
56
79
|
}
|
|
57
80
|
},
|
|
58
81
|
}),
|
|
82
|
+
// Stash: remove the selected shapes from the canvas and hold them in
|
|
83
|
+
// the portal (snapshot). Restore puts them back. Mirrors the card hand.
|
|
84
|
+
ctx.actions.register({
|
|
85
|
+
id: "portal:stash-selected",
|
|
86
|
+
label: "📥 選択を取り込む",
|
|
87
|
+
group: "Portal",
|
|
88
|
+
order: 0.5,
|
|
89
|
+
isEnabled: () => ctx.store.getSelection().size >= 1,
|
|
90
|
+
run: () => {
|
|
91
|
+
let i = 0;
|
|
92
|
+
for (const id of [...ctx.store.getSelection()]) {
|
|
93
|
+
const shape = ctx.store.getShape(id);
|
|
94
|
+
const bounds = boundsOf(id);
|
|
95
|
+
if (!shape || !bounds)
|
|
96
|
+
continue;
|
|
97
|
+
const snapshot = { ...shape };
|
|
98
|
+
const entry = {
|
|
99
|
+
id: generateId(),
|
|
100
|
+
shapeId: shape.id,
|
|
101
|
+
shape: snapshot,
|
|
102
|
+
...defaultPortalBox(bounds, i),
|
|
103
|
+
};
|
|
104
|
+
const cmd = {
|
|
105
|
+
execute() {
|
|
106
|
+
ctx.store.deleteShape(id);
|
|
107
|
+
store.insert(entry, false);
|
|
108
|
+
},
|
|
109
|
+
undo() {
|
|
110
|
+
store.remove(entry.id);
|
|
111
|
+
ctx.store.addShape(snapshot);
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
ctx.commands.execute(cmd);
|
|
115
|
+
i++;
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
}),
|
|
59
119
|
ctx.actions.register({
|
|
60
120
|
id: "portal:clear-mine",
|
|
61
121
|
label: "✕ 自分のポータルを全解除",
|
|
62
122
|
group: "Portal",
|
|
63
123
|
order: 1,
|
|
64
124
|
isEnabled: () => store.getAll().some((it) => !it.shared),
|
|
65
|
-
run: () =>
|
|
125
|
+
run: () => {
|
|
126
|
+
// Held portals hold the only copy → restore to canvas instead of
|
|
127
|
+
// discarding. Pin portals just detach.
|
|
128
|
+
for (const it of store.getAll().filter((x) => !x.shared)) {
|
|
129
|
+
if (it.entry.shape)
|
|
130
|
+
restoreToCanvas(it.entry, false);
|
|
131
|
+
else
|
|
132
|
+
store.remove(it.entry.id);
|
|
133
|
+
}
|
|
134
|
+
},
|
|
66
135
|
}),
|
|
67
136
|
];
|
|
68
137
|
return () => {
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":"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"}
|
package/dist/portal-layer.d.ts
CHANGED
|
@@ -3,9 +3,20 @@ import { type PortalEntry, type PortalStore } from "./portal-store.js";
|
|
|
3
3
|
export interface PortalChromeProps {
|
|
4
4
|
entry: PortalEntry;
|
|
5
5
|
shared: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* true when the portal **holds** the shape (removed from canvas); see {@link restore}.
|
|
8
|
+
* Optional for backward compatibility with existing custom chromes (defaults to false).
|
|
9
|
+
*/
|
|
10
|
+
held?: boolean;
|
|
6
11
|
title: string;
|
|
7
12
|
toggleShared: () => void;
|
|
8
13
|
remove: () => void;
|
|
14
|
+
/**
|
|
15
|
+
* Restore a held portal's shape to the canvas (present only when `held`).
|
|
16
|
+
* Held portals should offer this instead of a destructive close, since the
|
|
17
|
+
* portal holds the only copy of the shape.
|
|
18
|
+
*/
|
|
19
|
+
restore?: () => void;
|
|
9
20
|
/** Spread onto the drag handle (header). */
|
|
10
21
|
dragHandleProps: {
|
|
11
22
|
onPointerDown: (e: React.PointerEvent) => void;
|
|
@@ -20,10 +31,12 @@ export interface PortalChromeProps {
|
|
|
20
31
|
export type PortalChrome = (props: PortalChromeProps) => React.ReactElement;
|
|
21
32
|
/** Default portal panel chrome (overridable via the plugin's `components.Chrome`). */
|
|
22
33
|
export declare function DefaultPortalChrome(p: PortalChromeProps): import("react").JSX.Element;
|
|
23
|
-
export declare function PortalLayer({ portalStore, store, shapes, Chrome, }: {
|
|
34
|
+
export declare function PortalLayer({ portalStore, store, shapes, Chrome, onRestore, }: {
|
|
24
35
|
portalStore: PortalStore;
|
|
25
36
|
store: BoardStore;
|
|
26
37
|
shapes: ShapeRegistry;
|
|
27
38
|
Chrome?: PortalChrome;
|
|
39
|
+
/** Restore a held portal's shape to the canvas (undoable; provided by the plugin). */
|
|
40
|
+
onRestore?: (entry: PortalEntry, shared: boolean) => void;
|
|
28
41
|
}): import("react").JSX.Element;
|
|
29
42
|
//# sourceMappingURL=portal-layer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portal-layer.d.ts","sourceRoot":"","sources":["../src/portal-layer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAA0B,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE/F,OAAO,EAAmB,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA2ExF,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,4CAA4C;IAC5C,eAAe,EAAE;QAAE,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,KAAK,IAAI,CAAA;KAAE,CAAC;IACpE,mCAAmC;IACnC,iBAAiB,EAAE;QAAE,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,KAAK,IAAI,CAAA;KAAE,CAAC;IACtE,mEAAmE;IACnE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AACD,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,KAAK,CAAC,YAAY,CAAC;AAW5E,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,iBAAiB,+
|
|
1
|
+
{"version":3,"file":"portal-layer.d.ts","sourceRoot":"","sources":["../src/portal-layer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAA0B,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE/F,OAAO,EAAmB,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA2ExF,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,4CAA4C;IAC5C,eAAe,EAAE;QAAE,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,KAAK,IAAI,CAAA;KAAE,CAAC;IACpE,mCAAmC;IACnC,iBAAiB,EAAE;QAAE,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,KAAK,IAAI,CAAA;KAAE,CAAC;IACtE,mEAAmE;IACnE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AACD,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,KAAK,CAAC,YAAY,CAAC;AAW5E,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,iBAAiB,+BAmHvD;AA+ED,wBAAgB,WAAW,CAAC,EAC3B,WAAW,EACX,KAAK,EACL,MAAM,EACN,MAA4B,EAC5B,SAAS,GACT,EAAE;IACF,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,sFAAsF;IACtF,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1D,+BAuCA"}
|
package/dist/portal-layer.js
CHANGED
|
@@ -87,7 +87,19 @@ export function DefaultPortalChrome(p) {
|
|
|
87
87
|
whiteSpace: "nowrap",
|
|
88
88
|
overflow: "hidden",
|
|
89
89
|
textOverflow: "ellipsis",
|
|
90
|
-
}, children: p.title }), _jsx("button", { type: "button", title: p.
|
|
90
|
+
}, children: p.title }), _jsx("button", { type: "button", title: p.held && p.shared
|
|
91
|
+
? "共有スタッシュ: ⤴ でキャンバスに戻してから解除してください"
|
|
92
|
+
: p.shared
|
|
93
|
+
? "全員に共有中(クリックで個人に戻す)"
|
|
94
|
+
: "個人(クリックで全員に共有)", disabled: p.held && p.shared, onPointerDown: (e) => e.stopPropagation(), onClick: p.toggleShared, style: {
|
|
95
|
+
...headerBtn,
|
|
96
|
+
cursor: p.held && p.shared ? "default" : "pointer",
|
|
97
|
+
opacity: p.held && p.shared ? 0.5 : 1,
|
|
98
|
+
}, children: p.shared ? "👥" : "🔒" }), p.held ? (_jsx("button", { type: "button", title: "\u30AD\u30E3\u30F3\u30D0\u30B9\u306B\u623B\u3059", disabled: !p.restore, onPointerDown: (e) => e.stopPropagation(), onClick: p.restore, style: {
|
|
99
|
+
...headerBtn,
|
|
100
|
+
color: p.restore ? "#2563eb" : "#9ca3af",
|
|
101
|
+
cursor: p.restore ? "pointer" : "default",
|
|
102
|
+
}, children: "\u2934" })) : (_jsx("button", { type: "button", title: "\u9589\u3058\u308B", onPointerDown: (e) => e.stopPropagation(), onClick: p.remove, style: { ...headerBtn, color: "#9ca3af" }, children: "\u2715" }))] }), _jsxs("div", { style: { flex: 1, minHeight: 0, position: "relative" }, children: [p.children, _jsx("div", { onPointerDown: p.resizeHandleProps.onPointerDown, style: {
|
|
91
103
|
position: "absolute",
|
|
92
104
|
right: 0,
|
|
93
105
|
bottom: 0,
|
|
@@ -97,7 +109,7 @@ export function DefaultPortalChrome(p) {
|
|
|
97
109
|
background: "linear-gradient(135deg, transparent 50%, rgba(0,0,0,0.25) 50%, rgba(0,0,0,0.25) 60%, transparent 60%)",
|
|
98
110
|
} })] })] }));
|
|
99
111
|
}
|
|
100
|
-
function PortalPanel({ entry, shared, shape, def, onUpdate, onRemove, onToggleShared, Chrome, }) {
|
|
112
|
+
function PortalPanel({ entry, shared, held, shape, def, onUpdate, onRemove, onToggleShared, onRestore, Chrome, }) {
|
|
101
113
|
const bodyH = Math.max(0, entry.h - PORTAL_HEADER_H);
|
|
102
114
|
const startDrag = (e) => {
|
|
103
115
|
e.stopPropagation();
|
|
@@ -125,25 +137,37 @@ function PortalPanel({ entry, shared, shape, def, onUpdate, onRemove, onToggleSh
|
|
|
125
137
|
onUpdate(entry.id, { w, h });
|
|
126
138
|
});
|
|
127
139
|
};
|
|
128
|
-
return (_jsx(Chrome, { entry: entry, shared: shared, title: shape.label || shape.type,
|
|
140
|
+
return (_jsx(Chrome, { entry: entry, shared: shared, held: held, title: shape.label || shape.type,
|
|
141
|
+
// Un-sharing a *held* portal would strand the shape: it stays off the
|
|
142
|
+
// (shared) board while its only snapshot returns to local storage, so
|
|
143
|
+
// other clients can no longer restore it. Lock the toggle in that case —
|
|
144
|
+
// un-share by ⤴ restoring first. (No-op here keeps custom chromes safe.)
|
|
145
|
+
toggleShared: held && shared ? () => { } : () => onToggleShared(entry.id, !shared),
|
|
146
|
+
// For held portals `remove` must never discard the shape (the portal holds
|
|
147
|
+
// the only copy) — route it to restore. Safe even for custom chromes that
|
|
148
|
+
// wire a destructive close; a no-op when no restore handler is available.
|
|
149
|
+
remove: held ? () => onRestore?.(entry, shared) : () => onRemove(entry.id), restore: held && onRestore ? () => onRestore(entry, shared) : undefined, dragHandleProps: { onPointerDown: startDrag }, resizeHandleProps: { onPointerDown: startResize }, children: _jsx(ShapeContent, { def: def, shape: shape, bodyW: entry.w, bodyH: bodyH }) }));
|
|
129
150
|
}
|
|
130
|
-
export function PortalLayer({ portalStore, store, shapes, Chrome = DefaultPortalChrome, }) {
|
|
151
|
+
export function PortalLayer({ portalStore, store, shapes, Chrome = DefaultPortalChrome, onRestore, }) {
|
|
131
152
|
const items = useSyncExternalStore(portalStore.subscribe, portalStore.getAll);
|
|
132
153
|
// Re-render on any store mutation so pinned shapes reflect edits.
|
|
133
154
|
const [, tick] = useReducer((n) => n + 1, 0);
|
|
134
155
|
useEffect(() => store.subscribe(tick), [store]);
|
|
135
|
-
// Drop portals whose target shape no longer exists.
|
|
156
|
+
// Drop **pin** portals whose target shape no longer exists. Held portals own
|
|
157
|
+
// their shape snapshot (it isn't on the board), so they must never be dropped
|
|
158
|
+
// here — that would lose the only copy.
|
|
136
159
|
useEffect(() => {
|
|
137
160
|
for (const { entry } of items) {
|
|
138
|
-
if (!store.getShape(entry.shapeId))
|
|
161
|
+
if (!entry.shape && !store.getShape(entry.shapeId))
|
|
139
162
|
portalStore.remove(entry.id);
|
|
140
163
|
}
|
|
141
164
|
}, [items, store, portalStore]);
|
|
142
165
|
return (_jsx(_Fragment, { children: items.map(({ entry, shared }) => {
|
|
143
|
-
const
|
|
166
|
+
const held = !!entry.shape;
|
|
167
|
+
const shape = entry.shape ?? store.getShape(entry.shapeId);
|
|
144
168
|
if (!shape)
|
|
145
169
|
return null;
|
|
146
|
-
return (_jsx(PortalPanel, { entry: entry, shared: shared, shape: shape, def: shapes.get(shape.type), onUpdate: portalStore.update, onRemove: portalStore.remove, onToggleShared: portalStore.setShared, Chrome: Chrome }, entry.id));
|
|
170
|
+
return (_jsx(PortalPanel, { entry: entry, shared: shared, held: held, shape: shape, def: shapes.get(shape.type), onUpdate: portalStore.update, onRemove: portalStore.remove, onToggleShared: portalStore.setShared, onRestore: onRestore, Chrome: Chrome }, entry.id));
|
|
147
171
|
}) }));
|
|
148
172
|
}
|
|
149
173
|
//# sourceMappingURL=portal-layer.js.map
|
package/dist/portal-layer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portal-layer.js","sourceRoot":"","sources":["../src/portal-layer.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"portal-layer.js","sourceRoot":"","sources":["../src/portal-layer.tsx"],"names":[],"mappings":"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"}
|
package/dist/portal-store.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ShapeData } from "@edv4h/usketch-shared";
|
|
1
2
|
import type * as Y from "yjs";
|
|
2
3
|
/** A pinned widget: which shape, and where/how big on screen (screen px). */
|
|
3
4
|
export interface PortalEntry {
|
|
@@ -7,6 +8,13 @@ export interface PortalEntry {
|
|
|
7
8
|
y: number;
|
|
8
9
|
w: number;
|
|
9
10
|
h: number;
|
|
11
|
+
/**
|
|
12
|
+
* When present, the portal **holds** the shape: it was removed from the
|
|
13
|
+
* canvas and this snapshot is the only copy (rendered from here, not from the
|
|
14
|
+
* board store). Restoring the portal re-adds this shape to the board. When
|
|
15
|
+
* absent, the portal merely **pins** (mirrors) an on-canvas shape by `shapeId`.
|
|
16
|
+
*/
|
|
17
|
+
shape?: ShapeData;
|
|
10
18
|
}
|
|
11
19
|
/** A portal plus whether it lives in the shared (everyone) or private (me) backend. */
|
|
12
20
|
export interface PortalItem {
|
|
@@ -24,6 +32,11 @@ export interface PortalStore {
|
|
|
24
32
|
getAll(): PortalItem[];
|
|
25
33
|
/** Pin a shape (private by default). Returns the created entry. */
|
|
26
34
|
add(shapeId: string, box: PortalBox, shared?: boolean): PortalEntry;
|
|
35
|
+
/**
|
|
36
|
+
* Insert a pre-built entry (private by default). Used for held portals whose
|
|
37
|
+
* `id` must stay stable across undo/redo, and by {@link PortalStore.add}.
|
|
38
|
+
*/
|
|
39
|
+
insert(entry: PortalEntry, shared?: boolean): void;
|
|
27
40
|
/** Move/resize a portal (screen px). */
|
|
28
41
|
update(id: string, patch: Partial<PortalBox>): void;
|
|
29
42
|
remove(id: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portal-store.d.ts","sourceRoot":"","sources":["../src/portal-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"portal-store.d.ts","sourceRoot":"","sources":["../src/portal-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC;AAE9B,6EAA6E;AAC7E,MAAM,WAAW,WAAW;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,uFAAuF;AACvF,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACV;AAED,MAAM,WAAW,WAAW;IAC3B,8EAA8E;IAC9E,MAAM,IAAI,UAAU,EAAE,CAAC;IACvB,mEAAmE;IACnE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IACpE;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACnD,wCAAwC;IACxC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IACpD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7C,iDAAiD;IACjD,YAAY,IAAI,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IACtC,OAAO,IAAI,IAAI,CAAC;CAChB;AAED,KAAK,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC;AAgB3D,MAAM,WAAW,wBAAwB;IACxC,iEAAiE;IACjE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CAChC;AAED,+EAA+E;AAC/E,eAAO,MAAM,eAAe,KAAK,CAAC;AAMlC;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACzC,KAAK,EAAE,MAAM,EACb,aAAa,SAA2D,GACtE,SAAS,CASX;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,WAAW,CAmIhF"}
|
package/dist/portal-store.js
CHANGED
|
@@ -83,18 +83,23 @@ export function createPortalStore(options) {
|
|
|
83
83
|
const observer = () => refresh();
|
|
84
84
|
sharedMap.observe(observer);
|
|
85
85
|
const findPrivate = (id) => priv.find((e) => e.id === id);
|
|
86
|
+
function insertEntry(entry, shared) {
|
|
87
|
+
if (shared) {
|
|
88
|
+
sharedMap.set(entry.id, entry); // observe → refresh (Map.set already upserts)
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
// Upsert by id so re-inserting the same entry (undo/redo) can't duplicate it.
|
|
92
|
+
priv = [...priv.filter((e) => e.id !== entry.id), entry];
|
|
93
|
+
persistPrivate();
|
|
94
|
+
refresh();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
86
97
|
return {
|
|
87
98
|
getAll: () => snapshot,
|
|
99
|
+
insert: (entry, shared = false) => insertEntry(entry, shared),
|
|
88
100
|
add(shapeId, box, shared = false) {
|
|
89
101
|
const entry = { id: generateId(), shapeId, ...box };
|
|
90
|
-
|
|
91
|
-
sharedMap.set(entry.id, entry); // observe → refresh
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
priv = [...priv, entry];
|
|
95
|
-
persistPrivate();
|
|
96
|
-
refresh();
|
|
97
|
-
}
|
|
102
|
+
insertEntry(entry, shared);
|
|
98
103
|
return entry;
|
|
99
104
|
},
|
|
100
105
|
update(id, patch) {
|
package/dist/portal-store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portal-store.js","sourceRoot":"","sources":["../src/portal-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"portal-store.js","sourceRoot":"","sources":["../src/portal-store.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@edv4h/usketch-plugin-portal",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"yjs": "^13.6.0",
|
|
16
|
-
"@edv4h/usketch-shared": "4.
|
|
16
|
+
"@edv4h/usketch-shared": "4.10.0"
|
|
17
17
|
},
|
|
18
18
|
"peerDependencies": {
|
|
19
19
|
"react": ">=19"
|