@bwp-web/canvas 0.4.1 → 0.4.3
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 +11 -1
- package/dist/Canvas/Canvas.d.ts.map +1 -1
- package/dist/background.d.ts +15 -3
- package/dist/background.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +8 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/shared.d.ts +3 -2
- package/dist/hooks/shared.d.ts.map +1 -1
- package/dist/hooks/useCanvasClick.d.ts +27 -0
- package/dist/hooks/useCanvasClick.d.ts.map +1 -0
- package/dist/hooks/useCanvasEvents.d.ts +35 -0
- package/dist/hooks/useCanvasEvents.d.ts.map +1 -0
- package/dist/hooks/useCanvasTooltip.d.ts +45 -0
- package/dist/hooks/useCanvasTooltip.d.ts.map +1 -0
- package/dist/hooks/useEditCanvas.d.ts +18 -1
- package/dist/hooks/useEditCanvas.d.ts.map +1 -1
- package/dist/hooks/useObjectOverlay.d.ts +49 -0
- package/dist/hooks/useObjectOverlay.d.ts.map +1 -0
- package/dist/hooks/useViewCanvas.d.ts +3 -1
- package/dist/hooks/useViewCanvas.d.ts.map +1 -1
- package/dist/index.cjs +471 -102
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +13 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +399 -32
- package/dist/index.js.map +1 -1
- package/dist/interactions/dragToCreate.d.ts +2 -0
- package/dist/interactions/dragToCreate.d.ts.map +1 -1
- package/dist/interactions/drawToCreate.d.ts +7 -1
- package/dist/interactions/drawToCreate.d.ts.map +1 -1
- package/dist/serialization.d.ts +12 -1
- package/dist/serialization.d.ts.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/viewport.d.ts +12 -1
- package/dist/viewport.d.ts.map +1 -1
- package/package.json +6 -5
|
@@ -8,6 +8,8 @@ export interface DragToCreateOptions extends SnappableInteractionOptions {
|
|
|
8
8
|
};
|
|
9
9
|
/** When true, constrain the drag to a 1:1 aspect ratio (square). */
|
|
10
10
|
constrainToSquare?: boolean;
|
|
11
|
+
/** Called when the user cancels the drag via Escape. */
|
|
12
|
+
onCancel?: () => void;
|
|
11
13
|
}
|
|
12
14
|
/**
|
|
13
15
|
* Enable drag-to-create mode.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dragToCreate.d.ts","sourceRoot":"","sources":["../../src/interactions/dragToCreate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,YAAY,EAAQ,MAAM,QAAQ,CAAC;AACpE,OAAO,KAAK,EACV,UAAU,EAEV,iBAAiB,EACjB,2BAA2B,EAC5B,MAAM,UAAU,CAAC;AAMlB,MAAM,WAAW,mBAAoB,SAAQ,2BAA2B;IACtE,gEAAgE;IAChE,YAAY,CAAC,EAAE,iBAAiB,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,oEAAoE;IACpE,iBAAiB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"dragToCreate.d.ts","sourceRoot":"","sources":["../../src/interactions/dragToCreate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,YAAY,EAAQ,MAAM,QAAQ,CAAC;AACpE,OAAO,KAAK,EACV,UAAU,EAEV,iBAAiB,EACjB,2BAA2B,EAC5B,MAAM,UAAU,CAAC;AAMlB,MAAM,WAAW,mBAAoB,SAAQ,2BAA2B;IACtE,gEAAgE;IAChE,YAAY,CAAC,EAAE,iBAAiB,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,oEAAoE;IACpE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,KAAK,YAAY,EACnE,OAAO,CAAC,EAAE,mBAAmB,GAC5B,MAAM,IAAI,CAuJZ"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
import { Canvas as FabricCanvas } from 'fabric';
|
|
1
|
+
import { Canvas as FabricCanvas, FabricObject } from 'fabric';
|
|
2
2
|
import type { SnappableInteractionOptions } from '../types';
|
|
3
3
|
import { type PolygonStyleOptions } from '../shapes';
|
|
4
4
|
export interface DrawToCreateOptions extends SnappableInteractionOptions {
|
|
5
5
|
/** Style applied to the polygon being drawn. */
|
|
6
6
|
style?: PolygonStyleOptions;
|
|
7
|
+
/**
|
|
8
|
+
* Metadata to attach to the created polygon. If provided, this is set on
|
|
9
|
+
* the polygon's `data` property after creation. Takes precedence over
|
|
10
|
+
* `style.data` if both are specified.
|
|
11
|
+
*/
|
|
12
|
+
data?: FabricObject['data'];
|
|
7
13
|
/**
|
|
8
14
|
* Snap vertex positions to multiples of `interval` degrees when Shift is
|
|
9
15
|
* held while placing a vertex. The angle is measured relative to the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawToCreate.d.ts","sourceRoot":"","sources":["../../src/interactions/drawToCreate.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,IAAI,YAAY,
|
|
1
|
+
{"version":3,"file":"drawToCreate.d.ts","sourceRoot":"","sources":["../../src/interactions/drawToCreate.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,IAAI,YAAY,EAEtB,YAAY,EAGb,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EAAW,2BAA2B,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAahF,MAAM,WAAW,mBAAoB,SAAQ,2BAA2B;IACtE,gDAAgD;IAChD,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AA8ED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,MAAM,IAAI,CA6OZ"}
|
package/dist/serialization.d.ts
CHANGED
|
@@ -42,11 +42,22 @@ export declare function getBaseStrokeWidth(obj: FabricObject): number;
|
|
|
42
42
|
* intended visual stroke width, not the zoom-adjusted one.
|
|
43
43
|
*/
|
|
44
44
|
export declare function serializeCanvas(canvas: FabricCanvas, options?: SerializeOptions): object;
|
|
45
|
+
/**
|
|
46
|
+
* Options for {@link loadCanvas}.
|
|
47
|
+
*/
|
|
48
|
+
export interface LoadCanvasOptions {
|
|
49
|
+
/**
|
|
50
|
+
* If provided, objects for which this function returns `false` are removed
|
|
51
|
+
* from the canvas after loading. Useful for filtering out objects whose IDs
|
|
52
|
+
* no longer exist in the application's data model.
|
|
53
|
+
*/
|
|
54
|
+
filter?: (obj: FabricObject) => boolean;
|
|
55
|
+
}
|
|
45
56
|
/**
|
|
46
57
|
* Load a canvas from a previously serialized JSON object (from {@link serializeCanvas}).
|
|
47
58
|
*
|
|
48
59
|
* Clears the canvas and restores all objects, then requests a re-render.
|
|
49
60
|
* The returned promise resolves once the canvas is fully loaded.
|
|
50
61
|
*/
|
|
51
|
-
export declare function loadCanvas(canvas: FabricCanvas, json: object): Promise<
|
|
62
|
+
export declare function loadCanvas(canvas: FabricCanvas, json: object, options?: LoadCanvasOptions): Promise<FabricObject[]>;
|
|
52
63
|
//# sourceMappingURL=serialization.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAQ,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AAWzE;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,IAAI,CA2BpE;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAE5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,CAiCR;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAQ,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AAWzE;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,IAAI,CA2BpE;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAE5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,CAiCR;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC;CACzC;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,YAAY,EAAE,CAAC,CAyBzB"}
|
package/dist/types.d.ts
CHANGED
|
@@ -11,6 +11,11 @@ export interface ShapeStyleOptions {
|
|
|
11
11
|
fill?: string;
|
|
12
12
|
stroke?: string;
|
|
13
13
|
strokeWidth?: number;
|
|
14
|
+
/** Optional metadata to attach to the created object. */
|
|
15
|
+
data?: {
|
|
16
|
+
type: string;
|
|
17
|
+
id: string;
|
|
18
|
+
};
|
|
14
19
|
}
|
|
15
20
|
/** Snapping configuration used by interaction modes (dragToCreate, drawToCreate). */
|
|
16
21
|
export type SnappingOptions = boolean | {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,yBAAyB;AACzB,MAAM,MAAM,OAAO,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/C,2DAA2D;AAC3D,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,yBAAyB;AACzB,MAAM,MAAM,OAAO,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/C,2DAA2D;AAC3D,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CACrC;AAED,qFAAqF;AACrF,MAAM,MAAM,eAAe,GACvB,OAAO,GACP;IACE,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC;AAEN,mEAAmE;AACnE,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED,iEAAiE;AACjE,MAAM,WAAW,2BAA4B,SAAQ,sBAAsB;IACzE,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,uDAAuD;AACvD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,6EAA6E;AAC7E,MAAM,MAAM,SAAS,GAAG,CACtB,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,kBAAkB,GAAG,SAAS,KACrC,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC"}
|
package/dist/viewport.d.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
import { Canvas as FabricCanvas } from 'fabric';
|
|
1
|
+
import { Canvas as FabricCanvas, type FabricObject } from 'fabric';
|
|
2
2
|
export type ViewportMode = 'select' | 'pan';
|
|
3
|
+
export interface PanToObjectOptions {
|
|
4
|
+
/** Animate the pan with an easing transition. Default: false. */
|
|
5
|
+
animate?: boolean;
|
|
6
|
+
/** Animation duration in milliseconds when `animate` is true. Default: 300. */
|
|
7
|
+
duration?: number;
|
|
8
|
+
}
|
|
3
9
|
export interface PanAndZoomOptions {
|
|
4
10
|
/** Minimum zoom level (default: 0.2) */
|
|
5
11
|
minZoom?: number;
|
|
@@ -27,6 +33,11 @@ export interface ViewportController {
|
|
|
27
33
|
* Respects the configured min/max zoom bounds. Default step: 0.2.
|
|
28
34
|
*/
|
|
29
35
|
zoomOut: (step?: number) => void;
|
|
36
|
+
/**
|
|
37
|
+
* Pan the viewport so the given object is centered on the canvas.
|
|
38
|
+
* Optionally animate the transition.
|
|
39
|
+
*/
|
|
40
|
+
panToObject: (object: FabricObject, options?: PanToObjectOptions) => void;
|
|
30
41
|
/** Remove all event listeners. */
|
|
31
42
|
cleanup: () => void;
|
|
32
43
|
}
|
package/dist/viewport.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewport.d.ts","sourceRoot":"","sources":["../src/viewport.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"viewport.d.ts","sourceRoot":"","sources":["../src/viewport.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,IAAI,YAAY,EACtB,KAAK,YAAY,EAGlB,MAAM,QAAQ,CAAC;AAQhB,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE5C,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,WAAW,CAAC,EAAE,YAAY,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,2CAA2C;IAC3C,OAAO,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACtC,qCAAqC;IACrC,OAAO,EAAE,MAAM,YAAY,CAAC;IAC5B,2EAA2E;IAC3E,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;;OAGG;IACH,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC;;;OAGG;IACH,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC;;;OAGG;IACH,WAAW,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC1E,kCAAkC;IAClC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AA0MD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,kBAAkB,CAkIpB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAExD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bwp-web/canvas",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -20,7 +20,9 @@
|
|
|
20
20
|
"files": [
|
|
21
21
|
"dist"
|
|
22
22
|
],
|
|
23
|
-
"sideEffects":
|
|
23
|
+
"sideEffects": [
|
|
24
|
+
"./src/fabricAugmentation.ts"
|
|
25
|
+
],
|
|
24
26
|
"scripts": {
|
|
25
27
|
"build": "tsup && tsc -p tsconfig.build.json",
|
|
26
28
|
"build:types": "tsc -p tsconfig.build.json",
|
|
@@ -30,18 +32,17 @@
|
|
|
30
32
|
"clean": "rm -rf dist node_modules .turbo",
|
|
31
33
|
"prepublishOnly": "npm run build"
|
|
32
34
|
},
|
|
33
|
-
"dependencies": {
|
|
34
|
-
"fabric": "^7.2.0"
|
|
35
|
-
},
|
|
36
35
|
"peerDependencies": {
|
|
37
36
|
"@bwp-web/styles": "*",
|
|
38
37
|
"@mui/material": ">=7.0.0",
|
|
38
|
+
"fabric": "^7.2.0",
|
|
39
39
|
"react": ">=18.0.0",
|
|
40
40
|
"react-dom": ">=18.0.0"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@bwp-web/eslint-config": "*",
|
|
44
44
|
"@bwp-web/styles": "*",
|
|
45
|
+
"fabric": "^7.2.0",
|
|
45
46
|
"@types/react": "^19.1.0",
|
|
46
47
|
"eslint": "^9.39.2",
|
|
47
48
|
"prettier": "^3.8.1",
|