@principal-ade/panels 1.0.53 → 1.0.54

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigurablePanelLayout.d.ts","sourceRoot":"","sources":["../../src/components/ConfigurablePanelLayout.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConfigurablePanelLayout.d.ts","sourceRoot":"","sources":["../../src/components/ConfigurablePanelLayout.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import { default as React, ReactNode } from 'react';
2
+ import { PanelBounds, PanelSlotPosition } from '../types';
3
+ /**
4
+ * Props for the PanelBoundsProvider component
5
+ */
6
+ export interface PanelBoundsProviderProps {
7
+ /** The slot position this provider is for */
8
+ slot: PanelSlotPosition;
9
+ /** Child components that will have access to panel bounds */
10
+ children: ReactNode;
11
+ }
12
+ /**
13
+ * Provider component that tracks and provides panel bounds to children
14
+ *
15
+ * This component wraps each panel slot's content in ConfigurablePanelLayout.
16
+ * It uses ResizeObserver and scroll/resize listeners to keep bounds up to date.
17
+ */
18
+ export declare const PanelBoundsProvider: React.FC<PanelBoundsProviderProps>;
19
+ /**
20
+ * Return type for usePanelBounds hook
21
+ */
22
+ export interface UsePanelBoundsReturn {
23
+ /** The current slot this panel is in (null if not in a panel) */
24
+ slot: PanelSlotPosition | null;
25
+ /** The bounds of this panel relative to the viewport */
26
+ bounds: PanelBounds;
27
+ /** Whether this hook is being used within a PanelBoundsProvider */
28
+ isInPanel: boolean;
29
+ }
30
+ /**
31
+ * Hook to access the current panel's viewport-relative bounds
32
+ *
33
+ * @example
34
+ * ```tsx
35
+ * const MyCanvasPanel: React.FC = () => {
36
+ * const { bounds, isInPanel } = usePanelBounds();
37
+ *
38
+ * // Use bounds.x and bounds.y to offset a viewport-sized canvas
39
+ * const canvasStyle = {
40
+ * position: 'absolute' as const,
41
+ * top: 0,
42
+ * left: 0,
43
+ * width: '100dvw',
44
+ * height: '100dvh',
45
+ * transform: `translate(${-bounds.x}px, ${-bounds.y}px)`,
46
+ * };
47
+ *
48
+ * return <canvas style={canvasStyle} />;
49
+ * };
50
+ * ```
51
+ */
52
+ export declare function usePanelBounds(): UsePanelBoundsReturn;
53
+ /**
54
+ * Hook to get just the panel offset (x, y) for convenience
55
+ *
56
+ * @example
57
+ * ```tsx
58
+ * const { offsetX, offsetY } = usePanelOffset();
59
+ * // Use to position a viewport-sized element at the viewport origin
60
+ * const style = { transform: `translate(${-offsetX}px, ${-offsetY}px)` };
61
+ * ```
62
+ */
63
+ export declare function usePanelOffset(): {
64
+ offsetX: number;
65
+ offsetY: number;
66
+ };
67
+ //# sourceMappingURL=usePanelBounds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePanelBounds.d.ts","sourceRoot":"","sources":["../../src/hooks/usePanelBounds.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,EAOZ,SAAS,EACV,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EAElB,MAAM,UAAU,CAAC;AAelB;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,6CAA6C;IAC7C,IAAI,EAAE,iBAAiB,CAAC;IACxB,6DAA6D;IAC7D,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CA8DlE,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,iEAAiE;IACjE,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC/B,wDAAwD;IACxD,MAAM,EAAE,WAAW,CAAC;IACpB,mEAAmE;IACnE,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,cAAc,IAAI,oBAAoB,CAgBrD;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAMrE"}
package/dist/index.d.ts CHANGED
@@ -6,8 +6,9 @@ export { EditableConfigurablePanelLayout, type EditableConfigurablePanelLayoutPr
6
6
  export { PanelConfigurator, type PanelConfiguratorProps, type PanelDefinition, type PanelLayout, type PanelSlot, type PanelGroup, type TabsConfig, type TilesConfig } from './components/PanelConfigurator';
7
7
  export { TabGroup, type TabGroupProps } from './components/TabGroup';
8
8
  export { SnapCarousel, type SnapCarouselProps, type SnapCarouselRef } from './components/SnapCarousel';
9
- export type { PanelOrientation, CollapsibleSide, ThemeMode, AnimationConfig, CollapseButtonConfig, PanelCallbacks, } from './types';
9
+ export type { PanelOrientation, CollapsibleSide, ThemeMode, AnimationConfig, CollapseButtonConfig, PanelCallbacks, PanelSlotPosition, PanelBounds, PanelBoundsContextValue, } from './types';
10
10
  export { type Theme } from '@principal-ade/industry-theme';
11
11
  export { mapThemeToPanelVars, mapThemeToTabVars } from './utils/themeMapping';
12
12
  export { useMediaQuery } from './hooks/useMediaQuery';
13
+ export { PanelBoundsProvider, usePanelBounds, usePanelOffset, type PanelBoundsProviderProps, type UsePanelBoundsReturn, } from './hooks/usePanelBounds';
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,KAAK,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAClH,OAAO,EAAE,sBAAsB,EAAE,KAAK,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAC/G,OAAO,EAAE,uBAAuB,EAAE,KAAK,4BAA4B,EAAE,KAAK,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AACnJ,OAAO,EAAE,iCAAiC,EAAE,KAAK,sCAAsC,EAAE,MAAM,gDAAgD,CAAC;AAChJ,OAAO,EAAE,+BAA+B,EAAE,KAAK,oCAAoC,EAAE,MAAM,8CAA8C,CAAC;AAC1I,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC5M,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAGvG,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,cAAc,GACf,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9E,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,KAAK,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAClH,OAAO,EAAE,sBAAsB,EAAE,KAAK,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAC/G,OAAO,EAAE,uBAAuB,EAAE,KAAK,4BAA4B,EAAE,KAAK,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AACnJ,OAAO,EAAE,iCAAiC,EAAE,KAAK,sCAAsC,EAAE,MAAM,gDAAgD,CAAC;AAChJ,OAAO,EAAE,+BAA+B,EAAE,KAAK,oCAAoC,EAAE,MAAM,8CAA8C,CAAC;AAC1I,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC5M,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAGvG,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,cAAc,EAEd,iBAAiB,EACjB,WAAW,EACX,uBAAuB,GACxB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9E,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,GAC1B,MAAM,wBAAwB,CAAC"}
package/dist/index.esm.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
- import React, { useState, useRef, useCallback, useEffect, forwardRef, useImperativeHandle, useMemo, useLayoutEffect, createContext, memo, useReducer, useContext } from "react";
2
+ import React, { useState, useRef, useCallback, useEffect, createContext, useContext, forwardRef, useImperativeHandle, useMemo, useLayoutEffect, memo, useReducer } from "react";
3
3
  import { PanelGroup, Panel, PanelResizeHandle } from "react-resizable-panels";
4
4
  import { flushSync, unstable_batchedUpdates, createPortal } from "react-dom";
5
5
  import { useTheme } from "@principal-ade/industry-theme";
@@ -653,6 +653,85 @@ const TabGroup = ({
653
653
  !hideTabList && (tabPosition === "bottom" || tabPosition === "right") && tabList
654
654
  ] });
