@absolutejs/absolute 0.20.0-beta.173 → 0.20.0-beta.175

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.
Files changed (110) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/changelog.json +71 -0
  3. package/dist/angular/browser.js +13 -2
  4. package/dist/angular/browser.js.map +3 -3
  5. package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
  6. package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
  7. package/dist/angular/index.js +113 -34
  8. package/dist/angular/index.js.map +12 -9
  9. package/dist/angular/server.js +113 -34
  10. package/dist/angular/server.js.map +12 -9
  11. package/dist/build.js +946 -731
  12. package/dist/build.js.map +40 -37
  13. package/dist/cli/{add-ae6mg79m.js → add-ntg96znk.js} +32 -31
  14. package/dist/cli/{compile-ndc36zna.js → compile-w2z6c9vt.js} +16 -14
  15. package/dist/cli/config/server.js +85 -65
  16. package/dist/cli/{dev-x49583aj.js → dev-8br5mr7t.js} +17 -3
  17. package/dist/cli/{expoProject-h404n2r8.js → expoProject-1qtw97js.js} +2 -1
  18. package/dist/cli/{generate-brvjesd6.js → generate-5vyz1s44.js} +7 -6
  19. package/dist/cli/{htmx-5twhjz7p.js → htmx-26hs6jdm.js} +2 -1
  20. package/dist/cli/{index-gyjxrnnz.js → index-23hvdyxf.js} +18 -16
  21. package/dist/cli/index-4j1twret.js +22 -0
  22. package/dist/cli/{index-z794p5qg.js → index-6522t968.js} +43 -21
  23. package/dist/cli/{index-25e7k849.js → index-7z1hh3fg.js} +4 -4
  24. package/dist/cli/{index-s0r5q839.js → index-cksezef8.js} +10 -8
  25. package/dist/cli/{index-q3snnhyd.js → index-enbw9484.js} +34 -33
  26. package/dist/cli/{index-b1wht4q5.js → index-kes8he5s.js} +6 -4
  27. package/dist/cli/{index-vh68jb0e.js → index-pkw3jktb.js} +17 -16
  28. package/dist/cli/{index-rervww4p.js → index-zyd80s3h.js} +119 -119
  29. package/dist/cli/index.js +11 -11
  30. package/dist/cli/{islands-p4vgx7a2.js → islands-bx67g15t.js} +8 -7
  31. package/dist/cli/{mobile-nqdkk3gd.js → mobile-we5q51ey.js} +5 -4
  32. package/dist/cli/{remove-abaf0w6k.js → remove-4jh862qa.js} +6 -5
  33. package/dist/cli/{start-t3cq57wn.js → start-srs11bm8.js} +5 -4
  34. package/dist/cli/{typecheck-fag7djt5.js → typecheck-7fvww3b7.js} +28 -26
  35. package/dist/client/chunks/index-4j1snyh2.js +18 -0
  36. package/dist/client/chunks/index-4j1snyh2.js.map +10 -0
  37. package/dist/client/chunks/{index-6b66nzyf.js → index-a3rpg5kw.js} +6 -16
  38. package/dist/client/chunks/{index-6b66nzyf.js.map → index-a3rpg5kw.js.map} +3 -4
  39. package/dist/client/chunks/{islands-s2ta5ajb.js → islands-mfjmdwnb.js} +11 -4
  40. package/dist/client/chunks/{islands-s2ta5ajb.js.map → islands-mfjmdwnb.js.map} +3 -3
  41. package/dist/client/chunks/{react-dcvkaba2.js → react-sprprqzs.js} +20 -4
  42. package/dist/client/chunks/react-sprprqzs.js.map +10 -0
  43. package/dist/client/chunks/svelte-6ewphsvj.js +30 -0
  44. package/dist/client/chunks/svelte-6ewphsvj.js.map +10 -0
  45. package/dist/client/chunks/{vue-a84fzp3v.js → vue-db6ppn1f.js} +14 -4
  46. package/dist/client/chunks/vue-db6ppn1f.js.map +10 -0
  47. package/dist/client/index.js +65 -8
  48. package/dist/client/index.js.map +4 -4
  49. package/dist/client/navigation.js +5 -3
  50. package/dist/client/navigation.js.map +2 -2
  51. package/dist/client/prefetch.js +1 -1
  52. package/dist/dev/client/handlers/islands.ts +85 -0
  53. package/dist/dev/client/hmrClient.ts +6 -0
  54. package/dist/dev/importCostReport.js +45 -26
  55. package/dist/index.js +1080 -852
  56. package/dist/index.js.map +41 -38
  57. package/dist/islands/index.js +57 -10
  58. package/dist/islands/index.js.map +9 -7
  59. package/dist/mobile/index.js +115 -95
  60. package/dist/mobile/index.js.map +6 -5
  61. package/dist/mobile/remoteMacAgentEntry.js +205 -651
  62. package/dist/react/browser.js +15 -4
  63. package/dist/react/browser.js.map +5 -5
  64. package/dist/react/components/client.js +506 -0
  65. package/dist/react/components/index.js +14 -15
  66. package/dist/react/components/index.js.map +4 -4
  67. package/dist/react/components/server/index.js +728 -0
  68. package/dist/react/hooks/index.js +14 -15
  69. package/dist/react/hooks/index.js.map +4 -4
  70. package/dist/react/index.js +66 -6
  71. package/dist/react/index.js.map +11 -9
  72. package/dist/react/router/browser.js +7 -8
  73. package/dist/react/router/browser.js.map +4 -4
  74. package/dist/react/router/index.js +7 -8
  75. package/dist/react/router/index.js.map +4 -4
  76. package/dist/react/server.js +14 -1
  77. package/dist/react/server.js.map +4 -4
  78. package/dist/src/build/buildReactServerComponents.d.ts +4 -0
  79. package/dist/src/build/islandEntries.d.ts +5 -0
  80. package/dist/src/cli/config/absolute/resolveAbsoluteConfig.d.ts +3 -3
  81. package/dist/src/cli/config/auth/resolveAuthSettings.d.ts +3 -3
  82. package/dist/src/client/hydrators/react.d.ts +7 -0
  83. package/dist/src/client/hydrators/svelte.d.ts +3 -0
  84. package/dist/src/client/hydrators/vue.d.ts +3 -0
  85. package/dist/src/client/preserveIslandMarkup.d.ts +5 -0
  86. package/dist/src/core/islandServerGeneration.d.ts +3 -0
  87. package/dist/src/dev/angular/fastHmrCompiler.d.ts +2 -2
  88. package/dist/src/dev/angular/hmrImportGenerator.d.ts +2 -2
  89. package/dist/src/dev/angular/vendor/translator/ts_util.d.ts +2 -2
  90. package/dist/src/dev/angular/vendor/translator/typescript_ast_factory.d.ts +40 -40
  91. package/dist/src/dev/angular/vendor/translator/typescript_translator.d.ts +3 -3
  92. package/dist/src/react/components/client.d.ts +4 -0
  93. package/dist/src/react/components/server/index.d.ts +8 -0
  94. package/dist/src/react/serverComponents/constants.d.ts +2 -1
  95. package/dist/src/utils/lazyTypescript.d.ts +3 -0
  96. package/dist/svelte/index.js +66 -6
  97. package/dist/svelte/index.js.map +10 -8
  98. package/dist/svelte/server.js +38 -3
  99. package/dist/svelte/server.js.map +6 -5
  100. package/dist/types/build.d.ts +3 -2
  101. package/dist/types/globals.d.ts +15 -0
  102. package/dist/vue/browser.js +26 -16
  103. package/dist/vue/browser.js.map +5 -5
  104. package/dist/vue/index.js +65 -21
  105. package/dist/vue/index.js.map +10 -9
  106. package/package.json +1 -1
  107. package/dist/client/chunks/react-dcvkaba2.js.map +0 -10
  108. package/dist/client/chunks/svelte-4yfa5bxa.js +0 -17
  109. package/dist/client/chunks/svelte-4yfa5bxa.js.map +0 -10
  110. package/dist/client/chunks/vue-a84fzp3v.js.map +0 -10
