@primereact/headless 11.0.0-alpha.1 → 11.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/animateonscroll/index.d.ts +2 -0
  2. package/animateonscroll/index.mjs +2 -0
  3. package/animateonscroll/index.mjs.map +1 -0
  4. package/animateonscroll/useAnimateOnScroll.d.ts +3 -0
  5. package/animateonscroll/useAnimateOnScroll.props.d.ts +2 -0
  6. package/animateonscroll/useAnimateOnScroll.test.d.ts +0 -0
  7. package/drawer/index.d.ts +2 -0
  8. package/drawer/index.mjs +2 -0
  9. package/drawer/index.mjs.map +1 -0
  10. package/drawer/useDrawer.d.ts +22 -0
  11. package/drawer/useDrawer.props.d.ts +2 -0
  12. package/drawer/useDrawer.test.d.ts +0 -0
  13. package/focustrap/index.d.ts +2 -0
  14. package/focustrap/index.mjs +2 -0
  15. package/focustrap/index.mjs.map +1 -0
  16. package/focustrap/useFocusTrap.d.ts +5 -0
  17. package/focustrap/useFocusTrap.props.d.ts +2 -0
  18. package/focustrap/useFocusTrap.test.d.ts +0 -0
  19. package/imagecompare/index.d.ts +2 -0
  20. package/imagecompare/index.mjs +2 -0
  21. package/imagecompare/index.mjs.map +1 -0
  22. package/imagecompare/useImageCompare.d.ts +8 -0
  23. package/imagecompare/useImageCompare.props.d.ts +2 -0
  24. package/imagecompare/useImageCompare.test.d.ts +0 -0
  25. package/message/index.d.ts +2 -0
  26. package/message/index.mjs +2 -0
  27. package/message/index.mjs.map +1 -0
  28. package/message/useMessage.d.ts +6 -0
  29. package/message/useMessage.props.d.ts +2 -0
  30. package/message/useMessage.test.d.ts +0 -0
  31. package/package.json +5 -5
  32. package/portal/index.d.ts +2 -0
  33. package/portal/index.mjs +2 -0
  34. package/portal/index.mjs.map +1 -0
  35. package/portal/usePortal.d.ts +3 -0
  36. package/portal/usePortal.props.d.ts +2 -0
  37. package/portal/usePortal.test.d.ts +0 -0