655
655
  };
656
+ const DEFAULT_BOUNDS = {
657
+ x: 0,
658
+ y: 0,
659
+ width: 0,
660
+ height: 0
661
+ };
662
+ const PanelBoundsContext = createContext(null);
663
+ const PanelBoundsProvider = ({
664
+ slot,
665
+ children
666
+ }) => {
667
+ const containerRef = useRef(null);
668
+ const [bounds, setBounds] = useState(DEFAULT_BOUNDS);
669
+ const updateBounds = useCallback(() => {
670
+ if (containerRef.current) {
671
+ const rect = containerRef.current.getBoundingClientRect();
672
+ setBounds({
673
+ x: rect.left,
674
+ y: rect.top,
675
+ width: rect.width,
676
+ height: rect.height
677
+ });
678
+ }
679
+ }, []);
680
+ useEffect(() => {
681
+ const container = containerRef.current;
682
+ if (!container) return;
683
+ updateBounds();
684
+ const resizeObserver = new ResizeObserver(() => {
685
+ updateBounds();
686
+ });
687
+ resizeObserver.observe(container);
688
+ window.addEventListener("resize", updateBounds);
689
+ window.addEventListener("scroll", updateBounds, true);
690
+ return () => {
691
+ resizeObserver.disconnect();
692
+ window.removeEventListener("resize", updateBounds);
693
+ window.removeEventListener("scroll", updateBounds, true);
694
+ };
695
+ }, [updateBounds]);
696
+ const contextValue = {
697
+ slot,
698
+ bounds
699
+ };
700
+ return /* @__PURE__ */ jsx(PanelBoundsContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
701
+ "div",
702
+ {
703
+ ref: containerRef,
704
+ className: "panel-bounds-container",
705
+ style: {
706
+ width: "100%",
707
+ height: "100%"
708
+ },
709
+ children
710
+ }
711
+ ) });
712
+ };
713
+ function usePanelBounds() {
714
+ const context = useContext(PanelBoundsContext);
715
+ if (!context) {
716
+ return {
717
+ slot: null,
718
+ bounds: DEFAULT_BOUNDS,
719
+ isInPanel: false
720
+ };
721
+ }
722
+ return {
723
+ slot: context.slot,
724
+ bounds: context.bounds,
725
+ isInPanel: true
726
+ };
727
+ }
728
+ function usePanelOffset() {
729
+ const { bounds } = usePanelBounds();
730
+ return {
731
+ offsetX: bounds.x,
732
+ offsetY: bounds.y
733
+ };
734
+ }
656
735
  const ConfigurablePanelLayout = ({
657
736
  panels,
658
737
  layout,
@@ -1390,7 +1469,7 @@ const ConfigurablePanelLayout = ({
1390
1469
  opacity: leftCollapsed ? 0 : 1,
1391
1470
  transition: leftAnimating ? `opacity ${animationDuration * 0.5}ms ${animationEasing}` : "none"
1392
1471
  },
1393
- children: leftPanel
1472
+ children: /* @__PURE__ */ jsx(PanelBoundsProvider, { slot: "left", children: leftPanel })
1394
1473
  }
1395
1474
  )
1396
1475
  }
