canvu-react 0.3.16 → 0.3.19

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.
@@ -1,5 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { C as CanvasPlugin } from './types-CTyASYIm.cjs';
2
+ import { C as CanvasPlugin } from './types-7kfWcm0L.cjs';
3
3
  import 'react';
4
4
  import './types-CB0TZZuk.cjs';
5
5
  import './camera-BwQjm5oh.cjs';
package/dist/chatbot.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { C as CanvasPlugin } from './types-UvUy2Eed.js';
2
+ import { C as CanvasPlugin } from './types-C4k_AMvi.js';
3
3
  import 'react';
4
4
  import './types-CB0TZZuk.js';
5
5
  import './camera-KwCYYPhm.js';
package/dist/index.cjs CHANGED
@@ -2271,6 +2271,84 @@ function cloneVectorSceneItemsWithNewIds(items) {
2271
2271
  return items.map(cloneVectorSceneItemWithNewId);
2272
2272
  }
2273
2273
 
2274
+ // src/scene/managed-images.ts
2275
+ var MANAGED_KEY = "managed";
2276
+ var STACK_GAP_WORLD = 16;
2277
+ function isManagedImage(item) {
2278
+ const data = item.pluginData;
2279
+ return data != null && data[MANAGED_KEY] === true;
2280
+ }
2281
+ function markImageAsManaged(item) {
2282
+ return {
2283
+ ...item,
2284
+ locked: true,
2285
+ pluginData: { ...item.pluginData ?? {}, [MANAGED_KEY]: true }
2286
+ };
2287
+ }
2288
+ function restackManagedImages(items) {
2289
+ let anchor;
2290
+ for (const item of items) {
2291
+ if (!isManagedImage(item)) continue;
2292
+ if (!anchor || item.bounds.y < anchor.bounds.y) anchor = item;
2293
+ }
2294
+ if (!anchor) return [...items];
2295
+ const anchorCenterX = anchor.bounds.x + anchor.bounds.width / 2;
2296
+ const anchorTopY = anchor.bounds.y;
2297
+ let cursorY = anchorTopY;
2298
+ return items.map((item) => {
2299
+ if (!isManagedImage(item)) return item;
2300
+ const newX = anchorCenterX - item.bounds.width / 2;
2301
+ const newY = cursorY;
2302
+ cursorY = newY + item.bounds.height + STACK_GAP_WORLD;
2303
+ if (item.bounds.x === newX && item.bounds.y === newY) return item;
2304
+ return {
2305
+ ...item,
2306
+ x: newX,
2307
+ y: newY,
2308
+ bounds: { ...item.bounds, x: newX, y: newY }
2309
+ };
2310
+ });
2311
+ }
2312
+ function addManagedImage(items, newItem) {
2313
+ return restackManagedImages([...items, markImageAsManaged(newItem)]);
2314
+ }
2315
+ function copyManagedImage(items, id) {
2316
+ const idx = items.findIndex((i) => i.id === id);
2317
+ if (idx < 0) return [...items];
2318
+ const source = items[idx];
2319
+ if (!source) return [...items];
2320
+ const clone = markImageAsManaged(cloneVectorSceneItemWithNewId(source));
2321
+ const inserted = [...items.slice(0, idx + 1), clone, ...items.slice(idx + 1)];
2322
+ return restackManagedImages(inserted);
2323
+ }
2324
+ function rotateManagedImage(items, id) {
2325
+ return items.map(
2326
+ (i) => i.id === id ? { ...i, rotation: ((i.rotation ?? 0) + Math.PI / 2) % (Math.PI * 2) } : i
2327
+ );
2328
+ }
2329
+ function deleteManagedImage(items, id) {
2330
+ return restackManagedImages(items.filter((i) => i.id !== id));
2331
+ }
2332
+ function reorderManagedImages(items, orderedManagedIds) {
2333
+ const managedSlots = [];
2334
+ for (let i = 0; i < items.length; i++) {
2335
+ const item = items[i];
2336
+ if (item && isManagedImage(item)) managedSlots.push(i);
2337
+ }
2338
+ if (managedSlots.length !== orderedManagedIds.length) {
2339
+ return [...items];
2340
+ }
2341
+ const byId = new Map(items.map((i) => [i.id, i]));
2342
+ const next = [...items];
2343
+ managedSlots.forEach((slot, k) => {
2344
+ const orderedId = orderedManagedIds[k];
2345
+ if (orderedId === void 0) return;
2346
+ const replacement = byId.get(orderedId);
2347
+ if (replacement) next[slot] = replacement;
2348
+ });
2349
+ return restackManagedImages(next);
2350
+ }
2351
+
2274
2352
  // src/scene/scene.ts