@@ -8,9 +8,9 @@
8
8
  "/**\n * Utility for registering client-side scripts that need to run after Angular SSR hydration.\n *\n * This is necessary because Angular's lifecycle hooks don't always run reliably on the client\n * after SSR hydration, especially for event listeners attached to DOM elements.\n *\n * Usage in Angular components:\n * ```typescript\n * import { registerClientScript } from '@absolutejs/absolute';\n *\n * // Register an event listener script\n * registerClientScript(() => {\n * const element = document.querySelector('.my-element');\n * if (element) {\n * element.addEventListener('click', () => {\n * console.log('Clicked!');\n * });\n * }\n * });\n * ```\n *\n * The script will be automatically injected into the HTML response and executed on the client.\n */\n\nimport { nonceAttr } from './cspNonceRef';\n\n// Request-scoped registry for client scripts\n// Each request gets its own set of scripts to inject\nconst scriptRegistry = new Map<string, Set<() => void>>();\n\n// Generate a unique request ID for tracking scripts per request\nlet requestCounter = 0;\nconst getRequestId = () => `req_${Date.now()}_${++requestCounter}`;\n\n// Allow SSR frameworks to inject a request context getter (e.g. AsyncLocalStorage)\nlet ssrContextGetter: (() => string | undefined) | null = null;\nexport const getSsrContextId = () =>\n\tssrContextGetter?.() ||\n\tObject.getOwnPropertyDescriptor(globalThis, '__absolutejs_requestId')\n\t\t?.value;\nexport const registerClientScript = (\n\tscript: () => void,\n\trequestId?: string\n) => {\n\t// Try to get requestId from explicit arg, then Async Context, then global fallback\n\tconst id = requestId || getSsrContextId() || getRequestId();\n\n\tif (!scriptRegistry.has(id)) {\n\t\tscriptRegistry.set(id, new Set());\n\t}\n\n\tscriptRegistry.get(id)?.add(script);\n\n\treturn id;\n};\nexport const setSsrContextGetter = (getter: () => string | undefined) => {\n\tssrContextGetter = getter;\n};\n\n// Make registerClientScript available globally during SSR for Angular components\n// Using type assertion for globalThis extension\nif (typeof globalThis !== 'undefined') {\n\tObject.assign(globalThis, { registerClientScript });\n}\n\n/**\n * Get all registered scripts for a request and clear them.\n * This is called by the page handler after rendering.\n *\n * @param requestId - The request ID to get scripts for\n * @returns Array of script functions, or empty array if none registered\n */\nexport const clearAllClientScripts = () => {\n\tscriptRegistry.clear();\n};\nexport const generateClientScriptCode = (scripts: (() => void)[]) => {\n\tif (scripts.length === 0) {\n\t\treturn '';\n\t}\n\n\t// Convert functions to strings and wrap in IIFE\n\tconst scriptCode = scripts\n\t\t.map((script, index) => {\n\t\t\t// Get the function body as a string\n\t\t\tconst funcString = script.toString();\n\n\t\t\t// Extract the body (everything between { and })\n\t\t\tconst bodyMatch = funcString.match(/\\{([\\s\\S]*)\\}/);\n\t\t\tif (!bodyMatch || !bodyMatch[1]) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tconst body = bodyMatch[1].trim();\n\n\t\t\t// Wrap in IIFE with MutationObserver for DOM readiness\n\t\t\treturn `\n\t(function() {\n\t\tvar executed = false;\n\t\tfunction executeScript_${index}() {\n\t\t\tif (executed) return;\n\t\t\texecuted = true;\n\t\t\t${body}\n\t\t}\n\n\t\tif (document.readyState === 'complete' || document.readyState === 'interactive') {\n\t\t\texecuteScript_${index}();\n\t\t} else {\n\t\t\tdocument.addEventListener('DOMContentLoaded', executeScript_${index});\n\t\t}\n\n\t\t// Watch for hydration-added elements\n\t\tvar observer = new MutationObserver(function() {\n\t\t\texecuteScript_${index}();\n\t\t\tif (executed) observer.disconnect();\n\t\t});\n\t\tif (!executed) {\n\t\t\tobserver.observe(document.body || document.documentElement, { childList: true, subtree: true });\n\t\t}\n\n\t\t// Single fallback timeout\n\t\tsetTimeout(function() {\n\t\t\texecuteScript_${index}();\n\t\t\tobserver.disconnect();\n\t\t}, 1000);\n\t})();`;\n\t\t})\n\t\t.join('\\n');\n\n\treturn `<script${nonceAttr()}>\n(function() {\n${scriptCode}\n})();\n</script>`;\n};\nexport const getAndClearClientScripts = (requestId?: string) => {\n\tconst id = requestId || ssrContextGetter?.();\n\tif (!id) return [];\n\n\tconst scripts = scriptRegistry.get(id);\n\tif (!scripts) {\n\t\treturn [];\n\t}\n\n\tconst scriptArray = Array.from(scripts);\n\tscriptRegistry.delete(id);\n\n\treturn scriptArray;\n};\n",
9
9
  "import { nonceAttr } from '../utils/cspNonceRef';\nimport { TRANSLATABLE_ATTRIBUTES } from '../client/browserTranslationAttributes';\n\nconst BASELINE_MARKER = '__ABSOLUTE_SSR_TEXT_BASELINES__';\n\n/** Inline this after SSR markup and before any client entry executes. The\n * snapshot records server-authored text while keeping it out of the DOM, so\n * browser translation remains free to edit the rendered text. */\nexport const BROWSER_TRANSLATION_BASELINE_SCRIPT =\n\t'window.__ABSOLUTE_SSR_TEXT_BASELINES__=new WeakMap();' +\n\t'window.__ABSOLUTE_SSR_ATTRIBUTE_BASELINES__=new WeakMap();' +\n\t'{const r=document.body,b=window.__ABSOLUTE_SSR_TEXT_BASELINES__,' +\n\t'a=window.__ABSOLUTE_SSR_ATTRIBUTE_BASELINES__;' +\n\t'if(r)for(const e of [r,...r.querySelectorAll(\"*\")]){' +\n\t'const t=new Map();for(const [i,n]of[...e.childNodes].entries())' +\n\t'if(n.nodeType===3)t.set(i,n.nodeValue??\"\");if(t.size)b.set(e,t);' +\n\t`const v=new Map();for(const k of ${JSON.stringify(TRANSLATABLE_ATTRIBUTES)}){` +\n\t'const s=e.getAttribute(k);if(s!==null)v.set(k,s);}if(v.size)a.set(e,v);}}';\n\nexport const browserTranslationBaselineTag = () =>\n\t`<script${nonceAttr()}>${BROWSER_TRANSLATION_BASELINE_SCRIPT}</script>`;\n\nexport const injectBrowserTranslationBaseline = (html: string) => {\n\tif (html.includes(BASELINE_MARKER)) return html;\n\tconst script = browserTranslationBaselineTag();\n\tconst closingBodyIndex = html.lastIndexOf('</body>');\n\tif (closingBodyIndex < 0) return `${html}${script}`;\n\n\treturn `${html.slice(0, closingBodyIndex)}${script}${html.slice(closingBodyIndex)}`;\n};\n",
