@bwp-web/canvas 0.8.3 → 0.9.1

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/index.d.ts CHANGED
@@ -12,9 +12,11 @@ export type { UseCanvasTooltipOptions, CanvasTooltipState } from './hooks';
12
12
  export { useCanvasClick } from './hooks';
13
13
  export type { UseCanvasClickOptions } from './hooks';
14
14
  export { EditCanvasProvider, useEditCanvasContext } from './context';
15
- export type { EditCanvasProviderProps, EditCanvasContextValue, } from './context';
15
+ export { useEditCanvasViewport, useEditCanvasState } from './context';
16
+ export type { EditCanvasProviderProps, EditCanvasContextValue, EditCanvasViewportValue, EditCanvasStateValue, } from './context';
16
17
  export { ViewCanvasProvider, useViewCanvasContext } from './context';
17
- export type { ViewCanvasProviderProps, ViewCanvasContextValue, } from './context';
18
+ export { useViewCanvasViewport, useViewCanvasState } from './context';
19
+ export type { ViewCanvasProviderProps, ViewCanvasContextValue, ViewCanvasViewportValue, ViewCanvasStateValue, } from './context';
18
20
  export { useCanvasRef } from './context';
19
21
  export { ObjectOverlay } from './overlay';
20
22
  export type { ObjectOverlayProps } from './overlay';
