canvu-react 0.3.38 → 0.3.39

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/react.d.cts CHANGED
@@ -1,10 +1,10 @@
1
- import { I as IndexedDbImageStore } from './asset-hydration-EtEuBwb7.cjs';
2
- export { H as HydratedSceneItemsWithAssetsResult, h as hydrateSceneItemsWithAssets } from './asset-hydration-EtEuBwb7.cjs';
1
+ import { I as IndexedDbImageStore } from './asset-hydration-DowNdaOJ.cjs';
2
+ export { H as HydratedSceneItemsWithAssetsResult, h as hydrateSceneItemsWithAssets } from './asset-hydration-DowNdaOJ.cjs';
3
3
  import { V as VectorSceneItem } from './types-Bnq2HtHQ.cjs';
4
- import { V as VectorViewportAssetKind, x as VectorViewportAssetStore } from './shape-builders-CsbSRZnQ.cjs';
5
- export { y as VectorViewportAssetHydrationRequest, z as VectorViewportAssetResolveRequest, A as VectorViewportAssetResolveResult, B as VectorViewportAssetUploadRequest, C as VectorViewportAssetUploadResult } from './shape-builders-CsbSRZnQ.cjs';
6
- import { B as BoardComponentPosition, V as VectorToolDefinition, C as CanvasPlugin, a as VectorSelectionInspector } from './types-DWGk2_GZ.cjs';
7
- export { b as CanvasPluginComponentProps, c as CanvasPluginContribution, d as CanvasPluginItemsChangeMiddlewareContext, e as CanvasPluginRenderContext, f as CanvuChromeActiveToolStyle, g as CanvuChromeContext, h as CanvuChromeContextValue, i as CanvuChromeSelectionStyleChange, j as CanvuPluginContext, k as CanvuPluginContextValue, l as CanvuPluginViewportSnapshot, m as CustomShapePlacementOptions, P as PlacementPreview, n as VectorCanvasSpacePosition, o as VectorSelectionInspectorProps, p as VectorViewport, q as VectorViewportHandle, r as VectorViewportProps, W as WorldPointerDownDetail, s as createCanvuPlugin, t as getBoardPositionStyle, u as useCanvuChromeContext, v as useCanvuDocumentContext, w as useCanvuPluginContext, x as useCanvuPluginContribution, y as useCanvuResolvedTools, z as useCanvuViewportContext } from './types-DWGk2_GZ.cjs';
4
+ import { V as VectorViewportAssetKind, E as VectorViewportAssetStore } from './shape-builders-Dedcl6tw.cjs';
5
+ export { G as VectorViewportAssetHydrationRequest, H as VectorViewportAssetResolveRequest, I as VectorViewportAssetResolveResult, J as VectorViewportAssetUploadRequest, K as VectorViewportAssetUploadResult } from './shape-builders-Dedcl6tw.cjs';
6
+ import { B as BoardComponentPosition, V as VectorToolDefinition, C as CanvasPlugin, a as VectorSelectionInspector } from './types-DUW61Tjy.cjs';
7
+ export { b as CanvasPluginComponentProps, c as CanvasPluginContribution, d as CanvasPluginItemsChangeMiddlewareContext, e as CanvasPluginRenderContext, f as CanvuChromeActiveToolStyle, g as CanvuChromeContext, h as CanvuChromeContextValue, i as CanvuChromeSelectionStyleChange, j as CanvuPluginContext, k as CanvuPluginContextValue, l as CanvuPluginViewportSnapshot, m as CustomShapePlacementOptions, P as PlacementPreview, n as VectorCanvasSpacePosition, o as VectorSelectionInspectorProps, p as VectorViewport, q as VectorViewportHandle, r as VectorViewportProps, W as WorldPointerDownDetail, s as createCanvuPlugin, t as getBoardPositionStyle, u as useCanvuChromeContext, v as useCanvuDocumentContext, w as useCanvuPluginContext, x as useCanvuPluginContribution, y as useCanvuResolvedTools, z as useCanvuViewportContext } from './types-DUW61Tjy.cjs';
8
8
  import * as react_jsx_runtime from 'react/jsx-runtime';