10
10
  "import { escapeScriptContent } from '../utils/escapeScriptContent';\nimport { nonceAttr, readCspNonce } from '../utils/cspNonceRef';\nimport type { EnvironmentProviders, Provider, Type } from '@angular/core';\nimport type { BootstrapContext } from '@angular/platform-browser';\nimport type { AngularDeps, CachedRouteData } from '../../types/angular';\nimport {\n\tgetAndClearClientScripts,\n\tgenerateClientScriptCode\n} from '../utils/registerClientScript';\nimport { browserTranslationBaselineTag } from '../core/browserTranslation';\nimport { buildAbsoluteHttpTransferCacheOptions } from './httpTransferCache';\nimport { buildRequestProviders } from './requestProviders';\nimport { isAngularZoneMode } from './zoneRuntime';\n\n// --- Last-used requestContext cache for HMR ---\n// Stores { requestContext, headTag } from the most recent real request per\n// route so HMR re-renders with the same data the user last saw.\n\nconst routeContextCache = new Map<string, CachedRouteData>();\n\nexport const cacheRouteData = (pagePath: string, data: CachedRouteData) => {\n\tconst cacheKey = pagePath.split('?')[0] ?? pagePath;\n\trouteContextCache.set(cacheKey, data);\n};\nexport const getCachedRouteData = (pagePath: string) =>\n\trouteContextCache.get(pagePath);\n\n// --- Selector cache ---\n\nconst selectorCache = new Map<string, string>();\nexport const buildProviders = (\n\tdeps: AngularDeps,\n\tsanitizer: InstanceType<AngularDeps['DomSanitizer']>,\n\trequest: Request | undefined,\n\trequestContext: unknown,\n\tresponseInit: ResponseInit | undefined,\n\tuserProviders: ReadonlyArray<Provider | EnvironmentProviders> = []\n) => [\n\tdeps.provideServerRendering(),\n\tdeps.provideClientHydration(\n\t\tdeps.withHttpTransferCacheOptions(\n\t\t\tbuildAbsoluteHttpTransferCacheOptions()\n\t\t)\n\t),\n\tisAngularZoneMode()\n\t\t? deps.provideZoneChangeDetection({ eventCoalescing: true })\n\t\t: deps.provideZonelessChangeDetection(),\n\t{ provide: deps.APP_BASE_HREF, useValue: '/' },\n\t{ provide: deps.DomSanitizer, useValue: sanitizer },\n\t{ provide: deps.Sanitizer, useValue: sanitizer },\n\t...buildRequestProviders(deps, request, requestContext, responseInit),\n\t...userProviders\n];\nexport const clearSelectorCache = () => selectorCache.clear();\n\nexport const resolveSelector = (\n\tdeps: AngularDeps,\n\tpagePath: string,\n\tPageComponent: Type<unknown>\n) => {\n\tconst cached = selectorCache.get(pagePath);\n\tif (cached) {\n\t\treturn cached;\n\t}\n\n\tconst selector =\n\t\tdeps.reflectComponentType(PageComponent)?.selector ?? 'ng-app';\n\tselectorCache.set(pagePath, selector);\n\n\treturn selector;\n};\n\n// --- Inject HTML helper ---\n\nconst injectBeforeClose = (html: string, snippet: string) => {\n\tif (html.includes('</body>')) {\n\t\treturn html.replace('</body>', `${snippet}</body>`);\n\t}\n\tif (html.includes('</html>')) {\n\t\treturn html.replace('</html>', `${snippet}</html>`);\n\t}\n\n\treturn html + snippet;\n};\n\n// --- Post-render HTML injection ---\n\nexport const injectSsrScripts = (\n\thtml: string,\n\trequestId: string,\n\tindexPath: string,\n\trequestContext?: unknown,\n\tbaseHref?: string | null\n) => {\n\tlet result = injectBeforeClose(html, browserTranslationBaselineTag());\n\n\tconst registeredScripts = getAndClearClientScripts(requestId);\n\tif (registeredScripts.length > 0) {\n\t\tresult = injectBeforeClose(\n\t\t\tresult,\n\t\t\tgenerateClientScriptCode(registeredScripts)\n\t\t);\n\t}\n\n\tif (requestContext !== undefined) {\n\t\tresult = injectBeforeClose(\n\t\t\tresult,\n\t\t\t`<script${nonceAttr()}>window.__ABS_ANGULAR_REQUEST_CONTEXT__ = ${escapeScriptContent(JSON.stringify(requestContext))};</script>`\n\t\t);\n\t}\n\n\t// Read by the generated client bootstrap so the browser router uses\n\t// the same `APP_BASE_HREF` the server rendered with.\n\tif (baseHref) {\n\t\tresult = injectBeforeClose(\n\t\t\tresult,\n\t\t\t`<script${nonceAttr()}>window.__ABS_ANGULAR_BASE_HREF__ = ${escapeScriptContent(JSON.stringify(baseHref))};</script>`\n\t\t);\n\t}\n\n\tif (indexPath) {\n\t\tconst escapedIndexPath = JSON.stringify(indexPath);\n\t\tresult = injectBeforeClose(\n\t\t\tresult,\n\t\t\t`<script${nonceAttr()}>import(${escapeScriptContent(escapedIndexPath)});</script>`\n\t\t);\n\t}\n\n\treturn result;\n};\nexport const renderAngularApp = async (\n\tdeps: AngularDeps,\n\tPageComponent: Type<unknown>,\n\tproviders: (Provider | EnvironmentProviders)[],\n\tdocument: string | Document,\n\turl: string = '/'\n) => {\n\t// Angular writes this nonce on its own <style> and event-replay\n\t// scripts when secureHeaders() is on.\n\tconst nonce = readCspNonce();\n\tconst cspProviders = nonce\n\t\t? [{ provide: deps.CSP_NONCE, useValue: nonce }]\n\t\t: [];\n\tconst bootstrap = (context: BootstrapContext) =>\n\t\tdeps.bootstrapApplication(\n\t\t\tPageComponent,\n\t\t\t{ providers: [...providers, ...cspProviders] },\n\t\t\tcontext\n\t\t);\n\n\treturn withSuppressedAngularDevLogs(() =>\n\t\tdeps.renderApplication(bootstrap, {\n\t\t\tdocument,\n\t\t\tplatformProviders: [],\n\t\t\turl\n\t\t})\n\t);\n};\nexport const withSuppressedAngularDevLogs = async <T>(\n\trender: () => Promise<T>\n) => {\n\tconst origLog = console.log;\n\tconsole.log = (...args: unknown[]) => {\n\t\tif (\n\t\t\ttypeof args[0] === 'string' &&\n\t\t\targs[0].includes('development mode')\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\torigLog.apply(console, args);\n\t};\n\n\ttry {\n\t\treturn await render();\n\t} finally {\n\t\tconsole.log = origLog;\n\t}\n};\n",
