@kushagradhawan/kookie-ui 0.1.57 → 0.1.58
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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-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.js +1 -1
- package/dist/cjs/components/_internal/shell-sidebar.js.map +3 -3
- package/dist/cjs/components/chatbar.d.ts.map +1 -1
- package/dist/cjs/components/chatbar.js.map +2 -2
- package/dist/cjs/components/icons.d.ts +1 -1
- package/dist/cjs/components/icons.d.ts.map +1 -1
- package/dist/cjs/components/icons.js.map +2 -2
- package/dist/cjs/components/schemas/shell.schema.d.ts +2 -2
- package/dist/cjs/components/schemas/shell.schema.d.ts.map +1 -1
- package/dist/cjs/components/schemas/shell.schema.js +1 -1
- package/dist/cjs/components/schemas/shell.schema.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/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-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.js +1 -1
- package/dist/esm/components/_internal/shell-sidebar.js.map +3 -3
- package/dist/esm/components/chatbar.d.ts.map +1 -1
- package/dist/esm/components/chatbar.js.map +2 -2
- package/dist/esm/components/icons.d.ts +1 -1
- package/dist/esm/components/icons.d.ts.map +1 -1
- package/dist/esm/components/icons.js.map +2 -2
- package/dist/esm/components/schemas/shell.schema.d.ts +2 -2
- package/dist/esm/components/schemas/shell.schema.d.ts.map +1 -1
- package/dist/esm/components/schemas/shell.schema.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/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 +14 -13
- package/src/components/_internal/shell-inspector.tsx +13 -11
- package/src/components/_internal/shell-sidebar.tsx +12 -12
- package/src/components/chatbar.tsx +0 -1
- package/src/components/icons.tsx +19 -87
- package/src/components/schemas/shell.schema.ts +10 -33
- package/src/components/shell.tsx +32 -24
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-bottom.d.ts","sourceRoot":"","sources":["../../../../src/components/_internal/shell-bottom.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"shell-bottom.d.ts","sourceRoot":"","sources":["../../../../src/components/_internal/shell-bottom.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var ye=Object.create;var C=Object.defineProperty;var he=Object.getOwnPropertyDescriptor;var ze=Object.getOwnPropertyNames;var Pe=Object.getPrototypeOf,ge=Object.prototype.hasOwnProperty;var Be=(s,l)=>{for(var i in l)C(s,i,{get:l[i],enumerable:!0})},Y=(s,l,i,a)=>{if(l&&typeof l=="object"||typeof l=="function")for(let u of ze(l))!ge.call(s,u)&&u!==i&&C(s,u,{get:()=>l[u],enumerable:!(a=he(l,u))||a.enumerable});return s};var U=(s,l,i)=>(i=s!=null?ye(Pe(s)):{},Y(l||!s||!s.__esModule?C(i,"default",{value:s,enumerable:!0}):i,s)),Me=s=>Y(C({},"__esModule",{value:!0}),s);var Ce={};Be(Ce,{Bottom:()=>I});module.exports=Me(Ce);var t=U(require("react")),Z=U(require("classnames")),F=U(require("../sheet.js")),ee=require("../visually-hidden.js"),te=require("../shell.context.js"),z=require("../shell.hooks.js"),oe=require("./shell-resize.js"),y=require("./shell-handles.js"),Te=require("../shell.types.js");const I=t.forwardRef(({className:s,presentation:l="fixed",defaultOpen:i,open:a,onOpenChange:u,expandedSize:R=200,minSize:c=100,maxSize:p=400,resizable:S=!1,collapsible:ne=!0,onExpand:_,onCollapse:$,onResize:v,onResizeStart:re,onResizeEnd:se,snapPoints:ie,snapTolerance:ae,collapseThreshold:de,paneId:x,persistence:E,children:le,style:ue,...m},h)=>{const n=(0,te.useShell)(),N=(0,z.useResponsivePresentation)(l),P=N==="overlay",me=N==="stacked",f=t.useRef(null),fe=t.useCallback(e=>{f.current=e,typeof h=="function"?h(e):h&&(h.current=e)},[h]),V=t.Children.toArray(le),A=V.filter(e=>t.isValidElement(e)&&e.type===y.BottomHandle),L=V.filter(e=>!(t.isValidElement(e)&&e.type===y.BottomHandle)),W=m.onSizeChange,j=m.sizeUpdate,q=m.sizeUpdateMs,g=t.useMemo(()=>{const e=W,o=j,d=q??50;if(!e)return()=>{};if(o==="debounce"){let r=null;return(b,H)=>{r&&clearTimeout(r),r=setTimeout(()=>{e(b,H)},d)}}if(o==="throttle"){let r=0;return(b,H)=>{const X=Date.now();X-r>=d&&(r=X,e(b,H))}}return(r,b)=>e(r,b)},[W,j,q]),K=t.useRef(!1),ce=t.useRef(!1),G=(0,z.useResponsiveValue)(i);t.useEffect(()=>{if(!K.current&&n.currentBreakpointReady&&(K.current=!0,typeof a>"u"&&typeof i<"u")){const e=!!G;n.setBottomMode(e?"expanded":"collapsed"),ce.current=!0}},[n,a,i,G]);const B=t.useRef(null);t.useEffect(()=>{const e=typeof a<"u";if(B.current===null){B.current=e;return}B.current!==e&&(console.warn("Shell.Bottom: Switching between controlled and uncontrolled `open` is not supported."),B.current=e)},[a]),t.useEffect(()=>{typeof a>"u"||n.setBottomMode(a?"expanded":"collapsed")},[n,a]);const J=t.useRef(!1),w=(0,z.useResponsiveValue)(a);t.useEffect(()=>{if(typeof w>"u")return;const e=!!w;n.setBottomMode(e?"expanded":"collapsed")},[n,w]);const Q=t.useRef(!1),O=t.useRef(null);t.useEffect(()=>{!Q.current&&typeof a>"u"&&i&&n.bottomMode==="expanded"&&(u?.(!0,{reason:"init"}),Q.current=!0),typeof a>"u"&&(O.current!==null&&O.current!==n.bottomMode&&(J.current||u?.(n.bottomMode==="expanded",{reason:"toggle"}),J.current=!1),O.current=n.bottomMode)},[n.bottomMode,a,i,u]),t.useEffect(()=>{n.bottomMode==="expanded"?_?.():$?.()},[n.bottomMode,_,$]);const k=n.bottomMode==="expanded",M=t.useMemo(()=>{if(!x||E)return E;const e=`kookie-ui:shell:bottom:${x}`;return{load:()=>{if(typeof window>"u")return;const d=window.localStorage.getItem(e);return d?Number(d):void 0},save:d=>{typeof window>"u"||window.localStorage.setItem(e,String(d))}}},[x,E]);t.useEffect(()=>{let e=!0;return(async()=>{if(!S||!M?.load||P)return;const o=await M.load();e&&typeof o=="number"&&f.current&&(f.current.style.setProperty("--bottom-size",`${o}px`),v?.(o))})(),()=>{e=!1}},[S,M,v,P]);const pe=S&&!P&&k?t.createElement(oe.PaneResizeContext.Provider,{value:{containerRef:f,cssVarName:"--bottom-size",minSize:c,maxSize:p,defaultSize:R,orientation:"horizontal",edge:"start",computeNext:(e,o,d)=>{const r=e-o;return d-r},onResize:v,onResizeStart:re,onResizeEnd:e=>{se?.(e),g(e,{reason:"resize"}),M?.save?.(e)},target:"bottom",collapsible:ne,snapPoints:ie,snapTolerance:ae??8,collapseThreshold:de,requestCollapse:()=>n.setBottomMode("collapsed"),requestToggle:()=>n.togglePane("bottom")}},A.length>0?A.map((e,o)=>t.cloneElement(e,{key:e.key??o})):t.createElement(y.PaneHandle,null)):null,{defaultOpen:Re,open:Se,onOpenChange:ve,size:xe,defaultSize:Ee,onSizeChange:Ne,sizeUpdate:we,sizeUpdateMs:Oe,...be}=m,T=t.useCallback(e=>{if(e==null)return;if(typeof e=="number"&&Number.isFinite(e))return e;const o=String(e).trim();if(!o)return;if(o.endsWith("px"))return Number.parseFloat(o);if(o.endsWith("rem")){const r=Number.parseFloat(getComputedStyle(document.documentElement).fontSize||"16")||16;return Number.parseFloat(o)*r}if(o.endsWith("%")){const r=Number.parseFloat(o),b=document.documentElement.clientHeight||window.innerHeight||0;return r/100*b}const d=Number.parseFloat(o);return Number.isFinite(d)?d:void 0},[]);t.useEffect(()=>{if(f.current&&typeof m.size>"u"&&typeof m.defaultSize<"u"){const e=T(m.defaultSize);if(typeof e=="number"&&Number.isFinite(e)){const r=Math.min((typeof p=="number"?p:void 0)??e,Math.max((typeof c=="number"?c:void 0)??e,e));f.current.style.setProperty("--bottom-size",`${r}px`),g(r,{reason:"init"})}}},[]);const D=m.size;if(t.useEffect(()=>{if(!f.current||typeof D>"u")return;const e=T(D);if(typeof e=="number"&&Number.isFinite(e)){const r=Math.min((typeof p=="number"?p:void 0)??e,Math.max((typeof c=="number"?c:void 0)??e,e));f.current.style.setProperty("--bottom-size",`${r}px`),g(r,{reason:"controlled"})}},[D,c,p,T,g]),P){const e=n.bottomMode==="expanded";return t.createElement(F.Root,{open:e,onOpenChange:o=>n.setBottomMode(o?"expanded":"collapsed")},t.createElement(F.Content,{side:"bottom",style:{padding:0},height:{initial:`${R}px`}},t.createElement(ee.VisuallyHidden,null,t.createElement(F.Title,null,"Bottom panel")),L))}return t.createElement("div",{...be,ref:fe,className:(0,Z.default)("rt-ShellBottom",s),"data-mode":n.bottomMode,"data-peek":n.peekTarget==="bottom"||void 0,"data-presentation":n.currentBreakpointReady?N:void 0,"data-open":n.currentBreakpointReady&&me&&k||void 0,style:{...ue,"--bottom-size":`${R}px`,"--bottom-min-size":`${c}px`,"--bottom-max-size":`${p}px`}},t.createElement("div",{className:"rt-ShellBottomContent","data-visible":k||void 0},L),pe)});I.displayName="Shell.Bottom",I.Handle=y.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, useResponsiveValue } 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 } from '../shell.types.js';\n\ninterface PaneProps extends React.ComponentPropsWithoutRef<'div'> {\n presentation?: ResponsivePresentation;\n // legacy mode removed\n expandedSize?: number;\n minSize?: number;\n maxSize?: number;\n resizable?: boolean;\n collapsible?: boolean;\n onExpand?: () => void;\n onCollapse?: () => void;\n onResize?: (size: number) => void;\n resizer?: React.ReactNode;\n onResizeStart?: (size: number) => void;\n onResizeEnd?: (size: number) => void;\n snapPoints?: number[];\n snapTolerance?: number;\n collapseThreshold?: number;\n paneId?: string;\n persistence?: PaneSizePersistence;\n}\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 = PaneProps &\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\nexport const Bottom = React.forwardRef<HTMLDivElement, BottomPublicProps>(\n (\n {\n className,\n presentation = 'fixed',\n // removed legacy props\n // new API\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 ...props\n },\n ref,\n ) => {\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 emitSizeChange = React.useMemo(() => {\n const cb = (props as any).onSizeChange as undefined | ((s: number, meta: BottomSizeChangeMeta) => void);\n const strategy = (props as any).sizeUpdate as undefined | 'throttle' | 'debounce';\n const ms = (props as any).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 }, [(props as any).onSizeChange, (props as any).sizeUpdate, (props as any).sizeUpdateMs]);\n\n const didInitRef = React.useRef(false);\n const didInitFromDefaultOpenRef = React.useRef(false);\n const resolvedDefaultOpen = useResponsiveValue(defaultOpen as any);\n React.useEffect(() => {\n if (didInitRef.current) return;\n if (!shell.currentBreakpointReady) return;\n didInitRef.current = true;\n if (typeof open === 'undefined' && typeof defaultOpen !== 'undefined') {\n const initial = Boolean(resolvedDefaultOpen);\n shell.setBottomMode(initial ? 'expanded' : 'collapsed');\n didInitFromDefaultOpenRef.current = true;\n }\n }, [shell.currentBreakpointReady, open, defaultOpen, resolvedDefaultOpen]);\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 // eslint-disable-next-line no-console\n console.error('Shell.Bottom: Do not pass both `open` and `defaultOpen`. Choose one.');\n }\n if (typeof (props as any).size !== 'undefined' && typeof (props as any).defaultSize !== 'undefined') {\n // eslint-disable-next-line no-console\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 // eslint-disable-next-line no-console\n console.warn('Shell.Bottom: Switching between controlled and uncontrolled `open` is not supported.');\n wasControlledRef.current = isControlled;\n }\n }, [open]);\n\n // Controlled sync (responsive handled below)\n React.useEffect(() => {\n if (typeof open === 'undefined') return;\n shell.setBottomMode(open ? 'expanded' : 'collapsed');\n }, [open]);\n\n const responsiveNotifiedRef = React.useRef(false);\n\n // Controlled responsive open\n const resolvedOpen = useResponsiveValue(open);\n React.useEffect(() => {\n if (typeof resolvedOpen === 'undefined') return;\n const shouldExpand = Boolean(resolvedOpen);\n shell.setBottomMode(shouldExpand ? 'expanded' : 'collapsed');\n }, [resolvedOpen]);\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 if (!responsiveNotifiedRef.current) {\n onOpenChange?.(shell.bottomMode === 'expanded', { reason: 'toggle' });\n }\n responsiveNotifiedRef.current = false;\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 const v = window.localStorage.getItem(key);\n return v ? Number(v) : undefined;\n },\n save: (size: number) => {\n if (typeof window === 'undefined') return;\n window.localStorage.setItem(key, String(size));\n },\n };\n return adapter;\n }, [paneId, persistence]);\n\n React.useEffect(() => {\n let mounted = true;\n (async () => {\n if (!resizable || !persistenceAdapter?.load || isOverlay) return;\n const loaded = await persistenceAdapter.load();\n if (mounted && typeof loaded === 'number' && localRef.current) {\n localRef.current.style.setProperty('--bottom-size', `${loaded}px`);\n onResize?.(loaded);\n }\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 const {\n defaultOpen: _bottomDefaultOpenIgnored,\n open: _bottomOpenIgnored,\n onOpenChange: _bottomOnOpenChangeIgnored,\n size: _bottomSizeIgnored,\n defaultSize: _bottomDefaultSizeIgnored,\n onSizeChange: _bottomOnSizeChangeIgnored,\n sizeUpdate: _szu,\n sizeUpdateMs: _szums,\n ...bottomDomProps\n } = props as any;\n\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 (props as any).size === 'undefined' && typeof (props as any).defaultSize !== 'undefined') {\n const px = normalizeToPx((props as any).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 React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof (props as any).size === 'undefined') return;\n const px = normalizeToPx((props as any).size);\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 }, [(props as any).size, 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 },\n) as BottomComponent;\nBottom.displayName = 'Shell.Bottom';\nBottom.Handle = BottomHandle;\n"],
|
|
5
|
-
"mappings": "skBAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,YAAAE,IAAA,eAAAC,GAAAH,IAAA,IAAAI,EAAuB,oBACvBC,EAAuB,yBACvBC,EAAuB,0BACvBC,
|
|
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", "className", "presentation", "defaultOpen", "open", "onOpenChange", "expandedSize", "minSize", "maxSize", "resizable", "collapsible", "onExpand", "onCollapse", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "paneId", "persistence", "children", "style", "props", "ref", "shell", "resolvedPresentation", "isOverlay", "isStacked", "localRef", "setRef", "node", "childArray", "handleChildren", "el", "contentChildren", "emitSizeChange", "cb", "strategy", "ms", "t", "s", "meta", "last", "now", "didInitRef", "didInitFromDefaultOpenRef", "resolvedDefaultOpen", "initial", "wasControlledRef", "isControlled", "responsiveNotifiedRef", "resolvedOpen", "shouldExpand", "initNotifiedRef", "lastBottomModeRef", "isExpanded", "persistenceAdapter", "key", "v", "size", "mounted", "loaded", "handleEl", "client", "startClient", "startSize", "delta", "i", "_bottomDefaultOpenIgnored", "_bottomOpenIgnored", "_bottomOnOpenChangeIgnored", "_bottomSizeIgnored", "_bottomDefaultSizeIgnored", "_bottomOnSizeChangeIgnored", "_szu", "_szums", "bottomDomProps", "normalizeToPx", "value", "str", "rem", "pct", "base", "n", "px", "clamped", "
|
|
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, useResponsiveValue } 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 } from '../shell.types.js';\n\ninterface PaneProps extends React.ComponentPropsWithoutRef<'div'> {\n presentation?: ResponsivePresentation;\n // legacy mode removed\n expandedSize?: number;\n minSize?: number;\n maxSize?: number;\n resizable?: boolean;\n collapsible?: boolean;\n onExpand?: () => void;\n onCollapse?: () => void;\n onResize?: (size: number) => void;\n resizer?: React.ReactNode;\n onResizeStart?: (size: number) => void;\n onResizeEnd?: (size: number) => void;\n snapPoints?: number[];\n snapTolerance?: number;\n collapseThreshold?: number;\n paneId?: string;\n persistence?: PaneSizePersistence;\n}\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 = PaneProps &\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\nexport const Bottom = React.forwardRef<HTMLDivElement, BottomPublicProps>(\n (\n {\n className,\n presentation = 'fixed',\n // removed legacy props\n // new API\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 ...props\n },\n ref,\n ) => {\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 onSizeChange = (props as any).onSizeChange;\n const sizeUpdate = (props as any).sizeUpdate;\n const sizeUpdateMs = (props as any).sizeUpdateMs;\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 const didInitRef = React.useRef(false);\n const didInitFromDefaultOpenRef = React.useRef(false);\n const resolvedDefaultOpen = useResponsiveValue(defaultOpen as any);\n React.useEffect(() => {\n if (didInitRef.current) return;\n if (!shell.currentBreakpointReady) return;\n didInitRef.current = true;\n if (typeof open === 'undefined' && typeof defaultOpen !== 'undefined') {\n const initial = Boolean(resolvedDefaultOpen);\n shell.setBottomMode(initial ? 'expanded' : 'collapsed');\n didInitFromDefaultOpenRef.current = true;\n }\n }, [shell, open, defaultOpen, resolvedDefaultOpen]);\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 (props as any).size !== 'undefined' && typeof (props as any).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 // Controlled sync (responsive handled below)\n React.useEffect(() => {\n if (typeof open === 'undefined') return;\n shell.setBottomMode(open ? 'expanded' : 'collapsed');\n }, [shell, open]);\n\n const responsiveNotifiedRef = React.useRef(false);\n\n // Controlled responsive open\n const resolvedOpen = useResponsiveValue(open);\n React.useEffect(() => {\n if (typeof resolvedOpen === 'undefined') return;\n const shouldExpand = Boolean(resolvedOpen);\n shell.setBottomMode(shouldExpand ? 'expanded' : 'collapsed');\n }, [shell, resolvedOpen]);\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 if (!responsiveNotifiedRef.current) {\n onOpenChange?.(shell.bottomMode === 'expanded', { reason: 'toggle' });\n }\n responsiveNotifiedRef.current = false;\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 const v = window.localStorage.getItem(key);\n return v ? Number(v) : undefined;\n },\n save: (size: number) => {\n if (typeof window === 'undefined') return;\n window.localStorage.setItem(key, String(size));\n },\n };\n return adapter;\n }, [paneId, persistence]);\n\n React.useEffect(() => {\n let mounted = true;\n (async () => {\n if (!resizable || !persistenceAdapter?.load || isOverlay) return;\n const loaded = await persistenceAdapter.load();\n if (mounted && typeof loaded === 'number' && localRef.current) {\n localRef.current.style.setProperty('--bottom-size', `${loaded}px`);\n onResize?.(loaded);\n }\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 const {\n defaultOpen: _bottomDefaultOpenIgnored,\n open: _bottomOpenIgnored,\n onOpenChange: _bottomOnOpenChangeIgnored,\n size: _bottomSizeIgnored,\n defaultSize: _bottomDefaultSizeIgnored,\n onSizeChange: _bottomOnSizeChangeIgnored,\n sizeUpdate: _szu,\n sizeUpdateMs: _szums,\n ...bottomDomProps\n } = props as any;\n\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 (props as any).size === 'undefined' && typeof (props as any).defaultSize !== 'undefined') {\n const px = normalizeToPx((props as any).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 = (props as any).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 },\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", "className", "presentation", "defaultOpen", "open", "onOpenChange", "expandedSize", "minSize", "maxSize", "resizable", "collapsible", "onExpand", "onCollapse", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "paneId", "persistence", "children", "style", "props", "ref", "shell", "resolvedPresentation", "isOverlay", "isStacked", "localRef", "setRef", "node", "childArray", "handleChildren", "el", "contentChildren", "onSizeChange", "sizeUpdate", "sizeUpdateMs", "emitSizeChange", "cb", "strategy", "ms", "t", "s", "meta", "last", "now", "didInitRef", "didInitFromDefaultOpenRef", "resolvedDefaultOpen", "initial", "wasControlledRef", "isControlled", "responsiveNotifiedRef", "resolvedOpen", "shouldExpand", "initNotifiedRef", "lastBottomModeRef", "isExpanded", "persistenceAdapter", "key", "v", "size", "mounted", "loaded", "handleEl", "client", "startClient", "startSize", "delta", "i", "_bottomDefaultOpenIgnored", "_bottomOpenIgnored", "_bottomOnOpenChangeIgnored", "_bottomSizeIgnored", "_bottomDefaultSizeIgnored", "_bottomOnSizeChangeIgnored", "_szu", "_szums", "bottomDomProps", "normalizeToPx", "value", "str", "rem", "pct", "base", "n", "px", "clamped", "controlledSize", "classNames"]
|
|
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,EAAY,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE3G,UAAU,SAAU,SAAQ,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC;IAC/D,YAAY,CAAC,EAAE,sBAAsB,CAAC;IAEtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,mBAAmB,CAAC;CACnC;AAED,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,oBAAoB,GAAG,SAAS,GACnC,CAAC,wBAAwB,GAAG,0BAA0B,CAAC,GAAG;IACxD,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;AAE3J,eAAO,MAAM,SAAS,
|
|
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,EAAY,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE3G,UAAU,SAAU,SAAQ,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC;IAC/D,YAAY,CAAC,EAAE,sBAAsB,CAAC;IAEtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,mBAAmB,CAAC;CACnC;AAED,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,oBAAoB,GAAG,SAAS,GACnC,CAAC,wBAAwB,GAAG,0BAA0B,CAAC,GAAG;IACxD,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;AAE3J,eAAO,MAAM,SAAS,EAuUjB,kBAAkB,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var ye=Object.create;var I=Object.defineProperty;var be=Object.getOwnPropertyDescriptor;var he=Object.getOwnPropertyNames;var Pe=Object.getPrototypeOf,Me=Object.prototype.hasOwnProperty;var ge=(s,d)=>{for(var i in d)I(s,i,{get:d[i],enumerable:!0})},Y=(s,d,i,c)=>{if(d&&typeof d=="object"||typeof d=="function")for(let l of he(d))!Me.call(s,l)&&l!==i&&I(s,l,{get:()=>d[l],enumerable:!(c=be(d,l))||c.enumerable});return s};var F=(s,d,i)=>(i=s!=null?ye(Pe(s)):{},Y(d||!s||!s.__esModule?I(i,"default",{value:s,enumerable:!0}):i,s)),Re=s=>Y(I({},"__esModule",{value:!0}),s);var ze={};ge(ze,{Inspector:()=>_});module.exports=Re(ze);var n=F(require("react")),Z=F(require("classnames")),U=F(require("../sheet.js")),ee=require("../visually-hidden.js"),ne=require("../shell.context.js"),P=require("../shell.hooks.js"),te=require("./shell-resize.js"),b=require("./shell-handles.js"),Oe=require("../shell.types.js");const _=n.forwardRef(({className:s,presentation:d={initial:"overlay",lg:"fixed"},defaultOpen:i,open:c,onOpenChange:l,expandedSize:v=320,minSize:m=200,maxSize:y=500,resizable:x=!1,collapsible:oe=!0,onExpand:B,onCollapse:$,onResize:C,onResizeStart:re,onResizeEnd:se,snapPoints:ie,snapTolerance:ae,collapseThreshold:de,paneId:E,persistence:S,children:ce,style:le,...f},h)=>{const t=(0,ne.useShell)(),N=(0,P.useResponsivePresentation)(d),M=N==="overlay",pe=N==="stacked",u=n.useRef(null),ue=n.useCallback(e=>{u.current=e,typeof h=="function"?h(e):h&&(h.current=e)},[h]),V=n.Children.toArray(ce),W=V.filter(e=>n.isValidElement(e)&&e.type===b.InspectorHandle),A=V.filter(e=>!(n.isValidElement(e)&&e.type===b.InspectorHandle)),L=f.onSizeChange,j=f.sizeUpdate,q=f.sizeUpdateMs,g=n.useMemo(()=>{const e=L,o=j,a=q??50;if(!e)return()=>{};if(o==="debounce"){let r=null;return(p,H)=>{r&&clearTimeout(r),r=setTimeout(()=>{e(p,H)},a)}}if(o==="throttle"){let r=0;return(p,H)=>{const X=Date.now();X-r>=a&&(r=X,e(p,H))}}return(r,p)=>e(r,p)},[L,j,q]),R=n.useRef(null);n.useEffect(()=>{const e=typeof c<"u";if(R.current===null){R.current=e;return}R.current!==e&&(console.warn("Shell.Inspector: Switching between controlled and uncontrolled `open` is not supported."),R.current=e)},[c]);const K=n.useRef(!1),G=n.useRef(!1),J=(0,P.useResponsiveValue)(i);n.useEffect(()=>{if(!t.currentBreakpointReady||G.current||typeof c<"u"||typeof i>"u")return;const e=!!J;t.setInspectorMode(e?"expanded":"collapsed"),e&&l?.(!0,{reason:"init"}),G.current=!0},[t,J,i,c,l]);const w=(0,P.useResponsiveValue)(c);n.useEffect(()=>{if(typeof w>"u")return;const e=!!w;e&&t.inspectorMode!=="expanded"&&t.setInspectorMode("expanded"),!e&&t.inspectorMode!=="collapsed"&&t.setInspectorMode("collapsed")},[t,w]);const Q=n.useRef(!1),k=n.useRef(null);n.useEffect(()=>{!Q.current&&typeof c>"u"&&i&&t.inspectorMode==="expanded"&&(l?.(!0,{reason:"init"}),Q.current=!0),typeof c>"u"&&(k.current!==null&&k.current!==t.inspectorMode&&(K.current||l?.(t.inspectorMode==="expanded",{reason:"toggle"}),K.current=!1),k.current=t.inspectorMode)},[t.inspectorMode,c,i,l]),n.useEffect(()=>{t.inspectorMode==="expanded"?B?.():$?.()},[t.inspectorMode,B,$]);const O=t.inspectorMode==="expanded",z=n.useMemo(()=>{if(!E||S)return S;const e=`kookie-ui:shell:inspector:${E}`;return{load:()=>{if(typeof window>"u")return;const a=window.localStorage.getItem(e);return a?Number(a):void 0},save:a=>{typeof window>"u"||window.localStorage.setItem(e,String(a))}}},[E,S]);n.useEffect(()=>{let e=!0;return(async()=>{if(!x||!z?.load||M)return;const o=await z.load();e&&typeof o=="number"&&u.current&&(u.current.style.setProperty("--inspector-size",`${o}px`),C?.(o))})(),()=>{e=!1}},[x,z,C,M]);const fe=x&&!M&&O?n.createElement(te.PaneResizeContext.Provider,{value:{containerRef:u,cssVarName:"--inspector-size",minSize:m,maxSize:y,defaultSize:v,orientation:"vertical",edge:"start",computeNext:(e,o,a)=>{const r=getComputedStyle(u.current).direction==="rtl",p=e-o;return a+(r?p:-p)},onResize:C,onResizeStart:re,onResizeEnd:e=>{se?.(e),g(e,{reason:"resize"}),z?.save?.(e)},target:"inspector",collapsible:oe,snapPoints:ie,snapTolerance:ae??8,collapseThreshold:de,requestCollapse:()=>t.setInspectorMode("collapsed"),requestToggle:()=>t.togglePane("inspector")}},W.length>0?W.map((e,o)=>n.cloneElement(e,{key:e.key??o})):n.createElement(b.PaneHandle,null)):null,T=n.useCallback(e=>{if(e==null)return;if(typeof e=="number"&&Number.isFinite(e))return e;const o=String(e).trim();if(!o)return;if(o.endsWith("px"))return Number.parseFloat(o);if(o.endsWith("rem")){const r=Number.parseFloat(getComputedStyle(document.documentElement).fontSize||"16")||16;return Number.parseFloat(o)*r}if(o.endsWith("%")){const r=Number.parseFloat(o),p=document.documentElement.clientWidth||window.innerWidth||0;return r/100*p}const a=Number.parseFloat(o);return Number.isFinite(a)?a:void 0},[]);n.useEffect(()=>{if(u.current&&typeof f.size>"u"&&typeof f.defaultSize<"u"){const e=T(f.defaultSize);if(typeof e=="number"&&Number.isFinite(e)){const r=Math.min((typeof y=="number"?y:void 0)??e,Math.max((typeof m=="number"?m:void 0)??e,e));u.current.style.setProperty("--inspector-size",`${r}px`),g(r,{reason:"init"})}}},[]);const D=f.size;if(n.useEffect(()=>{if(!u.current||typeof D>"u")return;const e=T(D);if(typeof e=="number"&&Number.isFinite(e)){const r=Math.min((typeof y=="number"?y:void 0)??e,Math.max((typeof m=="number"?m:void 0)??e,e));u.current.style.setProperty("--inspector-size",`${r}px`),g(r,{reason:"controlled"})}},[D,m,y,T,g]),M){const e=t.inspectorMode==="expanded";return n.createElement(U.Root,{open:e,onOpenChange:o=>t.setInspectorMode(o?"expanded":"collapsed")},n.createElement(U.Content,{side:"end",style:{padding:0},width:{initial:`${v}px`}},n.createElement(ee.VisuallyHidden,null,n.createElement(U.Title,null,"Inspector")),A))}const{defaultOpen:Ie,open:ve,onOpenChange:xe,size:Ce,defaultSize:Ee,onSizeChange:Se,sizeUpdate:Ne,sizeUpdateMs:we,...me}=f;return n.createElement("div",{...me,ref:ue,className:(0,Z.default)("rt-ShellInspector",s),"data-mode":t.inspectorMode,"data-peek":t.peekTarget==="inspector"||void 0,"data-presentation":t.currentBreakpointReady?N:void 0,"data-open":t.currentBreakpointReady&&pe&&O||void 0,style:{...le,"--inspector-size":`${v}px`,"--inspector-min-size":`${m}px`,"--inspector-max-size":`${y}px`}},n.createElement("div",{className:"rt-ShellInspectorContent","data-visible":O||void 0},A),fe)});_.displayName="Shell.Inspector",_.Handle=b.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, useResponsiveValue } 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 } from '../shell.types.js';\n\ninterface PaneProps extends React.ComponentPropsWithoutRef<'div'> {\n presentation?: ResponsivePresentation;\n // legacy mode removed\n expandedSize?: number;\n minSize?: number;\n maxSize?: number;\n resizable?: boolean;\n collapsible?: boolean;\n onExpand?: () => void;\n onCollapse?: () => void;\n onResize?: (size: number) => void;\n resizer?: React.ReactNode;\n onResizeStart?: (size: number) => void;\n onResizeEnd?: (size: number) => void;\n snapPoints?: number[];\n snapTolerance?: number;\n collapseThreshold?: number;\n paneId?: string;\n persistence?: PaneSizePersistence;\n}\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 InspectorPublicProps = PaneProps &\n (InspectorControlledProps | InspectorUncontrolledProps) & {\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\nexport const Inspector = React.forwardRef<HTMLDivElement, InspectorPublicProps>(\n (\n {\n className,\n presentation = { initial: 'overlay', lg: 'fixed' },\n // removed legacy props\n // new API\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 ...props\n },\n ref,\n ) => {\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 emitSizeChange = React.useMemo(() => {\n const cb = (props as any).onSizeChange as undefined | ((s: number, meta: InspectorSizeChangeMeta) => void);\n const strategy = (props as any).sizeUpdate as undefined | 'throttle' | 'debounce';\n const ms = (props as any).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 }, [(props as any).onSizeChange, (props as any).sizeUpdate, (props as any).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 // eslint-disable-next-line no-console\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 // eslint-disable-next-line no-console\n console.warn('Shell.Inspector: Switching between controlled and uncontrolled `open` is not supported.');\n wasControlledRef.current = isControlled;\n }\n }, [open]);\n\n const responsiveNotifiedRef = React.useRef(false);\n const didInitFromDefaultOpenRef = React.useRef(false);\n const resolvedDefaultOpen = useResponsiveValue(defaultOpen);\n React.useEffect(() => {\n if (!shell.currentBreakpointReady) return;\n if (didInitFromDefaultOpenRef.current) return;\n if (typeof open !== 'undefined') return; // controlled ignores default\n if (typeof defaultOpen === 'undefined') return;\n const initialOpen = Boolean(resolvedDefaultOpen);\n shell.setInspectorMode(initialOpen ? 'expanded' : 'collapsed');\n if (initialOpen) onOpenChange?.(true, { reason: 'init' });\n didInitFromDefaultOpenRef.current = true;\n }, [shell.currentBreakpointReady, resolvedDefaultOpen, defaultOpen, open, onOpenChange]);\n\n // Controlled responsive open\n const resolvedOpen = useResponsiveValue(open);\n React.useEffect(() => {\n if (typeof resolvedOpen === 'undefined') return;\n const shouldExpand = Boolean(resolvedOpen);\n if (shouldExpand && shell.inspectorMode !== 'expanded') shell.setInspectorMode('expanded');\n if (!shouldExpand && shell.inspectorMode !== 'collapsed') shell.setInspectorMode('collapsed');\n }, [resolvedOpen, shell.inspectorMode]);\n\n // Removed boolean-only mount init; handled in responsive init effect above\n\n // Removed: boolean-only controlled sync. Use responsive-resolved effect below instead.\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 if (!responsiveNotifiedRef.current) {\n onOpenChange?.(shell.inspectorMode === 'expanded', { reason: 'toggle' });\n }\n responsiveNotifiedRef.current = false;\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 const v = window.localStorage.getItem(key);\n return v ? Number(v) : undefined;\n },\n save: (size: number) => {\n if (typeof window === 'undefined') return;\n window.localStorage.setItem(key, String(size));\n },\n };\n return adapter;\n }, [paneId, persistence]);\n\n React.useEffect(() => {\n let mounted = true;\n (async () => {\n if (!resizable || !persistenceAdapter?.load || isOverlay) return;\n const loaded = await persistenceAdapter.load();\n if (mounted && typeof loaded === 'number' && localRef.current) {\n localRef.current.style.setProperty('--inspector-size', `${loaded}px`);\n onResize?.(loaded);\n }\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 (props as any).size === 'undefined' && typeof (props as any).defaultSize !== 'undefined') {\n const px = normalizeToPx((props as any).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 React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof (props as any).size === 'undefined') return;\n const px = normalizeToPx((props as any).size);\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 }, [(props as any).size, 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 const {\n defaultOpen: _inspectorDefaultOpenIgnored,\n open: _inspectorOpenIgnored,\n onOpenChange: _inspectorOnOpenChangeIgnored,\n size: _sz,\n defaultSize: _dsz,\n onSizeChange: _osc,\n sizeUpdate: _szu,\n sizeUpdateMs: _szums,\n ...inspectorDomProps\n } = props as any;\n\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 },\n) as InspectorComponent;\n\nInspector.displayName = 'Shell.Inspector';\nInspector.Handle = InspectorHandle;\n"],
|
|
5
|
-
"mappings": "skBAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,eAAAE,IAAA,eAAAC,GAAAH,IAAA,IAAAI,EAAuB,oBACvBC,EAAuB,yBACvBC,EAAuB,0BACvBC,
|
|
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", "className", "presentation", "defaultOpen", "open", "onOpenChange", "expandedSize", "minSize", "maxSize", "resizable", "collapsible", "onExpand", "onCollapse", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "paneId", "persistence", "children", "style", "props", "ref", "shell", "resolvedPresentation", "isOverlay", "isStacked", "localRef", "setRef", "node", "childArray", "handleChildren", "el", "contentChildren", "emitSizeChange", "cb", "strategy", "ms", "t", "s", "meta", "last", "now", "wasControlledRef", "isControlled", "responsiveNotifiedRef", "didInitFromDefaultOpenRef", "resolvedDefaultOpen", "initialOpen", "resolvedOpen", "shouldExpand", "initNotifiedRef", "lastInspectorModeRef", "isExpanded", "persistenceAdapter", "key", "v", "size", "mounted", "loaded", "handleEl", "client", "startClient", "startSize", "isRtl", "delta", "i", "normalizeToPx", "value", "str", "rem", "pct", "base", "n", "px", "clamped", "_inspectorDefaultOpenIgnored", "_inspectorOpenIgnored", "_inspectorOnOpenChangeIgnored", "_sz", "_dsz", "_osc", "_szu", "_szums", "inspectorDomProps", "classNames"]
|
|
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, useResponsiveValue } 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 } from '../shell.types.js';\n\ninterface PaneProps extends React.ComponentPropsWithoutRef<'div'> {\n presentation?: ResponsivePresentation;\n // legacy mode removed\n expandedSize?: number;\n minSize?: number;\n maxSize?: number;\n resizable?: boolean;\n collapsible?: boolean;\n onExpand?: () => void;\n onCollapse?: () => void;\n onResize?: (size: number) => void;\n resizer?: React.ReactNode;\n onResizeStart?: (size: number) => void;\n onResizeEnd?: (size: number) => void;\n snapPoints?: number[];\n snapTolerance?: number;\n collapseThreshold?: number;\n paneId?: string;\n persistence?: PaneSizePersistence;\n}\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 InspectorPublicProps = PaneProps &\n (InspectorControlledProps | InspectorUncontrolledProps) & {\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\nexport const Inspector = React.forwardRef<HTMLDivElement, InspectorPublicProps>(\n (\n {\n className,\n presentation = { initial: 'overlay', lg: 'fixed' },\n // removed legacy props\n // new API\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 ...props\n },\n ref,\n ) => {\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 onSizeChange = (props as any).onSizeChange;\n const sizeUpdate = (props as any).sizeUpdate;\n const sizeUpdateMs = (props as any).sizeUpdateMs;\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 responsiveNotifiedRef = React.useRef(false);\n const didInitFromDefaultOpenRef = React.useRef(false);\n const resolvedDefaultOpen = useResponsiveValue(defaultOpen);\n React.useEffect(() => {\n if (!shell.currentBreakpointReady) return;\n if (didInitFromDefaultOpenRef.current) return;\n if (typeof open !== 'undefined') return; // controlled ignores default\n if (typeof defaultOpen === 'undefined') return;\n const initialOpen = Boolean(resolvedDefaultOpen);\n shell.setInspectorMode(initialOpen ? 'expanded' : 'collapsed');\n if (initialOpen) onOpenChange?.(true, { reason: 'init' });\n didInitFromDefaultOpenRef.current = true;\n }, [shell, resolvedDefaultOpen, defaultOpen, open, onOpenChange]);\n\n // Controlled responsive open\n const resolvedOpen = useResponsiveValue(open);\n React.useEffect(() => {\n if (typeof resolvedOpen === 'undefined') return;\n const shouldExpand = Boolean(resolvedOpen);\n if (shouldExpand && shell.inspectorMode !== 'expanded') shell.setInspectorMode('expanded');\n if (!shouldExpand && shell.inspectorMode !== 'collapsed') shell.setInspectorMode('collapsed');\n }, [shell, resolvedOpen]);\n\n // Removed boolean-only mount init; handled in responsive init effect above\n\n // Removed: boolean-only controlled sync. Use responsive-resolved effect below instead.\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 if (!responsiveNotifiedRef.current) {\n onOpenChange?.(shell.inspectorMode === 'expanded', { reason: 'toggle' });\n }\n responsiveNotifiedRef.current = false;\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 const v = window.localStorage.getItem(key);\n return v ? Number(v) : undefined;\n },\n save: (size: number) => {\n if (typeof window === 'undefined') return;\n window.localStorage.setItem(key, String(size));\n },\n };\n return adapter;\n }, [paneId, persistence]);\n\n React.useEffect(() => {\n let mounted = true;\n (async () => {\n if (!resizable || !persistenceAdapter?.load || isOverlay) return;\n const loaded = await persistenceAdapter.load();\n if (mounted && typeof loaded === 'number' && localRef.current) {\n localRef.current.style.setProperty('--inspector-size', `${loaded}px`);\n onResize?.(loaded);\n }\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 (props as any).size === 'undefined' && typeof (props as any).defaultSize !== 'undefined') {\n const px = normalizeToPx((props as any).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 = (props as any).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 const {\n defaultOpen: _inspectorDefaultOpenIgnored,\n open: _inspectorOpenIgnored,\n onOpenChange: _inspectorOnOpenChangeIgnored,\n size: _sz,\n defaultSize: _dsz,\n onSizeChange: _osc,\n sizeUpdate: _szu,\n sizeUpdateMs: _szums,\n ...inspectorDomProps\n } = props as any;\n\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 },\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", "className", "presentation", "defaultOpen", "open", "onOpenChange", "expandedSize", "minSize", "maxSize", "resizable", "collapsible", "onExpand", "onCollapse", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "paneId", "persistence", "children", "style", "props", "ref", "shell", "resolvedPresentation", "isOverlay", "isStacked", "localRef", "setRef", "node", "childArray", "handleChildren", "el", "contentChildren", "onSizeChange", "sizeUpdate", "sizeUpdateMs", "emitSizeChange", "cb", "strategy", "ms", "t", "s", "meta", "last", "now", "wasControlledRef", "isControlled", "responsiveNotifiedRef", "didInitFromDefaultOpenRef", "resolvedDefaultOpen", "initialOpen", "resolvedOpen", "shouldExpand", "initNotifiedRef", "lastInspectorModeRef", "isExpanded", "persistenceAdapter", "key", "v", "size", "mounted", "loaded", "handleEl", "client", "startClient", "startSize", "isRtl", "delta", "i", "normalizeToPx", "value", "str", "rem", "pct", "base", "n", "px", "clamped", "controlledSize", "_inspectorDefaultOpenIgnored", "_inspectorOpenIgnored", "_inspectorOnOpenChangeIgnored", "_sz", "_dsz", "_osc", "_szu", "_szums", "inspectorDomProps", "classNames"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var ge=Object.create;var w=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var ve=Object.getOwnPropertyNames;var Re=Object.getPrototypeOf,Ce=Object.prototype.hasOwnProperty;var ze=(s,d)=>{for(var a in d)w(s,a,{get:d[a],enumerable:!0})},ne=(s,d,a,c)=>{if(d&&typeof d=="object"||typeof d=="function")for(let l of ve(d))!Ce.call(s,l)&&l!==a&&w(s,l,{get:()=>d[l],enumerable:!(c=Pe(d,l))||c.enumerable});return s};var V=(s,d,a)=>(a=s!=null?ge(Re(s)):{},ne(d||!s||!s.__esModule?w(a,"default",{value:s,enumerable:!0}):a,s)),xe=s=>ne(w({},"__esModule",{value:!0}),s);var Ee={};ze(Ee,{Sidebar:()=>A});module.exports=xe(Ee);var n=V(require("react")),re=V(require("classnames")),B=V(require("../sheet.js")),oe=require("../visually-hidden.js"),W=require("../shell.context.js"),v=require("../shell.hooks.js"),ie=require("./shell-resize.js"),h=require("./shell-handles.js"),_e=require("../shell.types.js");const A=n.forwardRef(({className:s,presentation:d={initial:"overlay",md:"fixed"},expandedSize:a=288,minSize:c=200,maxSize:l=400,resizable:N=!1,collapsible:se=!0,onExpand:I,onCollapse:L,onResize:k,onResizeStart:ae,onResizeEnd:de,snapPoints:le,snapTolerance:ue,collapseThreshold:ce,paneId:T,persistence:H,children:fe,style:be,thinSize:M=64,toggleModes:D,state:p,defaultState:m,onStateChange:F,...y},g)=>{const t=(0,W.useShell)(),$=(0,v.useResponsivePresentation)(d),P=$==="overlay",pe=$==="stacked",f=n.useRef(null),me=n.useCallback(e=>{f.current=e,typeof g=="function"?g(e):g&&(g.current=e)},[g]),j=n.Children.toArray(fe),q=j.filter(e=>n.isValidElement(e)&&e.type===h.SidebarHandle),K=j.filter(e=>!(n.isValidElement(e)&&e.type===h.SidebarHandle)),G=y.onSizeChange,J=y.sizeUpdate,Q=y.sizeUpdateMs,R=n.useMemo(()=>{const e=G,r=J,o=Q??50;if(!e)return()=>{};if(r==="debounce"){let i=null;return(u,S)=>{i&&clearTimeout(i),i=setTimeout(()=>{e(u,S)},o)}}if(r==="throttle"){let i=0;return(u,S)=>{const te=Date.now();te-i>=o&&(i=te,e(u,S))}}return(i,u)=>e(i,u)},[G,J,Q]),ye=n.useId();n.useEffect(()=>(t.setHasSidebar(!0),()=>{t.setHasSidebar(!1)}),[t,ye]);const C=n.useRef(null);n.useEffect(()=>{const e=typeof p<"u";if(C.current===null){C.current=e;return}C.current!==e&&(console.warn("Shell.Sidebar: Switching between controlled and uncontrolled `state` is not supported."),C.current=e)},[p]);const b=(0,v.useResponsiveValue)(p),X=(0,v.useResponsiveValue)(m),Y=n.useRef(!1);n.useEffect(()=>{if(!Y.current&&t.currentBreakpointReady){if(Y.current=!0,typeof p<"u"&&b){t.sidebarMode!==b&&t.setSidebarMode(b);return}if(typeof m<"u"){const e=X??m;t.sidebarMode!==e&&t.setSidebarMode(e),F?.(e,{reason:"init"});return}}},[t.currentBreakpointReady,X,b,p,m]),n.useEffect(()=>{b!==void 0&&t.sidebarMode!==b&&t.setSidebarMode(b)},[t,b]);const z=n.useRef(null);n.useEffect(()=>{typeof p>"u"&&(z.current===null?z.current=t.sidebarMode:z.current!==t.sidebarMode&&(z.current=t.sidebarMode,F?.(t.sidebarMode,{reason:"toggle"})))},[t.sidebarMode,p,F]),n.useEffect(()=>{t.sidebarMode==="expanded"?I?.():L?.()},[t.sidebarMode,I,L]);const Z=t.sidebarMode!=="collapsed",x=n.useMemo(()=>{if(!T||H)return H;const e=`kookie-ui:shell:sidebar:${T}`;return{load:()=>{if(typeof window>"u")return;const o=window.localStorage.getItem(e);return o?Number(o):void 0},save:o=>{typeof window>"u"||window.localStorage.setItem(e,String(o))}}},[T,H]);n.useEffect(()=>{let e=!0;return(async()=>{if(!N||!x?.load||P)return;const r=await x.load();e&&typeof r=="number"&&f.current&&(f.current.style.setProperty("--sidebar-size",`${r}px`),k?.(r))})(),()=>{e=!1}},[N,x,k,P]);const E=(0,W.useShell)(),U=n.useCallback(()=>{const e=m??"expanded";return e==="thin"||e==="expanded"?e:"expanded"},[m]);n.useEffect(()=>{if(!E.setSidebarToggleComputer)return;const e=D??"both",r=o=>{if(e==="both")return o==="collapsed"?"thin":o==="thin"?"expanded":"collapsed";const i=U();return o==="collapsed"?i:o===i?"collapsed":i};return E.setSidebarToggleComputer(r),()=>{E.setSidebarToggleComputer?.(o=>o==="collapsed"?"thin":o==="thin"?"expanded":"collapsed")}},[E,D,U]);const ee=n.useRef(a),Se=n.useRef("expanded");n.useEffect(()=>{t.sidebarMode!=="collapsed"&&(Se.current=t.sidebarMode,ee.current=t.sidebarMode==="thin"?M:a)},[t.sidebarMode,M,a]);const he=N&&!P&&t.sidebarMode==="expanded"?n.createElement(ie.PaneResizeContext.Provider,{value:{containerRef:f,cssVarName:"--sidebar-size",minSize:c,maxSize:l,defaultSize:a,orientation:"vertical",edge:"end",computeNext:(e,r,o)=>{const i=getComputedStyle(f.current).direction==="rtl",u=e-r;return o+(i?-u:u)},onResize:k,onResizeStart:ae,onResizeEnd:e=>{de?.(e),R(e,{reason:"resize"}),x?.save?.(e)},target:"sidebar",collapsible:se,snapPoints:le,snapTolerance:ue??8,collapseThreshold:ce,requestCollapse:()=>t.setSidebarMode("collapsed"),requestToggle:()=>t.togglePane("sidebar")}},q.length>0?q.map((e,r)=>n.cloneElement(e,{key:e.key??r})):n.createElement(h.PaneHandle,null)):null,{state:we,defaultState:Ne,onStateChange:ke,size:Te,defaultSize:He,onSizeChange:De,sizeUpdate:Fe,sizeUpdateMs:$e,...Me}=y,_=n.useCallback(e=>{if(e==null)return;if(typeof e=="number"&&Number.isFinite(e))return e;const r=String(e).trim();if(!r)return;if(r.endsWith("px"))return Number.parseFloat(r);if(r.endsWith("rem")){const i=Number.parseFloat(getComputedStyle(document.documentElement).fontSize||"16")||16;return Number.parseFloat(r)*i}if(r.endsWith("%")){const i=Number.parseFloat(r),u=document.documentElement.clientWidth||window.innerWidth||0;return i/100*u}const o=Number.parseFloat(r);return Number.isFinite(o)?o:void 0},[]);n.useEffect(()=>{if(!f.current)return;const{size:e,defaultSize:r}=y;if(typeof e>"u"&&typeof r<"u"){const o=_(r);if(typeof o=="number"&&Number.isFinite(o)){const S=Math.min((typeof l=="number"?l:void 0)??o,Math.max((typeof c=="number"?c:void 0)??o,o));f.current.style.setProperty("--sidebar-size",`${S}px`),R(S,{reason:"init"})}}},[]);const O=y.size;if(n.useEffect(()=>{if(!f.current||typeof O>"u")return;const e=_(O);if(typeof e=="number"&&Number.isFinite(e)){const i=Math.min((typeof l=="number"?l:void 0)??e,Math.max((typeof c=="number"?c:void 0)??e,e));f.current.style.setProperty("--sidebar-size",`${i}px`),R(i,{reason:"controlled"})}},[O,c,l,_,R]),P){const e=t.sidebarMode!=="collapsed";return n.createElement(B.Root,{open:e,onOpenChange:r=>t.setSidebarMode(r?"expanded":"collapsed")},n.createElement(B.Content,{side:"start",style:{padding:0},width:{initial:`${e?t.sidebarMode==="thin"?M:a:ee.current}px`}},n.createElement(oe.VisuallyHidden,null,n.createElement(B.Title,null,"Navigation")),K))}return n.createElement("div",{...Me,ref:me,className:(0,re.default)("rt-ShellSidebar",s),"data-mode":t.sidebarMode,"data-peek":t.peekTarget==="sidebar"||void 0,"data-presentation":t.currentBreakpointReady?$:void 0,"data-open":t.currentBreakpointReady&&pe&&Z||void 0,style:{...be,"--sidebar-size":`${a}px`,"--sidebar-thin-size":`${M}px`,"--sidebar-min-size":`${c}px`,"--sidebar-max-size":`${l}px`,...t.peekTarget==="sidebar"&&t.sidebarMode==="collapsed"&&!P?(()=>{const e=D??"both",r=t.sidebarMode;let o;if(e==="both")o=r==="collapsed"?"thin":r==="thin"?"expanded":"collapsed";else{const i=U();o=r==="collapsed"?i:"collapsed"}return o==="thin"?{"--peek-sidebar-width":`${M}px`}:{"--peek-sidebar-width":`var(--sidebar-size, ${a}px)`}})():{}}},n.createElement("div",{className:"rt-ShellSidebarContent","data-visible":Z||void 0},K),he)});A.displayName="Shell.Sidebar",A.Handle=h.SidebarHandle;
|
|
2
2
|
//# sourceMappingURL=shell-sidebar.js.map
|