9
9
  import * as react from 'react';
10
10
  import { CSSProperties, ReactNode, ReactElement, SVGProps } from 'react';
package/dist/react.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- import { I as IndexedDbImageStore } from './asset-hydration-DrTOgDdd.js';
2
- export { H as HydratedSceneItemsWithAssetsResult, h as hydrateSceneItemsWithAssets } from './asset-hydration-DrTOgDdd.js';
1
+ import { I as IndexedDbImageStore } from './asset-hydration-DdFLdlqX.js';
2
+ export { H as HydratedSceneItemsWithAssetsResult, h as hydrateSceneItemsWithAssets } from './asset-hydration-DdFLdlqX.js';
3
3
  import { V as VectorSceneItem } from './types-Bnq2HtHQ.js';
4
- import { V as VectorViewportAssetKind, x as VectorViewportAssetStore } from './shape-builders-CsSXKCcs.js';
5
- export { y as VectorViewportAssetHydrationRequest, z as VectorViewportAssetResolveRequest, A as VectorViewportAssetResolveResult, B as VectorViewportAssetUploadRequest, C as VectorViewportAssetUploadResult } from './shape-builders-CsSXKCcs.js';
6
- import { B as BoardComponentPosition, V as VectorToolDefinition, C as CanvasPlugin, a as VectorSelectionInspector } from './types-B6PAYKzx.js';
7
- export { b as CanvasPluginComponentProps, c as CanvasPluginContribution, d as CanvasPluginItemsChangeMiddlewareContext, e as CanvasPluginRenderContext, f as CanvuChromeActiveToolStyle, g as CanvuChromeContext, h as CanvuChromeContextValue, i as CanvuChromeSelectionStyleChange, j as CanvuPluginContext, k as CanvuPluginContextValue, l as CanvuPluginViewportSnapshot, m as CustomShapePlacementOptions, P as PlacementPreview, n as VectorCanvasSpacePosition, o as VectorSelectionInspectorProps, p as VectorViewport, q as VectorViewportHandle, r as VectorViewportProps, W as WorldPointerDownDetail, s as createCanvuPlugin, t as getBoardPositionStyle, u as useCanvuChromeContext, v as useCanvuDocumentContext, w as useCanvuPluginContext, x as useCanvuPluginContribution, y as useCanvuResolvedTools, z as useCanvuViewportContext } from './types-B6PAYKzx.js';
4
+ import { V as VectorViewportAssetKind, E as VectorViewportAssetStore } from './shape-builders-C7bxJBGR.js';
5
+ export { G as VectorViewportAssetHydrationRequest, H as VectorViewportAssetResolveRequest, I as VectorViewportAssetResolveResult, J as VectorViewportAssetUploadRequest, K as VectorViewportAssetUploadResult } from './shape-builders-C7bxJBGR.js';
6
+ import { B as BoardComponentPosition, V as VectorToolDefinition, C as CanvasPlugin, a as VectorSelectionInspector } from './types-BBb8KoyW.js';
7
+ export { b as CanvasPluginComponentProps, c as CanvasPluginContribution, d as CanvasPluginItemsChangeMiddlewareContext, e as CanvasPluginRenderContext, f as CanvuChromeActiveToolStyle, g as CanvuChromeContext, h as CanvuChromeContextValue, i as CanvuChromeSelectionStyleChange, j as CanvuPluginContext, k as CanvuPluginContextValue, l as CanvuPluginViewportSnapshot, m as CustomShapePlacementOptions, P as PlacementPreview, n as VectorCanvasSpacePosition, o as VectorSelectionInspectorProps, p as VectorViewport, q as VectorViewportHandle, r as VectorViewportProps, W as WorldPointerDownDetail, s as createCanvuPlugin, t as getBoardPositionStyle, u as useCanvuChromeContext, v as useCanvuDocumentContext, w as useCanvuPluginContext, x as useCanvuPluginContribution, y as useCanvuResolvedTools, z as useCanvuViewportContext } from './types-BBb8KoyW.js';
8
8
  import * as react_jsx_runtime from 'react/jsx-runtime';