11
- "import { getAngularDeps } from './angularDeps';\nimport { withSuppressedAngularDevLogs } from './ssrRender';\nimport { getSsrContextId } from '../utils/registerClientScript';\n\nconst angularIslandSelector = 'abs-angular-island';\n\nexport const getAngularIslandSelector = (_islandId: string) =>\n\tangularIslandSelector;\nexport const isAngularComponent = (\n\tvalue: unknown\n): value is import('@angular/core').Type<object> => typeof value === 'function';\n\nconst getSelectorFromRenderedIsland = (rootElement: HTMLElement) => {\n\tconst firstChild = rootElement.firstElementChild;\n\tif (!(firstChild instanceof HTMLElement)) {\n\t\treturn null;\n\t}\n\n\tconst selector = firstChild.tagName.toLowerCase();\n\n\treturn selector.length > 0 ? selector : null;\n};\n\nconst getClientAngularComponentSelector = (\n\tcomponent: import('@angular/core').Type<object>\n) => {\n\tconst maybeDef = Reflect.get(component, 'ɵcmp');\n\tif (typeof maybeDef !== 'object' || maybeDef === null) {\n\t\treturn null;\n\t}\n\n\tconst maybeSelectors = Reflect.get(maybeDef, 'selectors');\n\tif (!Array.isArray(maybeSelectors)) {\n\t\treturn null;\n\t}\n\n\tconst [firstSelectorGroup] = maybeSelectors;\n\tif (!Array.isArray(firstSelectorGroup)) {\n\t\treturn null;\n\t}\n\n\tconst [selector] = firstSelectorGroup;\n\n\treturn typeof selector === 'string' && selector.length > 0\n\t\t? selector\n\t\t: null;\n};\n\nconst createAngularIslandApp = async () => {\n\tconst { EnvironmentInjector, provideZonelessChangeDetection } =\n\t\tawait import('@angular/core');\n\tconst { createApplication } = await import('@angular/platform-browser');\n\tconst app = await createApplication({\n\t\tproviders: [provideZonelessChangeDetection()]\n\t});\n\tconst environmentInjector = app.injector.get(EnvironmentInjector);\n\n\treturn { app, environmentInjector };\n};\n\nlet angularIslandAppPromise: Promise<{\n\tapp: import('@angular/core').ApplicationRef;\n\tenvironmentInjector: import('@angular/core').EnvironmentInjector;\n}> | null = null;\n\nconst getAngularIslandApp = async () => {\n\tif (!angularIslandAppPromise) {\n\t\tangularIslandAppPromise = createAngularIslandApp();\n\t}\n\n\treturn angularIslandAppPromise;\n};\n\ntype AngularIslandWrapperMetadata = {\n\tdeps: Awaited<ReturnType<typeof getAngularDeps>>;\n\tpropsToken: import('@angular/core').InjectionToken<Record<string, unknown>>;\n\tselector: string;\n\tWrapperComponent: import('@angular/core').Type<object>;\n};\n\nconst wrapperMetadataCache = new Map<\n\tstring,\n\tPromise<AngularIslandWrapperMetadata>\n>();\nconst requestRenderCache = new Map<string, Map<string, string>>();\n\nconst getRequestRenderCache = () => {\n\tconst requestId = getSsrContextId();\n\tif (!requestId) {\n\t\treturn null;\n\t}\n\n\tconst cached = requestRenderCache.get(requestId);\n\tif (cached) {\n\t\treturn cached;\n\t}\n\n\tconst renderCache = new Map<string, string>();\n\trequestRenderCache.set(requestId, renderCache);\n\n\treturn renderCache;\n};\n\nconst getAngularIslandWrapperKey = (\n\tcomponent: import('@angular/core').Type<object>,\n\t_islandId: string\n) => {\n\tconst componentName =\n\t\ttypeof component.name === 'string' && component.name.length > 0\n\t\t\t? component.name\n\t\t\t: 'AngularIsland';\n\n\treturn `${componentName}:${angularIslandSelector}`;\n};\n\nconst getIslandRenderCacheKey = (\n\tcomponent: import('@angular/core').Type<object>,\n\tprops: Record<string, unknown>\n) => {\n\tconst componentName =\n\t\ttypeof component.name === 'string' && component.name.length > 0\n\t\t\t? component.name\n\t\t\t: 'AngularIsland';\n\n\treturn `${componentName}:${JSON.stringify(props)}`;\n};\n\nconst buildAngularIslandWrapperMetadata = async (\n\tcomponent: import('@angular/core').Type<object>,\n\tislandId: string,\n\twrapperKey: string\n) => {\n\t// Resolve Angular through getAngularDeps so the wrapper is built with the\n\t// SAME Angular instance that renders it. In production server-side imports\n\t// point at the pre-linked Angular vendor bundle; bare `@angular/*` imports\n\t// here would instead resolve to node_modules, giving the wrapper component\n\t// (its decorator, InjectionToken and inject) a different Angular instance\n\t// than the render pipeline's injector — every cross-instance token lookup\n\t// then fails with NG0201. (Dev uses a single node_modules Angular, so this\n\t// only manifests in production.)\n\tconst deps = await getAngularDeps();\n\tconst { Component, InjectionToken, NgComponentOutlet, inject } = deps;\n\tconst selector = getAngularIslandSelector(islandId);\n\tconst propsToken = new InjectionToken<Record<string, unknown>>(\n\t\t`${wrapperKey}:props`\n\t);\n\n\tclass AngularIslandWrapperComponent {\n\t\tcomponent = component;\n\t\tprops = inject(propsToken);\n\t}\n\n\treturn {\n\t\tdeps,\n\t\tpropsToken,\n\t\tselector,\n\t\tWrapperComponent: Component({\n\t\t\timports: [NgComponentOutlet, component],\n\t\t\tselector,\n\t\t\tstandalone: true,\n\t\t\ttemplate:\n\t\t\t\t'<ng-container *ngComponentOutlet=\"component; inputs: props\"></ng-container>'\n\t\t})(AngularIslandWrapperComponent)\n\t};\n};\n\nconst createAngularIslandWrapper = async (\n\tcomponent: import('@angular/core').Type<object>,\n\tislandId: string\n) => {\n\tconst wrapperKey = getAngularIslandWrapperKey(component, islandId);\n\tconst cached = wrapperMetadataCache.get(wrapperKey);\n\tif (cached) {\n\t\treturn cached;\n\t}\n\n\tconst metadataPromise = buildAngularIslandWrapperMetadata(\n\t\tcomponent,\n\t\tislandId,\n\t\twrapperKey\n\t);\n\n\twrapperMetadataCache.set(wrapperKey, metadataPromise);\n\n\treturn metadataPromise;\n};\n\nconst extractAngularIslandRoot = (html: string, selector: string) => {\n\tconst openTag = `<${selector}`;\n\tconst start = html.indexOf(openTag);\n\tif (start < 0) {\n\t\tthrow new Error(`Could not find Angular island root \"${selector}\".`);\n\t}\n\n\tconst endTag = `</${selector}>`;\n\tconst end = html.indexOf(endTag, start);\n\tif (end < 0) {\n\t\tthrow new Error(`Could not close Angular island root \"${selector}\".`);\n\t}\n\n\treturn html.slice(start, end + endTag.length);\n};\n\nexport const mountAngularIsland = async <Props extends Record<string, unknown>>(\n\tcomponent: import('@angular/core').Type<object>,\n\telement: HTMLElement,\n\tprops: Props,\n\tislandId: string\n) => {\n\tawait import('@angular/compiler');\n\tconst { createComponent, inputBinding } = await import('@angular/core');\n\tconst selector = getAngularIslandSelector(islandId);\n\tconst { app, environmentInjector } = await getAngularIslandApp();\n\n\tlet rootElement = element.querySelector(selector);\n\tif (!(rootElement instanceof HTMLElement)) {\n\t\telement.innerHTML = `<${selector}></${selector}>`;\n\t\trootElement = element.querySelector(selector);\n\t}\n\tif (!(rootElement instanceof HTMLElement)) return app;\n\n\tconst componentSelector =\n\t\tgetClientAngularComponentSelector(component) ??\n\t\tgetSelectorFromRenderedIsland(rootElement);\n\tif (!componentSelector) return app;\n\n\trootElement.innerHTML = `<${componentSelector}></${componentSelector}>`;\n\tconst hostElement = rootElement.querySelector(componentSelector);\n\tif (!(hostElement instanceof HTMLElement)) return app;\n\n\tconst bindings = Object.entries(props).map(([key, value]) =>\n\t\tinputBinding(key, () => value)\n\t);\n\tconst componentRef = createComponent(component, {\n\t\tbindings,\n\t\tenvironmentInjector,\n\t\thostElement\n\t});\n\tapp.attachView(componentRef.hostView);\n\tcomponentRef.changeDetectorRef.detectChanges();\n\twindow.__ABS_ANGULAR_ISLAND_APPS__ ??= [];\n\twindow.__ABS_ANGULAR_ISLAND_APPS__.push(app);\n\n\treturn app;\n};\nexport const renderAngularIslandToHtml = async <\n\tProps extends Record<string, unknown>\n>(\n\tcomponent: import('@angular/core').Type<object>,\n\tprops: Props,\n\tislandId: string\n) => {\n\tconst requestCache = getRequestRenderCache();\n\tconst renderCacheKey = getIslandRenderCacheKey(component, props);\n\tconst cachedHtml = requestCache?.get(renderCacheKey);\n\tif (cachedHtml) {\n\t\treturn cachedHtml;\n\t}\n\n\tconst { deps, propsToken, selector, WrapperComponent } =\n\t\tawait createAngularIslandWrapper(component, islandId);\n\n\tconst providers: (\n\t\t| import('@angular/core').Provider\n\t\t| import('@angular/core').EnvironmentProviders\n\t)[] = [\n\t\tdeps.provideServerRendering(),\n\t\tdeps.provideZonelessChangeDetection(),\n\t\t{ provide: deps.APP_BASE_HREF, useValue: '/' },\n\t\t{ provide: propsToken, useValue: props }\n\t];\n\tconst document = `<!DOCTYPE html><html><body><${selector}></${selector}></body></html>`;\n\tconst html = await withSuppressedAngularDevLogs(() =>\n\t\tdeps.renderApplication(\n\t\t\t(context) =>\n\t\t\t\tdeps.bootstrapApplication(\n\t\t\t\t\tWrapperComponent,\n\t\t\t\t\t{ providers },\n\t\t\t\t\tcontext\n\t\t\t\t),\n\t\t\t{\n\t\t\t\tdocument,\n\t\t\t\tplatformProviders: [],\n\t\t\t\turl: '/'\n\t\t\t}\n\t\t)\n\t);\n\tconst islandHtml = extractAngularIslandRoot(html, selector);\n\trequestCache?.set(renderCacheKey, islandHtml);\n\n\treturn islandHtml;\n};\n"
11
+ "import { getAngularDeps } from './angularDeps';\nimport { withSuppressedAngularDevLogs } from './ssrRender';\nimport { getSsrContextId } from '../utils/registerClientScript';\nimport { readPageNonce } from '../dev/client/cspNonce';\n\nconst angularIslandSelector = 'abs-angular-island';\n\nexport const getAngularIslandSelector = (_islandId: string) =>\n\tangularIslandSelector;\nexport const isAngularComponent = (\n\tvalue: unknown\n): value is import('@angular/core').Type<object> => typeof value === 'function';\n\nconst getSelectorFromRenderedIsland = (rootElement: HTMLElement) => {\n\tconst firstChild = rootElement.firstElementChild;\n\tif (!(firstChild instanceof HTMLElement)) {\n\t\treturn null;\n\t}\n\n\tconst selector = firstChild.tagName.toLowerCase();\n\n\treturn selector.length > 0 ? selector : null;\n};\n\nconst getClientAngularComponentSelector = (\n\tcomponent: import('@angular/core').Type<object>\n) => {\n\tconst maybeDef = Reflect.get(component, 'ɵcmp');\n\tif (typeof maybeDef !== 'object' || maybeDef === null) {\n\t\treturn null;\n\t}\n\n\tconst maybeSelectors = Reflect.get(maybeDef, 'selectors');\n\tif (!Array.isArray(maybeSelectors)) {\n\t\treturn null;\n\t}\n\n\tconst [firstSelectorGroup] = maybeSelectors;\n\tif (!Array.isArray(firstSelectorGroup)) {\n\t\treturn null;\n\t}\n\n\tconst [selector] = firstSelectorGroup;\n\n\treturn typeof selector === 'string' && selector.length > 0\n\t\t? selector\n\t\t: null;\n};\n\nconst createAngularIslandApp = async () => {\n\tconst { CSP_NONCE, EnvironmentInjector, provideZonelessChangeDetection } =\n\t\tawait import('@angular/core');\n\tconst { createApplication } = await import('@angular/platform-browser');\n\t// Under secureHeaders(), the <style> elements Angular adds for island\n\t// components need the page's nonce.\n\tconst nonce = readPageNonce();\n\tconst app = await createApplication({\n\t\tproviders: [\n\t\t\tprovideZonelessChangeDetection(),\n\t\t\t...(nonce ? [{ provide: CSP_NONCE, useValue: nonce }] : [])\n\t\t]\n\t});\n\tconst environmentInjector = app.injector.get(EnvironmentInjector);\n\n\treturn { app, environmentInjector };\n};\n\nlet angularIslandAppPromise: Promise<{\n\tapp: import('@angular/core').ApplicationRef;\n\tenvironmentInjector: import('@angular/core').EnvironmentInjector;\n}> | null = null;\n\nconst getAngularIslandApp = async () => {\n\tif (!angularIslandAppPromise) {\n\t\tangularIslandAppPromise = createAngularIslandApp();\n\t}\n\n\treturn angularIslandAppPromise;\n};\n\ntype AngularIslandWrapperMetadata = {\n\tdeps: Awaited<ReturnType<typeof getAngularDeps>>;\n\tpropsToken: import('@angular/core').InjectionToken<Record<string, unknown>>;\n\tselector: string;\n\tWrapperComponent: import('@angular/core').Type<object>;\n};\n\nconst wrapperMetadataCache = new Map<\n\tstring,\n\tPromise<AngularIslandWrapperMetadata>\n>();\nconst requestRenderCache = new Map<string, Map<string, string>>();\n\nconst getRequestRenderCache = () => {\n\tconst requestId = getSsrContextId();\n\tif (!requestId) {\n\t\treturn null;\n\t}\n\n\tconst cached = requestRenderCache.get(requestId);\n\tif (cached) {\n\t\treturn cached;\n\t}\n\n\tconst renderCache = new Map<string, string>();\n\trequestRenderCache.set(requestId, renderCache);\n\n\treturn renderCache;\n};\n\nconst getAngularIslandWrapperKey = (\n\tcomponent: import('@angular/core').Type<object>,\n\t_islandId: string\n) => {\n\tconst componentName =\n\t\ttypeof component.name === 'string' && component.name.length > 0\n\t\t\t? component.name\n\t\t\t: 'AngularIsland';\n\n\treturn `${componentName}:${angularIslandSelector}`;\n};\n\nconst getIslandRenderCacheKey = (\n\tcomponent: import('@angular/core').Type<object>,\n\tprops: Record<string, unknown>\n) => {\n\tconst componentName =\n\t\ttypeof component.name === 'string' && component.name.length > 0\n\t\t\t? component.name\n\t\t\t: 'AngularIsland';\n\n\treturn `${componentName}:${JSON.stringify(props)}`;\n};\n\nconst buildAngularIslandWrapperMetadata = async (\n\tcomponent: import('@angular/core').Type<object>,\n\tislandId: string,\n\twrapperKey: string\n) => {\n\t// Resolve Angular through getAngularDeps so the wrapper is built with the\n\t// SAME Angular instance that renders it. In production server-side imports\n\t// point at the pre-linked Angular vendor bundle; bare `@angular/*` imports\n\t// here would instead resolve to node_modules, giving the wrapper component\n\t// (its decorator, InjectionToken and inject) a different Angular instance\n\t// than the render pipeline's injector — every cross-instance token lookup\n\t// then fails with NG0201. (Dev uses a single node_modules Angular, so this\n\t// only manifests in production.)\n\tconst deps = await getAngularDeps();\n\tconst { Component, InjectionToken, NgComponentOutlet, inject } = deps;\n\tconst selector = getAngularIslandSelector(islandId);\n\tconst propsToken = new InjectionToken<Record<string, unknown>>(\n\t\t`${wrapperKey}:props`\n\t);\n\n\tclass AngularIslandWrapperComponent {\n\t\tcomponent = component;\n\t\tprops = inject(propsToken);\n\t}\n\n\treturn {\n\t\tdeps,\n\t\tpropsToken,\n\t\tselector,\n\t\tWrapperComponent: Component({\n\t\t\timports: [NgComponentOutlet, component],\n\t\t\tselector,\n\t\t\tstandalone: true,\n\t\t\ttemplate:\n\t\t\t\t'<ng-container *ngComponentOutlet=\"component; inputs: props\"></ng-container>'\n\t\t})(AngularIslandWrapperComponent)\n\t};\n};\n\nconst createAngularIslandWrapper = async (\n\tcomponent: import('@angular/core').Type<object>,\n\tislandId: string\n) => {\n\tconst wrapperKey = getAngularIslandWrapperKey(component, islandId);\n\tconst cached = wrapperMetadataCache.get(wrapperKey);\n\tif (cached) {\n\t\treturn cached;\n\t}\n\n\tconst metadataPromise = buildAngularIslandWrapperMetadata(\n\t\tcomponent,\n\t\tislandId,\n\t\twrapperKey\n\t);\n\n\twrapperMetadataCache.set(wrapperKey, metadataPromise);\n\n\treturn metadataPromise;\n};\n\nconst extractAngularIslandRoot = (html: string, selector: string) => {\n\tconst openTag = `<${selector}`;\n\tconst start = html.indexOf(openTag);\n\tif (start < 0) {\n\t\tthrow new Error(`Could not find Angular island root \"${selector}\".`);\n\t}\n\n\tconst endTag = `</${selector}>`;\n\tconst end = html.indexOf(endTag, start);\n\tif (end < 0) {\n\t\tthrow new Error(`Could not close Angular island root \"${selector}\".`);\n\t}\n\n\treturn html.slice(start, end + endTag.length);\n};\n\nexport const mountAngularIsland = async <Props extends Record<string, unknown>>(\n\tcomponent: import('@angular/core').Type<object>,\n\telement: HTMLElement,\n\tprops: Props,\n\tislandId: string\n) => {\n\tawait import('@angular/compiler');\n\tconst { createComponent, inputBinding } = await import('@angular/core');\n\tconst selector = getAngularIslandSelector(islandId);\n\tconst { app, environmentInjector } = await getAngularIslandApp();\n\n\tlet rootElement = element.querySelector(selector);\n\tif (!(rootElement instanceof HTMLElement)) {\n\t\telement.innerHTML = `<${selector}></${selector}>`;\n\t\trootElement = element.querySelector(selector);\n\t}\n\tif (!(rootElement instanceof HTMLElement)) return app;\n\n\tconst componentSelector =\n\t\tgetClientAngularComponentSelector(component) ??\n\t\tgetSelectorFromRenderedIsland(rootElement);\n\tif (!componentSelector) return app;\n\n\trootElement.innerHTML = `<${componentSelector}></${componentSelector}>`;\n\tconst hostElement = rootElement.querySelector(componentSelector);\n\tif (!(hostElement instanceof HTMLElement)) return app;\n\n\tconst bindings = Object.entries(props).map(([key, value]) =>\n\t\tinputBinding(key, () => value)\n\t);\n\tconst componentRef = createComponent(component, {\n\t\tbindings,\n\t\tenvironmentInjector,\n\t\thostElement\n\t});\n\tapp.attachView(componentRef.hostView);\n\tcomponentRef.changeDetectorRef.detectChanges();\n\twindow.__ABS_ANGULAR_ISLAND_APPS__ ??= [];\n\twindow.__ABS_ANGULAR_ISLAND_APPS__.push(app);\n\n\treturn app;\n};\nexport const renderAngularIslandToHtml = async <\n\tProps extends Record<string, unknown>\n>(\n\tcomponent: import('@angular/core').Type<object>,\n\tprops: Props,\n\tislandId: string\n) => {\n\tconst requestCache = getRequestRenderCache();\n\tconst renderCacheKey = getIslandRenderCacheKey(component, props);\n\tconst cachedHtml = requestCache?.get(renderCacheKey);\n\tif (cachedHtml) {\n\t\treturn cachedHtml;\n\t}\n\n\tconst { deps, propsToken, selector, WrapperComponent } =\n\t\tawait createAngularIslandWrapper(component, islandId);\n\n\tconst providers: (\n\t\t| import('@angular/core').Provider\n\t\t| import('@angular/core').EnvironmentProviders\n\t)[] = [\n\t\tdeps.provideServerRendering(),\n\t\tdeps.provideZonelessChangeDetection(),\n\t\t{ provide: deps.APP_BASE_HREF, useValue: '/' },\n\t\t{ provide: propsToken, useValue: props }\n\t];\n\tconst document = `<!DOCTYPE html><html><body><${selector}></${selector}></body></html>`;\n\tconst html = await withSuppressedAngularDevLogs(() =>\n\t\tdeps.renderApplication(\n\t\t\t(context) =>\n\t\t\t\tdeps.bootstrapApplication(\n\t\t\t\t\tWrapperComponent,\n\t\t\t\t\t{ providers },\n\t\t\t\t\tcontext\n\t\t\t\t),\n\t\t\t{\n\t\t\t\tdocument,\n\t\t\t\tplatformProviders: [],\n\t\t\t\turl: '/'\n\t\t\t}\n\t\t)\n\t);\n\tconst islandHtml = extractAngularIslandRoot(html, selector);\n\trequestCache?.set(renderCacheKey, islandHtml);\n\n\treturn islandHtml;\n};\n"
12
12
  ],
