@kushagradhawan/kookie-ui 0.1.72 → 0.1.74
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/components.css +6 -2
- package/dist/cjs/components/_internal/shell-bottom.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-bottom.js +1 -1
- package/dist/cjs/components/_internal/shell-bottom.js.map +3 -3
- package/dist/cjs/components/_internal/shell-handles.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-handles.js +1 -1
- package/dist/cjs/components/_internal/shell-handles.js.map +3 -3
- package/dist/cjs/components/_internal/shell-inspector.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-inspector.js +1 -1
- package/dist/cjs/components/_internal/shell-inspector.js.map +3 -3
- package/dist/cjs/components/_internal/shell-sidebar.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
- package/dist/cjs/components/_internal/shell-sidebar.js.map +3 -3
- package/dist/cjs/components/shell.d.ts.map +1 -1
- package/dist/cjs/components/shell.js +1 -1
- package/dist/cjs/components/shell.js.map +3 -3
- package/dist/cjs/helpers/index.d.ts +1 -0
- package/dist/cjs/helpers/index.d.ts.map +1 -1
- package/dist/cjs/helpers/index.js +1 -1
- package/dist/cjs/helpers/index.js.map +2 -2
- package/dist/cjs/helpers/normalize-to-px.d.ts +10 -0
- package/dist/cjs/helpers/normalize-to-px.d.ts.map +1 -0
- package/dist/cjs/helpers/normalize-to-px.js +2 -0
- package/dist/cjs/helpers/normalize-to-px.js.map +7 -0
- package/dist/esm/components/_internal/shell-bottom.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-bottom.js +1 -1
- package/dist/esm/components/_internal/shell-bottom.js.map +3 -3
- package/dist/esm/components/_internal/shell-handles.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-handles.js +1 -1
- package/dist/esm/components/_internal/shell-handles.js.map +3 -3
- package/dist/esm/components/_internal/shell-inspector.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-inspector.js +1 -1
- package/dist/esm/components/_internal/shell-inspector.js.map +3 -3
- package/dist/esm/components/_internal/shell-sidebar.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-sidebar.js +1 -1
- package/dist/esm/components/_internal/shell-sidebar.js.map +3 -3
- package/dist/esm/components/shell.d.ts.map +1 -1
- package/dist/esm/components/shell.js +1 -1
- package/dist/esm/components/shell.js.map +3 -3
- package/dist/esm/helpers/index.d.ts +1 -0
- package/dist/esm/helpers/index.d.ts.map +1 -1
- package/dist/esm/helpers/index.js +1 -1
- package/dist/esm/helpers/index.js.map +2 -2
- package/dist/esm/helpers/normalize-to-px.d.ts +10 -0
- package/dist/esm/helpers/normalize-to-px.d.ts.map +1 -0
- package/dist/esm/helpers/normalize-to-px.js +2 -0
- package/dist/esm/helpers/normalize-to-px.js.map +7 -0
- package/package.json +1 -1
- package/schemas/base-button.json +1 -1
- package/schemas/button.json +1 -1
- package/schemas/icon-button.json +1 -1
- package/schemas/index.json +6 -6
- package/schemas/toggle-button.json +1 -1
- package/schemas/toggle-icon-button.json +1 -1
- package/src/components/_internal/shell-bottom.tsx +60 -30
- package/src/components/_internal/shell-handles.tsx +6 -1
- package/src/components/_internal/shell-inspector.tsx +60 -30
- package/src/components/_internal/shell-sidebar.tsx +62 -31
- package/src/components/shell.css +10 -11
- package/src/components/shell.tsx +83 -32
- package/src/helpers/index.ts +1 -0
- package/src/helpers/normalize-to-px.ts +42 -0
- package/styles.css +6 -2
package/components.css
CHANGED
|
@@ -17080,10 +17080,12 @@
|
|
|
17080
17080
|
}
|
|
17081
17081
|
.rt-ShellSidebar[data-mode='collapsed'] {
|
|
17082
17082
|
width: 0px;
|
|
17083
|
-
transition-delay: var(--motion-duration-small);
|
|
17084
17083
|
position: absolute;
|
|
17085
17084
|
inset-block: 0;
|
|
17086
17085
|
inset-inline-start: 0;
|
|
17086
|
+
flex-shrink: 0;
|
|
17087
|
+
flex-basis: 0;
|
|
17088
|
+
transition-delay: var(--motion-duration-small);
|
|
17087
17089
|
}
|
|
17088
17090
|
.rt-ShellSidebarContent {
|
|
17089
17091
|
display: flex;
|
|
@@ -17151,10 +17153,12 @@
|
|
|
17151
17153
|
}
|
|
17152
17154
|
.rt-ShellInspector[data-mode='collapsed'] {
|
|
17153
17155
|
width: 0px;
|
|
17154
|
-
transition-delay: var(--motion-duration-small);
|
|
17155
17156
|
position: absolute;
|
|
17156
17157
|
inset-block: 0;
|
|
17157
17158
|
inset-inline-end: 0;
|
|
17159
|
+
flex-shrink: 0;
|
|
17160
|
+
flex-basis: 0;
|
|
17161
|
+
transition-delay: var(--motion-duration-small);
|
|
17158
17162
|
}
|
|
17159
17163
|
.rt-ShellInspectorContent {
|
|
17160
17164
|
display: flex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-bottom.d.ts","sourceRoot":"","sources":["../../../../src/components/_internal/shell-bottom.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAE,YAAY,EAAc,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAyD,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"shell-bottom.d.ts","sourceRoot":"","sources":["../../../../src/components/_internal/shell-bottom.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAE,YAAY,EAAc,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAyD,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAI1H,KAAK,oBAAoB,GAAG;IAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAA;CAAE,CAAC;AACzE,KAAK,qBAAqB,GAAG;IAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAC/K,KAAK,uBAAuB,GAAG;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAC3I,KAAK,yBAAyB,GAAG;IAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAChF,KAAK,2BAA2B,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AACnF,KAAK,oBAAoB,GAAG;IAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAA;CAAE,CAAC;AACzE,KAAK,iBAAiB,GAAG,aAAa,GACpC,CAAC,qBAAqB,GAAG,uBAAuB,CAAC,GACjD,CAAC,yBAAyB,GAAG,2BAA2B,CAAC,GAAG;IAC1D,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAClE,UAAU,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEJ,KAAK,eAAe,GAAG,KAAK,CAAC,yBAAyB,CAAC,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,OAAO,YAAY,CAAA;CAAE,CAAC;AAgBlJ,eAAO,MAAM,MAAM,EA2Vb,eAAe,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var Se=Object.create;var C=Object.defineProperty;var xe=Object.getOwnPropertyDescriptor;var Ce=Object.getOwnPropertyNames;var ge=Object.getPrototypeOf,ve=Object.prototype.hasOwnProperty;var Ee=(s,i)=>{for(var l in i)C(s,l,{get:i[l],enumerable:!0})},te=(s,i,l,P)=>{if(i&&typeof i=="object"||typeof i=="function")for(let d of Ce(i))!ve.call(s,d)&&d!==l&&C(s,d,{get:()=>i[d],enumerable:!(P=xe(i,d))||P.enumerable});return s};var $=(s,i,l)=>(l=s!=null?Se(ge(s)):{},te(i||!s||!s.__esModule?C(l,"default",{value:s,enumerable:!0}):l,s)),Oe=s=>te(C({},"__esModule",{value:!0}),s);var Ne={};Ee(Ne,{Bottom:()=>A});module.exports=Oe(Ne);var t=$(require("react")),oe=$(require("classnames")),L=$(require("../sheet.js")),ne=require("../visually-hidden.js"),re=require("../shell.context.js"),g=require("../shell.hooks.js"),se=require("./shell-resize.js"),b=require("./shell-handles.js"),we=require("../shell.types.js"),z=require("./shell-prop-helpers.js"),ie=require("../../helpers/normalize-to-px.js");const Te=["className","children","defaultOpen","open","onOpenChange","size","defaultSize","onSizeChange","sizeUpdate","sizeUpdateMs","style"],A=t.forwardRef((s,i)=>{const{className:l,presentation:P="fixed",defaultOpen:d,open:u,onOpenChange:y,expandedSize:v=200,minSize:c=100,maxSize:m=400,resizable:E=!1,collapsible:ae=!0,onExpand:j,onCollapse:F,onResize:O,onResizeStart:le,onResizeEnd:de,snapPoints:ue,snapTolerance:pe,collapseThreshold:ce,paneId:T,persistence:N,children:me,style:fe,size:q,defaultSize:K,onSizeChange:k,sizeUpdate:w,sizeUpdateMs:D=50}=s,be=(0,z.extractPaneDomProps)(s,Te),o=(0,re.useShell)(),V=(0,g.useResponsivePresentation)(P),B=V==="overlay",ye=V==="stacked",p=t.useRef(null),he=t.useCallback(e=>{p.current=e,typeof i=="function"?i(e):i&&(i.current=e)},[i]),Y=t.Children.toArray(me),G=Y.filter(e=>t.isValidElement(e)&&e.type===b.BottomHandle),J=Y.filter(e=>!(t.isValidElement(e)&&e.type===b.BottomHandle)),ze=t.useMemo(()=>(0,z.mapResponsiveBooleanToPaneMode)(u),[u]),Pe=t.useMemo(()=>(0,z.mapResponsiveBooleanToPaneMode)(d),[d]),Be=typeof u=="object"&&u!==null;(0,g.useResponsiveInitialState)({controlledValue:ze,defaultValue:Pe,currentValue:o.bottomMode,setValue:o.setBottomMode,breakpointReady:o.currentBreakpointReady,controlledIsResponsive:Be,onResponsiveChange:e=>y?.(e==="expanded",{reason:"responsive"}),onInit:e=>{typeof u>"u"&&y?.(e==="expanded",{reason:"init"})}});const f=t.useRef(null);t.useEffect(()=>()=>{f.current&&(clearTimeout(f.current),f.current=null)},[k,w,D]);const M=t.useMemo(()=>{const e=k,r=w,a=D??50;if(!e)return()=>{};if(r==="debounce")return(n,h)=>{f.current&&clearTimeout(f.current),f.current=setTimeout(()=>{e(n,h),f.current=null},a)};if(r==="throttle"){let n=0;return(h,Re)=>{const ee=Date.now();ee-n>=a&&(n=ee,e(h,Re))}}return(n,h)=>e(n,h)},[k,w,D]),R=t.useRef(null);t.useEffect(()=>{const e=typeof u<"u";if(R.current===null){R.current=e;return}R.current!==e&&(console.warn("Shell.Bottom: Switching between controlled and uncontrolled `open` is not supported."),R.current=e)},[u]);const Q=t.useRef(!1),H=t.useRef(null);t.useEffect(()=>{!Q.current&&typeof u>"u"&&d&&o.bottomMode==="expanded"&&(y?.(!0,{reason:"init"}),Q.current=!0),typeof u>"u"&&(H.current!==null&&H.current!==o.bottomMode&&y?.(o.bottomMode==="expanded",{reason:"toggle"}),H.current=o.bottomMode)},[o.bottomMode,u,d,y]);const W=t.useRef(j),X=t.useRef(F);t.useLayoutEffect(()=>{W.current=j,X.current=F});const S=t.useRef(null),Z=t.useRef(!1);t.useEffect(()=>{const e=o.bottomMode;if(!o.currentBreakpointReady){S.current=e;return}if(!Z.current){Z.current=!0,S.current=e;return}const r=S.current;r!==null&&r!==e&&(e==="expanded"?W.current?.():e==="collapsed"&&X.current?.(),S.current=e)},[o.bottomMode,o.currentBreakpointReady]);const U=o.bottomMode==="expanded",x=t.useMemo(()=>{if(!T||N)return N;const e=`kookie-ui:shell:bottom:${T}`;return{load:()=>{if(!(typeof window>"u"))try{const a=window.localStorage.getItem(e);return a?Number(a):void 0}catch{return}},save:a=>{if(!(typeof window>"u"))try{window.localStorage.setItem(e,String(a))}catch{}}}},[T,N]);t.useEffect(()=>{let e=!0;if(!E||!x?.load||B)return;const r=x.load(),a=n=>{!e||typeof n!="number"||!p.current||(p.current.style.setProperty("--bottom-size",`${n}px`),O?.(n))};return r instanceof Promise?r.then(a).catch(n=>{}):a(r),()=>{e=!1}},[E,x,O,B]);const Me=E&&!B&&U?t.createElement(se.PaneResizeContext.Provider,{value:{containerRef:p,cssVarName:"--bottom-size",minSize:c,maxSize:m,defaultSize:v,orientation:"horizontal",edge:"start",computeNext:(e,r,a)=>{const n=e-r;return a-n},onResize:O,onResizeStart:le,onResizeEnd:e=>{de?.(e),M(e,{reason:"resize"}),x?.save?.(e)},target:"bottom",collapsible:ae,snapPoints:ue,snapTolerance:pe??8,collapseThreshold:ce,requestCollapse:()=>o.setBottomMode("collapsed"),requestToggle:()=>o.togglePane("bottom")}},G.length>0?G.map((e,r)=>t.cloneElement(e,{key:e.key??r})):t.createElement(b.PaneHandle,null)):null,I=t.useCallback(e=>(0,ie.normalizeToPx)(e,"vertical"),[]);t.useEffect(()=>{if(p.current&&typeof q>"u"&&typeof K<"u"){const e=I(K);if(typeof e=="number"&&Number.isFinite(e)){const n=Math.min((typeof m=="number"?m:void 0)??e,Math.max((typeof c=="number"?c:void 0)??e,e));p.current.style.setProperty("--bottom-size",`${n}px`),M(n,{reason:"init"})}}},[]);const _=q;if(t.useEffect(()=>{if(!p.current||typeof _>"u")return;const e=I(_);if(typeof e=="number"&&Number.isFinite(e)){const n=Math.min((typeof m=="number"?m:void 0)??e,Math.max((typeof c=="number"?c:void 0)??e,e));p.current.style.setProperty("--bottom-size",`${n}px`),M(n,{reason:"controlled"})}},[_,c,m,I,M]),B){const e=o.bottomMode==="expanded";return t.createElement(L.Root,{open:e,onOpenChange:r=>o.setBottomMode(r?"expanded":"collapsed")},t.createElement(L.Content,{side:"bottom",style:{padding:0},height:{initial:`${v}px`}},t.createElement(ne.VisuallyHidden,null,t.createElement(L.Title,null,"Bottom panel")),J))}return t.createElement("div",{...be,ref:he,className:(0,oe.default)("rt-ShellBottom",l),"data-mode":o.bottomMode,"data-peek":o.peekTarget==="bottom"||void 0,"data-presentation":o.currentBreakpointReady?V:void 0,"data-open":o.currentBreakpointReady&&ye&&U||void 0,style:{...fe,"--bottom-size":`${v}px`,"--bottom-min-size":`${c}px`,"--bottom-max-size":`${m}px`}},t.createElement("div",{className:"rt-ShellBottomContent","data-visible":U||void 0},J),Me)});A.displayName="Shell.Bottom",A.Handle=b.BottomHandle;
|
|
2
2
|
//# sourceMappingURL=shell-bottom.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/components/_internal/shell-bottom.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport * as Sheet from '../sheet.js';\nimport { VisuallyHidden } from '../visually-hidden.js';\nimport { useShell } from '../shell.context.js';\nimport { useResponsivePresentation, useResponsiveInitialState } from '../shell.hooks.js';\nimport { PaneResizeContext } from './shell-resize.js';\nimport { BottomHandle, PaneHandle } from './shell-handles.js';\nimport { _BREAKPOINTS } from '../shell.types.js';\nimport type { Breakpoint, PaneMode, PaneSizePersistence, ResponsivePresentation, PaneBaseProps } from '../shell.types.js';\nimport { extractPaneDomProps, mapResponsiveBooleanToPaneMode } from './shell-prop-helpers.js';\n\ntype BottomOpenChangeMeta = { reason: 'init' | 'toggle' | 'responsive' };\ntype BottomControlledProps = { open: boolean | Partial<Record<Breakpoint, boolean>>; onOpenChange?: (open: boolean, meta: BottomOpenChangeMeta) => void; defaultOpen?: never };\ntype BottomUncontrolledProps = { defaultOpen?: boolean; onOpenChange?: (open: boolean, meta: BottomOpenChangeMeta) => void; open?: never };\ntype BottomSizeControlledProps = { size: number | string; defaultSize?: never };\ntype BottomSizeUncontrolledProps = { defaultSize?: number | string; size?: never };\ntype BottomSizeChangeMeta = { reason: 'init' | 'resize' | 'controlled' };\ntype BottomPublicProps = PaneBaseProps &\n (BottomControlledProps | BottomUncontrolledProps) &\n (BottomSizeControlledProps | BottomSizeUncontrolledProps) & {\n onSizeChange?: (size: number, meta: BottomSizeChangeMeta) => void;\n sizeUpdate?: 'throttle' | 'debounce';\n sizeUpdateMs?: number;\n };\n\ntype BottomComponent = React.ForwardRefExoticComponent<BottomPublicProps & React.RefAttributes<HTMLDivElement>> & { Handle: typeof BottomHandle };\n\nconst BOTTOM_DOM_PROP_KEYS = [\n 'className',\n 'children',\n 'defaultOpen',\n 'open',\n 'onOpenChange',\n 'size',\n 'defaultSize',\n 'onSizeChange',\n 'sizeUpdate',\n 'sizeUpdateMs',\n 'style',\n] as const satisfies readonly (keyof BottomPublicProps)[];\n\nexport const Bottom = React.forwardRef<HTMLDivElement, BottomPublicProps>((initialProps, ref) => {\n const {\n className,\n presentation = 'fixed',\n defaultOpen,\n open,\n onOpenChange,\n expandedSize = 200,\n minSize = 100,\n maxSize = 400,\n resizable = false,\n collapsible = true,\n onExpand,\n onCollapse,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n paneId,\n persistence,\n children,\n style,\n size,\n defaultSize,\n onSizeChange,\n sizeUpdate,\n sizeUpdateMs = 50,\n } = initialProps;\n const bottomDomProps = extractPaneDomProps(initialProps, BOTTOM_DOM_PROP_KEYS);\n const shell = useShell();\n const resolvedPresentation = useResponsivePresentation(presentation);\n const isOverlay = resolvedPresentation === 'overlay';\n const isStacked = resolvedPresentation === 'stacked';\n const localRef = React.useRef<HTMLDivElement | null>(null);\n const setRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n localRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [ref],\n );\n const childArray = React.Children.toArray(children) as React.ReactElement[];\n const handleChildren = childArray.filter((el: React.ReactElement) => React.isValidElement(el) && el.type === BottomHandle);\n const contentChildren = childArray.filter((el: React.ReactElement) => !(React.isValidElement(el) && el.type === BottomHandle));\n\n // Throttled/debounced emitter for onSizeChange\n const normalizedControlledOpen = React.useMemo(() => mapResponsiveBooleanToPaneMode(open), [open]);\n const normalizedDefaultOpen = React.useMemo(() => mapResponsiveBooleanToPaneMode(defaultOpen), [defaultOpen]);\n const openIsResponsive = typeof open === 'object' && open !== null;\n useResponsiveInitialState<PaneMode>({\n controlledValue: normalizedControlledOpen,\n defaultValue: normalizedDefaultOpen,\n currentValue: shell.bottomMode,\n setValue: shell.setBottomMode,\n breakpointReady: shell.currentBreakpointReady,\n controlledIsResponsive: openIsResponsive,\n onResponsiveChange: (next) => onOpenChange?.(next === 'expanded', { reason: 'responsive' }),\n onInit: (initial) => {\n if (typeof open === 'undefined') {\n onOpenChange?.(initial === 'expanded', { reason: 'init' });\n }\n },\n });\n\n const emitSizeChange = React.useMemo(() => {\n const cb = onSizeChange as undefined | ((s: number, meta: BottomSizeChangeMeta) => void);\n const strategy = sizeUpdate as undefined | 'throttle' | 'debounce';\n const ms = sizeUpdateMs ?? 50;\n if (!cb) return () => {};\n if (strategy === 'debounce') {\n let t: any = null;\n return (s: number, meta: BottomSizeChangeMeta) => {\n if (t) clearTimeout(t);\n t = setTimeout(() => {\n cb(s, meta);\n }, ms);\n };\n }\n if (strategy === 'throttle') {\n let last = 0;\n return (s: number, meta: BottomSizeChangeMeta) => {\n const now = Date.now();\n if (now - last >= ms) {\n last = now;\n cb(s, meta);\n }\n };\n }\n return (s: number, meta: BottomSizeChangeMeta) => cb(s, meta);\n }, [onSizeChange, sizeUpdate, sizeUpdateMs]);\n\n // Dev guards\n const wasControlledRef = React.useRef<boolean | null>(null);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof open !== 'undefined' && typeof defaultOpen !== 'undefined') {\n console.error('Shell.Bottom: Do not pass both `open` and `defaultOpen`. Choose one.');\n }\n if (typeof size !== 'undefined' && typeof defaultSize !== 'undefined') {\n console.error('Shell.Bottom: Do not pass both `size` and `defaultSize`. Choose one.');\n }\n }\n\n React.useEffect(() => {\n const isControlled = typeof open !== 'undefined';\n if (wasControlledRef.current === null) {\n wasControlledRef.current = isControlled;\n return;\n }\n if (wasControlledRef.current !== isControlled) {\n console.warn('Shell.Bottom: Switching between controlled and uncontrolled `open` is not supported.');\n wasControlledRef.current = isControlled;\n }\n }, [open]);\n\n const initNotifiedRef = React.useRef(false);\n const lastBottomModeRef = React.useRef<PaneMode | null>(null);\n React.useEffect(() => {\n if (!initNotifiedRef.current && typeof open === 'undefined' && defaultOpen && shell.bottomMode === 'expanded') {\n onOpenChange?.(true, { reason: 'init' });\n initNotifiedRef.current = true;\n }\n if (typeof open === 'undefined') {\n if (lastBottomModeRef.current !== null && lastBottomModeRef.current !== shell.bottomMode) {\n onOpenChange?.(shell.bottomMode === 'expanded', { reason: 'toggle' });\n }\n lastBottomModeRef.current = shell.bottomMode;\n }\n }, [shell.bottomMode, open, defaultOpen, onOpenChange]);\n\n React.useEffect(() => {\n if (shell.bottomMode === 'expanded') {\n onExpand?.();\n } else {\n onCollapse?.();\n }\n }, [shell.bottomMode, onExpand, onCollapse]);\n\n const isExpanded = shell.bottomMode === 'expanded';\n\n const persistenceAdapter = React.useMemo(() => {\n if (!paneId || persistence) return persistence;\n const key = `kookie-ui:shell:bottom:${paneId}`;\n const adapter: PaneSizePersistence = {\n load: () => {\n if (typeof window === 'undefined') return undefined;\n try {\n const v = window.localStorage.getItem(key);\n return v ? Number(v) : undefined;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Bottom: failed to load persisted size', err);\n }\n return undefined;\n }\n },\n save: (size: number) => {\n if (typeof window === 'undefined') return;\n try {\n window.localStorage.setItem(key, String(size));\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Bottom: failed to save persisted size', err);\n }\n }\n },\n };\n return adapter;\n }, [paneId, persistence]);\n\n React.useEffect(() => {\n let mounted = true;\n if (!resizable || !persistenceAdapter?.load || isOverlay) return undefined;\n const loaded = persistenceAdapter.load();\n const applyLoaded = (value?: number) => {\n if (!mounted || typeof value !== 'number' || !localRef.current) return;\n localRef.current.style.setProperty('--bottom-size', `${value}px`);\n onResize?.(value);\n };\n if (loaded instanceof Promise) {\n loaded.then(applyLoaded).catch((err) => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Bottom: failed to load persisted size', err);\n }\n });\n } else {\n applyLoaded(loaded);\n }\n return () => {\n mounted = false;\n };\n }, [resizable, persistenceAdapter, onResize, isOverlay]);\n\n const handleEl =\n resizable && !isOverlay && isExpanded ? (\n <PaneResizeContext.Provider\n value={{\n containerRef: localRef,\n cssVarName: '--bottom-size',\n minSize,\n maxSize,\n defaultSize: expandedSize,\n orientation: 'horizontal',\n edge: 'start',\n computeNext: (client, startClient, startSize) => {\n const delta = client - startClient;\n return startSize - delta;\n },\n onResize,\n onResizeStart,\n onResizeEnd: (size) => {\n onResizeEnd?.(size);\n emitSizeChange(size, { reason: 'resize' });\n persistenceAdapter?.save?.(size);\n },\n target: 'bottom',\n collapsible,\n snapPoints,\n snapTolerance: snapTolerance ?? 8,\n collapseThreshold,\n requestCollapse: () => shell.setBottomMode('collapsed'),\n requestToggle: () => shell.togglePane('bottom'),\n }}\n >\n {handleChildren.length > 0 ? handleChildren.map((el, i) => React.cloneElement(el, { key: el.key ?? i })) : <PaneHandle />}\n </PaneResizeContext.Provider>\n ) : null;\n\n // Strip control/size props from DOM spread (moved above overlay return to keep hook order consistent)\n // Normalize CSS lengths to px (moved above overlay return to keep hook order consistent)\n const normalizeToPx = React.useCallback((value: number | string | undefined): number | undefined => {\n if (value == null) return undefined;\n if (typeof value === 'number' && Number.isFinite(value)) return value;\n const str = String(value).trim();\n if (!str) return undefined;\n if (str.endsWith('px')) return Number.parseFloat(str);\n if (str.endsWith('rem')) {\n const rem = Number.parseFloat(getComputedStyle(document.documentElement).fontSize || '16') || 16;\n return Number.parseFloat(str) * rem;\n }\n if (str.endsWith('%')) {\n const pct = Number.parseFloat(str);\n const base = document.documentElement.clientHeight || window.innerHeight || 0;\n return (pct / 100) * base;\n }\n const n = Number.parseFloat(str);\n return Number.isFinite(n) ? n : undefined;\n }, []);\n\n // Apply defaultSize on mount when uncontrolled (moved above overlay return)\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof size === 'undefined' && typeof defaultSize !== 'undefined') {\n const px = normalizeToPx(defaultSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--bottom-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'init' });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Controlled size sync (moved above overlay return)\n const controlledSize = size;\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof controlledSize === 'undefined') return;\n const px = normalizeToPx(controlledSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--bottom-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'controlled' });\n }\n }, [controlledSize, minSize, maxSize, normalizeToPx, emitSizeChange]);\n\n if (isOverlay) {\n const open = shell.bottomMode === 'expanded';\n return (\n <Sheet.Root open={open} onOpenChange={(o) => shell.setBottomMode(o ? 'expanded' : 'collapsed')}>\n <Sheet.Content side=\"bottom\" style={{ padding: 0 }} height={{ initial: `${expandedSize}px` }}>\n <VisuallyHidden>\n <Sheet.Title>Bottom panel</Sheet.Title>\n </VisuallyHidden>\n {contentChildren}\n </Sheet.Content>\n </Sheet.Root>\n );\n }\n\n return (\n <div\n {...bottomDomProps}\n ref={setRef}\n className={classNames('rt-ShellBottom', className)}\n data-mode={shell.bottomMode}\n data-peek={shell.peekTarget === 'bottom' || undefined}\n data-presentation={shell.currentBreakpointReady ? resolvedPresentation : undefined}\n data-open={(shell.currentBreakpointReady && isStacked && isExpanded) || undefined}\n style={{\n ...style,\n ['--bottom-size' as any]: `${expandedSize}px`,\n ['--bottom-min-size' as any]: `${minSize}px`,\n ['--bottom-max-size' as any]: `${maxSize}px`,\n }}\n >\n <div className=\"rt-ShellBottomContent\" data-visible={isExpanded || undefined}>\n {contentChildren}\n </div>\n {handleEl}\n </div>\n );\n}) as BottomComponent;\nBottom.displayName = 'Shell.Bottom';\nBottom.Handle = BottomHandle;\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["shell_bottom_exports", "__export", "Bottom", "__toCommonJS", "React", "import_classnames", "Sheet", "import_visually_hidden", "import_shell_context", "import_shell_hooks", "import_shell_resize", "import_shell_handles", "import_shell_types", "import_shell_prop_helpers", "BOTTOM_DOM_PROP_KEYS", "initialProps", "ref", "className", "presentation", "defaultOpen", "open", "onOpenChange", "expandedSize", "minSize", "maxSize", "resizable", "collapsible", "onExpand", "onCollapse", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "paneId", "persistence", "children", "style", "size", "defaultSize", "onSizeChange", "sizeUpdate", "sizeUpdateMs", "bottomDomProps", "shell", "resolvedPresentation", "isOverlay", "isStacked", "localRef", "setRef", "node", "childArray", "handleChildren", "el", "contentChildren", "normalizedControlledOpen", "normalizedDefaultOpen", "openIsResponsive", "next", "initial", "emitSizeChange", "cb", "strategy", "ms", "
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport * as Sheet from '../sheet.js';\nimport { VisuallyHidden } from '../visually-hidden.js';\nimport { useShell } from '../shell.context.js';\nimport { useResponsivePresentation, useResponsiveInitialState } from '../shell.hooks.js';\nimport { PaneResizeContext } from './shell-resize.js';\nimport { BottomHandle, PaneHandle } from './shell-handles.js';\nimport { _BREAKPOINTS } from '../shell.types.js';\nimport type { Breakpoint, PaneMode, PaneSizePersistence, ResponsivePresentation, PaneBaseProps } from '../shell.types.js';\nimport { extractPaneDomProps, mapResponsiveBooleanToPaneMode } from './shell-prop-helpers.js';\nimport { normalizeToPx } from '../../helpers/normalize-to-px.js';\n\ntype BottomOpenChangeMeta = { reason: 'init' | 'toggle' | 'responsive' };\ntype BottomControlledProps = { open: boolean | Partial<Record<Breakpoint, boolean>>; onOpenChange?: (open: boolean, meta: BottomOpenChangeMeta) => void; defaultOpen?: never };\ntype BottomUncontrolledProps = { defaultOpen?: boolean; onOpenChange?: (open: boolean, meta: BottomOpenChangeMeta) => void; open?: never };\ntype BottomSizeControlledProps = { size: number | string; defaultSize?: never };\ntype BottomSizeUncontrolledProps = { defaultSize?: number | string; size?: never };\ntype BottomSizeChangeMeta = { reason: 'init' | 'resize' | 'controlled' };\ntype BottomPublicProps = PaneBaseProps &\n (BottomControlledProps | BottomUncontrolledProps) &\n (BottomSizeControlledProps | BottomSizeUncontrolledProps) & {\n onSizeChange?: (size: number, meta: BottomSizeChangeMeta) => void;\n sizeUpdate?: 'throttle' | 'debounce';\n sizeUpdateMs?: number;\n };\n\ntype BottomComponent = React.ForwardRefExoticComponent<BottomPublicProps & React.RefAttributes<HTMLDivElement>> & { Handle: typeof BottomHandle };\n\nconst BOTTOM_DOM_PROP_KEYS = [\n 'className',\n 'children',\n 'defaultOpen',\n 'open',\n 'onOpenChange',\n 'size',\n 'defaultSize',\n 'onSizeChange',\n 'sizeUpdate',\n 'sizeUpdateMs',\n 'style',\n] as const satisfies readonly (keyof BottomPublicProps)[];\n\nexport const Bottom = React.forwardRef<HTMLDivElement, BottomPublicProps>((initialProps, ref) => {\n const {\n className,\n presentation = 'fixed',\n defaultOpen,\n open,\n onOpenChange,\n expandedSize = 200,\n minSize = 100,\n maxSize = 400,\n resizable = false,\n collapsible = true,\n onExpand,\n onCollapse,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n paneId,\n persistence,\n children,\n style,\n size,\n defaultSize,\n onSizeChange,\n sizeUpdate,\n sizeUpdateMs = 50,\n } = initialProps;\n const bottomDomProps = extractPaneDomProps(initialProps, BOTTOM_DOM_PROP_KEYS);\n const shell = useShell();\n const resolvedPresentation = useResponsivePresentation(presentation);\n const isOverlay = resolvedPresentation === 'overlay';\n const isStacked = resolvedPresentation === 'stacked';\n const localRef = React.useRef<HTMLDivElement | null>(null);\n const setRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n localRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [ref],\n );\n const childArray = React.Children.toArray(children) as React.ReactElement[];\n const handleChildren = childArray.filter((el: React.ReactElement) => React.isValidElement(el) && el.type === BottomHandle);\n const contentChildren = childArray.filter((el: React.ReactElement) => !(React.isValidElement(el) && el.type === BottomHandle));\n\n // Throttled/debounced emitter for onSizeChange\n const normalizedControlledOpen = React.useMemo(() => mapResponsiveBooleanToPaneMode(open), [open]);\n const normalizedDefaultOpen = React.useMemo(() => mapResponsiveBooleanToPaneMode(defaultOpen), [defaultOpen]);\n const openIsResponsive = typeof open === 'object' && open !== null;\n useResponsiveInitialState<PaneMode>({\n controlledValue: normalizedControlledOpen,\n defaultValue: normalizedDefaultOpen,\n currentValue: shell.bottomMode,\n setValue: shell.setBottomMode,\n breakpointReady: shell.currentBreakpointReady,\n controlledIsResponsive: openIsResponsive,\n onResponsiveChange: (next) => onOpenChange?.(next === 'expanded', { reason: 'responsive' }),\n onInit: (initial) => {\n if (typeof open === 'undefined') {\n onOpenChange?.(initial === 'expanded', { reason: 'init' });\n }\n },\n });\n\n // Ref for debounce cleanup\n const debounceTimeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n // Cleanup debounce timeout on unmount or when dependencies change\n React.useEffect(() => {\n return () => {\n if (debounceTimeoutRef.current) {\n clearTimeout(debounceTimeoutRef.current);\n debounceTimeoutRef.current = null;\n }\n };\n }, [onSizeChange, sizeUpdate, sizeUpdateMs]);\n // Throttled/debounced emitter for onSizeChange\n const emitSizeChange = React.useMemo(() => {\n const cb = onSizeChange as undefined | ((s: number, meta: BottomSizeChangeMeta) => void);\n const strategy = sizeUpdate as undefined | 'throttle' | 'debounce';\n const ms = sizeUpdateMs ?? 50;\n if (!cb) return () => {};\n if (strategy === 'debounce') {\n return (s: number, meta: BottomSizeChangeMeta) => {\n if (debounceTimeoutRef.current) clearTimeout(debounceTimeoutRef.current);\n debounceTimeoutRef.current = setTimeout(() => {\n cb(s, meta);\n debounceTimeoutRef.current = null;\n }, ms);\n };\n }\n if (strategy === 'throttle') {\n let last = 0;\n return (s: number, meta: BottomSizeChangeMeta) => {\n const now = Date.now();\n if (now - last >= ms) {\n last = now;\n cb(s, meta);\n }\n };\n }\n return (s: number, meta: BottomSizeChangeMeta) => cb(s, meta);\n }, [onSizeChange, sizeUpdate, sizeUpdateMs]);\n\n // Dev guards\n const wasControlledRef = React.useRef<boolean | null>(null);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof open !== 'undefined' && typeof defaultOpen !== 'undefined') {\n console.error('Shell.Bottom: Do not pass both `open` and `defaultOpen`. Choose one.');\n }\n if (typeof size !== 'undefined' && typeof defaultSize !== 'undefined') {\n console.error('Shell.Bottom: Do not pass both `size` and `defaultSize`. Choose one.');\n }\n }\n\n React.useEffect(() => {\n const isControlled = typeof open !== 'undefined';\n if (wasControlledRef.current === null) {\n wasControlledRef.current = isControlled;\n return;\n }\n if (wasControlledRef.current !== isControlled) {\n console.warn('Shell.Bottom: Switching between controlled and uncontrolled `open` is not supported.');\n wasControlledRef.current = isControlled;\n }\n }, [open]);\n\n const initNotifiedRef = React.useRef(false);\n const lastBottomModeRef = React.useRef<PaneMode | null>(null);\n React.useEffect(() => {\n if (!initNotifiedRef.current && typeof open === 'undefined' && defaultOpen && shell.bottomMode === 'expanded') {\n onOpenChange?.(true, { reason: 'init' });\n initNotifiedRef.current = true;\n }\n if (typeof open === 'undefined') {\n if (lastBottomModeRef.current !== null && lastBottomModeRef.current !== shell.bottomMode) {\n onOpenChange?.(shell.bottomMode === 'expanded', { reason: 'toggle' });\n }\n lastBottomModeRef.current = shell.bottomMode;\n }\n }, [shell.bottomMode, open, defaultOpen, onOpenChange]);\n\n // Track previous mode to only fire callbacks on actual user-initiated state transitions.\n // We wait for breakpointReady to ensure the initial state sync from useResponsiveInitialState\n // is complete before enabling callbacks. This avoids spurious callbacks during initialization.\n // Use callback refs to avoid re-running effect when inline callbacks change.\n const onExpandRef = React.useRef(onExpand);\n const onCollapseRef = React.useRef(onCollapse);\n React.useLayoutEffect(() => {\n onExpandRef.current = onExpand;\n onCollapseRef.current = onCollapse;\n });\n\n const prevBottomModeRef = React.useRef<PaneMode | null>(null);\n const hasInitializedRef = React.useRef(false);\n React.useEffect(() => {\n const currentMode = shell.bottomMode;\n\n // Wait for breakpoint to be ready before enabling callbacks\n if (!shell.currentBreakpointReady) {\n prevBottomModeRef.current = currentMode;\n return;\n }\n\n // Skip the first run after breakpoint is ready - this captures the post-sync state\n if (!hasInitializedRef.current) {\n hasInitializedRef.current = true;\n prevBottomModeRef.current = currentMode;\n return;\n }\n\n const prevMode = prevBottomModeRef.current;\n\n // Only fire on actual state transitions\n if (prevMode !== null && prevMode !== currentMode) {\n if (currentMode === 'expanded') {\n onExpandRef.current?.();\n } else if (currentMode === 'collapsed') {\n onCollapseRef.current?.();\n }\n prevBottomModeRef.current = currentMode;\n }\n }, [shell.bottomMode, shell.currentBreakpointReady]);\n\n const isExpanded = shell.bottomMode === 'expanded';\n\n const persistenceAdapter = React.useMemo(() => {\n if (!paneId || persistence) return persistence;\n const key = `kookie-ui:shell:bottom:${paneId}`;\n const adapter: PaneSizePersistence = {\n load: () => {\n if (typeof window === 'undefined') return undefined;\n try {\n const v = window.localStorage.getItem(key);\n return v ? Number(v) : undefined;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Bottom: failed to load persisted size', err);\n }\n return undefined;\n }\n },\n save: (size: number) => {\n if (typeof window === 'undefined') return;\n try {\n window.localStorage.setItem(key, String(size));\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Bottom: failed to save persisted size', err);\n }\n }\n },\n };\n return adapter;\n }, [paneId, persistence]);\n\n React.useEffect(() => {\n let mounted = true;\n if (!resizable || !persistenceAdapter?.load || isOverlay) return undefined;\n const loaded = persistenceAdapter.load();\n const applyLoaded = (value?: number) => {\n if (!mounted || typeof value !== 'number' || !localRef.current) return;\n localRef.current.style.setProperty('--bottom-size', `${value}px`);\n onResize?.(value);\n };\n if (loaded instanceof Promise) {\n loaded.then(applyLoaded).catch((err) => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Bottom: failed to load persisted size', err);\n }\n });\n } else {\n applyLoaded(loaded);\n }\n return () => {\n mounted = false;\n };\n }, [resizable, persistenceAdapter, onResize, isOverlay]);\n\n const handleEl =\n resizable && !isOverlay && isExpanded ? (\n <PaneResizeContext.Provider\n value={{\n containerRef: localRef,\n cssVarName: '--bottom-size',\n minSize,\n maxSize,\n defaultSize: expandedSize,\n orientation: 'horizontal',\n edge: 'start',\n computeNext: (client, startClient, startSize) => {\n const delta = client - startClient;\n return startSize - delta;\n },\n onResize,\n onResizeStart,\n onResizeEnd: (size) => {\n onResizeEnd?.(size);\n emitSizeChange(size, { reason: 'resize' });\n persistenceAdapter?.save?.(size);\n },\n target: 'bottom',\n collapsible,\n snapPoints,\n snapTolerance: snapTolerance ?? 8,\n collapseThreshold,\n requestCollapse: () => shell.setBottomMode('collapsed'),\n requestToggle: () => shell.togglePane('bottom'),\n }}\n >\n {handleChildren.length > 0 ? handleChildren.map((el, i) => React.cloneElement(el, { key: el.key ?? i })) : <PaneHandle />}\n </PaneResizeContext.Provider>\n ) : null;\n\n // Strip control/size props from DOM spread (moved above overlay return to keep hook order consistent)\n // Normalize CSS lengths to px helper\n const normalizeSizeToPx = React.useCallback((value: number | string | undefined) => normalizeToPx(value, 'vertical'), []);\n\n // Apply defaultSize on mount when uncontrolled (moved above overlay return)\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof size === 'undefined' && typeof defaultSize !== 'undefined') {\n const px = normalizeSizeToPx(defaultSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--bottom-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'init' });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Controlled size sync (moved above overlay return)\n const controlledSize = size;\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof controlledSize === 'undefined') return;\n const px = normalizeSizeToPx(controlledSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--bottom-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'controlled' });\n }\n }, [controlledSize, minSize, maxSize, normalizeSizeToPx, emitSizeChange]);\n\n if (isOverlay) {\n const open = shell.bottomMode === 'expanded';\n return (\n <Sheet.Root open={open} onOpenChange={(o) => shell.setBottomMode(o ? 'expanded' : 'collapsed')}>\n <Sheet.Content side=\"bottom\" style={{ padding: 0 }} height={{ initial: `${expandedSize}px` }}>\n <VisuallyHidden>\n <Sheet.Title>Bottom panel</Sheet.Title>\n </VisuallyHidden>\n {contentChildren}\n </Sheet.Content>\n </Sheet.Root>\n );\n }\n\n return (\n <div\n {...bottomDomProps}\n ref={setRef}\n className={classNames('rt-ShellBottom', className)}\n data-mode={shell.bottomMode}\n data-peek={shell.peekTarget === 'bottom' || undefined}\n data-presentation={shell.currentBreakpointReady ? resolvedPresentation : undefined}\n data-open={(shell.currentBreakpointReady && isStacked && isExpanded) || undefined}\n style={{\n ...style,\n ['--bottom-size' as any]: `${expandedSize}px`,\n ['--bottom-min-size' as any]: `${minSize}px`,\n ['--bottom-max-size' as any]: `${maxSize}px`,\n }}\n >\n <div className=\"rt-ShellBottomContent\" data-visible={isExpanded || undefined}>\n {contentChildren}\n </div>\n {handleEl}\n </div>\n );\n}) as BottomComponent;\nBottom.displayName = 'Shell.Bottom';\nBottom.Handle = BottomHandle;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["shell_bottom_exports", "__export", "Bottom", "__toCommonJS", "React", "import_classnames", "Sheet", "import_visually_hidden", "import_shell_context", "import_shell_hooks", "import_shell_resize", "import_shell_handles", "import_shell_types", "import_shell_prop_helpers", "import_normalize_to_px", "BOTTOM_DOM_PROP_KEYS", "initialProps", "ref", "className", "presentation", "defaultOpen", "open", "onOpenChange", "expandedSize", "minSize", "maxSize", "resizable", "collapsible", "onExpand", "onCollapse", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "paneId", "persistence", "children", "style", "size", "defaultSize", "onSizeChange", "sizeUpdate", "sizeUpdateMs", "bottomDomProps", "shell", "resolvedPresentation", "isOverlay", "isStacked", "localRef", "setRef", "node", "childArray", "handleChildren", "el", "contentChildren", "normalizedControlledOpen", "normalizedDefaultOpen", "openIsResponsive", "next", "initial", "debounceTimeoutRef", "emitSizeChange", "cb", "strategy", "ms", "s", "meta", "last", "now", "wasControlledRef", "isControlled", "initNotifiedRef", "lastBottomModeRef", "onExpandRef", "onCollapseRef", "prevBottomModeRef", "hasInitializedRef", "currentMode", "prevMode", "isExpanded", "persistenceAdapter", "key", "v", "mounted", "loaded", "applyLoaded", "value", "err", "handleEl", "client", "startClient", "startSize", "delta", "i", "normalizeSizeToPx", "px", "clamped", "controlledSize", "o", "classNames"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-handles.d.ts","sourceRoot":"","sources":["../../../../src/components/_internal/shell-handles.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"shell-handles.d.ts","sourceRoot":"","sources":["../../../../src/components/_internal/shell-handles.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,eAAO,MAAM,UAAU,mKA6MrB,CAAC;AAGH,eAAO,MAAM,WAAW,mKAA+H,CAAC;AAGxJ,eAAO,MAAM,aAAa,mKAA+H,CAAC;AAG1J,eAAO,MAAM,eAAe,mKAA+H,CAAC;AAG5J,eAAO,MAAM,YAAY,mKAA+H,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var te=Object.create;var A=Object.defineProperty;var ne=Object.getOwnPropertyDescriptor;var re=Object.getOwnPropertyNames;var ae=Object.getPrototypeOf,oe=Object.prototype.hasOwnProperty;var se=(e,t)=>{for(var u in t)A(e,u,{get:t[u],enumerable:!0})},U=(e,t,u,H)=>{if(t&&typeof t=="object"||typeof t=="function")for(let p of re(t))!oe.call(e,p)&&p!==u&&A(e,p,{get:()=>t[p],enumerable:!(H=ne(t,p))||H.enumerable});return e};var V=(e,t,u)=>(u=e!=null?te(ae(e)):{},U(t||!e||!e.__esModule?A(u,"default",{value:e,enumerable:!0}):u,e)),ie=e=>U(A({},"__esModule",{value:!0}),e);var le={};se(le,{BottomHandle:()=>j,InspectorHandle:()=>O,PaneHandle:()=>b,PanelHandle:()=>X,SidebarHandle:()=>Y});module.exports=ie(le);var c=V(require("react")),q=V(require("classnames")),B=require("./shell-resize.js");const b=c.forwardRef(({className:e,children:t,...u},H)=>{const{containerRef:p,cssVarName:m,minSize:C,maxSize:M,defaultSize:D,orientation:w,edge:N,computeNext:G,onResize:S,onResizeStart:T,onResizeEnd:P,snapPoints:z,snapTolerance:J,collapseThreshold:k,collapsible:$,target:I,requestCollapse:Q,requestToggle:Z}=(0,B.usePaneResize)(),R=c.useRef(null);c.useEffect(()=>()=>{try{R.current?.()}catch{}R.current=null},[]);const _=w,ee=`Resize ${I.charAt(0).toUpperCase()+I.slice(1)} pane`;return c.createElement("div",{...u,ref:H,className:(0,q.default)("rt-ShellResizer",e),"data-orientation":w,"data-edge":N,role:"slider","aria-label":ee,"aria-orientation":_,"aria-valuemin":C,"aria-valuemax":M,"aria-valuenow":D,tabIndex:0,onPointerDown:n=>{if(!p.current)return;n.preventDefault();const a=p.current,d=n.currentTarget,x=n.pointerId;try{R.current?.()}catch{}a.setAttribute("data-resizing","");try{d.setPointerCapture(x)}catch{}const L=w==="vertical"?n.clientX:n.clientY,v=parseFloat(getComputedStyle(a).getPropertyValue(m)||`${D}`),y=l=>Math.min(Math.max(l,C),M),o=document.body,r=o.style.cursor,f=o.style.userSelect;o.style.cursor=w==="vertical"?"col-resize":"row-resize",o.style.userSelect="none",T?.(v);const i=l=>{const E=w==="vertical"?l.clientX:l.clientY,g=y(G(E,L,v));a.style.setProperty(m,`${g}px`),d.setAttribute("aria-valuenow",String(g)),S?.(g)},h=()=>{try{d.releasePointerCapture(x)}catch{}window.removeEventListener("pointermove",i),document.removeEventListener("pointermove",i),window.removeEventListener("mousemove",i),document.removeEventListener("mousemove",i),d.removeEventListener("pointermove",i),window.removeEventListener("pointerup",s),document.removeEventListener("pointerup",s),window.removeEventListener("mouseup",s),document.removeEventListener("mouseup",s),window.removeEventListener("pointercancel",s),document.removeEventListener("pointercancel",s),window.removeEventListener("keydown",W),d.removeEventListener("lostpointercapture",s),a.removeAttribute("data-resizing"),o.style.cursor=r,o.style.userSelect=f,R.current=null},s=()=>{const l=parseFloat(getComputedStyle(a).getPropertyValue(m)||`${D}`);let E=l;if(z&&z.length){const g=z.reduce((F,K)=>Math.abs(K-l)<Math.abs(F-l)?K:F,z[0]);Math.abs(g-l)<=(J??8)&&(E=g,a.style.setProperty(m,`${E}px`),d.setAttribute("aria-valuenow",String(E)),S?.(E))}$&&typeof k=="number"&&l<=k&&Q?.(),P?.(E),h()},W=l=>{l.key==="Escape"&&(a.style.setProperty(m,`${v}px`),d.setAttribute("aria-valuenow",String(v)),P?.(v),h())};window.addEventListener("pointermove",i),document.addEventListener("pointermove",i),window.addEventListener("mousemove",i),document.addEventListener("mousemove",i),d.addEventListener("pointermove",i),window.addEventListener("pointerup",s),document.addEventListener("pointerup",s),window.addEventListener("mouseup",s),document.addEventListener("mouseup",s),window.addEventListener("pointercancel",s),document.addEventListener("pointercancel",s),window.addEventListener("keydown",W),d.addEventListener("lostpointercapture",s),R.current=h},onDoubleClick:()=>{$&&Z?.()},onKeyDown:n=>{if(!p.current)return;const a=p.current,d=getComputedStyle(a).getPropertyValue(m),x=Number.parseFloat(d.trim()),L=Number.isFinite(x)?x:D,v=r=>Math.min(Math.max(r,C),M),y=n.shiftKey?32:8;let o=0;if(w==="vertical"){const r=typeof document<"u"?document.dir:void 0,f=getComputedStyle(a).direction,i=!!(a.closest&&a.closest('[dir="rtl"]')),h=r==="rtl"||f==="rtl"||i;n.key==="ArrowRight"?o=h?-y:y:n.key==="ArrowLeft"&&(o=h?y:-y)}else n.key==="ArrowDown"?o=y:n.key==="ArrowUp"&&(o=-y);if(n.key==="Home"){n.preventDefault(),T?.(L);const r=v(C);a.style.setProperty(m,`${r}px`),n.currentTarget.setAttribute("aria-valuenow",String(r)),S?.(r),P?.(r);return}if(n.key==="End"){n.preventDefault(),T?.(L);const r=v(M);a.style.setProperty(m,`${r}px`),n.currentTarget.setAttribute("aria-valuenow",String(r)),S?.(r),P?.(r);return}if(o!==0){n.preventDefault(),T?.(L);const r=w==="vertical"&&N==="start"?-o:o,f=v(L+r);a.style.setProperty(m,`${f}px`),n.currentTarget.setAttribute("aria-valuenow",String(f)),S?.(f),P?.(f)}}},t)});b.displayName="Shell.Handle";const X=c.forwardRef((e,t)=>c.createElement(b,{...e,ref:t}));X.displayName="Shell.Panel.Handle";const Y=c.forwardRef((e,t)=>c.createElement(b,{...e,ref:t}));Y.displayName="Shell.Sidebar.Handle";const O=c.forwardRef((e,t)=>c.createElement(b,{...e,ref:t}));O.displayName="Shell.Inspector.Handle";const j=c.forwardRef((e,t)=>c.createElement(b,{...e,ref:t}));j.displayName="Shell.Bottom.Handle";
|
|
2
2
|
//# sourceMappingURL=shell-handles.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/components/_internal/shell-handles.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport { usePaneResize } from './shell-resize.js';\n\nexport const PaneHandle = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(({ className, children, ...props }, ref) => {\n const {\n containerRef,\n cssVarName,\n minSize,\n maxSize,\n defaultSize,\n orientation,\n edge,\n computeNext,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n collapsible,\n target
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["shell_handles_exports", "__export", "BottomHandle", "InspectorHandle", "PaneHandle", "PanelHandle", "SidebarHandle", "__toCommonJS", "React", "import_classnames", "import_shell_resize", "className", "children", "props", "ref", "containerRef", "cssVarName", "minSize", "maxSize", "defaultSize", "orientation", "edge", "computeNext", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "collapsible", "
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport { usePaneResize } from './shell-resize.js';\n\nexport const PaneHandle = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(({ className, children, ...props }, ref) => {\n const {\n containerRef,\n cssVarName,\n minSize,\n maxSize,\n defaultSize,\n orientation,\n edge,\n computeNext,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n collapsible,\n target,\n requestCollapse,\n requestToggle,\n } = usePaneResize();\n\n const activeCleanupRef = React.useRef<(() => void) | null>(null);\n React.useEffect(\n () => () => {\n try {\n activeCleanupRef.current?.();\n } catch {}\n activeCleanupRef.current = null;\n },\n [],\n );\n\n const ariaOrientation = orientation;\n\n // Generate accessible label from target\n const targetLabel = target.charAt(0).toUpperCase() + target.slice(1);\n const ariaLabel = `Resize ${targetLabel} pane`;\n\n return (\n <div\n {...props}\n ref={ref}\n className={classNames('rt-ShellResizer', className)}\n data-orientation={orientation}\n data-edge={edge}\n role=\"slider\"\n aria-label={ariaLabel}\n aria-orientation={ariaOrientation}\n aria-valuemin={minSize}\n aria-valuemax={maxSize}\n aria-valuenow={defaultSize}\n tabIndex={0}\n onPointerDown={(e) => {\n if (!containerRef.current) return;\n e.preventDefault();\n const container = containerRef.current;\n const handleEl = e.currentTarget as HTMLElement;\n const pointerId = e.pointerId;\n try {\n activeCleanupRef.current?.();\n } catch {}\n container.setAttribute('data-resizing', '');\n try {\n handleEl.setPointerCapture(pointerId);\n } catch {}\n const startClient = orientation === 'vertical' ? e.clientX : e.clientY;\n const startSize = parseFloat(getComputedStyle(container).getPropertyValue(cssVarName) || `${defaultSize}`);\n const clamp = (v: number) => Math.min(Math.max(v, minSize), maxSize);\n const body = document.body;\n const prevCursor = body.style.cursor;\n const prevUserSelect = body.style.userSelect;\n body.style.cursor = orientation === 'vertical' ? 'col-resize' : 'row-resize';\n body.style.userSelect = 'none';\n onResizeStart?.(startSize);\n const handleMove = (ev: PointerEvent) => {\n const client = orientation === 'vertical' ? ev.clientX : ev.clientY;\n const next = clamp(computeNext(client, startClient, startSize));\n container.style.setProperty(cssVarName, `${next}px`);\n handleEl.setAttribute('aria-valuenow', String(next));\n onResize?.(next);\n };\n const cleanup = () => {\n try {\n handleEl.releasePointerCapture(pointerId);\n } catch {}\n window.removeEventListener('pointermove', handleMove as any);\n document.removeEventListener('pointermove', handleMove as any);\n window.removeEventListener('mousemove', handleMove as any);\n document.removeEventListener('mousemove', handleMove as any);\n handleEl.removeEventListener('pointermove', handleMove as any);\n window.removeEventListener('pointerup', handleUp as any);\n document.removeEventListener('pointerup', handleUp as any);\n window.removeEventListener('mouseup', handleUp as any);\n document.removeEventListener('mouseup', handleUp as any);\n window.removeEventListener('pointercancel', handleUp as any);\n document.removeEventListener('pointercancel', handleUp as any);\n window.removeEventListener('keydown', handleKey as any);\n handleEl.removeEventListener('lostpointercapture', handleUp as any);\n container.removeAttribute('data-resizing');\n body.style.cursor = prevCursor;\n body.style.userSelect = prevUserSelect;\n activeCleanupRef.current = null;\n };\n const handleUp = () => {\n const finalSize = parseFloat(getComputedStyle(container).getPropertyValue(cssVarName) || `${defaultSize}`);\n let snapped = finalSize;\n if (snapPoints && snapPoints.length) {\n const nearest = snapPoints.reduce((acc, p) => (Math.abs(p - finalSize) < Math.abs(acc - finalSize) ? p : acc), snapPoints[0]);\n if (Math.abs(nearest - finalSize) <= (snapTolerance ?? 8)) {\n snapped = nearest;\n container.style.setProperty(cssVarName, `${snapped}px`);\n handleEl.setAttribute('aria-valuenow', String(snapped));\n onResize?.(snapped);\n }\n }\n if (collapsible && typeof collapseThreshold === 'number' && finalSize <= collapseThreshold) {\n requestCollapse?.();\n }\n onResizeEnd?.(snapped);\n cleanup();\n };\n const handleKey = (kev: KeyboardEvent) => {\n if (kev.key === 'Escape') {\n container.style.setProperty(cssVarName, `${startSize}px`);\n handleEl.setAttribute('aria-valuenow', String(startSize));\n onResizeEnd?.(startSize);\n cleanup();\n }\n };\n window.addEventListener('pointermove', handleMove as any);\n document.addEventListener('pointermove', handleMove as any);\n // Fallbacks for environments that don't fully support PointerEvent on window\n window.addEventListener('mousemove', handleMove as any);\n document.addEventListener('mousemove', handleMove as any);\n handleEl.addEventListener('pointermove', handleMove as any);\n window.addEventListener('pointerup', handleUp as any);\n document.addEventListener('pointerup', handleUp as any);\n window.addEventListener('mouseup', handleUp as any);\n document.addEventListener('mouseup', handleUp as any);\n window.addEventListener('pointercancel', handleUp as any);\n document.addEventListener('pointercancel', handleUp as any);\n window.addEventListener('keydown', handleKey as any);\n handleEl.addEventListener('lostpointercapture', handleUp as any);\n activeCleanupRef.current = cleanup;\n }}\n onDoubleClick={() => {\n if (collapsible) requestToggle?.();\n }}\n onKeyDown={(e) => {\n if (!containerRef.current) return;\n const container = containerRef.current;\n const rawCurrent = getComputedStyle(container).getPropertyValue(cssVarName);\n const parsedCurrent = Number.parseFloat(rawCurrent.trim());\n const current = Number.isFinite(parsedCurrent) ? parsedCurrent : defaultSize;\n const clamp = (v: number) => Math.min(Math.max(v, minSize), maxSize);\n const step = e.shiftKey ? 32 : 8;\n let delta = 0;\n if (orientation === 'vertical') {\n const docDir = typeof document !== 'undefined' ? document.dir : undefined;\n const cssDir = getComputedStyle(container).direction;\n const hasRtlAncestor = !!(container.closest && container.closest('[dir=\"rtl\"]'));\n const isRtl = docDir === 'rtl' || cssDir === 'rtl' || hasRtlAncestor;\n if (e.key === 'ArrowRight')\n delta = isRtl ? -step : step; // inline-end\n else if (e.key === 'ArrowLeft') delta = isRtl ? step : -step; // inline-start\n } else {\n if (e.key === 'ArrowDown') delta = step;\n else if (e.key === 'ArrowUp') delta = -step;\n }\n if (e.key === 'Home') {\n e.preventDefault();\n onResizeStart?.(current);\n const next = clamp(minSize);\n container.style.setProperty(cssVarName, `${next}px`);\n (e.currentTarget as HTMLElement).setAttribute('aria-valuenow', String(next));\n onResize?.(next);\n onResizeEnd?.(next);\n return;\n }\n if (e.key === 'End') {\n e.preventDefault();\n onResizeStart?.(current);\n const next = clamp(maxSize);\n container.style.setProperty(cssVarName, `${next}px`);\n (e.currentTarget as HTMLElement).setAttribute('aria-valuenow', String(next));\n onResize?.(next);\n onResizeEnd?.(next);\n return;\n }\n if (delta !== 0) {\n e.preventDefault();\n onResizeStart?.(current);\n const signedDelta = orientation === 'vertical' ? (edge === 'start' ? -delta : delta) : delta;\n const next = clamp(current + signedDelta);\n container.style.setProperty(cssVarName, `${next}px`);\n (e.currentTarget as HTMLElement).setAttribute('aria-valuenow', String(next));\n onResize?.(next);\n onResizeEnd?.(next);\n }\n }}\n >\n {children}\n </div>\n );\n});\nPaneHandle.displayName = 'Shell.Handle';\n\nexport const PanelHandle = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>((props, ref) => <PaneHandle {...props} ref={ref} />);\nPanelHandle.displayName = 'Shell.Panel.Handle';\n\nexport const SidebarHandle = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>((props, ref) => <PaneHandle {...props} ref={ref} />);\nSidebarHandle.displayName = 'Shell.Sidebar.Handle';\n\nexport const InspectorHandle = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>((props, ref) => <PaneHandle {...props} ref={ref} />);\nInspectorHandle.displayName = 'Shell.Inspector.Handle';\n\nexport const BottomHandle = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>((props, ref) => <PaneHandle {...props} ref={ref} />);\nBottomHandle.displayName = 'Shell.Bottom.Handle';\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["shell_handles_exports", "__export", "BottomHandle", "InspectorHandle", "PaneHandle", "PanelHandle", "SidebarHandle", "__toCommonJS", "React", "import_classnames", "import_shell_resize", "className", "children", "props", "ref", "containerRef", "cssVarName", "minSize", "maxSize", "defaultSize", "orientation", "edge", "computeNext", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "collapsible", "target", "requestCollapse", "requestToggle", "activeCleanupRef", "ariaOrientation", "ariaLabel", "classNames", "e", "container", "handleEl", "pointerId", "startClient", "startSize", "clamp", "v", "body", "prevCursor", "prevUserSelect", "handleMove", "ev", "client", "next", "cleanup", "handleUp", "handleKey", "finalSize", "snapped", "nearest", "acc", "p", "kev", "rawCurrent", "parsedCurrent", "current", "step", "delta", "docDir", "cssDir", "hasRtlAncestor", "isRtl", "signedDelta"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-inspector.d.ts","sourceRoot":"","sources":["../../../../src/components/_internal/shell-inspector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAE,eAAe,EAAc,MAAM,oBAAoB,CAAC;AAEjE,OAAO,KAAK,EAAE,UAAU,EAAyD,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"shell-inspector.d.ts","sourceRoot":"","sources":["../../../../src/components/_internal/shell-inspector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAE,eAAe,EAAc,MAAM,oBAAoB,CAAC;AAEjE,OAAO,KAAK,EAAE,UAAU,EAAyD,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAI1H,KAAK,uBAAuB,GAAG;IAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAA;CAAE,CAAC;AAC5E,KAAK,wBAAwB,GAAG;IAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AACrL,KAAK,0BAA0B,GAAG;IAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AACxL,KAAK,uBAAuB,GAAG;IAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAA;CAAE,CAAC;AAC5E,KAAK,4BAA4B,GAAG;IAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AACnF,KAAK,8BAA8B,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AACtF,KAAK,oBAAoB,GAAG,aAAa,GACvC,CAAC,wBAAwB,GAAG,0BAA0B,CAAC,GACvD,CAAC,4BAA4B,GAAG,8BAA8B,CAAC,GAAG;IAChE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,KAAK,IAAI,CAAC;IACrE,UAAU,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEJ,KAAK,kBAAkB,GAAG,KAAK,CAAC,yBAAyB,CAAC,oBAAoB,GAAG,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,OAAO,eAAe,CAAA;CAAE,CAAC;AAgB3J,eAAO,MAAM,SAAS,EA6VhB,kBAAkB,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var be=Object.create;var C=Object.defineProperty;var xe=Object.getOwnPropertyDescriptor;var Ce=Object.getOwnPropertyNames;var ge=Object.getPrototypeOf,ve=Object.prototype.hasOwnProperty;var Ee=(s,i)=>{for(var l in i)C(s,l,{get:i[l],enumerable:!0})},ne=(s,i,l,R)=>{if(i&&typeof i=="object"||typeof i=="function")for(let c of Ce(i))!ve.call(s,c)&&c!==l&&C(s,c,{get:()=>i[c],enumerable:!(R=xe(i,c))||R.enumerable});return s};var $=(s,i,l)=>(l=s!=null?be(ge(s)):{},ne(i||!s||!s.__esModule?C(l,"default",{value:s,enumerable:!0}):l,s)),Oe=s=>ne(C({},"__esModule",{value:!0}),s);var Ne={};Ee(Ne,{Inspector:()=>A});module.exports=Oe(Ne);var n=$(require("react")),te=$(require("classnames")),L=$(require("../sheet.js")),oe=require("../visually-hidden.js"),re=require("../shell.context.js"),g=require("../shell.hooks.js"),se=require("./shell-resize.js"),h=require("./shell-handles.js"),we=require("../shell.types.js"),z=require("./shell-prop-helpers.js"),ie=require("../../helpers/normalize-to-px.js");const Te=["className","children","defaultOpen","open","onOpenChange","size","defaultSize","onSizeChange","sizeUpdate","sizeUpdateMs","style"],A=n.forwardRef((s,i)=>{const{className:l,presentation:R={initial:"overlay",lg:"fixed"},defaultOpen:c,open:p,onOpenChange:P,expandedSize:v=320,minSize:f=200,maxSize:m=500,resizable:E=!1,collapsible:ae=!0,onExpand:j,onCollapse:F,onResize:O,onResizeStart:le,onResizeEnd:ce,snapPoints:pe,snapTolerance:de,collapseThreshold:ue,paneId:T,persistence:N,children:fe,style:me,onSizeChange:k,sizeUpdate:w,sizeUpdateMs:D=50,size:q,defaultSize:K}=s,ye=(0,z.extractPaneDomProps)(s,Te),t=(0,re.useShell)(),V=(0,g.useResponsivePresentation)(R),I=V==="overlay",he=V==="stacked",d=n.useRef(null),Pe=n.useCallback(e=>{d.current=e,typeof i=="function"?i(e):i&&(i.current=e)},[i]),Y=n.Children.toArray(fe),G=Y.filter(e=>n.isValidElement(e)&&e.type===h.InspectorHandle),J=Y.filter(e=>!(n.isValidElement(e)&&e.type===h.InspectorHandle)),ze=n.useMemo(()=>(0,z.mapResponsiveBooleanToPaneMode)(p),[p]),Re=n.useMemo(()=>(0,z.mapResponsiveBooleanToPaneMode)(c),[c]),Ie=typeof p=="object"&&p!==null;(0,g.useResponsiveInitialState)({controlledValue:ze,defaultValue:Re,currentValue:t.inspectorMode,setValue:t.setInspectorMode,breakpointReady:t.currentBreakpointReady,controlledIsResponsive:Ie,onResponsiveChange:e=>P?.(e==="expanded",{reason:"responsive"}),onInit:e=>{typeof p>"u"&&P?.(e==="expanded",{reason:"init"})}});const y=n.useRef(null);n.useEffect(()=>()=>{y.current&&(clearTimeout(y.current),y.current=null)},[k,w,D]);const M=n.useMemo(()=>{const e=k,r=w,a=D??50;if(!e)return()=>{};if(r==="debounce")return(o,u)=>{y.current&&clearTimeout(y.current),y.current=setTimeout(()=>{e(o,u),y.current=null},a)};if(r==="throttle"){let o=0;return(u,Se)=>{const ee=Date.now();ee-o>=a&&(o=ee,e(u,Se))}}return(o,u)=>e(o,u)},[k,w,D]),S=n.useRef(null);n.useEffect(()=>{const e=typeof p<"u";if(S.current===null){S.current=e;return}S.current!==e&&(console.warn("Shell.Inspector: Switching between controlled and uncontrolled `open` is not supported."),S.current=e)},[p]);const Q=n.useRef(!1),B=n.useRef(null);n.useEffect(()=>{!Q.current&&typeof p>"u"&&c&&t.inspectorMode==="expanded"&&(P?.(!0,{reason:"init"}),Q.current=!0),typeof p>"u"&&(B.current!==null&&B.current!==t.inspectorMode&&P?.(t.inspectorMode==="expanded",{reason:"toggle"}),B.current=t.inspectorMode)},[t.inspectorMode,p,c,P]);const W=n.useRef(j),X=n.useRef(F);n.useLayoutEffect(()=>{W.current=j,X.current=F});const b=n.useRef(null),Z=n.useRef(!1);n.useEffect(()=>{const e=t.inspectorMode;if(!t.currentBreakpointReady){b.current=e;return}if(!Z.current){Z.current=!0,b.current=e;return}const r=b.current;r!==null&&r!==e&&(e==="expanded"?W.current?.():e==="collapsed"&&X.current?.(),b.current=e)},[t.inspectorMode,t.currentBreakpointReady]);const H=t.inspectorMode==="expanded",x=n.useMemo(()=>{if(!T||N)return N;const e=`kookie-ui:shell:inspector:${T}`;return{load:()=>{if(!(typeof window>"u"))try{const a=window.localStorage.getItem(e);return a?Number(a):void 0}catch{return}},save:a=>{if(!(typeof window>"u"))try{window.localStorage.setItem(e,String(a))}catch{}}}},[T,N]);n.useEffect(()=>{let e=!0;if(!E||!x?.load||I)return;const r=x.load(),a=o=>{!e||typeof o!="number"||!d.current||(d.current.style.setProperty("--inspector-size",`${o}px`),O?.(o))};return r instanceof Promise?r.then(a).catch(o=>{}):a(r),()=>{e=!1}},[E,x,O,I]);const Me=E&&!I&&H?n.createElement(se.PaneResizeContext.Provider,{value:{containerRef:d,cssVarName:"--inspector-size",minSize:f,maxSize:m,defaultSize:v,orientation:"vertical",edge:"start",computeNext:(e,r,a)=>{const o=getComputedStyle(d.current).direction==="rtl",u=e-r;return a+(o?u:-u)},onResize:O,onResizeStart:le,onResizeEnd:e=>{ce?.(e),M(e,{reason:"resize"}),x?.save?.(e)},target:"inspector",collapsible:ae,snapPoints:pe,snapTolerance:de??8,collapseThreshold:ue,requestCollapse:()=>t.setInspectorMode("collapsed"),requestToggle:()=>t.togglePane("inspector")}},G.length>0?G.map((e,r)=>n.cloneElement(e,{key:e.key??r})):n.createElement(h.PaneHandle,null)):null,U=n.useCallback(e=>(0,ie.normalizeToPx)(e,"horizontal"),[]);n.useEffect(()=>{if(d.current&&typeof q>"u"&&typeof K<"u"){const e=U(K);if(typeof e=="number"&&Number.isFinite(e)){const o=Math.min((typeof m=="number"?m:void 0)??e,Math.max((typeof f=="number"?f:void 0)??e,e));d.current.style.setProperty("--inspector-size",`${o}px`),M(o,{reason:"init"})}}},[]);const _=q;if(n.useEffect(()=>{if(!d.current||typeof _>"u")return;const e=U(_);if(typeof e=="number"&&Number.isFinite(e)){const o=Math.min((typeof m=="number"?m:void 0)??e,Math.max((typeof f=="number"?f:void 0)??e,e));d.current.style.setProperty("--inspector-size",`${o}px`),M(o,{reason:"controlled"})}},[_,f,m,U,M]),I){const e=t.inspectorMode==="expanded";return n.createElement(L.Root,{open:e,onOpenChange:r=>t.setInspectorMode(r?"expanded":"collapsed")},n.createElement(L.Content,{side:"end",style:{padding:0},width:{initial:`${v}px`}},n.createElement(oe.VisuallyHidden,null,n.createElement(L.Title,null,"Inspector")),J))}return n.createElement("div",{...ye,ref:Pe,className:(0,te.default)("rt-ShellInspector",l),"data-mode":t.inspectorMode,"data-peek":t.peekTarget==="inspector"||void 0,"data-presentation":t.currentBreakpointReady?V:void 0,"data-open":t.currentBreakpointReady&&he&&H||void 0,style:{...me,"--inspector-size":`${v}px`,"--inspector-min-size":`${f}px`,"--inspector-max-size":`${m}px`}},n.createElement("div",{className:"rt-ShellInspectorContent","data-visible":H||void 0},J),Me)});A.displayName="Shell.Inspector",A.Handle=h.InspectorHandle;
|
|
2
2
|
//# sourceMappingURL=shell-inspector.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/components/_internal/shell-inspector.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport * as Sheet from '../sheet.js';\nimport { VisuallyHidden } from '../visually-hidden.js';\nimport { useShell } from '../shell.context.js';\nimport { useResponsivePresentation, useResponsiveInitialState } from '../shell.hooks.js';\nimport { PaneResizeContext } from './shell-resize.js';\nimport { InspectorHandle, PaneHandle } from './shell-handles.js';\nimport { _BREAKPOINTS } from '../shell.types.js';\nimport type { Breakpoint, PaneMode, PaneSizePersistence, ResponsivePresentation, PaneBaseProps } from '../shell.types.js';\nimport { extractPaneDomProps, mapResponsiveBooleanToPaneMode } from './shell-prop-helpers.js';\n\ntype InspectorOpenChangeMeta = { reason: 'init' | 'toggle' | 'responsive' };\ntype InspectorControlledProps = { open: boolean | Partial<Record<Breakpoint, boolean>>; onOpenChange?: (open: boolean, meta: InspectorOpenChangeMeta) => void; defaultOpen?: never };\ntype InspectorUncontrolledProps = { defaultOpen?: boolean | Partial<Record<Breakpoint, boolean>>; onOpenChange?: (open: boolean, meta: InspectorOpenChangeMeta) => void; open?: never };\ntype InspectorSizeChangeMeta = { reason: 'init' | 'resize' | 'controlled' };\ntype InspectorSizeControlledProps = { size: number | string; defaultSize?: never };\ntype InspectorSizeUncontrolledProps = { defaultSize?: number | string; size?: never };\ntype InspectorPublicProps = PaneBaseProps &\n (InspectorControlledProps | InspectorUncontrolledProps) &\n (InspectorSizeControlledProps | InspectorSizeUncontrolledProps) & {\n onSizeChange?: (size: number, meta: InspectorSizeChangeMeta) => void;\n sizeUpdate?: 'throttle' | 'debounce';\n sizeUpdateMs?: number;\n };\n\ntype InspectorComponent = React.ForwardRefExoticComponent<InspectorPublicProps & React.RefAttributes<HTMLDivElement>> & { Handle: typeof InspectorHandle };\n\nconst INSPECTOR_DOM_PROP_KEYS = [\n 'className',\n 'children',\n 'defaultOpen',\n 'open',\n 'onOpenChange',\n 'size',\n 'defaultSize',\n 'onSizeChange',\n 'sizeUpdate',\n 'sizeUpdateMs',\n 'style',\n] as const satisfies readonly (keyof InspectorPublicProps)[];\n\nexport const Inspector = React.forwardRef<HTMLDivElement, InspectorPublicProps>((initialProps, ref) => {\n const {\n className,\n presentation = { initial: 'overlay', lg: 'fixed' },\n defaultOpen,\n open,\n onOpenChange,\n expandedSize = 320,\n minSize = 200,\n maxSize = 500,\n resizable = false,\n collapsible = true,\n onExpand,\n onCollapse,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n paneId,\n persistence,\n children,\n style,\n onSizeChange,\n sizeUpdate,\n sizeUpdateMs = 50,\n size,\n defaultSize,\n } = initialProps;\n const inspectorDomProps = extractPaneDomProps(initialProps, INSPECTOR_DOM_PROP_KEYS);\n const shell = useShell();\n const resolvedPresentation = useResponsivePresentation(presentation);\n const isOverlay = resolvedPresentation === 'overlay';\n const isStacked = resolvedPresentation === 'stacked';\n const localRef = React.useRef<HTMLDivElement | null>(null);\n const setRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n localRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [ref],\n );\n const childArray = React.Children.toArray(children) as React.ReactElement[];\n const handleChildren = childArray.filter((el: React.ReactElement) => React.isValidElement(el) && el.type === InspectorHandle);\n const contentChildren = childArray.filter((el: React.ReactElement) => !(React.isValidElement(el) && el.type === InspectorHandle));\n\n // Throttled/debounced emitter for onSizeChange\n const normalizedControlledOpen = React.useMemo(() => mapResponsiveBooleanToPaneMode(open), [open]);\n const normalizedDefaultOpen = React.useMemo(() => mapResponsiveBooleanToPaneMode(defaultOpen), [defaultOpen]);\n const openIsResponsive = typeof open === 'object' && open !== null;\n useResponsiveInitialState<PaneMode>({\n controlledValue: normalizedControlledOpen,\n defaultValue: normalizedDefaultOpen,\n currentValue: shell.inspectorMode,\n setValue: shell.setInspectorMode,\n breakpointReady: shell.currentBreakpointReady,\n controlledIsResponsive: openIsResponsive,\n onResponsiveChange: (next) => onOpenChange?.(next === 'expanded', { reason: 'responsive' }),\n onInit: (initial) => {\n if (typeof open === 'undefined') {\n onOpenChange?.(initial === 'expanded', { reason: 'init' });\n }\n },\n });\n\n const emitSizeChange = React.useMemo(() => {\n const cb = onSizeChange as undefined | ((s: number, meta: InspectorSizeChangeMeta) => void);\n const strategy = sizeUpdate as undefined | 'throttle' | 'debounce';\n const ms = sizeUpdateMs ?? 50;\n if (!cb) return () => {};\n if (strategy === 'debounce') {\n let t: any = null;\n return (s: number, meta: InspectorSizeChangeMeta) => {\n if (t) clearTimeout(t);\n t = setTimeout(() => {\n cb(s, meta);\n }, ms);\n };\n }\n if (strategy === 'throttle') {\n let last = 0;\n return (s: number, meta: InspectorSizeChangeMeta) => {\n const now = Date.now();\n if (now - last >= ms) {\n last = now;\n cb(s, meta);\n }\n };\n }\n return (s: number, meta: InspectorSizeChangeMeta) => cb(s, meta);\n }, [onSizeChange, sizeUpdate, sizeUpdateMs]);\n\n // Dev guards\n const wasControlledRef = React.useRef<boolean | null>(null);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof open !== 'undefined' && typeof defaultOpen !== 'undefined') {\n console.error('Shell.Inspector: Do not pass both `open` and `defaultOpen`. Choose one.');\n }\n }\n\n // Warn on controlled/uncontrolled mode switch\n React.useEffect(() => {\n const isControlled = typeof open !== 'undefined';\n if (wasControlledRef.current === null) {\n wasControlledRef.current = isControlled;\n return;\n }\n if (wasControlledRef.current !== isControlled) {\n console.warn('Shell.Inspector: Switching between controlled and uncontrolled `open` is not supported.');\n wasControlledRef.current = isControlled;\n }\n }, [open]);\n\n const initNotifiedRef = React.useRef(false);\n const lastInspectorModeRef = React.useRef<PaneMode | null>(null);\n React.useEffect(() => {\n // Notify init open\n if (!initNotifiedRef.current && typeof open === 'undefined' && defaultOpen && shell.inspectorMode === 'expanded') {\n onOpenChange?.(true, { reason: 'init' });\n initNotifiedRef.current = true;\n }\n\n // Notify toggles when uncontrolled (avoid double-notify after responsive change)\n if (typeof open === 'undefined') {\n if (lastInspectorModeRef.current !== null && lastInspectorModeRef.current !== shell.inspectorMode) {\n onOpenChange?.(shell.inspectorMode === 'expanded', { reason: 'toggle' });\n }\n lastInspectorModeRef.current = shell.inspectorMode;\n }\n }, [shell.inspectorMode, open, defaultOpen, onOpenChange]);\n\n React.useEffect(() => {\n if (shell.inspectorMode === 'expanded') {\n onExpand?.();\n } else {\n onCollapse?.();\n }\n }, [shell.inspectorMode, onExpand, onCollapse]);\n\n const isExpanded = shell.inspectorMode === 'expanded';\n\n const persistenceAdapter = React.useMemo(() => {\n if (!paneId || persistence) return persistence;\n const key = `kookie-ui:shell:inspector:${paneId}`;\n const adapter: PaneSizePersistence = {\n load: () => {\n if (typeof window === 'undefined') return undefined;\n try {\n const v = window.localStorage.getItem(key);\n return v ? Number(v) : undefined;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Inspector: failed to load persisted size', err);\n }\n return undefined;\n }\n },\n save: (size: number) => {\n if (typeof window === 'undefined') return;\n try {\n window.localStorage.setItem(key, String(size));\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Inspector: failed to save persisted size', err);\n }\n }\n },\n };\n return adapter;\n }, [paneId, persistence]);\n\n React.useEffect(() => {\n let mounted = true;\n if (!resizable || !persistenceAdapter?.load || isOverlay) return undefined;\n const loaded = persistenceAdapter.load();\n const applyLoaded = (value?: number) => {\n if (!mounted || typeof value !== 'number' || !localRef.current) return;\n localRef.current.style.setProperty('--inspector-size', `${value}px`);\n onResize?.(value);\n };\n if (loaded instanceof Promise) {\n loaded.then(applyLoaded).catch((err) => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Inspector: failed to load persisted size', err);\n }\n });\n } else {\n applyLoaded(loaded);\n }\n return () => {\n mounted = false;\n };\n }, [resizable, persistenceAdapter, onResize, isOverlay]);\n\n const handleEl =\n resizable && !isOverlay && isExpanded ? (\n <PaneResizeContext.Provider\n value={{\n containerRef: localRef,\n cssVarName: '--inspector-size',\n minSize,\n maxSize,\n defaultSize: expandedSize,\n orientation: 'vertical',\n edge: 'start',\n computeNext: (client, startClient, startSize) => {\n const isRtl = getComputedStyle(localRef.current!).direction === 'rtl';\n const delta = client - startClient;\n return startSize + (isRtl ? delta : -delta);\n },\n onResize,\n onResizeStart,\n onResizeEnd: (size) => {\n onResizeEnd?.(size);\n emitSizeChange(size, { reason: 'resize' });\n persistenceAdapter?.save?.(size);\n },\n target: 'inspector',\n collapsible,\n snapPoints,\n snapTolerance: snapTolerance ?? 8,\n collapseThreshold,\n requestCollapse: () => shell.setInspectorMode('collapsed'),\n requestToggle: () => shell.togglePane('inspector'),\n }}\n >\n {handleChildren.length > 0 ? handleChildren.map((el, i) => React.cloneElement(el, { key: el.key ?? i })) : <PaneHandle />}\n </PaneResizeContext.Provider>\n ) : null;\n\n // Normalize CSS lengths to px\n const normalizeToPx = React.useCallback((value: number | string | undefined): number | undefined => {\n if (value == null) return undefined;\n if (typeof value === 'number' && Number.isFinite(value)) return value;\n const str = String(value).trim();\n if (!str) return undefined;\n if (str.endsWith('px')) return Number.parseFloat(str);\n if (str.endsWith('rem')) {\n const rem = Number.parseFloat(getComputedStyle(document.documentElement).fontSize || '16') || 16;\n return Number.parseFloat(str) * rem;\n }\n if (str.endsWith('%')) {\n const pct = Number.parseFloat(str);\n const base = document.documentElement.clientWidth || window.innerWidth || 0;\n return (pct / 100) * base;\n }\n const n = Number.parseFloat(str);\n return Number.isFinite(n) ? n : undefined;\n }, []);\n\n // Apply defaultSize on mount when uncontrolled\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof size === 'undefined' && typeof defaultSize !== 'undefined') {\n const px = normalizeToPx(defaultSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--inspector-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'init' });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Controlled size sync\n const controlledSize = size;\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof controlledSize === 'undefined') return;\n const px = normalizeToPx(controlledSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--inspector-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'controlled' });\n }\n }, [controlledSize, minSize, maxSize, normalizeToPx, emitSizeChange]);\n\n if (isOverlay) {\n const open = shell.inspectorMode === 'expanded';\n return (\n <Sheet.Root open={open} onOpenChange={(o) => shell.setInspectorMode(o ? 'expanded' : 'collapsed')}>\n <Sheet.Content side=\"end\" style={{ padding: 0 }} width={{ initial: `${expandedSize}px` }}>\n <VisuallyHidden>\n <Sheet.Title>Inspector</Sheet.Title>\n </VisuallyHidden>\n {contentChildren}\n </Sheet.Content>\n </Sheet.Root>\n );\n }\n\n // Strip control/size props from DOM spread\n return (\n <div\n {...inspectorDomProps}\n ref={setRef}\n className={classNames('rt-ShellInspector', className)}\n data-mode={shell.inspectorMode}\n data-peek={shell.peekTarget === 'inspector' || undefined}\n data-presentation={shell.currentBreakpointReady ? resolvedPresentation : undefined}\n data-open={(shell.currentBreakpointReady && isStacked && isExpanded) || undefined}\n style={{\n ...style,\n ['--inspector-size' as any]: `${expandedSize}px`,\n ['--inspector-min-size' as any]: `${minSize}px`,\n ['--inspector-max-size' as any]: `${maxSize}px`,\n }}\n >\n <div className=\"rt-ShellInspectorContent\" data-visible={isExpanded || undefined}>\n {contentChildren}\n </div>\n {handleEl}\n </div>\n );\n}) as InspectorComponent;\n\nInspector.displayName = 'Shell.Inspector';\nInspector.Handle = InspectorHandle;\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["shell_inspector_exports", "__export", "Inspector", "__toCommonJS", "React", "import_classnames", "Sheet", "import_visually_hidden", "import_shell_context", "import_shell_hooks", "import_shell_resize", "import_shell_handles", "import_shell_types", "import_shell_prop_helpers", "INSPECTOR_DOM_PROP_KEYS", "initialProps", "ref", "className", "presentation", "defaultOpen", "open", "onOpenChange", "expandedSize", "minSize", "maxSize", "resizable", "collapsible", "onExpand", "onCollapse", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "paneId", "persistence", "children", "style", "onSizeChange", "sizeUpdate", "sizeUpdateMs", "size", "defaultSize", "inspectorDomProps", "shell", "resolvedPresentation", "isOverlay", "isStacked", "localRef", "setRef", "node", "childArray", "handleChildren", "el", "contentChildren", "normalizedControlledOpen", "normalizedDefaultOpen", "openIsResponsive", "next", "initial", "emitSizeChange", "cb", "strategy", "ms", "s", "meta", "last", "now", "wasControlledRef", "isControlled", "initNotifiedRef", "lastInspectorModeRef", "
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport * as Sheet from '../sheet.js';\nimport { VisuallyHidden } from '../visually-hidden.js';\nimport { useShell } from '../shell.context.js';\nimport { useResponsivePresentation, useResponsiveInitialState } from '../shell.hooks.js';\nimport { PaneResizeContext } from './shell-resize.js';\nimport { InspectorHandle, PaneHandle } from './shell-handles.js';\nimport { _BREAKPOINTS } from '../shell.types.js';\nimport type { Breakpoint, PaneMode, PaneSizePersistence, ResponsivePresentation, PaneBaseProps } from '../shell.types.js';\nimport { extractPaneDomProps, mapResponsiveBooleanToPaneMode } from './shell-prop-helpers.js';\nimport { normalizeToPx } from '../../helpers/normalize-to-px.js';\n\ntype InspectorOpenChangeMeta = { reason: 'init' | 'toggle' | 'responsive' };\ntype InspectorControlledProps = { open: boolean | Partial<Record<Breakpoint, boolean>>; onOpenChange?: (open: boolean, meta: InspectorOpenChangeMeta) => void; defaultOpen?: never };\ntype InspectorUncontrolledProps = { defaultOpen?: boolean | Partial<Record<Breakpoint, boolean>>; onOpenChange?: (open: boolean, meta: InspectorOpenChangeMeta) => void; open?: never };\ntype InspectorSizeChangeMeta = { reason: 'init' | 'resize' | 'controlled' };\ntype InspectorSizeControlledProps = { size: number | string; defaultSize?: never };\ntype InspectorSizeUncontrolledProps = { defaultSize?: number | string; size?: never };\ntype InspectorPublicProps = PaneBaseProps &\n (InspectorControlledProps | InspectorUncontrolledProps) &\n (InspectorSizeControlledProps | InspectorSizeUncontrolledProps) & {\n onSizeChange?: (size: number, meta: InspectorSizeChangeMeta) => void;\n sizeUpdate?: 'throttle' | 'debounce';\n sizeUpdateMs?: number;\n };\n\ntype InspectorComponent = React.ForwardRefExoticComponent<InspectorPublicProps & React.RefAttributes<HTMLDivElement>> & { Handle: typeof InspectorHandle };\n\nconst INSPECTOR_DOM_PROP_KEYS = [\n 'className',\n 'children',\n 'defaultOpen',\n 'open',\n 'onOpenChange',\n 'size',\n 'defaultSize',\n 'onSizeChange',\n 'sizeUpdate',\n 'sizeUpdateMs',\n 'style',\n] as const satisfies readonly (keyof InspectorPublicProps)[];\n\nexport const Inspector = React.forwardRef<HTMLDivElement, InspectorPublicProps>((initialProps, ref) => {\n const {\n className,\n presentation = { initial: 'overlay', lg: 'fixed' },\n defaultOpen,\n open,\n onOpenChange,\n expandedSize = 320,\n minSize = 200,\n maxSize = 500,\n resizable = false,\n collapsible = true,\n onExpand,\n onCollapse,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n paneId,\n persistence,\n children,\n style,\n onSizeChange,\n sizeUpdate,\n sizeUpdateMs = 50,\n size,\n defaultSize,\n } = initialProps;\n const inspectorDomProps = extractPaneDomProps(initialProps, INSPECTOR_DOM_PROP_KEYS);\n const shell = useShell();\n const resolvedPresentation = useResponsivePresentation(presentation);\n const isOverlay = resolvedPresentation === 'overlay';\n const isStacked = resolvedPresentation === 'stacked';\n const localRef = React.useRef<HTMLDivElement | null>(null);\n const setRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n localRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [ref],\n );\n const childArray = React.Children.toArray(children) as React.ReactElement[];\n const handleChildren = childArray.filter((el: React.ReactElement) => React.isValidElement(el) && el.type === InspectorHandle);\n const contentChildren = childArray.filter((el: React.ReactElement) => !(React.isValidElement(el) && el.type === InspectorHandle));\n\n // Throttled/debounced emitter for onSizeChange\n const normalizedControlledOpen = React.useMemo(() => mapResponsiveBooleanToPaneMode(open), [open]);\n const normalizedDefaultOpen = React.useMemo(() => mapResponsiveBooleanToPaneMode(defaultOpen), [defaultOpen]);\n const openIsResponsive = typeof open === 'object' && open !== null;\n useResponsiveInitialState<PaneMode>({\n controlledValue: normalizedControlledOpen,\n defaultValue: normalizedDefaultOpen,\n currentValue: shell.inspectorMode,\n setValue: shell.setInspectorMode,\n breakpointReady: shell.currentBreakpointReady,\n controlledIsResponsive: openIsResponsive,\n onResponsiveChange: (next) => onOpenChange?.(next === 'expanded', { reason: 'responsive' }),\n onInit: (initial) => {\n if (typeof open === 'undefined') {\n onOpenChange?.(initial === 'expanded', { reason: 'init' });\n }\n },\n });\n\n // Ref for debounce cleanup\n const debounceTimeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n // Cleanup debounce timeout on unmount or when dependencies change\n React.useEffect(() => {\n return () => {\n if (debounceTimeoutRef.current) {\n clearTimeout(debounceTimeoutRef.current);\n debounceTimeoutRef.current = null;\n }\n };\n }, [onSizeChange, sizeUpdate, sizeUpdateMs]);\n // Throttled/debounced emitter for onSizeChange\n const emitSizeChange = React.useMemo(() => {\n const cb = onSizeChange as undefined | ((s: number, meta: InspectorSizeChangeMeta) => void);\n const strategy = sizeUpdate as undefined | 'throttle' | 'debounce';\n const ms = sizeUpdateMs ?? 50;\n if (!cb) return () => {};\n if (strategy === 'debounce') {\n return (s: number, meta: InspectorSizeChangeMeta) => {\n if (debounceTimeoutRef.current) clearTimeout(debounceTimeoutRef.current);\n debounceTimeoutRef.current = setTimeout(() => {\n cb(s, meta);\n debounceTimeoutRef.current = null;\n }, ms);\n };\n }\n if (strategy === 'throttle') {\n let last = 0;\n return (s: number, meta: InspectorSizeChangeMeta) => {\n const now = Date.now();\n if (now - last >= ms) {\n last = now;\n cb(s, meta);\n }\n };\n }\n return (s: number, meta: InspectorSizeChangeMeta) => cb(s, meta);\n }, [onSizeChange, sizeUpdate, sizeUpdateMs]);\n\n // Dev guards\n const wasControlledRef = React.useRef<boolean | null>(null);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof open !== 'undefined' && typeof defaultOpen !== 'undefined') {\n console.error('Shell.Inspector: Do not pass both `open` and `defaultOpen`. Choose one.');\n }\n }\n\n // Warn on controlled/uncontrolled mode switch\n React.useEffect(() => {\n const isControlled = typeof open !== 'undefined';\n if (wasControlledRef.current === null) {\n wasControlledRef.current = isControlled;\n return;\n }\n if (wasControlledRef.current !== isControlled) {\n console.warn('Shell.Inspector: Switching between controlled and uncontrolled `open` is not supported.');\n wasControlledRef.current = isControlled;\n }\n }, [open]);\n\n const initNotifiedRef = React.useRef(false);\n const lastInspectorModeRef = React.useRef<PaneMode | null>(null);\n React.useEffect(() => {\n // Notify init open\n if (!initNotifiedRef.current && typeof open === 'undefined' && defaultOpen && shell.inspectorMode === 'expanded') {\n onOpenChange?.(true, { reason: 'init' });\n initNotifiedRef.current = true;\n }\n\n // Notify toggles when uncontrolled (avoid double-notify after responsive change)\n if (typeof open === 'undefined') {\n if (lastInspectorModeRef.current !== null && lastInspectorModeRef.current !== shell.inspectorMode) {\n onOpenChange?.(shell.inspectorMode === 'expanded', { reason: 'toggle' });\n }\n lastInspectorModeRef.current = shell.inspectorMode;\n }\n }, [shell.inspectorMode, open, defaultOpen, onOpenChange]);\n\n // Track previous mode to only fire callbacks on actual user-initiated state transitions.\n // We wait for breakpointReady to ensure the initial state sync from useResponsiveInitialState\n // is complete before enabling callbacks. This avoids spurious callbacks during initialization.\n // Use callback refs to avoid re-running effect when inline callbacks change.\n const onExpandRef = React.useRef(onExpand);\n const onCollapseRef = React.useRef(onCollapse);\n React.useLayoutEffect(() => {\n onExpandRef.current = onExpand;\n onCollapseRef.current = onCollapse;\n });\n\n const prevInspectorModeRef = React.useRef<PaneMode | null>(null);\n const hasInitializedRef = React.useRef(false);\n React.useEffect(() => {\n const currentMode = shell.inspectorMode;\n\n // Wait for breakpoint to be ready before enabling callbacks\n if (!shell.currentBreakpointReady) {\n prevInspectorModeRef.current = currentMode;\n return;\n }\n\n // Skip the first run after breakpoint is ready - this captures the post-sync state\n if (!hasInitializedRef.current) {\n hasInitializedRef.current = true;\n prevInspectorModeRef.current = currentMode;\n return;\n }\n\n const prevMode = prevInspectorModeRef.current;\n\n // Only fire on actual state transitions\n if (prevMode !== null && prevMode !== currentMode) {\n if (currentMode === 'expanded') {\n onExpandRef.current?.();\n } else if (currentMode === 'collapsed') {\n onCollapseRef.current?.();\n }\n prevInspectorModeRef.current = currentMode;\n }\n }, [shell.inspectorMode, shell.currentBreakpointReady]);\n\n const isExpanded = shell.inspectorMode === 'expanded';\n\n const persistenceAdapter = React.useMemo(() => {\n if (!paneId || persistence) return persistence;\n const key = `kookie-ui:shell:inspector:${paneId}`;\n const adapter: PaneSizePersistence = {\n load: () => {\n if (typeof window === 'undefined') return undefined;\n try {\n const v = window.localStorage.getItem(key);\n return v ? Number(v) : undefined;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Inspector: failed to load persisted size', err);\n }\n return undefined;\n }\n },\n save: (size: number) => {\n if (typeof window === 'undefined') return;\n try {\n window.localStorage.setItem(key, String(size));\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Inspector: failed to save persisted size', err);\n }\n }\n },\n };\n return adapter;\n }, [paneId, persistence]);\n\n React.useEffect(() => {\n let mounted = true;\n if (!resizable || !persistenceAdapter?.load || isOverlay) return undefined;\n const loaded = persistenceAdapter.load();\n const applyLoaded = (value?: number) => {\n if (!mounted || typeof value !== 'number' || !localRef.current) return;\n localRef.current.style.setProperty('--inspector-size', `${value}px`);\n onResize?.(value);\n };\n if (loaded instanceof Promise) {\n loaded.then(applyLoaded).catch((err) => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Inspector: failed to load persisted size', err);\n }\n });\n } else {\n applyLoaded(loaded);\n }\n return () => {\n mounted = false;\n };\n }, [resizable, persistenceAdapter, onResize, isOverlay]);\n\n const handleEl =\n resizable && !isOverlay && isExpanded ? (\n <PaneResizeContext.Provider\n value={{\n containerRef: localRef,\n cssVarName: '--inspector-size',\n minSize,\n maxSize,\n defaultSize: expandedSize,\n orientation: 'vertical',\n edge: 'start',\n computeNext: (client, startClient, startSize) => {\n const isRtl = getComputedStyle(localRef.current!).direction === 'rtl';\n const delta = client - startClient;\n return startSize + (isRtl ? delta : -delta);\n },\n onResize,\n onResizeStart,\n onResizeEnd: (size) => {\n onResizeEnd?.(size);\n emitSizeChange(size, { reason: 'resize' });\n persistenceAdapter?.save?.(size);\n },\n target: 'inspector',\n collapsible,\n snapPoints,\n snapTolerance: snapTolerance ?? 8,\n collapseThreshold,\n requestCollapse: () => shell.setInspectorMode('collapsed'),\n requestToggle: () => shell.togglePane('inspector'),\n }}\n >\n {handleChildren.length > 0 ? handleChildren.map((el, i) => React.cloneElement(el, { key: el.key ?? i })) : <PaneHandle />}\n </PaneResizeContext.Provider>\n ) : null;\n\n // Normalize CSS lengths to px helper\n const normalizeSizeToPx = React.useCallback((value: number | string | undefined) => normalizeToPx(value, 'horizontal'), []);\n\n // Apply defaultSize on mount when uncontrolled\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof size === 'undefined' && typeof defaultSize !== 'undefined') {\n const px = normalizeSizeToPx(defaultSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--inspector-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'init' });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Controlled size sync\n const controlledSize = size;\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof controlledSize === 'undefined') return;\n const px = normalizeSizeToPx(controlledSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--inspector-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'controlled' });\n }\n }, [controlledSize, minSize, maxSize, normalizeSizeToPx, emitSizeChange]);\n\n if (isOverlay) {\n const open = shell.inspectorMode === 'expanded';\n return (\n <Sheet.Root open={open} onOpenChange={(o) => shell.setInspectorMode(o ? 'expanded' : 'collapsed')}>\n <Sheet.Content side=\"end\" style={{ padding: 0 }} width={{ initial: `${expandedSize}px` }}>\n <VisuallyHidden>\n <Sheet.Title>Inspector</Sheet.Title>\n </VisuallyHidden>\n {contentChildren}\n </Sheet.Content>\n </Sheet.Root>\n );\n }\n\n // Strip control/size props from DOM spread\n return (\n <div\n {...inspectorDomProps}\n ref={setRef}\n className={classNames('rt-ShellInspector', className)}\n data-mode={shell.inspectorMode}\n data-peek={shell.peekTarget === 'inspector' || undefined}\n data-presentation={shell.currentBreakpointReady ? resolvedPresentation : undefined}\n data-open={(shell.currentBreakpointReady && isStacked && isExpanded) || undefined}\n style={{\n ...style,\n ['--inspector-size' as any]: `${expandedSize}px`,\n ['--inspector-min-size' as any]: `${minSize}px`,\n ['--inspector-max-size' as any]: `${maxSize}px`,\n }}\n >\n <div className=\"rt-ShellInspectorContent\" data-visible={isExpanded || undefined}>\n {contentChildren}\n </div>\n {handleEl}\n </div>\n );\n}) as InspectorComponent;\n\nInspector.displayName = 'Shell.Inspector';\nInspector.Handle = InspectorHandle;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["shell_inspector_exports", "__export", "Inspector", "__toCommonJS", "React", "import_classnames", "Sheet", "import_visually_hidden", "import_shell_context", "import_shell_hooks", "import_shell_resize", "import_shell_handles", "import_shell_types", "import_shell_prop_helpers", "import_normalize_to_px", "INSPECTOR_DOM_PROP_KEYS", "initialProps", "ref", "className", "presentation", "defaultOpen", "open", "onOpenChange", "expandedSize", "minSize", "maxSize", "resizable", "collapsible", "onExpand", "onCollapse", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "paneId", "persistence", "children", "style", "onSizeChange", "sizeUpdate", "sizeUpdateMs", "size", "defaultSize", "inspectorDomProps", "shell", "resolvedPresentation", "isOverlay", "isStacked", "localRef", "setRef", "node", "childArray", "handleChildren", "el", "contentChildren", "normalizedControlledOpen", "normalizedDefaultOpen", "openIsResponsive", "next", "initial", "debounceTimeoutRef", "emitSizeChange", "cb", "strategy", "ms", "s", "meta", "last", "now", "wasControlledRef", "isControlled", "initNotifiedRef", "lastInspectorModeRef", "onExpandRef", "onCollapseRef", "prevInspectorModeRef", "hasInitializedRef", "currentMode", "prevMode", "isExpanded", "persistenceAdapter", "key", "v", "mounted", "loaded", "applyLoaded", "value", "err", "handleEl", "client", "startClient", "startSize", "isRtl", "delta", "i", "normalizeSizeToPx", "px", "clamped", "controlledSize", "o", "classNames"]
|
|
7
7
|
}
|