@bwp-web/canvas 0.8.3 → 0.9.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/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
@@ -2980,59 +2980,16 @@ function useViewCanvas(options) {
2980
2980
  // src/hooks/useCanvasEvents.ts
2981
2981
  import { useEffect as useEffect4, useRef as useRef4 } from "react";
2982
2982
 
2983
- // src/context/ViewCanvasContext.tsx
2983
+ // src/context/CanvasRefContext.ts
2984
2984
  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);
2985
+ var CanvasRefContext = createContext(null);
2986
+ function useCanvasRefContext() {
2987
+ return useContext(CanvasRefContext);
3029
2988
  }
3030
2989
 
3031
2990
  // src/context/useCanvasRef.ts
3032
2991
  function useCanvasRef() {
3033
- const viewCtx = useViewCanvasContextSafe();
3034
- const editCtx = useEditCanvasContextSafe();
3035
- return viewCtx?.canvasRef ?? editCtx?.canvasRef ?? null;
2992
+ return useCanvasRefContext();
3036
2993
  }
3037
2994
 
3038
2995
  // src/hooks/useCanvasEvents.ts
@@ -3187,6 +3144,149 @@ function useCanvasClick(canvasRefOrOnClick, onClickOrOptions, maybeOptions) {
3187
3144
  }, [resolvedCanvasRef]);
3188
3145
  }
3189
3146
 
