@bwp-web/canvas 0.4.0 → 0.4.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.
@@ -69,11 +69,18 @@ export interface ResizeImageOptions {
69
69
  * ```
70
70
  */
71
71
  export declare function resizeImageUrl(url: string, options?: ResizeImageOptions): Promise<ResizeResult>;
72
+ export interface SetBackgroundImageOptions extends ResizeImageOptions {
73
+ /** Preserve the current background opacity when replacing the image. */
74
+ preserveOpacity?: boolean;
75
+ }
72
76
  /**
73
77
  * Set an image URL as the canvas background image.
74
- * Pass `resize` options to downscale oversized images before loading;
75
- * omit to load the URL as-is.
78
+ *
79
+ * Pass options to control auto-resize (`maxSize`, `minSize`) and/or
80
+ * preserve the current background opacity when replacing the image.
81
+ * Omit to load the URL as-is without resizing.
82
+ *
76
83
  * Returns the created FabricImage for further manipulation.
77
84
  */
78
- export declare function setBackgroundImage(canvas: FabricCanvas, url: string, resize?: ResizeImageOptions): Promise<FabricImage>;
85
+ export declare function setBackgroundImage(canvas: FabricCanvas, url: string, options?: SetBackgroundImageOptions): Promise<FabricImage>;
79
86
  //# sourceMappingURL=background.d.ts.map
@@ -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;AAatE,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;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,GACd,IAAI,CAKN;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAGjE;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;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,WAAW,CAAC,CAUtB"}
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;AAatE,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;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,GACd,IAAI,CAKN;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAGjE;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,wEAAwE;IACxE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,WAAW,CAAC,CAmBtB"}
@@ -2,4 +2,10 @@ export { useEditCanvas } from './useEditCanvas';
2
2
  export type { UseEditCanvasOptions } from './useEditCanvas';
3
3
  export { useViewCanvas } from './useViewCanvas';
4
4
  export type { UseViewCanvasOptions, ViewObjectStyle } from './useViewCanvas';
5
+ export { useCanvasEvents } from './useCanvasEvents';
6
+ export type { CanvasEventHandlers } from './useCanvasEvents';
7
+ export { useCanvasTooltip } from './useCanvasTooltip';
8
+ export type { UseCanvasTooltipOptions, CanvasTooltipState, } from './useCanvasTooltip';
9
+ export { useCanvasClick } from './useCanvasClick';
10
+ export type { UseCanvasClickOptions } from './useCanvasClick';
5
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE7E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EACV,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { type RefObject } from 'react';
2
+ import type { Canvas as FabricCanvas, FabricObject } from 'fabric';
3
+ export interface UseCanvasClickOptions {
4
+ /** Maximum movement in pixels before the gesture is treated as a pan. Default: 5. */
5
+ threshold?: number;
6
+ /** Maximum duration in milliseconds for the gesture to count as a click. Default: 300. */
7
+ maxDuration?: number;
8
+ }
9
+ /**
10
+ * Distinguish clicks from pan gestures on a canvas.
11
+ *
12
+ * On view-mode canvases where pan is always active, a regular Fabric `mouse:up`
13
+ * fires for both clicks and drag-to-pan. This hook tracks pointer movement and
14
+ * timing to determine whether the user intended a click or a pan, then calls
15
+ * `onClick` only for genuine clicks.
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * useCanvasClick(view.canvasRef, (target) => {
20
+ * if (target?.data?.id) {
21
+ * navigate(`/locations/${target.data.id}`);
22
+ * }
23
+ * });
24
+ * ```
25
+ */
26
+ export declare function useCanvasClick(canvasRef: RefObject<FabricCanvas | null>, onClick: (target: FabricObject | undefined) => void, options?: UseCanvasClickOptions): void;
27
+ //# sourceMappingURL=useCanvasClick.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCanvasClick.d.ts","sourceRoot":"","sources":["../../src/hooks/useCanvasClick.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1D,OAAO,KAAK,EACV,MAAM,IAAI,YAAY,EAEtB,YAAY,EACb,MAAM,QAAQ,CAAC;AAEhB,MAAM,WAAW,qBAAqB;IACpC,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0FAA0F;IAC1F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,EACzC,OAAO,EAAE,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,KAAK,IAAI,EACnD,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CA2DN"}
@@ -0,0 +1,35 @@
1
+ import { type RefObject } from 'react';
2
+ import type { Canvas as FabricCanvas, CanvasEvents } from 'fabric';
3
+ /**
4
+ * A map of Fabric canvas event names to their handler functions.
5
+ *
6
+ * Each key is a valid `CanvasEvents` event name and each handler receives the
7
+ * correctly-typed event payload. Set a handler to `undefined` to skip it.
8
+ *
9
+ * Common events include:
10
+ * - `'object:added'`, `'object:removed'`, `'object:modified'`
11
+ * - `'mouse:over'`, `'mouse:out'`, `'mouse:down'`, `'mouse:up'`, `'mouse:move'`
12
+ * - `'mouse:wheel'`, `'after:render'`
13
+ * - `'selection:created'`, `'selection:updated'`, `'selection:cleared'`
14
+ */
15
+ export type CanvasEventHandlers = {
16
+ [K in keyof CanvasEvents]?: (event: CanvasEvents[K]) => void;
17
+ };
18
+ /**
19
+ * Subscribe to Fabric canvas events with automatic cleanup.
20
+ *
21
+ * Handlers are stored in a ref so they always call the latest version without
22
+ * re-subscribing. The hook subscribes once when the canvas becomes available
23
+ * (child `<Canvas>` effects fire before parent effects) and cleans up on unmount.
24
+ *
25
+ * @example
26
+ * ```tsx
27
+ * useCanvasEvents(editor.canvasRef, {
28
+ * 'object:added': (e) => updateList(),
29
+ * 'object:modified': () => setDirty(true),
30
+ * 'object:removed': () => updateList(),
31
+ * });
32
+ * ```
33
+ */
34
+ export declare function useCanvasEvents(canvasRef: RefObject<FabricCanvas | null>, events: CanvasEventHandlers): void;
35
+ //# sourceMappingURL=useCanvasEvents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCanvasEvents.d.ts","sourceRoot":"","sources":["../../src/hooks/useCanvasEvents.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;AAEnE;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,mBAAmB,GAAG;KAC/B,CAAC,IAAI,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI;CAC7D,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,EACzC,MAAM,EAAE,mBAAmB,GAC1B,IAAI,CA8BN"}
@@ -0,0 +1,45 @@
1
+ import { type RefObject } from 'react';
2
+ import type { Canvas as FabricCanvas, FabricObject } from 'fabric';
3
+ export interface UseCanvasTooltipOptions<T> {
4
+ /** Extract tooltip content from a hovered object. Return `null` to skip the tooltip. */
5
+ getContent: (obj: FabricObject) => T | null;
6
+ }
7
+ export interface CanvasTooltipState<T> {
8
+ /** Whether the tooltip is currently visible. */
9
+ visible: boolean;
10
+ /** The content extracted from the hovered object, or `null` when hidden. */
11
+ content: T | null;
12
+ /** Screen-space position (relative to the canvas container) for the tooltip. */
13
+ position: {
14
+ x: number;
15
+ y: number;
16
+ };
17
+ }
18
+ /**
19
+ * Track mouse hover over canvas objects and return tooltip state.
20
+ *
21
+ * Listens to `mouse:over`, `mouse:out`, `after:render`, and `mouse:wheel` to
22
+ * maintain a reactive tooltip state. The returned position is in screen-space
23
+ * coordinates relative to the canvas container element — suitable for absolute
24
+ * positioning of a tooltip component.
25
+ *
26
+ * @example
27
+ * ```tsx
28
+ * const tooltip = useCanvasTooltip(view.canvasRef, {
29
+ * getContent: (obj) => obj.data ? { id: obj.data.id, type: obj.data.type } : null,
30
+ * });
31
+ *
32
+ * return (
33
+ * <>
34
+ * <Canvas onReady={view.onReady} />
35
+ * {tooltip.visible && (
36
+ * <div style={{ position: 'absolute', left: tooltip.position.x, top: tooltip.position.y }}>
37
+ * {tooltip.content?.id}
38
+ * </div>
39
+ * )}
40
+ * </>
41
+ * );
42
+ * ```
43
+ */
44
+ export declare function useCanvasTooltip<T>(canvasRef: RefObject<FabricCanvas | null>, options: UseCanvasTooltipOptions<T>): CanvasTooltipState<T>;
45
+ //# sourceMappingURL=useCanvasTooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCanvasTooltip.d.ts","sourceRoot":"","sources":["../../src/hooks/useCanvasTooltip.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,KAAK,EACV,MAAM,IAAI,YAAY,EAEtB,YAAY,EACb,MAAM,QAAQ,CAAC;AAEhB,MAAM,WAAW,uBAAuB,CAAC,CAAC;IACxC,wFAAwF;IACxF,UAAU,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,CAAC,GAAG,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,4EAA4E;IAC5E,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;IAClB,gFAAgF;IAChF,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,SAAS,EAAE,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,EACzC,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAClC,kBAAkB,CAAC,CAAC,CAAC,CA0EvB"}
@@ -53,6 +53,12 @@ export interface UseEditCanvasOptions {
53
53
  * Pass `false` to disable. Default: enabled (maxSize: 4096, minSize: 480).
54
54
  */
55
55
  backgroundResize?: boolean | ResizeImageOptions;
56
+ /**
57
+ * Track object add/remove/modify events and expose an `isDirty` flag.
58
+ * Call `resetDirty()` after a successful save to clear the flag.
59
+ * Default: disabled.
60
+ */
61
+ trackChanges?: boolean;
56
62
  }
57
63
  /**
58
64
  * Hook that provides a batteries-included canvas experience with full
@@ -120,7 +126,16 @@ export declare function useEditCanvas(options?: UseEditCanvasOptions): {
120
126
  * Set a background image from a URL. Automatically resizes if the image
121
127
  * exceeds the configured limits (opt out via `backgroundResize: false`),
122
128
  * and fits the viewport after setting if `autoFitToBackground` is enabled.
129
+ *
130
+ * Pass `{ preserveOpacity: true }` to keep the current background opacity
131
+ * when replacing the image.
123
132
  */
124
- setBackground: (url: string) => Promise<import("fabric").FabricImage<Partial<import("fabric").ImageProps>, import("fabric").SerializedImageProps, import("fabric").ObjectEvents>>;
133
+ setBackground: (url: string, bgOpts?: {
134
+ preserveOpacity?: boolean;
135
+ }) => Promise<import("fabric").FabricImage<Partial<import("fabric").ImageProps>, import("fabric").SerializedImageProps, import("fabric").ObjectEvents>>;
136
+ /** Whether the canvas has been modified since the last `resetDirty()` call. Requires `trackChanges: true`. */
137
+ isDirty: boolean;
138
+ /** Reset the dirty flag (e.g., after a successful save). */
139
+ resetDirty: () => void;
125
140
  };