@@ -1435,7 +1514,7 @@ const ConfigurablePanelLayout = ({
1435
1514
  opacity: middleCollapsed ? 0 : 1,
1436
1515
  transition: middleAnimating ? `opacity ${animationDuration * 0.5}ms ${animationEasing}` : "none"
1437
1516
  },
1438
- children: middlePanel
1517
+ children: /* @__PURE__ */ jsx(PanelBoundsProvider, { slot: "middle", children: middlePanel })
1439
1518
  }
1440
1519
  )
1441
1520
  }
@@ -1480,7 +1559,7 @@ const ConfigurablePanelLayout = ({
1480
1559
  opacity: rightCollapsed ? 0 : 1,
1481
1560
  transition: rightAnimating ? `opacity ${animationDuration * 0.5}ms ${animationEasing}` : "none"
1482
1561
  },
1483
- children: rightPanel
1562
+ children: /* @__PURE__ */ jsx(PanelBoundsProvider, { slot: "right", children: rightPanel })
1484
1563
  }
1485
1564
  )
1486
1565
  }
@@ -3737,9 +3816,9 @@ function useResizeObserver(_ref) {
3737
3816
  return void 0;
3738
3817
  }
3739
3818
  const {
3740
- ResizeObserver
3819
+ ResizeObserver: ResizeObserver2
3741
3820
  } = window;
3742
- return new ResizeObserver(handleResize);
3821
+ return new ResizeObserver2(handleResize);
3743
3822
  },
3744
3823
  // eslint-disable-next-line react-hooks/exhaustive-deps
3745
3824
  [disabled]
@@ -5604,12 +5683,15 @@ export {
5604
5683
  AnimatedVerticalLayout,
5605
5684
  ConfigurablePanelLayout,
5606
5685
  EditableConfigurablePanelLayout,
5686
+ PanelBoundsProvider,
5607
5687
  PanelConfigurator,
5608
5688
  ResponsiveConfigurablePanelLayout,
5609
5689
  SnapCarousel,
5610
5690
  TabGroup,
5611
5691
  mapThemeToPanelVars,
5612
5692
  mapThemeToTabVars,
5613
- useMediaQuery
5693
+ useMediaQuery,
5694
+ usePanelBounds,
5695
+ usePanelOffset
5614
5696
  };
5615
5697
  //# sourceMappingURL=index.esm.js.map