canvu-react 0.3.8 → 0.3.10
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/chatbot.d.cts +1 -1
- package/dist/chatbot.d.ts +1 -1
- package/dist/react.cjs +65 -4
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +2 -2
- package/dist/react.d.ts +2 -2
- package/dist/react.js +65 -4
- package/dist/react.js.map +1 -1
- package/dist/realtime.cjs +248 -15
- package/dist/realtime.cjs.map +1 -1
- package/dist/realtime.d.cts +20 -7
- package/dist/realtime.d.ts +20 -7
- package/dist/realtime.js +248 -16
- package/dist/realtime.js.map +1 -1
- package/dist/{types-CW146bKP.d.cts → types-BtLGGw0r.d.cts} +10 -1
- package/dist/{types-CpqlbbCP.d.ts → types-ChnTSRSe.d.ts} +10 -1
- package/package.json +1 -1
package/dist/chatbot.d.cts
CHANGED
package/dist/chatbot.d.ts
CHANGED
package/dist/react.cjs
CHANGED
|
@@ -4891,6 +4891,7 @@ function InteractionOverlay({
|
|
|
4891
4891
|
eraserTrail = [],
|
|
4892
4892
|
laserTrail = [],
|
|
4893
4893
|
eraserPreviewItems = [],
|
|
4894
|
+
marqueeCandidateItems = [],
|
|
4894
4895
|
previewStrokeStyle
|
|
4895
4896
|
}) {
|
|
4896
4897
|
const z = camera.zoom;
|
|
@@ -5139,6 +5140,33 @@ function InteractionOverlay({
|
|
|
5139
5140
|
);
|
|
5140
5141
|
}) });
|
|
5141
5142
|
}
|
|
5143
|
+
let marqueeCandidates = null;
|
|
5144
|
+
if (marqueeCandidateItems.length > 0) {
|
|
5145
|
+
marqueeCandidates = /* @__PURE__ */ jsxRuntime.jsx("g", { children: marqueeCandidateItems.map((it) => {
|
|
5146
|
+
const b = normalizeRect(it.bounds);
|
|
5147
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5148
|
+
"g",
|
|
5149
|
+
{
|
|
5150
|
+
transform: formatItemPlacementTransform(it),
|
|
5151
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5152
|
+
"rect",
|
|
5153
|
+
{
|
|
5154
|
+
x: 0,
|
|
5155
|
+
y: 0,
|
|
5156
|
+
width: b.width,
|
|
5157
|
+
height: b.height,
|
|
5158
|
+
fill: "rgba(59, 130, 246, 0.10)",
|
|
5159
|
+
stroke: "#3b82f6",
|
|
5160
|
+
strokeWidth: overlayStrokePx,
|
|
5161
|
+
strokeDasharray: dashPattern,
|
|
5162
|
+
vectorEffect: "non-scaling-stroke"
|
|
5163
|
+
}
|
|
5164
|
+
)
|
|
5165
|
+
},
|
|
5166
|
+
`marquee-cand-${it.id}`
|
|
5167
|
+
);
|
|
5168
|
+
}) });
|
|
5169
|
+
}
|
|
5142
5170
|
let eraserTrailOverlay = null;
|
|
5143
5171
|
if (eraserTrail.length >= 1) {
|
|
5144
5172
|
const now = Date.now();
|
|
@@ -5239,6 +5267,7 @@ function InteractionOverlay({
|
|
|
5239
5267
|
width: "100%",
|
|
5240
5268
|
height: "100%",
|
|
5241
5269
|
children: /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: rootTransform, children: [
|
|
5270
|
+
marqueeCandidates,
|
|
5242
5271
|
preview,
|
|
5243
5272
|
laserTrailOverlay,
|
|
5244
5273
|
eraserTrailOverlay,
|
|
@@ -5282,7 +5311,7 @@ function PresenceRemoteLayer({
|
|
|
5282
5311
|
const rootTransform = formatCameraTransform(camera);
|
|
5283
5312
|
const overlayStrokePx = 1.25;
|
|
5284
5313
|
const LUCIDE_POINTER_VIEWBOX = 24;
|
|
5285
|
-
const remoteCursorScreenPx =
|
|
5314
|
+
const remoteCursorScreenPx = 22;
|
|
5286
5315
|
const iconWorldScale = remoteCursorScreenPx / (LUCIDE_POINTER_VIEWBOX * z);
|
|
5287
5316
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5288
5317
|
"svg",
|
|
@@ -5346,9 +5375,9 @@ function PresenceRemoteLayer({
|
|
|
5346
5375
|
let cursorNode = null;
|
|
5347
5376
|
if (cur) {
|
|
5348
5377
|
const displayName = peer.displayName;
|
|
5349
|
-
const labelOffsetX =
|
|
5350
|
-
const labelOffsetY =
|
|
5351
|
-
const labelFont =
|
|
5378
|
+
const labelOffsetX = 14 / z;
|
|
5379
|
+
const labelOffsetY = 14 / z;
|
|
5380
|
+
const labelFont = 12 / z;
|
|
5352
5381
|
cursorNode = /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
|
|
5353
5382
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5354
5383
|
"g",
|
|
@@ -5397,6 +5426,17 @@ function PresenceRemoteLayer({
|
|
|
5397
5426
|
);
|
|
5398
5427
|
}
|
|
5399
5428
|
|
|
5429
|
+
// src/react/stable-selection.ts
|
|
5430
|
+
function shallowEqualStringArray(a, b) {
|
|
5431
|
+
if (a === b) return true;
|
|
5432
|
+
if (!a || !b) return a === b;
|
|
5433
|
+
if (a.length !== b.length) return false;
|
|
5434
|
+
for (let i = 0; i < a.length; i++) {
|
|
5435
|
+
if (a[i] !== b[i]) return false;
|
|
5436
|
+
}
|
|
5437
|
+
return true;
|
|
5438
|
+
}
|
|
5439
|
+
|
|
5400
5440
|
// src/react/TextEditOverlay.tsx
|
|
5401
5441
|
init_rect();
|
|
5402
5442
|
init_text_svg();
|
|
@@ -6120,6 +6160,9 @@ var VectorViewport = react.forwardRef(
|
|
|
6120
6160
|
const [laserTrail, setLaserTrail] = react.useState([]);
|
|
6121
6161
|
const [eraserPreviewIds, setEraserPreviewIds] = react.useState([]);
|
|
6122
6162
|
const eraserPreviewIdsRef = react.useRef(/* @__PURE__ */ new Set());
|
|
6163
|
+
const [marqueeCandidateIds, setMarqueeCandidateIds] = react.useState([]);
|
|
6164
|
+
const marqueeCandidateIdsRef = react.useRef([]);
|
|
6165
|
+
marqueeCandidateIdsRef.current = marqueeCandidateIds;
|
|
6123
6166
|
const resolvedSceneItems = react.useMemo(() => {
|
|
6124
6167
|
if (eraserPreviewIds.length === 0) return resolvedItems;
|
|
6125
6168
|
const hiddenIds = new Set(eraserPreviewIds);
|
|
@@ -7760,6 +7803,14 @@ var VectorViewport = react.forwardRef(
|
|
|
7760
7803
|
const { worldX: worldX2, worldY: worldY2 } = screenToWorld(ev.clientX, ev.clientY);
|
|
7761
7804
|
const raw = rectFromCorners(st.startWorld, { x: worldX2, y: worldY2 });
|
|
7762
7805
|
setPlacementPreview({ kind: "marquee", rect: raw });
|
|
7806
|
+
const nextCand = collectItemIdsInRect(
|
|
7807
|
+
resolvedItemsRef.current,
|
|
7808
|
+
normalizeRect(raw)
|
|
7809
|
+
);
|
|
7810
|
+
if (!shallowEqualStringArray(nextCand, marqueeCandidateIdsRef.current)) {
|
|
7811
|
+
marqueeCandidateIdsRef.current = nextCand;
|
|
7812
|
+
setMarqueeCandidateIds(nextCand);
|
|
7813
|
+
}
|
|
7763
7814
|
return;
|
|
7764
7815
|
}
|
|
7765
7816
|
if (st.kind === "stroke") {
|
|
@@ -7939,6 +7990,8 @@ var VectorViewport = react.forwardRef(
|
|
|
7939
7990
|
dragStateRef.current = { kind: "idle" };
|
|
7940
7991
|
releaseInteractionPointer();
|
|
7941
7992
|
setPlacementPreview(null);
|
|
7993
|
+
marqueeCandidateIdsRef.current = [];
|
|
7994
|
+
setMarqueeCandidateIds([]);
|
|
7942
7995
|
return;
|
|
7943
7996
|
}
|
|
7944
7997
|
if (st.kind === "move" || st.kind === "resize" || st.kind === "rotate") {
|
|
@@ -7950,6 +8003,8 @@ var VectorViewport = react.forwardRef(
|
|
|
7950
8003
|
dragStateRef.current = { kind: "idle" };
|
|
7951
8004
|
releaseInteractionPointer();
|
|
7952
8005
|
setPlacementPreview(null);
|
|
8006
|
+
marqueeCandidateIdsRef.current = [];
|
|
8007
|
+
setMarqueeCandidateIds([]);
|
|
7953
8008
|
const { worldX, worldY } = screenToWorld(ev.clientX, ev.clientY);
|
|
7954
8009
|
const raw = rectFromCorners(st.startWorld, { x: worldX, y: worldY });
|
|
7955
8010
|
const br = normalizeRect(raw);
|
|
@@ -8180,6 +8235,11 @@ var VectorViewport = react.forwardRef(
|
|
|
8180
8235
|
const eraserPreviewItemsForOverlay = react.useMemo(() => {
|
|
8181
8236
|
return eraserPreviewIds.map((id) => resolvedItems.find((i) => i.id === id)).filter((i) => i != null);
|
|
8182
8237
|
}, [eraserPreviewIds, resolvedItems]);
|
|
8238
|
+
const marqueeCandidateItemsForOverlay = react.useMemo(() => {
|
|
8239
|
+
if (marqueeCandidateIds.length === 0) return [];
|
|
8240
|
+
const selected = new Set(effectiveSelectedIds);
|
|
8241
|
+
return marqueeCandidateIds.filter((id) => !selected.has(id)).map((id) => resolvedItems.find((i) => i.id === id)).filter((i) => i != null);
|
|
8242
|
+
}, [marqueeCandidateIds, effectiveSelectedIds, resolvedItems]);
|
|
8183
8243
|
const presenceLayer = react.useMemo(() => {
|
|
8184
8244
|
if (!cameraForOverlay) return null;
|
|
8185
8245
|
if (presenceOverlay) {
|
|
@@ -8325,6 +8385,7 @@ var VectorViewport = react.forwardRef(
|
|
|
8325
8385
|
eraserTrail,
|
|
8326
8386
|
laserTrail,
|
|
8327
8387
|
eraserPreviewItems: eraserPreviewItemsForOverlay,
|
|
8388
|
+
marqueeCandidateItems: marqueeCandidateItemsForOverlay,
|
|
8328
8389
|
previewStrokeStyle: strokeStyleRef.current
|
|
8329
8390
|
}
|
|
8330
8391
|
),
|