flowchart TB subgraph Parent["Parent Page (embed.ts)"] direction TB CalAPI["Cal API
(Cal.inline, Cal.modal, Cal.ui)"] ActionMgr["ActionManager
(Event Listener)"] DoInIframe["doInIframe()
(Command Sender)"] Queue["iframeDoQueue[]
(Command Buffer)"] CalAPI --> DoInIframe DoInIframe -->|"if !iframeReady"| Queue Queue -->|"flush on ready"| DoInIframe end subgraph Transport["postMessage Transport"] direction TB ToIframe["parent.postMessage()
{originator: 'CAL', method, arg}"] ToParent["iframe.postMessage()
{originator: 'CAL', type, data}"] end subgraph Iframe["Iframe (embed-iframe.ts)"] direction TB MsgListener["window.addEventListener('message')"] Interface["interfaceWithParent
{ui, parentKnowsIframeReady, connect}"] SDKAction["sdkActionManager
(Event Emitter)"] EmbedStore["embedStore
(State)"] MsgListener --> Interface Interface --> EmbedStore SDKAction -->|"fire()"| ToParent end DoInIframe -->|"Commands"| ToIframe ToIframe --> MsgListener ToParent --> ActionMgr style Parent fill:#e1f5fe,stroke:#01579b style Iframe fill:#fff3e0,stroke:#e65100 style Transport fill:#f3e5f5,stroke:#7b1fa2