@bwp-web/canvas 0.5.1 → 0.6.0
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/Canvas/Canvas.d.ts +12 -1
- package/dist/Canvas/Canvas.d.ts.map +1 -1
- package/dist/background.d.ts.map +1 -1
- package/dist/constants.d.ts +2 -2
- package/dist/constants.d.ts.map +1 -1
- package/dist/fabricAugmentation.d.ts +3 -1
- package/dist/fabricAugmentation.d.ts.map +1 -1
- package/dist/history.d.ts +32 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/hooks/shared.d.ts +6 -4
- package/dist/hooks/shared.d.ts.map +1 -1
- package/dist/hooks/useEditCanvas.d.ts +22 -0
- package/dist/hooks/useEditCanvas.d.ts.map +1 -1
- package/dist/hooks/useObjectOverlay.d.ts +4 -3
- package/dist/hooks/useObjectOverlay.d.ts.map +1 -1
- package/dist/hooks/useViewCanvas.d.ts +7 -0
- package/dist/hooks/useViewCanvas.d.ts.map +1 -1
- package/dist/index.cjs +363 -150
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +326 -111
- package/dist/index.js.map +1 -1
- package/dist/interactions/drawToCreate.d.ts +8 -3
- package/dist/interactions/drawToCreate.d.ts.map +1 -1
- package/dist/interactions/vertexEdit.d.ts +5 -1
- package/dist/interactions/vertexEdit.d.ts.map +1 -1
- package/dist/serialization.d.ts +13 -3
- package/dist/serialization.d.ts.map +1 -1
- package/dist/shapes/polygon.d.ts +2 -2
- package/dist/shapes/polygon.d.ts.map +1 -1
- package/dist/types.d.ts +8 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/viewport.d.ts +12 -2
- package/dist/viewport.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/Canvas/Canvas.d.ts
CHANGED
|
@@ -16,6 +16,17 @@ export interface CanvasProps {
|
|
|
16
16
|
className?: string;
|
|
17
17
|
style?: CSSProperties;
|
|
18
18
|
onReady?: (canvas: FabricCanvas) => void;
|
|
19
|
+
/**
|
|
20
|
+
* Enable Delete/Backspace keyboard shortcuts for removing selected objects.
|
|
21
|
+
* Default: `false`. Set to `true` when using `<Canvas>` without `useEditCanvas`
|
|
22
|
+
* (which registers its own shortcuts).
|
|
23
|
+
*/
|
|
24
|
+
keyboardShortcuts?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Additional options passed to the Fabric.js `Canvas` constructor.
|
|
27
|
+
* Merged before `width`/`height`, so those props take precedence.
|
|
28
|
+
*/
|
|
29
|
+
fabricOptions?: Record<string, unknown>;
|
|
19
30
|
}
|
|
20
|
-
export declare function Canvas({ width, height, className, style, onReady, }: CanvasProps): import("react/jsx-runtime").JSX.Element;
|
|
31
|
+
export declare function Canvas({ width, height, className, style, onReady, keyboardShortcuts, fabricOptions, }: CanvasProps): import("react/jsx-runtime").JSX.Element;
|
|
21
32
|
//# sourceMappingURL=Canvas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Canvas.d.ts","sourceRoot":"","sources":["../../src/Canvas/Canvas.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,OAAO,CAAC;AAG9D,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"Canvas.d.ts","sourceRoot":"","sources":["../../src/Canvas/Canvas.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,OAAO,CAAC;AAG9D,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IACzC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EACP,iBAAiB,EACjB,aAAa,GACd,EAAE,WAAW,2CAwEb"}
|
package/dist/background.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background.d.ts","sourceRoot":"","sources":["../src/background.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,WAAW,EAAW,MAAM,QAAQ,CAAC;AAWtE;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAIpE;AAID,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,IAAI,CAiCN;AAID;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,MAAM,GACZ,IAAI,CA6BN;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAUlE;AAID;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,OAAO,GAChB,IAAI,CAgBN;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAInE;AAID,MAAM,WAAW,YAAY;IAC3B,+EAA+E;IAC/E,GAAG,EAAE,MAAM,CAAC;IACZ,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAkDvB;AAID,MAAM,WAAW,yBAA0B,SAAQ,kBAAkB;IACnE,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"background.d.ts","sourceRoot":"","sources":["../src/background.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,WAAW,EAAW,MAAM,QAAQ,CAAC;AAWtE;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAIpE;AAID,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,IAAI,CAiCN;AAID;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,MAAM,GACZ,IAAI,CA6BN;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAUlE;AAID;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,OAAO,GAChB,IAAI,CAgBN;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAInE;AAID,MAAM,WAAW,YAAY;IAC3B,+EAA+E;IAC/E,GAAG,EAAE,MAAM,CAAC;IACZ,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAkDvB;AAID,MAAM,WAAW,yBAA0B,SAAQ,kBAAkB;IACnE,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,WAAW,CAAC,CAqBtB"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
export declare const DEFAULT_MIN_ZOOM = 0.2;
|
|
3
3
|
/** Maximum zoom level. */
|
|
4
4
|
export declare const DEFAULT_MAX_ZOOM = 10;
|
|
5
|
-
/** Zoom sensitivity
|
|
6
|
-
export declare const DEFAULT_ZOOM_FACTOR =
|
|
5
|
+
/** Zoom sensitivity base — raised to the power of deltaY for proportional scroll zoom. */
|
|
6
|
+
export declare const DEFAULT_ZOOM_FACTOR = 0.999;
|
|
7
7
|
/** Default multiplier for programmatic zoomIn/zoomOut (1.2 = 20% per click). */
|
|
8
8
|
export declare const DEFAULT_ZOOM_STEP = 1.2;
|
|
9
9
|
/** Default viewport padding fraction (5% on each side). */
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,0BAA0B;AAC1B,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,0BAA0B;AAC1B,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,0BAA0B;AAC1B,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,0BAA0B;AAC1B,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,0FAA0F;AAC1F,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AACzC,gFAAgF;AAChF,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,2DAA2D;AAC3D,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAI7C,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,yFAAyF;AACzF,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,8CAA8C;AAC9C,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAI9C;;;GAGG;AACH,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B;;GAEG;AACH,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAI1C,oDAAoD;AACpD,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,8EAA8E;AAC9E,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAI1C,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,eAAO,MAAM,0BAA0B,YAAY,CAAC;AACpD,eAAO,MAAM,4BAA4B,YAAY,CAAC;AACtD,eAAO,MAAM,kCAAkC,IAAI,CAAC"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import 'fabric';
|
|
2
2
|
export type ShapeType = 'circle';
|
|
3
|
+
/** Valid `data.type` values for canvas objects. */
|
|
4
|
+
export type ObjectDataType = 'PLACE' | 'DEVICE' | 'DESK' | 'PARKING_SPACE' | 'FACILITY';
|
|
3
5
|
declare module 'fabric' {
|
|
4
6
|
interface FabricObject {
|
|
5
7
|
shapeType?: ShapeType;
|
|
6
8
|
data?: {
|
|
7
|
-
type:
|
|
9
|
+
type: ObjectDataType;
|
|
8
10
|
id: string;
|
|
9
11
|
};
|
|
10
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fabricAugmentation.d.ts","sourceRoot":"","sources":["../src/fabricAugmentation.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC;AAEhB,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC;AAEjC,OAAO,QAAQ,QAAQ,CAAC;IACtB,UAAU,YAAY;QACpB,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,IAAI,CAAC,EAAE;YACL,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"fabricAugmentation.d.ts","sourceRoot":"","sources":["../src/fabricAugmentation.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC;AAEhB,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC;AAEjC,mDAAmD;AACnD,MAAM,MAAM,cAAc,GACtB,OAAO,GACP,QAAQ,GACR,MAAM,GACN,eAAe,GACf,UAAU,CAAC;AAEf,OAAO,QAAQ,QAAQ,CAAC;IACtB,UAAU,YAAY;QACpB,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,IAAI,CAAC,EAAE;YACL,IAAI,EAAE,cAAc,CAAC;YACrB,EAAE,EAAE,MAAM,CAAC;SACZ,CAAC;KACH;IACD,UAAU,MAAM;QACd,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB;CACF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Canvas as FabricCanvas } from 'fabric';
|
|
2
|
+
export interface HistoryOptions {
|
|
3
|
+
/** Maximum number of snapshots to keep. Oldest are dropped when exceeded. Default: 50. */
|
|
4
|
+
maxSize?: number;
|
|
5
|
+
/** Debounce delay in milliseconds before capturing a snapshot after a change. Default: 300. */
|
|
6
|
+
debounce?: number;
|
|
7
|
+
}
|
|
8
|
+
export interface HistoryTracker {
|
|
9
|
+
/** Undo the last change. No-op if at the beginning of history. */
|
|
10
|
+
undo: () => Promise<void>;
|
|
11
|
+
/** Redo a previously undone change. No-op if at the end of history. */
|
|
12
|
+
redo: () => Promise<void>;
|
|
13
|
+
/** Whether an undo operation is available. */
|
|
14
|
+
canUndo: () => boolean;
|
|
15
|
+
/** Whether a redo operation is available. */
|
|
16
|
+
canRedo: () => boolean;
|
|
17
|
+
/** Manually push the current canvas state as a snapshot. */
|
|
18
|
+
pushSnapshot: () => void;
|
|
19
|
+
/** Remove all event listeners and clear history. */
|
|
20
|
+
cleanup: () => void;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Create a snapshot-based undo/redo tracker for a canvas.
|
|
24
|
+
*
|
|
25
|
+
* Listens to `object:added`, `object:modified`, and `object:removed` events
|
|
26
|
+
* and captures a serialized snapshot of the canvas state (debounced).
|
|
27
|
+
*
|
|
28
|
+
* `undo()` and `redo()` load adjacent snapshots via `loadCanvas`.
|
|
29
|
+
* During undo/redo operations, event-triggered captures are suppressed.
|
|
30
|
+
*/
|
|
31
|
+
export declare function createHistoryTracker(canvas: FabricCanvas, options?: HistoryOptions): HistoryTracker;
|
|
32
|
+
//# sourceMappingURL=history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,QAAQ,CAAC;AAIhD,MAAM,WAAW,cAAc;IAC7B,0FAA0F;IAC1F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,uEAAuE;IACvE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,8CAA8C;IAC9C,OAAO,EAAE,MAAM,OAAO,CAAC;IACvB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,OAAO,CAAC;IACvB,4DAA4D;IAC5D,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,oDAAoD;IACpD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,cAAc,GACvB,cAAc,CAmGhB"}
|
package/dist/hooks/shared.d.ts
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { type RefObject } from 'react';
|
|
2
2
|
import { Canvas as FabricCanvas, type FabricObject } from 'fabric';
|
|
3
|
-
import { type PanToObjectOptions, type ViewportController } from '../viewport';
|
|
3
|
+
import { type PanToObjectOptions, type ViewportController, type ZoomToFitOptions } from '../viewport';
|
|
4
4
|
/** Sync React zoom state with the canvas zoom level. */
|
|
5
5
|
export declare function syncZoom(canvasRef: RefObject<FabricCanvas | null>, setZoom: (z: number) => void): void;
|
|
6
6
|
/**
|
|
7
|
-
* Create
|
|
8
|
-
* useEditCanvas and useViewCanvas.
|
|
7
|
+
* Create memoized viewport action callbacks shared between
|
|
8
|
+
* useEditCanvas and useViewCanvas. The returned object is referentially
|
|
9
|
+
* stable across renders.
|
|
9
10
|
*/
|
|
10
|
-
export declare function
|
|
11
|
+
export declare function useViewportActions(canvasRef: RefObject<FabricCanvas | null>, viewportRef: RefObject<ViewportController | null>, setZoom: (z: number) => void): {
|
|
11
12
|
resetViewport: () => void;
|
|
12
13
|
zoomIn: (step?: number) => void;
|
|
13
14
|
zoomOut: (step?: number) => void;
|
|
14
15
|
panToObject: (object: FabricObject, panOpts?: PanToObjectOptions) => void;
|
|
16
|
+
zoomToFit: (object: FabricObject, fitOpts?: ZoomToFitOptions) => void;
|
|
15
17
|
};
|
|
16
18
|
/**
|
|
17
19
|
* Resolve whether alignment should be enabled based on the master toggle
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/hooks/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/hooks/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AACnE,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AAGrB,wDAAwD;AACxD,wBAAgB,QAAQ,CACtB,SAAS,EAAE,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,EACzC,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GAC3B,IAAI,CAGN;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,EACzC,WAAW,EAAE,SAAS,CAAC,kBAAkB,GAAG,IAAI,CAAC,EACjD,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI;;oBAcH,MAAM;qBAKL,MAAM;0BAMpB,YAAY,YACV,kBAAkB;wBAKH,YAAY,YAAY,gBAAgB;EAStE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,eAAe,EAAE,OAAO,GAAG,SAAS,EACpC,aAAa,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAC1C,OAAO,CAGT"}
|
|
@@ -3,6 +3,7 @@ import { type PanAndZoomOptions, type ViewportMode } from '../viewport';
|
|
|
3
3
|
import { type ObjectAlignmentOptions, type RotationSnapOptions } from '../alignment';
|
|
4
4
|
import { type VertexEditOptions } from '../interactions';
|
|
5
5
|
import { type ResizeImageOptions } from '../background';
|
|
6
|
+
import { type HistoryOptions } from '../history';
|
|
6
7
|
import type { ModeSetup } from '../types';
|
|
7
8
|
export interface UseEditCanvasOptions {
|
|
8
9
|
/** Configure pan and zoom. Pass `false` to disable, or options to customize. Default: enabled. */
|
|
@@ -59,6 +60,17 @@ export interface UseEditCanvasOptions {
|
|
|
59
60
|
* Default: disabled.
|
|
60
61
|
*/
|
|
61
62
|
trackChanges?: boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Visual border radius applied to loaded Rects (via `loadCanvas`).
|
|
65
|
+
* Pass a number to customize (default: 4), or `false` to disable.
|
|
66
|
+
*/
|
|
67
|
+
borderRadius?: number | false;
|
|
68
|
+
/**
|
|
69
|
+
* Enable snapshot-based undo/redo. Pass `true` for defaults, or an options
|
|
70
|
+
* object to customize `maxSize` (default: 50) and `debounce` (default: 300ms).
|
|
71
|
+
* Default: disabled.
|
|
72
|
+
*/
|
|
73
|
+
history?: boolean | HistoryOptions;
|
|
62
74
|
}
|
|
63
75
|
/**
|
|
64
76
|
* Hook that provides a batteries-included canvas experience with full
|
|
@@ -105,6 +117,8 @@ export declare function useEditCanvas(options?: UseEditCanvasOptions): {
|
|
|
105
117
|
zoomOut: (step?: number) => void;
|
|
106
118
|
/** Pan the viewport to center on a specific object. */
|
|
107
119
|
panToObject: (object: FabricObject, panOpts?: import("../viewport").PanToObjectOptions) => void;
|
|
120
|
+
/** Zoom and pan to fit a specific object in the viewport. */
|
|
121
|
+
zoomToFit: (object: FabricObject, fitOpts?: import("../viewport").ZoomToFitOptions) => void;
|
|
108
122
|
};
|
|
109
123
|
/** Whether vertex edit mode is currently active (reactive). */
|
|
110
124
|
isEditingVertices: boolean;
|
|
@@ -139,5 +153,13 @@ export declare function useEditCanvas(options?: UseEditCanvasOptions): {
|
|
|
139
153
|
isDirty: boolean;
|
|
140
154
|
/** Reset the dirty flag (e.g., after a successful save). */
|
|
141
155
|
resetDirty: () => void;
|
|
156
|
+
/** Undo the last change. Requires `history: true`. */
|
|
157
|
+
undo: () => Promise<void>;
|
|
158
|
+
/** Redo a previously undone change. Requires `history: true`. */
|
|
159
|
+
redo: () => Promise<void>;
|
|
160
|
+
/** Whether an undo operation is available (reactive). Requires `history: true`. */
|
|
161
|
+
canUndo: boolean;
|
|
162
|
+
/** Whether a redo operation is available (reactive). Requires `history: true`. */
|
|
163
|
+
canRedo: boolean;
|
|
142
164
|
};
|
|
143
165
|
//# sourceMappingURL=useEditCanvas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEditCanvas.d.ts","sourceRoot":"","sources":["../../src/hooks/useEditCanvas.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,KAAK,YAAY,EAAW,MAAM,QAAQ,CAAC;AAC5E,OAAO,EAEL,KAAK,iBAAiB,EAEtB,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAMrB,OAAO,EAEL,KAAK,sBAAsB,EAE3B,KAAK,mBAAmB,EACzB,MAAM,cAAc,CAAC;AACtB,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"useEditCanvas.d.ts","sourceRoot":"","sources":["../../src/hooks/useEditCanvas.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,KAAK,YAAY,EAAW,MAAM,QAAQ,CAAC;AAC5E,OAAO,EAEL,KAAK,iBAAiB,EAEtB,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAMrB,OAAO,EAEL,KAAK,sBAAsB,EAE3B,KAAK,mBAAmB,EACzB,MAAM,cAAc,CAAC;AACtB,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAGL,KAAK,kBAAkB,EAExB,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,WAAW,oBAAoB;IACnC,kGAAkG;IAClG,UAAU,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAC;IACzC,mIAAmI;IACnI,SAAS,CAAC,EAAE,OAAO,GAAG,sBAAsB,CAAC;IAC7C;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,mBAAmB,CAAC;IAC7C;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAC;IACzC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,qEAAqE;IACrE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,GAAG,kBAAkB,CAAC;IAChD;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC9B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,oBAAoB;IAqRxD,8CAA8C;sBAzMrC,YAAY;IA2MrB,oDAAoD;;IAEpD,qCAAqC;;IAErC,6CAA6C;;IAE7C,yBAAyB;;QAEvB,wCAAwC;;QAExC,wDAAwD;wBAhDjB,YAAY;QAkDnD,wFAAwF;;QAExF,2DAA2D;;QAE3D,0DAA0D;;QAE1D,uDAAuD;;QAEvD,6DAA6D;;;IAG/D,+DAA+D;;IAE/D;;;;;;;;;;;;;;OAcG;qBA3R+B,SAAS,GAAG,IAAI;IA6RlD;;;;;;;OAOG;yBA7ES,MAAM,WAAW;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE;IA+E3D,8GAA8G;;IAE9G,4DAA4D;;IAE5D,sDAAsD;;IAQtD,iEAAiE;;IAQjE,mFAAmF;;IAEnF,kFAAkF;;EAGrF"}
|
|
@@ -2,9 +2,10 @@ import { type RefObject } from 'react';
|
|
|
2
2
|
import type { Canvas as FabricCanvas, FabricObject } from 'fabric';
|
|
3
3
|
export interface UseObjectOverlayOptions {
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* Scale the overlay container to the object's actual dimensions and apply
|
|
6
|
+
* a CSS `scale(zoom)` transform so content inside lays out in canvas units.
|
|
7
|
+
* Pass `false` to opt out and receive screen-space pixel dimensions instead.
|
|
8
|
+
* Default: true.
|
|
8
9
|
*/
|
|
9
10
|
autoScaleContent?: boolean;
|
|
10
11
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useObjectOverlay.d.ts","sourceRoot":"","sources":["../../src/hooks/useObjectOverlay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,IAAI,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGnE,MAAM,WAAW,uBAAuB;IACtC
|
|
1
|
+
{"version":3,"file":"useObjectOverlay.d.ts","sourceRoot":"","sources":["../../src/hooks/useObjectOverlay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,IAAI,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGnE,MAAM,WAAW,uBAAuB;IACtC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,EACzC,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,EACvC,OAAO,CAAC,EAAE,uBAAuB,GAChC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CA+ElC"}
|
|
@@ -25,6 +25,11 @@ export interface UseViewCanvasOptions {
|
|
|
25
25
|
* Pass `false` to disable. Default: enabled.
|
|
26
26
|
*/
|
|
27
27
|
autoFitToBackground?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Visual border radius applied to loaded Rects (via `loadCanvas`).
|
|
30
|
+
* Pass a number to customize (default: 4), or `false` to disable.
|
|
31
|
+
*/
|
|
32
|
+
borderRadius?: number | false;
|
|
28
33
|
}
|
|
29
34
|
/**
|
|
30
35
|
* Hook that provides a view-only canvas experience.
|
|
@@ -57,6 +62,8 @@ export declare function useViewCanvas(options?: UseViewCanvasOptions): {
|
|
|
57
62
|
zoomOut: (step?: number) => void;
|
|
58
63
|
/** Pan the viewport to center on a specific object. */
|
|
59
64
|
panToObject: (object: FabricObject, panOpts?: import("../viewport").PanToObjectOptions) => void;
|
|
65
|
+
/** Zoom and pan to fit a specific object in the viewport. */
|
|
66
|
+
zoomToFit: (object: FabricObject, fitOpts?: import("../viewport").ZoomToFitOptions) => void;
|
|
60
67
|
};
|
|
61
68
|
/** Update a single object's visual style by its `data.id`. */
|
|
62
69
|
setObjectStyle: (id: string, style: ViewObjectStyle) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useViewCanvas.d.ts","sourceRoot":"","sources":["../../src/hooks/useViewCanvas.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AACnE,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"useViewCanvas.d.ts","sourceRoot":"","sources":["../../src/hooks/useViewCanvas.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AACnE,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,aAAa,CAAC;AASrB,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,kGAAkG;IAClG,UAAU,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAC;IACzC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qEAAqE;IACrE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAC/B;AAUD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,oBAAoB;IAuHxD,8CAA8C;sBA9GrC,YAAY;IAgHrB,oDAAoD;;IAEpD,qCAAqC;;IAErC,yBAAyB;;QAEvB,wFAAwF;;QAExF,2DAA2D;;QAE3D,0DAA0D;;QAE1D,uDAAuD;;QAEvD,6DAA6D;;;IAG/D,8DAA8D;yBAnExB,MAAM,SAAS,eAAe;IAqEpE,sFAAsF;8BA5D7E,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC;IA8DxC,qEAAqE;iCAvC9D,MAAM,SAAS,eAAe;EA0CxC"}
|