@edv4h/usketch-dom-renderer 2.1.13 → 2.2.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/dom-shape-layer.d.ts +18 -2
- package/dist/dom-shape-layer.d.ts.map +1 -1
- package/dist/dom-shape-layer.js +43 -9
- package/dist/dom-shape-layer.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/plugin.d.ts +21 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +32 -3
- package/dist/plugin.js.map +1 -1
- package/package.json +3 -2
|
@@ -1,5 +1,12 @@
|
|
|
1
|
-
import type { LayerRenderContext, ShapeRegistry } from "@edv4h/usketch-shared";
|
|
2
|
-
|
|
1
|
+
import type { BoundingBox, LayerRenderContext, ShapeRegistry } from "@edv4h/usketch-shared";
|
|
2
|
+
/**
|
|
3
|
+
* The region outside which shapes are not rendered at all: `viewportBounds` scaled
|
|
4
|
+
* by `ratio` about its center, then grown by `padPx` screen px on every side (a 3D
|
|
5
|
+
* view showing content past the viewport). `null` while the canvas is unmeasured
|
|
6
|
+
* (nothing is culled then).
|
|
7
|
+
*/
|
|
8
|
+
export declare function cullRegion(viewportBounds: BoundingBox, ratio: number, padPx: number, zoom: number): BoundingBox | null;
|
|
9
|
+
export declare function DomShapeLayer({ ctx, shapeRegistry, claimedIds, dropTargetId, viewportLod, viewportLodRatio, viewportCull, viewportCullRatio, cullPadPx, }: {
|
|
3
10
|
ctx: LayerRenderContext;
|
|
4
11
|
shapeRegistry: ShapeRegistry;
|
|
5
12
|
/** Shape IDs already claimed by another renderer (e.g. GPU). These are skipped. */
|
|
@@ -10,5 +17,14 @@ export declare function DomShapeLayer({ ctx, shapeRegistry, claimedIds, dropTarg
|
|
|
10
17
|
viewportLod?: boolean;
|
|
11
18
|
/** Full-detail region as a multiple of the viewport (1.2 = 120%). See isShapeOutsideViewport. */
|
|
12
19
|
viewportLodRatio?: number;
|
|
20
|
+
/** Don't render shapes outside `viewportCullRatio` × the viewport at all. */
|
|
21
|
+
viewportCull?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Cull region as a multiple of the viewport (2 = 200%). While `viewportLod` is on it
|
|
24
|
+
* is never below `viewportLodRatio` (shapes between the two render simplified).
|
|
25
|
+
*/
|
|
26
|
+
viewportCullRatio?: number;
|
|
27
|
+
/** Extra screen px around the cull region (content a 3D view shows past the viewport). */
|
|
28
|
+
cullPadPx?: number;
|
|
13
29
|
}): import("react").JSX.Element | null;
|
|
14
30
|
//# sourceMappingURL=dom-shape-layer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom-shape-layer.d.ts","sourceRoot":"","sources":["../src/dom-shape-layer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"dom-shape-layer.d.ts","sourceRoot":"","sources":["../src/dom-shape-layer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,WAAW,EACX,kBAAkB,EAElB,aAAa,EACb,MAAM,uBAAuB,CAAC;AAyD/B;;;;;GAKG;AACH,wBAAgB,UAAU,CACzB,cAAc,EAAE,WAAW,EAC3B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACV,WAAW,GAAG,IAAI,CAUpB;AA6FD,wBAAgB,aAAa,CAAC,EAC7B,GAAG,EACH,aAAa,EACb,UAAU,EACV,YAAY,EACZ,WAAkB,EAClB,gBAAsB,EACtB,YAAmB,EACnB,iBAAqB,EACrB,SAAa,GACb,EAAE;IACF,GAAG,EAAE,kBAAkB,CAAC;IACxB,aAAa,EAAE,aAAa,CAAC;IAC7B,mFAAmF;IACnF,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,0EAA0E;IAC1E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iGAAiG;IACjG,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,sCAwIA"}
|
package/dist/dom-shape-layer.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { isShapeContainer, isShapeOutsideViewport, safeRotation } from "@edv4h/usketch-shared";
|
|
3
|
-
import { memo } from "react";
|
|
2
|
+
import { isShapeContainer, isShapeOutsideViewport, safeRotation, scaleRectAboutCenter, } from "@edv4h/usketch-shared";
|
|
3
|
+
import { memo, useMemo } from "react";
|
|
4
4
|
import { LodFallback } from "./lod-fallback.js";
|
|
5
5
|
/**
|
|
6
6
|
* Reorder shapes so that each child appears immediately after its parent container,
|
|
@@ -49,6 +49,24 @@ function stableParentSort(sorted) {
|
|
|
49
49
|
}
|
|
50
50
|
return result;
|
|
51
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* The region outside which shapes are not rendered at all: `viewportBounds` scaled
|
|
54
|
+
* by `ratio` about its center, then grown by `padPx` screen px on every side (a 3D
|
|
55
|
+
* view showing content past the viewport). `null` while the canvas is unmeasured
|
|
56
|
+
* (nothing is culled then).
|
|
57
|
+
*/
|
|
58
|
+
export function cullRegion(viewportBounds, ratio, padPx, zoom) {
|
|
59
|
+
if (viewportBounds.width <= 0 || viewportBounds.height <= 0)
|
|
60
|
+
return null;
|
|
61
|
+
const scaled = scaleRectAboutCenter(viewportBounds, ratio);
|
|
62
|
+
const pad = padPx > 0 && zoom > 0 ? padPx / zoom : 0;
|
|
63
|
+
return {
|
|
64
|
+
x: scaled.x - pad,
|
|
65
|
+
y: scaled.y - pad,
|
|
66
|
+
width: scaled.width + 2 * pad,
|
|
67
|
+
height: scaled.height + 2 * pad,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
52
70
|
// When dragging shapes onto a frame (drop target detected), boost their
|
|
53
71
|
// zIndex so they render above the frame's opaque background.
|
|
54
72
|
// Only applied when a drop target is active, not during normal selection.
|
|
@@ -84,10 +102,29 @@ const ShapeWrapper = memo(function ShapeWrapper({ shape, index, selected, overDr
|
|
|
84
102
|
transformOrigin: "center center",
|
|
85
103
|
}, children: isHtml ? (def.render(shape)) : (_jsx("svg", { width: svgW, height: svgH, viewBox: `${bounds.x} ${bounds.y} ${svgW} ${svgH}`, style: { display: "block", overflow: "visible" }, children: def.render(shape) })) }));
|
|
86
104
|
});
|
|
87
|
-
|
|
105
|
+
/**
|
|
106
|
+
* LOD 表示の 1 シェイプ分。`ShapeWrapper` と同じく `React.memo` で囲み、`shape` 参照と
|
|
107
|
+
* `Simplified` が変わらないフレームでは再描画をスキップする。
|
|
108
|
+
*
|
|
109
|
+
* 画面外のシェイプはすべてここを通るため、memo が無いとパン・ズームの毎フレームや、
|
|
110
|
+
* 別のシェイプを 1 件ドラッグしただけでも、画面外のシェイプ全件の simplifiedComponent が
|
|
111
|
+
* 再実行されていた。
|
|
112
|
+
*/
|
|
113
|
+
const LodShape = memo(function LodShape({ shape, Simplified, }) {
|
|
114
|
+
return _jsx(Simplified, { shape: shape });
|
|
115
|
+
});
|
|
116
|
+
export function DomShapeLayer({ ctx, shapeRegistry, claimedIds, dropTargetId, viewportLod = true, viewportLodRatio = 1.2, viewportCull = true, viewportCullRatio = 2, cullPadPx = 0, }) {
|
|
117
|
+
// Parents-before-children order only depends on the shapes, not the viewport, so
|
|
118
|
+
// it is not redone on every pan / zoom frame.
|
|
119
|
+
const shapes = useMemo(() => stableParentSort(ctx.shapesSorted), [ctx.shapesSorted]);
|
|
88
120
|
// `gpu-only` mode: hide the DOM layer entirely (reserved for future use).
|
|
89
121
|
if (ctx.renderMode === "gpu-only")
|
|
90
122
|
return null;
|
|
123
|
+
// Off-screen shapes beyond the cull region aren't mounted: even simplified, every
|
|
124
|
+
// mounted node is walked and painted again on each pan / zoom frame.
|
|
125
|
+
const culling = viewportCull
|
|
126
|
+
? cullRegion(ctx.viewportBounds, viewportLod ? Math.max(viewportCullRatio, viewportLodRatio) : viewportCullRatio, cullPadPx, ctx.viewport.zoom)
|
|
127
|
+
: null;
|
|
91
128
|
// Global LOD (zoom/count/fps): every shape renders simplified.
|
|
92
129
|
const globalLod = ctx.renderMode === "lod";
|
|
93
130
|
// GPU is "active" only when it is both enabled (non-interactive mode) AND has
|
|
@@ -99,11 +136,6 @@ export function DomShapeLayer({ ctx, shapeRegistry, claimedIds, dropTargetId, vi
|
|
|
99
136
|
// so DOM owns the full shape set.
|
|
100
137
|
const gpuActive = ctx.renderMode !== "interactive" && claimedIds !== undefined;
|
|
101
138
|
const effectiveClaimedIds = gpuActive ? claimedIds : undefined;
|
|
102
|
-
// Use pre-sorted shapes (by zIndex ascending) from the layer render context,
|
|
103
|
-
// then reorder so that each child appears immediately after its parent container.
|
|
104
|
-
// This preserves user-controlled z-order within each sibling group while keeping
|
|
105
|
-
// the container-before-child invariant required by the DOM stacking context.
|
|
106
|
-
const shapes = stableParentSort(ctx.shapesSorted);
|
|
107
139
|
return (_jsx("div", { "data-layer": "shapes", children: shapes.map((shape, index) => {
|
|
108
140
|
// Skip invalid shapes (e.g. leaked Yjs internal objects)
|
|
109
141
|
if (!shape || typeof shape.id !== "string" || typeof shape.type !== "string") {
|
|
@@ -114,6 +146,8 @@ export function DomShapeLayer({ ctx, shapeRegistry, claimedIds, dropTargetId, vi
|
|
|
114
146
|
return null;
|
|
115
147
|
}
|
|
116
148
|
const def = shapeRegistry.get(shape.type);
|
|
149
|
+
if (culling && isShapeOutsideViewport(shape, culling, 1))
|
|
150
|
+
return null;
|
|
117
151
|
// LOD when the global mode says so, OR (per-shape) when the shape sits
|
|
118
152
|
// outside the scaled viewport — off-screen shapes render simplified.
|
|
119
153
|
const isLod = globalLod ||
|
|
@@ -132,7 +166,7 @@ export function DomShapeLayer({ ctx, shapeRegistry, claimedIds, dropTargetId, vi
|
|
|
132
166
|
if (def?.gpuPrimitive && gpuActive)
|
|
133
167
|
return null;
|
|
134
168
|
const Simplified = def?.simplifiedComponent ?? LodFallback;
|
|
135
|
-
return _jsx(
|
|
169
|
+
return _jsx(LodShape, { shape: shape, Simplified: Simplified }, shape.id);
|
|
136
170
|
}
|
|
137
171
|
if (!def) {
|
|
138
172
|
const sx = shape.x || 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom-shape-layer.js","sourceRoot":"","sources":["../src/dom-shape-layer.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"dom-shape-layer.js","sourceRoot":"","sources":["../src/dom-shape-layer.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { DomShapeLayer } from "./dom-shape-layer.js";
|
|
2
|
-
export { createDomRendererPlugin, type DomRendererOptions, SET_VIEWPORT_LOD_EVENT, type SetViewportLodEvent, } from "./plugin.js";
|
|
2
|
+
export { createDomRendererPlugin, type DomRendererOptions, SET_VIEWPORT_CULL_EVENT, SET_VIEWPORT_LOD_EVENT, type SetViewportCullEvent, type SetViewportLodEvent, VIEWPORT_OVERSCAN_EVENT, } from "./plugin.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACN,uBAAuB,EACvB,KAAK,kBAAkB,EACvB,sBAAsB,EACtB,KAAK,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACN,uBAAuB,EACvB,KAAK,kBAAkB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,uBAAuB,GACvB,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { DomShapeLayer } from "./dom-shape-layer.js";
|
|
2
|
-
export { createDomRendererPlugin, SET_VIEWPORT_LOD_EVENT, } from "./plugin.js";
|
|
2
|
+
export { createDomRendererPlugin, SET_VIEWPORT_CULL_EVENT, SET_VIEWPORT_LOD_EVENT, VIEWPORT_OVERSCAN_EVENT, } from "./plugin.js";
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACN,uBAAuB,EAEvB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACN,uBAAuB,EAEvB,uBAAuB,EACvB,sBAAsB,EAGtB,uBAAuB,GACvB,MAAM,aAAa,CAAC"}
|
package/dist/plugin.d.ts
CHANGED
|
@@ -9,6 +9,15 @@ export interface DomRendererOptions {
|
|
|
9
9
|
viewportLod?: boolean | {
|
|
10
10
|
ratio?: number;
|
|
11
11
|
};
|
|
12
|
+
/**
|
|
13
|
+
* Don't render shapes far outside the camera viewport at all (perf: every mounted
|
|
14
|
+
* shape is painted again on each pan / zoom frame). `true` (default) culls beyond a
|
|
15
|
+
* 200% region; pass `{ ratio }` to tune it (never below the LOD region while LOD is
|
|
16
|
+
* on). `false` disables it (every shape stays mounted).
|
|
17
|
+
*/
|
|
18
|
+
viewportCull?: boolean | {
|
|
19
|
+
ratio?: number;
|
|
20
|
+
};
|
|
12
21
|
}
|
|
13
22
|
/** Runtime override of the viewport-LOD setting (emit to adjust from a UI control). */
|
|
14
23
|
export interface SetViewportLodEvent {
|
|
@@ -16,5 +25,17 @@ export interface SetViewportLodEvent {
|
|
|
16
25
|
ratio?: number;
|
|
17
26
|
}
|
|
18
27
|
export declare const SET_VIEWPORT_LOD_EVENT = "renderer:set-viewport-lod";
|
|
28
|
+
/** Runtime override of the viewport-culling setting (emit to adjust from a UI control). */
|
|
29
|
+
export interface SetViewportCullEvent {
|
|
30
|
+
enabled?: boolean;
|
|
31
|
+
ratio?: number;
|
|
32
|
+
}
|
|
33
|
+
export declare const SET_VIEWPORT_CULL_EVENT = "renderer:set-viewport-cull";
|
|
34
|
+
/**
|
|
35
|
+
* Event a 3D view (Mode 7) emits with how many screen px of the board it shows past the
|
|
36
|
+
* viewport (`{ px }`); the cull region grows by that much so those shapes stay drawn.
|
|
37
|
+
* Shared with the background grid and the map ground, which follow the same event.
|
|
38
|
+
*/
|
|
39
|
+
export declare const VIEWPORT_OVERSCAN_EVENT = "bg-grid:set-overscan";
|
|
19
40
|
export declare function createDomRendererPlugin(options?: DomRendererOptions): UsketchPlugin;
|
|
20
41
|
//# sourceMappingURL=plugin.d.ts.map
|
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,EAAiB,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG1E,MAAM,WAAW,kBAAkB;IAClC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG1E,MAAM,WAAW,kBAAkB;IAClC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5C;AAED,uFAAuF;AACvF,MAAM,WAAW,mBAAmB;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AACD,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAElE,2FAA2F;AAC3F,MAAM,WAAW,oBAAoB;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AACD,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AAEpE;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,yBAAyB,CAAC;AAa9D,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,kBAAuB,GAAG,aAAa,CAkHvF"}
|
package/dist/plugin.js
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { DomShapeLayer } from "./dom-shape-layer.js";
|
|
3
3
|
export const SET_VIEWPORT_LOD_EVENT = "renderer:set-viewport-lod";
|
|
4
|
+
export const SET_VIEWPORT_CULL_EVENT = "renderer:set-viewport-cull";
|
|
5
|
+
/**
|
|
6
|
+
* Event a 3D view (Mode 7) emits with how many screen px of the board it shows past the
|
|
7
|
+
* viewport (`{ px }`); the cull region grows by that much so those shapes stay drawn.
|
|
8
|
+
* Shared with the background grid and the map ground, which follow the same event.
|
|
9
|
+
*/
|
|
10
|
+
export const VIEWPORT_OVERSCAN_EVENT = "bg-grid:set-overscan";
|
|
4
11
|
const DEFAULT_VIEWPORT_LOD_RATIO = 1.2;
|
|
12
|
+
const DEFAULT_VIEWPORT_CULL_RATIO = 2;
|
|
5
13
|
/** Clamp a user-provided ratio to a finite positive number (else the default). */
|
|
6
|
-
function sanitizeRatio(ratio) {
|
|
14
|
+
function sanitizeRatio(ratio, fallback = DEFAULT_VIEWPORT_LOD_RATIO) {
|
|
7
15
|
if (typeof ratio !== "number" || !Number.isFinite(ratio) || ratio <= 0) {
|
|
8
|
-
return
|
|
16
|
+
return fallback;
|
|
9
17
|
}
|
|
10
18
|
return ratio;
|
|
11
19
|
}
|
|
@@ -14,6 +22,8 @@ export function createDomRendererPlugin(options = {}) {
|
|
|
14
22
|
// render closure below reads the latest values.
|
|
15
23
|
let viewportLodEnabled = options.viewportLod !== false;
|
|
16
24
|
let viewportLodRatio = sanitizeRatio(typeof options.viewportLod === "object" ? options.viewportLod.ratio : undefined);
|
|
25
|
+
let viewportCullEnabled = options.viewportCull !== false;
|
|
26
|
+
let viewportCullRatio = sanitizeRatio(typeof options.viewportCull === "object" ? options.viewportCull.ratio : undefined, DEFAULT_VIEWPORT_CULL_RATIO);
|
|
17
27
|
return {
|
|
18
28
|
id: "usketch-dom-renderer",
|
|
19
29
|
name: "DOM Renderer",
|
|
@@ -22,6 +32,8 @@ export function createDomRendererPlugin(options = {}) {
|
|
|
22
32
|
let claimedIds = new Set();
|
|
23
33
|
// Track drop target frame (set by select tool during drag)
|
|
24
34
|
let dropTargetId = null;
|
|
35
|
+
// Screen px a 3D view shows past the viewport (see VIEWPORT_OVERSCAN_EVENT)
|
|
36
|
+
let overscanPx = 0;
|
|
25
37
|
// Runtime viewport-LOD adjustment from a UI control (Control HUD).
|
|
26
38
|
const unsubViewportLod = ctx.events.on(SET_VIEWPORT_LOD_EVENT, (d) => {
|
|
27
39
|
if (typeof d.enabled === "boolean")
|
|
@@ -30,6 +42,21 @@ export function createDomRendererPlugin(options = {}) {
|
|
|
30
42
|
viewportLodRatio = sanitizeRatio(d.ratio);
|
|
31
43
|
ctx.events.emit("layers:changed", {});
|
|
32
44
|
});
|
|
45
|
+
const unsubViewportCull = ctx.events.on(SET_VIEWPORT_CULL_EVENT, (d) => {
|
|
46
|
+
if (typeof d.enabled === "boolean")
|
|
47
|
+
viewportCullEnabled = d.enabled;
|
|
48
|
+
if (typeof d.ratio === "number") {
|
|
49
|
+
viewportCullRatio = sanitizeRatio(d.ratio, DEFAULT_VIEWPORT_CULL_RATIO);
|
|
50
|
+
}
|
|
51
|
+
ctx.events.emit("layers:changed", {});
|
|
52
|
+
});
|
|
53
|
+
const unsubOverscan = ctx.events.on(VIEWPORT_OVERSCAN_EVENT, ({ px }) => {
|
|
54
|
+
const next = Number.isFinite(px) && px > 0 ? px : 0;
|
|
55
|
+
if (next === overscanPx)
|
|
56
|
+
return;
|
|
57
|
+
overscanPx = next;
|
|
58
|
+
ctx.events.emit("layers:changed", {});
|
|
59
|
+
});
|
|
33
60
|
const unsubClaim = ctx.events.on("renderer:claim-shapes", (data) => {
|
|
34
61
|
// Only nudge the canvas to re-render if the claim set
|
|
35
62
|
// actually changed — otherwise we'd loop with GpuShapeLayer's
|
|
@@ -61,12 +88,14 @@ export function createDomRendererPlugin(options = {}) {
|
|
|
61
88
|
ctx.layers.register({
|
|
62
89
|
id: "dom-shapes",
|
|
63
90
|
order: 50,
|
|
64
|
-
render: (renderCtx) => (_jsx(DomShapeLayer, { ctx: renderCtx, shapeRegistry: ctx.shapes, claimedIds: claimedIds.size > 0 ? claimedIds : undefined, dropTargetId: dropTargetId, viewportLod: viewportLodEnabled, viewportLodRatio: viewportLodRatio })),
|
|
91
|
+
render: (renderCtx) => (_jsx(DomShapeLayer, { ctx: renderCtx, shapeRegistry: ctx.shapes, claimedIds: claimedIds.size > 0 ? claimedIds : undefined, dropTargetId: dropTargetId, viewportLod: viewportLodEnabled, viewportLodRatio: viewportLodRatio, viewportCull: viewportCullEnabled, viewportCullRatio: viewportCullRatio, cullPadPx: overscanPx })),
|
|
65
92
|
});
|
|
66
93
|
return () => {
|
|
67
94
|
unsubClaim();
|
|
68
95
|
unsubDropTarget();
|
|
69
96
|
unsubViewportLod();
|
|
97
|
+
unsubViewportCull();
|
|
98
|
+
unsubOverscan();
|
|
70
99
|
ctx.layers.unregister("dom-shapes");
|
|
71
100
|
};
|
|
72
101
|
},
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAwBrD,MAAM,CAAC,MAAM,sBAAsB,GAAG,2BAA2B,CAAC;AAOlE,MAAM,CAAC,MAAM,uBAAuB,GAAG,4BAA4B,CAAC;AAEpE;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,sBAAsB,CAAC;AAE9D,MAAM,0BAA0B,GAAG,GAAG,CAAC;AACvC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAEtC,kFAAkF;AAClF,SAAS,aAAa,CAAC,KAAyB,EAAE,QAAQ,GAAG,0BAA0B;IACtF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACxE,OAAO,QAAQ,CAAC;IACjB,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAO,GAAuB,EAAE;IACvE,2EAA2E;IAC3E,gDAAgD;IAChD,IAAI,kBAAkB,GAAG,OAAO,CAAC,WAAW,KAAK,KAAK,CAAC;IACvD,IAAI,gBAAgB,GAAG,aAAa,CACnC,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC/E,CAAC;IACF,IAAI,mBAAmB,GAAG,OAAO,CAAC,YAAY,KAAK,KAAK,CAAC;IACzD,IAAI,iBAAiB,GAAG,aAAa,CACpC,OAAO,OAAO,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EACjF,2BAA2B,CAC3B,CAAC;IAEF,OAAO;QACN,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,cAAc;QAEpB,KAAK,CAAC,GAAkB;YACvB,wDAAwD;YACxD,IAAI,UAAU,GAAwB,IAAI,GAAG,EAAE,CAAC;YAChD,2DAA2D;YAC3D,IAAI,YAAY,GAAkB,IAAI,CAAC;YACvC,4EAA4E;YAC5E,IAAI,UAAU,GAAG,CAAC,CAAC;YAEnB,mEAAmE;YACnE,MAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAsB,sBAAsB,EAAE,CAAC,CAAC,EAAE,EAAE;gBACzF,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,SAAS;oBAAE,kBAAkB,GAAG,CAAC,CAAC,OAAO,CAAC;gBACnE,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;oBAAE,gBAAgB,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC3E,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;YAEH,MAAM,iBAAiB,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CACtC,uBAAuB,EACvB,CAAC,CAAC,EAAE,EAAE;gBACL,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,SAAS;oBAAE,mBAAmB,GAAG,CAAC,CAAC,OAAO,CAAC;gBACpE,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACjC,iBAAiB,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC;gBACzE,CAAC;gBACD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YACvC,CAAC,CACD,CAAC;YAEF,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAiB,uBAAuB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;gBACvF,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpD,IAAI,IAAI,KAAK,UAAU;oBAAE,OAAO;gBAChC,UAAU,GAAG,IAAI,CAAC;gBAClB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAC/B,uBAAuB,EACvB,CAAC,IAAI,EAAE,EAAE;gBACR,sDAAsD;gBACtD,8DAA8D;gBAC9D,oBAAoB;gBACpB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;gBACtB,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,CAAC;gBAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;oBACd,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;wBACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;4BACzB,OAAO,GAAG,IAAI,CAAC;4BACf,MAAM;wBACP,CAAC;oBACF,CAAC;gBACF,CAAC;gBACD,UAAU,GAAG,IAAI,CAAC;gBAClB,IAAI,OAAO,EAAE,CAAC;oBACb,sDAAsD;oBACtD,mDAAmD;oBACnD,4CAA4C;oBAC5C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;gBACvC,CAAC;YACF,CAAC,CACD,CAAC;YAEF,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CACpC,qBAAqB,EACrB,CAAC,IAAI,EAAE,EAAE;gBACR,IAAI,YAAY,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;oBAC9B,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC;oBACvB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;gBACvC,CAAC;YACF,CAAC,CACD,CAAC;YAEF,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACnB,EAAE,EAAE,YAAY;gBAChB,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CACtB,KAAC,aAAa,IACb,GAAG,EAAE,SAAS,EACd,aAAa,EAAE,GAAG,CAAC,MAAM,EACzB,UAAU,EAAE,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EACxD,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,kBAAkB,EAC/B,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,mBAAmB,EACjC,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE,UAAU,GACpB,CACF;aACD,CAAC,CAAC;YAEH,OAAO,GAAG,EAAE;gBACX,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,CAAC;gBAClB,gBAAgB,EAAE,CAAC;gBACnB,iBAAiB,EAAE,CAAC;gBACpB,aAAa,EAAE,CAAC;gBAChB,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YACrC,CAAC,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@edv4h/usketch-dom-renderer",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@edv4h/usketch-shared": "4.
|
|
15
|
+
"@edv4h/usketch-shared": "4.19.0"
|
|
16
16
|
},
|
|
17
17
|
"peerDependencies": {
|
|
18
18
|
"react": ">=19",
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"@types/react": "19.3.0",
|
|
23
23
|
"@types/react-dom": "19.3.0",
|
|
24
|
+
"jsdom": "30.1.3",
|
|
24
25
|
"typescript": "7.0.2",
|
|
25
26
|
"vitest": "5.0.5"
|
|
26
27
|
},
|