126
141
  //# 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;AAGzB,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,eAAe,CAAC;AACvB,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;CACjD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,oBAAoB;IA0NxD,8CAA8C;sBAlKrC,YAAY;IAoKrB,oDAAoD;;IAEpD,qCAAqC;;IAErC,6CAA6C;;IAE7C,yBAAyB;;QAEvB,wCAAwC;;QAExC,wDAAwD;wBA9CjB,YAAY;QAgDnD,wFAAwF;;QAExF,2DAA2D;;QAE3D,0DAA0D;;;IAG5D,+DAA+D;;IAE/D;;;;;;;;;;;;;;OAcG;qBAvO+B,SAAS,GAAG,IAAI;IAyOlD;;;;OAIG;yBAlEyC,MAAM;EAqErD"}
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;AAGzB,OAAO,EAGL,KAAK,kBAAkB,EAExB,MAAM,eAAe,CAAC;AACvB,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;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,oBAAoB;IAuOxD,8CAA8C;sBA9KrC,YAAY;IAgLrB,oDAAoD;;IAEpD,qCAAqC;;IAErC,6CAA6C;;IAE7C,yBAAyB;;QAEvB,wCAAwC;;QAExC,wDAAwD;wBAnDjB,YAAY;QAqDnD,wFAAwF;;QAExF,2DAA2D;;QAE3D,0DAA0D;;;IAG5D,+DAA+D;;IAE/D;;;;;;;;;;;;;;OAcG;qBAnP+B,SAAS,GAAG,IAAI;IAqPlD;;;;;;;OAOG;yBAzES,MAAM,WAAW;QAAE,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE;IA2E1D,8GAA8G;;IAE9G,4DAA4D;;EAG/D"}