9
9
  import * as react from 'react';
10
10
  import { CSSProperties, ReactNode, ReactElement, SVGProps } from 'react';
package/dist/react.js CHANGED
@@ -6456,6 +6456,18 @@ var SvgVectorRenderer = class {
6456
6456
  }
6457
6457
  };
6458
6458
 
6459
+ // src/scene/link-item.ts
6460
+ var LINK_PLUGIN_KEY = "canvuLink";
6461
+ var isCanvuLinkData = (value) => {
6462
+ if (!value || typeof value !== "object") return false;
6463
+ const candidate = value;
6464
+ return typeof candidate.href === "string" && candidate.href.length > 0;
6465
+ };
6466
+ function getLinkData(item) {
6467
+ const entry = item.pluginData?.[LINK_PLUGIN_KEY];
6468
+ return isCanvuLinkData(entry) ? entry : null;
6469
+ }
6470
+
6459
6471
  // src/scene/scene.ts
6460
6472
  var VectorScene = class {
6461
6473
  items = [];
@@ -7632,6 +7644,7 @@ var VectorViewport = forwardRef(
7632
7644
  selectedIds: selectedIdsProp,
7633
7645
  onSelectionChange,
7634
7646
  onItemsChange: consumerOnItemsChange,
7647
+ onActivateLink,
7635
7648
  onWorldPointerDown: consumerOnWorldPointerDown,
7636
7649
  toolbar,
7637
7650
  navMenu,
@@ -7812,6 +7825,8 @@ var VectorViewport = forwardRef(
7812
7825
  const itemsRef = useRef(items);
7813
7826
  const onWorldPointerDownRef = useRef(onWorldPointerDown);
7814
7827
  const onItemsChangeRef = useRef(onItemsChange);
7828
+ const onActivateLinkRef = useRef(onActivateLink);
7829
+ onActivateLinkRef.current = onActivateLink;
7815
7830
  const assetStoreRef = useRef(assetStore);
7816
7831
  assetStoreRef.current = assetStore;
7817
7832
  const customPlacementRef = useRef(customPlacement);
@@ -9087,13 +9102,27 @@ var VectorViewport = forwardRef(
9087
9102
  );
9088
9103
  const handleOverlayDoubleClick = useCallback(
9089
9104
  (e) => {
9090
- if (!interactiveRef.current || !onItemsChangeRef.current) return;
9091
- if (toolIdRef.current !== "select") return;
9092
- e.preventDefault();
9093
9105
  const cam = cameraRef.current;
9094
9106
  if (!cam) return;
9095
9107
  const { worldX, worldY } = screenToWorld(e.clientX, e.clientY);
9096
9108
  const lineHitWorld = 10 / cam.zoom;
9109
+ const linkHit = hitTestWorldPoint(resolvedItemsRef.current, worldX, worldY, {
9110
+ lineHitWorld,
9111
+ ignoreLocked: false
9112
+ });
9113
+ const link = linkHit ? getLinkData(linkHit) : null;
9114
+ if (linkHit && link) {
9115
+ e.preventDefault();
9116
+ if (onActivateLinkRef.current) {
9117
+ onActivateLinkRef.current({ link, item: linkHit });
9118
+ } else if (typeof window !== "undefined" && typeof window.open === "function") {
9119
+ window.open(link.href, "_blank", "noopener,noreferrer");
9120
+ }
9121
+ return;
9122
+ }
9123
+ if (!interactiveRef.current || !onItemsChangeRef.current) return;
9124
+ if (toolIdRef.current !== "select") return;
9125
+ e.preventDefault();
9097
9126
  const hit = hitTestWorldPoint(resolvedItemsRef.current, worldX, worldY, {
9098
9127
  lineHitWorld,
9099
9128
  ignoreLocked: true