13
- "mappings": "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",
14
- "debugId": "4FDD0415C16BD3E664756E2164756E21",
13
+ "mappings": "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",
14
+ "debugId": "BAB2ED48C1DBFB7D64756E2164756E21",
15
15
  "names": []
16
16
  }
@@ -4,7 +4,10 @@ import {
4
4
 
5
5
  // src/client/hydrators/react.ts
6
6
  import { createElement } from "react";
7
- import { hydrateRoot } from "react-dom/client";
7
+ import {
8
+ createRoot,
9
+ hydrateRoot
10
+ } from "react-dom/client";
8
11
  import { flushSync } from "react-dom";
9
12
  var reactIslandRoots = new WeakMap;
10
13
  var isPropsRecord = (value) => typeof value === "object" && value !== null;
@@ -55,10 +58,23 @@ var hydrateReactIsland = (component, element, props) => {
55
58
  hydrate(createElement(component, props));
56
59
  };
57
60
  var isReactComponent = (value) => typeof value === "function";
61
+ var remountReactIsland = (component, element, props) => {
62
+ try {
63
+ reactIslandRoots.get(element)?.unmount();
64
+ } catch {}
65
+ element.replaceChildren();
66
+ detachFromHostReactRoot(element);
67
+ const root = createRoot(element);
68
+ flushSync(() => {
69
+ root.render(isPropsRecord(props) ? createElement(component, props) : createElement(component));
70
+ });
71
+ reactIslandRoots.set(element, root);
72
+ };
58
73
  export {
59
74
  hydrateReactIsland,
60
- isReactComponent
75
+ isReactComponent,
76
+ remountReactIsland
61
77
  };
62
78
 
63
- //# debugId=124973A5AC8BE25C64756E2164756E21
64
- //# sourceMappingURL=react-dcvkaba2.js.map
79
+ //# debugId=566183856C37B0E164756E2164756E21
80
+ //# sourceMappingURL=react-sprprqzs.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/client/hydrators/react.ts"],
4
+ "sourcesContent": [
5
+ "import { type ComponentType, createElement, type ReactNode } from 'react';\nimport {\n\tcreateRoot,\n\thydrateRoot,\n\ttype Root as ReactRoot\n} from 'react-dom/client';\nimport { flushSync } from 'react-dom';\nimport { prepareBrowserTranslationHydration } from '../browserTranslation';\n\nconst reactIslandRoots = new WeakMap<HTMLElement, ReactRoot>();\n\nconst isPropsRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null;\n\n// The island marker is rendered by the host page's React tree as a\n// `dangerouslySetInnerHTML` boundary, so the host root tags it with internal\n// fiber expandos (`__reactFiber$…`, `__reactProps$…`). React refuses to create\n// a second root on a node it already manages that also sets\n// dangerouslySetInnerHTML (\"Cannot use a ref … as a container … if that element\n// also sets dangerouslySetInnerHTML\"). Detaching those expandos hands ownership\n// of the marker (and its opaque SSR children) to the island root before it\n// hydrates. The host root never recurses into the boundary, so it has no fibers\n// for the children and won't reconcile this subtree again.\nconst HOST_REACT_EXPANDO_PREFIXES = [\n\t'__reactFiber$',\n\t'__reactProps$',\n\t'__reactContainer$',\n\t'__reactEvents$',\n\t'__reactListeners$',\n\t'__reactHandles$'\n];\n\nconst detachFromHostReactRoot = (element: HTMLElement) => {\n\tfor (const key of Object.keys(element)) {\n\t\tconst isHostExpando = HOST_REACT_EXPANDO_PREFIXES.some((prefix) =>\n\t\t\tkey.startsWith(prefix)\n\t\t);\n\t\tif (!isHostExpando) continue;\n\t\tReflect.deleteProperty(element, key);\n\t}\n};\n\nexport const hydrateReactIsland = (\n\tcomponent: ComponentType<Record<string, unknown>>,\n\telement: HTMLElement,\n\tprops: unknown\n) => {\n\tconst existingRoot = reactIslandRoots.get(element);\n\tif (existingRoot) {\n\t\texistingRoot.render(\n\t\t\tisPropsRecord(props)\n\t\t\t\t? createElement(component, props)\n\t\t\t\t: createElement(component)\n\t\t);\n\n\t\treturn;\n\t}\n\n\tdetachFromHostReactRoot(element);\n\tconst restoreTranslation = prepareBrowserTranslationHydration(element);\n\tconst hydrate = (elementToHydrate: ReactNode) => {\n\t\tlet root: ReactRoot | undefined;\n\t\tconst startHydration = () => {\n\t\t\troot = hydrateRoot(element, elementToHydrate);\n\t\t};\n\t\ttry {\n\t\t\tif (restoreTranslation.hasTranslation) flushSync(startHydration);\n\t\t\telse startHydration();\n\t\t} finally {\n\t\t\trestoreTranslation();\n\t\t}\n\t\tif (root !== undefined) reactIslandRoots.set(element, root);\n\t};\n\n\tif (!isPropsRecord(props)) {\n\t\thydrate(createElement(component));\n\n\t\treturn;\n\t}\n\n\thydrate(createElement(component, props));\n};\nexport const isReactComponent = (\n\tvalue: unknown\n): value is ComponentType<Record<string, unknown>> =>\n\ttypeof value === 'function';\n\n/** Dev HMR: replace a hydrated island with a fresh root rendering the\n * rebuilt component. Its local state starts over; island stores keep\n * theirs. A new root rather than `render()` on the old one: the host page\n * may have re-rendered the marker since, re-attaching its own React props\n * to it, and the old root's tree would then be reconciled against nodes\n * React no longer considers its own. */\nexport const remountReactIsland = (\n\tcomponent: ComponentType<Record<string, unknown>>,\n\telement: HTMLElement,\n\tprops: unknown\n) => {\n\ttry {\n\t\treactIslandRoots.get(element)?.unmount();\n\t} catch {\n\t\t// The old tree's nodes may already be gone; the marker is cleared\n\t\t// below either way.\n\t}\n\telement.replaceChildren();\n\tdetachFromHostReactRoot(element);\n\tconst root = createRoot(element);\n\t// Commit now, while the marker carries none of the host root's\n\t// expandos (see detachFromHostReactRoot): a host re-render in between\n\t// re-attaches them and React rejects the marker as a container.\n\tflushSync(() => {\n\t\troot.render(\n\t\t\tisPropsRecord(props)\n\t\t\t\t? createElement(component, props)\n\t\t\t\t: createElement(component)\n\t\t);\n\t});\n\treactIslandRoots.set(element, root);\n};\n"
6
+ ],
7
+ "mappings": ";;;;;AAAA;AACA;AAAA;AAAA;AAAA;AAKA;AAGA,IAAM,mBAAmB,IAAI;AAE7B,IAAM,gBAAgB,CAAC,UACtB,OAAO,UAAU,YAAY,UAAU;AAWxC,IAAM,8BAA8B;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,IAAM,0BAA0B,CAAC,YAAyB;AAAA,EACzD,WAAW,OAAO,OAAO,KAAK,OAAO,GAAG;AAAA,IACvC,MAAM,gBAAgB,4BAA4B,KAAK,CAAC,WACvD,IAAI,WAAW,MAAM,CACtB;AAAA,IACA,IAAI,CAAC;AAAA,MAAe;AAAA,IACpB,QAAQ,eAAe,SAAS,GAAG;AAAA,EACpC;AAAA;AAGM,IAAM,qBAAqB,CACjC,WACA,SACA,UACI;AAAA,EACJ,MAAM,eAAe,iBAAiB,IAAI,OAAO;AAAA,EACjD,IAAI,cAAc;AAAA,IACjB,aAAa,OACZ,cAAc,KAAK,IAChB,cAAc,WAAW,KAAK,IAC9B,cAAc,SAAS,CAC3B;AAAA,IAEA;AAAA,EACD;AAAA,EAEA,wBAAwB,OAAO;AAAA,EAC/B,MAAM,qBAAqB,oCAAmC,OAAO;AAAA,EACrE,MAAM,UAAU,CAAC,qBAAgC;AAAA,IAChD,IAAI;AAAA,IACJ,MAAM,iBAAiB,MAAM;AAAA,MAC5B,OAAO,YAAY,SAAS,gBAAgB;AAAA;AAAA,IAE7C,IAAI;AAAA,MACH,IAAI,mBAAmB;AAAA,QAAgB,UAAU,cAAc;AAAA,MAC1D;AAAA,uBAAe;AAAA,cACnB;AAAA,MACD,mBAAmB;AAAA;AAAA,IAEpB,IAAI,SAAS;AAAA,MAAW,iBAAiB,IAAI,SAAS,IAAI;AAAA;AAAA,EAG3D,IAAI,CAAC,cAAc,KAAK,GAAG;AAAA,IAC1B,QAAQ,cAAc,SAAS,CAAC;AAAA,IAEhC;AAAA,EACD;AAAA,EAEA,QAAQ,cAAc,WAAW,KAAK,CAAC;AAAA;AAEjC,IAAM,mBAAmB,CAC/B,UAEA,OAAO,UAAU;AAQX,IAAM,qBAAqB,CACjC,WACA,SACA,UACI;AAAA,EACJ,IAAI;AAAA,IACH,iBAAiB,IAAI,OAAO,GAAG,QAAQ;AAAA,IACtC,MAAM;AAAA,EAIR,QAAQ,gBAAgB;AAAA,EACxB,wBAAwB,OAAO;AAAA,EAC/B,MAAM,OAAO,WAAW,OAAO;AAAA,EAI/B,UAAU,MAAM;AAAA,IACf,KAAK,OACJ,cAAc,KAAK,IAChB,cAAc,WAAW,KAAK,IAC9B,cAAc,SAAS,CAC3B;AAAA,GACA;AAAA,EACD,iBAAiB,IAAI,SAAS,IAAI;AAAA;",
8
+ "debugId": "566183856C37B0E164756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,30 @@
1
+ // src/client/hydrators/svelte.ts
2
+ import { hydrate as hydrateSvelte, mount, unmount } from "svelte";
3
+ var svelteIslandInstances = new WeakMap;
4
+ var isPropsRecord = (value) => typeof value === "object" && value !== null;
5
+ var hydrateSvelteIsland = (component, element, props) => {
6
+ const instance = hydrateSvelte(component, {
7
+ props: isPropsRecord(props) ? props : undefined,
8
+ target: element
9
+ });
10
+ svelteIslandInstances.set(element, instance);
11
+ };
12
+ var isSvelteComponent = (value) => typeof value === "function";
13
+ var remountSvelteIsland = async (component, element, props) => {
14
+ const instance = svelteIslandInstances.get(element);
15
+ if (instance)
16
+ await unmount(instance);
17
+ element.replaceChildren();
18
+ svelteIslandInstances.set(element, mount(component, {
19
+ props: isPropsRecord(props) ? props : undefined,
20
+ target: element
21
+ }));
22
+ };
23
+ export {
24
+ hydrateSvelteIsland,
25
+ isSvelteComponent,
26
+ remountSvelteIsland
27
+ };
28
+
29
+ //# debugId=2F4BCC650F3C092764756E2164756E21
30
+ //# sourceMappingURL=svelte-6ewphsvj.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/client/hydrators/svelte.ts"],
4
+ "sourcesContent": [
5
+ "import { hydrate as hydrateSvelte, mount, unmount } from 'svelte';\n\nconst svelteIslandInstances = new WeakMap<\n\tHTMLElement,\n\tRecord<string, unknown>\n>();\n\nconst isPropsRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null;\n\nexport const hydrateSvelteIsland = (\n\tcomponent: import('svelte').Component<Record<string, unknown>>,\n\telement: HTMLElement,\n\tprops: unknown\n) => {\n\tconst instance = hydrateSvelte(component, {\n\t\tprops: isPropsRecord(props) ? props : undefined,\n\t\ttarget: element\n\t});\n\tsvelteIslandInstances.set(element, instance);\n};\n\nexport const isSvelteComponent = (\n\tvalue: unknown\n): value is import('svelte').Component<Record<string, unknown>> =>\n\ttypeof value === 'function';\n\n/** Dev HMR: replace a hydrated island with a fresh mount of the rebuilt\n * component. Its local state starts over; island stores keep theirs. */\nexport const remountSvelteIsland = async (\n\tcomponent: import('svelte').Component<Record<string, unknown>>,\n\telement: HTMLElement,\n\tprops: unknown\n) => {\n\tconst instance = svelteIslandInstances.get(element);\n\tif (instance) await unmount(instance);\n\telement.replaceChildren();\n\tsvelteIslandInstances.set(\n\t\telement,\n\t\tmount(component, {\n\t\t\tprops: isPropsRecord(props) ? props : undefined,\n\t\t\ttarget: element\n\t\t})\n\t);\n};\n"
6
+ ],
7
+ "mappings": ";AAAA,oBAAS;AAET,IAAM,wBAAwB,IAAI;AAKlC,IAAM,gBAAgB,CAAC,UACtB,OAAO,UAAU,YAAY,UAAU;AAEjC,IAAM,sBAAsB,CAClC,WACA,SACA,UACI;AAAA,EACJ,MAAM,WAAW,cAAc,WAAW;AAAA,IACzC,OAAO,cAAc,KAAK,IAAI,QAAQ;AAAA,IACtC,QAAQ;AAAA,EACT,CAAC;AAAA,EACD,sBAAsB,IAAI,SAAS,QAAQ;AAAA;AAGrC,IAAM,oBAAoB,CAChC,UAEA,OAAO,UAAU;AAIX,IAAM,sBAAsB,OAClC,WACA,SACA,UACI;AAAA,EACJ,MAAM,WAAW,sBAAsB,IAAI,OAAO;AAAA,EAClD,IAAI;AAAA,IAAU,MAAM,QAAQ,QAAQ;AAAA,EACpC,QAAQ,gBAAgB;AAAA,EACxB,sBAAsB,IACrB,SACA,MAAM,WAAW;AAAA,IAChB,OAAO,cAAc,KAAK,IAAI,QAAQ;AAAA,IACtC,QAAQ;AAAA,EACT,CAAC,CACF;AAAA;",
8
+ "debugId": "2F4BCC650F3C092764756E2164756E21",
9
+ "names": []
10
+ }
@@ -1,5 +1,5 @@
1
1
  // src/client/hydrators/vue.ts