@@ -0,0 +1,2 @@
1
+ export * from './useAnimateOnScroll';
2
+ export * from './useAnimateOnScroll.props';
@@ -0,0 +1,2 @@
1
+ var H=Object.defineProperty,U=Object.defineProperties;var j=Object.getOwnPropertyDescriptors;var f=Object.getOwnPropertySymbols;var O=Object.prototype.hasOwnProperty,h=Object.prototype.propertyIsEnumerable;var C=(o,e,r)=>e in o?H(o,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):o[e]=r,I=(o,e)=>{for(var r in e||(e={}))O.call(e,r)&&C(o,r,e[r]);if(f)for(var r of f(e))h.call(e,r)&&C(o,r,e[r]);return o},L=(o,e)=>U(o,j(e));var k=(o,e)=>{var r={};for(var n in o)O.call(o,n)&&e.indexOf(n)<0&&(r[n]=o[n]);if(o!=null&&f)for(var n of f(o))e.indexOf(n)<0&&h.call(o,n)&&(r[n]=o[n]);return r};import{withHeadless as q}from"@primereact/core/headless";import{useIntersectionObserver as g}from"@primereact/hooks/use-intersection-observer";import{useMountEffect as z}from"@primereact/hooks/use-mount-effect";import{useUnmountEffect as B}from"@primereact/hooks/use-unmount-effect";import{addClass as x,removeClass as u}from"@primeuix/utils/dom";import*as i from"react";var S={enterClassName:"",leaveClassName:"",once:!1,root:void 0,rootMargin:void 0,threshold:.5};var X=q({name:"useAnimateOnScroll",defaultProps:S,setup({props:o,elementRef:e}){let E=o,{enterClassName:r,leaveClassName:n,once:l}=E,P=k(E,["enterClassName","leaveClassName","once"]),m=i.useRef(!1),c=i.useRef(null),s=i.useRef(void 0),{observe:M,unobserve:p}=g(L(I({},P),{onIntersect:([t])=>{t.isIntersecting?T():w(),m.current=!0}})),{observe:v,unobserve:d}=g({threshold:0,onIntersect:([t])=>{let a=e.current;a&&(t==null?void 0:t.boundingClientRect.top)>0&&!t.isIntersecting&&(a.style.opacity=r?"0":"",r&&u(a,r),n&&u(a,n),d(a),a.removeAttribute("data-pd-animateonscroll-state"),s.current=void 0)}}),b=i.useCallback(()=>{let t=e.current;t&&(p(t),d(t),m.current=!1)},[p,d,e]),T=i.useCallback(()=>{let t=e.current;!t||s.current!==void 0||s.current!=="enter"&&(t.style.opacity="",r&&(n&&u(t,n),x(t,r!=null?r:""),t.setAttribute("data-pd-animateonscroll-state","enter"),s.current="enter",A(),l&&setTimeout(()=>{b()},0)))},[s,r,n,l,b]),w=i.useCallback(()=>{let t=e.current;!t||s.current!==void 0||s.current!=="leave"&&(n?(r&&u(t,r),x(t,n!=null?n:""),A(),s.current="leave",t.setAttribute("data-pd-animateonscroll-state","leave")):t.style.opacity="0")},[s,r,n]),A=i.useCallback(()=>{let t=e.current;t&&(c.current||(c.current=()=>{t&&(r&&u(t,r),n&&u(t,n),l||v(t),y(),s.current==="leave"&&(t.style.opacity="0"),s.current==="enter"&&(t.style.opacity=""),t.removeAttribute("data-pd-animateonscroll-state"),s.current=void 0)},t.addEventListener("animationend",c.current),t.addEventListener("transitionend",c.current)))},[r,n,l,v]),y=i.useCallback(()=>{let t=e.current;t&&c.current&&(t.removeEventListener("animationend",c.current),t.removeEventListener("transitionend",c.current),c.current=null)},[]);return i.useLayoutEffect(()=>{e.current&&r&&(e.current.style.opacity="0")},[e,r]),z(()=>{e.current&&(e.current.setAttribute("data-pd-animateonscroll","true"),setTimeout(()=>e.current&&M(e.current),0))}),B(()=>{e.current&&(e.current.removeAttribute("data-pd-animateonscroll"),e.current.removeAttribute("data-pd-animateonscroll-state"),p(e.current),d(e.current),y())}),{state:{}}}});export{S as defaultProps,X as useAnimateOnScroll};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/animateonscroll/useAnimateOnScroll.ts","../../src/animateonscroll/useAnimateOnScroll.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useIntersectionObserver } from '@primereact/hooks/use-intersection-observer';\nimport { useMountEffect } from '@primereact/hooks/use-mount-effect';\nimport { useUnmountEffect } from '@primereact/hooks/use-unmount-effect';\nimport { addClass, removeClass } from '@primeuix/utils/dom';\nimport * as React from 'react';\nimport { defaultProps } from './useAnimateOnScroll.props';\n\nexport const useAnimateOnScroll = withHeadless({\n name: 'useAnimateOnScroll',\n defaultProps,\n setup({ props, elementRef }) {\n const { enterClassName, leaveClassName, once, ...rest } = props;\n const isObserverActiveRef = React.useRef(false);\n const animationEndListener = React.useRef<(() => void) | null>(null);\n const animationState = React.useRef<'enter' | 'leave' | undefined>(undefined);\n const { observe, unobserve } = useIntersectionObserver({\n ...rest,\n onIntersect: ([entry]) => {\n if (entry.isIntersecting) {\n enter();\n } else {\n leave();\n }\n\n isObserverActiveRef.current = true;\n }\n });\n\n const { observe: observeReset, unobserve: unobserveReset } = useIntersectionObserver({\n threshold: 0,\n onIntersect: ([entry]) => {\n const el = elementRef.current;\n\n if (!el) return;\n\n if (entry?.boundingClientRect.top > 0 && !entry.isIntersecting) {\n el.style.opacity = enterClassName ? '0' : '';\n\n if (enterClassName) {\n removeClass(el, enterClassName);\n }\n\n if (leaveClassName) {\n removeClass(el, leaveClassName);\n }\n\n unobserveReset(el);\n el.removeAttribute('data-pd-animateonscroll-state');\n animationState.current = undefined;\n }\n }\n });\n const unbindIntersectionObserver = React.useCallback(() => {\n const el = elementRef.current;\n\n if (el) {\n unobserve(el);\n unobserveReset(el);\n isObserverActiveRef.current = false;\n }\n }, [unobserve, unobserveReset, elementRef]);\n\n const enter = React.useCallback(() => {\n const el = elementRef.current;\n\n if (!el || animationState.current !== undefined) return;\n\n if (animationState.current === 'enter') return;\n\n el.style.opacity = '';\n\n if (enterClassName) {\n if (leaveClassName) {\n removeClass(el, leaveClassName);\n }\n\n addClass(el, enterClassName ?? '');\n el.setAttribute('data-pd-animateonscroll-state', 'enter');\n animationState.current = 'enter';\n\n bindAnimationEvents();\n\n if (once) {\n setTimeout(() => {\n unbindIntersectionObserver();\n }, 0);\n }\n }\n }, [animationState, enterClassName, leaveClassName, once, unbindIntersectionObserver]);\n\n const leave = React.useCallback(() => {\n const el = elementRef.current;\n\n if (!el || animationState.current !== undefined) return;\n\n if (animationState.current === 'leave') return;\n\n if (leaveClassName) {\n if (enterClassName) {\n removeClass(el, enterClassName);\n }\n\n addClass(el, leaveClassName ?? '');\n bindAnimationEvents();\n animationState.current = 'leave';\n el.setAttribute('data-pd-animateonscroll-state', 'leave');\n } else {\n el.style.opacity = '0';\n }\n }, [animationState, enterClassName, leaveClassName]);\n\n const bindAnimationEvents = React.useCallback(() => {\n const el = elementRef.current;\n\n if (!el) return;\n\n if (!animationEndListener.current) {\n animationEndListener.current = () => {\n if (el) {\n if (enterClassName) {\n removeClass(el, enterClassName);\n }\n\n if (leaveClassName) {\n removeClass(el, leaveClassName);\n }\n\n if (!once) {\n observeReset(el);\n }\n\n unbindAnimationEvents();\n\n if (animationState.current === 'leave') {\n el.style.opacity = '0';\n }\n\n if (animationState.current === 'enter') {\n el.style.opacity = '';\n }\n\n el.removeAttribute('data-pd-animateonscroll-state');\n animationState.current = undefined;\n }\n };\n\n el.addEventListener('animationend', animationEndListener.current);\n el.addEventListener('transitionend', animationEndListener.current);\n }\n }, [enterClassName, leaveClassName, once, observeReset]);\n\n const unbindAnimationEvents = React.useCallback(() => {\n const el = elementRef.current;\n\n if (!el) return;\n\n if (animationEndListener.current) {\n el.removeEventListener('animationend', animationEndListener.current);\n el.removeEventListener('transitionend', animationEndListener.current);\n animationEndListener.current = null;\n }\n }, []);\n\n // Effects\n React.useLayoutEffect(() => {\n if (elementRef.current && enterClassName) {\n elementRef.current.style.opacity = '0';\n }\n }, [elementRef, enterClassName]);\n\n useMountEffect(() => {\n if (elementRef.current) {\n elementRef.current.setAttribute('data-pd-animateonscroll', 'true');\n setTimeout(() => elementRef.current && observe(elementRef.current), 0);\n }\n });\n\n useUnmountEffect(() => {\n if (elementRef.current) {\n elementRef.current.removeAttribute('data-pd-animateonscroll');\n elementRef.current.removeAttribute('data-pd-animateonscroll-state');\n unobserve(elementRef.current);\n unobserveReset(elementRef.current);\n unbindAnimationEvents();\n }\n });\n\n const state = {};\n\n return {\n state\n };\n }\n});\n","import type { useAnimateOnScrollProps } from '@primereact/types/shared/animateonscroll';\n\nexport const defaultProps: useAnimateOnScrollProps = {\n enterClassName: '',\n leaveClassName: '',\n once: false,\n root: undefined,\n rootMargin: undefined,\n threshold: 0.5\n};\n"],"mappings":"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","names":["withHeadless","useIntersectionObserver","useMountEffect","useUnmountEffect","addClass","removeClass","React","defaultProps","useAnimateOnScroll","withHeadless","defaultProps","props","elementRef","_a","enterClassName","leaveClassName","once","rest","__objRest","isObserverActiveRef","animationEndListener","animationState","observe","unobserve","useIntersectionObserver","__spreadProps","__spreadValues","entry","enter","leave","observeReset","unobserveReset","el","removeClass","unbindIntersectionObserver","addClass","bindAnimationEvents","unbindAnimationEvents","useMountEffect","useUnmountEffect"]}
@@ -0,0 +1,3 @@
1
+ export declare const useAnimateOnScroll: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/animateonscroll").useAnimateOnScrollProps, unknown, {
2
+ state: {};
3
+ }>;
@@ -0,0 +1,2 @@
1
+ import type { useAnimateOnScrollProps } from '@primereact/types/shared/animateonscroll';
2
+ export declare const defaultProps: useAnimateOnScrollProps;
File without changes
@@ -0,0 +1,2 @@
1
+ export * from './useDrawer';
2
+ export * from './useDrawer.props';
@@ -0,0 +1,2 @@
1
+ import{withHeadless as j}from"@primereact/core/headless";import{useEventListener as k,useMountEffect as A,useUnmountEffect as F,useUpdateEffect as D}from"@primereact/hooks";import{$dt as L}from"@primeuix/styled";import{addClass as U,blockBodyScroll as q,focus as z,unblockBodyScroll as $,ZIndex as f}from"@primeuix/utils";import*as o from"react";var M={open:!1,modal:!0,blockScroll:!1,dismissable:!0,baseZIndex:0,autoZIndex:!0,onOpenChange:void 0};var p=j({name:"useDrawer",defaultProps:M,setup:({props:e,elementRef:m,$primereact:S})=>{var v,R;let[s,d]=o.useState((v=e.open)!=null?v:!1),[l,c]=o.useState((R=e.open)!=null?R:!1),n=o.useRef(null),b=o.useRef(null),r=o.useRef(null),E={opened:s,maskVisible:l};A(()=>{e.open&&c(!0)}),D(()=>{e.open&&!l&&c(!0)},[e.open]),D(()=>{l&&!s&&d(!0)},[l]),F(()=>{c(!1),e.autoZIndex&&f.clear(n==null?void 0:n.current)});let u=()=>{var t;d(!1),(t=e==null?void 0:e.onOpenChange)==null||t.call(e,{value:!1})},w=()=>{var a;let t=!s;t&&!l&&c(!0),(a=e==null?void 0:e.onOpenChange)==null||a.call(e,{value:t})},y=()=>{var t;(t=e==null?void 0:e.onOpenChange)==null||t.call(e,{value:E.opened})},O=()=>{var t,a,i;h(),T(),e.autoZIndex&&f.set("modal",n.current,e.baseZIndex+((i=(a=(t=S.config)==null?void 0:t.zIndex)==null?void 0:a.modal)!=null?i:1100))},g=()=>{P()},x=()=>{e.modal&&U(n.current,"p-overlay-mask-leave")},C=()=>{e.autoZIndex&&f.clear(n.current),I(),N(),c(!1)},h=()=>{var a,i;let t=H((i=(a=b.current)==null?void 0:a.elementRef.current)!=null?i:null);t||r.current&&(t=r.current.elementRef.current),t&&z(t)},H=t=>t&&t.querySelector("[autoFocus]"),[T,I]=k({type:"keydown",listener:t=>V(t)}),[Z,B]=k({type:"click",listener:t=>{K(t)&&u()}}),K=t=>m.current&&!m.current.contains(t.target),P=()=>{e.dismissable&&!e.modal&&Z(),e.blockScroll&&q({variableName:L("scrollbar.width").name})},N=()=>{B(),e.blockScroll&&$({variableName:L("scrollbar.width").name})},V=t=>{t.code==="Escape"&&u()};return{state:E,maskRef:n,motionRef:b,closeButtonRef:r,close:u,onOpenStateChange:w,onOpenChange:y,onMotionEnter:O,onMotionAfterEnter:g,onMotionBeforeLeave:x,onMotionAfterLeave:C,onMaskClick:t=>{e.dismissable&&e.modal&&n.current===t.target&&u()}}}});export{M as defaultProps,p as useDrawer};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/drawer/useDrawer.ts","../../src/drawer/useDrawer.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useEventListener, useMountEffect, useUnmountEffect, useUpdateEffect } from '@primereact/hooks';\nimport { $dt } from '@primeuix/styled';\nimport { addClass, blockBodyScroll, focus, unblockBodyScroll, ZIndex } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useDrawer.props';\n\nexport const useDrawer = withHeadless({\n name: 'useDrawer',\n defaultProps,\n setup: ({ props, elementRef, $primereact }) => {\n const [openState, setOpenState] = React.useState<boolean>(props.open ?? false);\n const [maskVisibleState, setMaskVisibleState] = React.useState<boolean>(props.open ?? false);\n const maskRef = React.useRef<HTMLDivElement | null>(null);\n const motionRef = React.useRef<{ elementRef: React.RefObject<HTMLDivElement> } | null>(null);\n const closeButtonRef = React.useRef<{ elementRef: React.RefObject<HTMLButtonElement> } | null>(null);\n\n const state = {\n opened: openState,\n maskVisible: maskVisibleState\n };\n\n useMountEffect(() => {\n if (props.open) {\n setMaskVisibleState(true);\n }\n });\n\n useUpdateEffect(() => {\n if (props.open && !maskVisibleState) {\n setMaskVisibleState(true);\n }\n }, [props.open]);\n\n useUpdateEffect(() => {\n if (maskVisibleState && !openState) {\n setOpenState(true);\n }\n }, [maskVisibleState]);\n\n useUnmountEffect(() => {\n setMaskVisibleState(false);\n\n if (props.autoZIndex) {\n ZIndex.clear(maskRef?.current as HTMLDivElement);\n }\n });\n\n //methods\n const close = () => {\n setOpenState(false);\n\n props?.onOpenChange?.({\n value: false\n });\n };\n\n const onOpenStateChange = () => {\n const newOpenState = !openState;\n\n if (newOpenState && !maskVisibleState) {\n setMaskVisibleState(true);\n }\n\n //setOpenState(newOpenState);\n\n props?.onOpenChange?.({\n value: newOpenState\n });\n };\n\n const onOpenChange = () => {\n props?.onOpenChange?.({\n value: state.opened\n });\n };\n\n const onMotionEnter = () => {\n focusElement();\n bindDocumentKeyDownListener();\n\n if (props.autoZIndex) {\n ZIndex.set('modal', maskRef.current as HTMLDivElement, (props.baseZIndex as number) + ($primereact.config?.zIndex?.modal ?? 1100));\n }\n };\n\n const onMotionAfterEnter = () => {\n enableDocumentSettings();\n };\n\n const onMotionBeforeLeave = () => {\n if (props.modal) {\n // && !isUnstyled\n addClass(maskRef.current as HTMLDivElement, 'p-overlay-mask-leave');\n }\n };\n\n const onMotionAfterLeave = () => {\n if (props.autoZIndex) {\n ZIndex.clear(maskRef.current as HTMLDivElement);\n }\n\n unbindDocumentKeyDownListener();\n disableDocumentSettings();\n setMaskVisibleState(false);\n };\n\n const focusElement = () => {\n let focusTarget = findFocusableElement(motionRef.current?.elementRef.current ?? null);\n\n if (!focusTarget) {\n if (closeButtonRef.current) {\n focusTarget = closeButtonRef.current.elementRef.current;\n }\n }\n\n if (focusTarget) {\n focus(focusTarget as HTMLElement);\n }\n };\n\n const findFocusableElement = (container: HTMLElement | null) => {\n return container && container.querySelector('[autoFocus]');\n };\n\n const [bindDocumentKeyDownListener, unbindDocumentKeyDownListener] = useEventListener({\n type: 'keydown',\n listener: (event: Event) => onKeyDown(event as unknown as React.KeyboardEvent)\n });\n\n const [bindOutsideClickListener, unbindOutsideClickListener] = useEventListener({\n type: 'click',\n listener: (event) => {\n if (isOutsideClicked(event as unknown as React.MouseEvent)) {\n close();\n }\n }\n });\n\n const isOutsideClicked = (event: React.MouseEvent) => {\n return elementRef.current && !elementRef.current.contains(event.target as Node);\n };\n\n const enableDocumentSettings = () => {\n if (props.dismissable && !props.modal) {\n bindOutsideClickListener();\n }\n\n if (props.blockScroll) {\n blockBodyScroll({ variableName: $dt('scrollbar.width').name });\n }\n };\n\n const disableDocumentSettings = () => {\n unbindOutsideClickListener();\n\n if (props.blockScroll) {\n unblockBodyScroll({ variableName: $dt('scrollbar.width').name });\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent): void => {\n if (event.code === 'Escape') {\n close();\n }\n };\n\n const onMaskClick = (event: React.MouseEvent) => {\n if (props.dismissable && props.modal && maskRef.current === event.target) {\n close();\n }\n };\n\n return {\n state,\n\n // refs\n maskRef,\n motionRef,\n closeButtonRef,\n // methods\n close,\n onOpenStateChange,\n onOpenChange,\n onMotionEnter,\n onMotionAfterEnter,\n onMotionBeforeLeave,\n onMotionAfterLeave,\n onMaskClick\n };\n }\n});\n","import type { useDrawerProps } from '@primereact/types/shared/drawer';\n\nexport const defaultProps: useDrawerProps = {\n open: false,\n modal: true,\n blockScroll: false,\n dismissable: true,\n baseZIndex: 0,\n autoZIndex: true,\n onOpenChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","useEventListener","useMountEffect","useUnmountEffect","useUpdateEffect","$dt","addClass","blockBodyScroll","focus","unblockBodyScroll","ZIndex","React","defaultProps","useDrawer","withHeadless","defaultProps","props","elementRef","$primereact","_a","_b","openState","setOpenState","maskVisibleState","setMaskVisibleState","maskRef","motionRef","closeButtonRef","state","useMountEffect","useUpdateEffect","useUnmountEffect","ZIndex","close","onOpenStateChange","newOpenState","onOpenChange","onMotionEnter","_c","focusElement","bindDocumentKeyDownListener","onMotionAfterEnter","enableDocumentSettings","onMotionBeforeLeave","addClass","onMotionAfterLeave","unbindDocumentKeyDownListener","disableDocumentSettings","focusTarget","findFocusableElement","focus","container","useEventListener","event","onKeyDown","bindOutsideClickListener","unbindOutsideClickListener","isOutsideClicked","blockBodyScroll","$dt","unblockBodyScroll"]}
@@ -0,0 +1,22 @@
1
+ import * as React from 'react';
2
+ export declare const useDrawer: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/drawer").useDrawerProps, unknown, {
3
+ state: {
4
+ opened: boolean;
5
+ maskVisible: boolean;
6
+ };
7
+ maskRef: React.RefObject<HTMLDivElement | null>;
8
+ motionRef: React.RefObject<{
9
+ elementRef: React.RefObject<HTMLDivElement>;
10
+ } | null>;
11
+ closeButtonRef: React.RefObject<{
12
+ elementRef: React.RefObject<HTMLButtonElement>;
13
+ } | null>;
14
+ close: () => void;
15
+ onOpenStateChange: () => void;
16
+ onOpenChange: () => void;
17
+ onMotionEnter: () => void;
18
+ onMotionAfterEnter: () => void;
19
+ onMotionBeforeLeave: () => void;
20
+ onMotionAfterLeave: () => void;
21
+ onMaskClick: (event: React.MouseEvent) => void;
22
+ }>;
@@ -0,0 +1,2 @@
1
+ import type { useDrawerProps } from '@primereact/types/shared/drawer';
2
+ export declare const defaultProps: useDrawerProps;
File without changes
@@ -0,0 +1,2 @@
1
+ export * from './useFocusTrap';
2
+ export * from './useFocusTrap.props';
@@ -0,0 +1,2 @@
1
+ var w=Object.defineProperty;var h=Object.getOwnPropertySymbols;var A=Object.prototype.hasOwnProperty,O=Object.prototype.propertyIsEnumerable;var g=(o,r,n)=>r in o?w(o,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):o[r]=n,f=(o,r)=>{for(var n in r||(r={}))A.call(r,n)&&g(o,n,r[n]);if(h)for(var n of h(r))O.call(r,n)&&g(o,n,r[n]);return o};import{withHeadless as $}from"@primereact/core/headless";import{useUnmountEffect as I}from"@primereact/hooks/use-unmount-effect";import{mergeProps as v}from"@primeuix/utils";import{focus as E,getFirstFocusableElement as p,getLastFocusableElement as U,isFocusableElement as S}from"@primeuix/utils/dom";import{isNotEmpty as j}from"@primeuix/utils/object";import*as s from"react";var x={disabled:!1,autoFocus:!0,container:null};var V=$({name:"useFocusTrap",defaultProps:x,setup:({props:o,elementRef:r})=>{let{disabled:n,autoFocus:b,container:R}=o,T=s.useRef(null),H=s.useRef(null),d=s.useRef(null),a=s.useRef(null),P={};s.useEffect(()=>{a.current=R||r.current},[R,r]);let m=e=>`:not(.p-hidden-focusable):not([data-p-hidden-focusable="true"])${e!=null?e:""}`,y=e=>{let t=a.current,l=e.relatedTarget,c=H.current;if(!t||!c)return;let u=l===c||!(t!=null&&t.contains(l))?p(t,m()):c;u&&E(u)},k=e=>{let t=a.current,l=e.relatedTarget,c=T.current;if(!t||!c)return;let u=l===c||!(t!=null&&t.contains(l))?U(t,m()):c;u&&E(u)},L=s.useCallback(()=>{if(!b)return;let e=a.current;if(!e)return;let t=p(e,`[autofocus]${m()}`);t||(t=p(e,m())),t&&E(t)},[b,a]),F=s.useCallback(()=>{let e=a.current;!e||n||!(e instanceof Element)||(e.setAttribute("data-p-focus-trap","true"),d.current=new MutationObserver(t=>{for(let l of t)if(l.type==="childList"&&!e.contains(document.activeElement)){let c=i=>{if(!i||!("nodeType"in i))return null;let M=S(i)?S(i,m(""))?i:p(e,m("")):p(i);return j(M)?M:i.nextSibling?c(i.nextSibling):null},u=c(l.nextSibling);u&&E(u)}}),d.current.observe(e,{childList:!0}))},[n,a]),N=()=>{let e=a.current;e&&(e.removeAttribute("data-p-focus-trap"),d.current&&(d.current.disconnect(),d.current=null))},C=()=>{let e={className:"p-hidden-accessible p-hidden-focusable",tabIndex:0,role:"presentation","aria-hidden":!0,"data-p-hidden-accessible":!0,"data-p-hidden-focusable":!0};return[s.createElement("span",f({},v(f({ref:T,onFocus:y},e)))),s.createElement("span",f({},v(f({ref:H,onFocus:k},e))))]};return s.useEffect(()=>{a.current&&(n||(F(),L()))},[n,F,L,a]),I(()=>{N()}),{state:P,hiddenElements:n?[null,null]:C()}}});export{x as defaultProps,V as useFocusTrap};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/focustrap/useFocusTrap.tsx","../../src/focustrap/useFocusTrap.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useUnmountEffect } from '@primereact/hooks/use-unmount-effect';\nimport { mergeProps } from '@primeuix/utils';\nimport { focus, getFirstFocusableElement, getLastFocusableElement, isFocusableElement } from '@primeuix/utils/dom';\nimport { isNotEmpty } from '@primeuix/utils/object';\nimport * as React from 'react';\nimport { defaultProps } from './useFocusTrap.props';\n\nexport const useFocusTrap = withHeadless({\n name: 'useFocusTrap',\n defaultProps,\n setup: ({ props, elementRef }) => {\n const { disabled, autoFocus, container } = props;\n const firstHiddenElementRef = React.useRef<HTMLSpanElement>(null);\n const lastHiddenElementRef = React.useRef<HTMLSpanElement>(null);\n const observerRef = React.useRef<MutationObserver | null>(null);\n const containerRef = React.useRef<HTMLElement | null>(null);\n const state = {};\n\n React.useEffect(() => {\n containerRef.current = container || elementRef.current;\n }, [container, elementRef]);\n\n // methods\n const getComputedSelector = (selector?: string) => `:not(.p-hidden-focusable):not([data-p-hidden-focusable=\"true\"])${selector ?? ''}`;\n\n const handleFirstHiddenFocus = (event: React.FocusEvent<HTMLSpanElement>) => {\n const containerElement = containerRef.current;\n\n const relatedTarget = event.relatedTarget as HTMLElement | null;\n const lastHiddenElement = lastHiddenElementRef.current;\n\n if (!containerElement || !lastHiddenElement) return;\n\n const fallback = relatedTarget === lastHiddenElement || !containerElement?.contains(relatedTarget) ? getFirstFocusableElement(containerElement, getComputedSelector()) : lastHiddenElement;\n\n if (fallback) {\n focus(fallback as HTMLElement);\n }\n };\n\n const handleLastHiddenFocus = (event: React.FocusEvent<HTMLSpanElement>) => {\n const containerElement = containerRef.current;\n\n const relatedTarget = event.relatedTarget as HTMLElement | null;\n const firstHiddenElement = firstHiddenElementRef.current;\n\n if (!containerElement || !firstHiddenElement) return;\n\n const fallback = relatedTarget === firstHiddenElement || !containerElement?.contains(relatedTarget) ? getLastFocusableElement(containerElement, getComputedSelector()) : firstHiddenElement;\n\n if (fallback) {\n focus(fallback as HTMLElement);\n }\n };\n\n const autoElementFocus = React.useCallback(() => {\n if (!autoFocus) return;\n\n const containerElement = containerRef.current;\n\n if (!containerElement) return;\n\n let focusableElement = getFirstFocusableElement(containerElement, `[autofocus]${getComputedSelector()}`);\n\n if (!focusableElement) {\n focusableElement = getFirstFocusableElement(containerElement, getComputedSelector());\n }\n\n if (focusableElement) {\n focus(focusableElement as HTMLElement);\n }\n }, [autoFocus, containerRef]);\n\n const bind = React.useCallback(() => {\n const containerElement = containerRef.current;\n\n if (!containerElement || disabled || !(containerElement instanceof Element)) return;\n\n containerElement.setAttribute('data-p-focus-trap', 'true');\n observerRef.current = new MutationObserver((mutationList) => {\n for (const mutation of mutationList) {\n if (mutation.type === 'childList' && !containerElement.contains(document.activeElement)) {\n const findNextFocusableElement = (_el: Node | null): HTMLElement | null => {\n if (!_el || !('nodeType' in _el)) return null;\n\n const focusableElement = isFocusableElement(_el as HTMLElement)\n ? isFocusableElement(_el as HTMLElement, getComputedSelector(''))\n ? (_el as HTMLElement)\n : getFirstFocusableElement(containerElement, getComputedSelector(''))\n : getFirstFocusableElement(_el as HTMLElement);\n\n return isNotEmpty(focusableElement) ? (focusableElement as HTMLElement) : _el.nextSibling ? findNextFocusableElement(_el.nextSibling) : null;\n };\n\n const nextElement = findNextFocusableElement(mutation.nextSibling);\n\n if (nextElement) {\n focus(nextElement);\n }\n }\n }\n });\n\n observerRef.current.observe(containerElement, { childList: true });\n }, [disabled, containerRef]);\n\n const unbind = () => {\n const containerElement = containerRef.current;\n\n if (!containerElement) return;\n\n containerElement.removeAttribute('data-p-focus-trap');\n\n if (observerRef.current) {\n observerRef.current.disconnect();\n observerRef.current = null;\n }\n };\n\n const createHiddenElements = (): [React.ReactElement | null, React.ReactElement | null] => {\n const hiddenElementProps = {\n className: 'p-hidden-accessible p-hidden-focusable',\n tabIndex: 0,\n role: 'presentation',\n 'aria-hidden': true,\n 'data-p-hidden-accessible': true,\n 'data-p-hidden-focusable': true\n };\n\n const hiddenElements: [React.ReactElement | null, React.ReactElement | null] = [\n <span\n {...mergeProps({\n ref: firstHiddenElementRef,\n onFocus: handleFirstHiddenFocus,\n ...hiddenElementProps\n })}\n />,\n <span\n {...mergeProps({\n ref: lastHiddenElementRef,\n onFocus: handleLastHiddenFocus,\n ...hiddenElementProps\n })}\n />\n ];\n\n return hiddenElements;\n };\n // effects\n\n React.useEffect(() => {\n const containerElement = containerRef.current;\n\n if (!containerElement) return;\n\n if (!disabled) {\n bind();\n autoElementFocus();\n }\n }, [disabled, bind, autoElementFocus, containerRef]);\n\n useUnmountEffect(() => {\n unbind();\n });\n\n return {\n state,\n hiddenElements: !disabled ? createHiddenElements() : ([null, null] as [null, null])\n };\n }\n});\n","import type { useFocusTrapProps } from '@primereact/types/shared/focustrap';\n\nexport const defaultProps: useFocusTrapProps = {\n disabled: false,\n autoFocus: true,\n container: null\n};\n"],"mappings":"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","names":["withHeadless","useUnmountEffect","mergeProps","focus","getFirstFocusableElement","getLastFocusableElement","isFocusableElement","isNotEmpty","React","defaultProps","useFocusTrap","withHeadless","defaultProps","props","elementRef","disabled","autoFocus","container","firstHiddenElementRef","lastHiddenElementRef","observerRef","containerRef","state","getComputedSelector","selector","handleFirstHiddenFocus","event","containerElement","relatedTarget","lastHiddenElement","fallback","getFirstFocusableElement","focus","handleLastHiddenFocus","firstHiddenElement","getLastFocusableElement","autoElementFocus","focusableElement","bind","mutationList","mutation","findNextFocusableElement","_el","isFocusableElement","isNotEmpty","nextElement","unbind","createHiddenElements","hiddenElementProps","__spreadValues","mergeProps","useUnmountEffect"]}
@@ -0,0 +1,5 @@
1
+ import * as React from 'react';
2
+ export declare const useFocusTrap: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/focustrap").useFocusTrapProps, unknown, {
3
+ state: {};
4
+ hiddenElements: [React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | null, React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | null];
5
+ }>;
@@ -0,0 +1,2 @@
1
+ import type { useFocusTrapProps } from '@primereact/types/shared/focustrap';
2
+ export declare const defaultProps: useFocusTrapProps;
File without changes
@@ -0,0 +1,2 @@
1
+ export * from './useImageCompare';
2
+ export * from './useImageCompare.props';
@@ -0,0 +1,2 @@
1
+ import{withHeadless as n}from"@primereact/core/headless";import{$dt as p}from"@primeuix/styled";import{setCSSProperty as i}from"@primeuix/utils";import*as e from"react";var o={};var C=n({name:"useImageCompare",defaultProps:o,setup:()=>{let[m,s]=e.useState("50"),t=e.useRef(null);return{state:{slideValue:m},onSlideChange:r=>{if(!t.current)return;let a=r.target.value;s(a),i(t.current,p("imagecompare.scope.x").name,`${a}%`)},registerRightImage:r=>{t.current=r}}}});export{o as defaultProps,C as useImageCompare};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/imagecompare/useImageCompare.ts","../../src/imagecompare/useImageCompare.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { $dt } from '@primeuix/styled';\nimport { setCSSProperty } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useImageCompare.props';\n\nexport const useImageCompare = withHeadless({\n name: 'useImageCompare',\n defaultProps,\n setup: () => {\n const [slideValueState, setSlideValueState] = React.useState<string | undefined>('50');\n const rightImageRef = React.useRef<HTMLImageElement>(null);\n\n const state = {\n slideValue: slideValueState\n };\n\n // methods\n const onSlideChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!rightImageRef.current) return;\n\n const value = event.target.value;\n\n setSlideValueState(value);\n setCSSProperty(rightImageRef.current, $dt('imagecompare.scope.x').name, `${value}%`);\n };\n\n const registerRightImage = (element: HTMLImageElement) => {\n rightImageRef.current = element;\n };\n\n return {\n state,\n onSlideChange,\n registerRightImage\n };\n }\n});\n","import type { useImageCompareProps } from '@primereact/types/shared/imagecompare';\n\nexport const defaultProps: useImageCompareProps = {};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAC7B,OAAS,OAAAC,MAAW,mBACpB,OAAS,kBAAAC,MAAsB,kBAC/B,UAAYC,MAAW,QCDhB,IAAMC,EAAqC,CAAC,EDI5C,IAAMC,EAAkBC,EAAa,CACxC,KAAM,kBACN,aAAAC,EACA,MAAO,IAAM,CACT,GAAM,CAACC,EAAiBC,CAAkB,EAAU,WAA6B,IAAI,EAC/EC,EAAsB,SAAyB,IAAI,EAoBzD,MAAO,CACH,MAnBU,CACV,WAAYF,CAChB,EAkBI,cAfmBG,GAA+C,CAClE,GAAI,CAACD,EAAc,QAAS,OAE5B,IAAME,EAAQD,EAAM,OAAO,MAE3BF,EAAmBG,CAAK,EACxBC,EAAeH,EAAc,QAASI,EAAI,sBAAsB,EAAE,KAAM,GAAGF,CAAK,GAAG,CACvF,EASI,mBAPwBG,GAA8B,CACtDL,EAAc,QAAUK,CAC5B,CAMA,CACJ,CACJ,CAAC","names":["withHeadless","$dt","setCSSProperty","React","defaultProps","useImageCompare","withHeadless","defaultProps","slideValueState","setSlideValueState","rightImageRef","event","value","setCSSProperty","$dt","element"]}
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ export declare const useImageCompare: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/imagecompare").useImageCompareProps, unknown, {
3
+ state: {
4
+ slideValue: string | undefined;
5
+ };
6
+ onSlideChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
7
+ registerRightImage: (element: HTMLImageElement) => void;
8
+ }>;
@@ -0,0 +1,2 @@
1
+ import type { useImageCompareProps } from '@primereact/types/shared/imagecompare';
2
+ export declare const defaultProps: useImageCompareProps;
File without changes
@@ -0,0 +1,2 @@
1
+ export * from './useMessage';
2
+ export * from './useMessage.props';
@@ -0,0 +1,2 @@
1
+ import{withHeadless as i}from"@primereact/core/headless";import*as r from"react";var n={life:null,onClose:void 0};var d=i({name:"useMessage",defaultProps:n,setup:({props:t})=>{let[u,o]=r.useState(!0),e=r.useRef(null),a={visible:u},s=r.useCallback(()=>{var l;o(!1),e.current&&(clearTimeout(e.current),e.current=null),(l=t.onClose)==null||l.call(t)},[t.onClose]);return r.useEffect(()=>(e.current&&(clearTimeout(e.current),e.current=null),typeof t.life=="number"&&t.life>0&&u&&(e.current=setTimeout(()=>{s()},t.life)),()=>{e.current&&(clearTimeout(e.current),e.current=null)}),[t.life,u,s]),{state:a,handleClose:s}}});export{n as defaultProps,d as useMessage};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/message/useMessage.ts","../../src/message/useMessage.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport * as React from 'react';\nimport { defaultProps } from './useMessage.props';\n\nexport const useMessage = withHeadless({\n name: 'useMessage',\n defaultProps,\n setup: ({ props }) => {\n const [visibleState, setVisibleState] = React.useState<boolean>(true);\n const timerRef = React.useRef<NodeJS.Timeout | null>(null);\n\n const state = {\n visible: visibleState\n };\n\n // methods\n const handleClose = React.useCallback(() => {\n setVisibleState(false);\n\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n\n props.onClose?.();\n }, [props.onClose]);\n\n // effects\n React.useEffect(() => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n\n if (typeof props.life === 'number' && props.life > 0 && visibleState) {\n timerRef.current = setTimeout(() => {\n handleClose();\n }, props.life);\n }\n\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n };\n }, [props.life, visibleState, handleClose]);\n\n return {\n state,\n handleClose\n };\n }\n});\n","import type { useMessageProps } from '@primereact/types/shared/message';\n\nexport const defaultProps: useMessageProps = {\n life: null,\n onClose: undefined\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAC7B,UAAYC,MAAW,QCChB,IAAMC,EAAgC,CACzC,KAAM,KACN,QAAS,MACb,EDDO,IAAMC,EAAaC,EAAa,CACnC,KAAM,aACN,aAAAC,EACA,MAAO,CAAC,CAAE,MAAAC,CAAM,IAAM,CAClB,GAAM,CAACC,EAAcC,CAAe,EAAU,WAAkB,EAAI,EAC9DC,EAAiB,SAA8B,IAAI,EAEnDC,EAAQ,CACV,QAASH,CACb,EAGMI,EAAoB,cAAY,IAAM,CAhBpD,IAAAC,EAiBYJ,EAAgB,EAAK,EAEjBC,EAAS,UACT,aAAaA,EAAS,OAAO,EAC7BA,EAAS,QAAU,OAGvBG,EAAAN,EAAM,UAAN,MAAAM,EAAA,KAAAN,EACJ,EAAG,CAACA,EAAM,OAAO,CAAC,EAGlB,OAAM,YAAU,KACRG,EAAS,UACT,aAAaA,EAAS,OAAO,EAC7BA,EAAS,QAAU,MAGnB,OAAOH,EAAM,MAAS,UAAYA,EAAM,KAAO,GAAKC,IACpDE,EAAS,QAAU,WAAW,IAAM,CAChCE,EAAY,CAChB,EAAGL,EAAM,IAAI,GAGV,IAAM,CACLG,EAAS,UACT,aAAaA,EAAS,OAAO,EAC7BA,EAAS,QAAU,KAE3B,GACD,CAACH,EAAM,KAAMC,EAAcI,CAAW,CAAC,EAEnC,CACH,MAAAD,EACA,YAAAC,CACJ,CACJ,CACJ,CAAC","names":["withHeadless","React","defaultProps","useMessage","withHeadless","defaultProps","props","visibleState","setVisibleState","timerRef","state","handleClose","_a"]}
@@ -0,0 +1,6 @@
1
+ export declare const useMessage: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/message").useMessageProps, unknown, {
2
+ state: {
3
+ visible: boolean;
4
+ };
5
+ handleClose: () => void;
6
+ }>;
@@ -0,0 +1,2 @@
1
+ import type { useMessageProps } from '@primereact/types/shared/message';
2
+ export declare const defaultProps: useMessageProps;
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primereact/headless",
3
- "version": "11.0.0-alpha.1",
3
+ "version": "11.0.0-alpha.2",
4
4
  "author": "PrimeTek Informatics",
5
5
  "description": "",
6
6
  "homepage": "https://primereact.org/",
@@ -32,9 +32,9 @@
32
32
  "access": "public"
33
33
  },
34
34
  "dependencies": {
35
- "@primeuix/styled": "^0.7.0-beta.2",
36
- "@primeuix/utils": "^0.6.0-beta.2",
37
- "@primereact/core": "11.0.0-alpha.1",
38
- "@primereact/hooks": "11.0.0-alpha.1"
35
+ "@primeuix/styled": "^0.7.0",
36
+ "@primeuix/utils": "^0.6.0",
37
+ "@primereact/core": "11.0.0-alpha.2",
38
+ "@primereact/hooks": "11.0.0-alpha.2"
39
39
  }
40
40
  }
@@ -0,0 +1,2 @@
1
+ export * from './usePortal';
2
+ export * from './usePortal.props';
@@ -0,0 +1,2 @@
1
+ import{withHeadless as f}from"@primereact/core/headless";import{useMountEffect as d,useUnmountEffect as i,useUpdateEffect as m}from"@primereact/hooks";import{isClient as n}from"@primeuix/utils";import*as u from"react";var o={visible:!1,onMounted:void 0,onUnmounted:void 0};var P=f({name:"usePortal",defaultProps:o,setup({props:e}){let[t,r]=u.useState(e.visible&&n());return d(()=>{n()&&!t&&(r(!0),e.onMounted&&e.onMounted())}),m(()=>{e.onMounted&&e.onMounted()},[t]),i(()=>{e.onUnmounted&&e.onUnmounted()}),{mountedState:t}}});export{o as defaultProps,P as usePortal};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/portal/usePortal.ts","../../src/portal/usePortal.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useMountEffect, useUnmountEffect, useUpdateEffect } from '@primereact/hooks';\nimport { isClient } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './usePortal.props';\n\nexport const usePortal = withHeadless({\n name: 'usePortal',\n defaultProps,\n setup({ props }) {\n const [mountedState, setMountedState] = React.useState<boolean | undefined>(props.visible && isClient());\n\n useMountEffect(() => {\n if (isClient() && !mountedState) {\n setMountedState(true);\n\n if (props.onMounted) {\n props.onMounted();\n }\n }\n });\n\n useUpdateEffect(() => {\n if (props.onMounted) {\n props.onMounted();\n }\n }, [mountedState]);\n\n useUnmountEffect(() => {\n if (props.onUnmounted) {\n props.onUnmounted();\n }\n });\n\n return {\n mountedState\n };\n }\n});\n","import type { usePortalProps } from '@primereact/types/shared/portal';\n\nexport const defaultProps: usePortalProps = {\n visible: false,\n onMounted: undefined,\n onUnmounted: undefined\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAC7B,OAAS,kBAAAC,EAAgB,oBAAAC,EAAkB,mBAAAC,MAAuB,oBAClE,OAAS,YAAAC,MAAgB,kBACzB,UAAYC,MAAW,QCDhB,IAAMC,EAA+B,CACxC,QAAS,GACT,UAAW,OACX,YAAa,MACjB,EDAO,IAAMC,EAAYC,EAAa,CAClC,KAAM,YACN,aAAAC,EACA,MAAM,CAAE,MAAAC,CAAM,EAAG,CACb,GAAM,CAACC,EAAcC,CAAe,EAAU,WAA8BF,EAAM,SAAWG,EAAS,CAAC,EAEvG,OAAAC,EAAe,IAAM,CACbD,EAAS,GAAK,CAACF,IACfC,EAAgB,EAAI,EAEhBF,EAAM,WACNA,EAAM,UAAU,EAG5B,CAAC,EAEDK,EAAgB,IAAM,CACdL,EAAM,WACNA,EAAM,UAAU,CAExB,EAAG,CAACC,CAAY,CAAC,EAEjBK,EAAiB,IAAM,CACfN,EAAM,aACNA,EAAM,YAAY,CAE1B,CAAC,EAEM,CACH,aAAAC,CACJ,CACJ,CACJ,CAAC","names":["withHeadless","useMountEffect","useUnmountEffect","useUpdateEffect","isClient","React","defaultProps","usePortal","withHeadless","defaultProps","props","mountedState","setMountedState","isClient","useMountEffect","useUpdateEffect","useUnmountEffect"]}
@@ -0,0 +1,3 @@
1
+ export declare const usePortal: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/portal").usePortalProps, unknown, {
2
+ mountedState: boolean | undefined;
3
+ }>;
@@ -0,0 +1,2 @@
1
+ import type { usePortalProps } from '@primereact/types/shared/portal';
2
+ export declare const defaultProps: usePortalProps;
File without changes