{"version":3,"sources":["../../ui/src/applet-host/react-element.ts","../../ui/src/applet-devtools/enabled.ts","../../ui/src/applet-host/rpc.ts","../../ui/src/applet-host/router.tsx"],"names":[],"mappings":"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","file":"host.mjs","sourcesContent":["import { createRoot, type Root } from 'react-dom/client';\n\nexport type RouterMode = 'url' | 'memory'\nexport type ShellMode = 'embedded' | 'standalone'\n\ntype RegistryEntry = {\n  options: DefineReactAppletElementOptions\n  observed: Set<string>\n}\n\nexport interface AppletHostConfig {\n  basePath: string\n  shellMode?: ShellMode\n  routerMode: RouterMode\n  attrs: Record<string, string>\n}\n\nexport interface DefineReactAppletElementOptions {\n  tagName: string\n  styles?: string | (() => string)\n  render: (host: AppletHostConfig) => React.ReactElement\n  observedAttributes?: string[]\n  observeDarkMode?: boolean\n  /**\n   * Use Shadow DOM for CSS isolation (default: true).\n   *\n   * Set to `false` for full-page applets that use libraries requiring\n   * document-level DOM access (e.g. Headless UI Dialog portals).\n   * When false, styles are injected into document.head instead.\n   */\n  shadow?: boolean\n}\n\nexport function defineReactAppletElement(options: DefineReactAppletElementOptions): void {\n  const tagName = options.tagName.toLowerCase();\n\n  const registry = getRegistry();\n  const existing = registry.get(tagName);\n  if (existing) {\n    existing.options = options;\n    for (const a of options.observedAttributes ?? []) {existing.observed.add(a);}\n  } else {\n    const observed = new Set<string>(['base-path', 'shell-mode', 'router-mode']);\n    for (const a of options.observedAttributes ?? []) {observed.add(a);}\n    registry.set(tagName, { options, observed });\n  }\n\n  if (customElements.get(tagName)) {\n    if (typeof window !== 'undefined') {\n      window.dispatchEvent(new CustomEvent('iota:applet-host-update', { detail: { tagName } }));\n    }\n    return;\n  }\n\n  function getEntry(): RegistryEntry {\n    const entry = getRegistry().get(tagName);\n    if (!entry) {throw new Error(`[${tagName}] applet host registry entry missing`);}\n    return entry;\n  }\n\n  class ReactAppletElement extends HTMLElement {\n    private reactRoot: Root | null = null;\n    private container: HTMLDivElement | null = null;\n    private darkModeObserver: MutationObserver | null = null;\n    private styleEl: HTMLStyleElement | null = null;\n    private updateListener: ((e: Event) => void) | null = null;\n\n    static get observedAttributes(): string[] {\n      return Array.from(getEntry().observed);\n    }\n\n    private get useShadow(): boolean {\n      return getEntry().options.shadow !== false;\n    }\n\n    /** The root node that holds the container and styles (shadow root or the element itself). Call ensureMountMode() before reading when using shadow. */\n    private get styleRoot(): ShadowRoot | this {\n      if (!this.useShadow) {\n        return this;\n      }\n      if (!this.shadowRoot) {\n        throw new Error(`[${tagName}] shadowRoot missing; call ensureMountMode() first`);\n      }\n      return this.shadowRoot;\n    }\n\n    /** Ensures shadow root exists when needed and the React container is in the correct root (shadow or light). */\n    private ensureMountMode(): void {\n      const targetRoot = this.useShadow\n        ? (this.shadowRoot ?? this.attachShadow({ mode: 'open' }))\n        : this;\n      if (this.container && this.container.parentNode !== targetRoot) {\n        targetRoot.appendChild(this.container);\n      }\n    }\n\n    connectedCallback(): void {\n      if (!this.container) {\n        this.container = document.createElement('div');\n        this.container.id = 'react-root';\n        this.container.style.display = 'flex';\n        this.container.style.flexDirection = 'column';\n        this.container.style.flex = '1';\n        this.container.style.minHeight = '0';\n        this.container.style.height = '100%';\n        this.container.style.width = '100%';\n      }\n\n      this.ensureMountMode();\n      const root = this.styleRoot;\n\n      const existingContainer = root.querySelector('#react-root');\n      if (!existingContainer) {\n        if (this.useShadow && this.styleEl) {root.appendChild(this.styleEl);}\n        root.appendChild(this.container);\n      } else if (existingContainer !== this.container) {\n        this.container = existingContainer as HTMLDivElement;\n      }\n\n      this.syncFromRegistry();\n\n      this.updateListener ??= (e: Event) => {\n        if (!(e instanceof CustomEvent)) {return;}\n        const detail = (e as CustomEvent<{ tagName?: string }>).detail;\n        if (!detail || detail.tagName !== tagName) {return;}\n        this.syncFromRegistry();\n        this.renderReact();\n      };\n      window.addEventListener('iota:applet-host-update', this.updateListener as EventListener);\n\n      this.renderReact();\n    }\n\n    disconnectedCallback(): void {\n      if (this.updateListener) {\n        window.removeEventListener('iota:applet-host-update', this.updateListener as EventListener);\n      }\n\n      this.darkModeObserver?.disconnect();\n      this.darkModeObserver = null;\n\n      this.reactRoot?.unmount();\n      this.reactRoot = null;\n\n      // Clean up style: release shared light-mode style or remove shadow style\n      if (this.styleEl) {\n        if (this.styleEl.parentNode === document.head) {\n          releaseLightStyle(tagName);\n        } else {\n          this.styleEl.remove();\n        }\n        this.styleEl = null;\n      }\n    }\n\n    attributeChangedCallback(_name: string, oldValue: string | null, newValue: string | null): void {\n      if (oldValue === newValue) {return;}\n      if (this.container) {this.renderReact();}\n    }\n\n    private getHostConfig(): AppletHostConfig {\n      const attrs: Record<string, string> = {};\n      for (const { name, value } of Array.from(this.attributes)) {\n        attrs[name] = value;\n      }\n\n      const basePath = this.getAttribute('base-path') ?? '';\n      const shellMode = (this.getAttribute('shell-mode') as ShellMode | null) ?? undefined;\n      const routerMode = (this.getAttribute('router-mode') as RouterMode | null) ?? 'url';\n\n      return { basePath, shellMode, routerMode, attrs };\n    }\n\n    private renderReact(): void {\n      if (!this.container) {return;}\n\n      if (!this.reactRoot) {\n        this.reactRoot = createRoot(this.container);\n      }\n\n      try {\n        this.reactRoot.render(getEntry().options.render(this.getHostConfig()));\n      } catch (err) {\n        console.error(`[${tagName}] failed to mount React app:`, err);\n      }\n    }\n\n    private syncFromRegistry(): void {\n      this.ensureMountMode();\n      const entry = getEntry();\n\n      const styles = typeof entry.options.styles === 'function' ? entry.options.styles() : entry.options.styles;\n      if (styles) {\n        if (this.useShadow) {\n          // Shadow mode: per-instance <style> in shadow root (release shared if we were in light mode)\n          if (this.styleEl && this.styleEl.parentNode === document.head) {\n            releaseLightStyle(tagName);\n            this.styleEl = null;\n          }\n          this.styleEl ??= document.createElement('style');\n          this.styleEl.textContent = styles;\n          if (this.shadowRoot && !this.shadowRoot.contains(this.styleEl)) {\n            this.shadowRoot.insertBefore(this.styleEl, this.shadowRoot.firstChild);\n          }\n        } else {\n          // Light mode: shared <style> per tagName in document.head (ref-counted)\n          if (this.styleEl && this.shadowRoot?.contains(this.styleEl)) {\n            this.styleEl.remove();\n            this.styleEl = null;\n          }\n          // Release any stale ref (orphaned or from a previous cycle) before acquiring a new one.\n          if (this.styleEl && this.styleEl.parentNode !== document.head) {\n            releaseLightStyle(tagName);\n            this.styleEl = null;\n          }\n          if (!this.styleEl) {\n            this.styleEl = getOrCreateLightStyle(tagName, styles);\n          } else {\n            this.styleEl.textContent = styles;\n          }\n          if (!document.head.contains(this.styleEl)) {\n            document.head.appendChild(this.styleEl);\n          }\n        }\n      } else if (this.styleEl) {\n        if (this.styleEl.parentNode === document.head) {\n          releaseLightStyle(tagName);\n        } else {\n          this.styleEl.remove();\n        }\n        this.styleEl = null;\n      }\n\n      if (entry.options.observeDarkMode !== false) {\n        this.darkModeObserver ??= this.syncDarkMode();\n      } else if (this.darkModeObserver) {\n        this.darkModeObserver.disconnect();\n        this.darkModeObserver = null;\n      }\n    }\n\n    private syncDarkMode(): MutationObserver {\n      const root = this.container;\n      if (!root) {throw new Error('react root container not found');}\n\n      const apply = () => {\n        if (document.documentElement.classList.contains('dark')) {root.classList.add('dark');}\n        else {root.classList.remove('dark');}\n      };\n\n      apply();\n\n      const observer = new MutationObserver(apply);\n      observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });\n      return observer;\n    }\n  }\n\n  customElements.define(tagName, ReactAppletElement);\n}\n\nfunction getRegistry(): Map<string, RegistryEntry> {\n  const g = globalThis as Record<string, unknown>;\n  g.__IOTA_REACT_APPLET_HOST_REGISTRY__ ??= new Map<string, RegistryEntry>();\n  return g.__IOTA_REACT_APPLET_HOST_REGISTRY__ as Map<string, RegistryEntry>;\n}\n\n// Light-mode style registry: one shared <style> per tagName, ref-counted\ninterface LightStyleEntry {\n  element: HTMLStyleElement\n  refCount: number\n}\n\nfunction getLightStyleRegistry(): Map<string, LightStyleEntry> {\n  const g = globalThis as Record<string, unknown>;\n  g.__IOTA_REACT_APPLET_LIGHT_STYLES__ ??= new Map<string, LightStyleEntry>();\n  return g.__IOTA_REACT_APPLET_LIGHT_STYLES__ as Map<string, LightStyleEntry>;\n}\n\n/**\n * Returns a shared <style> element for the given tagName (ref-counted).\n * Callers (e.g. syncFromRegistry) are responsible for appending the element\n * to document.head; it is not appended here.\n */\nfunction getOrCreateLightStyle(tagName: string, styles: string): HTMLStyleElement {\n  const registry = getLightStyleRegistry();\n  let entry = registry.get(tagName);\n  if (!entry) {\n    const el = document.createElement('style');\n    el.id = `${tagName}-styles`;\n    entry = { element: el, refCount: 0 };\n    registry.set(tagName, entry);\n  }\n  entry.refCount++;\n  entry.element.textContent = styles;\n  return entry.element;\n}\n\nfunction releaseLightStyle(tagName: string): void {\n  const registry = getLightStyleRegistry();\n  const entry = registry.get(tagName);\n  if (!entry) {return;}\n  entry.refCount--;\n  if (entry.refCount <= 0) {\n    entry.element.remove();\n    registry.delete(tagName);\n  }\n}\n","export function shouldEnableAppletDevtools(): boolean {\n  if (typeof window === 'undefined') {return false;}\n\n  const url = new URL(window.location.href);\n  if (url.searchParams.get('appletDebug') === '1') {return true;}\n\n  try {\n    return window.localStorage.getItem('iotaAppletDevtools') === '1';\n  } catch {\n    return false;\n  }\n}\n\n","import { shouldEnableAppletDevtools } from '../applet-devtools/enabled';\n\nexport interface AppletRPCError {\n  code: string\n  message: string\n  details?: unknown\n}\n\nexport class AppletRPCException extends Error {\n  code: string;\n  details?: unknown;\n  cause?: unknown;\n\n  constructor(args: { code: string; message: string; details?: unknown; cause?: unknown }) {\n    super(args.message);\n    this.name = 'AppletRPCException';\n    this.code = args.code;\n    this.details = args.details;\n    this.cause = args.cause;\n  }\n}\n\nexport type AppletRPCSchema = Record<string, { params: unknown; result: unknown }>\n\ninterface RPCRequest {\n  id: string\n  method: string\n  params: unknown\n}\n\ninterface RPCResponse<TResult> {\n  id: string\n  result?: TResult\n  error?: AppletRPCError\n}\n\nexport interface CreateAppletRPCClientOptions {\n  endpoint: string\n  fetcher?: typeof fetch\n  timeoutMs?: number\n}\n\nexport function createAppletRPCClient(options: CreateAppletRPCClientOptions) {\n  const fetcher = options.fetcher ?? fetch;\n  const timeoutMs = typeof options.timeoutMs === 'number' && options.timeoutMs > 0 ? options.timeoutMs : 0;\n\n  async function call<TParams, TResult>(method: string, params: TParams): Promise<TResult> {\n    const req: RPCRequest = { id: crypto.randomUUID(), method, params };\n    const startedAt = typeof performance !== 'undefined' ? performance.now() : Date.now();\n    const abortController = timeoutMs > 0 ? new AbortController() : undefined;\n    let timeoutHandle: ReturnType<typeof setTimeout> | undefined;\n    let timedOut = false;\n    maybeDispatchRPCEvent({\n      id: req.id,\n      method: req.method,\n      status: 'start',\n    });\n\n    try {\n      if (abortController) {\n        timeoutHandle = setTimeout(() => {\n          timedOut = true;\n          abortController.abort();\n        }, timeoutMs);\n      }\n\n      const resp = await fetcher(options.endpoint, {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json' },\n        body: JSON.stringify(req),\n        signal: abortController?.signal,\n      });\n\n      if (!resp.ok) {\n        throw new AppletRPCException({\n          code: 'http_error',\n          message: `HTTP ${resp.status}`,\n          details: { status: resp.status },\n        });\n      }\n\n      const json = (await resp.json()) as RPCResponse<TResult>;\n      if (json.error) {\n        throw new AppletRPCException({\n          code: json.error.code,\n          message: json.error.message,\n          details: json.error.details,\n        });\n      }\n\n      if (json.result === undefined) {\n        throw new AppletRPCException({\n          code: 'invalid_response',\n          message: 'Missing result in successful response',\n        });\n      }\n\n      maybeDispatchRPCEvent({\n        id: req.id,\n        method: req.method,\n        status: 'success',\n        durationMs: elapsedMs(startedAt),\n      });\n\n      return json.result as TResult;\n    } catch (err) {\n      let rpcErr: unknown = err;\n      if (err instanceof Error && err.name === 'AbortError') {\n        rpcErr = new AppletRPCException({\n          code: timedOut ? 'timeout' : 'aborted',\n          message: timedOut ? `RPC request timed out after ${timeoutMs}ms` : 'RPC request was aborted',\n          cause: err,\n        });\n      }\n      maybeDispatchRPCEvent({\n        id: req.id,\n        method: req.method,\n        status: 'error',\n        durationMs: elapsedMs(startedAt),\n        error: rpcErr,\n      });\n      throw rpcErr;\n    } finally {\n      if (timeoutHandle !== undefined) {\n        clearTimeout(timeoutHandle);\n      }\n    }\n  }\n\n  async function callTyped<\n    TRouter extends AppletRPCSchema,\n    TMethod extends keyof TRouter & string,\n  >(method: TMethod, params: TRouter[TMethod]['params']): Promise<TRouter[TMethod]['result']> {\n    return call(method, params) as Promise<TRouter[TMethod]['result']>;\n  }\n\n  return { call, callTyped };\n}\n\ntype RPCDevEvent = {\n  id: string\n  method: string\n  status: 'start' | 'success' | 'error'\n  durationMs?: number\n  error?: unknown\n}\n\nfunction maybeDispatchRPCEvent(detail: RPCDevEvent) {\n  if (typeof window === 'undefined') {return;}\n\n  if (!shouldEnableAppletDevtools()) {return;}\n\n  window.dispatchEvent(new CustomEvent('iota:applet-rpc', { detail }));\n}\n\nfunction elapsedMs(startedAt: number): number {\n  const now = typeof performance !== 'undefined' ? performance.now() : Date.now();\n  return Math.max(0, Math.round(now - startedAt));\n}\n","import type React from 'react';\n\nexport type RouterMode = 'url' | 'memory'\n\nexport interface CreateAppletRouterOptions {\n  mode: RouterMode\n  basePath?: string\n  BrowserRouter: React.ComponentType<Record<string, unknown>>\n  MemoryRouter: React.ComponentType<Record<string, unknown>>\n}\n\nexport function createAppletRouter(options: CreateAppletRouterOptions) {\n  const basePath = options.basePath ?? '';\n\n  const Router: React.FC<React.PropsWithChildren> = ({ children }) => {\n    if (options.mode === 'memory') {\n      const MemoryRouter = options.MemoryRouter;\n      return <MemoryRouter>{children}</MemoryRouter>;\n    }\n\n    const BrowserRouter = options.BrowserRouter;\n    return <BrowserRouter basename={basePath}>{children}</BrowserRouter>;\n  };\n\n  return { Router };\n}\n\n"]}