2
- import { createSSRApp, h } from "vue";
2
+ import { createApp, createSSRApp, h } from "vue";
3
3
  var vueIslandApps = new WeakMap;
4
4
  var isPropsRecord = (value) => typeof value === "object" && value !== null;
5
5
  var hydrateVueIsland = (component, element, props) => {
@@ -13,10 +13,20 @@ var hydrateVueIsland = (component, element, props) => {
13
13
  vueIslandApps.set(element, app);
14
14
  };
15
15
  var isVueComponent = (value) => typeof value === "function" || isPropsRecord(value);
16
+ var remountVueIsland = (component, element, props) => {
17
+ vueIslandApps.get(element)?.unmount();
18
+ element.replaceChildren();
19
+ const app = createApp({
20
+ render: () => h(component, isPropsRecord(props) ? props : undefined)
21
+ });
22
+ app.mount(element);
23
+ vueIslandApps.set(element, app);
24
+ };
16
25
  export {
17
26
  hydrateVueIsland,
18
- isVueComponent
27
+ isVueComponent,
28
+ remountVueIsland
19
29
  };
20
30
 
21
- //# debugId=D16652A9383C3DC964756E2164756E21
22
- //# sourceMappingURL=vue-a84fzp3v.js.map
31
+ //# debugId=E472E1F9DB7F66A864756E2164756E21
32
+ //# sourceMappingURL=vue-db6ppn1f.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/client/hydrators/vue.ts"],
4
+ "sourcesContent": [
5
+ "import { createApp, createSSRApp, h, type App as VueApp } from 'vue';\n\nconst vueIslandApps = new WeakMap<HTMLElement, VueApp>();\n\nconst isPropsRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null;\n\nexport const hydrateVueIsland = (\n\tcomponent: import('vue').Component<Record<string, unknown>>,\n\telement: HTMLElement,\n\tprops: unknown\n) => {\n\tif (vueIslandApps.has(element)) {\n\t\treturn;\n\t}\n\n\tconst app = createSSRApp({\n\t\trender: () => h(component, isPropsRecord(props) ? props : undefined)\n\t});\n\tapp.mount(element);\n\tvueIslandApps.set(element, app);\n};\nexport const isVueComponent = (\n\tvalue: unknown\n): value is import('vue').Component<Record<string, unknown>> =>\n\ttypeof value === 'function' || isPropsRecord(value);\n\n/** Dev HMR: replace a hydrated island with a fresh mount of the rebuilt\n * component. Its local state starts over; island stores keep theirs. */\nexport const remountVueIsland = (\n\tcomponent: import('vue').Component<Record<string, unknown>>,\n\telement: HTMLElement,\n\tprops: unknown\n) => {\n\tvueIslandApps.get(element)?.unmount();\n\telement.replaceChildren();\n\tconst app = createApp({\n\t\trender: () => h(component, isPropsRecord(props) ? props : undefined)\n\t});\n\tapp.mount(element);\n\tvueIslandApps.set(element, app);\n};\n"
6
+ ],
7
+ "mappings": ";AAAA;AAEA,IAAM,gBAAgB,IAAI;AAE1B,IAAM,gBAAgB,CAAC,UACtB,OAAO,UAAU,YAAY,UAAU;AAEjC,IAAM,mBAAmB,CAC/B,WACA,SACA,UACI;AAAA,EACJ,IAAI,cAAc,IAAI,OAAO,GAAG;AAAA,IAC/B;AAAA,EACD;AAAA,EAEA,MAAM,MAAM,aAAa;AAAA,IACxB,QAAQ,MAAM,EAAE,WAAW,cAAc,KAAK,IAAI,QAAQ,SAAS;AAAA,EACpE,CAAC;AAAA,EACD,IAAI,MAAM,OAAO;AAAA,EACjB,cAAc,IAAI,SAAS,GAAG;AAAA;AAExB,IAAM,iBAAiB,CAC7B,UAEA,OAAO,UAAU,cAAc,cAAc,KAAK;AAI5C,IAAM,mBAAmB,CAC/B,WACA,SACA,UACI;AAAA,EACJ,cAAc,IAAI,OAAO,GAAG,QAAQ;AAAA,EACpC,QAAQ,gBAAgB;AAAA,EACxB,MAAM,MAAM,UAAU;AAAA,IACrB,QAAQ,MAAM,EAAE,WAAW,cAAc,KAAK,IAAI,QAAQ,SAAS;AAAA,EACpE,CAAC;AAAA,EACD,IAAI,MAAM,OAAO;AAAA,EACjB,cAAc,IAAI,SAAS,GAAG;AAAA;",
8
+ "debugId": "E472E1F9DB7F66A864756E2164756E21",
9
+ "names": []
10
+ }
@@ -32,7 +32,7 @@ var __chunks = (base, ids, nodes, entry) => {
32
32
  __chunkSeen ||= {};
33
33
  __preload(ids[entry], 1);
34
34
  };
