canvu-react 0.4.72 → 0.4.73

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
@@ -205,6 +205,10 @@ type ImagesMenuCollapsedButtonRenderProps = {
205
205
  */
206
206
  buttonProps: ImagesMenuCollapsedButtonProps;
207
207
  };
208
+ /**
209
+ * Built-in action ids available in each row of {@link ImagesMenu}.
210
+ */
211
+ type ImagesMenuActionId = "duplicate" | "rotate" | "delete";
208
212
  type ImagesMenuProps = {
209
213
  items: readonly VectorSceneItem[];
210
214
  onItemsChange: (items: VectorSceneItem[]) => void;
@@ -214,6 +218,22 @@ type ImagesMenuProps = {
214
218
  */
215
219
  onFocusItem?: (item: VectorSceneItem) => void;
216
220
  labels?: ImagesMenuLabels;
221
+ /**
222
+ * Built-in row actions to omit from the managed images menu UI.
223
+ *
224
+ * Use this when an app needs to keep the managed image behavior available in
225
+ * code while preventing specific actions from being shown to users.
226
+ *
227
+ * @example
228
+ * ```tsx
229
+ * <ImagesMenu
230
+ * items={items}
231
+ * onItemsChange={setItems}
232
+ * hiddenActions={["duplicate"]}
233
+ * />
234
+ * ```
235
+ */
236
+ hiddenActions?: readonly ImagesMenuActionId[];
217
237
  /**
218
238
  * Whether the menu starts expanded. Defaults to `false` (collapsed), showing
219
239
  * only the floating toggle button until the user opens it.
@@ -269,7 +289,7 @@ type ImagesMenuProps = {
269
289
  * drag-to-reorder actions. Managed images are also `locked`, so they do not
270
290
  * respond to direct canvas interaction.
271
291
  */
272
- declare function ImagesMenu({ items, onItemsChange, onFocusItem, labels, defaultOpen, collapsedButtonClassName, collapsedButtonStyle, renderCollapsedButton, }: ImagesMenuProps): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
292
+ declare function ImagesMenu({ items, onItemsChange, onFocusItem, labels, hiddenActions, defaultOpen, collapsedButtonClassName, collapsedButtonStyle, renderCollapsedButton, }: ImagesMenuProps): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
273
293
 
274
294
  type NavMenuMinimapProps = {
275
295
  className?: string;
@@ -825,4 +845,4 @@ type VectorToolbarWithStatics = ((props: VectorToolbarProps) => ReactElement) &
825
845
  */
826
846
  declare const VectorToolbar: VectorToolbarWithStatics;
827
847
 
828
- export { BoardComponentPosition, CanvasPlugin, CanvuAfterInteractionHook, CanvuBeforeInteractionHook, type CreateLocalStoragePersistenceAdapterOptions, type CreateToolPluginOptions, CustomShapePlacementOptions, DEFAULT_OVERFLOW_TOOL_IDS, DEFAULT_VECTOR_CANVAS_STORAGE_KEY, DEFAULT_VECTOR_TOOLS, IconArchitecturalCloud, IconArrow, IconDraw, IconEllipse, IconHand, IconImage, IconLaser, IconLine, IconRect, IconSelect, IconText, ImagesMenu, type ImagesMenuCollapsedButtonProps, type ImagesMenuCollapsedButtonRenderProps, type ImagesMenuLabels, type ImagesMenuProps, type IngestAssetFileError, type IngestAssetFilesToSceneItemsOptions, type IngestAssetFilesToSceneItemsResult, type IngestedAssetItemContext, NavMenu, type NavMenuMinimapProps, type NavMenuProps, type NavMenuUndoRedoProps, type NavMenuZoomControlsProps, type UseVectorCanvasDocumentOptions, type UseVectorCanvasDocumentResult, VectorCanvas, VectorCanvasBody, VectorCanvasHeader, VectorCanvasMain, VectorCanvasPersistenceAdapter, VectorCanvasRemoteAdapter, VectorCanvasRoot, type VectorCanvasSlotProps, type VectorCanvasSpaceProps, VectorCanvasToolbar, type VectorCanvasToolbarProps, VectorCanvasViewportSurface, VectorSelectionInspector, VectorToolDefinition, VectorToolbar, type VectorToolbarOverflowProps, type VectorToolbarProps, type VectorToolbarRenderContext, type VectorToolbarToolLockProps, type VectorToolbarToolProps, VectorViewportAssetKind, VectorViewportAssetStore, createIndexedDbPersistenceAdapter, createLocalStoragePersistenceAdapter, createNoopPersistenceAdapter, createToolPlugin, cursorForVectorToolId, ingestAssetFilesToSceneItems, useVectorCanvasDocument };
848
+ export { BoardComponentPosition, CanvasPlugin, CanvuAfterInteractionHook, CanvuBeforeInteractionHook, type CreateLocalStoragePersistenceAdapterOptions, type CreateToolPluginOptions, CustomShapePlacementOptions, DEFAULT_OVERFLOW_TOOL_IDS, DEFAULT_VECTOR_CANVAS_STORAGE_KEY, DEFAULT_VECTOR_TOOLS, IconArchitecturalCloud, IconArrow, IconDraw, IconEllipse, IconHand, IconImage, IconLaser, IconLine, IconRect, IconSelect, IconText, ImagesMenu, type ImagesMenuActionId, type ImagesMenuCollapsedButtonProps, type ImagesMenuCollapsedButtonRenderProps, type ImagesMenuLabels, type ImagesMenuProps, type IngestAssetFileError, type IngestAssetFilesToSceneItemsOptions, type IngestAssetFilesToSceneItemsResult, type IngestedAssetItemContext, NavMenu, type NavMenuMinimapProps, type NavMenuProps, type NavMenuUndoRedoProps, type NavMenuZoomControlsProps, type UseVectorCanvasDocumentOptions, type UseVectorCanvasDocumentResult, VectorCanvas, VectorCanvasBody, VectorCanvasHeader, VectorCanvasMain, VectorCanvasPersistenceAdapter, VectorCanvasRemoteAdapter, VectorCanvasRoot, type VectorCanvasSlotProps, type VectorCanvasSpaceProps, VectorCanvasToolbar, type VectorCanvasToolbarProps, VectorCanvasViewportSurface, VectorSelectionInspector, VectorToolDefinition, VectorToolbar, type VectorToolbarOverflowProps, type VectorToolbarProps, type VectorToolbarRenderContext, type VectorToolbarToolLockProps, type VectorToolbarToolProps, VectorViewportAssetKind, VectorViewportAssetStore, createIndexedDbPersistenceAdapter, createLocalStoragePersistenceAdapter, createNoopPersistenceAdapter, createToolPlugin, cursorForVectorToolId, ingestAssetFilesToSceneItems, useVectorCanvasDocument };
package/dist/react.d.ts CHANGED
@@ -205,6 +205,10 @@ type ImagesMenuCollapsedButtonRenderProps = {
205
205
  */
206
206
  buttonProps: ImagesMenuCollapsedButtonProps;
207
207
  };
208
+ /**
209
+ * Built-in action ids available in each row of {@link ImagesMenu}.
210
+ */
211
+ type ImagesMenuActionId = "duplicate" | "rotate" | "delete";
208
212
  type ImagesMenuProps = {
209
213
  items: readonly VectorSceneItem[];
210
214
  onItemsChange: (items: VectorSceneItem[]) => void;
@@ -214,6 +218,22 @@ type ImagesMenuProps = {
214
218
  */
215
219
  onFocusItem?: (item: VectorSceneItem) => void;
216
220
  labels?: ImagesMenuLabels;
221
+ /**
222
+ * Built-in row actions to omit from the managed images menu UI.
223
+ *
224
+ * Use this when an app needs to keep the managed image behavior available in
225
+ * code while preventing specific actions from being shown to users.
226
+ *
227
+ * @example
228
+ * ```tsx
229
+ * <ImagesMenu
230
+ * items={items}
231
+ * onItemsChange={setItems}
232
+ * hiddenActions={["duplicate"]}
233
+ * />
234
+ * ```
235
+ */
236
+ hiddenActions?: readonly ImagesMenuActionId[];
217
237
  /**
218
238
  * Whether the menu starts expanded. Defaults to `false` (collapsed), showing
219
239
  * only the floating toggle button until the user opens it.
@@ -269,7 +289,7 @@ type ImagesMenuProps = {
269
289
  * drag-to-reorder actions. Managed images are also `locked`, so they do not
270
290
  * respond to direct canvas interaction.
271
291
  */
272
- declare function ImagesMenu({ items, onItemsChange, onFocusItem, labels, defaultOpen, collapsedButtonClassName, collapsedButtonStyle, renderCollapsedButton, }: ImagesMenuProps): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
292
+ declare function ImagesMenu({ items, onItemsChange, onFocusItem, labels, hiddenActions, defaultOpen, collapsedButtonClassName, collapsedButtonStyle, renderCollapsedButton, }: ImagesMenuProps): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
273
293
 
274
294
  type NavMenuMinimapProps = {
275
295
  className?: string;
@@ -825,4 +845,4 @@ type VectorToolbarWithStatics = ((props: VectorToolbarProps) => ReactElement) &
825
845
  */
826
846
  declare const VectorToolbar: VectorToolbarWithStatics;
827
847
 
828
- export { BoardComponentPosition, CanvasPlugin, CanvuAfterInteractionHook, CanvuBeforeInteractionHook, type CreateLocalStoragePersistenceAdapterOptions, type CreateToolPluginOptions, CustomShapePlacementOptions, DEFAULT_OVERFLOW_TOOL_IDS, DEFAULT_VECTOR_CANVAS_STORAGE_KEY, DEFAULT_VECTOR_TOOLS, IconArchitecturalCloud, IconArrow, IconDraw, IconEllipse, IconHand, IconImage, IconLaser, IconLine, IconRect, IconSelect, IconText, ImagesMenu, type ImagesMenuCollapsedButtonProps, type ImagesMenuCollapsedButtonRenderProps, type ImagesMenuLabels, type ImagesMenuProps, type IngestAssetFileError, type IngestAssetFilesToSceneItemsOptions, type IngestAssetFilesToSceneItemsResult, type IngestedAssetItemContext, NavMenu, type NavMenuMinimapProps, type NavMenuProps, type NavMenuUndoRedoProps, type NavMenuZoomControlsProps, type UseVectorCanvasDocumentOptions, type UseVectorCanvasDocumentResult, VectorCanvas, VectorCanvasBody, VectorCanvasHeader, VectorCanvasMain, VectorCanvasPersistenceAdapter, VectorCanvasRemoteAdapter, VectorCanvasRoot, type VectorCanvasSlotProps, type VectorCanvasSpaceProps, VectorCanvasToolbar, type VectorCanvasToolbarProps, VectorCanvasViewportSurface, VectorSelectionInspector, VectorToolDefinition, VectorToolbar, type VectorToolbarOverflowProps, type VectorToolbarProps, type VectorToolbarRenderContext, type VectorToolbarToolLockProps, type VectorToolbarToolProps, VectorViewportAssetKind, VectorViewportAssetStore, createIndexedDbPersistenceAdapter, createLocalStoragePersistenceAdapter, createNoopPersistenceAdapter, createToolPlugin, cursorForVectorToolId, ingestAssetFilesToSceneItems, useVectorCanvasDocument };
848
+ export { BoardComponentPosition, CanvasPlugin, CanvuAfterInteractionHook, CanvuBeforeInteractionHook, type CreateLocalStoragePersistenceAdapterOptions, type CreateToolPluginOptions, CustomShapePlacementOptions, DEFAULT_OVERFLOW_TOOL_IDS, DEFAULT_VECTOR_CANVAS_STORAGE_KEY, DEFAULT_VECTOR_TOOLS, IconArchitecturalCloud, IconArrow, IconDraw, IconEllipse, IconHand, IconImage, IconLaser, IconLine, IconRect, IconSelect, IconText, ImagesMenu, type ImagesMenuActionId, type ImagesMenuCollapsedButtonProps, type ImagesMenuCollapsedButtonRenderProps, type ImagesMenuLabels, type ImagesMenuProps, type IngestAssetFileError, type IngestAssetFilesToSceneItemsOptions, type IngestAssetFilesToSceneItemsResult, type IngestedAssetItemContext, NavMenu, type NavMenuMinimapProps, type NavMenuProps, type NavMenuUndoRedoProps, type NavMenuZoomControlsProps, type UseVectorCanvasDocumentOptions, type UseVectorCanvasDocumentResult, VectorCanvas, VectorCanvasBody, VectorCanvasHeader, VectorCanvasMain, VectorCanvasPersistenceAdapter, VectorCanvasRemoteAdapter, VectorCanvasRoot, type VectorCanvasSlotProps, type VectorCanvasSpaceProps, VectorCanvasToolbar, type VectorCanvasToolbarProps, VectorCanvasViewportSurface, VectorSelectionInspector, VectorToolDefinition, VectorToolbar, type VectorToolbarOverflowProps, type VectorToolbarProps, type VectorToolbarRenderContext, type VectorToolbarToolLockProps, type VectorToolbarToolProps, VectorViewportAssetKind, VectorViewportAssetStore, createIndexedDbPersistenceAdapter, createLocalStoragePersistenceAdapter, createNoopPersistenceAdapter, createToolPlugin, cursorForVectorToolId, ingestAssetFilesToSceneItems, useVectorCanvasDocument };
package/dist/react.js CHANGED
@@ -2253,6 +2253,7 @@ function ImagesMenu({
2253
2253
  onItemsChange,
2254
2254
  onFocusItem,
2255
2255
  labels,
2256
+ hiddenActions,
2256
2257
  defaultOpen = false,
2257
2258
  collapsedButtonClassName,
2258
2259
  collapsedButtonStyle,
@@ -2268,6 +2269,10 @@ function ImagesMenu({
2268
2269
  useEffect(() => {
2269
2270
  ensureOpenKeyframe();
2270
2271
  }, []);
2272
+ const hiddenActionSet = useMemo(
2273
+ () => new Set(hiddenActions ?? []),
2274
+ [hiddenActions]
2275
+ );
2271
2276
  if (managed.length === 0) {
2272
2277
  return null;
2273
2278
  }
@@ -2342,6 +2347,7 @@ function ImagesMenu({
2342
2347
  {
2343
2348
  item,
2344
2349
  labels: resolvedLabels,
2350
+ hiddenActionSet,
2345
2351
  onFocus: onFocusItem ? () => onFocusItem(item) : void 0,
2346
2352
  onCopy: () => onItemsChange(copyManagedImage(items, item.id)),
2347
2353
  onRotate: () => onItemsChange(rotateManagedImage(items, item.id)),
@@ -2358,6 +2364,7 @@ function ImagesMenu({
2358
2364
  function ImagesMenuRow({
2359
2365
  item,
2360
2366
  labels,
2367
+ hiddenActionSet,
2361
2368
  onFocus,
2362
2369
  onCopy,
2363
2370
  onRotate,
@@ -2397,9 +2404,9 @@ function ImagesMenuRow({
2397
2404
  ),
2398
2405
  /* @__PURE__ */ jsx(FocusTarget, { label: labels.focus, onFocus, children: /* @__PURE__ */ jsx("div", { style: thumbBoxStyle, children: src ? /* @__PURE__ */ jsx("img", { src, alt: "", style: thumbImgStyle, draggable: false }) : null }) }),
2399
2406
  /* @__PURE__ */ jsxs("div", { style: actionsColumnStyle, children: [
2400
- /* @__PURE__ */ jsx(ImagesMenuAction, { label: labels.duplicate, onClick: onCopy, children: /* @__PURE__ */ jsx(CopyPlus, { size: 18 }) }),
2401
- /* @__PURE__ */ jsx(ImagesMenuAction, { label: labels.rotate, onClick: onRotate, children: /* @__PURE__ */ jsx(RotateCw, { size: 18 }) }),
2402
- /* @__PURE__ */ jsx(ImagesMenuAction, { label: labels.delete, onClick: onDelete, danger: true, children: /* @__PURE__ */ jsx(Trash2, { size: 18 }) })
2407
+ !hiddenActionSet.has("duplicate") ? /* @__PURE__ */ jsx(ImagesMenuAction, { label: labels.duplicate, onClick: onCopy, children: /* @__PURE__ */ jsx(CopyPlus, { size: 18 }) }) : null,
2408
+ !hiddenActionSet.has("rotate") ? /* @__PURE__ */ jsx(ImagesMenuAction, { label: labels.rotate, onClick: onRotate, children: /* @__PURE__ */ jsx(RotateCw, { size: 18 }) }) : null,
2409
+ !hiddenActionSet.has("delete") ? /* @__PURE__ */ jsx(ImagesMenuAction, { label: labels.delete, onClick: onDelete, danger: true, children: /* @__PURE__ */ jsx(Trash2, { size: 18 }) }) : null
2403
2410
  ] })
2404
2411
  ] });
2405
2412
  }