2275
2353
  var VectorScene = class {
2276
2354
  items = [];
@@ -2292,9 +2370,11 @@ exports.ARROW_BIND_SNAP_PX = ARROW_BIND_SNAP_PX;
2292
2370
  exports.Camera2D = Camera2D;
2293
2371
  exports.DEFAULT_STROKE_STYLE = DEFAULT_STROKE_STYLE;
2294
2372
  exports.DEFAULT_TEXT_FONT_SIZE = DEFAULT_TEXT_FONT_SIZE;
2373
+ exports.MANAGED_KEY = MANAGED_KEY;
2295
2374
  exports.MAX_RASTER_EMBED_DIMENSION = MAX_RASTER_EMBED_DIMENSION;
2296
2375
  exports.SvgVectorRenderer = SvgVectorRenderer;
2297
2376
  exports.VectorScene = VectorScene;
2377
+ exports.addManagedImage = addManagedImage;
2298
2378
  exports.applyStrokeToItem = applyStrokeToItem;
2299
2379
  exports.attachApplePencilNavigation = attachApplePencilNavigation;
2300
2380
  exports.attachViewportInput = attachViewportInput;
@@ -2311,6 +2391,7 @@ exports.cloneVectorSceneItemWithNewId = cloneVectorSceneItemWithNewId;
2311
2391
  exports.cloneVectorSceneItemsWithNewIds = cloneVectorSceneItemsWithNewIds;
2312
2392
  exports.collectEraserTargetsAtWorldPoint = collectEraserTargetsAtWorldPoint;
2313
2393
  exports.computeFreehandSvgPayload = computeFreehandSvgPayload;
2394
+ exports.copyManagedImage = copyManagedImage;
2314
2395
  exports.createCustomShapeItem = createCustomShapeItem;
2315
2396
  exports.createDrawDotItem = createDrawDotItem;
2316
2397
  exports.createEllipseItem = createEllipseItem;
@@ -2322,20 +2403,26 @@ exports.createRectangleItem = createRectangleItem;
2322
2403
  exports.createShapeId = createShapeId;
2323
2404
  exports.createTextItem = createTextItem;
2324
2405
  exports.cullItemsByViewport = cullItemsByViewport;
2406
+ exports.deleteManagedImage = deleteManagedImage;
2325
2407
  exports.expandCustomShapeTemplate = expandCustomShapeTemplate;
2326
2408
  exports.formatCameraTransform = formatCameraTransform;
2327
2409
  exports.formatItemPlacementTransform = formatItemPlacementTransform;
2328
2410
  exports.hitTestWorldPoint = hitTestWorldPoint;
2329
2411
  exports.hydrateSceneItemsWithAssets = hydrateSceneItemsWithAssets;
2330
2412
  exports.isArrowBindTarget = isArrowBindTarget;
2413
+ exports.isManagedImage = isManagedImage;
2331
2414
  exports.itemHitTestWorldPoint = itemHitTestWorldPoint;
2332
2415
  exports.lineEndpointsToLocal = lineEndpointsToLocal;
2333
2416
  exports.loadImageFileAsRasterSceneSource = loadImageFileAsRasterSceneSource;
2417
+ exports.markImageAsManaged = markImageAsManaged;
2334
2418
  exports.normalizeRect = normalizeRect;
2335
2419
  exports.rebuildItemSvg = rebuildItemSvg;
2336
2420
  exports.rectsIntersect = rectsIntersect;
2421
+ exports.reorderManagedImages = reorderManagedImages;
2337
2422
  exports.resolveArrowBindingsInScene = resolveArrowBindingsInScene;
2338
2423
  exports.resolveStrokeStyle = resolveStrokeStyle;
2424
+ exports.restackManagedImages = restackManagedImages;
2425
+ exports.rotateManagedImage = rotateManagedImage;
2339
2426
  exports.snapArrowEndpointToShape = snapArrowEndpointToShape;
2340
2427
  //# sourceMappingURL=index.cjs.map
2341
2428
  //# sourceMappingURL=index.cjs.map