use-iframe-sync.tsx — ui Source File
Architecture documentation for use-iframe-sync.tsx, a tsx file in the ui codebase. 2 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 6df3b824_805c_9704_1ce4_b3b332c22d53["use-iframe-sync.tsx"] 1d141819_425e_b5fd_4c8e_32f7c6a42cf2["react"] 6df3b824_805c_9704_1ce4_b3b332c22d53 --> 1d141819_425e_b5fd_4c8e_32f7c6a42cf2 c27c6e95_5daf_4dd4_dc3a_add496837570["search-params"] 6df3b824_805c_9704_1ce4_b3b332c22d53 --> c27c6e95_5daf_4dd4_dc3a_add496837570 style 6df3b824_805c_9704_1ce4_b3b332c22d53 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
"use client"
import * as React from "react"
import type { DesignSystemSearchParams } from "@/app/(create)/lib/search-params"
type ParentToIframeMessage = {
type: "design-system-params"
data: DesignSystemSearchParams
}
export const isInIframe = () => {
if (typeof window === "undefined") {
return false
}
return window.self !== window.top
}
export function useIframeMessageListener<
Message extends ParentToIframeMessage,
MessageType extends Message["type"],
>(
messageType: MessageType,
onMessage: (data: Extract<Message, { type: MessageType }>["data"]) => void
) {
React.useEffect(() => {
if (!isInIframe()) {
return
}
const handleMessage = (event: MessageEvent) => {
if (event.data.type === messageType) {
onMessage(event.data.data)
}
}
window.addEventListener("message", handleMessage)
return () => {
window.removeEventListener("message", handleMessage)
}
}, [messageType, onMessage])
}
export function sendToIframe<
Message extends ParentToIframeMessage,
MessageType extends Message["type"],
>(
iframe: HTMLIFrameElement | null,
messageType: MessageType,
data: Extract<Message, { type: MessageType }>["data"]
) {
if (!iframe?.contentWindow) {
return
}
iframe.contentWindow.postMessage(
{
type: messageType,
data,
},
"*"
)
}
Domain
Subdomains
Types
Dependencies
- react
- search-params
Source
Frequently Asked Questions
What does use-iframe-sync.tsx do?
use-iframe-sync.tsx is a source file in the ui codebase, written in tsx. It belongs to the DocumentationAtlas domain, Changelog subdomain.
What functions are defined in use-iframe-sync.tsx?
use-iframe-sync.tsx defines 3 function(s): isInIframe, sendToIframe, useIframeMessageListener.
What does use-iframe-sync.tsx depend on?
use-iframe-sync.tsx imports 2 module(s): react, search-params.
Where is use-iframe-sync.tsx in the architecture?
use-iframe-sync.tsx is located at apps/v4/app/(create)/hooks/use-iframe-sync.tsx (domain: DocumentationAtlas, subdomain: Changelog, directory: apps/v4/app/(create)/hooks).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free