@@ -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
@@ -2826,6 +2826,9 @@ function useViewCanvas(options) {
2826
2826
  const [zoom, setZoom] = useState2(1);
2827
2827
  const [objects, setObjects] = useState2([]);
2828
2828
  const [isLoading, setIsLoading] = useState2(false);
2829
+ const [lockLightMode, setLockLightMode] = useState2(
2830
+ void 0
2831
+ );
2829
2832
  const onReady = useCallback2(
2830
2833
  (canvas) => {
2831
2834
  canvasRef.current = canvas;
@@ -2873,6 +2876,9 @@ function useViewCanvas(options) {
2873
2876
  if (opts?.invertBackground !== void 0) {
2874
2877
  setBackgroundInverted(canvas, opts.invertBackground);
2875
2878
  }
2879
+ if (canvas.lockLightMode !== void 0) {
2880
+ setLockLightMode(canvas.lockLightMode);
2881
+ }
2876
2882
  if (opts?.autoFitToBackground !== false && canvas.backgroundImage) {
2877
2883
  fitViewportToBackground(canvas);
2878
2884
  syncZoom(canvasRef, setZoom);
@@ -2969,70 +2975,29 @@ function useViewCanvas(options) {
2969
2975
  /** Batch-update multiple objects' visual styles in one render. Keyed by `data.id`. */
2970
2976
  setObjectStyles,
2971
2977
  /** Apply a visual style to all objects whose `data.type` matches. */
2972
- setObjectStyleByType
2978
+ setObjectStyleByType,
2979
+ /** Whether the canvas is locked to light mode. Read from loaded canvas data. */
2980
+ lockLightMode
2973
2981
  }),
2974
2982
  // Only reactive state in deps — refs and stable callbacks are omitted
2975
2983
  // eslint-disable-next-line react-hooks/exhaustive-deps
2976
- [zoom, objects, isLoading, viewport]
2984
+ [zoom, objects, isLoading, viewport, lockLightMode]
2977
2985
  );
2978
2986
  }
2979
2987
 
2980
2988
  // src/hooks/useCanvasEvents.ts
2981
2989
  import { useEffect as useEffect4, useRef as useRef4 } from "react";
2982
2990
 
2983
- // src/context/ViewCanvasContext.tsx
2991
+ // src/context/CanvasRefContext.ts
2984
2992
  import { createContext, useContext } from "react";
2985
- import { jsx as jsx2 } from "react/jsx-runtime";
2986
- var ViewCanvasContext = createContext(null);
2987
- function ViewCanvasProvider({
2988
- options,
2989
- children
2990
- }) {
2991
- const canvas = useViewCanvas(options);
2992
- return /* @__PURE__ */ jsx2(ViewCanvasContext.Provider, { value: canvas, children });
2993
- }
2994
- function useViewCanvasContext() {
2995
- const ctx = useContext(ViewCanvasContext);
2996
- if (ctx === null) {
2997
- throw new Error(
2998
- "useViewCanvasContext must be used within a <ViewCanvasProvider>"
2999
- );
3000
- }
3001
- return ctx;
3002
- }
3003
- function useViewCanvasContextSafe() {
3004
- return useContext(ViewCanvasContext);
3005
- }
3006
-
3007
- // src/context/EditCanvasContext.tsx
3008
- import { createContext as createContext2, useContext as useContext2 } from "react";
3009
- import { jsx as jsx3 } from "react/jsx-runtime";
3010
- var EditCanvasContext = createContext2(null);
3011
- function EditCanvasProvider({
3012
- options,
3013
- children
3014
- }) {
3015
- const canvas = useEditCanvas(options);
3016
- return /* @__PURE__ */ jsx3(EditCanvasContext.Provider, { value: canvas, children });
3017
- }
3018
- function useEditCanvasContext() {
3019
- const ctx = useContext2(EditCanvasContext);
3020
- if (ctx === null) {
3021
- throw new Error(
3022
- "useEditCanvasContext must be used within an <EditCanvasProvider>"
3023
- );
3024
- }
3025
- return ctx;
3026
- }
3027
- function useEditCanvasContextSafe() {
3028
- return useContext2(EditCanvasContext);
2993
+ var CanvasRefContext = createContext(null);
2994
+ function useCanvasRefContext() {
2995
+ return useContext(CanvasRefContext);
3029
2996
  }
3030
2997
 
3031
2998
  // src/context/useCanvasRef.ts
3032
2999
  function useCanvasRef() {
3033
- const viewCtx = useViewCanvasContextSafe();
3034
- const editCtx = useEditCanvasContextSafe();
3035
- return viewCtx?.canvasRef ?? editCtx?.canvasRef ?? null;
3000
+ return useCanvasRefContext();
3036
3001
  }
3037
3002
 
3038
3003
  // src/hooks/useCanvasEvents.ts
@@ -3187,6 +3152,150 @@ function useCanvasClick(canvasRefOrOnClick, onClickOrOptions, maybeOptions) {
3187
3152
  }, [resolvedCanvasRef]);
3188
3153
  }
3189
3154
 
3155
+ // src/context/EditCanvasContext.tsx
3156
+ import { createContext as createContext2, useContext as useContext2, useMemo as useMemo4 } from "react";
3157
+ import { jsx as jsx2 } from "react/jsx-runtime";
3158
+ var EditViewportContext = createContext2(null);
3159
+ var EditStateContext = createContext2(null);
3160
+ function EditCanvasProvider({
3161
+ options,
3162
+ children
3163
+ }) {
3164
+ const canvas = useEditCanvas(options);
3165
+ const viewportValue = useMemo4(
3166
+ () => ({ zoom: canvas.zoom, viewport: canvas.viewport }),
3167
+ [canvas.zoom, canvas.viewport]
3168
+ );
3169
+ const stateValue = useMemo4(
3170
+ () => ({
3171
+ onReady: canvas.onReady,
3172
+ objects: canvas.objects,
3173
+ isLoading: canvas.isLoading,
3174
+ selected: canvas.selected,
3175
+ isEditingVertices: canvas.isEditingVertices,
3176
+ setMode: canvas.setMode,
3177
+ setBackground: canvas.setBackground,
3178
+ isDirty: canvas.isDirty,
3179
+ resetDirty: canvas.resetDirty,
3180
+ markDirty: canvas.markDirty,
3181
+ undo: canvas.undo,
3182
+ redo: canvas.redo,
3183
+ canUndo: canvas.canUndo,
3184
+ canRedo: canvas.canRedo,
3185
+ lockLightMode: canvas.lockLightMode,
3186
+ setLockLightMode: canvas.setLockLightMode
3187
+ }),
3188
+ // Only reactive state — stable callbacks omitted
3189
+ // eslint-disable-next-line react-hooks/exhaustive-deps
3190
+ [
3191
+ canvas.objects,
3192
+ canvas.isLoading,
3193
+ canvas.selected,
3194
+ canvas.isEditingVertices,
3195
+ canvas.isDirty,
3196
+ canvas.canUndo,
3197
+ canvas.canRedo,
3198
+ canvas.lockLightMode
3199
+ ]
3200
+ );
3201
+ return /* @__PURE__ */ jsx2(CanvasRefContext.Provider, { value: canvas.canvasRef, children: /* @__PURE__ */ jsx2(EditViewportContext.Provider, { value: viewportValue, children: /* @__PURE__ */ jsx2(EditStateContext.Provider, { value: stateValue, children }) }) });
3202
+ }
3203
+ function useEditCanvasContext() {
3204
+ const canvasRef = useContext2(CanvasRefContext);
3205
+ const viewport = useContext2(EditViewportContext);
3206
+ const state = useContext2(EditStateContext);
3207
+ if (canvasRef === null || viewport === null || state === null) {
3208
+ throw new Error(
3209
+ "useEditCanvasContext must be used within an <EditCanvasProvider>"
3210
+ );
3211
+ }
3212
+ return useMemo4(
3213
+ () => ({ canvasRef, ...viewport, ...state }),
3214
+ [canvasRef, viewport, state]
3215
+ );
3216
+ }
3217
+ function useEditCanvasViewport() {
3218
+ const ctx = useContext2(EditViewportContext);
3219
+ if (ctx === null) {
3220
+ throw new Error(
3221
+ "useEditCanvasViewport must be used within an <EditCanvasProvider>"
3222
+ );
3223
+ }
3224
+ return ctx;
3225
+ }
3226
+ function useEditCanvasState() {
3227
+ const ctx = useContext2(EditStateContext);
3228
+ if (ctx === null) {
3229
+ throw new Error(
3230
+ "useEditCanvasState must be used within an <EditCanvasProvider>"
3231
+ );
3232
+ }
3233
+ return ctx;
3234
+ }
3235
+
3236
+ // src/context/ViewCanvasContext.tsx
3237
+ import { createContext as createContext3, useContext as useContext3, useMemo as useMemo5 } from "react";
3238
+ import { jsx as jsx3 } from "react/jsx-runtime";
3239
+ var ViewViewportContext = createContext3(null);
3240
+ var ViewStateContext = createContext3(null);
3241
+ function ViewCanvasProvider({
3242
+ options,
3243
+ children
3244
+ }) {
3245
+ const canvas = useViewCanvas(options);
3246
+ const viewportValue = useMemo5(
3247
+ () => ({ zoom: canvas.zoom, viewport: canvas.viewport }),
3248
+ [canvas.zoom, canvas.viewport]
3249
+ );
3250
+ const stateValue = useMemo5(
3251
+ () => ({
3252
+ onReady: canvas.onReady,
3253
+ objects: canvas.objects,
3254
+ isLoading: canvas.isLoading,
3255
+ setObjectStyle: canvas.setObjectStyle,
3256
+ setObjectStyles: canvas.setObjectStyles,
3257
+ setObjectStyleByType: canvas.setObjectStyleByType,
3258
+ lockLightMode: canvas.lockLightMode
3259
+ }),
3260
+ // Only reactive state — stable callbacks omitted
3261
+ // eslint-disable-next-line react-hooks/exhaustive-deps
3262
+ [canvas.objects, canvas.isLoading, canvas.lockLightMode]
3263
+ );
3264
+ return /* @__PURE__ */ jsx3(CanvasRefContext.Provider, { value: canvas.canvasRef, children: /* @__PURE__ */ jsx3(ViewViewportContext.Provider, { value: viewportValue, children: /* @__PURE__ */ jsx3(ViewStateContext.Provider, { value: stateValue, children }) }) });
3265
+ }
3266
+ function useViewCanvasContext() {
3267
+ const canvasRef = useContext3(CanvasRefContext);
3268
+ const viewport = useContext3(ViewViewportContext);
3269
+ const state = useContext3(ViewStateContext);
3270
+ if (canvasRef === null || viewport === null || state === null) {
3271
+ throw new Error(
3272
+ "useViewCanvasContext must be used within a <ViewCanvasProvider>"
3273
+ );
3274
+ }
3275
+ return useMemo5(
3276
+ () => ({ canvasRef, ...viewport, ...state }),
3277
+ [canvasRef, viewport, state]
3278
+ );
3279
+ }
3280
+ function useViewCanvasViewport() {
3281
+ const ctx = useContext3(ViewViewportContext);
3282
+ if (ctx === null) {
3283
+ throw new Error(
3284
+ "useViewCanvasViewport must be used within a <ViewCanvasProvider>"
3285
+ );
3286
+ }
3287
+ return ctx;
3288
+ }
3289
+ function useViewCanvasState() {
3290
+ const ctx = useContext3(ViewStateContext);
3291
+ if (ctx === null) {
3292
+ throw new Error(
3293
+ "useViewCanvasState must be used within a <ViewCanvasProvider>"
3294
+ );
3295
+ }
3296
+ return ctx;
3297
+ }
3298
+
3190
3299
  // src/overlay/ObjectOverlay.tsx
3191
3300
  import { useEffect as useEffect7, useRef as useRef7 } from "react";
3192
3301
  import { Stack } from "@mui/material";
@@ -3594,8 +3703,12 @@ export {
3594
3703
  useCanvasTooltip,
3595
3704
  useEditCanvas,
3596
3705
  useEditCanvasContext,
3706
+ useEditCanvasState,
3707
+ useEditCanvasViewport,
3597
3708
  useViewCanvas,
3598
3709
  useViewCanvasContext,
3710
+ useViewCanvasState,
3711
+ useViewCanvasViewport,
3599
3712
  util5 as util
3600
3713
  };
3601
3714
  //# sourceMappingURL=index.js.map