@edv4h/usketch-plugin-debug-hud 3.0.4 → 3.1.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/README.md +50 -0
- package/dist/board-meta-types.d.ts +19 -0
- package/dist/board-meta-types.d.ts.map +1 -0
- package/dist/board-meta-types.js +8 -0
- package/dist/board-meta-types.js.map +1 -0
- package/dist/debug-hud.d.ts +5 -2
- package/dist/debug-hud.d.ts.map +1 -1
- package/dist/debug-hud.js +27 -4
- package/dist/debug-hud.js.map +1 -1
- package/dist/event-logger.d.ts.map +1 -1
- package/dist/fps-counter.d.ts.map +1 -1
- package/dist/overlays/minimap.d.ts +3 -1
- package/dist/overlays/minimap.d.ts.map +1 -1
- package/dist/overlays/minimap.js +4 -3
- package/dist/overlays/minimap.js.map +1 -1
- package/dist/overlays/shape-bounds-overlay.js +1 -1
- package/dist/panels/controls-panel.d.ts +25 -0
- package/dist/panels/controls-panel.d.ts.map +1 -0
- package/dist/panels/controls-panel.js +262 -0
- package/dist/panels/controls-panel.js.map +1 -0
- package/dist/panels/events-panel.d.ts.map +1 -1
- package/dist/panels/events-panel.js +3 -2
- package/dist/panels/events-panel.js.map +1 -1
- package/dist/panels/general-panel.d.ts +3 -1
- package/dist/panels/general-panel.d.ts.map +1 -1
- package/dist/panels/general-panel.js +7 -4
- package/dist/panels/general-panel.js.map +1 -1
- package/dist/panels/shapes-panel.d.ts +5 -1
- package/dist/panels/shapes-panel.d.ts.map +1 -1
- package/dist/panels/shapes-panel.js +19 -20
- package/dist/panels/shapes-panel.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +3 -1
- package/dist/plugin.js.map +1 -1
- package/dist/pointer-tracker.d.ts.map +1 -1
- package/dist/stop-propagation.d.ts +27 -0
- package/dist/stop-propagation.d.ts.map +1 -0
- package/dist/stop-propagation.js +26 -0
- package/dist/stop-propagation.js.map +1 -0
- package/package.json +4 -4
package/README.md
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# @edv4h/usketch-plugin-debug-hud
|
|
2
|
+
|
|
3
|
+
A screen-fixed **control + debug panel**. Toggle with the backtick key (`` ` ``).
|
|
4
|
+
Beyond inspection (shapes, events, FPS, sync, minimap) it is a **universal
|
|
5
|
+
control surface**: every plugin operation can be driven from here, so a host app
|
|
6
|
+
does not need to add bespoke UI per plugin.
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
import { createDebugHudPlugin } from "@edv4h/usketch-plugin-debug-hud";
|
|
10
|
+
const plugins = [/* ... */, createDebugHudPlugin()];
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Hidden by default; press `` ` `` to open. Safe to ship in production (it only
|
|
14
|
+
appears on toggle).
|
|
15
|
+
|
|
16
|
+
## Controls panel
|
|
17
|
+
|
|
18
|
+
- **Tools** — one button per registered tool (`tools.getOrdered()`), click to
|
|
19
|
+
`store.setActiveToolId(id)`.
|
|
20
|
+
- **Actions** — every `PluginAction` a plugin registered (see below), grouped
|
|
21
|
+
and rendered as buttons / parameter forms automatically.
|
|
22
|
+
- **Emit event** — a raw fallback: type any event name + JSON payload and
|
|
23
|
+
`events.emit(...)`. Lets you drive operations a plugin hasn't (yet) exposed as
|
|
24
|
+
an action.
|
|
25
|
+
- **Default style / Clear canvas** — edit `store` default style; batch-delete.
|
|
26
|
+
|
|
27
|
+
## Exposing plugin operations to the HUD
|
|
28
|
+
|
|
29
|
+
Register actions in your plugin's `setup` via `ctx.actions` — the HUD renders a
|
|
30
|
+
control for each with no app-side UI. Example (freedraw):
|
|
31
|
+
|
|
32
|
+
```ts
|
|
33
|
+
const off = ctx.actions.register({
|
|
34
|
+
id: "freedraw:color",
|
|
35
|
+
label: "Color",
|
|
36
|
+
group: "Freedraw",
|
|
37
|
+
params: [{ name: "color", type: "color", default: "#1e1e1e" }],
|
|
38
|
+
run: ({ color }) => ctx.events.emit("freedraw:set-color", { color }),
|
|
39
|
+
});
|
|
40
|
+
// call off() in teardown
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
`PluginAction` fields: `id`, `label`, optional `group` / `icon` / `order`,
|
|
44
|
+
optional `params` (`ActionParam[]` — `string|number|boolean|color|enum`),
|
|
45
|
+
`run(args)`, and optional `isActive()` / `isEnabled()` for toggle / contextual
|
|
46
|
+
state. Parameterless actions render as a button; selection-contextual actions
|
|
47
|
+
(e.g. "Flip selected card") use `isEnabled()` to gate on the current selection.
|
|
48
|
+
|
|
49
|
+
Migrated so far: freedraw, snap, background, card, sticky. Others follow the
|
|
50
|
+
same one-liner pattern (emit the plugin's existing event from `run`).
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Board メタ情報(タイトル / Cloud か Local か / id)を HUD に供給するための
|
|
3
|
+
* 構造型。ホストアプリ(apps/web)が `globalThis.__usketchBoardMeta` に
|
|
4
|
+
* この形のトラッカーを載せ、General パネルが購読して表示する。
|
|
5
|
+
* `__usketchSyncStatus` と同じ「アプリ側が用意する外部データソース」パターン。
|
|
6
|
+
*/
|
|
7
|
+
export interface BoardMetaSnapshot {
|
|
8
|
+
/** ボード id(未確定なら undefined)。 */
|
|
9
|
+
id?: string;
|
|
10
|
+
/** 表示名(未取得なら null)。 */
|
|
11
|
+
name: string | null;
|
|
12
|
+
/** Cloud ボードなら true、ローカル保存なら false。 */
|
|
13
|
+
isCloud: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface BoardMetaTrackerLike {
|
|
16
|
+
getSnapshot(): BoardMetaSnapshot;
|
|
17
|
+
subscribe(listener: () => void): () => void;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=board-meta-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board-meta-types.d.ts","sourceRoot":"","sources":["../src/board-meta-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,iBAAiB;IACjC,+BAA+B;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,uBAAuB;IACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACpC,WAAW,IAAI,iBAAiB,CAAC;IACjC,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAC5C"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Board メタ情報(タイトル / Cloud か Local か / id)を HUD に供給するための
|
|
3
|
+
* 構造型。ホストアプリ(apps/web)が `globalThis.__usketchBoardMeta` に
|
|
4
|
+
* この形のトラッカーを載せ、General パネルが購読して表示する。
|
|
5
|
+
* `__usketchSyncStatus` と同じ「アプリ側が用意する外部データソース」パターン。
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=board-meta-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board-meta-types.js","sourceRoot":"","sources":["../src/board-meta-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
package/dist/debug-hud.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { BoardStore, CommandRegistry, EventBus, LayerManager, LayerRenderContext, ShapeRegistry, ToolRegistry } from "@edv4h/usketch-shared";
|
|
1
|
+
import type { ActionRegistry, BoardStore, CommandRegistry, EventBus, LayerManager, LayerRenderContext, ShapeRegistry, ToolRegistry } from "@edv4h/usketch-shared";
|
|
2
|
+
import type { BoardMetaTrackerLike } from "./board-meta-types.js";
|
|
2
3
|
import type { EventLogger } from "./event-logger.js";
|
|
3
4
|
import type { FpsCounter } from "./fps-counter.js";
|
|
4
5
|
import type { PointerTracker } from "./pointer-tracker.js";
|
|
@@ -13,11 +14,13 @@ interface DebugHudProps {
|
|
|
13
14
|
tools: ToolRegistry;
|
|
14
15
|
layers: LayerManager;
|
|
15
16
|
shapes: ShapeRegistry;
|
|
17
|
+
actions: ActionRegistry;
|
|
16
18
|
syncStatus?: SyncStatusTrackerLike;
|
|
19
|
+
boardMeta?: BoardMetaTrackerLike;
|
|
17
20
|
events: EventBus;
|
|
18
21
|
ctx: LayerRenderContext;
|
|
19
22
|
visibility: VisibilityStore;
|
|
20
23
|
}
|
|
21
|
-
export declare function DebugHud({ store, fpsCounter, eventLogger, pointerTracker, commands, tools, layers, shapes, syncStatus, events, ctx, visibility, }: DebugHudProps): import("react").JSX.Element;
|
|
24
|
+
export declare function DebugHud({ store, fpsCounter, eventLogger, pointerTracker, commands, tools, layers, shapes, actions, syncStatus, boardMeta, events, ctx, visibility, }: DebugHudProps): import("react").JSX.Element;
|
|
22
25
|
export {};
|
|
23
26
|
//# sourceMappingURL=debug-hud.d.ts.map
|
package/dist/debug-hud.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug-hud.d.ts","sourceRoot":"","sources":["../src/debug-hud.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,EACV,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"debug-hud.d.ts","sourceRoot":"","sources":["../src/debug-hud.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,cAAc,EACd,UAAU,EACV,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAWnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,UAAU,aAAa;IACtB,KAAK,EAAE,UAAU,CAAC;IAClB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,cAAc,CAAC;IACxB,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,MAAM,EAAE,QAAQ,CAAC;IACjB,GAAG,EAAE,kBAAkB,CAAC;IACxB,UAAU,EAAE,eAAe,CAAC;CAC5B;AAQD,wBAAgB,QAAQ,CAAC,EACxB,KAAK,EACL,UAAU,EACV,WAAW,EACX,cAAc,EACd,QAAQ,EACR,KAAK,EACL,MAAM,EACN,MAAM,EACN,OAAO,EACP,UAAU,EACV,SAAS,EACT,MAAM,EACN,GAAG,EACH,UAAU,GACV,EAAE,aAAa,+BAkJf"}
|
package/dist/debug-hud.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
2
|
-
import { useCallback, useEffect, useMemo, useState, useSyncExternalStore } from "react";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
|
|
3
3
|
import { Minimap } from "./overlays/minimap.js";
|
|
4
4
|
import { ShapeBoundsOverlay } from "./overlays/shape-bounds-overlay.js";
|
|
5
|
+
import { CONTROLS_DOCK_COLLAPSED, CONTROLS_DOCK_WIDTH, ControlsPanel, } from "./panels/controls-panel.js";
|
|
5
6
|
import { EventsPanel } from "./panels/events-panel.js";
|
|
6
7
|
import { GeneralPanel } from "./panels/general-panel.js";
|
|
7
8
|
import { ShapesPanel } from "./panels/shapes-panel.js";
|
|
@@ -12,11 +13,14 @@ function isEditableTarget(target) {
|
|
|
12
13
|
const tag = target.tagName;
|
|
13
14
|
return tag === "INPUT" || tag === "TEXTAREA" || target.isContentEditable;
|
|
14
15
|
}
|
|
15
|
-
export function DebugHud({ store, fpsCounter, eventLogger, pointerTracker, commands, tools, layers, shapes, syncStatus, events, ctx, visibility, }) {
|
|
16
|
+
export function DebugHud({ store, fpsCounter, eventLogger, pointerTracker, commands, tools, layers, shapes, actions, syncStatus, boardMeta, events, ctx, visibility, }) {
|
|
16
17
|
const subscribeVisibility = useCallback((cb) => visibility.subscribe(cb), [visibility]);
|
|
17
18
|
const getVisibility = useCallback(() => visibility.get(), [visibility]);
|
|
18
19
|
const visible = useSyncExternalStore(subscribeVisibility, getVisibility, getVisibility);
|
|
19
20
|
const [hoveredShapeId, setHoveredShapeId] = useState(null);
|
|
21
|
+
const [controlsCollapsed, setControlsCollapsed] = useState(false);
|
|
22
|
+
// Left offset for the Shapes panel / Minimap so they clear the Controls dock.
|
|
23
|
+
const leftOffset = 8 + (controlsCollapsed ? CONTROLS_DOCK_COLLAPSED : CONTROLS_DOCK_WIDTH) + 8;
|
|
20
24
|
// Keyboard shortcut (backtick)
|
|
21
25
|
useEffect(() => {
|
|
22
26
|
const handler = (e) => {
|
|
@@ -43,6 +47,25 @@ export function DebugHud({ store, fpsCounter, eventLogger, pointerTracker, comma
|
|
|
43
47
|
const syncSnapshot = useSyncExternalStore(subscribeSync, getSyncSnapshot, getSyncSnapshot);
|
|
44
48
|
const unconfirmedShapeIdSet = useMemo(() => new Set(syncSnapshot?.unconfirmedShapeIds ?? []), [syncSnapshot?.unconfirmedShapeIds]);
|
|
45
49
|
const hoveredShape = hoveredShapeId ? shapeMap.get(hoveredShapeId) : undefined;
|
|
50
|
+
// Canvas は自身のコンテナに native な wheel リスナ(passive:false)を張り、
|
|
51
|
+
// HUD パネル上のスクロールまで拾って zoom/pan してしまう。React の onWheel
|
|
52
|
+
// stopPropagation は Canvas コンテナより後(React root)で発火するため間に合わ
|
|
53
|
+
// ない。パネル群を包む本要素に native wheel リスナを張り、パネル由来の wheel
|
|
54
|
+
// が Canvas コンテナへバブリングする前に止める(パネル自身のスクロールは通す
|
|
55
|
+
// ので stopPropagation のみ、preventDefault はしない)。空き領域の wheel は
|
|
56
|
+
// pointerEvents:none によりこの要素を経由せず Canvas に直接届くため無影響。
|
|
57
|
+
const wheelGuardRef = useRef(null);
|
|
58
|
+
// visible はラッパーのマウント/アンマウントを切り替えるため、ref 再取得の
|
|
59
|
+
// トリガーとして依存に含める(body 内で直接参照しないので biome へ明示)。
|
|
60
|
+
// biome-ignore lint/correctness/useExhaustiveDependencies: re-attach on visibility toggle
|
|
61
|
+
useEffect(() => {
|
|
62
|
+
const el = wheelGuardRef.current;
|
|
63
|
+
if (!el)
|
|
64
|
+
return;
|
|
65
|
+
const stop = (e) => e.stopPropagation();
|
|
66
|
+
el.addEventListener("wheel", stop, { passive: false });
|
|
67
|
+
return () => el.removeEventListener("wheel", stop);
|
|
68
|
+
}, [visible]);
|
|
46
69
|
// Shortcut hint — bottom-center (always visible)
|
|
47
70
|
const hint = (_jsxs("div", { style: {
|
|
48
71
|
position: "absolute",
|
|
@@ -57,6 +80,6 @@ export function DebugHud({ store, fpsCounter, eventLogger, pointerTracker, comma
|
|
|
57
80
|
if (!visible) {
|
|
58
81
|
return hint;
|
|
59
82
|
}
|
|
60
|
-
return (_jsxs(
|
|
83
|
+
return (_jsxs("div", { ref: wheelGuardRef, style: { position: "absolute", inset: 0, pointerEvents: "none" }, children: [hint, _jsx(ShapeBoundsOverlay, { shape: hoveredShape, store: store }), _jsx(GeneralPanel, { store: store, fpsCounter: fpsCounter, pointerTracker: pointerTracker, commands: commands, tools: tools, layers: layers, shapes: shapes, syncStatus: syncStatus, boardMeta: boardMeta, events: events, viewport: viewport, activeToolId: activeToolId }), _jsx(ControlsPanel, { store: store, tools: tools, actions: actions, events: events, activeToolId: activeToolId, collapsed: controlsCollapsed, onToggleCollapsed: () => setControlsCollapsed((c) => !c), shapesSection: _jsx(ShapesPanel, { store: store, commands: commands, shapes: shapeMap, selection: selection, registry: shapes, onHoverShape: setHoveredShapeId, unconfirmedShapeIds: unconfirmedShapeIdSet, docked: true }) }), _jsx(EventsPanel, { eventLogger: eventLogger }), _jsx(Minimap, { shapes: shapeMap, viewport: viewport, selection: selection, offsetLeft: leftOffset })] }));
|
|
61
84
|
}
|
|
62
85
|
//# sourceMappingURL=debug-hud.js.map
|
package/dist/debug-hud.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug-hud.js","sourceRoot":"","sources":["../src/debug-hud.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"debug-hud.js","sourceRoot":"","sources":["../src/debug-hud.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-logger.d.ts","sourceRoot":"","sources":["../src/event-logger.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACd;AAID,qBAAa,WAAW;IACvB,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,KAAK,CAAS;IAEtB,IAAI,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"event-logger.d.ts","sourceRoot":"","sources":["../src/event-logger.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACd;AAID,qBAAa,WAAW;IACvB,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,KAAK,CAAS;IAEtB,IAAI,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAetD;IAED,KAAK,IAAI,IAAI,CASZ;IAED,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAc1C;IAED,WAAW,IAAI,SAAS,aAAa,EAAE,CAEtC;IAED,OAAO,IAAI,IAAI,CAOd;IAED,OAAO,CAAC,aAAa;CAYrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fps-counter.d.ts","sourceRoot":"","sources":["../src/fps-counter.ts"],"names":[],"mappings":"AAEA,qBAAa,UAAU;IACtB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,aAAa,CAAgB;IAErC,KAAK,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"fps-counter.d.ts","sourceRoot":"","sources":["../src/fps-counter.ts"],"names":[],"mappings":"AAEA,qBAAa,UAAU;IACtB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,aAAa,CAAgB;IAErC,KAAK,IAAI,IAAI,CAIZ;IAED,IAAI,IAAI,IAAI,CAEX;IAED,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAG1C;IAED,WAAW,IAAI,MAAM,CAEpB;IAED,UAAU,IAAI,SAAS,MAAM,EAAE,CAE9B;IAED,OAAO,CAAC,IAAI,CAiBV;CACF"}
|
|
@@ -3,7 +3,9 @@ interface MinimapProps {
|
|
|
3
3
|
shapes: ReadonlyMap<string, ShapeData>;
|
|
4
4
|
viewport: Viewport;
|
|
5
5
|
selection: ReadonlySet<string>;
|
|
6
|
+
/** Left offset so the minimap clears the Controls dock. Default 8. */
|
|
7
|
+
offsetLeft?: number;
|
|
6
8
|
}
|
|
7
|
-
export declare function Minimap({ shapes, viewport, selection }: MinimapProps): import("react").JSX.Element;
|
|
9
|
+
export declare function Minimap({ shapes, viewport, selection, offsetLeft }: MinimapProps): import("react").JSX.Element;
|
|
8
10
|
export {};
|
|
9
11
|
//# sourceMappingURL=minimap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minimap.d.ts","sourceRoot":"","sources":["../../src/overlays/minimap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"minimap.d.ts","sourceRoot":"","sources":["../../src/overlays/minimap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAKjE,UAAU,YAAY;IACrB,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD,wBAAgB,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAc,EAAE,EAAE,YAAY,+BAoEpF"}
|
package/dist/overlays/minimap.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { computeMinimap } from "@edv4h/usketch-shared";
|
|
3
|
+
import { STOP_CANVAS_PROPAGATION } from "../stop-propagation.js";
|
|
3
4
|
import { ACCENT_DIM, PANEL_BG, PANEL_BLUR, PANEL_BORDER_RADIUS } from "../styles.js";
|
|
4
5
|
const MAP_W = 140;
|
|
5
6
|
const MAP_H = 90;
|
|
6
|
-
export function Minimap({ shapes, viewport, selection }) {
|
|
7
|
+
export function Minimap({ shapes, viewport, selection, offsetLeft = 8 }) {
|
|
7
8
|
const shapeArr = Array.from(shapes.values());
|
|
8
9
|
// viewport.x/y is a screen-space translate offset, not a world origin.
|
|
9
10
|
const vpWorldX = -viewport.x / viewport.zoom;
|
|
@@ -18,10 +19,10 @@ export function Minimap({ shapes, viewport, selection }) {
|
|
|
18
19
|
padding: 20,
|
|
19
20
|
minSize: 2,
|
|
20
21
|
});
|
|
21
|
-
return (_jsxs("div", { style: {
|
|
22
|
+
return (_jsxs("div", { ...STOP_CANVAS_PROPAGATION, style: {
|
|
22
23
|
position: "absolute",
|
|
23
24
|
bottom: 8,
|
|
24
|
-
left:
|
|
25
|
+
left: offsetLeft,
|
|
25
26
|
width: MAP_W,
|
|
26
27
|
height: MAP_H,
|
|
27
28
|
background: PANEL_BG,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minimap.js","sourceRoot":"","sources":["../../src/overlays/minimap.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAsB,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"minimap.js","sourceRoot":"","sources":["../../src/overlays/minimap.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAsB,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAUrF,MAAM,KAAK,GAAG,GAAG,CAAC;AAClB,MAAM,KAAK,GAAG,EAAE,CAAC;AAEjB,MAAM,UAAU,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,GAAG,CAAC,EAAgB;IACpF,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAE7C,uEAAuE;IACvE,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC7C,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC;IACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;IAEpD,MAAM,MAAM,GAAkB,cAAc,CAAC;QAC5C,MAAM,EAAE,QAAQ;QAChB,aAAa,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;QAC9E,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,CAAC;KACV,CAAC,CAAC;IAEH,OAAO,CACN,kBACK,uBAAuB,EAC3B,KAAK,EAAE;YACN,QAAQ,EAAE,UAAU;YACpB,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,QAAQ;YACpB,YAAY,EAAE,mBAAmB;YACjC,cAAc,EAAE,UAAU;YAC1B,aAAa,EAAE,MAAM;YACrB,QAAQ,EAAE,QAAQ;SAClB,aAGA,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACxB,cAEC,KAAK,EAAE;oBACN,QAAQ,EAAE,UAAU;oBACpB,IAAI,EAAE,CAAC,CAAC,CAAC;oBACT,GAAG,EAAE,CAAC,CAAC,CAAC;oBACR,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC9B,CAAC,CAAC,yBAAyB;wBAC3B,CAAC,CAAC,0BAA0B;oBAC7B,YAAY,EAAE,CAAC;iBACf,IAXI,CAAC,CAAC,EAAE,CAYR,CACF,CAAC,EAED,MAAM,CAAC,YAAY,IAAI,CACvB,cACC,KAAK,EAAE;oBACN,QAAQ,EAAE,UAAU;oBACpB,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;oBAC3B,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;oBAC1B,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK;oBAChC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM;oBAClC,MAAM,EAAE,aAAa,UAAU,EAAE;oBACjC,YAAY,EAAE,CAAC;oBACf,SAAS,EAAE,YAAY;iBACvB,GACA,CACF,IACI,CACN,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { worldToScreen } from "@edv4h/usketch-shared";
|
|
3
3
|
import { useCallback, useSyncExternalStore } from "react";
|
|
4
4
|
export function ShapeBoundsOverlay({ shape, store }) {
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ActionRegistry, BoardStore, EventBus, ToolRegistry } from "@edv4h/usketch-shared";
|
|
2
|
+
import type React from "react";
|
|
3
|
+
/** Expanded / collapsed dock widths (kept in sync with DebugHud's sibling offset). */
|
|
4
|
+
export declare const CONTROLS_DOCK_WIDTH = 248;
|
|
5
|
+
export declare const CONTROLS_DOCK_COLLAPSED = 30;
|
|
6
|
+
interface ControlsPanelProps {
|
|
7
|
+
store: BoardStore;
|
|
8
|
+
tools: ToolRegistry;
|
|
9
|
+
actions: ActionRegistry;
|
|
10
|
+
events: EventBus;
|
|
11
|
+
activeToolId: string;
|
|
12
|
+
collapsed: boolean;
|
|
13
|
+
onToggleCollapsed: () => void;
|
|
14
|
+
/** The shapes inspector, rendered as a section inside the dock. */
|
|
15
|
+
shapesSection?: React.ReactNode;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Universal control dock. Drives plugin operations without any demo-app UI: a
|
|
19
|
+
* tool palette (`tools.getOrdered()`), the declarative action registry, a raw
|
|
20
|
+
* event-emit fallback, and default-style controls. Full-height, collapsible,
|
|
21
|
+
* with collapsible sections.
|
|
22
|
+
*/
|
|
23
|
+
export declare function ControlsPanel({ store, tools, actions, events, activeToolId, collapsed, onToggleCollapsed, shapesSection, }: ControlsPanelProps): React.JSX.Element;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=controls-panel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controls-panel.d.ts","sourceRoot":"","sources":["../../src/panels/controls-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEX,cAAc,EACd,UAAU,EACV,QAAQ,EAGR,YAAY,EACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,sFAAsF;AACtF,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C,UAAU,kBAAkB;IAC3B,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,QAAQ,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,mEAAmE;IACnE,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAChC;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAC7B,KAAK,EACL,KAAK,EACL,OAAO,EACP,MAAM,EACN,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,aAAa,GACb,EAAE,kBAAkB,qBAuFpB"}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useReducer, useState } from "react";
|
|
3
|
+
import { STOP_CANVAS_PROPAGATION } from "../stop-propagation.js";
|
|
4
|
+
import { ACCENT, INLINE_INPUT, MINI_BUTTON, MINI_BUTTON_ACCENT, PANEL_BASE, TEXT_LABEL, TEXT_MUTED, } from "../styles.js";
|
|
5
|
+
/** Expanded / collapsed dock widths (kept in sync with DebugHud's sibling offset). */
|
|
6
|
+
export const CONTROLS_DOCK_WIDTH = 248;
|
|
7
|
+
export const CONTROLS_DOCK_COLLAPSED = 30;
|
|
8
|
+
/**
|
|
9
|
+
* Universal control dock. Drives plugin operations without any demo-app UI: a
|
|
10
|
+
* tool palette (`tools.getOrdered()`), the declarative action registry, a raw
|
|
11
|
+
* event-emit fallback, and default-style controls. Full-height, collapsible,
|
|
12
|
+
* with collapsible sections.
|
|
13
|
+
*/
|
|
14
|
+
export function ControlsPanel({ store, tools, actions, events, activeToolId, collapsed, onToggleCollapsed, shapesSection, }) {
|
|
15
|
+
// Re-render when actions register/unregister at runtime.
|
|
16
|
+
const [, bump] = useReducer((n) => n + 1, 0);
|
|
17
|
+
useEffect(() => actions.subscribe(bump), [actions]);
|
|
18
|
+
if (collapsed) {
|
|
19
|
+
return (_jsx("button", { type: "button", ...STOP_CANVAS_PROPAGATION, onClick: (e) => {
|
|
20
|
+
e.stopPropagation();
|
|
21
|
+
onToggleCollapsed();
|
|
22
|
+
}, style: collapsedStripStyle, title: "Open controls", children: _jsx("span", { style: { writingMode: "vertical-rl", letterSpacing: 1 }, children: "Controls \u203A" }) }));
|
|
23
|
+
}
|
|
24
|
+
const toolList = tools.getOrdered();
|
|
25
|
+
const actionList = actions.getOrdered();
|
|
26
|
+
const groups = groupActions(actionList);
|
|
27
|
+
return (_jsxs("div", { ...STOP_CANVAS_PROPAGATION, style: dockStyle, children: [_jsxs("div", { style: headerStyle, children: [_jsx("span", { style: { color: ACCENT, fontWeight: 700 }, children: "Controls" }), _jsx("button", { type: "button", onClick: onToggleCollapsed, style: MINI_BUTTON, title: "Collapse", children: "\u2039" })] }), _jsx(Section, { title: "Tools", children: _jsx("div", { style: toolGridStyle, children: toolList.map(({ id, definition }) => (_jsx("button", { type: "button", title: id, onClick: () => store.setActiveToolId(id), style: {
|
|
28
|
+
...MINI_BUTTON,
|
|
29
|
+
display: "flex",
|
|
30
|
+
alignItems: "center",
|
|
31
|
+
justifyContent: "center",
|
|
32
|
+
width: 28,
|
|
33
|
+
height: 28,
|
|
34
|
+
background: id === activeToolId ? ACCENT : "rgba(255,255,255,0.1)",
|
|
35
|
+
}, children: _jsx(IconSlot, { render: definition.icon }) }, id))) }) }), groups.map(([group, items]) => (_jsx(Section, { title: group, children: items.map(({ id, action }) => (_jsx(ActionRow, { action: action, onAfterRun: bump }, id))) }, group))), actionList.length === 0 && (_jsxs("div", { style: { color: TEXT_MUTED, fontSize: 10, marginBottom: 6 }, children: ["No registered actions. Plugins expose operations via ", _jsx("code", { children: "ctx.actions.register" }), "."] })), shapesSection && (_jsx(Section, { title: "Shapes", defaultOpen: false, children: shapesSection })), _jsx(Section, { title: "Emit event", defaultOpen: false, children: _jsx(EventConsole, { events: events }) }), _jsx(Section, { title: "Style", defaultOpen: false, children: _jsx(StyleControls, { store: store }) })] }));
|
|
36
|
+
}
|
|
37
|
+
/** Collapsible section with a clickable header. */
|
|
38
|
+
function Section({ title, defaultOpen = true, children, }) {
|
|
39
|
+
const [open, setOpen] = useState(defaultOpen);
|
|
40
|
+
return (_jsxs("div", { style: sectionStyle, children: [_jsxs("button", { type: "button", onClick: () => setOpen((o) => !o), style: sectionHeaderStyle, title: open ? "Collapse" : "Expand", children: [_jsx("span", { style: { color: ACCENT, marginRight: 6, fontSize: 8 }, children: open ? "▼" : "▶" }), title] }), open && _jsx("div", { style: sectionBodyStyle, children: children })] }));
|
|
41
|
+
}
|
|
42
|
+
function groupActions(list) {
|
|
43
|
+
const map = new Map();
|
|
44
|
+
for (const entry of list) {
|
|
45
|
+
const g = entry.action.group ?? "Actions";
|
|
46
|
+
const bucket = map.get(g) ?? [];
|
|
47
|
+
bucket.push(entry);
|
|
48
|
+
map.set(g, bucket);
|
|
49
|
+
}
|
|
50
|
+
return [...map.entries()];
|
|
51
|
+
}
|
|
52
|
+
function IconSlot({ render }) {
|
|
53
|
+
try {
|
|
54
|
+
return render();
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return _jsx("span", { children: "?" });
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/** One action: a button (no params) or inline param controls + Run. */
|
|
61
|
+
function ActionRow({ action, onAfterRun }) {
|
|
62
|
+
const [args, setArgs] = useState(() => defaultArgs(action.params));
|
|
63
|
+
const enabled = action.isEnabled ? action.isEnabled() : true;
|
|
64
|
+
const active = action.isActive?.() ?? false;
|
|
65
|
+
// アクション実行後に必ず親を再レンダーさせ、isActive/isEnabled を再評価する。
|
|
66
|
+
// これがないと、store を変えずプラグインローカル状態だけ更新する toggle 系で
|
|
67
|
+
// インジケータが次の無関係な再レンダーまで stale になる。
|
|
68
|
+
// run は void | Promise<void>。同期例外・非同期 reject を握りつぶさずログし、
|
|
69
|
+
// finally で onAfterRun を必ず呼んで UI 反映を保証する。
|
|
70
|
+
const run = (a) => {
|
|
71
|
+
try {
|
|
72
|
+
const result = action.run(a);
|
|
73
|
+
if (result && typeof result.then === "function") {
|
|
74
|
+
result.catch((err) => console.error(`Action "${action.id}" failed:`, err));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
console.error(`Action "${action.id}" failed:`, err);
|
|
79
|
+
}
|
|
80
|
+
finally {
|
|
81
|
+
onAfterRun();
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
if (!action.params || action.params.length === 0) {
|
|
85
|
+
return (_jsxs("button", { type: "button", disabled: !enabled, onClick: () => run({}), style: {
|
|
86
|
+
...(active ? MINI_BUTTON_ACCENT : MINI_BUTTON),
|
|
87
|
+
display: "block",
|
|
88
|
+
width: "100%",
|
|
89
|
+
textAlign: "left",
|
|
90
|
+
marginBottom: 3,
|
|
91
|
+
opacity: enabled ? 1 : 0.4,
|
|
92
|
+
}, children: [active ? "● " : "", action.label] }));
|
|
93
|
+
}
|
|
94
|
+
return (_jsxs("div", { style: { marginBottom: 4 }, children: [_jsx("div", { style: { color: TEXT_LABEL, fontSize: 10 }, children: action.label }), _jsxs("div", { style: { display: "flex", flexWrap: "wrap", gap: 4, alignItems: "center" }, children: [action.params.map((p) => (_jsx(ParamControl, { param: p, value: args[p.name], onChange: (v) => setArgs((prev) => ({ ...prev, [p.name]: v })) }, p.name))), _jsx("button", { type: "button", disabled: !enabled, onClick: () => run(args), style: { ...MINI_BUTTON_ACCENT, opacity: enabled ? 1 : 0.4 }, children: "Run" })] })] }));
|
|
95
|
+
}
|
|
96
|
+
function defaultArgs(params) {
|
|
97
|
+
const out = {};
|
|
98
|
+
for (const p of params ?? []) {
|
|
99
|
+
if (p.default !== undefined)
|
|
100
|
+
out[p.name] = p.default;
|
|
101
|
+
else if (p.type === "enum")
|
|
102
|
+
out[p.name] = p.options?.[0]?.value;
|
|
103
|
+
else if (p.type === "boolean")
|
|
104
|
+
out[p.name] = false;
|
|
105
|
+
else if (p.type === "number")
|
|
106
|
+
out[p.name] = p.min ?? 0;
|
|
107
|
+
else if (p.type === "color")
|
|
108
|
+
out[p.name] = "#000000";
|
|
109
|
+
else
|
|
110
|
+
out[p.name] = "";
|
|
111
|
+
}
|
|
112
|
+
return out;
|
|
113
|
+
}
|
|
114
|
+
function ParamControl({ param, value, onChange, }) {
|
|
115
|
+
switch (param.type) {
|
|
116
|
+
case "enum":
|
|
117
|
+
return (_jsx("select", { value: String(value ?? ""), onChange: (e) => onChange(e.target.value), style: { ...INLINE_INPUT, width: "auto" }, children: param.options?.map((o) => (_jsx("option", { value: o.value, children: o.label }, o.value))) }));
|
|
118
|
+
case "boolean":
|
|
119
|
+
return (_jsx("input", { type: "checkbox", checked: Boolean(value), onChange: (e) => onChange(e.target.checked) }));
|
|
120
|
+
case "color":
|
|
121
|
+
return (_jsx("input", { type: "color", value: String(value ?? "#000000"), onChange: (e) => onChange(e.target.value) }));
|
|
122
|
+
case "number":
|
|
123
|
+
return (_jsx("input", { type: "number", value: Number(value ?? 0), min: param.min, max: param.max, step: param.step, onChange: (e) => onChange(Number(e.target.value)), style: INLINE_INPUT }));
|
|
124
|
+
default:
|
|
125
|
+
return (_jsx("input", { type: "text", value: String(value ?? ""), onChange: (e) => onChange(e.target.value), style: INLINE_INPUT }));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/** Emit an arbitrary event with a JSON payload — the universal fallback. */
|
|
129
|
+
function EventConsole({ events }) {
|
|
130
|
+
const [name, setName] = useState("");
|
|
131
|
+
const [payload, setPayload] = useState("{}");
|
|
132
|
+
const [err, setErr] = useState(null);
|
|
133
|
+
const emit = () => {
|
|
134
|
+
if (!name.trim())
|
|
135
|
+
return;
|
|
136
|
+
let data = {};
|
|
137
|
+
if (payload.trim()) {
|
|
138
|
+
try {
|
|
139
|
+
data = JSON.parse(payload);
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
setErr("invalid JSON");
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
setErr(null);
|
|
147
|
+
events.emit(name.trim(), data);
|
|
148
|
+
};
|
|
149
|
+
return (_jsxs("div", { children: [_jsx("input", { type: "text", value: name, placeholder: "event:name", onChange: (e) => setName(e.target.value), style: { ...INLINE_INPUT, width: "100%", marginBottom: 3 } }), _jsx("textarea", { value: payload, onChange: (e) => setPayload(e.target.value), spellCheck: false, style: {
|
|
150
|
+
...INLINE_INPUT,
|
|
151
|
+
width: "100%",
|
|
152
|
+
height: 36,
|
|
153
|
+
resize: "vertical",
|
|
154
|
+
marginBottom: 3,
|
|
155
|
+
} }), _jsxs("div", { style: { display: "flex", gap: 4, alignItems: "center" }, children: [_jsx("button", { type: "button", onClick: emit, style: MINI_BUTTON_ACCENT, children: "Emit" }), err && _jsx("span", { style: { color: "#f87171", fontSize: 10 }, children: err })] })] }));
|
|
156
|
+
}
|
|
157
|
+
/** Edit the default draw style (applies to new shapes via setStyleSettings). */
|
|
158
|
+
function StyleControls({ store }) {
|
|
159
|
+
const s = store.getStyleSettings();
|
|
160
|
+
// setStyleSettings はストア側で既存設定にマージする({ ...styleSettings, ...patch })。
|
|
161
|
+
// ここで render 時点の `s` と再マージすると stale な値を書き戻し、並行変更
|
|
162
|
+
// (fill 変更直後の stroke 変更など)を打ち消しかねないので patch だけ渡す。
|
|
163
|
+
const set = (patch) => store.setStyleSettings(patch);
|
|
164
|
+
const clearCanvas = () => {
|
|
165
|
+
const ids = [...store.getShapes().keys()];
|
|
166
|
+
if (ids.length === 0)
|
|
167
|
+
return;
|
|
168
|
+
// HUD が本番でも出るようになったため、誤爆防止に確認を挟む。
|
|
169
|
+
// deleteShape 直呼びは undo 履歴を通らない破壊的操作である点も明示する。
|
|
170
|
+
if (typeof window !== "undefined" &&
|
|
171
|
+
!window.confirm(`Delete all ${ids.length} shape(s)? This cannot be undone.`)) {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
for (const id of ids)
|
|
175
|
+
store.deleteShape(id);
|
|
176
|
+
};
|
|
177
|
+
return (_jsxs("div", { children: [_jsxs("div", { style: { display: "flex", gap: 6, alignItems: "center", marginBottom: 4 }, children: [_jsxs("label", { style: swatchLabel, children: ["fill", _jsx("input", { type: "color", value: toHex(s.fill), onChange: (e) => set({ fill: e.target.value }) })] }), _jsxs("label", { style: swatchLabel, children: ["stroke", _jsx("input", { type: "color", value: toHex(s.stroke), onChange: (e) => set({ stroke: e.target.value }) })] })] }), _jsx("button", { type: "button", onClick: clearCanvas, style: { ...MINI_BUTTON, color: "#f87171", borderColor: "#f87171" }, children: "Clear canvas" })] }));
|
|
178
|
+
}
|
|
179
|
+
function toHex(color) {
|
|
180
|
+
return typeof color === "string" && /^#[0-9a-fA-F]{6}$/.test(color) ? color : "#000000";
|
|
181
|
+
}
|
|
182
|
+
const dockStyle = {
|
|
183
|
+
...PANEL_BASE,
|
|
184
|
+
// width must include padding so DebugHud's sibling offset (based on the
|
|
185
|
+
// nominal width) actually clears the dock — otherwise content-box padding
|
|
186
|
+
// makes the dock ~20px wider than expected and the minimap overlaps it.
|
|
187
|
+
boxSizing: "border-box",
|
|
188
|
+
position: "absolute",
|
|
189
|
+
left: 8,
|
|
190
|
+
top: 8,
|
|
191
|
+
bottom: 8,
|
|
192
|
+
width: CONTROLS_DOCK_WIDTH,
|
|
193
|
+
overflowY: "auto",
|
|
194
|
+
};
|
|
195
|
+
const collapsedStripStyle = {
|
|
196
|
+
...PANEL_BASE,
|
|
197
|
+
boxSizing: "border-box",
|
|
198
|
+
position: "absolute",
|
|
199
|
+
left: 8,
|
|
200
|
+
top: 8,
|
|
201
|
+
bottom: 8,
|
|
202
|
+
width: CONTROLS_DOCK_COLLAPSED,
|
|
203
|
+
display: "flex",
|
|
204
|
+
alignItems: "center",
|
|
205
|
+
justifyContent: "center",
|
|
206
|
+
cursor: "pointer",
|
|
207
|
+
border: "none",
|
|
208
|
+
color: ACCENT,
|
|
209
|
+
fontSize: 11,
|
|
210
|
+
fontWeight: 700,
|
|
211
|
+
};
|
|
212
|
+
const headerStyle = {
|
|
213
|
+
display: "flex",
|
|
214
|
+
alignItems: "center",
|
|
215
|
+
justifyContent: "space-between",
|
|
216
|
+
marginBottom: 2,
|
|
217
|
+
fontSize: 11,
|
|
218
|
+
};
|
|
219
|
+
// セクションごとに区切り線 + 上マージンを付けて境界を明確にする。
|
|
220
|
+
const sectionStyle = {
|
|
221
|
+
marginTop: 10,
|
|
222
|
+
paddingTop: 10,
|
|
223
|
+
borderTop: "1px solid rgba(255, 255, 255, 0.1)",
|
|
224
|
+
};
|
|
225
|
+
// ヘッダーは大文字 + トラッキング + やや明るい色でスキャンしやすくする。
|
|
226
|
+
const sectionHeaderStyle = {
|
|
227
|
+
display: "flex",
|
|
228
|
+
alignItems: "center",
|
|
229
|
+
width: "100%",
|
|
230
|
+
textAlign: "left",
|
|
231
|
+
background: "transparent",
|
|
232
|
+
border: "none",
|
|
233
|
+
cursor: "pointer",
|
|
234
|
+
padding: 0,
|
|
235
|
+
margin: 0,
|
|
236
|
+
fontFamily: "inherit",
|
|
237
|
+
color: "#c9c9d4",
|
|
238
|
+
fontSize: 10.5,
|
|
239
|
+
fontWeight: 600,
|
|
240
|
+
letterSpacing: 0.6,
|
|
241
|
+
textTransform: "uppercase",
|
|
242
|
+
};
|
|
243
|
+
// 本文はインデント + 左のレールで「ヘッダー配下」であることを視覚化する。
|
|
244
|
+
const sectionBodyStyle = {
|
|
245
|
+
marginTop: 8,
|
|
246
|
+
marginLeft: 3,
|
|
247
|
+
paddingLeft: 9,
|
|
248
|
+
borderLeft: "1px solid rgba(255, 255, 255, 0.08)",
|
|
249
|
+
};
|
|
250
|
+
const toolGridStyle = {
|
|
251
|
+
display: "flex",
|
|
252
|
+
flexWrap: "wrap",
|
|
253
|
+
gap: 4,
|
|
254
|
+
};
|
|
255
|
+
const swatchLabel = {
|
|
256
|
+
display: "flex",
|
|
257
|
+
alignItems: "center",
|
|
258
|
+
gap: 3,
|
|
259
|
+
color: TEXT_LABEL,
|
|
260
|
+
fontSize: 10,
|
|
261
|
+
};
|
|
262
|
+
//# sourceMappingURL=controls-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controls-panel.js","sourceRoot":"","sources":["../../src/panels/controls-panel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events-panel.d.ts","sourceRoot":"","sources":["../../src/panels/events-panel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"events-panel.d.ts","sourceRoot":"","sources":["../../src/panels/events-panel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIrE,UAAU,gBAAgB;IACzB,WAAW,EAAE,WAAW,CAAC;CACzB;AA4BD,wBAAgB,WAAW,CAAC,EAAE,WAAW,EAAE,EAAE,gBAAgB,+BAyE5D"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useState, useSyncExternalStore } from "react";
|
|
3
|
+
import { STOP_CANVAS_PROPAGATION } from "../stop-propagation.js";
|
|
3
4
|
import { LABEL_STYLE, MINI_BUTTON, PANEL_BASE, SCROLLABLE_STYLE, TEXT_MUTED } from "../styles.js";
|
|
4
5
|
const EVENT_COLORS = {
|
|
5
6
|
// canvas events — each action gets its own shade
|
|
@@ -30,7 +31,7 @@ export function EventsPanel({ eventLogger }) {
|
|
|
30
31
|
const filtered = filter
|
|
31
32
|
? events.filter((e) => e.event.toLowerCase().includes(filter.toLowerCase()))
|
|
32
33
|
: events;
|
|
33
|
-
return (_jsxs("div", { style: {
|
|
34
|
+
return (_jsxs("div", { ...STOP_CANVAS_PROPAGATION, style: {
|
|
34
35
|
...PANEL_BASE,
|
|
35
36
|
position: "absolute",
|
|
36
37
|
bottom: 8,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events-panel.js","sourceRoot":"","sources":["../../src/panels/events-panel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAMlG,MAAM,YAAY,GAA2B;IAC5C,iDAAiD;IACjD,oBAAoB,EAAE,SAAS,EAAE,OAAO;IACxC,kBAAkB,EAAE,SAAS,EAAE,aAAa;IAC5C,oBAAoB,EAAE,SAAS,EAAE,eAAe;IAChD,cAAc,EAAE,SAAS,EAAE,YAAY;IACvC,oBAAoB,EAAE,SAAS,EAAE,cAAc;IAC/C,eAAe;IACf,KAAK,EAAE,SAAS,EAAE,QAAQ;IAC1B,cAAc;IACd,IAAI,EAAE,SAAS,EAAE,SAAS;IAC1B,mBAAmB;IACnB,SAAS,EAAE,SAAS,EAAE,SAAS;IAC/B,kBAAkB;IAClB,QAAQ,EAAE,SAAS,EAAE,OAAO;IAC5B,iBAAiB;IACjB,OAAO,EAAE,SAAS,EAAE,SAAS;CAC7B,CAAC;AAEF,MAAM,mBAAmB,GAAG,SAAS,CAAC;AAEtC,SAAS,UAAU,CAAC,KAAa;IAChC,qCAAqC;IACrC,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAE,WAAW,EAAoB;IAC5D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEzC,MAAM,MAAM,GAAG,oBAAoB,CAClC,WAAW,CAAC,CAAC,EAAc,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EACzE,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,CAC/B,CAAC;IAEF,MAAM,QAAQ,GAA6B,MAAM;QAChD,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5E,CAAC,CAAC,MAAM,CAAC;IAEV,OAAO,CACN,
|
|
1
|
+
{"version":3,"file":"events-panel.js","sourceRoot":"","sources":["../../src/panels/events-panel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { BoardStore, CommandRegistry, EventBus, LayerManager, ShapeRegistry, ToolRegistry, Viewport } from "@edv4h/usketch-shared";
|
|
2
|
+
import type { BoardMetaTrackerLike } from "../board-meta-types.js";
|
|
2
3
|
import type { FpsCounter } from "../fps-counter.js";
|
|
3
4
|
import type { PointerTracker } from "../pointer-tracker.js";
|
|
4
5
|
import type { SyncStatusTrackerLike } from "../sync-status-types.js";
|
|
@@ -11,10 +12,11 @@ interface GeneralPanelProps {
|
|
|
11
12
|
layers: LayerManager;
|
|
12
13
|
shapes: ShapeRegistry;
|
|
13
14
|
syncStatus?: SyncStatusTrackerLike;
|
|
15
|
+
boardMeta?: BoardMetaTrackerLike;
|
|
14
16
|
events: EventBus;
|
|
15
17
|
viewport: Viewport;
|
|
16
18
|
activeToolId: string;
|
|
17
19
|
}
|
|
18
|
-
export declare function GeneralPanel({ store, fpsCounter, pointerTracker, commands, tools, layers, shapes, syncStatus, events, viewport, activeToolId, }: GeneralPanelProps): import("react").JSX.Element;
|
|
20
|
+
export declare function GeneralPanel({ store, fpsCounter, pointerTracker, commands, tools, layers, shapes, syncStatus, boardMeta, events, viewport, activeToolId, }: GeneralPanelProps): import("react").JSX.Element;
|
|
19
21
|
export {};
|
|
20
22
|
//# sourceMappingURL=general-panel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"general-panel.d.ts","sourceRoot":"","sources":["../../src/panels/general-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,EACV,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"general-panel.d.ts","sourceRoot":"","sources":["../../src/panels/general-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,EACV,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAqB,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEtF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAY5D,OAAO,KAAK,EAAsB,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAQzF,UAAU,iBAAiB;IAC1B,KAAK,EAAE,UAAU,CAAC;IAClB,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACrB;AAqCD,wBAAgB,YAAY,CAAC,EAC5B,KAAK,EACL,UAAU,EACV,cAAc,EACd,QAAQ,EACR,KAAK,EACL,MAAM,EACN,MAAM,EACN,UAAU,EACV,SAAS,EACT,MAAM,EACN,QAAQ,EACR,YAAY,GACZ,EAAE,iBAAiB,+BAoPnB"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useEffect, useState, useSyncExternalStore } from "react";
|
|
3
3
|
import { FpsGraph } from "../components/fps-graph.js";
|
|
4
|
+
import { STOP_CANVAS_PROPAGATION } from "../stop-propagation.js";
|
|
4
5
|
import { fmt, fpsColor, INLINE_INPUT, LABEL_STYLE, MINI_BUTTON, MINI_BUTTON_ACCENT, PANEL_BASE, SECTION_STYLE, } from "../styles.js";
|
|
6
|
+
const DEFAULT_BOARD_META = { name: null, isCloud: false };
|
|
5
7
|
const DEFAULT_SYNC_SNAPSHOT = {
|
|
6
8
|
state: "loading",
|
|
7
9
|
shapeCount: 0,
|
|
@@ -32,10 +34,11 @@ function formatTimestamp(ts) {
|
|
|
32
34
|
const d = new Date(ts);
|
|
33
35
|
return `${d.getHours().toString().padStart(2, "0")}:${d.getMinutes().toString().padStart(2, "0")}:${d.getSeconds().toString().padStart(2, "0")}`;
|
|
34
36
|
}
|
|
35
|
-
export function GeneralPanel({ store, fpsCounter, pointerTracker, commands, tools, layers, shapes, syncStatus, events, viewport, activeToolId, }) {
|
|
37
|
+
export function GeneralPanel({ store, fpsCounter, pointerTracker, commands, tools, layers, shapes, syncStatus, boardMeta, events, viewport, activeToolId, }) {
|
|
36
38
|
const fps = useSyncExternalStore(useCallback((cb) => fpsCounter.subscribe(cb), [fpsCounter]), () => fpsCounter.getSnapshot());
|
|
37
39
|
const pointer = useSyncExternalStore(useCallback((cb) => pointerTracker.subscribe(cb), [pointerTracker]), () => pointerTracker.getSnapshot());
|
|
38
40
|
const syncSnapshot = useSyncExternalStore(useCallback((cb) => (syncStatus ? syncStatus.subscribe(cb) : () => { }), [syncStatus]), () => syncStatus?.getSnapshot() ?? DEFAULT_SYNC_SNAPSHOT);
|
|
41
|
+
const board = useSyncExternalStore(useCallback((cb) => (boardMeta ? boardMeta.subscribe(cb) : () => { }), [boardMeta]), () => boardMeta?.getSnapshot() ?? DEFAULT_BOARD_META);
|
|
39
42
|
const canUndo = commands.canUndo();
|
|
40
43
|
const canRedo = commands.canRedo();
|
|
41
44
|
const historySize = commands.getHistorySize();
|
|
@@ -64,13 +67,13 @@ export function GeneralPanel({ store, fpsCounter, pointerTracker, commands, tool
|
|
|
64
67
|
}
|
|
65
68
|
setEditingViewport(false);
|
|
66
69
|
};
|
|
67
|
-
return (_jsxs("div", { style: {
|
|
70
|
+
return (_jsxs("div", { ...STOP_CANVAS_PROPAGATION, style: {
|
|
68
71
|
...PANEL_BASE,
|
|
69
72
|
position: "absolute",
|
|
70
73
|
top: 8,
|
|
71
74
|
right: 8,
|
|
72
75
|
width: 220,
|
|
73
|
-
}, children: [_jsxs("div", { style: SECTION_STYLE, children: [_jsxs("span", { style: { color: fpsColor(fps), fontWeight: "bold" }, children: [fps, " FPS"] }), _jsx(FpsGraph, { fpsCounter: fpsCounter })] }), _jsxs("div", { style: SECTION_STYLE, children: [_jsxs("div", { style: LABEL_STYLE, children: ["Viewport", " ", !editingViewport && (_jsx("button", { type: "button", style: MINI_BUTTON, onClick: startEditViewport, children: "edit" }))] }), editingViewport ? (_jsxs("div", { style: { display: "flex", gap: 3, alignItems: "center" }, children: [_jsx("input", { style: INLINE_INPUT, value: vpDraft.x, onChange: (e) => setVpDraft((d) => ({ ...d, x: e.target.value })), onKeyDown: (e) => e.key === "Enter" && commitViewport() }), _jsx("input", { style: INLINE_INPUT, value: vpDraft.y, onChange: (e) => setVpDraft((d) => ({ ...d, y: e.target.value })), onKeyDown: (e) => e.key === "Enter" && commitViewport() }), _jsx("input", { style: { ...INLINE_INPUT, width: 36 }, value: vpDraft.zoom, onChange: (e) => setVpDraft((d) => ({ ...d, zoom: e.target.value })), onKeyDown: (e) => e.key === "Enter" && commitViewport() }), _jsx("button", { type: "button", style: MINI_BUTTON_ACCENT, onClick: commitViewport, children: "OK" })] })) : (_jsxs("div", { children: ["x: ", fmt(viewport.x), " y: ", fmt(viewport.y), " zoom: ", fmt(viewport.zoom)] }))] }), _jsxs("div", { style: SECTION_STYLE, children: [_jsx("div", { style: LABEL_STYLE, children: "Active Tool" }), _jsx("div", { children: activeToolId })] }), _jsxs("div", { style: SECTION_STYLE, children: [_jsx("div", { style: LABEL_STYLE, children: "Pointer" }), _jsxs("div", { children: ["world: (", fmt(pointer.world.x), ", ", fmt(pointer.world.y), ")"] }), _jsxs("div", { children: ["screen: (", fmt(pointer.screen.x), ", ", fmt(pointer.screen.y), ")"] })] }), _jsxs("div", { style: SECTION_STYLE, children: [_jsxs("div", { style: LABEL_STYLE, children: ["History (", historyCursor + 1, "/", historySize, ")"] }), _jsxs("div", { style: { display: "flex", gap: 4 }, children: [_jsx("button", { type: "button", style: { ...MINI_BUTTON, opacity: canUndo ? 1 : 0.3 }, disabled: !canUndo, onClick: () => commands.undo(), children: "\u27F5 Undo" }), _jsx("button", { type: "button", style: { ...MINI_BUTTON, opacity: canRedo ? 1 : 0.3 }, disabled: !canRedo, onClick: () => commands.redo(), children: "Redo \u27F6" })] })] }), _jsxs("div", { style: SECTION_STYLE, children: [_jsx("div", { style: LABEL_STYLE, children: "Persistence (Yjs + IndexedDB)" }), _jsxs("div", { style: { display: "flex", alignItems: "center", gap: 5 }, children: [_jsx("span", { style: {
|
|
76
|
+
}, children: [_jsxs("div", { style: SECTION_STYLE, children: [_jsx("div", { style: LABEL_STYLE, children: "Board" }), _jsx("div", { style: { fontWeight: 600, color: "#e5e7eb", wordBreak: "break-word" }, children: board.name ?? "(untitled)" }), _jsxs("div", { style: { color: "#888" }, children: [board.isCloud ? "☁ Cloud" : "🖥 Local", board.id ? ` · ${board.id}` : ""] })] }), _jsxs("div", { style: SECTION_STYLE, children: [_jsxs("span", { style: { color: fpsColor(fps), fontWeight: "bold" }, children: [fps, " FPS"] }), _jsx(FpsGraph, { fpsCounter: fpsCounter })] }), _jsxs("div", { style: SECTION_STYLE, children: [_jsxs("div", { style: LABEL_STYLE, children: ["Viewport", " ", !editingViewport && (_jsx("button", { type: "button", style: MINI_BUTTON, onClick: startEditViewport, children: "edit" }))] }), editingViewport ? (_jsxs("div", { style: { display: "flex", gap: 3, alignItems: "center" }, children: [_jsx("input", { style: INLINE_INPUT, value: vpDraft.x, onChange: (e) => setVpDraft((d) => ({ ...d, x: e.target.value })), onKeyDown: (e) => e.key === "Enter" && commitViewport() }), _jsx("input", { style: INLINE_INPUT, value: vpDraft.y, onChange: (e) => setVpDraft((d) => ({ ...d, y: e.target.value })), onKeyDown: (e) => e.key === "Enter" && commitViewport() }), _jsx("input", { style: { ...INLINE_INPUT, width: 36 }, value: vpDraft.zoom, onChange: (e) => setVpDraft((d) => ({ ...d, zoom: e.target.value })), onKeyDown: (e) => e.key === "Enter" && commitViewport() }), _jsx("button", { type: "button", style: MINI_BUTTON_ACCENT, onClick: commitViewport, children: "OK" })] })) : (_jsxs("div", { children: ["x: ", fmt(viewport.x), " y: ", fmt(viewport.y), " zoom: ", fmt(viewport.zoom)] }))] }), _jsxs("div", { style: SECTION_STYLE, children: [_jsx("div", { style: LABEL_STYLE, children: "Active Tool" }), _jsx("div", { children: activeToolId })] }), _jsxs("div", { style: SECTION_STYLE, children: [_jsx("div", { style: LABEL_STYLE, children: "Pointer" }), _jsxs("div", { children: ["world: (", fmt(pointer.world.x), ", ", fmt(pointer.world.y), ")"] }), _jsxs("div", { children: ["screen: (", fmt(pointer.screen.x), ", ", fmt(pointer.screen.y), ")"] })] }), _jsxs("div", { style: SECTION_STYLE, children: [_jsxs("div", { style: LABEL_STYLE, children: ["History (", historyCursor + 1, "/", historySize, ")"] }), _jsxs("div", { style: { display: "flex", gap: 4 }, children: [_jsx("button", { type: "button", style: { ...MINI_BUTTON, opacity: canUndo ? 1 : 0.3 }, disabled: !canUndo, onClick: () => commands.undo(), children: "\u27F5 Undo" }), _jsx("button", { type: "button", style: { ...MINI_BUTTON, opacity: canRedo ? 1 : 0.3 }, disabled: !canRedo, onClick: () => commands.redo(), children: "Redo \u27F6" })] })] }), _jsxs("div", { style: SECTION_STYLE, children: [_jsx("div", { style: LABEL_STYLE, children: "Persistence (Yjs + IndexedDB)" }), _jsxs("div", { style: { display: "flex", alignItems: "center", gap: 5 }, children: [_jsx("span", { style: {
|
|
74
77
|
display: "inline-block",
|
|
75
78
|
width: 7,
|
|
76
79
|
height: 7,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"general-panel.js","sourceRoot":"","sources":["../../src/panels/general-panel.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"general-panel.js","sourceRoot":"","sources":["../../src/panels/general-panel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,11 @@ interface ShapesPanelProps {
|
|
|
9
9
|
/** Shapes that exist locally but the server hasn't acknowledged. Empty if the
|
|
10
10
|
* sync layer doesn't track divergence. */
|
|
11
11
|
unconfirmedShapeIds?: ReadonlySet<string>;
|
|
12
|
+
/** Left offset so the panel clears the Controls dock. Default 8. */
|
|
13
|
+
offsetLeft?: number;
|
|
14
|
+
/** Render inline (inside the Controls dock section) instead of a floating panel. */
|
|
15
|
+
docked?: boolean;
|
|
12
16
|
}
|
|
13
|
-
export declare function ShapesPanel({ store, commands, shapes, selection, registry, onHoverShape, unconfirmedShapeIds, }: ShapesPanelProps): import("react").JSX.Element;
|
|
17
|
+
export declare function ShapesPanel({ store, commands, shapes, selection, registry, onHoverShape, unconfirmedShapeIds, offsetLeft, docked, }: ShapesPanelProps): import("react").JSX.Element;
|
|
14
18
|
export {};
|
|
15
19
|
//# sourceMappingURL=shapes-panel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shapes-panel.d.ts","sourceRoot":"","sources":["../../src/panels/shapes-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAenG,UAAU,gBAAgB;IACzB,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,aAAa,CAAC;IACxB,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1C;8CAC0C;IAC1C,mBAAmB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"shapes-panel.d.ts","sourceRoot":"","sources":["../../src/panels/shapes-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAenG,UAAU,gBAAgB;IACzB,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,aAAa,CAAC;IACxB,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1C;8CAC0C;IAC1C,mBAAmB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1C,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oFAAoF;IACpF,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AA+DD,wBAAgB,WAAW,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,MAAM,EACN,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACnB,UAAc,EACd,MAAc,GACd,EAAE,gBAAgB,+BA8JlB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useRef, useState } from "react";
|
|
3
3
|
import { ACCENT_DIM, fmt, INLINE_INPUT, LABEL_STYLE, MINI_BUTTON, MINI_BUTTON_ACCENT, PANEL_BASE, SCROLLABLE_STYLE, shortId, TEXT_MUTED, } from "../styles.js";
|
|
4
4
|
// Keys rendered explicitly in the always-on portion of the panel. Anything
|
|
@@ -33,12 +33,9 @@ function EditableField({ label, value, onCommit, }) {
|
|
|
33
33
|
// biome-ignore lint/a11y/noAutofocus: debug tool inline edit needs immediate focus
|
|
34
34
|
autoFocus: true })] }));
|
|
35
35
|
}
|
|
36
|
-
return (
|
|
37
|
-
// biome-ignore lint/a11y/useKeyWithClickEvents: debug tool
|
|
38
|
-
// biome-ignore lint/a11y/noStaticElementInteractions: debug tool
|
|
39
|
-
_jsxs("span", { onClick: start, style: { cursor: "text" }, title: "Click to edit", children: [label, ": ", fmt(value)] }));
|
|
36
|
+
return (_jsxs("span", { onClick: start, style: { cursor: "text" }, title: "Click to edit", children: [label, ": ", fmt(value)] }));
|
|
40
37
|
}
|
|
41
|
-
export function ShapesPanel({ store, commands, shapes, selection, registry, onHoverShape, unconfirmedShapeIds, }) {
|
|
38
|
+
export function ShapesPanel({ store, commands, shapes, selection, registry, onHoverShape, unconfirmedShapeIds, offsetLeft = 8, docked = false, }) {
|
|
42
39
|
const [expandedId, setExpandedId] = useState(null);
|
|
43
40
|
const [filterUnconfirmed, setFilterUnconfirmed] = useState(false);
|
|
44
41
|
const unconfirmedCount = unconfirmedShapeIds?.size ?? 0;
|
|
@@ -72,16 +69,7 @@ export function ShapesPanel({ store, commands, shapes, selection, registry, onHo
|
|
|
72
69
|
undo: () => store.addShape(snapshot),
|
|
73
70
|
});
|
|
74
71
|
};
|
|
75
|
-
|
|
76
|
-
...PANEL_BASE,
|
|
77
|
-
position: "absolute",
|
|
78
|
-
top: 8,
|
|
79
|
-
left: 8,
|
|
80
|
-
width: 240,
|
|
81
|
-
height: 300,
|
|
82
|
-
display: "flex",
|
|
83
|
-
flexDirection: "column",
|
|
84
|
-
}, children: [_jsxs("div", { style: {
|
|
72
|
+
const content = (_jsxs(_Fragment, { children: [_jsxs("div", { style: {
|
|
85
73
|
...LABEL_STYLE,
|
|
86
74
|
display: "flex",
|
|
87
75
|
alignItems: "center",
|
|
@@ -92,13 +80,11 @@ export function ShapesPanel({ store, commands, shapes, selection, registry, onHo
|
|
|
92
80
|
background: filterUnconfirmed ? "#7f1d1d" : "transparent",
|
|
93
81
|
color: filterUnconfirmed ? "#fecaca" : "#f87171",
|
|
94
82
|
border: "1px solid #7f1d1d",
|
|
95
|
-
}, title: "\u30B5\u30FC\u30D0\u672A\u540C\u671F Shape \u306E\u307F\u3092\u8868\u793A", children: ["\u26A0 ", unconfirmedCount] }))] }), _jsx("div", { style: { ...SCROLLABLE_STYLE, flexGrow: 1, maxHeight: "none" }, children: shapeEntries.length === 0 ? (_jsx("div", { style: { color: TEXT_MUTED }, children: "No shapes" })) : (shapeEntries.map((s) => {
|
|
83
|
+
}, title: "\u30B5\u30FC\u30D0\u672A\u540C\u671F Shape \u306E\u307F\u3092\u8868\u793A", children: ["\u26A0 ", unconfirmedCount] }))] }), _jsx("div", { style: { ...SCROLLABLE_STYLE, flexGrow: 1, maxHeight: docked ? 220 : "none" }, children: shapeEntries.length === 0 ? (_jsx("div", { style: { color: TEXT_MUTED }, children: "No shapes" })) : (shapeEntries.map((s) => {
|
|
96
84
|
const isSelected = selection.has(s.id);
|
|
97
85
|
const isExpanded = expandedId === s.id;
|
|
98
86
|
const isUnconfirmed = unconfirmedShapeIds?.has(s.id) ?? false;
|
|
99
|
-
return (
|
|
100
|
-
// biome-ignore lint/a11y/noStaticElementInteractions: debug tool
|
|
101
|
-
_jsxs("div", { onMouseEnter: () => onHoverShape(s.id), onMouseLeave: () => onHoverShape(null), children: [_jsxs("div", { onClick: () => setExpandedId(isExpanded ? null : s.id), style: {
|
|
87
|
+
return (_jsxs("div", { onMouseEnter: () => onHoverShape(s.id), onMouseLeave: () => onHoverShape(null), children: [_jsxs("div", { onClick: () => setExpandedId(isExpanded ? null : s.id), style: {
|
|
102
88
|
padding: "2px 4px",
|
|
103
89
|
borderRadius: 3,
|
|
104
90
|
background: isSelected ? ACCENT_DIM : "transparent",
|
|
@@ -116,6 +102,19 @@ export function ShapesPanel({ store, commands, shapes, selection, registry, onHo
|
|
|
116
102
|
fontWeight: 600,
|
|
117
103
|
}, title: "\u30B5\u30FC\u30D0\u306E Y.Doc \u306B\u5B58\u5728\u3057\u307E\u305B\u3093", children: "\u26A0 \u672A\u540C\u671F" }))] }), _jsxs("span", { style: { color: TEXT_MUTED, fontSize: 9 }, children: ["(", fmt(s.x), ", ", fmt(s.y), ")"] })] }), isExpanded && (_jsx(ShapeDetail, { shape: s, store: store, selection: selection, registry: registry, onUpdate: updateField, onDelete: deleteShape }))] }, s.id));
|
|
118
104
|
})) })] }));
|
|
105
|
+
if (docked) {
|
|
106
|
+
return _jsx("div", { style: { display: "flex", flexDirection: "column" }, children: content });
|
|
107
|
+
}
|
|
108
|
+
return (_jsx("div", { style: {
|
|
109
|
+
...PANEL_BASE,
|
|
110
|
+
position: "absolute",
|
|
111
|
+
top: 8,
|
|
112
|
+
left: offsetLeft,
|
|
113
|
+
width: 240,
|
|
114
|
+
height: 300,
|
|
115
|
+
display: "flex",
|
|
116
|
+
flexDirection: "column",
|
|
117
|
+
}, children: content }));
|
|
119
118
|
}
|
|
120
119
|
function ShapeDetail({ shape, store, selection, registry, onUpdate, onDelete, }) {
|
|
121
120
|
const def = registry.get(shape.type);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shapes-panel.js","sourceRoot":"","sources":["../../src/panels/shapes-panel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EACN,UAAU,EACV,GAAG,EACH,YAAY,EACZ,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,gBAAgB,EAChB,OAAO,EACP,UAAU,GACV,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"shapes-panel.js","sourceRoot":"","sources":["../../src/panels/shapes-panel.tsx"],"names":[],"mappings":"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"}
|
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,EAAgC,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAqBzF,wBAAgB,oBAAoB,IAAI,aAAa,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgC,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAqBzF,wBAAgB,oBAAoB,IAAI,aAAa,CA2EpD"}
|
package/dist/plugin.js
CHANGED
|
@@ -43,12 +43,14 @@ export function createDebugHudPlugin() {
|
|
|
43
43
|
});
|
|
44
44
|
// Pick up sync status tracker from window (set by app.tsx)
|
|
45
45
|
const syncStatus = globalThis.__usketchSyncStatus;
|
|
46
|
+
// Board メタ情報トラッカーも同じく window 経由で受け取る(app.tsx が設定)。
|
|
47
|
+
const boardMeta = globalThis.__usketchBoardMeta;
|
|
46
48
|
// Register the fixed layer — always renders, visibility toggled inside component
|
|
47
49
|
ctx.layers.register({
|
|
48
50
|
id: "debug-hud",
|
|
49
51
|
order: 9999,
|
|
50
52
|
fixed: true,
|
|
51
|
-
render: (renderCtx) => (_jsx(DebugHud, { store: ctx.store, fpsCounter: fpsCounter, eventLogger: eventLogger, pointerTracker: pointerTracker, commands: ctx.commands, tools: ctx.tools, layers: ctx.layers, shapes: ctx.shapes, syncStatus: syncStatus, events: ctx.events, ctx: renderCtx, visibility: visibility })),
|
|
53
|
+
render: (renderCtx) => (_jsx(DebugHud, { store: ctx.store, fpsCounter: fpsCounter, eventLogger: eventLogger, pointerTracker: pointerTracker, commands: ctx.commands, tools: ctx.tools, layers: ctx.layers, shapes: ctx.shapes, actions: ctx.actions, syncStatus: syncStatus, boardMeta: boardMeta, events: ctx.events, ctx: renderCtx, visibility: visibility })),
|
|
52
54
|
});
|
|
53
55
|
return () => {
|
|
54
56
|
fpsCounter.stop();
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointer-tracker.d.ts","sourceRoot":"","sources":["../src/pointer-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,KAAK,CAAC;CACd;AAID,qBAAa,cAAc;IAC1B,OAAO,CAAC,KAAK,CAAmE;IAChF,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAA8C;IAE3D,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"pointer-tracker.d.ts","sourceRoot":"","sources":["../src/pointer-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,KAAK,CAAC;CACd;AAID,qBAAa,cAAc;IAC1B,OAAO,CAAC,KAAK,CAAmE;IAChF,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAA8C;IAE3D,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,IAAI,CAYxC;IAED,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAG1C;IAED,WAAW,IAAI,YAAY,CAE1B;IAED,OAAO,IAAI,IAAI,CAGd;CACD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { MouseEvent as ReactMouseEvent, PointerEvent as ReactPointerEvent, WheelEvent as ReactWheelEvent } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* HUD パネルは Canvas コンテナと同じ React ツリー内(fixed レイヤーとして
|
|
4
|
+
* `<Canvas>` の子)に描画される。そのためパネル上のポインタ操作がそのまま
|
|
5
|
+
* 祖先の Canvas コンテナ(`onPointerDown` でアクティブツールを駆動する)へ
|
|
6
|
+
* バブリングし、意図しない描画・選択・選択解除を引き起こす。
|
|
7
|
+
*
|
|
8
|
+
* 各パネルの最外要素にこのハンドラ群を spread し、パネル内で発生した
|
|
9
|
+
* 操作起点のイベントが Canvas まで伝播しないようにする。パネル内のボタンや
|
|
10
|
+
* 入力の自前ハンドラは(ターゲットで先に実行されるため)影響を受けない。
|
|
11
|
+
*
|
|
12
|
+
* 意図的に **pointerdown / click / wheel / contextmenu だけ** を止め、
|
|
13
|
+
* pointermove / pointerup は通す:
|
|
14
|
+
* - ツールの操作は pointerdown が起点(select ツールの選択解除も pointerdown、
|
|
15
|
+
* onPointerUp は drag 中でなければ no-op)なので、pointerdown を止めれば
|
|
16
|
+
* 意図しない操作は防げる。
|
|
17
|
+
* - 一方 pointerup を止めると、Canvas 上で開始したドラッグを HUD パネル上で
|
|
18
|
+
* 離した場合にドラッグが確定できず宙ぶらりんになる。move/up を通しておけば
|
|
19
|
+
* その取りこぼしが起きない(drag 未開始時の move/up はツール側で no-op)。
|
|
20
|
+
*/
|
|
21
|
+
export declare const STOP_CANVAS_PROPAGATION: {
|
|
22
|
+
readonly onPointerDown: (e: ReactPointerEvent) => void;
|
|
23
|
+
readonly onClick: (e: ReactMouseEvent) => void;
|
|
24
|
+
readonly onWheel: (e: ReactWheelEvent) => void;
|
|
25
|
+
readonly onContextMenu: (e: ReactMouseEvent) => void;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=stop-propagation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stop-propagation.d.ts","sourceRoot":"","sources":["../src/stop-propagation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,IAAI,eAAe,EAC7B,YAAY,IAAI,iBAAiB,EACjC,UAAU,IAAI,eAAe,EAC7B,MAAM,OAAO,CAAC;AAEf;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,uBAAuB;aACnC,aAAa,MAAM,iBAAiB;aACpC,OAAO,MAAM,eAAe;aAC5B,OAAO,MAAM,eAAe;aAC5B,aAAa,MAAM,eAAe;CACzB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HUD パネルは Canvas コンテナと同じ React ツリー内(fixed レイヤーとして
|
|
3
|
+
* `<Canvas>` の子)に描画される。そのためパネル上のポインタ操作がそのまま
|
|
4
|
+
* 祖先の Canvas コンテナ(`onPointerDown` でアクティブツールを駆動する)へ
|
|
5
|
+
* バブリングし、意図しない描画・選択・選択解除を引き起こす。
|
|
6
|
+
*
|
|
7
|
+
* 各パネルの最外要素にこのハンドラ群を spread し、パネル内で発生した
|
|
8
|
+
* 操作起点のイベントが Canvas まで伝播しないようにする。パネル内のボタンや
|
|
9
|
+
* 入力の自前ハンドラは(ターゲットで先に実行されるため)影響を受けない。
|
|
10
|
+
*
|
|
11
|
+
* 意図的に **pointerdown / click / wheel / contextmenu だけ** を止め、
|
|
12
|
+
* pointermove / pointerup は通す:
|
|
13
|
+
* - ツールの操作は pointerdown が起点(select ツールの選択解除も pointerdown、
|
|
14
|
+
* onPointerUp は drag 中でなければ no-op)なので、pointerdown を止めれば
|
|
15
|
+
* 意図しない操作は防げる。
|
|
16
|
+
* - 一方 pointerup を止めると、Canvas 上で開始したドラッグを HUD パネル上で
|
|
17
|
+
* 離した場合にドラッグが確定できず宙ぶらりんになる。move/up を通しておけば
|
|
18
|
+
* その取りこぼしが起きない(drag 未開始時の move/up はツール側で no-op)。
|
|
19
|
+
*/
|
|
20
|
+
export const STOP_CANVAS_PROPAGATION = {
|
|
21
|
+
onPointerDown: (e) => e.stopPropagation(),
|
|
22
|
+
onClick: (e) => e.stopPropagation(),
|
|
23
|
+
onWheel: (e) => e.stopPropagation(),
|
|
24
|
+
onContextMenu: (e) => e.stopPropagation(),
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=stop-propagation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stop-propagation.js","sourceRoot":"","sources":["../src/stop-propagation.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACtC,aAAa,EAAE,CAAC,CAAoB,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE;IAC5D,OAAO,EAAE,CAAC,CAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE;IACpD,OAAO,EAAE,CAAC,CAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE;IACpD,aAAa,EAAE,CAAC,CAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE;CACjD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@edv4h/usketch-plugin-debug-hud",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -12,15 +12,15 @@
|
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@edv4h/usketch-shared": "4.
|
|
15
|
+
"@edv4h/usketch-shared": "4.5.0"
|
|
16
16
|
},
|
|
17
17
|
"peerDependencies": {
|
|
18
18
|
"react": ">=19"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
21
|
"@types/react": "19.2.17",
|
|
22
|
-
"typescript": "
|
|
23
|
-
"vitest": "
|
|
22
|
+
"typescript": "7.0.2",
|
|
23
|
+
"vitest": "4.1.10"
|
|
24
24
|
},
|
|
25
25
|
"publishConfig": {
|
|
26
26
|
"access": "public"
|