canvu-react 0.3.17 → 0.3.20
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/index.cjs +87 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +37 -1
- package/dist/index.d.ts +37 -1
- package/dist/index.js +79 -1
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +2488 -1732
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +326 -35
- package/dist/react.d.ts +326 -35
- package/dist/react.js +2490 -1734
- package/dist/react.js.map +1 -1
- package/dist/realtime.d.cts +2 -2
- package/dist/realtime.d.ts +2 -2
- package/dist/{types-CTyASYIm.d.cts → types-7kfWcm0L.d.cts} +33 -154
- package/dist/{types-UvUy2Eed.d.ts → types-C4k_AMvi.d.ts} +33 -154
- package/package.json +16 -1
package/dist/index.d.cts
CHANGED
|
@@ -266,6 +266,42 @@ declare function cloneVectorSceneItemsWithNewIds(items: readonly VectorSceneItem
|
|
|
266
266
|
*/
|
|
267
267
|
declare function cullItemsByViewport(items: readonly VectorSceneItem[], visibleWorld: Rect): VectorSceneItem[];
|
|
268
268
|
|
|
269
|
+
declare const MANAGED_KEY = "managed";
|
|
270
|
+
declare function isManagedImage(item: VectorSceneItem): boolean;
|
|
271
|
+
declare function markImageAsManaged(item: VectorSceneItem): VectorSceneItem;
|
|
272
|
+
/**
|
|
273
|
+
* Repositions every managed image into a single vertical stack. The stack
|
|
274
|
+
* origin is the current topmost (minimum Y) managed item — that point in world
|
|
275
|
+
* space is stable across reorder/copy/delete operations, so reorder swaps slots
|
|
276
|
+
* instead of making the whole stack drift downward. Subsequent items are
|
|
277
|
+
* centered on the anchor's center X and stacked downward with a fixed gap.
|
|
278
|
+
*
|
|
279
|
+
* Non-managed items keep their position. Call this after any operation that
|
|
280
|
+
* changes the relative order or count of managed images so the canvas reflects
|
|
281
|
+
* the menu order.
|
|
282
|
+
*/
|
|
283
|
+
declare function restackManagedImages(items: readonly VectorSceneItem[]): VectorSceneItem[];
|
|
284
|
+
/**
|
|
285
|
+
* Marks `newItem` as a managed image (locked + `pluginData.managed = true`),
|
|
286
|
+
* appends it to `items`, and restacks all managed images so the new one lands
|
|
287
|
+
* at the bottom of the stack with the anchor preserved.
|
|
288
|
+
*
|
|
289
|
+
* Typical usage: after producing scene items with
|
|
290
|
+
* `ingestAssetFilesToSceneItems`, push each result through this helper to add
|
|
291
|
+
* them to the managed-images stack:
|
|
292
|
+
*
|
|
293
|
+
* ```ts
|
|
294
|
+
* let next = doc.items;
|
|
295
|
+
* for (const created of result.items) next = addManagedImage(next, created);
|
|
296
|
+
* doc.onItemsChange(next);
|
|
297
|
+
* ```
|
|
298
|
+
*/
|
|
299
|
+
declare function addManagedImage(items: readonly VectorSceneItem[], newItem: VectorSceneItem): VectorSceneItem[];
|
|
300
|
+
declare function copyManagedImage(items: readonly VectorSceneItem[], id: string): VectorSceneItem[];
|
|
301
|
+
declare function rotateManagedImage(items: readonly VectorSceneItem[], id: string): VectorSceneItem[];
|
|
302
|
+
declare function deleteManagedImage(items: readonly VectorSceneItem[], id: string): VectorSceneItem[];
|
|
303
|
+
declare function reorderManagedImages(items: readonly VectorSceneItem[], orderedManagedIds: readonly string[]): VectorSceneItem[];
|
|
304
|
+
|
|
269
305
|
/** Default body font size for vector text (local SVG units). */
|
|
270
306
|
declare const DEFAULT_TEXT_FONT_SIZE = 18;
|
|
271
307
|
/**
|
|
@@ -274,4 +310,4 @@ declare const DEFAULT_TEXT_FONT_SIZE = 18;
|
|
|
274
310
|
*/
|
|
275
311
|
declare function buildTextSvg(content: string, _width: number, _height: number, fillColor?: string, fontSize?: number): string;
|
|
276
312
|
|
|
277
|
-
export { ARROW_BIND_SNAP_PX, type ApplePencilNavOptions, ArrowEndpointBinding, Camera2D, type CreateCustomShapeContent, type CustomShapeSize, DEFAULT_TEXT_FONT_SIZE, type LoadRasterImageFileOptions, MAX_RASTER_EMBED_DIMENSION, type RasterEmbedMode, type RasterSceneSource, Rect, SvgVectorRenderer, type SvgVectorRendererOptions, VectorScene, VectorSceneItem, type ViewportInputOptions, attachApplePencilNavigation, attachViewportInput, bakeArrowItemToAbsolute, buildCustomShapeChildrenSvg, buildTextSvg, cloneVectorSceneItemWithNewId, cloneVectorSceneItemsWithNewIds, collectEraserTargetsAtWorldPoint, createCustomShapeItem, cullItemsByViewport, expandCustomShapeTemplate, formatCameraTransform, formatItemPlacementTransform, hitTestWorldPoint, isArrowBindTarget, itemHitTestWorldPoint, loadImageFileAsRasterSceneSource, resolveArrowBindingsInScene, snapArrowEndpointToShape };
|
|
313
|
+
export { ARROW_BIND_SNAP_PX, type ApplePencilNavOptions, ArrowEndpointBinding, Camera2D, type CreateCustomShapeContent, type CustomShapeSize, DEFAULT_TEXT_FONT_SIZE, type LoadRasterImageFileOptions, MANAGED_KEY, MAX_RASTER_EMBED_DIMENSION, type RasterEmbedMode, type RasterSceneSource, Rect, SvgVectorRenderer, type SvgVectorRendererOptions, VectorScene, VectorSceneItem, type ViewportInputOptions, addManagedImage, attachApplePencilNavigation, attachViewportInput, bakeArrowItemToAbsolute, buildCustomShapeChildrenSvg, buildTextSvg, cloneVectorSceneItemWithNewId, cloneVectorSceneItemsWithNewIds, collectEraserTargetsAtWorldPoint, copyManagedImage, createCustomShapeItem, cullItemsByViewport, deleteManagedImage, expandCustomShapeTemplate, formatCameraTransform, formatItemPlacementTransform, hitTestWorldPoint, isArrowBindTarget, isManagedImage, itemHitTestWorldPoint, loadImageFileAsRasterSceneSource, markImageAsManaged, reorderManagedImages, resolveArrowBindingsInScene, restackManagedImages, rotateManagedImage, snapArrowEndpointToShape };
|
package/dist/index.d.ts
CHANGED
|
@@ -266,6 +266,42 @@ declare function cloneVectorSceneItemsWithNewIds(items: readonly VectorSceneItem
|
|
|
266
266
|
*/
|
|
267
267
|
declare function cullItemsByViewport(items: readonly VectorSceneItem[], visibleWorld: Rect): VectorSceneItem[];
|
|
268
268
|
|
|
269
|
+
declare const MANAGED_KEY = "managed";
|
|
270
|
+
declare function isManagedImage(item: VectorSceneItem): boolean;
|
|
271
|
+
declare function markImageAsManaged(item: VectorSceneItem): VectorSceneItem;
|
|
272
|
+
/**
|
|
273
|
+
* Repositions every managed image into a single vertical stack. The stack
|
|
274
|
+
* origin is the current topmost (minimum Y) managed item — that point in world
|
|
275
|
+
* space is stable across reorder/copy/delete operations, so reorder swaps slots
|
|
276
|
+
* instead of making the whole stack drift downward. Subsequent items are
|
|
277
|
+
* centered on the anchor's center X and stacked downward with a fixed gap.
|
|
278
|
+
*
|
|
279
|
+
* Non-managed items keep their position. Call this after any operation that
|
|
280
|
+
* changes the relative order or count of managed images so the canvas reflects
|
|
281
|
+
* the menu order.
|
|
282
|
+
*/
|
|
283
|
+
declare function restackManagedImages(items: readonly VectorSceneItem[]): VectorSceneItem[];
|
|
284
|
+
/**
|
|
285
|
+
* Marks `newItem` as a managed image (locked + `pluginData.managed = true`),
|
|
286
|
+
* appends it to `items`, and restacks all managed images so the new one lands
|
|
287
|
+
* at the bottom of the stack with the anchor preserved.
|
|
288
|
+
*
|
|
289
|
+
* Typical usage: after producing scene items with
|
|
290
|
+
* `ingestAssetFilesToSceneItems`, push each result through this helper to add
|
|
291
|
+
* them to the managed-images stack:
|
|
292
|
+
*
|
|
293
|
+
* ```ts
|
|
294
|
+
* let next = doc.items;
|
|
295
|
+
* for (const created of result.items) next = addManagedImage(next, created);
|
|
296
|
+
* doc.onItemsChange(next);
|
|
297
|
+
* ```
|
|
298
|
+
*/
|
|
299
|
+
declare function addManagedImage(items: readonly VectorSceneItem[], newItem: VectorSceneItem): VectorSceneItem[];
|
|
300
|
+
declare function copyManagedImage(items: readonly VectorSceneItem[], id: string): VectorSceneItem[];
|
|
301
|
+
declare function rotateManagedImage(items: readonly VectorSceneItem[], id: string): VectorSceneItem[];
|
|
302
|
+
declare function deleteManagedImage(items: readonly VectorSceneItem[], id: string): VectorSceneItem[];
|
|
303
|
+
declare function reorderManagedImages(items: readonly VectorSceneItem[], orderedManagedIds: readonly string[]): VectorSceneItem[];
|
|
304
|
+
|
|
269
305
|
/** Default body font size for vector text (local SVG units). */
|
|
270
306
|
declare const DEFAULT_TEXT_FONT_SIZE = 18;
|
|
271
307
|
/**
|
|
@@ -274,4 +310,4 @@ declare const DEFAULT_TEXT_FONT_SIZE = 18;
|
|
|
274
310
|
*/
|
|
275
311
|
declare function buildTextSvg(content: string, _width: number, _height: number, fillColor?: string, fontSize?: number): string;
|
|
276
312
|
|
|
277
|
-
export { ARROW_BIND_SNAP_PX, type ApplePencilNavOptions, ArrowEndpointBinding, Camera2D, type CreateCustomShapeContent, type CustomShapeSize, DEFAULT_TEXT_FONT_SIZE, type LoadRasterImageFileOptions, MAX_RASTER_EMBED_DIMENSION, type RasterEmbedMode, type RasterSceneSource, Rect, SvgVectorRenderer, type SvgVectorRendererOptions, VectorScene, VectorSceneItem, type ViewportInputOptions, attachApplePencilNavigation, attachViewportInput, bakeArrowItemToAbsolute, buildCustomShapeChildrenSvg, buildTextSvg, cloneVectorSceneItemWithNewId, cloneVectorSceneItemsWithNewIds, collectEraserTargetsAtWorldPoint, createCustomShapeItem, cullItemsByViewport, expandCustomShapeTemplate, formatCameraTransform, formatItemPlacementTransform, hitTestWorldPoint, isArrowBindTarget, itemHitTestWorldPoint, loadImageFileAsRasterSceneSource, resolveArrowBindingsInScene, snapArrowEndpointToShape };
|
|
313
|
+
export { ARROW_BIND_SNAP_PX, type ApplePencilNavOptions, ArrowEndpointBinding, Camera2D, type CreateCustomShapeContent, type CustomShapeSize, DEFAULT_TEXT_FONT_SIZE, type LoadRasterImageFileOptions, MANAGED_KEY, MAX_RASTER_EMBED_DIMENSION, type RasterEmbedMode, type RasterSceneSource, Rect, SvgVectorRenderer, type SvgVectorRendererOptions, VectorScene, VectorSceneItem, type ViewportInputOptions, addManagedImage, attachApplePencilNavigation, attachViewportInput, bakeArrowItemToAbsolute, buildCustomShapeChildrenSvg, buildTextSvg, cloneVectorSceneItemWithNewId, cloneVectorSceneItemsWithNewIds, collectEraserTargetsAtWorldPoint, copyManagedImage, createCustomShapeItem, cullItemsByViewport, deleteManagedImage, expandCustomShapeTemplate, formatCameraTransform, formatItemPlacementTransform, hitTestWorldPoint, isArrowBindTarget, isManagedImage, itemHitTestWorldPoint, loadImageFileAsRasterSceneSource, markImageAsManaged, reorderManagedImages, resolveArrowBindingsInScene, restackManagedImages, rotateManagedImage, snapArrowEndpointToShape };
|
package/dist/index.js
CHANGED
|
@@ -2264,6 +2264,84 @@ function cloneVectorSceneItemsWithNewIds(items) {
|
|
|
2264
2264
|
return items.map(cloneVectorSceneItemWithNewId);
|
|
2265
2265
|
}
|
|
2266
2266
|
|
|
2267
|
+
// src/scene/managed-images.ts
|
|
2268
|
+
var MANAGED_KEY = "managed";
|
|
2269
|
+
var STACK_GAP_WORLD = 16;
|
|
2270
|
+
function isManagedImage(item) {
|
|
2271
|
+
const data = item.pluginData;
|
|
2272
|
+
return data != null && data[MANAGED_KEY] === true;
|
|
2273
|
+
}
|
|
2274
|
+
function markImageAsManaged(item) {
|
|
2275
|
+
return {
|
|
2276
|
+
...item,
|
|
2277
|
+
locked: true,
|
|
2278
|
+
pluginData: { ...item.pluginData ?? {}, [MANAGED_KEY]: true }
|
|
2279
|
+
};
|
|
2280
|
+
}
|
|
2281
|
+
function restackManagedImages(items) {
|
|
2282
|
+
let anchor;
|
|
2283
|
+
for (const item of items) {
|
|
2284
|
+
if (!isManagedImage(item)) continue;
|
|
2285
|
+
if (!anchor || item.bounds.y < anchor.bounds.y) anchor = item;
|
|
2286
|
+
}
|
|
2287
|
+
if (!anchor) return [...items];
|
|
2288
|
+
const anchorCenterX = anchor.bounds.x + anchor.bounds.width / 2;
|
|
2289
|
+
const anchorTopY = anchor.bounds.y;
|
|
2290
|
+
let cursorY = anchorTopY;
|
|
2291
|
+
return items.map((item) => {
|
|
2292
|
+
if (!isManagedImage(item)) return item;
|
|
2293
|
+
const newX = anchorCenterX - item.bounds.width / 2;
|
|
2294
|
+
const newY = cursorY;
|
|
2295
|
+
cursorY = newY + item.bounds.height + STACK_GAP_WORLD;
|
|
2296
|
+
if (item.bounds.x === newX && item.bounds.y === newY) return item;
|
|
2297
|
+
return {
|
|
2298
|
+
...item,
|
|
2299
|
+
x: newX,
|
|
2300
|
+
y: newY,
|
|
2301
|
+
bounds: { ...item.bounds, x: newX, y: newY }
|
|
2302
|
+
};
|
|
2303
|
+
});
|
|
2304
|
+
}
|
|
2305
|
+
function addManagedImage(items, newItem) {
|
|
2306
|
+
return restackManagedImages([...items, markImageAsManaged(newItem)]);
|
|
2307
|
+
}
|
|
2308
|
+
function copyManagedImage(items, id) {
|
|
2309
|
+
const idx = items.findIndex((i) => i.id === id);
|
|
2310
|
+
if (idx < 0) return [...items];
|
|
2311
|
+
const source = items[idx];
|
|
2312
|
+
if (!source) return [...items];
|
|
2313
|
+
const clone = markImageAsManaged(cloneVectorSceneItemWithNewId(source));
|
|
2314
|
+
const inserted = [...items.slice(0, idx + 1), clone, ...items.slice(idx + 1)];
|
|
2315
|
+
return restackManagedImages(inserted);
|
|
2316
|
+
}
|
|
2317
|
+
function rotateManagedImage(items, id) {
|
|
2318
|
+
return items.map(
|
|
2319
|
+
(i) => i.id === id ? { ...i, rotation: ((i.rotation ?? 0) + Math.PI / 2) % (Math.PI * 2) } : i
|
|
2320
|
+
);
|
|
2321
|
+
}
|
|
2322
|
+
function deleteManagedImage(items, id) {
|
|
2323
|
+
return restackManagedImages(items.filter((i) => i.id !== id));
|
|
2324
|
+
}
|
|
2325
|
+
function reorderManagedImages(items, orderedManagedIds) {
|
|
2326
|
+
const managedSlots = [];
|
|
2327
|
+
for (let i = 0; i < items.length; i++) {
|
|
2328
|
+
const item = items[i];
|
|
2329
|
+
if (item && isManagedImage(item)) managedSlots.push(i);
|
|
2330
|
+
}
|
|
2331
|
+
if (managedSlots.length !== orderedManagedIds.length) {
|
|
2332
|
+
return [...items];
|
|
2333
|
+
}
|
|
2334
|
+
const byId = new Map(items.map((i) => [i.id, i]));
|
|
2335
|
+
const next = [...items];
|
|
2336
|
+
managedSlots.forEach((slot, k) => {
|
|
2337
|
+
const orderedId = orderedManagedIds[k];
|
|
2338
|
+
if (orderedId === void 0) return;
|
|
2339
|
+
const replacement = byId.get(orderedId);
|
|
2340
|
+
if (replacement) next[slot] = replacement;
|
|
2341
|
+
});
|
|
2342
|
+
return restackManagedImages(next);
|
|
2343
|
+
}
|
|
2344
|
+
|
|
2267
2345
|
// src/scene/scene.ts
|
|
2268
2346
|
var VectorScene = class {
|
|
2269
2347
|
items = [];
|
|
@@ -2281,6 +2359,6 @@ var VectorScene = class {
|
|
|
2281
2359
|
}
|
|
2282
2360
|
};
|
|
2283
2361
|
|
|
2284
|
-
export { ARROW_BIND_SNAP_PX, Camera2D, DEFAULT_STROKE_STYLE, DEFAULT_TEXT_FONT_SIZE, MAX_RASTER_EMBED_DIMENSION, SvgVectorRenderer, VectorScene, applyStrokeToItem, attachApplePencilNavigation, attachViewportInput, bakeArrowItemToAbsolute, buildArrowSvg, buildCustomShapeChildrenSvg, buildDrawDotSvg, buildEllipseSvg, buildFreehandPathSvg, buildLineSvg, buildRectSvg, buildTextSvg, cloneVectorSceneItemWithNewId, cloneVectorSceneItemsWithNewIds, collectEraserTargetsAtWorldPoint, computeFreehandSvgPayload, createCustomShapeItem, createDrawDotItem, createEllipseItem, createFreehandStrokeItem, createImageFromVectorTrace, createImageItem, createLineItem, createRectangleItem, createShapeId, createTextItem, cullItemsByViewport, expandCustomShapeTemplate, formatCameraTransform, formatItemPlacementTransform, hitTestWorldPoint, hydrateSceneItemsWithAssets, isArrowBindTarget, itemHitTestWorldPoint, lineEndpointsToLocal, loadImageFileAsRasterSceneSource, normalizeRect, rebuildItemSvg, rectsIntersect, resolveArrowBindingsInScene, resolveStrokeStyle, snapArrowEndpointToShape };
|
|
2362
|
+
export { ARROW_BIND_SNAP_PX, Camera2D, DEFAULT_STROKE_STYLE, DEFAULT_TEXT_FONT_SIZE, MANAGED_KEY, MAX_RASTER_EMBED_DIMENSION, SvgVectorRenderer, VectorScene, addManagedImage, applyStrokeToItem, attachApplePencilNavigation, attachViewportInput, bakeArrowItemToAbsolute, buildArrowSvg, buildCustomShapeChildrenSvg, buildDrawDotSvg, buildEllipseSvg, buildFreehandPathSvg, buildLineSvg, buildRectSvg, buildTextSvg, cloneVectorSceneItemWithNewId, cloneVectorSceneItemsWithNewIds, collectEraserTargetsAtWorldPoint, computeFreehandSvgPayload, copyManagedImage, createCustomShapeItem, createDrawDotItem, createEllipseItem, createFreehandStrokeItem, createImageFromVectorTrace, createImageItem, createLineItem, createRectangleItem, createShapeId, createTextItem, cullItemsByViewport, deleteManagedImage, expandCustomShapeTemplate, formatCameraTransform, formatItemPlacementTransform, hitTestWorldPoint, hydrateSceneItemsWithAssets, isArrowBindTarget, isManagedImage, itemHitTestWorldPoint, lineEndpointsToLocal, loadImageFileAsRasterSceneSource, markImageAsManaged, normalizeRect, rebuildItemSvg, rectsIntersect, reorderManagedImages, resolveArrowBindingsInScene, resolveStrokeStyle, restackManagedImages, rotateManagedImage, snapArrowEndpointToShape };
|
|
2285
2363
|
//# sourceMappingURL=index.js.map
|
|
2286
2364
|
//# sourceMappingURL=index.js.map
|