35
- __chunks(import.meta.url,["9eq0n6ma","dcvkaba2","4yfa5bxa","a84fzp3v","s2ta5ajb","8m2qq61n"],[["./index.js",5],["./chunks/react-dcvkaba2.js",5],["./chunks/svelte-4yfa5bxa.js"],["./chunks/vue-a84fzp3v.js"],["./chunks/islands-s2ta5ajb.js",5],["./chunks/index-8m2qq61n.js"]],0);
35
+ __chunks(import.meta.url,["50gqr4s4","sprprqzs","6ewphsvj","db6ppn1f","mfjmdwnb","8m2qq61n","4j1snyh2"],[["./index.js",5],["./chunks/react-sprprqzs.js",5],["./chunks/svelte-6ewphsvj.js"],["./chunks/vue-db6ppn1f.js"],["./chunks/islands-mfjmdwnb.js",5,6],["./chunks/index-8m2qq61n.js"],["./chunks/index-4j1snyh2.js"]],0);
36
36
 
37
37
  // src/core/islandManifest.ts
38
38
  var toIslandFrameworkSegment = (framework) => framework[0]?.toUpperCase() + framework.slice(1);
@@ -324,6 +324,8 @@ var getSnapshotMap = () => {
324
324
  window.__ABS_SERVER_ISLAND_HTML__ ??= new Map;
325
325
  return window.__ABS_SERVER_ISLAND_HTML__;
326
326
  };
