{"version":3,"file":"head.mjs","names":[],"sources":["../../src/ui/head.ts"],"sourcesContent":["import type { ClientRuntimeConfig } from \"../types\";\nimport type { HeadScript } from \"./types\";\n\nexport interface RemoteScriptsOptions {\n  runtimeConfig?: Partial<ClientRuntimeConfig>;\n  containerName?: string;\n  hydratePath?: string;\n  integrity?: string;\n  cspNonce?: string;\n}\n\nexport function getThemeInitScript(): HeadScript {\n  return {\n    children:\n      \"(function(){var t=localStorage.getItem('theme');if(t==='dark'||(!t&&window.matchMedia('(prefers-color-scheme: dark)').matches)){document.documentElement.classList.add('dark');}})();\",\n  };\n}\n\nexport function getHydrateScript(\n  runtimeConfig: Partial<ClientRuntimeConfig> | undefined,\n  containerName = \"ui\",\n  hydratePath = \"./Hydrate\",\n  cspNonce?: string,\n): HeadScript {\n  return {\n    children: `\n window.__CSP_NONCE__=${JSON.stringify(cspNonce)};\n window.__RUNTIME_CONFIG__=${JSON.stringify(runtimeConfig)};\n function __hydrate(){\n  if (window.__EVERYTHING_DEV_HYDRATE_PROMISE__) {\n    return;\n  }\n   var container = window['${containerName}'];\n   if (!container) {\n     console.warn('[Hydrate] Container not ready yet, waiting...');\n    window.__hydrateRetry = window.__hydrateRetry || 0;\n    if (window.__hydrateRetry < 10) {\n      window.__hydrateRetry++;\n      setTimeout(__hydrate, 100);\n      return;\n    }\n    console.error('[Hydrate] Container not found after 10 retries');\n    return;\n  }\n  console.log('[Hydrate] Container available, starting init...');\n  container.init({}).then(function(){\n    return container.get('${hydratePath}');\n  }).then(function(mod){\n    return mod().hydrate();\n  }).catch(function(e){\n    console.error('[Hydrate] Failed:', e);\n  });\n }\n if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',__hydrate);}else{__hydrate();}\n \t\t`.trim(),\n  };\n}\n\nexport function getRemoteScripts(options: RemoteScriptsOptions): HeadScript[] {\n  const { runtimeConfig, containerName, hydratePath, integrity, cspNonce } = options;\n  const assetsUrl = runtimeConfig?.assetsUrl?.replace(/\\/$/, \"\");\n  const entryScript: HeadScript = {\n    src: `${assetsUrl ?? \"\"}/remoteEntry.js${integrity ? `?v=${encodeURIComponent(integrity)}` : \"\"}`,\n  };\n  if (integrity) {\n    entryScript.integrity = integrity;\n    entryScript.crossOrigin = \"anonymous\";\n  }\n  return [entryScript, getHydrateScript(runtimeConfig, containerName, hydratePath, cspNonce)];\n}\n\nexport function getBaseStyles(): string {\n  return `\n*, *::before, *::after { box-sizing: border-box; }\nhtml { height: 100%; height: 100dvh; -webkit-text-size-adjust: 100%; text-size-adjust: 100%; color-scheme: light dark; }\nbody { min-height: 100%; min-height: 100dvh; margin: 0; background-color: var(--background); color: var(--foreground); -webkit-tap-highlight-color: transparent; touch-action: manipulation; }\n#root { min-height: 100vh; }\n@supports (min-height: 100dvh) { #root { min-height: 100dvh; } }\n  `.trim();\n}\n"],"mappings":";AAWA,SAAgB,qBAAiC;AAC/C,QAAO,EACL,UACE,yLACH;;AAGH,SAAgB,iBACd,eACA,gBAAgB,MAChB,cAAc,aACd,UACY;AACZ,QAAO,EACL,UAAU;wBACU,KAAK,UAAU,SAAS,CAAC;6BACpB,KAAK,UAAU,cAAc,CAAC;;;;;6BAK9B,cAAc;;;;;;;;;;;;;;4BAcf,YAAY;;;;;;;;KAQnC,MAAM,EACR;;AAGH,SAAgB,iBAAiB,SAA6C;CAC5E,MAAM,EAAE,eAAe,eAAe,aAAa,WAAW,aAAa;CAE3E,MAAM,cAA0B,EAC9B,KAAK,GAFW,eAAe,WAAW,QAAQ,OAAO,GAAG,IAEvC,GAAG,iBAAiB,YAAY,MAAM,mBAAmB,UAAU,KAAK,MAC9F;AACD,KAAI,WAAW;AACb,cAAY,YAAY;AACxB,cAAY,cAAc;;AAE5B,QAAO,CAAC,aAAa,iBAAiB,eAAe,eAAe,aAAa,SAAS,CAAC;;AAG7F,SAAgB,gBAAwB;AACtC,QAAO;;;;;;IAML,MAAM"}