3147
+ // src/context/EditCanvasContext.tsx
3148
+ import { createContext as createContext2, useContext as useContext2, useMemo as useMemo4 } from "react";
3149
+ import { jsx as jsx2 } from "react/jsx-runtime";
3150
+ var EditViewportContext = createContext2(null);
3151
+ var EditStateContext = createContext2(null);
3152
+ function EditCanvasProvider({
3153
+ options,
3154
+ children
3155
+ }) {
3156
+ const canvas = useEditCanvas(options);
3157
+ const viewportValue = useMemo4(
3158
+ () => ({ zoom: canvas.zoom, viewport: canvas.viewport }),
3159
+ [canvas.zoom, canvas.viewport]
3160
+ );
3161
+ const stateValue = useMemo4(
3162
+ () => ({
3163
+ onReady: canvas.onReady,
3164
+ objects: canvas.objects,
3165
+ isLoading: canvas.isLoading,
3166
+ selected: canvas.selected,
3167
+ isEditingVertices: canvas.isEditingVertices,
3168
+ setMode: canvas.setMode,
3169
+ setBackground: canvas.setBackground,
3170
+ isDirty: canvas.isDirty,
3171
+ resetDirty: canvas.resetDirty,
3172
+ markDirty: canvas.markDirty,
3173
+ undo: canvas.undo,
3174
+ redo: canvas.redo,
3175
+ canUndo: canvas.canUndo,
3176
+ canRedo: canvas.canRedo,
3177
+ lockLightMode: canvas.lockLightMode,
3178
+ setLockLightMode: canvas.setLockLightMode
3179
+ }),
3180
+ // Only reactive state — stable callbacks omitted
3181
+ // eslint-disable-next-line react-hooks/exhaustive-deps
3182
+ [
3183
+ canvas.objects,
3184
+ canvas.isLoading,
3185
+ canvas.selected,
3186
+ canvas.isEditingVertices,
3187
+ canvas.isDirty,
3188
+ canvas.canUndo,
3189
+ canvas.canRedo,
3190
+ canvas.lockLightMode
3191
+ ]
3192
+ );
3193
+ return /* @__PURE__ */ jsx2(CanvasRefContext.Provider, { value: canvas.canvasRef, children: /* @__PURE__ */ jsx2(EditViewportContext.Provider, { value: viewportValue, children: /* @__PURE__ */ jsx2(EditStateContext.Provider, { value: stateValue, children }) }) });
3194
+ }
3195
+ function useEditCanvasContext() {
3196
+ const canvasRef = useContext2(CanvasRefContext);
3197
+ const viewport = useContext2(EditViewportContext);
3198
+ const state = useContext2(EditStateContext);
3199
+ if (canvasRef === null || viewport === null || state === null) {
3200
+ throw new Error(
3201
+ "useEditCanvasContext must be used within an <EditCanvasProvider>"
3202
+ );
3203
+ }
3204
+ return useMemo4(
3205
+ () => ({ canvasRef, ...viewport, ...state }),
3206
+ [canvasRef, viewport, state]
3207
+ );
3208
+ }
3209
+ function useEditCanvasViewport() {
3210
+ const ctx = useContext2(EditViewportContext);
3211
+ if (ctx === null) {
3212
+ throw new Error(
3213
+ "useEditCanvasViewport must be used within an <EditCanvasProvider>"
3214
+ );
3215
+ }
3216
+ return ctx;
3217
+ }
3218
+ function useEditCanvasState() {
3219
+ const ctx = useContext2(EditStateContext);
3220
+ if (ctx === null) {
3221
+ throw new Error(
3222
+ "useEditCanvasState must be used within an <EditCanvasProvider>"
3223
+ );
3224
+ }
3225
+ return ctx;
3226
+ }
3227
+
3228
+ // src/context/ViewCanvasContext.tsx
3229
+ import { createContext as createContext3, useContext as useContext3, useMemo as useMemo5 } from "react";
3230
+ import { jsx as jsx3 } from "react/jsx-runtime";
3231
+ var ViewViewportContext = createContext3(null);
3232
+ var ViewStateContext = createContext3(null);
3233
+ function ViewCanvasProvider({
3234
+ options,
3235
+ children
3236
+ }) {
3237
+ const canvas = useViewCanvas(options);
3238
+ const viewportValue = useMemo5(
3239
+ () => ({ zoom: canvas.zoom, viewport: canvas.viewport }),
3240
+ [canvas.zoom, canvas.viewport]
3241
+ );
3242
+ const stateValue = useMemo5(
3243
+ () => ({
3244
+ onReady: canvas.onReady,
3245
+ objects: canvas.objects,
3246
+ isLoading: canvas.isLoading,
3247
+ setObjectStyle: canvas.setObjectStyle,
3248
+ setObjectStyles: canvas.setObjectStyles,
3249
+ setObjectStyleByType: canvas.setObjectStyleByType
3250
+ }),
3251
+ // Only reactive state — stable callbacks omitted
3252
+ // eslint-disable-next-line react-hooks/exhaustive-deps
3253
+ [canvas.objects, canvas.isLoading]
3254
+ );
3255
+ return /* @__PURE__ */ jsx3(CanvasRefContext.Provider, { value: canvas.canvasRef, children: /* @__PURE__ */ jsx3(ViewViewportContext.Provider, { value: viewportValue, children: /* @__PURE__ */ jsx3(ViewStateContext.Provider, { value: stateValue, children }) }) });
3256
+ }
3257
+ function useViewCanvasContext() {
3258
+ const canvasRef = useContext3(CanvasRefContext);
3259
+ const viewport = useContext3(ViewViewportContext);
3260
+ const state = useContext3(ViewStateContext);
3261
+ if (canvasRef === null || viewport === null || state === null) {
3262
+ throw new Error(
3263
+ "useViewCanvasContext must be used within a <ViewCanvasProvider>"
3264
+ );
3265
+ }
3266
+ return useMemo5(
3267
+ () => ({ canvasRef, ...viewport, ...state }),
3268
+ [canvasRef, viewport, state]
3269
+ );
3270
+ }
3271
+ function useViewCanvasViewport() {
3272
+ const ctx = useContext3(ViewViewportContext);
3273
+ if (ctx === null) {
3274
+ throw new Error(
3275
+ "useViewCanvasViewport must be used within a <ViewCanvasProvider>"
3276
+ );
3277
+ }
3278
+ return ctx;
3279
+ }
3280
+ function useViewCanvasState() {
3281
+ const ctx = useContext3(ViewStateContext);
3282
+ if (ctx === null) {
3283
+ throw new Error(
3284
+ "useViewCanvasState must be used within a <ViewCanvasProvider>"
3285
+ );
3286
+ }
3287
+ return ctx;
3288
+ }
3289
+
3190
3290
  // src/overlay/ObjectOverlay.tsx
3191
3291
  import { useEffect as useEffect7, useRef as useRef7 } from "react";
3192
3292
  import { Stack } from "@mui/material";
@@ -3594,8 +3694,12 @@ export {
3594
3694
  useCanvasTooltip,
3595
3695
  useEditCanvas,
3596
3696
  useEditCanvasContext,
3697
+ useEditCanvasState,
3698
+ useEditCanvasViewport,
3597
3699
  useViewCanvas,
3598
3700
  useViewCanvasContext,
3701
+ useViewCanvasState,
3702
+ useViewCanvasViewport,
3599
3703
  util5 as util
3600
3704
  };
3601
3705
  //# sourceMappingURL=index.js.map