@bwp-web/canvas 0.8.0 → 0.8.2
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/background.d.ts +6 -0
- package/dist/background.d.ts.map +1 -1
- package/dist/context/EditCanvasContext.d.ts +45 -0
- package/dist/context/EditCanvasContext.d.ts.map +1 -0
- package/dist/context/ViewCanvasContext.d.ts +44 -0
- package/dist/context/ViewCanvasContext.d.ts.map +1 -0
- package/dist/context/index.d.ts +5 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/fabricAugmentation.d.ts +3 -0
- package/dist/fabricAugmentation.d.ts.map +1 -1
- package/dist/hooks/useEditCanvas.d.ts +6 -2
- package/dist/hooks/useEditCanvas.d.ts.map +1 -1
- package/dist/hooks/useViewCanvas.d.ts.map +1 -1
- package/dist/index.cjs +138 -30
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +121 -16
- package/dist/index.js.map +1 -1
- package/dist/overlay/OverlayBadge.d.ts +9 -1
- package/dist/overlay/OverlayBadge.d.ts.map +1 -1
- package/dist/serialization.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -11,6 +11,10 @@ export { useCanvasTooltip } from './hooks';
|
|
|
11
11
|
export type { UseCanvasTooltipOptions, CanvasTooltipState } from './hooks';
|
|
12
12
|
export { useCanvasClick } from './hooks';
|
|
13
13
|
export type { UseCanvasClickOptions } from './hooks';
|
|
14
|
+
export { EditCanvasProvider, useEditCanvasContext } from './context';
|
|
15
|
+
export type { EditCanvasProviderProps, EditCanvasContextValue, } from './context';
|
|
16
|
+
export { ViewCanvasProvider, useViewCanvasContext } from './context';
|
|
17
|
+
export type { ViewCanvasProviderProps, ViewCanvasContextValue, } from './context';
|
|
14
18
|
export { ObjectOverlay } from './overlay';
|
|
15
19
|
export type { ObjectOverlayProps } from './overlay';
|
|
16
20
|
export { OverlayContent } from './overlay';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -434,21 +434,26 @@ function setBackgroundContrast(canvas, value) {
|
|
|
434
434
|
const contrastIdx = currentFilters.findIndex(
|
|
435
435
|
(f) => f instanceof filters.Contrast
|
|
436
436
|
);
|
|
437
|
+
let changed = false;
|
|
437
438
|
if (contrast === 0) {
|
|
438
439
|
if (contrastIdx >= 0) {
|
|
439
440
|
bg.filters = currentFilters.filter(
|
|
440
441
|
(f) => !(f instanceof filters.Contrast)
|
|
441
442
|
);
|
|
442
443
|
bg.applyFilters();
|
|
444
|
+
changed = true;
|
|
443
445
|
}
|
|
444
446
|
} else if (contrastIdx >= 0) {
|
|
445
447
|
currentFilters[contrastIdx].contrast = contrast;
|
|
446
448
|
bg.applyFilters();
|
|
449
|
+
changed = true;
|
|
447
450
|
} else {
|
|
448
451
|
bg.filters = [...currentFilters, new filters.Contrast({ contrast })];
|
|
449
452
|
bg.applyFilters();
|
|
453
|
+
changed = true;
|
|
450
454
|
}
|
|
451
455
|
canvas.requestRenderAll();
|
|
456
|
+
if (changed) canvas.fire("background:modified");
|
|
452
457
|
}
|
|
453
458
|
function getBackgroundContrast(canvas) {
|
|
454
459
|
const bg = getBackgroundImage(canvas);
|
|
@@ -463,14 +468,18 @@ function setBackgroundInverted(canvas, inverted) {
|
|
|
463
468
|
if (!bg) return;
|
|
464
469
|
const currentFilters = bg.filters ?? [];
|
|
465
470
|
const hasInvert = currentFilters.some((f) => f instanceof filters.Invert);
|
|
471
|
+
let changed = false;
|
|
466
472
|
if (inverted && !hasInvert) {
|
|
467
473
|
bg.filters = [...currentFilters, new filters.Invert()];
|
|
468
474
|
bg.applyFilters();
|
|
475
|
+
changed = true;
|
|
469
476
|
} else if (!inverted && hasInvert) {
|
|
470
477
|
bg.filters = currentFilters.filter((f) => !(f instanceof filters.Invert));
|
|
471
478
|
bg.applyFilters();
|
|
479
|
+
changed = true;
|
|
472
480
|
}
|
|
473
481
|
canvas.requestRenderAll();
|
|
482
|
+
if (changed) canvas.fire("background:modified");
|
|
474
483
|
}
|
|
475
484
|
function getBackgroundInverted(canvas) {
|
|
476
485
|
const bg = getBackgroundImage(canvas);
|
|
@@ -536,6 +545,7 @@ async function setBackgroundImage(canvas, url, options) {
|
|
|
536
545
|
setBackgroundContrast(canvas, prevContrast);
|
|
537
546
|
}
|
|
538
547
|
canvas.requestRenderAll();
|
|
548
|
+
canvas.fire("background:modified");
|
|
539
549
|
return img;
|
|
540
550
|
}
|
|
541
551
|
|
|
@@ -2116,7 +2126,8 @@ function enableVertexEdit(canvas, polygon, options, onExit) {
|
|
|
2116
2126
|
// src/serialization.ts
|
|
2117
2127
|
import {
|
|
2118
2128
|
FabricImage as FabricImage2,
|
|
2119
|
-
Rect as Rect5
|
|
2129
|
+
Rect as Rect5,
|
|
2130
|
+
filters as filters2
|
|
2120
2131
|
} from "fabric";
|
|
2121
2132
|
var strokeBaseMap = /* @__PURE__ */ new WeakMap();
|
|
2122
2133
|
var borderRadiusBaseMap = /* @__PURE__ */ new WeakMap();
|
|
@@ -2309,6 +2320,10 @@ async function loadCanvas(canvas, json, options) {
|
|
|
2309
2320
|
});
|
|
2310
2321
|
bg.setCoords();
|
|
2311
2322
|
}
|
|
2323
|
+
if (bg.filters?.some((f) => f instanceof filters2.Invert)) {
|
|
2324
|
+
bg.filters = bg.filters.filter((f) => !(f instanceof filters2.Invert));
|
|
2325
|
+
bg.applyFilters();
|
|
2326
|
+
}
|
|
2312
2327
|
}
|
|
2313
2328
|
if (options?.filter) {
|
|
2314
2329
|
const toRemove = [];
|
|
@@ -2540,6 +2555,7 @@ function useEditCanvas(options) {
|
|
|
2540
2555
|
canvas.on("object:added", () => setIsDirty(true));
|
|
2541
2556
|
canvas.on("object:removed", () => setIsDirty(true));
|
|
2542
2557
|
canvas.on("object:modified", () => setIsDirty(true));
|
|
2558
|
+
canvas.on("background:modified", () => setIsDirty(true));
|
|
2543
2559
|
}
|
|
2544
2560
|
if (opts?.history) {
|
|
2545
2561
|
const syncHistoryState = () => {
|
|
@@ -2553,6 +2569,7 @@ function useEditCanvas(options) {
|
|
|
2553
2569
|
canvas.on("object:added", syncHistoryState);
|
|
2554
2570
|
canvas.on("object:removed", syncHistoryState);
|
|
2555
2571
|
canvas.on("object:modified", syncHistoryState);
|
|
2572
|
+
canvas.on("background:modified", syncHistoryState);
|
|
2556
2573
|
}
|
|
2557
2574
|
if (opts?.vertexEdit !== false) {
|
|
2558
2575
|
const vertexOpts = typeof opts?.vertexEdit === "object" ? opts.vertexEdit : void 0;
|
|
@@ -2684,6 +2701,8 @@ function useEditCanvas(options) {
|
|
|
2684
2701
|
isDirty,
|
|
2685
2702
|
/** Reset the dirty flag (e.g., after a successful save). */
|
|
2686
2703
|
resetDirty: useCallback(() => setIsDirty(false), []),
|
|
2704
|
+
/** Manually mark the canvas as dirty (e.g., after a custom operation not tracked automatically). */
|
|
2705
|
+
markDirty: useCallback(() => setIsDirty(true), []),
|
|
2687
2706
|
/** Undo the last change. Requires `history: true`. */
|
|
2688
2707
|
undo: useCallback(async () => {
|
|
2689
2708
|
const h = historyRef.current;
|
|
@@ -2743,6 +2762,7 @@ function useViewCanvas(options) {
|
|
|
2743
2762
|
canvas.on("object:added", () => {
|
|
2744
2763
|
lockCanvas(canvas);
|
|
2745
2764
|
});
|
|
2765
|
+
canvas.hoverCursor = "pointer";
|
|
2746
2766
|
canvas.on("mouse:wheel", () => {
|
|
2747
2767
|
setZoom(canvas.getZoom());
|
|
2748
2768
|
});
|
|
@@ -2976,11 +2996,53 @@ function useCanvasClick(canvasRef, onClick, options) {
|
|
|
2976
2996
|
}, [canvasRef]);
|
|
2977
2997
|
}
|
|
2978
2998
|
|
|
2999
|
+
// src/context/EditCanvasContext.tsx
|
|
3000
|
+
import { createContext, useContext } from "react";
|
|
3001
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
3002
|
+
var EditCanvasContext = createContext(null);
|
|
3003
|
+
function EditCanvasProvider({
|
|
3004
|
+
options,
|
|
3005
|
+
children
|
|
3006
|
+
}) {
|
|
3007
|
+
const canvas = useEditCanvas(options);
|
|
3008
|
+
return /* @__PURE__ */ jsx2(EditCanvasContext.Provider, { value: canvas, children });
|
|
3009
|
+
}
|
|
3010
|
+
function useEditCanvasContext() {
|
|
3011
|
+
const ctx = useContext(EditCanvasContext);
|
|
3012
|
+
if (ctx === null) {
|
|
3013
|
+
throw new Error(
|
|
3014
|
+
"useEditCanvasContext must be used within an <EditCanvasProvider>"
|
|
3015
|
+
);
|
|
3016
|
+
}
|
|
3017
|
+
return ctx;
|
|
3018
|
+
}
|
|
3019
|
+
|
|
3020
|
+
// src/context/ViewCanvasContext.tsx
|
|
3021
|
+
import { createContext as createContext2, useContext as useContext2 } from "react";
|
|
3022
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
3023
|
+
var ViewCanvasContext = createContext2(null);
|
|
3024
|
+
function ViewCanvasProvider({
|
|
3025
|
+
options,
|
|
3026
|
+
children
|
|
3027
|
+
}) {
|
|
3028
|
+
const canvas = useViewCanvas(options);
|
|
3029
|
+
return /* @__PURE__ */ jsx3(ViewCanvasContext.Provider, { value: canvas, children });
|
|
3030
|
+
}
|
|
3031
|
+
function useViewCanvasContext() {
|
|
3032
|
+
const ctx = useContext2(ViewCanvasContext);
|
|
3033
|
+
if (ctx === null) {
|
|
3034
|
+
throw new Error(
|
|
3035
|
+
"useViewCanvasContext must be used within a <ViewCanvasProvider>"
|
|
3036
|
+
);
|
|
3037
|
+
}
|
|
3038
|
+
return ctx;
|
|
3039
|
+
}
|
|
3040
|
+
|
|
2979
3041
|
// src/overlay/ObjectOverlay.tsx
|
|
2980
3042
|
import { useEffect as useEffect6, useRef as useRef7 } from "react";
|
|
2981
3043
|
import { Stack } from "@mui/material";
|
|
2982
3044
|
import { util as util4 } from "fabric";
|
|
2983
|
-
import { jsx as
|
|
3045
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
2984
3046
|
function ObjectOverlay({
|
|
2985
3047
|
canvasRef,
|
|
2986
3048
|
object,
|
|
@@ -3024,7 +3086,7 @@ function ObjectOverlay({
|
|
|
3024
3086
|
};
|
|
3025
3087
|
}, [canvasRef, object]);
|
|
3026
3088
|
if (!object) return null;
|
|
3027
|
-
return /* @__PURE__ */
|
|
3089
|
+
return /* @__PURE__ */ jsx4(
|
|
3028
3090
|
Stack,
|
|
3029
3091
|
{
|
|
3030
3092
|
ref: stackRef,
|
|
@@ -3045,7 +3107,7 @@ function ObjectOverlay({
|
|
|
3045
3107
|
// src/overlay/OverlayContent.tsx
|
|
3046
3108
|
import { Stack as Stack2 } from "@mui/material";
|
|
3047
3109
|
import { useEffect as useEffect7, useRef as useRef8 } from "react";
|
|
3048
|
-
import { jsx as
|
|
3110
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
3049
3111
|
function OverlayContent({
|
|
3050
3112
|
children,
|
|
3051
3113
|
padding = 4,
|
|
@@ -3084,7 +3146,7 @@ function OverlayContent({
|
|
|
3084
3146
|
fit();
|
|
3085
3147
|
return () => observer.disconnect();
|
|
3086
3148
|
}, [padding, maxScale]);
|
|
3087
|
-
return /* @__PURE__ */
|
|
3149
|
+
return /* @__PURE__ */ jsx5(
|
|
3088
3150
|
Stack2,
|
|
3089
3151
|
{
|
|
3090
3152
|
ref: outerRef,
|
|
@@ -3097,7 +3159,7 @@ function OverlayContent({
|
|
|
3097
3159
|
...sx
|
|
3098
3160
|
},
|
|
3099
3161
|
...rest,
|
|
3100
|
-
children: /* @__PURE__ */
|
|
3162
|
+
children: /* @__PURE__ */ jsx5(
|
|
3101
3163
|
Stack2,
|
|
3102
3164
|
{
|
|
3103
3165
|
ref: innerRef,
|
|
@@ -3117,7 +3179,7 @@ function OverlayContent({
|
|
|
3117
3179
|
// src/overlay/FixedSizeContent.tsx
|
|
3118
3180
|
import { Stack as Stack3 } from "@mui/material";
|
|
3119
3181
|
import { useEffect as useEffect8, useRef as useRef9 } from "react";
|
|
3120
|
-
import { jsx as
|
|
3182
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
3121
3183
|
function FixedSizeContent({
|
|
3122
3184
|
children,
|
|
3123
3185
|
hideOnOverflow = true,
|
|
@@ -3164,7 +3226,7 @@ function FixedSizeContent({
|
|
|
3164
3226
|
check();
|
|
3165
3227
|
return () => observer.disconnect();
|
|
3166
3228
|
}, [hideOnOverflow, truncationPadding]);
|
|
3167
|
-
return /* @__PURE__ */
|
|
3229
|
+
return /* @__PURE__ */ jsx6(
|
|
3168
3230
|
Stack3,
|
|
3169
3231
|
{
|
|
3170
3232
|
ref,
|
|
@@ -3191,11 +3253,36 @@ function FixedSizeContent({
|
|
|
3191
3253
|
// src/overlay/OverlayBadge.tsx
|
|
3192
3254
|
import { Stack as Stack4 } from "@mui/material";
|
|
3193
3255
|
import { useEffect as useEffect9, useRef as useRef10 } from "react";
|
|
3194
|
-
import { jsx as
|
|
3256
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
3195
3257
|
function toPx(v) {
|
|
3196
3258
|
if (v === void 0) return void 0;
|
|
3197
3259
|
return typeof v === "number" ? `${v}px` : v;
|
|
3198
3260
|
}
|
|
3261
|
+
function deriveAngle(top, right, bottom, left) {
|
|
3262
|
+
const hasTop = top !== void 0;
|
|
3263
|
+
const hasRight = right !== void 0;
|
|
3264
|
+
const hasBottom = bottom !== void 0;
|
|
3265
|
+
const hasLeft = left !== void 0;
|
|
3266
|
+
if (hasTop && hasRight) return 45;
|
|
3267
|
+
if (hasTop && hasLeft) return 135;
|
|
3268
|
+
if (hasBottom && hasRight) return 315;
|
|
3269
|
+
if (hasBottom && hasLeft) return 225;
|
|
3270
|
+
if (hasTop) return 90;
|
|
3271
|
+
if (hasRight) return 0;
|
|
3272
|
+
if (hasBottom) return 270;
|
|
3273
|
+
if (hasLeft) return 180;
|
|
3274
|
+
return 45;
|
|
3275
|
+
}
|
|
3276
|
+
function ellipsePosition(angleDeg) {
|
|
3277
|
+
const rad = angleDeg * Math.PI / 180;
|
|
3278
|
+
return {
|
|
3279
|
+
pctX: 50 + 50 * Math.cos(rad),
|
|
3280
|
+
pctY: 50 - 50 * Math.sin(rad)
|
|
3281
|
+
};
|
|
3282
|
+
}
|
|
3283
|
+
function toNum(v) {
|
|
3284
|
+
return typeof v === "number" ? v : 0;
|
|
3285
|
+
}
|
|
3199
3286
|
function OverlayBadge({
|
|
3200
3287
|
children,
|
|
3201
3288
|
maxScale = 2,
|
|
@@ -3204,6 +3291,7 @@ function OverlayBadge({
|
|
|
3204
3291
|
right,
|
|
3205
3292
|
bottom,
|
|
3206
3293
|
left,
|
|
3294
|
+
circular = false,
|
|
3207
3295
|
sx,
|
|
3208
3296
|
...rest
|
|
3209
3297
|
}) {
|
|
@@ -3234,7 +3322,8 @@ function OverlayBadge({
|
|
|
3234
3322
|
const overlayScale = parseFloat(
|
|
3235
3323
|
getComputedStyle(el).getPropertyValue("--overlay-scale")
|
|
3236
3324
|
) || 1;
|
|
3237
|
-
|
|
3325
|
+
const scale = `scale(${ownScale / overlayScale})`;
|
|
3326
|
+
el.style.transform = circular ? `translate(-50%, -50%) ${scale}` : scale;
|
|
3238
3327
|
});
|
|
3239
3328
|
}
|
|
3240
3329
|
const observer = new ResizeObserver(update);
|
|
@@ -3244,17 +3333,29 @@ function OverlayBadge({
|
|
|
3244
3333
|
observer.disconnect();
|
|
3245
3334
|
baseSize.current = null;
|
|
3246
3335
|
};
|
|
3247
|
-
}, [maxScale, minScale]);
|
|
3248
|
-
|
|
3336
|
+
}, [maxScale, minScale, circular]);
|
|
3337
|
+
const positionSx = circular ? (() => {
|
|
3338
|
+
const angle = deriveAngle(top, right, bottom, left);
|
|
3339
|
+
const { pctX, pctY } = ellipsePosition(angle);
|
|
3340
|
+
const leftOffset = toNum(left) - toNum(right);
|
|
3341
|
+
const topOffset = toNum(top) - toNum(bottom);
|
|
3342
|
+
return {
|
|
3343
|
+
left: `calc(${pctX}% + ${leftOffset}px)`,
|
|
3344
|
+
top: `calc(${pctY}% + ${topOffset}px)`
|
|
3345
|
+
};
|
|
3346
|
+
})() : {
|
|
3347
|
+
top: toPx(top),
|
|
3348
|
+
right: toPx(right),
|
|
3349
|
+
bottom: toPx(bottom),
|
|
3350
|
+
left: toPx(left)
|
|
3351
|
+
};
|
|
3352
|
+
return /* @__PURE__ */ jsx7(
|
|
3249
3353
|
Stack4,
|
|
3250
3354
|
{
|
|
3251
3355
|
ref,
|
|
3252
3356
|
sx: {
|
|
3253
3357
|
position: "absolute",
|
|
3254
|
-
|
|
3255
|
-
right: toPx(right),
|
|
3256
|
-
bottom: toPx(bottom),
|
|
3257
|
-
left: toPx(left),
|
|
3358
|
+
...positionSx,
|
|
3258
3359
|
transformOrigin: "center center",
|
|
3259
3360
|
pointerEvents: "auto",
|
|
3260
3361
|
width: "max-content",
|
|
@@ -3286,6 +3387,7 @@ export {
|
|
|
3286
3387
|
DEFAULT_DRAG_SHAPE_STYLE,
|
|
3287
3388
|
DEFAULT_GUIDELINE_SHAPE_STYLE,
|
|
3288
3389
|
DEFAULT_SHAPE_STYLE,
|
|
3390
|
+
EditCanvasProvider,
|
|
3289
3391
|
Canvas2 as FabricCanvas,
|
|
3290
3392
|
FabricImage3 as FabricImage,
|
|
3291
3393
|
FabricObject5 as FabricObject,
|
|
@@ -3296,6 +3398,7 @@ export {
|
|
|
3296
3398
|
Point9 as Point,
|
|
3297
3399
|
Polygon5 as Polygon,
|
|
3298
3400
|
Rect6 as Rect,
|
|
3401
|
+
ViewCanvasProvider,
|
|
3299
3402
|
createCircle,
|
|
3300
3403
|
createCircleAtPoint,
|
|
3301
3404
|
createHistoryTracker,
|
|
@@ -3338,7 +3441,9 @@ export {
|
|
|
3338
3441
|
useCanvasEvents,
|
|
3339
3442
|
useCanvasTooltip,
|
|
3340
3443
|
useEditCanvas,
|
|
3444
|
+
useEditCanvasContext,
|
|
3341
3445
|
useViewCanvas,
|
|
3446
|
+
useViewCanvasContext,
|
|
3342
3447
|
util5 as util
|
|
3343
3448
|
};
|
|
3344
3449
|
//# sourceMappingURL=index.js.map
|