327
+ var RUNTIME_ISLAND_ATTRIBUTES = new Set(["data-error", "data-hydrated"]);
328
+ var readMarkerAttributes = (element) => Object.fromEntries(element.getAttributeNames().filter((name) => !RUNTIME_ISLAND_ATTRIBUTES.has(name)).map((name) => [name, element.getAttribute(name) ?? ""]));
327
329
  var snapshotIslandElement = (element, snapshotMap) => {
328
330
  const signature = [
329
331
  element.dataset.component,
@@ -332,9 +334,8 @@ var snapshotIslandElement = (element, snapshotMap) => {
332
334
  element.dataset.props ?? "{}"
333
335
  ].join("::");
334
336
  const existing = snapshotMap.get(signature) ?? [];
335
- const attributes = Object.fromEntries(element.getAttributeNames().map((name) => [name, element.getAttribute(name) ?? ""]));
336
337
  existing.push({
337
- attributes,
338
+ attributes: readMarkerAttributes(element),
338
339
  innerHTML: element.innerHTML
339
340
  });
340
341
  snapshotMap.set(signature, existing);
@@ -352,6 +353,7 @@ var initializeIslandMarkupSnapshot = () => {
352
353
  snapshotIslandElement(element, snapshotMap);
353
354
  }
354
355
  };
356
+ var innerHtmlObjects = new Map;
355
357
 
356
358
  // src/client/islandRuntime.ts
357
359
  initializeIslandMarkupSnapshot();
@@ -375,7 +377,7 @@ var hydratePreservingBrowserTranslation = async (element, hydrate) => {
375
377
  var hydrateByFramework = async (registry, framework, componentName, element, props, resolveComponent) => {
376
378
  const propsRecord = isPropsRecord(props) ? props : undefined;
377
379
  if (framework === "react") {
378
- const { hydrateReactIsland, isReactComponent } = await (__preload("dcvkaba2"), import("./chunks/react-dcvkaba2.js"));
380
+ const { hydrateReactIsland, isReactComponent } = await (__preload("sprprqzs"), import("./chunks/react-sprprqzs.js"));
379
381
  const resolvedComponent = await resolveComponent?.(framework, componentName) ?? getIslandComponent(registry.react?.[componentName]);
380
382
  if (!isReactComponent(resolvedComponent))
381
383
  return;
@@ -384,7 +386,7 @@ var hydrateByFramework = async (registry, framework, componentName, element, pro
384
386
  return;
385
387
  }
386
388
  if (framework === "svelte") {
387
- const { hydrateSvelteIsland, isSvelteComponent } = await (__preload("4yfa5bxa"), import("./chunks/svelte-4yfa5bxa.js"));
389
+ const { hydrateSvelteIsland, isSvelteComponent } = await (__preload("6ewphsvj"), import("./chunks/svelte-6ewphsvj.js"));
388
390
  const resolvedComponent = await resolveComponent?.(framework, componentName) ?? getIslandComponent(registry.svelte?.[componentName]);
389
391
  if (!isSvelteComponent(resolvedComponent))
390
392
  return;
@@ -393,7 +395,7 @@ var hydrateByFramework = async (registry, framework, componentName, element, pro
393
395
  return;
394
396
  }
395
397
  if (framework === "vue") {
396
- const { hydrateVueIsland, isVueComponent } = await (__preload("a84fzp3v"), import("./chunks/vue-a84fzp3v.js"));
398
+ const { hydrateVueIsland, isVueComponent } = await (__preload("db6ppn1f"), import("./chunks/vue-db6ppn1f.js"));
397
399
  const resolvedComponent = await resolveComponent?.(framework, componentName) ?? getIslandComponent(registry.vue?.[componentName]);
398
400
  if (!isVueComponent(resolvedComponent))
399
401
  return;
@@ -402,7 +404,7 @@ var hydrateByFramework = async (registry, framework, componentName, element, pro
402
404
  return;
403
405
  }
404
406
  if (framework === "angular") {
405
- const { mountAngularIsland, isAngularComponent } = await (__preload("s2ta5ajb"), import("./chunks/islands-s2ta5ajb.js"));
407
+ const { mountAngularIsland, isAngularComponent } = await (__preload("mfjmdwnb"), import("./chunks/islands-mfjmdwnb.js"));
406
408
  const resolvedComponent = await resolveComponent?.(framework, componentName) ?? getIslandComponent(registry.angular?.[componentName]);
407
409
  const { islandId } = element.dataset;
408
410
  if (!isAngularComponent(resolvedComponent) || !islandId)
@@ -461,12 +463,67 @@ var collectIslandElements = (node) => {
461
463
  }
462
464
  return islands;
463
465
  };
466
+ var remountByFramework = async (framework, component, element, props) => {
467
+ if (framework === "react") {
468
+ const { remountReactIsland, isReactComponent } = await (__preload("sprprqzs"), import("./chunks/react-sprprqzs.js"));
469
+ if (!isReactComponent(component))
470
+ return false;
471
+ remountReactIsland(component, element, props);
472
+ return true;
473
+ }
474
+ if (framework === "svelte") {
475
+ const { remountSvelteIsland, isSvelteComponent } = await (__preload("6ewphsvj"), import("./chunks/svelte-6ewphsvj.js"));
476
+ if (!isSvelteComponent(component))
477
+ return false;
478
+ await remountSvelteIsland(component, element, props);
479
+ return true;
480
+ }
481
+ if (framework === "vue") {
482
+ const { remountVueIsland, isVueComponent } = await (__preload("db6ppn1f"), import("./chunks/vue-db6ppn1f.js"));
483
+ if (!isVueComponent(component))
484
+ return false;
485
+ remountVueIsland(component, element, props);
486
+ return true;
487
+ }
488
+ return false;
489
+ };
490
+ var findIslandElements = (framework, component) => Array.from(document.querySelectorAll('[data-island="true"]')).filter((element) => element.dataset.framework === framework && element.dataset.component === component);
491
+ var remountIslandElement = async (update, component, element) => {
492
+ if (element.dataset.hydrated !== "true")
493
+ return true;
494
+ try {
495
+ return await remountByFramework(update.framework, component, element, parseIslandProps(element.getAttribute("data-props")));
496
+ } catch (error) {
497
+ console.error(`[islands] Failed to update ${update.framework}:${update.component}`, error);
498
+ return false;
499
+ }
500
+ };
501
+ var applyIslandHotUpdate = async (update) => {
502
+ const elements = findIslandElements(update.framework, update.component);
503
+ if (elements.length === 0)
504
+ return true;
505
+ const loadedModule = await import(update.modulePath);
506
+ const results = await Promise.all(elements.map((element) => remountIslandElement(update, loadedModule.default, element)));
507
+ return results.every(Boolean);
508
+ };
509
+ var applyIslandHotUpdates = async (updates) => {
510
+ try {
511
+ const results = await Promise.all(updates.map(applyIslandHotUpdate));
512
+ return results.every(Boolean);
513
+ } catch (error) {
514
+ console.error("[islands] Failed to load an updated island", error);
515
+ return false;
516
+ }
517
+ };
464
518
  var startIslands = ({
465
519
  registry,
466
520
  resolveComponent,
467
521
  root = document.documentElement
468
522
  }) => {
469
523
  const targetRoot = root instanceof Document ? root.documentElement : root;
524
+ if (typeof window !== "undefined") {
525
+ window.__ABS_ISLAND_HMR__ = applyIslandHotUpdates;
526
+ }
470
527
  const observer = typeof IntersectionObserver === "undefined" ? null : new IntersectionObserver((entries) => {
471
528
  for (const entry of entries) {
472
529
  if (!entry.isIntersecting)
@@ -667,5 +724,5 @@ export {
667
724
  subscribeIslandStore
668
725
  };
669
726
 
670
- //# debugId=F1F7A19F311E674864756E2164756E21
727
+ //# debugId=DB5A54DCE17303CA64756E2164756E21
671
728
  //# sourceMappingURL=index.js.map