@votodigital-onpeui/react 0.1.49 → 0.1.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
- export { BrowserRecommended, Footer, ModalBrowserIncompatible, ModalDnieVersions, ModalNfc, ModalSystemIncompatible, NotRecommended, Overlay, Show } from './chunk-RFPBCB5W.mjs';
1
+ export { BrowserRecommended, Footer, ModalBrowserIncompatible, ModalDnieVersions, ModalNfc, ModalSystemIncompatible, NotRecommended, Overlay, Show } from './chunk-PYHXDWTI.mjs';
2
2
  import './chunk-KWOWOGBU.mjs';
3
- export { Button, ModalConfirm, ModalLoading } from './chunk-OUGS344M.mjs';
3
+ export { Button, ModalConfirm, ModalLoading } from './chunk-KY2E3YVF.mjs';
4
4
  import './chunk-WMTOTUKK.mjs';
5
- export { Modal, Portal } from './chunk-K25EVLJY.mjs';
5
+ export { Modal, Portal } from './chunk-RIILZBD5.mjs';
6
6
  import './chunk-J4MV4J6H.mjs';
7
7
  //# sourceMappingURL=components.mjs.map
8
8
  //# sourceMappingURL=components.mjs.map
package/dist/hooks.js CHANGED
@@ -472,7 +472,7 @@ var Modal = ({
472
472
  closeButton = false,
473
473
  closeDisabled = false,
474
474
  escapeToClose = true,
475
- disableFocus = false,
475
+ disableFocus: disableFocusProp,
476
476
  disableFocusRestore = false,
477
477
  existTabIndex = true,
478
478
  zIndexLevel = 100,
@@ -487,6 +487,7 @@ var Modal = ({
487
487
  const modalId = react.useId();
488
488
  const ctx = useModalGlobalContext();
489
489
  const animated = animatedProp ?? ctx?.animated ?? true;
490
+ const disableFocus = disableFocusProp ?? ctx?.disableFocus ?? false;
490
491
  const ariaLabelledBy = props["aria-labelledby"];
491
492
  const modalRef = react.useRef(null);
492
493
  const contentRef = react.useRef(null);
package/dist/hooks.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/onpeId/store/modalIframePreload.ts","../src/hooks/onpeId/useIframeCommunication/useIframeCommunication.ts","../src/hooks/onpeId/useIframePreload/useIframePreload.ts","../src/hooks/onpeId/useSocketConnection/useSocketConnection.ts","../src/hooks/useOnpeIdAuth/useOnpeIdAuth.ts","../src/components/Portal/Portal.tsx","../src/icons/Actions/IconCloseRadius.tsx","../src/components/ModalGlobal/ModalGlobalContext.ts","../src/components/Modal/Modal.tsx","../src/hooks/useOnpeIdAuth/OnpeIdModal.tsx"],"names":["create","useRef","useEffect","useCallback","useState","io","createPortal","jsx","createContext","useContext","useId","useLayoutEffect","activeIndex","jsxs","Fragment"],"mappings":"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","file":"hooks.js","sourcesContent":["import { create } from \"zustand\";\n\ninterface ModalIframePreloadStore {\n modalUrl: string;\n isOpenModal: boolean;\n isIframeReady: boolean;\n setModalUrl: (url: string) => void;\n openModal: () => void;\n closeModal: () => void;\n setIsIframeReady: (ready: boolean) => void;\n reset: () => void;\n}\n\nconst INITIAL_STATE: Omit<\n ModalIframePreloadStore,\n \"setModalUrl\" | \"openModal\" | \"closeModal\" | \"setIsIframeReady\" | \"reset\"\n> = {\n modalUrl: \"\",\n isOpenModal: false,\n isIframeReady: false,\n};\n\nexport const useModalIframePreload = create<ModalIframePreloadStore>()(\n (set) => ({\n ...INITIAL_STATE,\n setModalUrl: (url: string) => set({ modalUrl: url }),\n openModal: () => set({ isOpenModal: true }),\n closeModal: () => {\n set({\n isOpenModal: false,\n isIframeReady: false,\n modalUrl: \"\",\n });\n },\n setIsIframeReady: (ready: boolean) => set({ isIframeReady: ready }),\n reset: () => set(INITIAL_STATE),\n })\n);\n","import { useEffect, useRef, useCallback } from \"react\";\n\nexport type MessageStatus = \"EXPIRED_APP\" | \"OPEN_APP\" | \"LAUNCH_APP\" | \"HOME_APP\" | \"NOT_APP\" | \"OPEN_MOBILE\";\n\nexport interface IframeMessage {\n status: MessageStatus;\n url?: string;\n data?: unknown;\n token?: string;\n type?: \"LOGIN\" | \"FIRMA\";\n}\n\ninterface UseIframeCommunicationParams {\n onExpiredApp?: (data: IframeMessage) => void;\n onOpenApp?: (data: IframeMessage) => void;\n onLaunchApp?: (data: IframeMessage) => void;\n onHomeApp?: (data: IframeMessage) => void;\n onNotApp?: (data: IframeMessage) => void;\n onOpenMobile?: (data: IframeMessage) => void;\n enabled?: boolean;\n allowedOrigin?: string;\n}\n\nexport const useIframeCommunication = ({\n onExpiredApp,\n onOpenApp,\n onLaunchApp,\n onHomeApp,\n onNotApp,\n onOpenMobile,\n enabled = true,\n allowedOrigin,\n}: UseIframeCommunicationParams = {}) => {\n const handlersRef = useRef({\n onExpiredApp,\n onOpenApp,\n onLaunchApp,\n onHomeApp,\n onNotApp,\n onOpenMobile,\n });\n\n useEffect(() => {\n handlersRef.current = {\n onExpiredApp,\n onOpenApp,\n onLaunchApp,\n onHomeApp,\n onNotApp,\n onOpenMobile,\n };\n }, [onExpiredApp, onOpenApp, onLaunchApp, onHomeApp, onNotApp, onOpenMobile]);\n\n useEffect(() => {\n if (!enabled) return;\n\n const handler = (event: MessageEvent) => {\n if (allowedOrigin && event.origin !== allowedOrigin) {\n console.warn(\n `Mensaje rechazado de origen no permitido: ${event.origin}`,\n );\n return;\n }\n\n const data = event.data as IframeMessage;\n if (!data?.status) return;\n\n const handlers = handlersRef.current;\n\n switch (data.status) {\n case \"EXPIRED_APP\":\n handlers.onExpiredApp?.(data);\n break;\n case \"OPEN_APP\":\n handlers.onOpenApp?.(data);\n break;\n case \"LAUNCH_APP\":\n handlers.onLaunchApp?.(data);\n break;\n case \"HOME_APP\":\n handlers.onHomeApp?.(data);\n break;\n case \"NOT_APP\":\n handlers.onNotApp?.(data);\n break;\n case \"OPEN_MOBILE\":\n handlers.onOpenMobile?.(data);\n break;\n default:\n break;\n }\n };\n\n globalThis.addEventListener(\"message\", handler);\n return () => globalThis.removeEventListener(\"message\", handler);\n }, [enabled, allowedOrigin]);\n};\n\ninterface UseSendMessageToIframeParams {\n iframeRef: React.RefObject<HTMLIFrameElement | null>;\n modalUrl: string;\n}\n\nexport const useSendMessageToIframe = ({\n iframeRef,\n modalUrl,\n}: UseSendMessageToIframeParams) => {\n const sendMessageToIframe = useCallback(\n (message: Record<string, unknown>) => {\n if (!iframeRef.current || !modalUrl) return;\n\n try {\n const iframeOrigin = new URL(modalUrl).origin;\n iframeRef.current.contentWindow?.postMessage(message, iframeOrigin);\n } catch (error) {\n console.error(\"Error al enviar mensaje al iframe:\", error);\n }\n },\n [iframeRef, modalUrl],\n );\n\n return { sendMessageToIframe };\n};\n","import { useRef } from \"react\";\n\nimport { useModalIframePreload } from \"../store/modalIframePreload\";\n\nexport const useIframePreload = () => {\n const {\n modalUrl,\n setModalUrl,\n isOpenModal,\n closeModal,\n setIsIframeReady,\n openModal,\n reset,\n } = useModalIframePreload();\n\n const preloadIframeRef = useRef<HTMLIFrameElement>(null);\n const iframeRef = useRef<HTMLIFrameElement>(null);\n\n const isPreloading = !!modalUrl && !isOpenModal;\n\n const handlePreloadIframeReady = () => {\n setIsIframeReady(true);\n openModal();\n };\n\n const handleModalIframeReady = () => {\n if (!useModalIframePreload.getState().isIframeReady) {\n setIsIframeReady(true);\n }\n };\n\n return {\n modalUrl,\n setModalUrl,\n isOpenModal,\n closeModal,\n isPreloading,\n preloadIframeRef,\n iframeRef,\n handlePreloadIframeReady,\n handleModalIframeReady,\n reset,\n };\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport io, { type Socket } from \"socket.io-client\";\n\nconst RECONNECTION_ATTEMPTS = 14;\n\nexport interface SocketEventData {\n success: boolean;\n token: string;\n}\n\ninterface UseSocketConnectionParams {\n socketUrl: string;\n secure?: boolean;\n isOpenLaunchApp: boolean;\n dataOpenLaunchApp: Record<string, unknown>;\n closeLaunchApp: () => void;\n closeModal: () => void;\n onComplete?: (data: SocketEventData) => void;\n onDisconnectClient?: () => void;\n onDisconnect?: () => void;\n onMaxReconnects?: () => void;\n onConnectionChange?: (connected: boolean) => void;\n enabled?: boolean;\n isSessionExpired?: boolean;\n}\n\nexport const useSocketConnection = ({\n socketUrl,\n secure = false,\n isOpenLaunchApp,\n dataOpenLaunchApp,\n closeLaunchApp,\n closeModal,\n onComplete,\n onDisconnectClient,\n onDisconnect,\n onMaxReconnects,\n onConnectionChange,\n enabled = true,\n isSessionExpired = false,\n}: UseSocketConnectionParams) => {\n const socketRef = useRef<Socket | null>(null);\n const [attempts, setAttempts] = useState(0);\n\n const dataOpenLaunchAppRef = useRef(dataOpenLaunchApp);\n const closeLaunchAppRef = useRef(closeLaunchApp);\n const closeModalRef = useRef(closeModal);\n const enabledRef = useRef(enabled);\n const onConnectionChangeRef = useRef(onConnectionChange);\n const onCompleteRef = useRef(onComplete);\n const onDisconnectClientRef = useRef(onDisconnectClient);\n const onDisconnectRef = useRef(onDisconnect);\n const onMaxReconnectsRef = useRef(onMaxReconnects);\n\n useEffect(() => {\n dataOpenLaunchAppRef.current = dataOpenLaunchApp;\n closeLaunchAppRef.current = closeLaunchApp;\n closeModalRef.current = closeModal;\n enabledRef.current = enabled;\n onConnectionChangeRef.current = onConnectionChange;\n onCompleteRef.current = onComplete;\n onDisconnectClientRef.current = onDisconnectClient;\n onDisconnectRef.current = onDisconnect;\n onMaxReconnectsRef.current = onMaxReconnects;\n }, [\n dataOpenLaunchApp,\n closeLaunchApp,\n closeModal,\n enabled,\n onConnectionChange,\n onComplete,\n onDisconnectClient,\n onDisconnect,\n onMaxReconnects,\n ]);\n\n useEffect(() => {\n if (attempts === RECONNECTION_ATTEMPTS) {\n if (socketRef.current) {\n socketRef.current.disconnect();\n }\n closeLaunchAppRef.current();\n onConnectionChangeRef.current?.(false);\n closeModalRef.current();\n onMaxReconnectsRef.current?.();\n setTimeout(() => setAttempts(0), 0);\n }\n }, [attempts]);\n\n useEffect(() => {\n if (!enabled) {\n if (socketRef.current) {\n socketRef.current.removeAllListeners();\n socketRef.current.disconnect();\n socketRef.current = null;\n onConnectionChangeRef.current?.(false);\n setTimeout(() => setAttempts(0), 0);\n }\n return;\n }\n\n if (!isOpenLaunchApp) {\n if (socketRef.current) {\n socketRef.current.removeAllListeners();\n socketRef.current.disconnect();\n socketRef.current = null;\n }\n return;\n }\n\n if (!socketRef.current) {\n socketRef.current = io(socketUrl, {\n transports: [\"websocket\"],\n secure,\n upgrade: false,\n forceNew: true,\n reconnection: true,\n reconnectionAttempts: RECONNECTION_ATTEMPTS,\n reconnectionDelay: 2000,\n reconnectionDelayMax: 1000,\n });\n\n const socket = socketRef.current;\n\n const handleConnect = () => {\n if (!enabledRef.current) return;\n\n onConnectionChangeRef.current?.(true);\n if (socketRef.current) {\n const jsonObject = dataOpenLaunchAppRef.current;\n\n if (jsonObject && Object.keys(jsonObject).length > 0) {\n socketRef.current.emit(\"setToken\", jsonObject);\n } else {\n setTimeout(() => {\n const delayedData = dataOpenLaunchAppRef.current;\n if (\n delayedData &&\n Object.keys(delayedData).length > 0 &&\n socketRef.current &&\n enabledRef.current\n ) {\n socketRef.current.emit(\"setToken\", delayedData);\n }\n }, 100);\n }\n } else {\n console.error(\"Socket no está disponible para enviar token\");\n }\n };\n\n const handleDisconnect = () => {\n if (!enabledRef.current) return;\n\n onConnectionChangeRef.current?.(false);\n closeLaunchAppRef.current();\n closeModalRef.current();\n onDisconnectRef.current?.();\n };\n\n const handleReconnectAttempt = (attemptNumber: number) => {\n setAttempts(attemptNumber);\n };\n\n const handleConnectError = (error: Error) => {\n console.error(\"Error de conexión socket:\", error);\n };\n\n const handleComplete = (data: SocketEventData) => {\n if (!enabledRef.current) return;\n closeLaunchAppRef.current();\n onConnectionChangeRef.current?.(false);\n closeModalRef.current();\n onCompleteRef.current?.(data);\n };\n\n const handleServerTimeout = () => {\n if (!enabledRef.current) return;\n closeLaunchAppRef.current();\n onConnectionChangeRef.current?.(false);\n closeModalRef.current();\n };\n\n const handleDisconnectClient = () => {\n if (!enabledRef.current) return;\n closeLaunchAppRef.current();\n onConnectionChangeRef.current?.(false);\n closeModalRef.current();\n onDisconnectClientRef.current?.();\n };\n\n socket.on(\"connect\", handleConnect);\n socket.on(\"disconnect\", handleDisconnect);\n socket.on(\"connect_error\", handleConnectError);\n socket.io.on(\"reconnect_attempt\", handleReconnectAttempt);\n socket.on(\"onProcessComplete\", handleComplete);\n socket.on(\"onValidationComplete\", handleComplete);\n socket.on(\"onProcessCompleteFirma\", handleComplete);\n socket.on(\"onServerTimeout\", handleServerTimeout);\n socket.on(\"onDisconnectClient\", handleDisconnectClient);\n }\n\n return () => {\n if (socketRef.current && (!enabled || !isOpenLaunchApp)) {\n socketRef.current.removeAllListeners();\n socketRef.current.disconnect();\n socketRef.current = null;\n }\n };\n }, [enabled, isOpenLaunchApp, socketUrl, secure]);\n\n useEffect(() => {\n if (isSessionExpired && socketRef.current) {\n socketRef.current.emit(\"setToken\", \"TIMEOUT_APP\");\n }\n }, [isSessionExpired]);\n\n useEffect(() => {\n return () => {\n if (socketRef.current) {\n socketRef.current.removeAllListeners();\n socketRef.current.disconnect();\n socketRef.current = null;\n }\n };\n }, []);\n\n return { attempts };\n};\n","import { useState, useCallback, useEffect } from \"react\";\n\nimport {\n useIframeCommunication,\n useIframePreload,\n useSocketConnection,\n type SocketEventData,\n} from \"../onpeId\";\n\ninterface UseOnpeIdAuthParams {\n socketUrl: string;\n secure?: boolean;\n navigate: (url: string) => void;\n onConnectionChange?: (connected: boolean) => void;\n connectionApp?: boolean;\n onPageReload?: () => void;\n onComplete?: (data: SocketEventData) => void;\n onDisconnectClient?: () => void;\n onExpiredApp?: () => void;\n onDisconnect?: () => void;\n onMaxReconnects?: () => void;\n onHomeApp?: () => void;\n onNotApp?: () => void;\n onOpenMobile?: (data: Record<string, unknown>) => void;\n isSessionExpired?: boolean;\n}\n\nexport const useOnpeIdAuth = ({\n socketUrl,\n secure = false,\n navigate,\n onConnectionChange,\n connectionApp,\n onPageReload,\n onComplete,\n onHomeApp,\n onNotApp,\n onDisconnectClient,\n isSessionExpired,\n onExpiredApp,\n onDisconnect,\n onMaxReconnects,\n onOpenMobile,\n}: UseOnpeIdAuthParams) => {\n const [isOpenLaunchApp, setIsOpenLaunchApp] = useState(false);\n const [dataOpenLaunchApp, setDataOpenLaunchApp] = useState<\n Record<string, unknown>\n >({});\n\n const openLaunchApp = useCallback(() => setIsOpenLaunchApp(true), []);\n const closeLaunchApp = useCallback(() => setIsOpenLaunchApp(false), []);\n\n const {\n modalUrl,\n setModalUrl,\n isOpenModal,\n isPreloading,\n closeModal,\n preloadIframeRef,\n iframeRef,\n handlePreloadIframeReady,\n handleModalIframeReady,\n reset: resetIframeState,\n } = useIframePreload();\n\n const handleClose = useCallback(() => {\n onConnectionChange?.(false);\n closeModal();\n closeLaunchApp();\n resetIframeState();\n }, [closeModal, closeLaunchApp, resetIframeState, onConnectionChange]);\n\n useEffect(() => {\n if (connectionApp) {\n onConnectionChange?.(false);\n onPageReload?.();\n }\n return () => {\n resetIframeState();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- solo se ejecuta en el primer render\n }, []);\n\n const { attempts } = useSocketConnection({\n socketUrl,\n secure,\n isOpenLaunchApp,\n dataOpenLaunchApp,\n closeLaunchApp,\n closeModal: handleClose,\n onComplete,\n onDisconnectClient,\n onDisconnect,\n onMaxReconnects,\n onConnectionChange,\n enabled: isOpenModal && !!modalUrl,\n isSessionExpired,\n });\n\n useIframeCommunication({\n onExpiredApp: () => {\n handleClose();\n onExpiredApp?.();\n },\n onOpenApp: (data) => {\n navigate(data.url!);\n },\n onLaunchApp: (data) => {\n openLaunchApp();\n setDataOpenLaunchApp((data.data as Record<string, unknown>) ?? {});\n },\n onOpenMobile: (data) => {\n onOpenMobile?.((data.data as Record<string, unknown>) ?? {});\n },\n onHomeApp: () => {\n handleClose();\n onHomeApp?.();\n },\n onNotApp: () => {\n handleClose();\n onNotApp?.();\n },\n });\n\n return {\n modalUrl,\n setModalUrl,\n isOpenModal,\n isPreloading,\n isOpenLaunchApp,\n handleClose,\n iframeRef,\n preloadIframeRef,\n handlePreloadIframeReady,\n handleModalIframeReady,\n attempts,\n reset: resetIframeState,\n };\n};\n","import { ReactNode, useEffect, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nexport interface PortalProps {\n children?: ReactNode;\n container?: Element | DocumentFragment | null;\n}\n\nexport const Portal = ({ children, container }: PortalProps) => {\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n return () => setMounted(false);\n }, []);\n\n if (!mounted) return null;\n\n let portalElement = container || document.querySelector(\"#portal\");\n if (!portalElement) {\n portalElement = document.body;\n }\n\n return createPortal(children, portalElement);\n};\n\nexport default Portal;\n","import { SVGProps } from \"react\";\n\nexport const IconCloseRadius = (props: SVGProps<SVGSVGElement>) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={28} height={28} viewBox=\"0 0 28 28\" fill=\"none\" {...props}>\n <path\n d=\"M14 0C6.2 0 0 6.2 0 14C0 21.8 6.2 28 14 28C21.8 28 28 21.8 28 14C28 6.2 21.8 0 14 0ZM19.4 21L14 15.6L8.6 21L7 19.4L12.4 14L7 8.6L8.6 7L14 12.4L19.4 7L21 8.6L15.6 14L21 19.4L19.4 21Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default IconCloseRadius;\n","import { createContext, useContext } from \"react\";\n\ninterface ModalGlobalContextValue {\n animated: boolean;\n}\n\nexport const ModalGlobalContext = createContext<ModalGlobalContextValue | null>(null);\n\nexport const useModalGlobalContext = () => useContext(ModalGlobalContext);\n","import { HTMLAttributes, ReactNode, useEffect, useId, useLayoutEffect, useRef, useState } from \"react\";\nimport { Portal } from \"../Portal/Portal\";\nimport { IconCloseRadius } from \"../../icons/Actions/IconCloseRadius\";\nimport { useModalGlobalContext } from \"../ModalGlobal/ModalGlobalContext\";\n\nexport interface ModalProps extends HTMLAttributes<HTMLDivElement> {\n isOpen: boolean;\n onClose: () => void;\n children: ReactNode;\n whitoutBackground?: boolean;\n closeButton?: boolean;\n closeDisabled?: boolean;\n escapeToClose?: boolean;\n disableFocus?: boolean;\n disableFocusRestore?: boolean;\n existTabIndex?: boolean;\n zIndexLevel?: number;\n onCloseComplete?: () => void;\n /** Alinea el modal al tope de la pantalla en vez de al centro */\n alignTop?: boolean;\n /** Habilita animación de entrada/salida (default: true) */\n animated?: boolean;\n /** Bloquea el scroll del body mientras el modal está abierto (default: true) */\n preventBodyScroll?: boolean;\n overlayColor?:\n | \"blue\"\n | \"skyblue\"\n | \"skyblue-light\"\n | \"yellow\"\n | \"light-skyblue\"\n | \"gray\"\n | \"gray-light\"\n | \"gray-extra-light\"\n | \"red\"\n | \"dark-gray\"\n | \"green\"\n | \"yellow-light\"\n | \"primary\";\n}\n\nconst openModals: Set<string> =\n (globalThis as unknown as Record<string, unknown>).__openModals as Set<string> ||\n ((globalThis as unknown as Record<string, Set<string>>).__openModals = new Set<string>());\n\nconst lockBodyScroll = (id: string, enabled: boolean) => {\n if (!enabled || typeof document === \"undefined\") return;\n openModals.add(id);\n document.body.style.overflow = \"hidden\";\n};\n\nconst unlockBodyScroll = (id: string, enabled: boolean) => {\n if (!enabled || typeof document === \"undefined\") return;\n openModals.delete(id);\n if (openModals.size === 0) {\n document.body.style.overflow = \"\";\n }\n};\n\nexport const Modal = ({\n isOpen,\n onClose,\n children,\n whitoutBackground = false,\n closeButton = false,\n closeDisabled = false,\n escapeToClose = true,\n disableFocus = false,\n disableFocusRestore = false,\n existTabIndex = true,\n zIndexLevel = 100,\n onCloseComplete,\n alignTop = false,\n animated: animatedProp,\n preventBodyScroll = true,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- overlayColor reservado para uso futuro\n overlayColor: _overlayColor = \"blue\",\n ...props\n}: ModalProps) => {\n const modalId = useId();\n const ctx = useModalGlobalContext();\n const animated = animatedProp ?? ctx?.animated ?? true;\n const ariaLabelledBy = props[\"aria-labelledby\"];\n const modalRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const previousActiveElement = useRef<HTMLElement | null>(null);\n\n // CSS animation state (replaces framer-motion AnimatePresence)\n const [mounted, setMounted] = useState(false);\n const [visible, setVisible] = useState(false);\n\n // Cache children during exit animation (replicates AnimatePresence behavior):\n // when global state clears data before the modal finishes closing, the cached\n // children keep the content visible throughout the exit animation.\n const [cachedChildren, setCachedChildren] = useState<ReactNode>(children);\n useEffect(() => {\n if (isOpen) {\n setCachedChildren(children);\n }\n }, [isOpen, children]);\n\n useEffect(() => {\n if (!animated) return;\n if (isOpen) {\n setMounted(true);\n const raf = requestAnimationFrame(() => {\n requestAnimationFrame(() => setVisible(true));\n });\n return () => cancelAnimationFrame(raf);\n } else {\n setVisible(false);\n const timer = setTimeout(() => {\n setMounted(false);\n onCloseComplete?.();\n }, 200);\n return () => clearTimeout(timer);\n }\n }, [isOpen, animated, onCloseComplete]);\n\n // Body scroll lock — usa counter global para soportar múltiples modales simultáneos\n useLayoutEffect(() => {\n if (isOpen) lockBodyScroll(modalId, preventBodyScroll);\n return () => {\n if (isOpen) unlockBodyScroll(modalId, preventBodyScroll);\n };\n }, [isOpen, preventBodyScroll, modalId]);\n\n // Scroll reset when opening\n useEffect(() => {\n if (!isOpen) return;\n const resetScroll = () => {\n const el = contentRef.current;\n if (!el) return;\n el.style.scrollBehavior = \"auto\";\n el.scrollTop = 0;\n requestAnimationFrame(() => {\n el.scrollTop = 0;\n setTimeout(() => {\n el.style.scrollBehavior = \"smooth\";\n }, 10);\n });\n };\n resetScroll();\n [10, 50, 100, 200].forEach((d) => setTimeout(resetScroll, d));\n }, [isOpen]);\n\n // Keyboard handling and focus trap\n useEffect(() => {\n let focusOutWrapper: HTMLDivElement | null = null;\n const pendingTasks: Array<ReturnType<typeof globalThis.setTimeout>> = [];\n\n const isElementVisible = (element: HTMLElement) => {\n const style = globalThis.getComputedStyle(element);\n return (\n style.visibility !== \"hidden\" &&\n style.display !== \"none\" &&\n element.offsetParent !== null\n );\n };\n\n const getFocusableElements = (wrapper: HTMLElement) => {\n const selector = [\n \"a[href]\",\n \"area[href]\",\n \"button:not([disabled])\",\n 'input:not([disabled]):not([type=\"hidden\"])',\n \"select:not([disabled])\",\n \"textarea:not([disabled])\",\n \"iframe\",\n \"object\",\n \"embed\",\n '[tabindex]:not([tabindex=\"-1\"])',\n '[contenteditable=\"true\"]',\n ].join(\",\");\n\n let focusable = Array.from(\n wrapper.querySelectorAll<HTMLElement>(selector),\n ).filter((el) => isElementVisible(el) && el.tabIndex !== -1);\n\n if (wrapper.tabIndex >= 0) {\n focusable = [wrapper, ...focusable];\n }\n return focusable;\n };\n\n const handleFocusOut = (e: FocusEvent) => {\n if (!isOpen || disableFocus) return;\n const wrapper = modalRef.current;\n if (!wrapper) return;\n const relatedTarget = e.relatedTarget as HTMLElement;\n if (relatedTarget && !wrapper.contains(relatedTarget)) {\n setTimeout(() => {\n const currentActive = document.activeElement as HTMLElement;\n if (!currentActive || !wrapper.contains(currentActive)) {\n const focusable = getFocusableElements(wrapper);\n if (focusable.length > 0) {\n focusable[focusable.length - 1].focus();\n } else {\n wrapper.focus();\n }\n }\n }, 0);\n }\n };\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && escapeToClose && !closeDisabled) {\n onClose();\n return;\n }\n\n if (!isOpen || disableFocus) return;\n const wrapper = modalRef.current;\n if (!wrapper) return;\n\n const focusable = getFocusableElements(wrapper);\n const active = (document.activeElement as HTMLElement) || null;\n\n const arrowKeys = [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"];\n if (arrowKeys.includes(e.key)) {\n if (active && wrapper.contains(active)) {\n const activeIndex = focusable.indexOf(active);\n if (\n (e.key === \"ArrowUp\" || e.key === \"ArrowLeft\") &&\n activeIndex === 0\n ) {\n e.preventDefault();\n e.stopPropagation();\n if (focusable.length > 1) focusable[focusable.length - 1].focus();\n else active.focus();\n return;\n }\n if (\n (e.key === \"ArrowDown\" || e.key === \"ArrowRight\") &&\n activeIndex === focusable.length - 1\n ) {\n e.preventDefault();\n e.stopPropagation();\n if (focusable.length > 1) focusable[0].focus();\n else active.focus();\n return;\n }\n requestAnimationFrame(() => {\n const currentActive = document.activeElement as HTMLElement;\n if (!currentActive || !wrapper.contains(currentActive)) {\n if (activeIndex !== -1 && focusable[activeIndex])\n focusable[activeIndex].focus();\n else if (focusable.length > 0) focusable[0].focus();\n else wrapper.focus();\n }\n });\n } else {\n e.preventDefault();\n if (focusable.length > 0) {\n if (e.key === \"ArrowUp\" || e.key === \"ArrowLeft\")\n focusable[focusable.length - 1].focus();\n else focusable[0].focus();\n } else {\n wrapper.focus();\n }\n }\n return;\n }\n\n if (e.key !== \"Tab\") return;\n if (focusable.length === 0) {\n e.preventDefault();\n wrapper.focus();\n return;\n }\n\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const isShift = e.shiftKey;\n\n if (!active || !wrapper.contains(active)) {\n e.preventDefault();\n (isShift ? last : first).focus();\n return;\n }\n\n const activeIndex = focusable.indexOf(active);\n if (\n !isShift &&\n (active === last || activeIndex === focusable.length - 1)\n ) {\n e.preventDefault();\n first.focus();\n return;\n }\n\n if (isShift) {\n e.preventDefault();\n if (active === first || active === wrapper || activeIndex === 0)\n last.focus();\n else if (activeIndex > 0) focusable[activeIndex - 1].focus();\n else last.focus();\n }\n };\n\n if (isOpen && !disableFocus) {\n previousActiveElement.current = document.activeElement as HTMLElement;\n\n const focusInitial = (wrapper: HTMLElement) => {\n if (ariaLabelledBy && document.getElementById(ariaLabelledBy)) {\n wrapper.focus({ preventScroll: true });\n return;\n }\n const focusable = getFocusableElements(wrapper);\n const first = focusable[0];\n if (first) first.focus({ preventScroll: true });\n else wrapper.focus();\n };\n\n const bindFocusManagement = (attempt = 0) => {\n const wrapper = modalRef.current;\n if (!wrapper) {\n if (attempt < 10) {\n pendingTasks.push(\n globalThis.setTimeout(() => bindFocusManagement(attempt + 1), 25),\n );\n }\n return;\n }\n\n if (focusOutWrapper !== wrapper) {\n focusOutWrapper?.removeEventListener(\"focusout\", handleFocusOut);\n wrapper.addEventListener(\"focusout\", handleFocusOut);\n focusOutWrapper = wrapper;\n }\n\n focusInitial(wrapper);\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n pendingTasks.push(globalThis.setTimeout(() => bindFocusManagement(), 0));\n } else if (isOpen && disableFocus) {\n document.addEventListener(\"keydown\", handleKeyDown);\n }\n\n return () => {\n pendingTasks.forEach((task) => globalThis.clearTimeout(task));\n document.removeEventListener(\"keydown\", handleKeyDown);\n focusOutWrapper?.removeEventListener(\"focusout\", handleFocusOut);\n if (\n !disableFocus &&\n !disableFocusRestore &&\n previousActiveElement.current\n ) {\n previousActiveElement.current.focus();\n }\n };\n }, [\n isOpen,\n onClose,\n closeDisabled,\n escapeToClose,\n disableFocus,\n disableFocusRestore,\n ariaLabelledBy,\n ]);\n\n // Sin animación: renderizar directo desde isOpen (sin delay de useEffect)\n if (!animated && !isOpen) return null;\n // Con animación: usar mounted para controlar enter/exit transitions\n if (animated && !mounted) return null;\n\n const contentClass = [\n \"relative flex flex-col items-center justify-start\",\n whitoutBackground\n ? \"bg-transparent\"\n : [\n \"min-w-[320px] w-[95vw] max-w-[95vw] max-h-[90vh]\",\n \"overflow-y-auto scroll-smooth\",\n \"md:max-w-[1000px]\",\n ].join(\" \"),\n props.className || \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <Portal>\n {/* Backdrop */}\n <div\n style={{ zIndex: zIndexLevel }}\n className={[\n \"fixed inset-0 bg-onpe-blue\",\n animated ? \"transition-opacity duration-200\" : \"\",\n animated ? (visible ? \"opacity-80\" : \"opacity-0\") : \"opacity-80\",\n ].join(\" \")}\n onClick={onClose}\n />\n\n {/* Container */}\n <div\n style={{ zIndex: zIndexLevel + 10 }}\n className={[\n \"fixed top-0 w-full h-screen grid\",\n alignTop ? \"place-items-start pt-8\" : \"place-items-center\",\n animated ? \"transition-all duration-200\" : \"\",\n animated\n ? visible\n ? \"opacity-100 scale-100 translate-y-0\"\n : \"opacity-[0.2] scale-95 -translate-y-5\"\n : \"opacity-100 scale-100 translate-y-0\",\n ].join(\" \")}\n >\n <div className=\"relative grid place-items-center\">\n <div\n ref={modalRef}\n onClick={(e) => e.stopPropagation()}\n {...(existTabIndex && { tabIndex: disableFocus ? -1 : 0 })}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={props[\"aria-labelledby\"]}\n aria-describedby={props[\"aria-describedby\"]}\n aria-label={props[\"aria-label\"]}\n >\n <div ref={contentRef} className={contentClass}>\n {isOpen ? children : cachedChildren}\n </div>\n {closeButton && (\n <button\n onClick={onClose}\n className=\"absolute top-2.5 right-2.5 text-onpe-red cursor-pointer w-4 h-4 border-none bg-transparent p-0 md:w-6 md:h-6\"\n aria-label=\"Cerrar\"\n type=\"button\"\n >\n <IconCloseRadius aria-hidden=\"true\" className=\"w-full h-full\" />\n </button>\n )}\n </div>\n </div>\n </div>\n </Portal>\n );\n};\n\nexport default Modal;\n","import { useState } from \"react\";\n\nimport { Modal } from \"../../components/Modal\";\n\ninterface OnpeIdModalProps {\n modalUrl: string;\n isOpenModal: boolean;\n isOpenLaunchApp: boolean;\n isOnline: boolean;\n onClose: () => void;\n iframeRef: React.RefObject<HTMLIFrameElement | null>;\n preloadIframeRef: React.RefObject<HTMLIFrameElement | null>;\n handlePreloadIframeReady: () => void;\n handleModalIframeReady: () => void;\n disableFocus?: boolean;\n}\n\nexport const OnpeIdModal = ({\n modalUrl,\n isOpenModal,\n isOpenLaunchApp,\n isOnline,\n onClose,\n iframeRef,\n preloadIframeRef,\n handlePreloadIframeReady,\n handleModalIframeReady,\n disableFocus = false,\n}: OnpeIdModalProps) => {\n const [isIframeLoaded, setIsIframeLoaded] = useState(false);\n\n return (\n <>\n {modalUrl && !isOpenModal && isOnline && (\n <iframe\n ref={preloadIframeRef}\n src={modalUrl}\n className=\"hidden\"\n onLoad={handlePreloadIframeReady}\n title=\"Precarga ONPE ID\"\n />\n )}\n\n <Modal\n isOpen={isOpenModal && isOnline}\n onClose={onClose}\n className=\"bg-white max-w-custom-673 p-10 relative\"\n closeButton={!isOpenLaunchApp && isIframeLoaded}\n escapeToClose={false}\n disableFocus={disableFocus}\n >\n {!!modalUrl && isOnline && (\n <iframe\n ref={iframeRef}\n src={modalUrl}\n onLoad={() => {\n handleModalIframeReady();\n setIsIframeLoaded(true);\n }}\n className=\"w-full h-[410px] min-[400px]:h-[390px] md:h-[312px]\"\n title=\"Aplicativo ONPEID para autenticación y registro\"\n />\n )}\n </Modal>\n </>\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/hooks/onpeId/store/modalIframePreload.ts","../src/hooks/onpeId/useIframeCommunication/useIframeCommunication.ts","../src/hooks/onpeId/useIframePreload/useIframePreload.ts","../src/hooks/onpeId/useSocketConnection/useSocketConnection.ts","../src/hooks/useOnpeIdAuth/useOnpeIdAuth.ts","../src/components/Portal/Portal.tsx","../src/icons/Actions/IconCloseRadius.tsx","../src/components/ModalGlobal/ModalGlobalContext.ts","../src/components/Modal/Modal.tsx","../src/hooks/useOnpeIdAuth/OnpeIdModal.tsx"],"names":["create","useRef","useEffect","useCallback","useState","io","createPortal","jsx","createContext","useContext","useId","useLayoutEffect","activeIndex","jsxs","Fragment"],"mappings":"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","file":"hooks.js","sourcesContent":["import { create } from \"zustand\";\n\ninterface ModalIframePreloadStore {\n modalUrl: string;\n isOpenModal: boolean;\n isIframeReady: boolean;\n setModalUrl: (url: string) => void;\n openModal: () => void;\n closeModal: () => void;\n setIsIframeReady: (ready: boolean) => void;\n reset: () => void;\n}\n\nconst INITIAL_STATE: Omit<\n ModalIframePreloadStore,\n \"setModalUrl\" | \"openModal\" | \"closeModal\" | \"setIsIframeReady\" | \"reset\"\n> = {\n modalUrl: \"\",\n isOpenModal: false,\n isIframeReady: false,\n};\n\nexport const useModalIframePreload = create<ModalIframePreloadStore>()(\n (set) => ({\n ...INITIAL_STATE,\n setModalUrl: (url: string) => set({ modalUrl: url }),\n openModal: () => set({ isOpenModal: true }),\n closeModal: () => {\n set({\n isOpenModal: false,\n isIframeReady: false,\n modalUrl: \"\",\n });\n },\n setIsIframeReady: (ready: boolean) => set({ isIframeReady: ready }),\n reset: () => set(INITIAL_STATE),\n })\n);\n","import { useEffect, useRef, useCallback } from \"react\";\n\nexport type MessageStatus = \"EXPIRED_APP\" | \"OPEN_APP\" | \"LAUNCH_APP\" | \"HOME_APP\" | \"NOT_APP\" | \"OPEN_MOBILE\";\n\nexport interface IframeMessage {\n status: MessageStatus;\n url?: string;\n data?: unknown;\n token?: string;\n type?: \"LOGIN\" | \"FIRMA\";\n}\n\ninterface UseIframeCommunicationParams {\n onExpiredApp?: (data: IframeMessage) => void;\n onOpenApp?: (data: IframeMessage) => void;\n onLaunchApp?: (data: IframeMessage) => void;\n onHomeApp?: (data: IframeMessage) => void;\n onNotApp?: (data: IframeMessage) => void;\n onOpenMobile?: (data: IframeMessage) => void;\n enabled?: boolean;\n allowedOrigin?: string;\n}\n\nexport const useIframeCommunication = ({\n onExpiredApp,\n onOpenApp,\n onLaunchApp,\n onHomeApp,\n onNotApp,\n onOpenMobile,\n enabled = true,\n allowedOrigin,\n}: UseIframeCommunicationParams = {}) => {\n const handlersRef = useRef({\n onExpiredApp,\n onOpenApp,\n onLaunchApp,\n onHomeApp,\n onNotApp,\n onOpenMobile,\n });\n\n useEffect(() => {\n handlersRef.current = {\n onExpiredApp,\n onOpenApp,\n onLaunchApp,\n onHomeApp,\n onNotApp,\n onOpenMobile,\n };\n }, [onExpiredApp, onOpenApp, onLaunchApp, onHomeApp, onNotApp, onOpenMobile]);\n\n useEffect(() => {\n if (!enabled) return;\n\n const handler = (event: MessageEvent) => {\n if (allowedOrigin && event.origin !== allowedOrigin) {\n console.warn(\n `Mensaje rechazado de origen no permitido: ${event.origin}`,\n );\n return;\n }\n\n const data = event.data as IframeMessage;\n if (!data?.status) return;\n\n const handlers = handlersRef.current;\n\n switch (data.status) {\n case \"EXPIRED_APP\":\n handlers.onExpiredApp?.(data);\n break;\n case \"OPEN_APP\":\n handlers.onOpenApp?.(data);\n break;\n case \"LAUNCH_APP\":\n handlers.onLaunchApp?.(data);\n break;\n case \"HOME_APP\":\n handlers.onHomeApp?.(data);\n break;\n case \"NOT_APP\":\n handlers.onNotApp?.(data);\n break;\n case \"OPEN_MOBILE\":\n handlers.onOpenMobile?.(data);\n break;\n default:\n break;\n }\n };\n\n globalThis.addEventListener(\"message\", handler);\n return () => globalThis.removeEventListener(\"message\", handler);\n }, [enabled, allowedOrigin]);\n};\n\ninterface UseSendMessageToIframeParams {\n iframeRef: React.RefObject<HTMLIFrameElement | null>;\n modalUrl: string;\n}\n\nexport const useSendMessageToIframe = ({\n iframeRef,\n modalUrl,\n}: UseSendMessageToIframeParams) => {\n const sendMessageToIframe = useCallback(\n (message: Record<string, unknown>) => {\n if (!iframeRef.current || !modalUrl) return;\n\n try {\n const iframeOrigin = new URL(modalUrl).origin;\n iframeRef.current.contentWindow?.postMessage(message, iframeOrigin);\n } catch (error) {\n console.error(\"Error al enviar mensaje al iframe:\", error);\n }\n },\n [iframeRef, modalUrl],\n );\n\n return { sendMessageToIframe };\n};\n","import { useRef } from \"react\";\n\nimport { useModalIframePreload } from \"../store/modalIframePreload\";\n\nexport const useIframePreload = () => {\n const {\n modalUrl,\n setModalUrl,\n isOpenModal,\n closeModal,\n setIsIframeReady,\n openModal,\n reset,\n } = useModalIframePreload();\n\n const preloadIframeRef = useRef<HTMLIFrameElement>(null);\n const iframeRef = useRef<HTMLIFrameElement>(null);\n\n const isPreloading = !!modalUrl && !isOpenModal;\n\n const handlePreloadIframeReady = () => {\n setIsIframeReady(true);\n openModal();\n };\n\n const handleModalIframeReady = () => {\n if (!useModalIframePreload.getState().isIframeReady) {\n setIsIframeReady(true);\n }\n };\n\n return {\n modalUrl,\n setModalUrl,\n isOpenModal,\n closeModal,\n isPreloading,\n preloadIframeRef,\n iframeRef,\n handlePreloadIframeReady,\n handleModalIframeReady,\n reset,\n };\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport io, { type Socket } from \"socket.io-client\";\n\nconst RECONNECTION_ATTEMPTS = 14;\n\nexport interface SocketEventData {\n success: boolean;\n token: string;\n}\n\ninterface UseSocketConnectionParams {\n socketUrl: string;\n secure?: boolean;\n isOpenLaunchApp: boolean;\n dataOpenLaunchApp: Record<string, unknown>;\n closeLaunchApp: () => void;\n closeModal: () => void;\n onComplete?: (data: SocketEventData) => void;\n onDisconnectClient?: () => void;\n onDisconnect?: () => void;\n onMaxReconnects?: () => void;\n onConnectionChange?: (connected: boolean) => void;\n enabled?: boolean;\n isSessionExpired?: boolean;\n}\n\nexport const useSocketConnection = ({\n socketUrl,\n secure = false,\n isOpenLaunchApp,\n dataOpenLaunchApp,\n closeLaunchApp,\n closeModal,\n onComplete,\n onDisconnectClient,\n onDisconnect,\n onMaxReconnects,\n onConnectionChange,\n enabled = true,\n isSessionExpired = false,\n}: UseSocketConnectionParams) => {\n const socketRef = useRef<Socket | null>(null);\n const [attempts, setAttempts] = useState(0);\n\n const dataOpenLaunchAppRef = useRef(dataOpenLaunchApp);\n const closeLaunchAppRef = useRef(closeLaunchApp);\n const closeModalRef = useRef(closeModal);\n const enabledRef = useRef(enabled);\n const onConnectionChangeRef = useRef(onConnectionChange);\n const onCompleteRef = useRef(onComplete);\n const onDisconnectClientRef = useRef(onDisconnectClient);\n const onDisconnectRef = useRef(onDisconnect);\n const onMaxReconnectsRef = useRef(onMaxReconnects);\n\n useEffect(() => {\n dataOpenLaunchAppRef.current = dataOpenLaunchApp;\n closeLaunchAppRef.current = closeLaunchApp;\n closeModalRef.current = closeModal;\n enabledRef.current = enabled;\n onConnectionChangeRef.current = onConnectionChange;\n onCompleteRef.current = onComplete;\n onDisconnectClientRef.current = onDisconnectClient;\n onDisconnectRef.current = onDisconnect;\n onMaxReconnectsRef.current = onMaxReconnects;\n }, [\n dataOpenLaunchApp,\n closeLaunchApp,\n closeModal,\n enabled,\n onConnectionChange,\n onComplete,\n onDisconnectClient,\n onDisconnect,\n onMaxReconnects,\n ]);\n\n useEffect(() => {\n if (attempts === RECONNECTION_ATTEMPTS) {\n if (socketRef.current) {\n socketRef.current.disconnect();\n }\n closeLaunchAppRef.current();\n onConnectionChangeRef.current?.(false);\n closeModalRef.current();\n onMaxReconnectsRef.current?.();\n setTimeout(() => setAttempts(0), 0);\n }\n }, [attempts]);\n\n useEffect(() => {\n if (!enabled) {\n if (socketRef.current) {\n socketRef.current.removeAllListeners();\n socketRef.current.disconnect();\n socketRef.current = null;\n onConnectionChangeRef.current?.(false);\n setTimeout(() => setAttempts(0), 0);\n }\n return;\n }\n\n if (!isOpenLaunchApp) {\n if (socketRef.current) {\n socketRef.current.removeAllListeners();\n socketRef.current.disconnect();\n socketRef.current = null;\n }\n return;\n }\n\n if (!socketRef.current) {\n socketRef.current = io(socketUrl, {\n transports: [\"websocket\"],\n secure,\n upgrade: false,\n forceNew: true,\n reconnection: true,\n reconnectionAttempts: RECONNECTION_ATTEMPTS,\n reconnectionDelay: 2000,\n reconnectionDelayMax: 1000,\n });\n\n const socket = socketRef.current;\n\n const handleConnect = () => {\n if (!enabledRef.current) return;\n\n onConnectionChangeRef.current?.(true);\n if (socketRef.current) {\n const jsonObject = dataOpenLaunchAppRef.current;\n\n if (jsonObject && Object.keys(jsonObject).length > 0) {\n socketRef.current.emit(\"setToken\", jsonObject);\n } else {\n setTimeout(() => {\n const delayedData = dataOpenLaunchAppRef.current;\n if (\n delayedData &&\n Object.keys(delayedData).length > 0 &&\n socketRef.current &&\n enabledRef.current\n ) {\n socketRef.current.emit(\"setToken\", delayedData);\n }\n }, 100);\n }\n } else {\n console.error(\"Socket no está disponible para enviar token\");\n }\n };\n\n const handleDisconnect = () => {\n if (!enabledRef.current) return;\n\n onConnectionChangeRef.current?.(false);\n closeLaunchAppRef.current();\n closeModalRef.current();\n onDisconnectRef.current?.();\n };\n\n const handleReconnectAttempt = (attemptNumber: number) => {\n setAttempts(attemptNumber);\n };\n\n const handleConnectError = (error: Error) => {\n console.error(\"Error de conexión socket:\", error);\n };\n\n const handleComplete = (data: SocketEventData) => {\n if (!enabledRef.current) return;\n closeLaunchAppRef.current();\n onConnectionChangeRef.current?.(false);\n closeModalRef.current();\n onCompleteRef.current?.(data);\n };\n\n const handleServerTimeout = () => {\n if (!enabledRef.current) return;\n closeLaunchAppRef.current();\n onConnectionChangeRef.current?.(false);\n closeModalRef.current();\n };\n\n const handleDisconnectClient = () => {\n if (!enabledRef.current) return;\n closeLaunchAppRef.current();\n onConnectionChangeRef.current?.(false);\n closeModalRef.current();\n onDisconnectClientRef.current?.();\n };\n\n socket.on(\"connect\", handleConnect);\n socket.on(\"disconnect\", handleDisconnect);\n socket.on(\"connect_error\", handleConnectError);\n socket.io.on(\"reconnect_attempt\", handleReconnectAttempt);\n socket.on(\"onProcessComplete\", handleComplete);\n socket.on(\"onValidationComplete\", handleComplete);\n socket.on(\"onProcessCompleteFirma\", handleComplete);\n socket.on(\"onServerTimeout\", handleServerTimeout);\n socket.on(\"onDisconnectClient\", handleDisconnectClient);\n }\n\n return () => {\n if (socketRef.current && (!enabled || !isOpenLaunchApp)) {\n socketRef.current.removeAllListeners();\n socketRef.current.disconnect();\n socketRef.current = null;\n }\n };\n }, [enabled, isOpenLaunchApp, socketUrl, secure]);\n\n useEffect(() => {\n if (isSessionExpired && socketRef.current) {\n socketRef.current.emit(\"setToken\", \"TIMEOUT_APP\");\n }\n }, [isSessionExpired]);\n\n useEffect(() => {\n return () => {\n if (socketRef.current) {\n socketRef.current.removeAllListeners();\n socketRef.current.disconnect();\n socketRef.current = null;\n }\n };\n }, []);\n\n return { attempts };\n};\n","import { useState, useCallback, useEffect } from \"react\";\n\nimport {\n useIframeCommunication,\n useIframePreload,\n useSocketConnection,\n type SocketEventData,\n} from \"../onpeId\";\n\ninterface UseOnpeIdAuthParams {\n socketUrl: string;\n secure?: boolean;\n navigate: (url: string) => void;\n onConnectionChange?: (connected: boolean) => void;\n connectionApp?: boolean;\n onPageReload?: () => void;\n onComplete?: (data: SocketEventData) => void;\n onDisconnectClient?: () => void;\n onExpiredApp?: () => void;\n onDisconnect?: () => void;\n onMaxReconnects?: () => void;\n onHomeApp?: () => void;\n onNotApp?: () => void;\n onOpenMobile?: (data: Record<string, unknown>) => void;\n isSessionExpired?: boolean;\n}\n\nexport const useOnpeIdAuth = ({\n socketUrl,\n secure = false,\n navigate,\n onConnectionChange,\n connectionApp,\n onPageReload,\n onComplete,\n onHomeApp,\n onNotApp,\n onDisconnectClient,\n isSessionExpired,\n onExpiredApp,\n onDisconnect,\n onMaxReconnects,\n onOpenMobile,\n}: UseOnpeIdAuthParams) => {\n const [isOpenLaunchApp, setIsOpenLaunchApp] = useState(false);\n const [dataOpenLaunchApp, setDataOpenLaunchApp] = useState<\n Record<string, unknown>\n >({});\n\n const openLaunchApp = useCallback(() => setIsOpenLaunchApp(true), []);\n const closeLaunchApp = useCallback(() => setIsOpenLaunchApp(false), []);\n\n const {\n modalUrl,\n setModalUrl,\n isOpenModal,\n isPreloading,\n closeModal,\n preloadIframeRef,\n iframeRef,\n handlePreloadIframeReady,\n handleModalIframeReady,\n reset: resetIframeState,\n } = useIframePreload();\n\n const handleClose = useCallback(() => {\n onConnectionChange?.(false);\n closeModal();\n closeLaunchApp();\n resetIframeState();\n }, [closeModal, closeLaunchApp, resetIframeState, onConnectionChange]);\n\n useEffect(() => {\n if (connectionApp) {\n onConnectionChange?.(false);\n onPageReload?.();\n }\n return () => {\n resetIframeState();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- solo se ejecuta en el primer render\n }, []);\n\n const { attempts } = useSocketConnection({\n socketUrl,\n secure,\n isOpenLaunchApp,\n dataOpenLaunchApp,\n closeLaunchApp,\n closeModal: handleClose,\n onComplete,\n onDisconnectClient,\n onDisconnect,\n onMaxReconnects,\n onConnectionChange,\n enabled: isOpenModal && !!modalUrl,\n isSessionExpired,\n });\n\n useIframeCommunication({\n onExpiredApp: () => {\n handleClose();\n onExpiredApp?.();\n },\n onOpenApp: (data) => {\n navigate(data.url!);\n },\n onLaunchApp: (data) => {\n openLaunchApp();\n setDataOpenLaunchApp((data.data as Record<string, unknown>) ?? {});\n },\n onOpenMobile: (data) => {\n onOpenMobile?.((data.data as Record<string, unknown>) ?? {});\n },\n onHomeApp: () => {\n handleClose();\n onHomeApp?.();\n },\n onNotApp: () => {\n handleClose();\n onNotApp?.();\n },\n });\n\n return {\n modalUrl,\n setModalUrl,\n isOpenModal,\n isPreloading,\n isOpenLaunchApp,\n handleClose,\n iframeRef,\n preloadIframeRef,\n handlePreloadIframeReady,\n handleModalIframeReady,\n attempts,\n reset: resetIframeState,\n };\n};\n","import { ReactNode, useEffect, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nexport interface PortalProps {\n children?: ReactNode;\n container?: Element | DocumentFragment | null;\n}\n\nexport const Portal = ({ children, container }: PortalProps) => {\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n return () => setMounted(false);\n }, []);\n\n if (!mounted) return null;\n\n let portalElement = container || document.querySelector(\"#portal\");\n if (!portalElement) {\n portalElement = document.body;\n }\n\n return createPortal(children, portalElement);\n};\n\nexport default Portal;\n","import { SVGProps } from \"react\";\n\nexport const IconCloseRadius = (props: SVGProps<SVGSVGElement>) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={28} height={28} viewBox=\"0 0 28 28\" fill=\"none\" {...props}>\n <path\n d=\"M14 0C6.2 0 0 6.2 0 14C0 21.8 6.2 28 14 28C21.8 28 28 21.8 28 14C28 6.2 21.8 0 14 0ZM19.4 21L14 15.6L8.6 21L7 19.4L12.4 14L7 8.6L8.6 7L14 12.4L19.4 7L21 8.6L15.6 14L21 19.4L19.4 21Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default IconCloseRadius;\n","import { createContext, useContext } from \"react\";\n\ninterface ModalGlobalContextValue {\n animated: boolean;\n disableFocus: boolean;\n}\n\nexport const ModalGlobalContext = createContext<ModalGlobalContextValue | null>(null);\n\nexport const useModalGlobalContext = () => useContext(ModalGlobalContext);\n","import { HTMLAttributes, ReactNode, useEffect, useId, useLayoutEffect, useRef, useState } from \"react\";\nimport { Portal } from \"../Portal/Portal\";\nimport { IconCloseRadius } from \"../../icons/Actions/IconCloseRadius\";\nimport { useModalGlobalContext } from \"../ModalGlobal/ModalGlobalContext\";\n\nexport interface ModalProps extends HTMLAttributes<HTMLDivElement> {\n isOpen: boolean;\n onClose: () => void;\n children: ReactNode;\n whitoutBackground?: boolean;\n closeButton?: boolean;\n closeDisabled?: boolean;\n escapeToClose?: boolean;\n disableFocus?: boolean;\n disableFocusRestore?: boolean;\n existTabIndex?: boolean;\n zIndexLevel?: number;\n onCloseComplete?: () => void;\n /** Alinea el modal al tope de la pantalla en vez de al centro */\n alignTop?: boolean;\n /** Habilita animación de entrada/salida (default: true) */\n animated?: boolean;\n /** Bloquea el scroll del body mientras el modal está abierto (default: true) */\n preventBodyScroll?: boolean;\n overlayColor?:\n | \"blue\"\n | \"skyblue\"\n | \"skyblue-light\"\n | \"yellow\"\n | \"light-skyblue\"\n | \"gray\"\n | \"gray-light\"\n | \"gray-extra-light\"\n | \"red\"\n | \"dark-gray\"\n | \"green\"\n | \"yellow-light\"\n | \"primary\";\n}\n\nconst openModals: Set<string> =\n (globalThis as unknown as Record<string, unknown>).__openModals as Set<string> ||\n ((globalThis as unknown as Record<string, Set<string>>).__openModals = new Set<string>());\n\nconst lockBodyScroll = (id: string, enabled: boolean) => {\n if (!enabled || typeof document === \"undefined\") return;\n openModals.add(id);\n document.body.style.overflow = \"hidden\";\n};\n\nconst unlockBodyScroll = (id: string, enabled: boolean) => {\n if (!enabled || typeof document === \"undefined\") return;\n openModals.delete(id);\n if (openModals.size === 0) {\n document.body.style.overflow = \"\";\n }\n};\n\nexport const Modal = ({\n isOpen,\n onClose,\n children,\n whitoutBackground = false,\n closeButton = false,\n closeDisabled = false,\n escapeToClose = true,\n disableFocus: disableFocusProp,\n disableFocusRestore = false,\n existTabIndex = true,\n zIndexLevel = 100,\n onCloseComplete,\n alignTop = false,\n animated: animatedProp,\n preventBodyScroll = true,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- overlayColor reservado para uso futuro\n overlayColor: _overlayColor = \"blue\",\n ...props\n}: ModalProps) => {\n const modalId = useId();\n const ctx = useModalGlobalContext();\n const animated = animatedProp ?? ctx?.animated ?? true;\n const disableFocus = disableFocusProp ?? ctx?.disableFocus ?? false;\n const ariaLabelledBy = props[\"aria-labelledby\"];\n const modalRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const previousActiveElement = useRef<HTMLElement | null>(null);\n\n // CSS animation state (replaces framer-motion AnimatePresence)\n const [mounted, setMounted] = useState(false);\n const [visible, setVisible] = useState(false);\n\n // Cache children during exit animation (replicates AnimatePresence behavior):\n // when global state clears data before the modal finishes closing, the cached\n // children keep the content visible throughout the exit animation.\n const [cachedChildren, setCachedChildren] = useState<ReactNode>(children);\n useEffect(() => {\n if (isOpen) {\n setCachedChildren(children);\n }\n }, [isOpen, children]);\n\n useEffect(() => {\n if (!animated) return;\n if (isOpen) {\n setMounted(true);\n const raf = requestAnimationFrame(() => {\n requestAnimationFrame(() => setVisible(true));\n });\n return () => cancelAnimationFrame(raf);\n } else {\n setVisible(false);\n const timer = setTimeout(() => {\n setMounted(false);\n onCloseComplete?.();\n }, 200);\n return () => clearTimeout(timer);\n }\n }, [isOpen, animated, onCloseComplete]);\n\n // Body scroll lock — usa counter global para soportar múltiples modales simultáneos\n useLayoutEffect(() => {\n if (isOpen) lockBodyScroll(modalId, preventBodyScroll);\n return () => {\n if (isOpen) unlockBodyScroll(modalId, preventBodyScroll);\n };\n }, [isOpen, preventBodyScroll, modalId]);\n\n // Scroll reset when opening\n useEffect(() => {\n if (!isOpen) return;\n const resetScroll = () => {\n const el = contentRef.current;\n if (!el) return;\n el.style.scrollBehavior = \"auto\";\n el.scrollTop = 0;\n requestAnimationFrame(() => {\n el.scrollTop = 0;\n setTimeout(() => {\n el.style.scrollBehavior = \"smooth\";\n }, 10);\n });\n };\n resetScroll();\n [10, 50, 100, 200].forEach((d) => setTimeout(resetScroll, d));\n }, [isOpen]);\n\n // Keyboard handling and focus trap\n useEffect(() => {\n let focusOutWrapper: HTMLDivElement | null = null;\n const pendingTasks: Array<ReturnType<typeof globalThis.setTimeout>> = [];\n\n const isElementVisible = (element: HTMLElement) => {\n const style = globalThis.getComputedStyle(element);\n return (\n style.visibility !== \"hidden\" &&\n style.display !== \"none\" &&\n element.offsetParent !== null\n );\n };\n\n const getFocusableElements = (wrapper: HTMLElement) => {\n const selector = [\n \"a[href]\",\n \"area[href]\",\n \"button:not([disabled])\",\n 'input:not([disabled]):not([type=\"hidden\"])',\n \"select:not([disabled])\",\n \"textarea:not([disabled])\",\n \"iframe\",\n \"object\",\n \"embed\",\n '[tabindex]:not([tabindex=\"-1\"])',\n '[contenteditable=\"true\"]',\n ].join(\",\");\n\n let focusable = Array.from(\n wrapper.querySelectorAll<HTMLElement>(selector),\n ).filter((el) => isElementVisible(el) && el.tabIndex !== -1);\n\n if (wrapper.tabIndex >= 0) {\n focusable = [wrapper, ...focusable];\n }\n return focusable;\n };\n\n const handleFocusOut = (e: FocusEvent) => {\n if (!isOpen || disableFocus) return;\n const wrapper = modalRef.current;\n if (!wrapper) return;\n const relatedTarget = e.relatedTarget as HTMLElement;\n if (relatedTarget && !wrapper.contains(relatedTarget)) {\n setTimeout(() => {\n const currentActive = document.activeElement as HTMLElement;\n if (!currentActive || !wrapper.contains(currentActive)) {\n const focusable = getFocusableElements(wrapper);\n if (focusable.length > 0) {\n focusable[focusable.length - 1].focus();\n } else {\n wrapper.focus();\n }\n }\n }, 0);\n }\n };\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && escapeToClose && !closeDisabled) {\n onClose();\n return;\n }\n\n if (!isOpen || disableFocus) return;\n const wrapper = modalRef.current;\n if (!wrapper) return;\n\n const focusable = getFocusableElements(wrapper);\n const active = (document.activeElement as HTMLElement) || null;\n\n const arrowKeys = [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"];\n if (arrowKeys.includes(e.key)) {\n if (active && wrapper.contains(active)) {\n const activeIndex = focusable.indexOf(active);\n if (\n (e.key === \"ArrowUp\" || e.key === \"ArrowLeft\") &&\n activeIndex === 0\n ) {\n e.preventDefault();\n e.stopPropagation();\n if (focusable.length > 1) focusable[focusable.length - 1].focus();\n else active.focus();\n return;\n }\n if (\n (e.key === \"ArrowDown\" || e.key === \"ArrowRight\") &&\n activeIndex === focusable.length - 1\n ) {\n e.preventDefault();\n e.stopPropagation();\n if (focusable.length > 1) focusable[0].focus();\n else active.focus();\n return;\n }\n requestAnimationFrame(() => {\n const currentActive = document.activeElement as HTMLElement;\n if (!currentActive || !wrapper.contains(currentActive)) {\n if (activeIndex !== -1 && focusable[activeIndex])\n focusable[activeIndex].focus();\n else if (focusable.length > 0) focusable[0].focus();\n else wrapper.focus();\n }\n });\n } else {\n e.preventDefault();\n if (focusable.length > 0) {\n if (e.key === \"ArrowUp\" || e.key === \"ArrowLeft\")\n focusable[focusable.length - 1].focus();\n else focusable[0].focus();\n } else {\n wrapper.focus();\n }\n }\n return;\n }\n\n if (e.key !== \"Tab\") return;\n if (focusable.length === 0) {\n e.preventDefault();\n wrapper.focus();\n return;\n }\n\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const isShift = e.shiftKey;\n\n if (!active || !wrapper.contains(active)) {\n e.preventDefault();\n (isShift ? last : first).focus();\n return;\n }\n\n const activeIndex = focusable.indexOf(active);\n if (\n !isShift &&\n (active === last || activeIndex === focusable.length - 1)\n ) {\n e.preventDefault();\n first.focus();\n return;\n }\n\n if (isShift) {\n e.preventDefault();\n if (active === first || active === wrapper || activeIndex === 0)\n last.focus();\n else if (activeIndex > 0) focusable[activeIndex - 1].focus();\n else last.focus();\n }\n };\n\n if (isOpen && !disableFocus) {\n previousActiveElement.current = document.activeElement as HTMLElement;\n\n const focusInitial = (wrapper: HTMLElement) => {\n if (ariaLabelledBy && document.getElementById(ariaLabelledBy)) {\n wrapper.focus({ preventScroll: true });\n return;\n }\n const focusable = getFocusableElements(wrapper);\n const first = focusable[0];\n if (first) first.focus({ preventScroll: true });\n else wrapper.focus();\n };\n\n const bindFocusManagement = (attempt = 0) => {\n const wrapper = modalRef.current;\n if (!wrapper) {\n if (attempt < 10) {\n pendingTasks.push(\n globalThis.setTimeout(() => bindFocusManagement(attempt + 1), 25),\n );\n }\n return;\n }\n\n if (focusOutWrapper !== wrapper) {\n focusOutWrapper?.removeEventListener(\"focusout\", handleFocusOut);\n wrapper.addEventListener(\"focusout\", handleFocusOut);\n focusOutWrapper = wrapper;\n }\n\n focusInitial(wrapper);\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n pendingTasks.push(globalThis.setTimeout(() => bindFocusManagement(), 0));\n } else if (isOpen && disableFocus) {\n document.addEventListener(\"keydown\", handleKeyDown);\n }\n\n return () => {\n pendingTasks.forEach((task) => globalThis.clearTimeout(task));\n document.removeEventListener(\"keydown\", handleKeyDown);\n focusOutWrapper?.removeEventListener(\"focusout\", handleFocusOut);\n if (\n !disableFocus &&\n !disableFocusRestore &&\n previousActiveElement.current\n ) {\n previousActiveElement.current.focus();\n }\n };\n }, [\n isOpen,\n onClose,\n closeDisabled,\n escapeToClose,\n disableFocus,\n disableFocusRestore,\n ariaLabelledBy,\n ]);\n\n // Sin animación: renderizar directo desde isOpen (sin delay de useEffect)\n if (!animated && !isOpen) return null;\n // Con animación: usar mounted para controlar enter/exit transitions\n if (animated && !mounted) return null;\n\n const contentClass = [\n \"relative flex flex-col items-center justify-start\",\n whitoutBackground\n ? \"bg-transparent\"\n : [\n \"min-w-[320px] w-[95vw] max-w-[95vw] max-h-[90vh]\",\n \"overflow-y-auto scroll-smooth\",\n \"md:max-w-[1000px]\",\n ].join(\" \"),\n props.className || \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <Portal>\n {/* Backdrop */}\n <div\n style={{ zIndex: zIndexLevel }}\n className={[\n \"fixed inset-0 bg-onpe-blue\",\n animated ? \"transition-opacity duration-200\" : \"\",\n animated ? (visible ? \"opacity-80\" : \"opacity-0\") : \"opacity-80\",\n ].join(\" \")}\n onClick={onClose}\n />\n\n {/* Container */}\n <div\n style={{ zIndex: zIndexLevel + 10 }}\n className={[\n \"fixed top-0 w-full h-screen grid\",\n alignTop ? \"place-items-start pt-8\" : \"place-items-center\",\n animated ? \"transition-all duration-200\" : \"\",\n animated\n ? visible\n ? \"opacity-100 scale-100 translate-y-0\"\n : \"opacity-[0.2] scale-95 -translate-y-5\"\n : \"opacity-100 scale-100 translate-y-0\",\n ].join(\" \")}\n >\n <div className=\"relative grid place-items-center\">\n <div\n ref={modalRef}\n onClick={(e) => e.stopPropagation()}\n {...(existTabIndex && { tabIndex: disableFocus ? -1 : 0 })}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={props[\"aria-labelledby\"]}\n aria-describedby={props[\"aria-describedby\"]}\n aria-label={props[\"aria-label\"]}\n >\n <div ref={contentRef} className={contentClass}>\n {isOpen ? children : cachedChildren}\n </div>\n {closeButton && (\n <button\n onClick={onClose}\n className=\"absolute top-2.5 right-2.5 text-onpe-red cursor-pointer w-4 h-4 border-none bg-transparent p-0 md:w-6 md:h-6\"\n aria-label=\"Cerrar\"\n type=\"button\"\n >\n <IconCloseRadius aria-hidden=\"true\" className=\"w-full h-full\" />\n </button>\n )}\n </div>\n </div>\n </div>\n </Portal>\n );\n};\n\nexport default Modal;\n","import { useState } from \"react\";\n\nimport { Modal } from \"../../components/Modal\";\n\ninterface OnpeIdModalProps {\n modalUrl: string;\n isOpenModal: boolean;\n isOpenLaunchApp: boolean;\n isOnline: boolean;\n onClose: () => void;\n iframeRef: React.RefObject<HTMLIFrameElement | null>;\n preloadIframeRef: React.RefObject<HTMLIFrameElement | null>;\n handlePreloadIframeReady: () => void;\n handleModalIframeReady: () => void;\n disableFocus?: boolean;\n}\n\nexport const OnpeIdModal = ({\n modalUrl,\n isOpenModal,\n isOpenLaunchApp,\n isOnline,\n onClose,\n iframeRef,\n preloadIframeRef,\n handlePreloadIframeReady,\n handleModalIframeReady,\n disableFocus = false,\n}: OnpeIdModalProps) => {\n const [isIframeLoaded, setIsIframeLoaded] = useState(false);\n\n return (\n <>\n {modalUrl && !isOpenModal && isOnline && (\n <iframe\n ref={preloadIframeRef}\n src={modalUrl}\n className=\"hidden\"\n onLoad={handlePreloadIframeReady}\n title=\"Precarga ONPE ID\"\n />\n )}\n\n <Modal\n isOpen={isOpenModal && isOnline}\n onClose={onClose}\n className=\"bg-white max-w-custom-673 p-10 relative\"\n closeButton={!isOpenLaunchApp && isIframeLoaded}\n escapeToClose={false}\n disableFocus={disableFocus}\n >\n {!!modalUrl && isOnline && (\n <iframe\n ref={iframeRef}\n src={modalUrl}\n onLoad={() => {\n handleModalIframeReady();\n setIsIframeLoaded(true);\n }}\n className=\"w-full h-[410px] min-[400px]:h-[390px] md:h-[312px]\"\n title=\"Aplicativo ONPEID para autenticación y registro\"\n />\n )}\n </Modal>\n </>\n );\n};\n"]}
package/dist/hooks.mjs CHANGED
@@ -1,6 +1,6 @@
1
- export { OnpeIdModal, useIframeCommunication, useIframePreload, useModalIframePreload, useOnpeIdAuth, useSendMessageToIframe, useSocketConnection } from './chunk-Q6SQJDXR.mjs';
1
+ export { OnpeIdModal, useIframeCommunication, useIframePreload, useModalIframePreload, useOnpeIdAuth, useSendMessageToIframe, useSocketConnection } from './chunk-6DPRQ3EM.mjs';
2
2
  import './chunk-KWOWOGBU.mjs';
3
- import './chunk-K25EVLJY.mjs';
3
+ import './chunk-RIILZBD5.mjs';
4
4
  import './chunk-J4MV4J6H.mjs';
5
5
  //# sourceMappingURL=hooks.mjs.map
6
6
  //# sourceMappingURL=hooks.mjs.map
package/dist/index.js CHANGED
@@ -1549,7 +1549,7 @@ var Modal = ({
1549
1549
  closeButton = false,
1550
1550
  closeDisabled = false,
1551
1551
  escapeToClose = true,
1552
- disableFocus = false,
1552
+ disableFocus: disableFocusProp,
1553
1553
  disableFocusRestore = false,
1554
1554
  existTabIndex = true,
1555
1555
  zIndexLevel = 100,
@@ -1564,6 +1564,7 @@ var Modal = ({
1564
1564
  const modalId = react.useId();
1565
1565
  const ctx = useModalGlobalContext();
1566
1566
  const animated = animatedProp ?? ctx?.animated ?? true;
1567
+ const disableFocus = disableFocusProp ?? ctx?.disableFocus ?? false;
1567
1568
  const ariaLabelledBy = props["aria-labelledby"];
1568
1569
  const modalRef = react.useRef(null);
1569
1570
  const contentRef = react.useRef(null);