@edv4h/usketch-dom-renderer 2.2.1 → 2.3.1
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 +16 -1
- package/dist/dom-shape-layer.d.ts.map +1 -1
- package/dist/dom-shape-layer.js +21 -8
- package/dist/dom-shape-layer.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/plugin.d.ts +16 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +61 -1
- package/dist/plugin.js.map +1 -1
- package/package.json +3 -3
|
@@ -16,7 +16,20 @@ export declare function stableParentSort(sorted: readonly ShapeData[]): readonly
|
|
|
16
16
|
* (nothing is culled then).
|
|
17
17
|
*/
|
|
18
18
|
export declare function cullRegion(viewportBounds: BoundingBox, ratio: number, padPx: number, zoom: number): BoundingBox | null;
|
|
19
|
-
|
|
19
|
+
/**
|
|
20
|
+
* A shape's own drawing, as the DOM layer paints it inside its box: an HTML shape's
|
|
21
|
+
* `render` as-is, an SVG shape's wrapped in an `<svg>` whose viewBox maps the shape's
|
|
22
|
+
* world box onto it. Exported so other layers that draw a shape elsewhere (e.g. stood
|
|
23
|
+
* up in 3D) look exactly the same. The caller supplies the positioned box around it.
|
|
24
|
+
*/
|
|
25
|
+
export declare function ShapeContent({ shape, def, }: {
|
|
26
|
+
shape: ShapeData;
|
|
27
|
+
def: {
|
|
28
|
+
render: (data: ShapeData) => React.ReactElement;
|
|
29
|
+
renderTarget?: string;
|
|
30
|
+
};
|
|
31
|
+
}): React.ReactElement;
|
|
32
|
+
export declare function DomShapeLayer({ ctx, shapeRegistry, claimedIds, dropTargetId, viewportLod, viewportLodRatio, viewportCull, viewportCullRatio, cullPadPx, hiddenIds, }: {
|
|
20
33
|
ctx: LayerRenderContext;
|
|
21
34
|
shapeRegistry: ShapeRegistry;
|
|
22
35
|
/** Shape IDs already claimed by another renderer (e.g. GPU). These are skipped. */
|
|
@@ -36,5 +49,7 @@ export declare function DomShapeLayer({ ctx, shapeRegistry, claimedIds, dropTarg
|
|
|
36
49
|
viewportCullRatio?: number;
|
|
37
50
|
/** Extra screen px around the cull region (content a 3D view shows past the viewport). */
|
|
38
51
|
cullPadPx?: number;
|
|
52
|
+
/** Shapes another layer draws instead right now (see `HIDE_SHAPES_EVENT`). */
|
|
53
|
+
hiddenIds?: ReadonlySet<string>;
|
|
39
54
|
}): import("react").JSX.Element | null;
|
|
40
55
|
//# 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,EACX,WAAW,EACX,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,MAAM,uBAAuB,CAAC;AAU/B;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,SAAS,EAAE,CA8CnF;AAED;;;;;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;
|
|
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,EAClB,SAAS,EACT,aAAa,EACb,MAAM,uBAAuB,CAAC;AAU/B;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,SAAS,EAAE,CA8CnF;AAED;;;;;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;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAC5B,KAAK,EACL,GAAG,GACH,EAAE;IACF,KAAK,EAAE,SAAS,CAAC;IACjB,GAAG,EAAE;QAAE,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,KAAK,CAAC,YAAY,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAChF,GAAG,KAAK,CAAC,YAAY,CAiBrB;AA2ED,wBAAgB,aAAa,CAAC,EAC7B,GAAG,EACH,aAAa,EACb,UAAU,EACV,YAAY,EACZ,WAAkB,EAClB,gBAAsB,EACtB,YAAmB,EACnB,iBAAqB,EACrB,SAAa,EACb,SAAS,GACT,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;IACnB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAChC,sCA0IA"}
|
package/dist/dom-shape-layer.js
CHANGED
|
@@ -78,6 +78,22 @@ export function cullRegion(viewportBounds, ratio, padPx, zoom) {
|
|
|
78
78
|
height: scaled.height + 2 * pad,
|
|
79
79
|
};
|
|
80
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* A shape's own drawing, as the DOM layer paints it inside its box: an HTML shape's
|
|
83
|
+
* `render` as-is, an SVG shape's wrapped in an `<svg>` whose viewBox maps the shape's
|
|
84
|
+
* world box onto it. Exported so other layers that draw a shape elsewhere (e.g. stood
|
|
85
|
+
* up in 3D) look exactly the same. The caller supplies the positioned box around it.
|
|
86
|
+
*/
|
|
87
|
+
export function ShapeContent({ shape, def, }) {
|
|
88
|
+
if (def.renderTarget === "html")
|
|
89
|
+
return def.render(shape);
|
|
90
|
+
// For SVG shapes with zero width or height, use a minimum viewBox size
|
|
91
|
+
// to avoid NaN from SVG coordinate scaling (e.g. horizontal/vertical lines,
|
|
92
|
+
// groups with no children, connectors between aligned shapes).
|
|
93
|
+
const svgW = Math.max(shape.width, 1);
|
|
94
|
+
const svgH = Math.max(shape.height, 1);
|
|
95
|
+
return (_jsx("svg", { width: svgW, height: svgH, viewBox: `${shape.x} ${shape.y} ${svgW} ${svgH}`, style: { display: "block", overflow: "visible" }, children: def.render(shape) }));
|
|
96
|
+
}
|
|
81
97
|
// When dragging shapes onto a frame (drop target detected), boost their
|
|
82
98
|
// zIndex so they render above the frame's opaque background.
|
|
83
99
|
// Only applied when a drop target is active, not during normal selection.
|
|
@@ -93,12 +109,6 @@ const DROP_TARGET_Z_BOOST = 100_000;
|
|
|
93
109
|
const ShapeWrapper = memo(function ShapeWrapper({ shape, index, selected, overDropTarget, isContainer, def, }) {
|
|
94
110
|
const bounds = { x: shape.x, y: shape.y, width: shape.width, height: shape.height };
|
|
95
111
|
const rotation = safeRotation(shape.rotation);
|
|
96
|
-
const isHtml = def.renderTarget === "html";
|
|
97
|
-
// For SVG shapes with zero width or height, use a minimum viewBox size
|
|
98
|
-
// to avoid NaN from SVG coordinate scaling (e.g. horizontal/vertical lines,
|
|
99
|
-
// groups with no children, connectors between aligned shapes).
|
|
100
|
-
const svgW = Math.max(bounds.width, 1);
|
|
101
|
-
const svgH = Math.max(bounds.height, 1);
|
|
102
112
|
// Containers use pointerEvents: none to let children receive clicks
|
|
103
113
|
const boosted = selected && !isContainer && overDropTarget;
|
|
104
114
|
return (_jsx("div", { "data-shape-id": shape.id, style: {
|
|
@@ -111,7 +121,7 @@ const ShapeWrapper = memo(function ShapeWrapper({ shape, index, selected, overDr
|
|
|
111
121
|
pointerEvents: isContainer ? "none" : "auto",
|
|
112
122
|
transform: rotation ? `rotate(${rotation}deg)` : undefined,
|
|
113
123
|
transformOrigin: "center center",
|
|
114
|
-
}, children:
|
|
124
|
+
}, children: _jsx(ShapeContent, { shape: shape, def: def }) }));
|
|
115
125
|
});
|
|
116
126
|
/**
|
|
117
127
|
* LOD 表示の 1 シェイプ分。`ShapeWrapper` と同じく `React.memo` で囲み、`shape` 参照と
|
|
@@ -124,7 +134,7 @@ const ShapeWrapper = memo(function ShapeWrapper({ shape, index, selected, overDr
|
|
|
124
134
|
const LodShape = memo(function LodShape({ shape, Simplified, }) {
|
|
125
135
|
return _jsx(Simplified, { shape: shape });
|
|
126
136
|
});
|
|
127
|
-
export function DomShapeLayer({ ctx, shapeRegistry, claimedIds, dropTargetId, viewportLod = true, viewportLodRatio = 1.2, viewportCull = true, viewportCullRatio = 2, cullPadPx = 0, }) {
|
|
137
|
+
export function DomShapeLayer({ ctx, shapeRegistry, claimedIds, dropTargetId, viewportLod = true, viewportLodRatio = 1.2, viewportCull = true, viewportCullRatio = 2, cullPadPx = 0, hiddenIds, }) {
|
|
128
138
|
// Parents-before-children order only depends on the shapes, not the viewport, so
|
|
129
139
|
// it is not redone on every pan / zoom frame.
|
|
130
140
|
const shapes = useMemo(() => stableParentSort(ctx.shapesSorted), [ctx.shapesSorted]);
|
|
@@ -156,6 +166,9 @@ export function DomShapeLayer({ ctx, shapeRegistry, claimedIds, dropTargetId, vi
|
|
|
156
166
|
if (effectiveClaimedIds?.has(shape.id)) {
|
|
157
167
|
return null;
|
|
158
168
|
}
|
|
169
|
+
// Skip shapes another layer draws in their place (e.g. stood up in 3D).
|
|
170
|
+
if (hiddenIds?.has(shape.id))
|
|
171
|
+
return null;
|
|
159
172
|
const def = shapeRegistry.get(shape.type);
|
|
160
173
|
if (culling && isShapeOutsideViewport(shape, culling, 1))
|
|
161
174
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom-shape-layer.js","sourceRoot":"","sources":["../src/dom-shape-layer.tsx"],"names":[],"mappings":"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
|
|
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
|
-
export { DomShapeLayer } from "./dom-shape-layer.js";
|
|
2
|
-
export { createDomRendererPlugin, type DomRendererOptions, SET_VIEWPORT_CULL_EVENT, SET_VIEWPORT_LOD_EVENT, type SetViewportCullEvent, type SetViewportLodEvent, VIEWPORT_OVERSCAN_EVENT, } from "./plugin.js";
|
|
1
|
+
export { DomShapeLayer, ShapeContent } from "./dom-shape-layer.js";
|
|
2
|
+
export { createDomRendererPlugin, type DomRendererOptions, HIDE_SHAPES_EVENT, type HideShapesEvent, SET_VIEWPORT_CULL_EVENT, SET_VIEWPORT_LOD_EVENT, type SetViewportCullEvent, type SetViewportLodEvent, unionHiddenIds, 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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EACN,uBAAuB,EACvB,KAAK,kBAAkB,EACvB,iBAAiB,EACjB,KAAK,eAAe,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,cAAc,EACd,uBAAuB,GACvB,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { DomShapeLayer } from "./dom-shape-layer.js";
|
|
2
|
-
export { createDomRendererPlugin, SET_VIEWPORT_CULL_EVENT, SET_VIEWPORT_LOD_EVENT, VIEWPORT_OVERSCAN_EVENT, } from "./plugin.js";
|
|
1
|
+
export { DomShapeLayer, ShapeContent } from "./dom-shape-layer.js";
|
|
2
|
+
export { createDomRendererPlugin, HIDE_SHAPES_EVENT, SET_VIEWPORT_CULL_EVENT, SET_VIEWPORT_LOD_EVENT, unionHiddenIds, 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;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EACN,uBAAuB,EAEvB,iBAAiB,EAEjB,uBAAuB,EACvB,sBAAsB,EAGtB,cAAc,EACd,uBAAuB,GACvB,MAAM,aAAa,CAAC"}
|
package/dist/plugin.d.ts
CHANGED
|
@@ -37,5 +37,21 @@ export declare const SET_VIEWPORT_CULL_EVENT = "renderer:set-viewport-cull";
|
|
|
37
37
|
* Shared with the background grid and the map ground, which follow the same event.
|
|
38
38
|
*/
|
|
39
39
|
export declare const VIEWPORT_OVERSCAN_EVENT = "bg-grid:set-overscan";
|
|
40
|
+
/**
|
|
41
|
+
* Event another layer emits to draw some shapes in the DOM layer's place (e.g. stood
|
|
42
|
+
* up in 3D): the DOM layer skips them. Each `source` owns its own set — the next emit
|
|
43
|
+
* from the same source replaces it, an empty set clears it — so several sources don't
|
|
44
|
+
* undo each other. The union of all sources is hidden.
|
|
45
|
+
*/
|
|
46
|
+
export interface HideShapesEvent {
|
|
47
|
+
source: string;
|
|
48
|
+
/** Any iterable of ids (a `Set` usually); copied on receipt. Empty = show them all again. */
|
|
49
|
+
ids: Iterable<string>;
|
|
50
|
+
}
|
|
51
|
+
export declare const HIDE_SHAPES_EVENT = "renderer:hide-shapes";
|
|
52
|
+
/** The union of every source's hidden ids (`undefined` when nothing is hidden). Pure. */
|
|
53
|
+
export declare function unionHiddenIds(bySource: ReadonlyMap<string, ReadonlySet<string>>): ReadonlySet<string> | undefined;
|
|
54
|
+
/** A copy of the event's ids as a Set of strings, or `null` when it isn't iterable. */
|
|
55
|
+
export declare function toIdSet(ids: unknown): Set<string> | null;
|
|
40
56
|
export declare function createDomRendererPlugin(options?: DomRendererOptions): UsketchPlugin;
|
|
41
57
|
//# 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;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;
|
|
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;AAE9D;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CACtB;AACD,eAAO,MAAM,iBAAiB,yBAAyB,CAAC;AAExD,yFAAyF;AACzF,wBAAgB,cAAc,CAC7B,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,GAChD,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAajC;AAUD,uFAAuF;AACvF,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAMxD;AAaD,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,kBAAuB,GAAG,aAAa,CAkIvF"}
|
package/dist/plugin.js
CHANGED
|
@@ -8,6 +8,47 @@ export const SET_VIEWPORT_CULL_EVENT = "renderer:set-viewport-cull";
|
|
|
8
8
|
* Shared with the background grid and the map ground, which follow the same event.
|
|
9
9
|
*/
|
|
10
10
|
export const VIEWPORT_OVERSCAN_EVENT = "bg-grid:set-overscan";
|
|
11
|
+
export const HIDE_SHAPES_EVENT = "renderer:hide-shapes";
|
|
12
|
+
/** The union of every source's hidden ids (`undefined` when nothing is hidden). Pure. */
|
|
13
|
+
export function unionHiddenIds(bySource) {
|
|
14
|
+
let only;
|
|
15
|
+
let merged;
|
|
16
|
+
for (const ids of bySource.values()) {
|
|
17
|
+
if (ids.size === 0)
|
|
18
|
+
continue;
|
|
19
|
+
if (!only) {
|
|
20
|
+
only = ids;
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
merged ??= new Set(only);
|
|
24
|
+
for (const id of ids)
|
|
25
|
+
merged.add(id);
|
|
26
|
+
}
|
|
27
|
+
return merged ?? only;
|
|
28
|
+
}
|
|
29
|
+
function sameIds(a, b) {
|
|
30
|
+
const size = a?.size ?? 0;
|
|
31
|
+
if (size !== b.size)
|
|
32
|
+
return false;
|
|
33
|
+
if (!a)
|
|
34
|
+
return true;
|
|
35
|
+
for (const id of b)
|
|
36
|
+
if (!a.has(id))
|
|
37
|
+
return false;
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
/** A copy of the event's ids as a Set of strings, or `null` when it isn't iterable. */
|
|
41
|
+
export function toIdSet(ids) {
|
|
42
|
+
if (ids == null || typeof ids[Symbol.iterator] !== "function")
|
|
43
|
+
return null;
|
|
44
|
+
if (typeof ids === "string")
|
|
45
|
+
return null;
|
|
46
|
+
const out = new Set();
|
|
47
|
+
for (const id of ids)
|
|
48
|
+
if (typeof id === "string")
|
|
49
|
+
out.add(id);
|
|
50
|
+
return out;
|
|
51
|
+
}
|
|
11
52
|
const DEFAULT_VIEWPORT_LOD_RATIO = 1.2;
|
|
12
53
|
const DEFAULT_VIEWPORT_CULL_RATIO = 2;
|
|
13
54
|
/** Clamp a user-provided ratio to a finite positive number (else the default). */
|
|
@@ -34,6 +75,24 @@ export function createDomRendererPlugin(options = {}) {
|
|
|
34
75
|
let dropTargetId = null;
|
|
35
76
|
// Screen px a 3D view shows past the viewport (see VIEWPORT_OVERSCAN_EVENT)
|
|
36
77
|
let overscanPx = 0;
|
|
78
|
+
// Shapes other layers draw instead, per source (see HIDE_SHAPES_EVENT)
|
|
79
|
+
const hiddenBySource = new Map();
|
|
80
|
+
let hiddenIds;
|
|
81
|
+
const unsubHide = ctx.events.on(HIDE_SHAPES_EVENT, (d) => {
|
|
82
|
+
if (typeof d?.source !== "string")
|
|
83
|
+
return;
|
|
84
|
+
const ids = toIdSet(d.ids);
|
|
85
|
+
if (!ids)
|
|
86
|
+
return;
|
|
87
|
+
if (sameIds(hiddenBySource.get(d.source), ids))
|
|
88
|
+
return;
|
|
89
|
+
if (ids.size === 0)
|
|
90
|
+
hiddenBySource.delete(d.source);
|
|
91
|
+
else
|
|
92
|
+
hiddenBySource.set(d.source, ids);
|
|
93
|
+
hiddenIds = unionHiddenIds(hiddenBySource);
|
|
94
|
+
ctx.events.emit("layers:changed", {});
|
|
95
|
+
});
|
|
37
96
|
// Runtime viewport-LOD adjustment from a UI control (Control HUD).
|
|
38
97
|
const unsubViewportLod = ctx.events.on(SET_VIEWPORT_LOD_EVENT, (d) => {
|
|
39
98
|
if (typeof d.enabled === "boolean")
|
|
@@ -88,7 +147,7 @@ export function createDomRendererPlugin(options = {}) {
|
|
|
88
147
|
ctx.layers.register({
|
|
89
148
|
id: "dom-shapes",
|
|
90
149
|
order: 50,
|
|
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 })),
|
|
150
|
+
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, hiddenIds: hiddenIds })),
|
|
92
151
|
});
|
|
93
152
|
return () => {
|
|
94
153
|
unsubClaim();
|
|
@@ -96,6 +155,7 @@ export function createDomRendererPlugin(options = {}) {
|
|
|
96
155
|
unsubViewportLod();
|
|
97
156
|
unsubViewportCull();
|
|
98
157
|
unsubOverscan();
|
|
158
|
+
unsubHide();
|
|
99
159
|
ctx.layers.unregister("dom-shapes");
|
|
100
160
|
};
|
|
101
161
|
},
|
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;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;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@edv4h/usketch-dom-renderer",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.1",
|
|
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.21.0"
|
|
16
16
|
},
|
|
17
17
|
"peerDependencies": {
|
|
18
18
|
"react": ">=19",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"@types/react-dom": "19.3.0",
|
|
24
24
|
"jsdom": "30.1.3",
|
|
25
25
|
"typescript": "7.0.2",
|
|
26
|
-
"vitest": "5.0
|
|
26
|
+
"vitest": "5.1.0"
|
|
27
27
|
},
|
|
28
28
|
"publishConfig": {
|
|
29
29
|
"access": "public"
|