@ecopages/radiant 0.3.0-alpha.9 → 0.3.0-beta.1

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 (564) hide show
  1. package/README.md +5 -5
  2. package/client/app-bootstrap.d.ts +19 -0
  3. package/client/app-bootstrap.js +3 -0
  4. package/client/app-bootstrap.js.map +10 -0
  5. package/client/hydrator.js +3 -0
  6. package/{dist/client → client}/hydrator.js.map +2 -2
  7. package/client/install-hydrator.js +3 -0
  8. package/{dist/client → client}/install-hydrator.js.map +2 -2
  9. package/context/context-consumer-bootstrap.js +3 -0
  10. package/{dist/context → context}/context-consumer-bootstrap.js.map +4 -4
  11. package/context/context-consumer-runtime.js +3 -0
  12. package/context/context-consumer-runtime.js.map +12 -0
  13. package/context/context-host.js +3 -0
  14. package/{dist/context → context}/context-host.js.map +2 -2
  15. package/context/context-provider.js +3 -0
  16. package/{dist/context → context}/context-provider.js.map +3 -3
  17. package/context/context-ssr-bridge.js +3 -0
  18. package/{dist/context → context}/context-ssr-bridge.js.map +2 -2
  19. package/context/create-context.js +3 -0
  20. package/{dist/context → context}/create-context.js.map +2 -2
  21. package/context/decorators/consume-context.js +3 -0
  22. package/context/decorators/consume-context.js.map +19 -0
  23. package/context/decorators/context-selection-delivery.js +3 -0
  24. package/{dist/context → context}/decorators/context-selection-delivery.js.map +2 -2
  25. package/context/decorators/context-selector.js +3 -0
  26. package/context/decorators/context-selector.js.map +22 -0
  27. package/context/decorators/legacy/consume-context.js +3 -0
  28. package/context/decorators/legacy/consume-context.js.map +16 -0
  29. package/context/decorators/legacy/context-selector-field.js +3 -0
  30. package/context/decorators/legacy/context-selector-field.js.map +17 -0
  31. package/context/decorators/legacy/context-selector.js +3 -0
  32. package/context/decorators/legacy/context-selector.js.map +17 -0
  33. package/context/decorators/legacy/provide-context.js +3 -0
  34. package/{dist/context → context}/decorators/legacy/provide-context.js.map +5 -5
  35. package/context/decorators/on-context-update.js +3 -0
  36. package/{dist/context → context}/decorators/on-context-update.js.map +6 -6
  37. package/context/decorators/provide-context.js +3 -0
  38. package/{dist/context → context}/decorators/provide-context.js.map +5 -5
  39. package/context/decorators/standard/consume-context.js +3 -0
  40. package/{dist/context → context}/decorators/standard/consume-context.js.map +4 -4
  41. package/context/decorators/standard/context-selector-field.js +3 -0
  42. package/{dist/context → context}/decorators/standard/context-selector-field.js.map +4 -4
  43. package/context/decorators/standard/context-selector.js +3 -0
  44. package/{dist/context → context}/decorators/standard/context-selector.js.map +4 -4
  45. package/context/decorators/standard/provide-context.js +3 -0
  46. package/{dist/context → context}/decorators/standard/provide-context.js.map +3 -3
  47. package/context/decorators/standard-legacy-dispatch.d.ts +6 -0
  48. package/context/decorators/standard-legacy-dispatch.js +3 -0
  49. package/context/decorators/standard-legacy-dispatch.js.map +10 -0
  50. package/context/events.js +3 -0
  51. package/context/events.js.map +10 -0
  52. package/context/hydration-script.js +3 -0
  53. package/{dist/context → context}/hydration-script.js.map +2 -2
  54. package/context/index.js +3 -0
  55. package/{dist/context → context}/index.js.map +13 -12
  56. package/controller-registry.js +3 -0
  57. package/{dist/controller-registry.js.map → controller-registry.js.map} +2 -2
  58. package/core/controller-metadata.js +3 -0
  59. package/{dist/core → core}/controller-metadata.js.map +2 -2
  60. package/core/custom-element-metadata.js +3 -0
  61. package/{dist/core → core}/custom-element-metadata.js.map +2 -2
  62. package/core/event-subscription-registry.d.ts +16 -0
  63. package/core/event-subscription-registry.js +3 -0
  64. package/core/event-subscription-registry.js.map +10 -0
  65. package/core/host-ssr-registry.d.ts +13 -0
  66. package/core/host-ssr-registry.js +3 -0
  67. package/core/host-ssr-registry.js.map +10 -0
  68. package/core/hydration-capable-host.d.ts +8 -0
  69. package/core/hydration-capable-host.js +3 -0
  70. package/core/hydration-capable-host.js.map +10 -0
  71. package/core/hydration-codec.js +3 -0
  72. package/{dist/core → core}/hydration-codec.js.map +2 -2
  73. package/{dist/core → core}/radiant-controller.d.ts +42 -20
  74. package/core/radiant-controller.js +3 -0
  75. package/core/radiant-controller.js.map +21 -0
  76. package/{dist/core/radiant-component-ssr.d.ts → core/radiant-element-ssr-host.d.ts} +16 -16
  77. package/core/radiant-element-ssr-host.js +3 -0
  78. package/core/radiant-element-ssr-host.js.map +10 -0
  79. package/core/radiant-element-ssr-registry.d.ts +20 -0
  80. package/core/radiant-element-ssr-registry.js +3 -0
  81. package/core/radiant-element-ssr-registry.js.map +10 -0
  82. package/{dist/core → core}/radiant-element.d.ts +44 -155
  83. package/core/radiant-element.js +3 -0
  84. package/core/radiant-element.js.map +31 -0
  85. package/core/radiant-hydrator-state.js +3 -0
  86. package/{dist/core → core}/radiant-hydrator-state.js.map +2 -2
  87. package/core/reactive-binding-adapter.d.ts +10 -0
  88. package/core/reactive-binding-adapter.js +3 -0
  89. package/core/reactive-binding-adapter.js.map +10 -0
  90. package/core/reactive-host.d.ts +138 -0
  91. package/core/reactive-host.js +3 -0
  92. package/core/reactive-host.js.map +13 -0
  93. package/{dist/core → core}/reactive-jsx-value.d.ts +4 -3
  94. package/core/reactive-jsx-value.js +3 -0
  95. package/core/reactive-jsx-value.js.map +10 -0
  96. package/core/reactive-prop-core.d.ts +39 -0
  97. package/core/reactive-prop-core.js +3 -0
  98. package/{dist/decorators/standard/reactive-prop.js.map → core/reactive-prop-core.js.map} +4 -5
  99. package/{dist/core → core}/reactive-prop-metadata.d.ts +1 -1
  100. package/core/reactive-prop-metadata.js +3 -0
  101. package/core/reactive-prop-metadata.js.map +10 -0
  102. package/core/reactive-property-state.d.ts +20 -0
  103. package/core/reactive-property-state.js +3 -0
  104. package/core/reactive-property-state.js.map +12 -0
  105. package/core/reactivity-adapter.d.ts +8 -0
  106. package/core/reactivity-adapter.js +3 -0
  107. package/core/reactivity-adapter.js.map +12 -0
  108. package/core/reactivity-contract.d.ts +53 -0
  109. package/core/reactivity-contract.js +2 -0
  110. package/core/reactivity-contract.js.map +9 -0
  111. package/core/reactivity-runtime.d.ts +18 -0
  112. package/core/reactivity-runtime.js +3 -0
  113. package/core/reactivity-runtime.js.map +11 -0
  114. package/core/reactivity-signals.d.ts +10 -0
  115. package/core/reactivity-signals.js +3 -0
  116. package/core/reactivity-signals.js.map +10 -0
  117. package/core/render-runtime.d.ts +28 -0
  118. package/core/render-runtime.js +3 -0
  119. package/core/render-runtime.js.map +16 -0
  120. package/core/render-scheduler.d.ts +22 -0
  121. package/core/render-scheduler.js +3 -0
  122. package/core/render-scheduler.js.map +10 -0
  123. package/core/slot-projection-runtime.js +3 -0
  124. package/core/slot-projection-runtime.js.map +12 -0
  125. package/core/ssr-preparation.js +3 -0
  126. package/{dist/core → core}/ssr-preparation.js.map +2 -2
  127. package/decorators/attr.js +3 -0
  128. package/decorators/attr.js.map +18 -0
  129. package/decorators/bound.js +3 -0
  130. package/{dist/decorators → decorators}/bound.js.map +2 -2
  131. package/decorators/bridge.js +3 -0
  132. package/{dist/decorators → decorators}/bridge.js.map +2 -2
  133. package/decorators/controller.js +3 -0
  134. package/{dist/decorators → decorators}/controller.js.map +2 -2
  135. package/decorators/custom-element.js +3 -0
  136. package/{dist/decorators → decorators}/custom-element.js.map +2 -2
  137. package/decorators/debounce.js +3 -0
  138. package/{dist/decorators → decorators}/debounce.js.map +2 -2
  139. package/decorators/event.js +3 -0
  140. package/{dist/decorators → decorators}/event.js.map +3 -3
  141. package/decorators/legacy/attr.js +3 -0
  142. package/decorators/legacy/attr.js.map +15 -0
  143. package/decorators/legacy/bound.js +3 -0
  144. package/{dist/decorators → decorators}/legacy/bound.js.map +2 -2
  145. package/decorators/legacy/custom-element.js +3 -0
  146. package/{dist/decorators → decorators}/legacy/custom-element.js.map +2 -2
  147. package/decorators/legacy/debounce.js +3 -0
  148. package/{dist/decorators → decorators}/legacy/debounce.js.map +2 -2
  149. package/decorators/legacy/event.js +3 -0
  150. package/decorators/legacy/event.js.map +13 -0
  151. package/decorators/legacy/host-readiness.d.ts +8 -0
  152. package/decorators/legacy/host-readiness.js +3 -0
  153. package/decorators/legacy/host-readiness.js.map +11 -0
  154. package/decorators/legacy/instance-initializers.d.ts +34 -0
  155. package/decorators/legacy/instance-initializers.js +3 -0
  156. package/decorators/legacy/instance-initializers.js.map +10 -0
  157. package/decorators/legacy/member-bootstrap.d.ts +10 -0
  158. package/decorators/legacy/member-bootstrap.js +3 -0
  159. package/decorators/legacy/member-bootstrap.js.map +10 -0
  160. package/decorators/legacy/on-event.js +3 -0
  161. package/decorators/legacy/on-event.js.map +13 -0
  162. package/{dist/decorators → decorators}/legacy/on-updated.d.ts +1 -1
  163. package/decorators/legacy/on-updated.js +3 -0
  164. package/decorators/legacy/on-updated.js.map +11 -0
  165. package/decorators/legacy/query-slot.js +3 -0
  166. package/decorators/legacy/query-slot.js.map +13 -0
  167. package/decorators/legacy/query.js +3 -0
  168. package/decorators/legacy/query.js.map +12 -0
  169. package/decorators/legacy/reactive-field.js +3 -0
  170. package/decorators/legacy/reactive-field.js.map +13 -0
  171. package/{dist/decorators → decorators}/legacy/reactive-prop.d.ts +1 -2
  172. package/decorators/legacy/reactive-prop.js +3 -0
  173. package/decorators/legacy/reactive-prop.js.map +15 -0
  174. package/{dist/decorators → decorators}/legacy/signal.d.ts +1 -1
  175. package/decorators/legacy/signal.js +3 -0
  176. package/decorators/legacy/signal.js.map +17 -0
  177. package/decorators/on-event.js +3 -0
  178. package/{dist/decorators → decorators}/on-event.js.map +4 -4
  179. package/decorators/on-updated.js +3 -0
  180. package/decorators/on-updated.js.map +14 -0
  181. package/{dist/decorators → decorators}/prop.d.ts +5 -6
  182. package/decorators/prop.js +3 -0
  183. package/decorators/prop.js.map +18 -0
  184. package/decorators/query-slot.js +3 -0
  185. package/decorators/query-slot.js.map +16 -0
  186. package/decorators/query.js +3 -0
  187. package/{dist/decorators → decorators}/query.js.map +3 -3
  188. package/decorators/shared/auto-bind.d.ts +7 -0
  189. package/decorators/shared/auto-bind.js +3 -0
  190. package/decorators/shared/auto-bind.js.map +10 -0
  191. package/{dist/decorators → decorators}/shared/reactive-attr.d.ts +1 -1
  192. package/decorators/shared/reactive-attr.js +3 -0
  193. package/decorators/shared/reactive-attr.js.map +13 -0
  194. package/decorators/signal.js +3 -0
  195. package/decorators/signal.js.map +19 -0
  196. package/decorators/standard/attr.js +3 -0
  197. package/decorators/standard/attr.js.map +14 -0
  198. package/decorators/standard/bound.js +3 -0
  199. package/{dist/decorators → decorators}/standard/bound.js.map +2 -2
  200. package/decorators/standard/custom-element.js +3 -0
  201. package/{dist/decorators → decorators}/standard/custom-element.js.map +2 -2
  202. package/decorators/standard/debounce.js +3 -0
  203. package/{dist/decorators → decorators}/standard/debounce.js.map +2 -2
  204. package/decorators/standard/event.js +3 -0
  205. package/{dist/decorators → decorators}/standard/event.js.map +2 -2
  206. package/decorators/standard/on-event.js +3 -0
  207. package/{dist/decorators → decorators}/standard/on-event.js.map +3 -3
  208. package/decorators/standard/on-updated.js +3 -0
  209. package/{dist/decorators → decorators}/standard/on-updated.js.map +2 -2
  210. package/{dist/decorators → decorators}/standard/query-slot.d.ts +0 -1
  211. package/decorators/standard/query-slot.js +3 -0
  212. package/decorators/standard/query-slot.js.map +11 -0
  213. package/decorators/standard/query.js +3 -0
  214. package/{dist/decorators → decorators}/standard/query.js.map +2 -2
  215. package/decorators/standard/reactive-field.js +3 -0
  216. package/decorators/standard/reactive-field.js.map +11 -0
  217. package/{dist/decorators → decorators}/standard/reactive-prop.d.ts +1 -1
  218. package/decorators/standard/reactive-prop.js +3 -0
  219. package/decorators/standard/reactive-prop.js.map +13 -0
  220. package/{dist/decorators → decorators}/standard/signal.d.ts +1 -1
  221. package/decorators/standard/signal.js +3 -0
  222. package/decorators/standard/signal.js.map +16 -0
  223. package/{dist/decorators → decorators}/state.d.ts +3 -2
  224. package/decorators/state.js +3 -0
  225. package/decorators/state.js.map +16 -0
  226. package/helpers/create-event-listener.js +3 -0
  227. package/{dist/helpers → helpers}/create-event-listener.js.map +3 -3
  228. package/helpers/create-event.js +3 -0
  229. package/{dist/helpers → helpers}/create-event.js.map +2 -2
  230. package/{dist/helpers → helpers}/create-query-slot.d.ts +0 -1
  231. package/helpers/create-query-slot.js +3 -0
  232. package/helpers/create-query-slot.js.map +10 -0
  233. package/helpers/create-query.js +3 -0
  234. package/{dist/helpers → helpers}/create-query.js.map +2 -2
  235. package/helpers/debounce.js +3 -0
  236. package/{dist/helpers → helpers}/debounce.js.map +2 -2
  237. package/helpers/index.js +3 -0
  238. package/{dist/helpers → helpers}/index.js.map +4 -4
  239. package/index.js +3 -0
  240. package/index.js.map +86 -0
  241. package/package.json +102 -125
  242. package/server/context-ssr.js +3 -0
  243. package/{dist/server → server}/context-ssr.js.map +2 -2
  244. package/server/host-attribute-serialization.d.ts +46 -0
  245. package/server/host-attribute-serialization.js +3 -0
  246. package/server/host-attribute-serialization.js.map +12 -0
  247. package/server/host-script-composition.d.ts +42 -0
  248. package/server/host-script-composition.js +3 -0
  249. package/server/host-script-composition.js.map +10 -0
  250. package/server/html-parser.js +3 -0
  251. package/{dist/server → server}/html-parser.js.map +2 -2
  252. package/server/install-light-dom-shim.js +3 -0
  253. package/server/install-light-dom-shim.js.map +17 -0
  254. package/server/internal-radiant-host.d.ts +2 -0
  255. package/server/internal-radiant-host.js +3 -0
  256. package/server/internal-radiant-host.js.map +9 -0
  257. package/server/light-dom-shim.d.ts +2 -0
  258. package/server/light-dom-shim.js +3 -0
  259. package/server/light-dom-shim.js.map +16 -0
  260. package/server/minimal-dom/document.d.ts +17 -0
  261. package/server/minimal-dom/document.js +3 -0
  262. package/server/minimal-dom/document.js.map +14 -0
  263. package/server/minimal-dom/html.d.ts +7 -0
  264. package/server/minimal-dom/html.js +3 -0
  265. package/server/minimal-dom/html.js.map +13 -0
  266. package/{dist/server/light-dom-shim.d.ts → server/minimal-dom/install.d.ts} +1 -4
  267. package/server/minimal-dom/install.js +3 -0
  268. package/server/minimal-dom/install.js.map +16 -0
  269. package/server/minimal-dom/nodes.d.ts +78 -0
  270. package/server/project-root.js +3 -0
  271. package/{dist/server → server}/project-root.js.map +2 -2
  272. package/server/radiant-element-ssr-bridge.d.ts +21 -0
  273. package/server/radiant-element-ssr-bridge.js +3 -0
  274. package/server/radiant-element-ssr-bridge.js.map +24 -0
  275. package/server/radiant-element-ssr-extractor.d.ts +2 -0
  276. package/server/radiant-element-ssr-extractor.js +3 -0
  277. package/server/radiant-element-ssr-extractor.js.map +12 -0
  278. package/server/radiant-element-ssr-service.d.ts +13 -0
  279. package/server/radiant-element-ssr-service.js +3 -0
  280. package/server/radiant-element-ssr-service.js.map +22 -0
  281. package/server/radiant-element-ssr.d.ts +1 -0
  282. package/server/radiant-element-ssr.js +3 -0
  283. package/server/radiant-element-ssr.js.map +24 -0
  284. package/{dist/server → server}/render-component.d.ts +3 -9
  285. package/server/render-component.js +3 -0
  286. package/server/render-component.js.map +32 -0
  287. package/server/render-controller.js +3 -0
  288. package/server/render-controller.js.map +35 -0
  289. package/server/render-fragment.d.ts +7 -0
  290. package/server/render-fragment.js +3 -0
  291. package/server/render-fragment.js.map +10 -0
  292. package/server/slot-projection-html.js +3 -0
  293. package/{dist/server → server}/slot-projection-html.js.map +5 -5
  294. package/signals/host-resource.js +3 -0
  295. package/{dist/signals → signals}/host-resource.js.map +2 -2
  296. package/{dist/signals → signals}/host-signal.d.ts +2 -1
  297. package/signals/host-signal.js +3 -0
  298. package/signals/host-signal.js.map +13 -0
  299. package/signals/hydration-script.js +3 -0
  300. package/{dist/signals → signals}/hydration-script.js.map +2 -2
  301. package/tools/escape-css-identifier.js +3 -0
  302. package/tools/escape-css-identifier.js.map +10 -0
  303. package/tools/escape-script-json.js +3 -0
  304. package/{dist/tools → tools}/escape-script-json.js.map +2 -2
  305. package/tools/event-emitter.js +3 -0
  306. package/{dist/tools → tools}/event-emitter.js.map +2 -2
  307. package/tools/index.js +3 -0
  308. package/{dist/tools → tools}/index.js.map +3 -3
  309. package/tools/render-jsx-template.js +3 -0
  310. package/{dist/tools → tools}/render-jsx-template.js.map +2 -2
  311. package/types.js +3 -0
  312. package/{dist/types.js.map → types.js.map} +2 -2
  313. package/utils/attribute-utils.js +3 -0
  314. package/{dist/utils → utils}/attribute-utils.js.map +2 -2
  315. package/utils/escape-html-attribute.d.ts +2 -0
  316. package/utils/escape-html-attribute.js +3 -0
  317. package/utils/escape-html-attribute.js.map +10 -0
  318. package/utils/index.js +3 -0
  319. package/{dist/utils → utils}/index.js.map +2 -2
  320. package/dist/LICENSE +0 -21
  321. package/dist/client/hydrator.js +0 -3
  322. package/dist/client/install-hydrator.js +0 -3
  323. package/dist/context/context-consumer-bootstrap.js +0 -3
  324. package/dist/context/context-consumer-runtime.js +0 -3
  325. package/dist/context/context-consumer-runtime.js.map +0 -12
  326. package/dist/context/context-host.js +0 -3
  327. package/dist/context/context-provider.js +0 -3
  328. package/dist/context/context-ssr-bridge.js +0 -3
  329. package/dist/context/create-context.js +0 -3
  330. package/dist/context/decorators/consume-context.js +0 -3
  331. package/dist/context/decorators/consume-context.js.map +0 -19
  332. package/dist/context/decorators/context-selection-delivery.js +0 -3
  333. package/dist/context/decorators/context-selector.js +0 -3
  334. package/dist/context/decorators/context-selector.js.map +0 -21
  335. package/dist/context/decorators/legacy/consume-context.js +0 -3
  336. package/dist/context/decorators/legacy/consume-context.js.map +0 -16
  337. package/dist/context/decorators/legacy/context-selector-field.js +0 -3
  338. package/dist/context/decorators/legacy/context-selector-field.js.map +0 -17
  339. package/dist/context/decorators/legacy/context-selector.js +0 -3
  340. package/dist/context/decorators/legacy/context-selector.js.map +0 -17
  341. package/dist/context/decorators/legacy/provide-context.js +0 -3
  342. package/dist/context/decorators/on-context-update.js +0 -3
  343. package/dist/context/decorators/provide-context.js +0 -3
  344. package/dist/context/decorators/standard/consume-context.js +0 -3
  345. package/dist/context/decorators/standard/context-selector-field.js +0 -3
  346. package/dist/context/decorators/standard/context-selector.js +0 -3
  347. package/dist/context/decorators/standard/provide-context.js +0 -3
  348. package/dist/context/events.js +0 -3
  349. package/dist/context/events.js.map +0 -10
  350. package/dist/context/hydration-script.js +0 -3
  351. package/dist/context/index.js +0 -3
  352. package/dist/controller-registry.js +0 -3
  353. package/dist/core/controller-metadata.js +0 -3
  354. package/dist/core/custom-element-metadata.js +0 -3
  355. package/dist/core/hydration-codec.js +0 -3
  356. package/dist/core/radiant-component-ssr-registry.d.ts +0 -54
  357. package/dist/core/radiant-component-ssr-registry.js +0 -3
  358. package/dist/core/radiant-component-ssr-registry.js.map +0 -10
  359. package/dist/core/radiant-component-ssr.js +0 -3
  360. package/dist/core/radiant-component-ssr.js.map +0 -14
  361. package/dist/core/radiant-controller.js +0 -3
  362. package/dist/core/radiant-controller.js.map +0 -13
  363. package/dist/core/radiant-element.js +0 -3
  364. package/dist/core/radiant-element.js.map +0 -19
  365. package/dist/core/radiant-hydrator-state.js +0 -3
  366. package/dist/core/reactive-host.d.ts +0 -137
  367. package/dist/core/reactive-host.js +0 -3
  368. package/dist/core/reactive-host.js.map +0 -10
  369. package/dist/core/reactive-jsx-value.js +0 -3
  370. package/dist/core/reactive-jsx-value.js.map +0 -10
  371. package/dist/core/reactive-prop-metadata.js +0 -3
  372. package/dist/core/reactive-prop-metadata.js.map +0 -10
  373. package/dist/core/slot-projection-runtime.js +0 -3
  374. package/dist/core/slot-projection-runtime.js.map +0 -12
  375. package/dist/core/ssr-preparation.js +0 -3
  376. package/dist/decorators/attr.js +0 -3
  377. package/dist/decorators/attr.js.map +0 -16
  378. package/dist/decorators/bound.js +0 -3
  379. package/dist/decorators/bridge.js +0 -3
  380. package/dist/decorators/controller.js +0 -3
  381. package/dist/decorators/custom-element.js +0 -3
  382. package/dist/decorators/debounce.js +0 -3
  383. package/dist/decorators/event.js +0 -3
  384. package/dist/decorators/legacy/attr.js +0 -3
  385. package/dist/decorators/legacy/attr.js.map +0 -13
  386. package/dist/decorators/legacy/bound.js +0 -3
  387. package/dist/decorators/legacy/custom-element.js +0 -3
  388. package/dist/decorators/legacy/debounce.js +0 -3
  389. package/dist/decorators/legacy/event.js +0 -3
  390. package/dist/decorators/legacy/event.js.map +0 -13
  391. package/dist/decorators/legacy/instance-initializers.d.ts +0 -16
  392. package/dist/decorators/legacy/instance-initializers.js +0 -3
  393. package/dist/decorators/legacy/instance-initializers.js.map +0 -10
  394. package/dist/decorators/legacy/on-event.js +0 -3
  395. package/dist/decorators/legacy/on-event.js.map +0 -13
  396. package/dist/decorators/legacy/on-updated.js +0 -3
  397. package/dist/decorators/legacy/on-updated.js.map +0 -11
  398. package/dist/decorators/legacy/query-slot.js +0 -3
  399. package/dist/decorators/legacy/query-slot.js.map +0 -13
  400. package/dist/decorators/legacy/query.js +0 -3
  401. package/dist/decorators/legacy/query.js.map +0 -12
  402. package/dist/decorators/legacy/reactive-field.js +0 -3
  403. package/dist/decorators/legacy/reactive-field.js.map +0 -11
  404. package/dist/decorators/legacy/reactive-prop.js +0 -3
  405. package/dist/decorators/legacy/reactive-prop.js.map +0 -13
  406. package/dist/decorators/legacy/signal.js +0 -3
  407. package/dist/decorators/legacy/signal.js.map +0 -15
  408. package/dist/decorators/on-event.js +0 -3
  409. package/dist/decorators/on-updated.js +0 -3
  410. package/dist/decorators/on-updated.js.map +0 -14
  411. package/dist/decorators/prop.js +0 -3
  412. package/dist/decorators/prop.js.map +0 -16
  413. package/dist/decorators/query-slot.js +0 -3
  414. package/dist/decorators/query-slot.js.map +0 -16
  415. package/dist/decorators/query.js +0 -3
  416. package/dist/decorators/shared/reactive-attr.js +0 -3
  417. package/dist/decorators/shared/reactive-attr.js.map +0 -11
  418. package/dist/decorators/signal.js +0 -3
  419. package/dist/decorators/signal.js.map +0 -17
  420. package/dist/decorators/standard/attr.js +0 -3
  421. package/dist/decorators/standard/attr.js.map +0 -12
  422. package/dist/decorators/standard/bound.js +0 -3
  423. package/dist/decorators/standard/custom-element.js +0 -3
  424. package/dist/decorators/standard/debounce.js +0 -3
  425. package/dist/decorators/standard/event.js +0 -3
  426. package/dist/decorators/standard/on-event.js +0 -3
  427. package/dist/decorators/standard/on-updated.js +0 -3
  428. package/dist/decorators/standard/query-slot.js +0 -3
  429. package/dist/decorators/standard/query-slot.js.map +0 -11
  430. package/dist/decorators/standard/query.js +0 -3
  431. package/dist/decorators/standard/reactive-field.js +0 -3
  432. package/dist/decorators/standard/reactive-field.js.map +0 -10
  433. package/dist/decorators/standard/reactive-prop.js +0 -3
  434. package/dist/decorators/standard/signal.js +0 -3
  435. package/dist/decorators/standard/signal.js.map +0 -14
  436. package/dist/decorators/state.js +0 -3
  437. package/dist/decorators/state.js.map +0 -14
  438. package/dist/helpers/create-event-listener.js +0 -3
  439. package/dist/helpers/create-event.js +0 -3
  440. package/dist/helpers/create-query-slot.js +0 -3
  441. package/dist/helpers/create-query-slot.js.map +0 -10
  442. package/dist/helpers/create-query.js +0 -3
  443. package/dist/helpers/debounce.js +0 -3
  444. package/dist/helpers/index.js +0 -3
  445. package/dist/index.js +0 -3
  446. package/dist/index.js.map +0 -72
  447. package/dist/server/context-ssr.js +0 -3
  448. package/dist/server/html-parser.js +0 -3
  449. package/dist/server/install-light-dom-shim.js +0 -3
  450. package/dist/server/install-light-dom-shim.js.map +0 -12
  451. package/dist/server/light-dom-shim.js +0 -3
  452. package/dist/server/light-dom-shim.js.map +0 -11
  453. package/dist/server/project-root.js +0 -3
  454. package/dist/server/radiant-component-ssr-runtime.d.ts +0 -9
  455. package/dist/server/radiant-component-ssr-runtime.js +0 -3
  456. package/dist/server/radiant-component-ssr-runtime.js.map +0 -17
  457. package/dist/server/render-component.js +0 -3
  458. package/dist/server/render-component.js.map +0 -20
  459. package/dist/server/render-controller.js +0 -3
  460. package/dist/server/render-controller.js.map +0 -23
  461. package/dist/server/slot-projection-html.js +0 -3
  462. package/dist/signals/host-resource.js +0 -3
  463. package/dist/signals/host-signal.js +0 -3
  464. package/dist/signals/host-signal.js.map +0 -13
  465. package/dist/signals/hydration-script.js +0 -3
  466. package/dist/tools/escape-css-identifier.js +0 -3
  467. package/dist/tools/escape-css-identifier.js.map +0 -10
  468. package/dist/tools/escape-script-json.js +0 -3
  469. package/dist/tools/event-emitter.js +0 -3
  470. package/dist/tools/index.js +0 -3
  471. package/dist/tools/render-jsx-template.js +0 -3
  472. package/dist/types.js +0 -3
  473. package/dist/utils/attribute-utils.js +0 -3
  474. package/dist/utils/index.js +0 -3
  475. package/size-budget.json +0 -25
  476. /package/{dist/client → client}/hydrator.d.ts +0 -0
  477. /package/{dist/client → client}/install-hydrator.d.ts +0 -0
  478. /package/{dist/context → context}/context-consumer-bootstrap.d.ts +0 -0
  479. /package/{dist/context → context}/context-consumer-runtime.d.ts +0 -0
  480. /package/{dist/context → context}/context-host.d.ts +0 -0
  481. /package/{dist/context → context}/context-provider.d.ts +0 -0
  482. /package/{dist/context → context}/context-ssr-bridge.d.ts +0 -0
  483. /package/{dist/context → context}/create-context.d.ts +0 -0
  484. /package/{dist/context → context}/decorators/consume-context.d.ts +0 -0
  485. /package/{dist/context → context}/decorators/context-selection-delivery.d.ts +0 -0
  486. /package/{dist/context → context}/decorators/context-selector.d.ts +0 -0
  487. /package/{dist/context → context}/decorators/legacy/consume-context.d.ts +0 -0
  488. /package/{dist/context → context}/decorators/legacy/context-selector-field.d.ts +0 -0
  489. /package/{dist/context → context}/decorators/legacy/context-selector.d.ts +0 -0
  490. /package/{dist/context → context}/decorators/legacy/provide-context.d.ts +0 -0
  491. /package/{dist/context → context}/decorators/on-context-update.d.ts +0 -0
  492. /package/{dist/context → context}/decorators/provide-context.d.ts +0 -0
  493. /package/{dist/context → context}/decorators/standard/consume-context.d.ts +0 -0
  494. /package/{dist/context → context}/decorators/standard/context-selector-field.d.ts +0 -0
  495. /package/{dist/context → context}/decorators/standard/context-selector.d.ts +0 -0
  496. /package/{dist/context → context}/decorators/standard/provide-context.d.ts +0 -0
  497. /package/{dist/context → context}/events.d.ts +0 -0
  498. /package/{dist/context → context}/hydration-script.d.ts +0 -0
  499. /package/{dist/context → context}/index.d.ts +0 -0
  500. /package/{dist/context → context}/types.d.ts +0 -0
  501. /package/{dist/context → context}/types.js +0 -0
  502. /package/{dist/context → context}/types.js.map +0 -0
  503. /package/{dist/controller-registry.d.ts → controller-registry.d.ts} +0 -0
  504. /package/{dist/core → core}/controller-metadata.d.ts +0 -0
  505. /package/{dist/core → core}/custom-element-metadata.d.ts +0 -0
  506. /package/{dist/core → core}/hydration-codec.d.ts +0 -0
  507. /package/{dist/core → core}/radiant-hydrator-state.d.ts +0 -0
  508. /package/{dist/core → core}/slot-projection-runtime.d.ts +0 -0
  509. /package/{dist/core → core}/ssr-hydration-binding.d.ts +0 -0
  510. /package/{dist/core → core}/ssr-hydration-binding.js +0 -0
  511. /package/{dist/core → core}/ssr-hydration-binding.js.map +0 -0
  512. /package/{dist/core → core}/ssr-preparation.d.ts +0 -0
  513. /package/{dist/decorators → decorators}/attr.d.ts +0 -0
  514. /package/{dist/decorators → decorators}/bound.d.ts +0 -0
  515. /package/{dist/decorators → decorators}/bridge.d.ts +0 -0
  516. /package/{dist/decorators → decorators}/controller.d.ts +0 -0
  517. /package/{dist/decorators → decorators}/custom-element.d.ts +0 -0
  518. /package/{dist/decorators → decorators}/debounce.d.ts +0 -0
  519. /package/{dist/decorators → decorators}/event.d.ts +0 -0
  520. /package/{dist/decorators → decorators}/legacy/attr.d.ts +0 -0
  521. /package/{dist/decorators → decorators}/legacy/bound.d.ts +0 -0
  522. /package/{dist/decorators → decorators}/legacy/custom-element.d.ts +0 -0
  523. /package/{dist/decorators → decorators}/legacy/debounce.d.ts +0 -0
  524. /package/{dist/decorators → decorators}/legacy/event.d.ts +0 -0
  525. /package/{dist/decorators → decorators}/legacy/on-event.d.ts +0 -0
  526. /package/{dist/decorators → decorators}/legacy/query-slot.d.ts +0 -0
  527. /package/{dist/decorators → decorators}/legacy/query.d.ts +0 -0
  528. /package/{dist/decorators → decorators}/legacy/reactive-field.d.ts +0 -0
  529. /package/{dist/decorators → decorators}/on-event.d.ts +0 -0
  530. /package/{dist/decorators → decorators}/on-updated.d.ts +0 -0
  531. /package/{dist/decorators → decorators}/query-slot.d.ts +0 -0
  532. /package/{dist/decorators → decorators}/query.d.ts +0 -0
  533. /package/{dist/decorators → decorators}/signal.d.ts +0 -0
  534. /package/{dist/decorators → decorators}/standard/attr.d.ts +0 -0
  535. /package/{dist/decorators → decorators}/standard/bound.d.ts +0 -0
  536. /package/{dist/decorators → decorators}/standard/custom-element.d.ts +0 -0
  537. /package/{dist/decorators → decorators}/standard/debounce.d.ts +0 -0
  538. /package/{dist/decorators → decorators}/standard/event.d.ts +0 -0
  539. /package/{dist/decorators → decorators}/standard/on-event.d.ts +0 -0
  540. /package/{dist/decorators → decorators}/standard/on-updated.d.ts +0 -0
  541. /package/{dist/decorators → decorators}/standard/query.d.ts +0 -0
  542. /package/{dist/decorators → decorators}/standard/reactive-field.d.ts +0 -0
  543. /package/{dist/helpers → helpers}/create-event-listener.d.ts +0 -0
  544. /package/{dist/helpers → helpers}/create-event.d.ts +0 -0
  545. /package/{dist/helpers → helpers}/create-query.d.ts +0 -0
  546. /package/{dist/helpers → helpers}/debounce.d.ts +0 -0
  547. /package/{dist/helpers → helpers}/index.d.ts +0 -0
  548. /package/{dist/index.d.ts → index.d.ts} +0 -0
  549. /package/{dist/server → server}/context-ssr.d.ts +0 -0
  550. /package/{dist/server → server}/html-parser.d.ts +0 -0
  551. /package/{dist/server → server}/install-light-dom-shim.d.ts +0 -0
  552. /package/{dist/server → server}/project-root.d.ts +0 -0
  553. /package/{dist/server → server}/render-controller.d.ts +0 -0
  554. /package/{dist/server → server}/slot-projection-html.d.ts +0 -0
  555. /package/{dist/signals → signals}/host-resource.d.ts +0 -0
  556. /package/{dist/signals → signals}/hydration-script.d.ts +0 -0
  557. /package/{dist/tools → tools}/escape-css-identifier.d.ts +0 -0
  558. /package/{dist/tools → tools}/escape-script-json.d.ts +0 -0
  559. /package/{dist/tools → tools}/event-emitter.d.ts +0 -0
  560. /package/{dist/tools → tools}/index.d.ts +0 -0
  561. /package/{dist/tools → tools}/render-jsx-template.d.ts +0 -0
  562. /package/{dist/types.d.ts → types.d.ts} +0 -0
  563. /package/{dist/utils → utils}/attribute-utils.d.ts +0 -0
  564. /package/{dist/utils → utils}/index.d.ts +0 -0
@@ -0,0 +1,8 @@
1
+ import type { SsrSerializableHydrationBinding } from './ssr-hydration-binding';
2
+ /**
3
+ * Hosts that can register keyed SSR hydration bindings.
4
+ */
5
+ export interface HydrationCapableHost {
6
+ registerHydrationBinding(name: string, binding: SsrSerializableHydrationBinding): void;
7
+ }
8
+ export declare function isHydrationCapableHost(host: object): host is HydrationCapableHost;
@@ -0,0 +1,3 @@
1
+ var{defineProperty:p,getOwnPropertyNames:u,getOwnPropertyDescriptor:v}=Object,w=Object.prototype.hasOwnProperty;function x(f){return this[f]}var B=(f)=>{var j=(q??=new WeakMap).get(f),l;if(j)return j;if(j=p({},"__esModule",{value:!0}),f&&typeof f==="object"||typeof f==="function"){for(var m of u(f))if(!w.call(j,m))p(j,m,{get:x.bind(f,m),enumerable:!(l=v(f,m))||l.enumerable})}return q.set(f,j),j},q;var z=(f)=>f;function A(f,j){this[f]=z.bind(null,j)}var C=(f,j)=>{for(var l in j)p(f,l,{get:j[l],enumerable:!0,configurable:!0,set:A.bind(j,l)})};var D=(f,j)=>()=>(f&&(j=f(f=0)),j);var E=((f)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(f,{get:(j,l)=>(typeof require<"u"?require:j)[l]}):f)(function(f){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+f+'" is not supported')});function G(f){return typeof f.registerHydrationBinding==="function"}export{G as isHydrationCapableHost};
2
+
3
+ //# debugId=58940929363732F764756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/core/hydration-capable-host.ts"],
4
+ "sourcesContent": [
5
+ "import type { SsrSerializableHydrationBinding } from './ssr-hydration-binding';\n\n/**\n * Hosts that can register keyed SSR hydration bindings.\n */\nexport interface HydrationCapableHost {\n\tregisterHydrationBinding(name: string, binding: SsrSerializableHydrationBinding): void;\n}\n\nexport function isHydrationCapableHost(host: object): host is HydrationCapableHost {\n\treturn typeof (host as HydrationCapableHost).registerHydrationBinding === 'function';\n}\n"
6
+ ],
7
+ "mappings": "i0BASO,SAAS,CAAsB,CAAC,EAA4C,CAClF,OAAO,OAAQ,EAA8B,2BAA6B",
8
+ "debugId": "58940929363732F764756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,3 @@
1
+ var{defineProperty:q,getOwnPropertyNames:F,getOwnPropertyDescriptor:S}=Object,W=Object.prototype.hasOwnProperty;function P(g){return this[g]}var v=(g)=>{var u=(X??=new WeakMap).get(g),z;if(u)return u;if(u=q({},"__esModule",{value:!0}),g&&typeof g==="object"||typeof g==="function"){for(var J of F(g))if(!W.call(u,J))q(u,J,{get:P.bind(g,J),enumerable:!(z=S(g,J))||z.enumerable})}return X.set(g,u),u},X;var x=(g)=>g;function C(g,u){this[g]=x.bind(null,u)}var b=(g,u)=>{for(var z in u)q(g,z,{get:u[z],enumerable:!0,configurable:!0,set:C.bind(u,z)})};var B=(g,u)=>()=>(g&&(u=g(g=0)),u);var D=((g)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(g,{get:(u,z)=>(typeof require<"u"?require:u)[z]}):g)(function(g){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+g+'" is not supported')});function Z(g){return g.replace(/&/g,"\\u0026").replace(/</g,"\\u003c").replace(/>/g,"\\u003e").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}var G="data-hydration",j="data-hydration-type",w="data-hydration-key";function H(g){let u=g.hydrationKey?` ${w}="${f(g.hydrationKey)}"`:"";return`<script type="application/json" ${G} ${j}="${g.type}"${u}>${g.serializedValue}</script>`}function K(g){return Z(g)}function N(g,u){let z=g.textContent;if(!z)return u;try{return JSON.parse(z)}catch{if(typeof console<"u")console.warn(`[@ecopages/radiant] Failed to parse hydration payload from <script ${G}>:`,z.slice(0,120));return u}}function E(g,u,z){let J=g.children;if(!J||J.length===0){let L=g.childNodes;if(!L||L.length===0)return null;for(let M=0;M<L.length;M+=1){let Q=L[M];if(Q.nodeType!==1)continue;let V=Q;if($(V,u,z))return V}return null}for(let L=0;L<J.length;L+=1)if($(J[L],u,z))return J[L];return null}function $(g,u,z){if(g.tagName!=="SCRIPT"||!g.hasAttribute(G)||g.getAttribute(j)!==u)return!1;if(z!==void 0)return g.getAttribute(w)===z;return!g.hasAttribute(w)}function f(g){return g.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}export{N as parseHydrationPayload,E as findHydrationScript,K as escapeHydrationJson,H as createHydrationScriptTag,j as HYDRATION_TYPE_ATTRIBUTE,w as HYDRATION_KEY_ATTRIBUTE,G as HYDRATION_ATTRIBUTE};
2
+
3
+ //# debugId=C1039E59C4B6659664756E2164756E21
@@ -5,7 +5,7 @@
5
5
  "/**\n * Escapes serialized JSON so it remains safe when embedded inside an HTML\n * `<script>` tag.\n */\nexport function escapeScriptJson(value: string): string {\n\treturn value\n\t\t.replace(/&/g, '\\\\u0026')\n\t\t.replace(/</g, '\\\\u003c')\n\t\t.replace(/>/g, '\\\\u003e')\n\t\t.replace(/\\u2028/g, '\\\\u2028')\n\t\t.replace(/\\u2029/g, '\\\\u2029');\n}\n",
6
6
  "import { escapeScriptJson } from '../tools/escape-script-json';\n\n/** Attribute marker used to identify hydration payloads inside a host. */\nexport const HYDRATION_ATTRIBUTE = 'data-hydration';\n/** Discriminator that scopes a hydration payload to a specific feature. */\nexport const HYDRATION_TYPE_ATTRIBUTE = 'data-hydration-type';\n/** Optional key that scopes a hydration payload to a specific decorated field. */\nexport const HYDRATION_KEY_ATTRIBUTE = 'data-hydration-key';\n\nexport type HydrationPayloadType = 'signal' | 'context';\n\ntype HydrationScriptHost = {\n\tchildren?: ArrayLike<Element> | undefined;\n\tchildNodes?: ArrayLike<{ nodeType: number }> | undefined;\n};\n\n/** Creates a `<script type=\"application/json\">` tag for a hydration payload. */\nexport function createHydrationScriptTag(options: {\n\ttype: HydrationPayloadType;\n\thydrationKey?: string;\n\tserializedValue: string;\n}): string {\n\tconst keyAttribute = options.hydrationKey\n\t\t? ` ${HYDRATION_KEY_ATTRIBUTE}=\"${escapeHtmlAttribute(options.hydrationKey)}\"`\n\t\t: '';\n\n\treturn `<script type=\"application/json\" ${HYDRATION_ATTRIBUTE} ${HYDRATION_TYPE_ATTRIBUTE}=\"${options.type}\"${keyAttribute}>${options.serializedValue}</script>`;\n}\n\n/** Escapes serialized JSON so it remains safe inside an HTML script tag. */\nexport function escapeHydrationJson(value: string): string {\n\treturn escapeScriptJson(value);\n}\n\n/** Parses JSON from a hydration script element, returning the fallback on failure. */\nexport function parseHydrationPayload<T>(element: Element, fallback: T): T {\n\tconst textContent = element.textContent;\n\n\tif (!textContent) {\n\t\treturn fallback;\n\t}\n\n\ttry {\n\t\treturn JSON.parse(textContent) as T;\n\t} catch {\n\t\tif (typeof console !== 'undefined') {\n\t\t\tconsole.warn(\n\t\t\t\t`[@ecopages/radiant] Failed to parse hydration payload from <script ${HYDRATION_ATTRIBUTE}>:`,\n\t\t\t\ttextContent.slice(0, 120),\n\t\t\t);\n\t\t}\n\t\treturn fallback;\n\t}\n}\n\n/**\n * Finds a hydration script element inside a host by type and optional key.\n *\n * When a key is provided, looks for an exact `data-hydration-key` match.\n * Otherwise, returns the first unkeyed script matching the type.\n */\nexport function findHydrationScript(\n\thost: HydrationScriptHost,\n\ttype: HydrationPayloadType,\n\thydrationKey?: string,\n): Element | null {\n\tconst children = host.children;\n\n\tif (!children || children.length === 0) {\n\t\tconst childNodes = (host as Partial<{ childNodes: ArrayLike<{ nodeType: number }> }>).childNodes;\n\n\t\tif (!childNodes || childNodes.length === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\tfor (let i = 0; i < childNodes.length; i += 1) {\n\t\t\tconst node = childNodes[i]!;\n\n\t\t\tif (node.nodeType !== 1) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst element = node as unknown as Element;\n\n\t\t\tif (matchesHydrationScript(element, type, hydrationKey)) {\n\t\t\t\treturn element;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfor (let i = 0; i < children.length; i += 1) {\n\t\tif (matchesHydrationScript(children[i]!, type, hydrationKey)) {\n\t\t\treturn children[i]!;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction matchesHydrationScript(element: Element, type: HydrationPayloadType, hydrationKey?: string): boolean {\n\tif (\n\t\telement.tagName !== 'SCRIPT' ||\n\t\t!element.hasAttribute(HYDRATION_ATTRIBUTE) ||\n\t\telement.getAttribute(HYDRATION_TYPE_ATTRIBUTE) !== type\n\t) {\n\t\treturn false;\n\t}\n\n\tif (hydrationKey !== undefined) {\n\t\treturn element.getAttribute(HYDRATION_KEY_ATTRIBUTE) === hydrationKey;\n\t}\n\n\treturn !element.hasAttribute(HYDRATION_KEY_ATTRIBUTE);\n}\n\nfunction escapeHtmlAttribute(value: string): string {\n\treturn value.replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\n"
7
7
  ],
8
- "mappings": "2PAIO,SAAS,CAAgB,CAAC,EAAuB,CACvD,OAAO,EACL,QAAQ,KAAM,SAAS,EACvB,QAAQ,KAAM,SAAS,EACvB,QAAQ,KAAM,SAAS,EACvB,QAAQ,UAAW,SAAS,EAC5B,QAAQ,UAAW,SAAS,ECPxB,IAAM,EAAsB,iBAEtB,EAA2B,sBAE3B,EAA0B,qBAUhC,SAAS,CAAwB,CAAC,EAI9B,CACV,IAAM,EAAe,EAAQ,aAC1B,IAAI,MAA4B,EAAoB,EAAQ,YAAY,KACxE,GAEH,MAAO,mCAAmC,KAAuB,MAA6B,EAAQ,QAAQ,KAAgB,EAAQ,2BAIhI,SAAS,CAAmB,CAAC,EAAuB,CAC1D,OAAO,EAAiB,CAAK,EAIvB,SAAS,CAAwB,CAAC,EAAkB,EAAgB,CAC1E,IAAM,EAAc,EAAQ,YAE5B,GAAI,CAAC,EACJ,OAAO,EAGR,GAAI,CACH,OAAO,KAAK,MAAM,CAAW,EAC5B,KAAM,CACP,GAAI,OAAO,QAAY,IACtB,QAAQ,KACP,sEAAsE,MACtE,EAAY,MAAM,EAAG,GAAG,CACzB,EAED,OAAO,GAUF,SAAS,CAAmB,CAClC,EACA,EACA,EACiB,CACjB,IAAM,EAAW,EAAK,SAEtB,GAAI,CAAC,GAAY,EAAS,SAAW,EAAG,CACvC,IAAM,EAAc,EAAkE,WAEtF,GAAI,CAAC,GAAc,EAAW,SAAW,EACxC,OAAO,KAGR,QAAS,EAAI,EAAG,EAAI,EAAW,OAAQ,GAAK,EAAG,CAC9C,IAAM,EAAO,EAAW,GAExB,GAAI,EAAK,WAAa,EACrB,SAGD,IAAM,EAAU,EAEhB,GAAI,EAAuB,EAAS,EAAM,CAAY,EACrD,OAAO,EAIT,OAAO,KAGR,QAAS,EAAI,EAAG,EAAI,EAAS,OAAQ,GAAK,EACzC,GAAI,EAAuB,EAAS,GAAK,EAAM,CAAY,EAC1D,OAAO,EAAS,GAIlB,OAAO,KAGR,SAAS,CAAsB,CAAC,EAAkB,EAA4B,EAAgC,CAC7G,GACC,EAAQ,UAAY,UACpB,CAAC,EAAQ,aAAa,CAAmB,GACzC,EAAQ,aAAa,CAAwB,IAAM,EAEnD,MAAO,GAGR,GAAI,IAAiB,OACpB,OAAO,EAAQ,aAAa,CAAuB,IAAM,EAG1D,MAAO,CAAC,EAAQ,aAAa,CAAuB,EAGrD,SAAS,CAAmB,CAAC,EAAuB,CACnD,OAAO,EAAM,QAAQ,KAAM,OAAO,EAAE,QAAQ,KAAM,QAAQ,EAAE,QAAQ,KAAM,MAAM,EAAE,QAAQ,KAAM,MAAM",
9
- "debugId": "ADF85B332FA3E82264756E2164756E21",
8
+ "mappings": "i0BAIO,SAAS,CAAgB,CAAC,EAAuB,CACvD,OAAO,EACL,QAAQ,KAAM,SAAS,EACvB,QAAQ,KAAM,SAAS,EACvB,QAAQ,KAAM,SAAS,EACvB,QAAQ,UAAW,SAAS,EAC5B,QAAQ,UAAW,SAAS,ECPxB,IAAM,EAAsB,iBAEtB,EAA2B,sBAE3B,EAA0B,qBAUhC,SAAS,CAAwB,CAAC,EAI9B,CACV,IAAM,EAAe,EAAQ,aAC1B,IAAI,MAA4B,EAAoB,EAAQ,YAAY,KACxE,GAEH,MAAO,mCAAmC,KAAuB,MAA6B,EAAQ,QAAQ,KAAgB,EAAQ,2BAIhI,SAAS,CAAmB,CAAC,EAAuB,CAC1D,OAAO,EAAiB,CAAK,EAIvB,SAAS,CAAwB,CAAC,EAAkB,EAAgB,CAC1E,IAAM,EAAc,EAAQ,YAE5B,GAAI,CAAC,EACJ,OAAO,EAGR,GAAI,CACH,OAAO,KAAK,MAAM,CAAW,EAC5B,KAAM,CACP,GAAI,OAAO,QAAY,IACtB,QAAQ,KACP,sEAAsE,MACtE,EAAY,MAAM,EAAG,GAAG,CACzB,EAED,OAAO,GAUF,SAAS,CAAmB,CAClC,EACA,EACA,EACiB,CACjB,IAAM,EAAW,EAAK,SAEtB,GAAI,CAAC,GAAY,EAAS,SAAW,EAAG,CACvC,IAAM,EAAc,EAAkE,WAEtF,GAAI,CAAC,GAAc,EAAW,SAAW,EACxC,OAAO,KAGR,QAAS,EAAI,EAAG,EAAI,EAAW,OAAQ,GAAK,EAAG,CAC9C,IAAM,EAAO,EAAW,GAExB,GAAI,EAAK,WAAa,EACrB,SAGD,IAAM,EAAU,EAEhB,GAAI,EAAuB,EAAS,EAAM,CAAY,EACrD,OAAO,EAIT,OAAO,KAGR,QAAS,EAAI,EAAG,EAAI,EAAS,OAAQ,GAAK,EACzC,GAAI,EAAuB,EAAS,GAAK,EAAM,CAAY,EAC1D,OAAO,EAAS,GAIlB,OAAO,KAGR,SAAS,CAAsB,CAAC,EAAkB,EAA4B,EAAgC,CAC7G,GACC,EAAQ,UAAY,UACpB,CAAC,EAAQ,aAAa,CAAmB,GACzC,EAAQ,aAAa,CAAwB,IAAM,EAEnD,MAAO,GAGR,GAAI,IAAiB,OACpB,OAAO,EAAQ,aAAa,CAAuB,IAAM,EAG1D,MAAO,CAAC,EAAQ,aAAa,CAAuB,EAGrD,SAAS,CAAmB,CAAC,EAAuB,CACnD,OAAO,EAAM,QAAQ,KAAM,OAAO,EAAE,QAAQ,KAAM,QAAQ,EAAE,QAAQ,KAAM,MAAM,EAAE,QAAQ,KAAM,MAAM",
9
+ "debugId": "C1039E59C4B6659664756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -1,8 +1,9 @@
1
- import { type JsxRenderable, type SubscribableJsxValue } from '@ecopages/jsx';
1
+ import { type JsxRenderable, type SubscribableJsxValueWithAccess } from '@ecopages/jsx';
2
+ import type { SsrSerializableContextProvider } from '../context/context-provider';
2
3
  import type { UnknownContext } from '../context/types';
3
4
  import { type ReactiveHostLike } from './reactive-host';
4
- import type { ReactivePropertyOptions, ReactiveBindingValue, ReactiveBindings, ReactiveFieldOptions } from './radiant-element';
5
- import type { ReactiveBindingOption } from './radiant-element';
5
+ import type { ReactiveState } from './reactivity-contract';
6
+ import type { ReactiveBindingOption, ReactivePropertyOptions, ReactiveBindingValue, ReactiveBindings, ReactiveFieldOptions } from './reactive-prop-core';
6
7
  import type { SsrSerializableHydrationBinding } from './ssr-hydration-binding';
7
8
  type StringPropertyKey<Value> = Extract<keyof Value, string>;
8
9
  /**
@@ -26,10 +27,9 @@ export declare class RadiantController<Bindings extends object = {}> implements
26
27
  readonly $: ReactiveBindings<Bindings>;
27
28
  private readonly reactiveHost;
28
29
  private connected;
29
- private isRendering;
30
- private isRenderScheduled;
30
+ private readonly renderScheduler;
31
31
  private isSsrLifecycle;
32
- private needsRender;
32
+ private readonly hostSsrRegistry;
33
33
  private renderSignal?;
34
34
  private readonly renderWatcher;
35
35
  constructor(host: Element);
@@ -41,18 +41,14 @@ export declare class RadiantController<Bindings extends object = {}> implements
41
41
  */
42
42
  connect(): void;
43
43
  /**
44
- * Connects the controller for server-side rendering without running the
45
- * browser render/update lifecycle.
44
+ * Runs controller lifecycle work in SSR mode so `connect()` skips the client
45
+ * render/update path even when subclasses override it.
46
46
  */
47
- connectForSsrRender(): void;
47
+ runWithSsrLifecycle<T>(work: () => T): T;
48
48
  /**
49
49
  * Disconnects the controller from its host and tears down reactive work.
50
50
  */
51
51
  disconnect(): void;
52
- /**
53
- * Disconnects a controller that was attached through the SSR-only lifecycle.
54
- */
55
- disconnectForSsrRender(): void;
56
52
  get isConnected(): boolean;
57
53
  /**
58
54
  * Returns the JSX tree rendered into the attached host.
@@ -77,11 +73,11 @@ export declare class RadiantController<Bindings extends object = {}> implements
77
73
  /**
78
74
  * Returns a subscribable JSX binding for a selected reactive member.
79
75
  */
80
- bind<Property extends StringPropertyKey<Bindings>>(property: Property): SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>>;
76
+ bind<Property extends StringPropertyKey<Bindings>>(property: Property): SubscribableJsxValueWithAccess<ReactiveBindingValue<Bindings, Property>>;
81
77
  /**
82
78
  * Returns the cached binding object for a selected reactive member.
83
79
  */
84
- getReactiveBinding<Property extends StringPropertyKey<Bindings>>(property: Property): SubscribableJsxValue<ReactiveBindingValue<Bindings, Property>>;
80
+ getReactiveBinding<Property extends StringPropertyKey<Bindings>>(property: Property): SubscribableJsxValueWithAccess<ReactiveBindingValue<Bindings, Property>>;
85
81
  /**
86
82
  * Defines a reactive field directly on the controller instance.
87
83
  */
@@ -100,14 +96,40 @@ export declare class RadiantController<Bindings extends object = {}> implements
100
96
  */
101
97
  defineReactiveBinding(property: string, bind?: ReactiveBindingOption): void;
102
98
  notifyUpdate(changedProperty: string, oldValue: unknown, value: unknown): void;
103
- registerUpdateCallback(property: string, update: (...rest: any[]) => any): () => void;
99
+ registerUpdateCallback(property: string, update: () => void): () => void;
100
+ /**
101
+ * Notifies context decorators that a provider or consumer for `contextName`
102
+ * finished connecting on this controller host.
103
+ *
104
+ * Controllers currently rely on the shared client-side context event flow, so
105
+ * the base implementation does not need extra bookkeeping here.
106
+ */
104
107
  connectedContextCallback(_contextName: UnknownContext): void;
105
- registerContextProvider(_name: string, _provider: unknown): void;
106
- registerHydrationBinding(_name: string, _binding: SsrSerializableHydrationBinding): void;
108
+ /**
109
+ * Registers a decorated context provider on the controller host.
110
+ *
111
+ * Controller providers participate in the same client-side event-based context
112
+ * flow as `RadiantElement` providers. During SSR, the registered providers are
113
+ * also exposed to descendant consumers and hydration payload collection.
114
+ */
115
+ registerContextProvider(name: string, provider: SsrSerializableContextProvider): void;
116
+ /**
117
+ * Registers a keyed SSR hydration binding for the controller host.
118
+ */
119
+ registerHydrationBinding(name: string, binding: SsrSerializableHydrationBinding): void;
120
+ /**
121
+ * Returns SSR-visible context providers registered on this controller.
122
+ */
123
+ getSsrContextProviders(): SsrSerializableContextProvider[];
124
+ /**
125
+ * Returns keyed hydration payload producers registered on this controller.
126
+ */
127
+ getSsrHydrationBindings(): SsrSerializableHydrationBinding[];
107
128
  registerCleanupCallback(callback: () => void): void;
108
129
  registerConnectedCallback(callback: () => void): void;
109
- registerReactiveDependencyReader(property: string, read: () => unknown): void;
110
- trackReactiveRead(property: string): void;
130
+ createReactiveMember<T>(propertyName: string, initialValue: T): ReactiveState<T>;
131
+ registerReactiveMember<T>(propertyName: string, signal: ReactiveState<T>): void;
132
+ getReactiveMember<T = unknown>(propertyName: string): ReactiveState<T> | undefined;
111
133
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
112
134
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
113
135
  dispatchEvent(event: Event): boolean;
@@ -0,0 +1,3 @@
1
+ var{defineProperty:$,getOwnPropertyNames:m,getOwnPropertyDescriptor:g}=Object,c=Object.prototype.hasOwnProperty;function d(q){return this[q]}var Fq=(q)=>{var E=(O??=new WeakMap).get(q),G;if(E)return E;if(E=$({},"__esModule",{value:!0}),q&&typeof q==="object"||typeof q==="function"){for(var M of m(q))if(!c.call(E,M))$(E,M,{get:d.bind(q,M),enumerable:!(G=g(q,M))||G.enumerable})}return O.set(q,E),E},O;var y=(q)=>q;function u(q,E){this[q]=y.bind(null,E)}var Wq=(q,E)=>{for(var G in E)$(q,G,{get:E[G],enumerable:!0,configurable:!0,set:u.bind(E,G)})};var Dq=(q,E)=>()=>(q&&(E=q(q=0)),E);var Hq=((q)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(q,{get:(E,G)=>(typeof require<"u"?require:E)[G]}):q)(function(q){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+q+'" is not supported')});class U{contextProviders=new Map;hydrationBindings=new Map;registerContextProvider(q,E){this.contextProviders.set(q,E),this.hydrationBindings.set(q,E)}registerHydrationBinding(q,E){this.hydrationBindings.set(q,E)}getContextProviders(){return[...this.contextProviders.values()]}getHydrationBindings(){return[...this.hydrationBindings.values()]}}var B=Symbol.for("@ecopages/radiant.legacy-instance-initializers"),J=Symbol.for("@ecopages/radiant.legacy-post-construction-initializers"),s=Symbol.for("@ecopages/radiant.legacy-executed-post-construction-initializers");function Jq(q,E){L(q,B,E)}function Kq(q,E){L(q,J,E)}function K(q){o(q,B)}function X(q,E){let G=q;l(q,E,G[s]??=new Set)}function L(q,E,G){let M=q,Q=Object.prototype.hasOwnProperty.call(M,E)?M[E]:void 0;if(Array.isArray(Q)){Q.push(G);return}Object.defineProperty(M,E,{value:[G]})}function o(q,E){n(q,(G)=>{let M=G[E];if(!Array.isArray(M))return;for(let Q of M)Q(q)})}function l(q,E,G){for(let M of j(q)){let Q=M[J];if(!Array.isArray(Q))continue;for(let Y of Q){if(G.has(Y))continue;Y(q,E),G.add(Y)}}}function j(q){let E=[],G=Object.getPrototypeOf(q);while(G&&G!==Object.prototype)E.unshift(G),G=Object.getPrototypeOf(G);return E}function n(q,E){for(let G of j(q))E(G)}function F(q,E){switch(E){case"construct":K(q);break;case"connect":X(q,"connect");break;case"ssr":X(q,"ssr");break}}function C(q){switch(q){case Array:return"array";case Boolean:return"boolean";case Number:return"number";case Object:return"object";case String:return"string"}}function p(q){switch(typeof q){case"boolean":return"boolean";case"number":return"number";case"string":return"string"}if(Array.isArray(q))return"array";if(Object.prototype.toString.call(q)==="[object Object]")return"object"}function W(q){switch(q){case Number:return 0;case String:return"";case Boolean:return!1;default:return null}}function i(q){try{return JSON.parse(q)}catch{throw TypeError("Invalid JSON string")}}var r={array(q){let E=i(q);if(!Array.isArray(E))throw TypeError(`Expected an array but got a value of type "${typeof E}"`);return E},boolean(q){return!(q==="0"||String(q).toLowerCase()==="false")},number(q){return Number(q.replace(/_/g,""))},object(q){let E=JSON.parse(q);if(E===null||typeof E!=="object"||Array.isArray(E))throw TypeError(`expected value of type "object" but instead got value "${q}" of type "${p(E)}"`);return E},string(q){return q}},A={default:T,array:I,object:I};function I(q){return JSON.stringify(q)}function T(q){return`${q}`}function _(q,E){let G=C(E);if(!G)throw TypeError(`[radiant-element] Unknown type "${E}"`);return r[G](q)}function x(q,E){let G=C(E);if(!G)throw TypeError(`[radiant-element] Unknown type "${E}"`);return(A[G]??A.default??T)(q)}function a(q){return typeof q==="boolean"}function t(q){return typeof q==="number"}function e(q){return typeof q==="string"}function qq(q){return Array.isArray(q)}function Eq(q){return typeof q==="object"&&!Array.isArray(q)&&q!==null}function P(q,E){switch(q){case Boolean:return a(E);case Number:return t(E);case String:return e(E);case Array:return qq(E);case Object:return Eq(E);default:return!1}}var Iq=(q,E,G,M)=>{if(E===Boolean){let Y=q.getAttribute(G);if(Y===null)return M;return Y===""?!0:_(Y,E)}let Q=q.getAttribute(G);return Q!==null?_(Q,E):M??W(E)};function S(q,E){if(E!==void 0&&!P(q,E))throw Error(`defaultValue does not match the expected type for ${q.name}`)}function xq(q,E,G,M){return{type:G,name:q,initialValue:M,attribute:E,converter:{fromAttribute:(Q)=>_(Q,G),toAttribute:(Q)=>x(Q,G)}}}import{Computed as Gq,state as Mq,subtle as Qq,trackDependency as Yq}from"@ecopages/signals";function Zq(q){return q}function z(q){return q}var w={trackDependency(q){Yq(Zq(q))},createComputed(q){return new Gq(q)},createWatcher(q){let E=new Qq.Watcher(q);return{watch(G){E.watch(z(G))},unwatch(G){E.unwatch(z(G))}}},createState(q){return Mq(q)}};var R=w;function Z(){return R}function _q(q){R=q}function Nq(q){Z().trackDependency(q)}function k(q){return Z().createComputed(q)}function N(q){return Z().createWatcher(q)}class D{options;needsRender=!1;isRendering=!1;isRenderScheduled=!1;constructor(q){this.options=q}get rendering(){return this.isRendering}get pending(){return this.needsRender}markPending(){this.needsRender=!0}clearPending(){this.needsRender=!1}requestUpdate(){if(this.needsRender=!0,this.isRenderScheduled)return;this.isRenderScheduled=!0,queueMicrotask(()=>{if(this.isRenderScheduled=!1,!this.needsRender)return;this.flush()})}flush(){if(!this.options.canFlush())return;while(this.needsRender&&this.options.canFlush())this.needsRender=!1,this.runCommit()}runExclusive(q){this.isRendering=!0;try{return q()}finally{this.isRendering=!1}}runCommit(){this.isRendering=!0;try{this.options.commit()}finally{this.isRendering=!1}}}import{createSubscribableJsxValue as $q}from"@ecopages/jsx";function f(q){return $q({getValue:()=>q.get(),subscribe:(E)=>q.subscribe(E)})}class H{host;access;shouldAutoBind;bindings;$;reactiveMembers=new Map;jsxBindings=new Map;updateCallbacks=new Map;onConnectedCallbacks=[];onDisconnectedCallback=[];constructor(q,E,G){this.host=q;this.access=E;this.shouldAutoBind=G;let M=this.createReactiveBindingNamespace();this.bindings=M,this.$=M}connectHost(){for(let q of this.onConnectedCallbacks)q()}disconnectHost(){for(let q of this.onDisconnectedCallback)q()}registerCleanupCallback(q){this.onDisconnectedCallback.push(q)}registerConnectedCallback(q){this.onConnectedCallbacks.push(q)}notifyUpdate(q,E,G){let M=this.updateCallbacks.get(q);if(!M)return;for(let Q of[...M.keys()])Q()}getReactiveMember(q){return this.reactiveMembers.get(q)}createReactiveMember(q,E){let G=Z().createState(E);return this.registerMember(q,G),G}registerReactiveMember(q,E){this.registerMember(q,E)}registerMember(q,E){this.reactiveMembers.set(q,E),this.jsxBindings.delete(q);let G=this.updateCallbacks.get(q);if(G)for(let M of G.keys())this.subscribeCallback(q,M)}subscribeCallback(q,E){let G=this.updateCallbacks.get(q),M=this.reactiveMembers.get(q);if(!G||!M||G.get(E))return;let Q=M.subscribe(()=>E());G.set(E,Q)}getReactiveBinding(q){let E=q,G=this.jsxBindings.get(E);if(G)return G;let M=this.reactiveMembers.get(E);if(!M)throw Error(`No reactive binding registered for "${String(q)}".`);let Q=f(M);return this.jsxBindings.set(E,Q),Q}registerUpdateCallback(q,E){let G=this.updateCallbacks.get(q);if(!G)G=new Map,this.updateCallbacks.set(q,G);return G.set(E,void 0),this.subscribeCallback(q,E),()=>{let M=this.updateCallbacks.get(q);if(M?.get(E)?.(),M?.delete(E),M&&M.size===0)this.updateCallbacks.delete(q)}}defineReactiveBinding(q,E=!0){let G=typeof E==="string"?E:E?`$${q}`:void 0,M=this.access.getBindingTarget?.(this.host)??this.host;if(!G||this.access.hasProperty(this.host,G))return;this.access.defineProperty(M,G,{get:()=>this.getReactiveBinding(q),enumerable:!1,configurable:!0})}defineReactiveAccessor(q,E){let G=E.bind??this.shouldAutoBind();this.defineReactiveBinding(q,G),this.access.defineProperty(this.host,q,{get:()=>E.signal.get(),set:(M)=>{E.signal.set(M),E.onSet?.(M)},enumerable:!0,configurable:!0})}createReactiveField(q,E,G={}){let M=this.reactiveMembers.get(q),Q=M??this.createReactiveMember(q,E);if(M&&E!==void 0)Q.set(E);if(this.defineReactiveAccessor(q,{bind:G.bind,signal:Q}),!G.suppressInitialNotify)this.notifyUpdate(q,void 0,Q.get())}createReactiveBindingNamespace(){return new Proxy(Object.create(null),{get:(q,E)=>{if(typeof E!=="string")return;return this.getReactiveBinding(E)}})}}import{render as Uq}from"@ecopages/jsx";class V{host;element;bindings;$;reactiveHost;connected=!1;renderScheduler;isSsrLifecycle=!1;hostSsrRegistry=new U;renderSignal;renderWatcher=N(()=>{this.requestUpdate()});constructor(q){this.host=q,this.element=q,this.reactiveHost=new H(this,{defineProperty:(E,G,M)=>Object.defineProperty(E,G,M),hasProperty:(E,G)=>(G in E),readProperty:(E,G)=>E[G]},()=>this.shouldAutoBindReactiveMembers()),this.bindings=this.reactiveHost.bindings,this.$=this.reactiveHost.$,this.renderScheduler=new D({canFlush:()=>this.connected&&!this.renderScheduler.rendering,commit:()=>{let E=this.getRenderTarget();if(!E)return;Uq(this.resolveTrackedRenderOutput(),E)}}),F(this,"construct")}connect(){if(F(this,"connect"),this.connected=!0,this.reactiveHost.connectHost(),this.shouldRunRenderLifecycle())this.update()}runWithSsrLifecycle(q){this.isSsrLifecycle=!0;try{return q()}finally{this.isSsrLifecycle=!1}}disconnect(){this.connected=!1,this.disconnectRenderWatcher(),this.reactiveHost.disconnectHost()}get isConnected(){return this.connected}render(){return null}requestUpdate(){if(!this.shouldRunRenderLifecycle())return;this.renderScheduler.requestUpdate()}update(){if(!this.shouldRunRenderLifecycle())return;if(!this.getRenderTarget())return;this.renderScheduler.markPending(),this.renderScheduler.flush()}bind(q){return this.reactiveHost.getReactiveBinding(q)}getReactiveBinding(q){return this.reactiveHost.getReactiveBinding(q)}createReactiveField(q,E,G={}){this.reactiveHost.createReactiveField(q,E,G)}createReactiveProp(q,E){let{type:G,defaultValue:M,bind:Q}=E;S(G,M);let Y=new h(this.host,this,q),v=Y.getInitialValue()??M??W(G),b=this.reactiveHost.createReactiveMember(q,v);this.reactiveHost.defineReactiveAccessor(q,{bind:Q,signal:b}),Y.install(),this.registerCleanupCallback(()=>{Y.restore()})}defineReactiveBinding(q,E=!0){this.reactiveHost.defineReactiveBinding(q,E)}notifyUpdate(q,E,G){this.reactiveHost.notifyUpdate(q,E,G)}registerUpdateCallback(q,E){return this.reactiveHost.registerUpdateCallback(q,E)}connectedContextCallback(q){}registerContextProvider(q,E){this.hostSsrRegistry.registerContextProvider(q,E)}registerHydrationBinding(q,E){this.hostSsrRegistry.registerHydrationBinding(q,E)}getSsrContextProviders(){return this.hostSsrRegistry.getContextProviders()}getSsrHydrationBindings(){return this.hostSsrRegistry.getHydrationBindings()}registerCleanupCallback(q){this.reactiveHost.registerCleanupCallback(q)}registerConnectedCallback(q){this.reactiveHost.registerConnectedCallback(q)}createReactiveMember(q,E){return this.reactiveHost.createReactiveMember(q,E)}registerReactiveMember(q,E){this.reactiveHost.registerReactiveMember(q,E)}getReactiveMember(q){return this.reactiveHost.getReactiveMember(q)}addEventListener(q,E,G){this.host.addEventListener(q,E,G)}removeEventListener(q,E,G){this.host.removeEventListener(q,E,G)}dispatchEvent(q){return this.host.dispatchEvent(q)}getRef(q,E=!1){let G=`[data-ref="${q}"]`;if(E)return Array.from(this.host.querySelectorAll(G));return this.host.querySelector(G)??null}shouldAutoBindReactiveMembers(){return!0}shouldRunRenderLifecycle(){return!this.isSsrLifecycle&&this.render!==V.prototype.render}getRenderTarget(){return this.host instanceof HTMLElement?this.host:null}disconnectRenderWatcher(){if(!this.renderSignal)return;this.renderWatcher.unwatch(this.renderSignal),this.renderSignal=void 0}resolveTrackedRenderOutput(){let q=k(()=>this.render()),E=q.get();if(!this.connected)return E;if(this.renderSignal)this.renderWatcher.unwatch(this.renderSignal);return this.renderSignal=q,this.renderWatcher.watch(q),E}}class h{host;controller;propertyName;ownDescriptor;constructor(q,E,G){this.host=q;this.controller=E;this.propertyName=G;this.ownDescriptor=Object.getOwnPropertyDescriptor(this.host,this.propertyName)}getInitialValue(){return Reflect.get(this.host,this.propertyName)}install(){Object.defineProperty(this.host,this.propertyName,{get:()=>Reflect.get(this.controller,this.propertyName),set:(q)=>{Reflect.set(this.controller,this.propertyName,q)},enumerable:this.ownDescriptor?.enumerable??!0,configurable:!0})}restore(){let q=Reflect.get(this.controller,this.propertyName);if(this.ownDescriptor){if(Object.defineProperty(this.host,this.propertyName,this.ownDescriptor),"value"in this.ownDescriptor&&this.ownDescriptor.writable)Reflect.set(this.host,this.propertyName,q);return}Reflect.deleteProperty(this.host,this.propertyName);try{Reflect.set(this.host,this.propertyName,q)}catch{Object.defineProperty(this.host,this.propertyName,{value:q,writable:!0,enumerable:!0,configurable:!0})}}}export{V as RadiantController};
2
+
3
+ //# debugId=3DB3D3D210C581D064756E2164756E21
@@ -0,0 +1,21 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/core/host-ssr-registry.ts", "../src/decorators/legacy/instance-initializers.ts", "../src/decorators/legacy/host-readiness.ts", "../src/utils/attribute-utils.ts", "../src/core/reactive-prop-core.ts", "../src/core/reactivity-signals.ts", "../src/core/reactivity-runtime.ts", "../src/core/reactivity-adapter.ts", "../src/core/render-scheduler.ts", "../src/core/reactive-binding-adapter.ts", "../src/core/reactive-host.ts", "../src/core/radiant-controller.ts"],
4
+ "sourcesContent": [
5
+ "import type { SsrSerializableContextProvider } from '../context/context-provider';\nimport type { SsrSerializableHydrationBinding } from './ssr-hydration-binding';\n\n/**\n * Shared SSR provider and hydration binding storage for Radiant hosts.\n */\nexport class HostSsrRegistry {\n\tprivate readonly contextProviders = new Map<string, SsrSerializableContextProvider>();\n\tprivate readonly hydrationBindings = new Map<string, SsrSerializableHydrationBinding>();\n\n\tpublic registerContextProvider(name: string, provider: SsrSerializableContextProvider): void {\n\t\tthis.contextProviders.set(name, provider);\n\t\tthis.hydrationBindings.set(name, provider);\n\t}\n\n\tpublic registerHydrationBinding(name: string, binding: SsrSerializableHydrationBinding): void {\n\t\tthis.hydrationBindings.set(name, binding);\n\t}\n\n\tpublic getContextProviders(): SsrSerializableContextProvider[] {\n\t\treturn [...this.contextProviders.values()];\n\t}\n\n\tpublic getHydrationBindings(): SsrSerializableHydrationBinding[] {\n\t\treturn [...this.hydrationBindings.values()];\n\t}\n}\n",
6
+ "export type LegacyPostConstructionPhase = 'connect' | 'ssr';\n\ntype LegacyInstanceInitializer<T extends object = object> = (instance: T) => void;\ntype LegacyPostConstructionInitializer<T extends object = object> = (\n\tinstance: T,\n\tphase: LegacyPostConstructionPhase,\n) => void;\n\nconst LEGACY_INSTANCE_INITIALIZERS = Symbol.for('@ecopages/radiant.legacy-instance-initializers');\nconst LEGACY_POST_CONSTRUCTION_INITIALIZERS = Symbol.for('@ecopages/radiant.legacy-post-construction-initializers');\nconst LEGACY_EXECUTED_POST_CONSTRUCTION_INITIALIZERS = Symbol.for(\n\t'@ecopages/radiant.legacy-executed-post-construction-initializers',\n);\n\n/**\n * Registers per-instance initialization work for a legacy decorator.\n *\n * Legacy decorators execute against the prototype, so any initialization that\n * needs the concrete element instance must be deferred until construction time.\n */\nexport function registerLegacyInstanceInitializer<T extends object>(\n\tproto: T,\n\tinitializer: LegacyInstanceInitializer<T>,\n): void {\n\tregisterInitializer(proto, LEGACY_INSTANCE_INITIALIZERS, initializer);\n}\n\n/**\n * Registers post-construction work for a legacy decorator.\n *\n * This phase exists for decorators that eagerly write instance fields. With\n * legacy decorators plus `useDefineForClassFields`, subclass field definition\n * can overwrite values written during the base-class constructor.\n */\nexport function registerLegacyPostConstructionInitializer<T extends object>(\n\tproto: T,\n\tinitializer: LegacyPostConstructionInitializer<T>,\n): void {\n\tregisterInitializer(proto, LEGACY_POST_CONSTRUCTION_INITIALIZERS, initializer);\n}\n\n/**\n * Runs all legacy decorator initializers for a newly constructed element.\n *\n * Initializers are collected from the prototype chain and executed from base to\n * derived class so inherited setup remains stable.\n */\nexport function runLegacyInstanceInitializers<T extends object>(instance: T): void {\n\trunLegacyInitializers(instance, LEGACY_INSTANCE_INITIALIZERS);\n}\n\n/**\n * Runs legacy decorator setup that must happen after subclass field\n * initialization has completed.\n *\n * Each initializer runs at most once per instance even if multiple lifecycle\n * entrypoints call this helper.\n */\nexport function runLegacyPostConstructionInitializers<T extends object>(\n\tinstance: T,\n\tphase: LegacyPostConstructionPhase,\n): void {\n\tconst target = instance as Record<PropertyKey, unknown>;\n\n\trunLegacyPostConstructionInitializersOnPrototypeChain(\n\t\tinstance,\n\t\tphase,\n\t\t(target[LEGACY_EXECUTED_POST_CONSTRUCTION_INITIALIZERS] ??= new Set()) as Set<\n\t\t\tLegacyPostConstructionInitializer<T>\n\t\t>,\n\t);\n}\n\nfunction registerInitializer<T extends object>(\n\tproto: T,\n\tkey: symbol,\n\tinitializer: LegacyInstanceInitializer<T> | LegacyPostConstructionInitializer<T>,\n): void {\n\tconst target = proto as Record<PropertyKey, unknown>;\n\tconst ownInitializers = Object.prototype.hasOwnProperty.call(target, key) ? target[key] : undefined;\n\n\tif (Array.isArray(ownInitializers)) {\n\t\townInitializers.push(initializer);\n\t\treturn;\n\t}\n\n\tObject.defineProperty(target, key, {\n\t\tvalue: [initializer],\n\t});\n}\n\nfunction runLegacyInitializers<T extends object>(instance: T, key: symbol): void {\n\twalkPrototypeChain(instance, (prototype) => {\n\t\tconst initializers = (prototype as Record<PropertyKey, unknown>)[key] as\n\t\t\tLegacyInstanceInitializer<T>[] | undefined;\n\n\t\tif (!Array.isArray(initializers)) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const initializer of initializers) {\n\t\t\tinitializer(instance);\n\t\t}\n\t});\n}\n\nfunction runLegacyPostConstructionInitializersOnPrototypeChain<T extends object>(\n\tinstance: T,\n\tphase: LegacyPostConstructionPhase,\n\texecutedInitializers: Set<LegacyPostConstructionInitializer<T>>,\n): void {\n\tfor (const prototype of collectPrototypeChain(instance)) {\n\t\tconst initializers = (prototype as Record<PropertyKey, unknown>)[LEGACY_POST_CONSTRUCTION_INITIALIZERS] as\n\t\t\tLegacyPostConstructionInitializer<T>[] | undefined;\n\n\t\tif (!Array.isArray(initializers)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (const initializer of initializers) {\n\t\t\tif (executedInitializers.has(initializer)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tinitializer(instance, phase);\n\t\t\texecutedInitializers.add(initializer);\n\t\t}\n\t}\n}\n\nfunction collectPrototypeChain<T extends object>(instance: T): object[] {\n\tconst prototypes: object[] = [];\n\tlet prototype: object | null = Object.getPrototypeOf(instance);\n\n\twhile (prototype && prototype !== Object.prototype) {\n\t\tprototypes.unshift(prototype);\n\t\tprototype = Object.getPrototypeOf(prototype);\n\t}\n\n\treturn prototypes;\n}\n\nfunction walkPrototypeChain<T extends object>(instance: T, visit: (prototype: object) => void): void {\n\tfor (const prototype of collectPrototypeChain(instance)) {\n\t\tvisit(prototype);\n\t}\n}\n",
7
+ "import { runLegacyInstanceInitializers, runLegacyPostConstructionInitializers } from './instance-initializers';\n\nexport type LegacyHostReadinessPhase = 'construct' | 'connect' | 'ssr';\n\n/**\n * Runs legacy decorator initialization for the requested lifecycle phase.\n *\n * Post-construction work is idempotent — multiple calls with `connect` or `ssr`\n * only execute each registered initializer once per instance.\n */\nexport function ensureLegacyHostReady<T extends object>(host: T, phase: LegacyHostReadinessPhase): void {\n\tswitch (phase) {\n\t\tcase 'construct':\n\t\t\trunLegacyInstanceInitializers(host);\n\t\t\tbreak;\n\t\tcase 'connect':\n\t\t\trunLegacyPostConstructionInitializers(host, 'connect');\n\t\t\tbreak;\n\t\tcase 'ssr':\n\t\t\trunLegacyPostConstructionInitializers(host, 'ssr');\n\t\t\tbreak;\n\t}\n}\n",
8
+ "import type { RadiantElement } from '../core/radiant-element';\n\nexport type AttributeTypeConstant = typeof Array | typeof Boolean | typeof Number | typeof Object | typeof String;\n\nexport type AttributeTypeDefault = Array<unknown> | boolean | number | Record<string, unknown> | string;\n\n/**\n * Parses the given attribute type constant and returns its corresponding string representation.\n *\n * @param constant - The attribute type constant to parse.\n * @returns The string representation of the attribute type constant.\n */\nexport function parseAttributeTypeConstant(constant?: AttributeTypeConstant) {\n\tswitch (constant) {\n\t\tcase Array:\n\t\t\treturn 'array';\n\t\tcase Boolean:\n\t\t\treturn 'boolean';\n\t\tcase Number:\n\t\t\treturn 'number';\n\t\tcase Object:\n\t\t\treturn 'object';\n\t\tcase String:\n\t\t\treturn 'string';\n\t}\n}\n\n/**\n * Parses the attribute type default value and returns its type as a string.\n *\n * @param defaultValue - The default value of the attribute type.\n * @returns The type of the default value as a string.\n */\nexport function parseAttributeTypeDefault(defaultValue?: AttributeTypeDefault) {\n\tswitch (typeof defaultValue) {\n\t\tcase 'boolean':\n\t\t\treturn 'boolean';\n\t\tcase 'number':\n\t\t\treturn 'number';\n\t\tcase 'string':\n\t\t\treturn 'string';\n\t}\n\n\tif (Array.isArray(defaultValue)) return 'array';\n\tif (Object.prototype.toString.call(defaultValue) === '[object Object]') return 'object';\n}\n\n/**\n * Returns the default value for a given attribute type.\n *\n * @param type - The attribute type constant.\n * @returns The default value for the specified attribute type.\n */\nexport function defaultValueForType(type: AttributeTypeConstant): unknown {\n\tswitch (type) {\n\t\tcase Number:\n\t\t\treturn 0;\n\t\tcase String:\n\t\t\treturn '';\n\t\tcase Boolean:\n\t\t\treturn false;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\ntype Reader = (value: string) => number | string | boolean | object | unknown[];\n\n/**\n * Utility function to parse a JSON string safely\n */\nfunction parseJSON<T>(value: string): T {\n\ttry {\n\t\treturn JSON.parse(value);\n\t} catch {\n\t\tthrow new TypeError('Invalid JSON string');\n\t}\n}\n\n/**\n * Object that maps attribute types to reader functions.\n * @type {Object.<string, Reader>}\n */\nconst readers: { [type: string]: Reader } = {\n\tarray(value: string): unknown[] {\n\t\tconst array = parseJSON<unknown[]>(value);\n\t\tif (!Array.isArray(array)) {\n\t\t\tthrow new TypeError(`Expected an array but got a value of type \"${typeof array}\"`);\n\t\t}\n\t\treturn array;\n\t},\n\n\tboolean(value: string): boolean {\n\t\treturn !(value === '0' || String(value).toLowerCase() === 'false');\n\t},\n\n\tnumber(value: string): number {\n\t\tconst number = Number(value.replace(/_/g, ''));\n\t\treturn number;\n\t},\n\n\tobject(value: string): object {\n\t\tconst object = JSON.parse(value);\n\t\tif (object === null || typeof object !== 'object' || Array.isArray(object)) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseAttributeTypeDefault(\n\t\t\t\t\tobject,\n\t\t\t\t)}\"`,\n\t\t\t);\n\t\t}\n\t\treturn object;\n\t},\n\n\tstring(value: string): string {\n\t\treturn value;\n\t},\n};\n\ntype Writer = (value: unknown) => string;\n\n/**\n * Object that maps attribute types to writer functions.\n * @type {Object.<string, Writer>}\n */\nconst writers: { [type: string]: Writer } = {\n\tdefault: writeString,\n\tarray: writeJSON,\n\tobject: writeJSON,\n};\n\nfunction writeJSON(value: unknown) {\n\treturn JSON.stringify(value);\n}\n\nfunction writeString(value: unknown) {\n\treturn `${value}`;\n}\n\n/**\n * Reads the attribute value based on the provided type.\n * @param value - The attribute value to be read.\n * @param type - The type of the attribute.\n * @returns The parsed attribute value.\n * @throws {TypeError} If the provided type is unknown.\n */\nexport function readAttributeValue(value: string, type: AttributeTypeConstant) {\n\tconst readerType = parseAttributeTypeConstant(type);\n\tif (!readerType) throw new TypeError(`[radiant-element] Unknown type \"${type}\"`);\n\treturn readers[readerType]!(value);\n}\n\nexport type ReadAttributeValueReturnType = ReturnType<typeof readAttributeValue>;\n\n/**\n * Writes the attribute value based on the provided type.\n *\n * @param value - The value to be written.\n * @param type - The type of the attribute.\n * @returns The written attribute value.\n * @throws {TypeError} If the provided type is unknown.\n */\nexport function writeAttributeValue(value: unknown, type: AttributeTypeConstant) {\n\tconst writerType = parseAttributeTypeConstant(type);\n\tif (!writerType) throw new TypeError(`[radiant-element] Unknown type \"${type}\"`);\n\tconst writer: Writer = writers[writerType] ?? writers.default ?? writeString;\n\treturn writer(value);\n}\n\nexport type WriteAttributeValueReturnType = ReturnType<typeof writeAttributeValue>;\n\n/*\n * Type guard functions for each type in AttributeTypeConstant\n */\nfunction isBoolean(value: unknown): value is boolean {\n\treturn typeof value === 'boolean';\n}\n\nfunction isNumber(value: unknown): value is number {\n\treturn typeof value === 'number';\n}\n\nfunction isString(value: unknown): value is string {\n\treturn typeof value === 'string';\n}\n\nfunction isArray(value: unknown): value is Array<unknown> {\n\treturn Array.isArray(value);\n}\n\nfunction isObject(value: unknown): value is object {\n\treturn typeof value === 'object' && !Array.isArray(value) && value !== null;\n}\n\n/*\n * Check function to ensure defaultValue matches the type\n */\nexport function isValueOfType(type: AttributeTypeConstant, defaultValue: unknown): boolean {\n\tswitch (type) {\n\t\tcase Boolean:\n\t\t\treturn isBoolean(defaultValue);\n\t\tcase Number:\n\t\t\treturn isNumber(defaultValue);\n\t\tcase String:\n\t\t\treturn isString(defaultValue);\n\t\tcase Array:\n\t\t\treturn isArray(defaultValue);\n\t\tcase Object:\n\t\t\treturn isObject(defaultValue);\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\nexport const getInitialValue = (\n\ttarget: RadiantElement,\n\ttype: AttributeTypeConstant,\n\tattributeKey: string,\n\tdefaultValue: unknown,\n) => {\n\tif (type === Boolean) {\n\t\tconst attributeValue = target.getAttribute(attributeKey);\n\t\tif (attributeValue === null) {\n\t\t\treturn defaultValue;\n\t\t}\n\n\t\treturn attributeValue === '' ? true : readAttributeValue(attributeValue, type);\n\t}\n\n\tconst attributeValue = target.getAttribute(attributeKey);\n\treturn attributeValue !== null\n\t\t? readAttributeValue(attributeValue, type)\n\t\t: (defaultValue ?? (defaultValueForType(type) as typeof defaultValue));\n};\n",
9
+ "import type { JsxBindingSourceValue, JsxRenderable, SubscribableJsxValueWithAccess } from '@ecopages/jsx';\nimport type { ReactiveState } from './reactivity-contract';\nimport {\n\ttype AttributeTypeConstant,\n\ttype ReadAttributeValueReturnType,\n\ttype WriteAttributeValueReturnType,\n\tisValueOfType,\n\treadAttributeValue,\n\twriteAttributeValue,\n} from '../utils/attribute-utils';\n\ntype StringPropertyKey<Value> = Extract<keyof Value, string>;\n\nexport interface ReactiveProperty<T = unknown> {\n\ttype: AttributeTypeConstant;\n\tinitialValue?: T;\n\tname: string;\n\tattribute: string;\n\tconverter: {\n\t\tfromAttribute: (value: string) => ReadAttributeValueReturnType;\n\t\ttoAttribute: (value: any) => WriteAttributeValueReturnType;\n\t};\n}\n\nexport type ReactivePropertyOptions<T> = {\n\ttype: AttributeTypeConstant;\n\treflect?: boolean;\n\tattribute?: string;\n\tdefaultValue?: T;\n\tbind?: boolean | string;\n};\n\nexport type ReactiveBindingOption = boolean | string;\n\nexport type ReactiveFieldOptions = {\n\tbind?: ReactiveBindingOption;\n\t/** When true, skip the initial notifyUpdate emitted while defining the field. */\n\tsuppressInitialNotify?: boolean;\n};\n\nexport type ReactiveBindingValue<\n\tHost extends object,\n\tProperty extends StringPropertyKey<Host>,\n> = Host[Property] extends JsxBindingSourceValue ? Host[Property] : JsxRenderable;\n\nexport type ReactiveBindings<Bindings extends object> = {\n\treadonly [Property in StringPropertyKey<Bindings>]: SubscribableJsxValueWithAccess<\n\t\tReactiveBindingValue<Bindings, Property>\n\t>;\n};\n\nexport type ReactiveAccessorDefinition<T> = {\n\tbind?: ReactiveBindingOption;\n\tsignal: ReactiveState<T>;\n\tonSet?: (value: T) => void;\n};\n\nexport function validateReactivePropertyDefault(type: AttributeTypeConstant, defaultValue: unknown): void {\n\tif (defaultValue !== undefined && !isValueOfType(type, defaultValue)) {\n\t\tthrow new Error(`defaultValue does not match the expected type for ${type.name}`);\n\t}\n}\n\nexport function createReactivePropertyMapping<T>(\n\tpropertyName: string,\n\tattributeKey: string,\n\ttype: AttributeTypeConstant,\n\tinitialValue: T | undefined,\n): ReactiveProperty<T> {\n\treturn {\n\t\ttype,\n\t\tname: propertyName,\n\t\tinitialValue,\n\t\tattribute: attributeKey,\n\t\tconverter: {\n\t\t\tfromAttribute: (value) => readAttributeValue(value, type),\n\t\t\ttoAttribute: (value) => writeAttributeValue(value, type),\n\t\t},\n\t};\n}\n",
10
+ "import {\n\tComputed as SignalsComputed,\n\tstate as signalsState,\n\tsubtle,\n\ttrackDependency,\n\ttype DependencyNode as SignalsDependencyNode,\n} from '@ecopages/signals';\nimport type {\n\tReactiveComputed,\n\tReactiveDependencyNode,\n\tReactiveRuntime,\n\tReactiveState,\n\tReactiveWatcher,\n} from './reactivity-contract';\n\nfunction asSignalsDependencyNode(node: ReactiveDependencyNode): SignalsDependencyNode {\n\treturn node as SignalsDependencyNode;\n}\n\nfunction asSignalsComputed(signal: ReactiveComputed<unknown>): SignalsComputed<unknown> {\n\treturn signal as SignalsComputed<unknown>;\n}\n\n/**\n * Default Signals-backed implementation of Radiant's internal reactivity\n * runtime contract.\n *\n * This is the only core module that imports `@ecopages/signals` directly. The\n * rest of core consumes the narrower runtime contract through the adapter and\n * runtime holder modules.\n */\nexport const signalsReactiveRuntime: ReactiveRuntime = {\n\ttrackDependency(node) {\n\t\ttrackDependency(asSignalsDependencyNode(node));\n\t},\n\tcreateComputed<T>(read: () => T): ReactiveComputed<T> {\n\t\treturn new SignalsComputed(read);\n\t},\n\tcreateWatcher(notify: () => void): ReactiveWatcher {\n\t\tconst watcher = new subtle.Watcher(notify);\n\n\t\treturn {\n\t\t\twatch(signal) {\n\t\t\t\twatcher.watch(asSignalsComputed(signal));\n\t\t\t},\n\t\t\tunwatch(signal) {\n\t\t\t\twatcher.unwatch(asSignalsComputed(signal));\n\t\t\t},\n\t\t};\n\t},\n\tcreateState<T>(initial: T): ReactiveState<T> {\n\t\treturn signalsState(initial) as unknown as ReactiveState<T>;\n\t},\n};\n",
11
+ "import type { ReactiveRuntime } from './reactivity-contract';\nimport { signalsReactiveRuntime } from './reactivity-signals';\n\nlet activeReactiveRuntime: ReactiveRuntime = signalsReactiveRuntime;\n\n/**\n * Returns the currently active internal reactivity runtime.\n *\n * The current implementation still defaults to the Signals-backed runtime, so\n * importing this module preserves today's behavior. A stricter optional-runtime\n * architecture would move that default installation into an explicit bootstrap\n * step instead of this eager default.\n */\nexport function getReactiveRuntime(): ReactiveRuntime {\n\treturn activeReactiveRuntime;\n}\n\n/**\n * Replaces the active internal reactivity runtime used by Radiant core.\n *\n * This is an internal seam for alternate runtime experiments and tests. It does\n * not yet make Signals optional at module-load time because this module still\n * imports the default Signals-backed runtime eagerly.\n */\nexport function setReactiveRuntime(runtime: ReactiveRuntime): void {\n\tactiveReactiveRuntime = runtime;\n}\n",
12
+ "import { getReactiveRuntime } from './reactivity-runtime';\nexport type {\n\tReactiveComputed,\n\tReactiveDependencyNode,\n\tReactiveRuntime,\n\tReactiveSubscriber,\n\tReactiveWatcher,\n} from './reactivity-contract';\nexport { setReactiveRuntime } from './reactivity-runtime';\n\n/** Tracks one dependency-node read against the active internal reactivity runtime. */\nexport function trackReactiveDependency(node: import('./reactivity-contract').ReactiveDependencyNode): void {\n\tgetReactiveRuntime().trackDependency(node);\n}\n\n/** Creates a computed value using the currently selected internal reactivity runtime. */\nexport function createReactiveComputed<T>(read: () => T): import('./reactivity-contract').ReactiveComputed<T> {\n\treturn getReactiveRuntime().createComputed(read);\n}\n\n/** Creates a watcher using the currently selected internal reactivity runtime. */\nexport function createReactiveWatcher(notify: () => void): import('./reactivity-contract').ReactiveWatcher {\n\treturn getReactiveRuntime().createWatcher(notify);\n}\n",
13
+ "export type RenderSchedulerOptions = {\n\tcanFlush: () => boolean;\n\tcommit: () => void;\n};\n\n/**\n * Coalesces microtask-scheduled render commits for reactive hosts.\n */\nexport class RenderScheduler {\n\tprivate needsRender = false;\n\tprivate isRendering = false;\n\tprivate isRenderScheduled = false;\n\n\tconstructor(private readonly options: RenderSchedulerOptions) {}\n\n\tpublic get rendering(): boolean {\n\t\treturn this.isRendering;\n\t}\n\n\tpublic get pending(): boolean {\n\t\treturn this.needsRender;\n\t}\n\n\tpublic markPending(): void {\n\t\tthis.needsRender = true;\n\t}\n\n\tpublic clearPending(): void {\n\t\tthis.needsRender = false;\n\t}\n\n\tpublic requestUpdate(): void {\n\t\tthis.needsRender = true;\n\n\t\tif (this.isRenderScheduled) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isRenderScheduled = true;\n\n\t\tqueueMicrotask(() => {\n\t\t\tthis.isRenderScheduled = false;\n\n\t\t\tif (!this.needsRender) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.flush();\n\t\t});\n\t}\n\n\tpublic flush(): void {\n\t\tif (!this.options.canFlush()) {\n\t\t\treturn;\n\t\t}\n\n\t\twhile (this.needsRender && this.options.canFlush()) {\n\t\t\tthis.needsRender = false;\n\t\t\tthis.runCommit();\n\t\t}\n\t}\n\n\tpublic runExclusive<T>(work: () => T): T {\n\t\tthis.isRendering = true;\n\n\t\ttry {\n\t\t\treturn work();\n\t\t} finally {\n\t\t\tthis.isRendering = false;\n\t\t}\n\t}\n\n\tprivate runCommit(): void {\n\t\tthis.isRendering = true;\n\n\t\ttry {\n\t\t\tthis.options.commit();\n\t\t} finally {\n\t\t\tthis.isRendering = false;\n\t\t}\n\t}\n}\n",
14
+ "import {\n\tcreateSubscribableJsxValue,\n\ttype JsxBindingSourceValue,\n\ttype SubscribableJsxValueWithAccess,\n} from '@ecopages/jsx';\nimport type { ReactiveState } from './reactivity-contract';\n\n/**\n * Adapts a host member {@link ReactiveState} into the jsx binding shape.\n *\n * Kept in a dedicated module so `reactive-host.ts` stays free of direct\n * `@ecopages/jsx` imports while bindings still expose `getValue`, `subscribe`,\n * and `map` for derived child updates.\n */\nexport function adaptReactiveStateToJsxBinding<Value extends JsxBindingSourceValue>(\n\tstate: ReactiveState<Value>,\n): SubscribableJsxValueWithAccess<Value> {\n\treturn createSubscribableJsxValue({\n\t\tgetValue: () => state.get(),\n\t\tsubscribe: (notify) => state.subscribe(notify),\n\t});\n}\n",
15
+ "import type { JsxBindingSourceValue, SubscribableJsxValueWithAccess } from '@ecopages/jsx';\nimport { adaptReactiveStateToJsxBinding } from './reactive-binding-adapter';\nimport { getReactiveRuntime } from './reactivity-runtime';\nimport type { ReactiveState } from './reactivity-contract';\nimport type {\n\tReactiveAccessorDefinition,\n\tReactiveBindingOption,\n\tReactiveBindingValue,\n\tReactiveBindings,\n\tReactiveFieldOptions,\n} from './reactive-prop-core';\n\ntype StringPropertyKey<Value> = Extract<keyof Value, string>;\n\n/**\n * Shared reactive-host contract consumed by decorators and host adapters.\n *\n * `RadiantElement` and `RadiantController` both implement this surface so the\n * decorator layer can define fields, bindings, and context reactions without\n * depending on a specific host class.\n */\nexport interface ReactiveHostLike<Bindings extends object = {}> {\n\treadonly bindings: ReactiveBindings<Bindings>;\n\treadonly $: ReactiveBindings<Bindings>;\n\tbind<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValueWithAccess<ReactiveBindingValue<Bindings, Property>>;\n\tgetReactiveBinding<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValueWithAccess<ReactiveBindingValue<Bindings, Property>>;\n\tgetReactiveMember<T = unknown>(propertyName: string): ReactiveState<T> | undefined;\n\tcreateReactiveField<T>(propertyName: string, initialValue: T, options?: ReactiveFieldOptions): void;\n\tcreateReactiveMember<T>(propertyName: string, initialValue: T): ReactiveState<T>;\n\tregisterReactiveMember<T>(propertyName: string, signal: ReactiveState<T>): void;\n\tdefineReactiveBinding(property: string, bind?: ReactiveBindingOption): void;\n\tnotifyUpdate(changedProperty: string, oldValue: unknown, value: unknown): void;\n\tregisterCleanupCallback(callback: () => void): void;\n\tregisterConnectedCallback(callback: () => void): void;\n\tregisterUpdateCallback(property: string, update: () => void): () => void;\n}\n\n/**\n * Shared reactivity engine used by both `RadiantElement` and\n * `RadiantController`.\n *\n * Every reactive host member owns a single signals-backed `ReactiveState`\n * (a `State` for fields/props/attributes, or a user `signal()` for the signal\n * decorator). The jsx binding, `onUpdated` callbacks, and `ReactiveComputed`\n * tracking all read that one state directly, so there is no parallel\n * notification bus or dependency shim.\n *\n * Host-specific concerns such as attribute reflection, render lifecycles, and\n * custom-element APIs stay in the outer host classes.\n */\nexport class ReactiveHost<Host extends object, Bindings extends object = {}> {\n\tpublic readonly bindings: ReactiveBindings<Bindings>;\n\tpublic readonly $: ReactiveBindings<Bindings>;\n\n\tprivate reactiveMembers = new Map<string, ReactiveState<unknown>>();\n\tprivate jsxBindings = new Map<string, SubscribableJsxValueWithAccess<JsxBindingSourceValue>>();\n\t/** `onUpdated` callbacks keyed by property; values are signal unsubscribe disposers when subscribed. */\n\tprivate updateCallbacks = new Map<string, Map<() => void, (() => void) | undefined>>();\n\tprivate onConnectedCallbacks: (() => void)[] = [];\n\tprivate onDisconnectedCallback: (() => void)[] = [];\n\n\tconstructor(\n\t\tprivate readonly host: Host,\n\t\tprivate readonly access: ReactiveHostAccess<Host>,\n\t\tprivate readonly shouldAutoBind: () => boolean,\n\t) {\n\t\tconst bindingNamespace = this.createReactiveBindingNamespace();\n\t\tthis.bindings = bindingNamespace;\n\t\tthis.$ = bindingNamespace;\n\t}\n\n\t/**\n\t * Runs all connection callbacks registered by decorators or host adapters.\n\t */\n\tpublic connectHost(): void {\n\t\tfor (const callback of this.onConnectedCallbacks) {\n\t\t\tcallback();\n\t\t}\n\t}\n\n\t/**\n\t * Runs all cleanup callbacks registered for host disconnect.\n\t */\n\tpublic disconnectHost(): void {\n\t\tfor (const cleanup of this.onDisconnectedCallback) {\n\t\t\tcleanup();\n\t\t}\n\t}\n\n\t/**\n\t * Registers a callback that should run on host disconnect.\n\t */\n\tpublic registerCleanupCallback(callback: () => void): void {\n\t\tthis.onDisconnectedCallback.push(callback);\n\t}\n\n\t/**\n\t * Registers a callback that should run whenever the host connects.\n\t */\n\tpublic registerConnectedCallback(callback: () => void): void {\n\t\tthis.onConnectedCallbacks.push(callback);\n\t}\n\n\t/**\n\t * Fires the `onUpdated` callbacks registered for a member.\n\t *\n\t * This is the only remaining use of the update-callback bus: an initial\n\t * emit for members that want one (currently `@prop`). Change notifications\n\t * flow through the member `State`'s own subscription, not through here.\n\t */\n\tpublic notifyUpdate(changedProperty: string, _oldValue: unknown, _value: unknown): void {\n\t\tconst callbacks = this.updateCallbacks.get(changedProperty);\n\n\t\tif (!callbacks) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const update of [...callbacks.keys()]) {\n\t\t\tupdate();\n\t\t}\n\t}\n\n\t/**\n\t * Returns the member state registered under `propertyName`, if any.\n\t */\n\tpublic getReactiveMember<T = unknown>(propertyName: string): ReactiveState<T> | undefined {\n\t\treturn this.reactiveMembers.get(propertyName) as ReactiveState<T> | undefined;\n\t}\n\n\t/**\n\t * Creates a new reactive member state and registers it under `propertyName`.\n\t */\n\tpublic createReactiveMember<T>(propertyName: string, initialValue: T): ReactiveState<T> {\n\t\tconst signal = getReactiveRuntime().createState(initialValue) as ReactiveState<T>;\n\t\tthis.registerMember(propertyName, signal as ReactiveState<unknown>);\n\t\treturn signal;\n\t}\n\n\t/**\n\t * Registers an externally-owned reactive member state (used by the\n\t * `signal()` decorator, whose state is a user-provided signals `Signal`).\n\t */\n\tpublic registerReactiveMember<T>(propertyName: string, signal: ReactiveState<T>): void {\n\t\tthis.registerMember(propertyName, signal as ReactiveState<unknown>);\n\t}\n\n\t/**\n\t * Stores the member state and subscribes any `onUpdated` callbacks that were\n\t * registered before the member existed (decorator initializer ordering).\n\t */\n\tprivate registerMember(propertyName: string, signal: ReactiveState<unknown>): void {\n\t\tthis.reactiveMembers.set(propertyName, signal);\n\t\tthis.jsxBindings.delete(propertyName);\n\n\t\tconst callbacks = this.updateCallbacks.get(propertyName);\n\n\t\tif (callbacks) {\n\t\t\tfor (const update of callbacks.keys()) {\n\t\t\t\tthis.subscribeCallback(propertyName, update);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Subscribes an `onUpdated` callback to the member state if the member is\n\t * already registered and not yet subscribed.\n\t */\n\tprivate subscribeCallback(propertyName: string, update: () => void): void {\n\t\tconst callbacks = this.updateCallbacks.get(propertyName);\n\t\tconst signal = this.reactiveMembers.get(propertyName);\n\n\t\tif (!callbacks || !signal || callbacks.get(update)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst unsubscribe = signal.subscribe(() => update());\n\t\tcallbacks.set(update, unsubscribe);\n\t}\n\n\t/**\n\t * Returns the jsx binding for a named reactive member.\n\t *\n\t * The binding is adapted from the member `State` once and cached so derived\n\t * transforms (`map`, member access) share a stable source identity.\n\t */\n\tpublic getReactiveBinding<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValueWithAccess<ReactiveBindingValue<Bindings, Property>> {\n\t\tconst key = property as string;\n\t\tconst cached = this.jsxBindings.get(key);\n\n\t\tif (cached) {\n\t\t\treturn cached as SubscribableJsxValueWithAccess<ReactiveBindingValue<Bindings, Property>>;\n\t\t}\n\n\t\tconst signal = this.reactiveMembers.get(key);\n\n\t\tif (!signal) {\n\t\t\tthrow new Error(`No reactive binding registered for \"${String(property)}\".`);\n\t\t}\n\n\t\tconst binding = adaptReactiveStateToJsxBinding(\n\t\t\tsignal as ReactiveState<ReactiveBindingValue<Bindings, Property>>,\n\t\t);\n\n\t\tthis.jsxBindings.set(key, binding);\n\t\treturn binding;\n\t}\n\n\t/**\n\t * Registers an `onUpdated`-style callback for a named reactive member.\n\t *\n\t * Change notifications flow through the member `State`'s own subscription\n\t * (D1). The callback is also kept in the update-callback bus so an initial\n\t * emit (currently `@prop`) can still reach it once after definition.\n\t */\n\tpublic registerUpdateCallback(property: string, update: () => void): () => void {\n\t\tlet callbacks = this.updateCallbacks.get(property);\n\n\t\tif (!callbacks) {\n\t\t\tcallbacks = new Map();\n\t\t\tthis.updateCallbacks.set(property, callbacks);\n\t\t}\n\n\t\tcallbacks.set(update, undefined);\n\t\tthis.subscribeCallback(property, update);\n\n\t\treturn () => {\n\t\t\tconst perProperty = this.updateCallbacks.get(property);\n\t\t\tperProperty?.get(update)?.();\n\t\t\tperProperty?.delete(update);\n\n\t\t\tif (perProperty && perProperty.size === 0) {\n\t\t\t\tthis.updateCallbacks.delete(property);\n\t\t\t}\n\t\t};\n\t}\n\n\t/**\n\t * Defines a stable binding companion property such as `$count` on the host or\n\t * its chosen binding target.\n\t */\n\tpublic defineReactiveBinding(property: string, bind: ReactiveBindingOption = true): void {\n\t\tconst bindingPropertyName = typeof bind === 'string' ? bind : bind ? `$${property}` : undefined;\n\t\tconst bindingTarget = this.access.getBindingTarget?.(this.host) ?? this.host;\n\n\t\tif (!bindingPropertyName || this.access.hasProperty(this.host, bindingPropertyName)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.access.defineProperty(bindingTarget, bindingPropertyName, {\n\t\t\tget: () => this.getReactiveBinding(property as StringPropertyKey<Bindings>),\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t});\n\t}\n\n\t/**\n\t * Defines a reactive getter/setter pair on the host backed by a member\n\t * `State`, and wires it into the jsx binding namespace.\n\t */\n\tpublic defineReactiveAccessor<T>(propertyName: string, options: ReactiveAccessorDefinition<T>): void {\n\t\tconst bind = options.bind ?? this.shouldAutoBind();\n\n\t\tthis.defineReactiveBinding(propertyName, bind);\n\n\t\tthis.access.defineProperty(this.host, propertyName, {\n\t\t\tget: () => options.signal.get(),\n\t\t\tset: (newValue: T) => {\n\t\t\t\toptions.signal.set(newValue);\n\t\t\t\toptions.onSet?.(newValue);\n\t\t\t},\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t});\n\t}\n\n\t/**\n\t * Defines a controller- or element-local reactive field with optional JSX\n\t * binding exposure.\n\t */\n\tpublic createReactiveField<T>(propertyName: string, initialValue: T, options: ReactiveFieldOptions = {}): void {\n\t\tconst existing = this.reactiveMembers.get(propertyName) as ReactiveState<T> | undefined;\n\t\tconst signal = existing ?? this.createReactiveMember(propertyName, initialValue);\n\n\t\tif (existing && initialValue !== undefined) {\n\t\t\tsignal.set(initialValue);\n\t\t}\n\n\t\tthis.defineReactiveAccessor(propertyName, { bind: options.bind, signal });\n\n\t\tif (!options.suppressInitialNotify) {\n\t\t\tthis.notifyUpdate(propertyName, undefined, signal.get());\n\t\t}\n\t}\n\n\tprivate createReactiveBindingNamespace(): ReactiveBindings<Bindings> {\n\t\treturn new Proxy(Object.create(null) as ReactiveBindings<Bindings>, {\n\t\t\tget: (_target, property) => {\n\t\t\t\tif (typeof property !== 'string') {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\treturn this.getReactiveBinding(property as StringPropertyKey<Bindings>);\n\t\t\t},\n\t\t}) as ReactiveBindings<Bindings>;\n\t}\n}\n\ntype ReactiveHostAccess<Host extends object> = {\n\tdefineProperty(target: object, property: string, descriptor: PropertyDescriptor): void;\n\tgetBindingTarget?(host: Host): object;\n\thasProperty(host: Host, property: string): boolean;\n\treadProperty(host: Host, property: string): unknown;\n};\n",
16
+ "import { render as renderJsx, type JsxRenderable, type SubscribableJsxValueWithAccess } from '@ecopages/jsx';\nimport { createReactiveComputed, createReactiveWatcher, type ReactiveComputed } from './reactivity-adapter';\nimport type { SsrSerializableContextProvider } from '../context/context-provider';\nimport type { UnknownContext } from '../context/types';\nimport { ensureLegacyHostReady } from '../decorators/legacy/host-readiness';\nimport { ReactiveHost, type ReactiveHostLike } from './reactive-host';\nimport type { ReactiveState } from './reactivity-contract';\nimport type {\n\tReactiveBindingOption,\n\tReactivePropertyOptions,\n\tReactiveBindingValue,\n\tReactiveBindings,\n\tReactiveFieldOptions,\n} from './reactive-prop-core';\nimport { HostSsrRegistry } from './host-ssr-registry';\nimport type { SsrSerializableHydrationBinding } from './ssr-hydration-binding';\nimport { RenderScheduler } from './render-scheduler';\nimport { defaultValueForType } from '../utils/attribute-utils';\nimport { validateReactivePropertyDefault } from './reactive-prop-core';\n\ntype StringPropertyKey<Value> = Extract<keyof Value, string>;\n\n/**\n * Attaches Radiant reactivity to an existing DOM element without defining a\n * custom element.\n *\n * `RadiantController` is the controller-host counterpart to `RadiantElement`.\n * It can enhance authored DOM, or it can take over the host's inner DOM by\n * overriding `render()`.\n *\n * When used with the controller registry, the attached host is typically an\n * element carrying `data-controller=\"...\"`.\n *\n * @typeParam Bindings - Explicit internal bindable shape. Include only the\n * reactive keys that JSX bindings should accept.\n */\nexport class RadiantController<Bindings extends object = {}> implements ReactiveHostLike<Bindings> {\n\tpublic readonly host: Element;\n\tpublic readonly element: Element;\n\tpublic readonly bindings: ReactiveBindings<Bindings>;\n\tpublic readonly $: ReactiveBindings<Bindings>;\n\n\tprivate readonly reactiveHost: ReactiveHost<this, Bindings>;\n\tprivate connected = false;\n\tprivate readonly renderScheduler: RenderScheduler;\n\tprivate isSsrLifecycle = false;\n\tprivate readonly hostSsrRegistry = new HostSsrRegistry();\n\tprivate renderSignal?: ReactiveComputed<JsxRenderable>;\n\tprivate readonly renderWatcher = createReactiveWatcher(() => {\n\t\tthis.requestUpdate();\n\t});\n\n\tconstructor(host: Element) {\n\t\tthis.host = host;\n\t\tthis.element = host;\n\t\tthis.reactiveHost = new ReactiveHost<this, Bindings>(\n\t\t\tthis,\n\t\t\t{\n\t\t\t\tdefineProperty: (target, property, descriptor) => Object.defineProperty(target, property, descriptor),\n\t\t\t\thasProperty: (target, property) => property in target,\n\t\t\t\treadProperty: (target, property) => (target as Record<string, unknown>)[property],\n\t\t\t},\n\t\t\t() => this.shouldAutoBindReactiveMembers(),\n\t\t);\n\t\tthis.bindings = this.reactiveHost.bindings;\n\t\tthis.$ = this.reactiveHost.$;\n\t\tthis.renderScheduler = new RenderScheduler({\n\t\t\tcanFlush: () => this.connected && !this.renderScheduler.rendering,\n\t\t\tcommit: () => {\n\t\t\t\tconst renderTarget = this.getRenderTarget();\n\n\t\t\t\tif (!renderTarget) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\trenderJsx(this.resolveTrackedRenderOutput(), renderTarget);\n\t\t\t},\n\t\t});\n\t\tensureLegacyHostReady(this, 'construct');\n\t}\n\n\t/**\n\t * Connects the controller to its host and starts reactive subscriptions.\n\t *\n\t * If the controller owns a render lifecycle by overriding `render()`, the\n\t * first update runs immediately after connection.\n\t */\n\tpublic connect(): void {\n\t\tensureLegacyHostReady(this, 'connect');\n\t\tthis.connected = true;\n\t\tthis.reactiveHost.connectHost();\n\n\t\tif (this.shouldRunRenderLifecycle()) {\n\t\t\tthis.update();\n\t\t}\n\t}\n\n\t/**\n\t * Runs controller lifecycle work in SSR mode so `connect()` skips the client\n\t * render/update path even when subclasses override it.\n\t */\n\tpublic runWithSsrLifecycle<T>(work: () => T): T {\n\t\tthis.isSsrLifecycle = true;\n\n\t\ttry {\n\t\t\treturn work();\n\t\t} finally {\n\t\t\tthis.isSsrLifecycle = false;\n\t\t}\n\t}\n\n\t/**\n\t * Disconnects the controller from its host and tears down reactive work.\n\t */\n\tpublic disconnect(): void {\n\t\tthis.connected = false;\n\t\tthis.disconnectRenderWatcher();\n\t\tthis.reactiveHost.disconnectHost();\n\t}\n\n\tpublic get isConnected(): boolean {\n\t\treturn this.connected;\n\t}\n\n\t/**\n\t * Returns the JSX tree rendered into the attached host.\n\t *\n\t * The base implementation renders nothing. Override this method when the\n\t * controller should own the host's inner DOM instead of only enhancing\n\t * authored markup.\n\t */\n\tpublic render(): JsxRenderable {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Schedules a render pass for render-owning controllers.\n\t *\n\t * Multiple calls in the same microtask are coalesced into a single update.\n\t */\n\tpublic requestUpdate(): void {\n\t\tif (!this.shouldRunRenderLifecycle()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.renderScheduler.requestUpdate();\n\t}\n\n\t/**\n\t * Flushes the current render output into the attached host element.\n\t *\n\t * This is a no-op unless the controller overrides `render()`.\n\t */\n\tpublic update(): void {\n\t\tif (!this.shouldRunRenderLifecycle()) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.getRenderTarget()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.renderScheduler.markPending();\n\t\tthis.renderScheduler.flush();\n\t}\n\n\t/**\n\t * Returns a subscribable JSX binding for a selected reactive member.\n\t */\n\tpublic bind<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValueWithAccess<ReactiveBindingValue<Bindings, Property>> {\n\t\treturn this.reactiveHost.getReactiveBinding(property);\n\t}\n\n\t/**\n\t * Returns the cached binding object for a selected reactive member.\n\t */\n\tpublic getReactiveBinding<Property extends StringPropertyKey<Bindings>>(\n\t\tproperty: Property,\n\t): SubscribableJsxValueWithAccess<ReactiveBindingValue<Bindings, Property>> {\n\t\treturn this.reactiveHost.getReactiveBinding(property);\n\t}\n\n\t/**\n\t * Defines a reactive field directly on the controller instance.\n\t */\n\tpublic createReactiveField<T>(propertyName: string, initialValue: T, options: ReactiveFieldOptions = {}): void {\n\t\tthis.reactiveHost.createReactiveField(propertyName, initialValue, options);\n\t}\n\n\t/**\n\t * Defines a controller prop backed by the attached host element's property\n\t * channel instead of attribute serialization.\n\t *\n\t * This gives controller-based integrations the same reactive field surface as\n\t * `@prop(...)` on `RadiantElement`, while allowing external code to assign\n\t * structured values such as arrays or objects directly on `controller.host`.\n\t */\n\tpublic createReactiveProp<T = unknown>(propertyName: string, options: ReactivePropertyOptions<T>): void {\n\t\tconst { type, defaultValue, bind } = options;\n\n\t\tvalidateReactivePropertyDefault(type, defaultValue);\n\n\t\tconst hostPropertyBridge = new ControllerHostPropertyBridge<T>(this.host, this, propertyName);\n\t\tconst initialHostValue = hostPropertyBridge.getInitialValue();\n\t\tconst initialValue = (initialHostValue ?? defaultValue ?? defaultValueForType(type)) as T;\n\n\t\tconst signal = this.reactiveHost.createReactiveMember(propertyName, initialValue);\n\n\t\tthis.reactiveHost.defineReactiveAccessor(propertyName, { bind, signal });\n\n\t\thostPropertyBridge.install();\n\n\t\tthis.registerCleanupCallback(() => {\n\t\t\thostPropertyBridge.restore();\n\t\t});\n\t}\n\n\t/**\n\t * Defines a JSX binding companion such as `$count` for a reactive member.\n\t */\n\tpublic defineReactiveBinding(property: string, bind: ReactiveBindingOption = true): void {\n\t\tthis.reactiveHost.defineReactiveBinding(property, bind);\n\t}\n\n\tpublic notifyUpdate(changedProperty: string, oldValue: unknown, value: unknown): void {\n\t\tthis.reactiveHost.notifyUpdate(changedProperty, oldValue, value);\n\t}\n\n\tpublic registerUpdateCallback(property: string, update: () => void): () => void {\n\t\treturn this.reactiveHost.registerUpdateCallback(property, update);\n\t}\n\n\t/**\n\t * Notifies context decorators that a provider or consumer for `contextName`\n\t * finished connecting on this controller host.\n\t *\n\t * Controllers currently rely on the shared client-side context event flow, so\n\t * the base implementation does not need extra bookkeeping here.\n\t */\n\tpublic connectedContextCallback(_contextName: UnknownContext): void {}\n\n\t/**\n\t * Registers a decorated context provider on the controller host.\n\t *\n\t * Controller providers participate in the same client-side event-based context\n\t * flow as `RadiantElement` providers. During SSR, the registered providers are\n\t * also exposed to descendant consumers and hydration payload collection.\n\t */\n\tpublic registerContextProvider(name: string, provider: SsrSerializableContextProvider): void {\n\t\tthis.hostSsrRegistry.registerContextProvider(name, provider);\n\t}\n\n\t/**\n\t * Registers a keyed SSR hydration binding for the controller host.\n\t */\n\tpublic registerHydrationBinding(name: string, binding: SsrSerializableHydrationBinding): void {\n\t\tthis.hostSsrRegistry.registerHydrationBinding(name, binding);\n\t}\n\n\t/**\n\t * Returns SSR-visible context providers registered on this controller.\n\t */\n\tpublic getSsrContextProviders(): SsrSerializableContextProvider[] {\n\t\treturn this.hostSsrRegistry.getContextProviders();\n\t}\n\n\t/**\n\t * Returns keyed hydration payload producers registered on this controller.\n\t */\n\tpublic getSsrHydrationBindings(): SsrSerializableHydrationBinding[] {\n\t\treturn this.hostSsrRegistry.getHydrationBindings();\n\t}\n\n\tpublic registerCleanupCallback(callback: () => void): void {\n\t\tthis.reactiveHost.registerCleanupCallback(callback);\n\t}\n\n\tpublic registerConnectedCallback(callback: () => void): void {\n\t\tthis.reactiveHost.registerConnectedCallback(callback);\n\t}\n\n\tpublic createReactiveMember<T>(propertyName: string, initialValue: T): ReactiveState<T> {\n\t\treturn this.reactiveHost.createReactiveMember(propertyName, initialValue);\n\t}\n\n\tpublic registerReactiveMember<T>(propertyName: string, signal: ReactiveState<T>): void {\n\t\tthis.reactiveHost.registerReactiveMember(propertyName, signal);\n\t}\n\n\tpublic getReactiveMember<T = unknown>(propertyName: string): ReactiveState<T> | undefined {\n\t\treturn this.reactiveHost.getReactiveMember(propertyName);\n\t}\n\n\tpublic addEventListener(\n\t\ttype: string,\n\t\tlistener: EventListenerOrEventListenerObject,\n\t\toptions?: boolean | AddEventListenerOptions,\n\t): void {\n\t\tthis.host.addEventListener(type, listener, options);\n\t}\n\n\tpublic removeEventListener(\n\t\ttype: string,\n\t\tlistener: EventListenerOrEventListenerObject,\n\t\toptions?: boolean | EventListenerOptions,\n\t): void {\n\t\tthis.host.removeEventListener(type, listener, options);\n\t}\n\n\tpublic dispatchEvent(event: Event): boolean {\n\t\treturn this.host.dispatchEvent(event);\n\t}\n\n\t/**\n\t * Finds one or more elements inside the attached host by `data-ref`.\n\t *\n\t * Prefer `@query(...)` for stable, decorator-backed refs and use `getRef(...)`\n\t * for one-off lookups.\n\t */\n\tpublic getRef<T extends Element = Element>(ref: string, all: true): T[];\n\tpublic getRef<T extends Element = Element>(ref: string, all?: false): T | null;\n\tpublic getRef<T extends Element = Element>(ref: string, all = false): T | T[] | null {\n\t\tconst selector = `[data-ref=\"${ref}\"]`;\n\n\t\tif (all) {\n\t\t\treturn Array.from(this.host.querySelectorAll(selector)) as T[];\n\t\t}\n\n\t\treturn (this.host.querySelector(selector) as T) ?? null;\n\t}\n\n\tprotected shouldAutoBindReactiveMembers(): boolean {\n\t\treturn true;\n\t}\n\n\tprotected shouldRunRenderLifecycle(): boolean {\n\t\treturn !this.isSsrLifecycle && this.render !== RadiantController.prototype.render;\n\t}\n\n\tprivate getRenderTarget(): HTMLElement | null {\n\t\treturn this.host instanceof HTMLElement ? this.host : null;\n\t}\n\n\tprivate disconnectRenderWatcher(): void {\n\t\tif (!this.renderSignal) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.renderWatcher.unwatch(this.renderSignal);\n\t\tthis.renderSignal = undefined;\n\t}\n\n\tprivate resolveTrackedRenderOutput(): JsxRenderable {\n\t\tconst nextRenderSignal = createReactiveComputed(() => this.render());\n\t\tconst output = nextRenderSignal.get();\n\n\t\tif (!this.connected) {\n\t\t\treturn output;\n\t\t}\n\n\t\tif (this.renderSignal) {\n\t\t\tthis.renderWatcher.unwatch(this.renderSignal);\n\t\t}\n\n\t\tthis.renderSignal = nextRenderSignal;\n\t\tthis.renderWatcher.watch(nextRenderSignal);\n\t\treturn output;\n\t}\n}\n\nclass ControllerHostPropertyBridge<T> {\n\tprivate readonly ownDescriptor: PropertyDescriptor | undefined;\n\n\tconstructor(\n\t\tprivate readonly host: Element,\n\t\tprivate readonly controller: object,\n\t\tprivate readonly propertyName: string,\n\t) {\n\t\tthis.ownDescriptor = Object.getOwnPropertyDescriptor(this.host, this.propertyName);\n\t}\n\n\tpublic getInitialValue(): T | undefined {\n\t\treturn Reflect.get(this.host, this.propertyName) as T | undefined;\n\t}\n\n\tpublic install(): void {\n\t\tObject.defineProperty(this.host, this.propertyName, {\n\t\t\tget: () => Reflect.get(this.controller, this.propertyName),\n\t\t\tset: (newValue: T) => {\n\t\t\t\tReflect.set(this.controller, this.propertyName, newValue);\n\t\t\t},\n\t\t\tenumerable: this.ownDescriptor?.enumerable ?? true,\n\t\t\tconfigurable: true,\n\t\t});\n\t}\n\n\tpublic restore(): void {\n\t\tconst finalValue = Reflect.get(this.controller, this.propertyName);\n\n\t\tif (this.ownDescriptor) {\n\t\t\tObject.defineProperty(this.host, this.propertyName, this.ownDescriptor);\n\n\t\t\tif ('value' in this.ownDescriptor && this.ownDescriptor.writable) {\n\t\t\t\tReflect.set(this.host, this.propertyName, finalValue);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tReflect.deleteProperty(this.host, this.propertyName);\n\n\t\ttry {\n\t\t\tReflect.set(this.host, this.propertyName, finalValue);\n\t\t} catch {\n\t\t\tObject.defineProperty(this.host, this.propertyName, {\n\t\t\t\tvalue: finalValue,\n\t\t\t\twritable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t});\n\t\t}\n\t}\n}\n"
17
+ ],
18
+ "mappings": "q0BAMO,MAAM,CAAgB,CACX,iBAAmB,IAAI,IACvB,kBAAoB,IAAI,IAElC,uBAAuB,CAAC,EAAc,EAAgD,CAC5F,KAAK,iBAAiB,IAAI,EAAM,CAAQ,EACxC,KAAK,kBAAkB,IAAI,EAAM,CAAQ,EAGnC,wBAAwB,CAAC,EAAc,EAAgD,CAC7F,KAAK,kBAAkB,IAAI,EAAM,CAAO,EAGlC,mBAAmB,EAAqC,CAC9D,MAAO,CAAC,GAAG,KAAK,iBAAiB,OAAO,CAAC,EAGnC,oBAAoB,EAAsC,CAChE,MAAO,CAAC,GAAG,KAAK,kBAAkB,OAAO,CAAC,EAE5C,CClBA,IAAM,EAA+B,OAAO,IAAI,gDAAgD,EAC1F,EAAwC,OAAO,IAAI,yDAAyD,EAC5G,EAAiD,OAAO,IAC7D,kEACD,EAQO,SAAS,EAAmD,CAClE,EACA,EACO,CACP,EAAoB,EAAO,EAA8B,CAAW,EAU9D,SAAS,EAA2D,CAC1E,EACA,EACO,CACP,EAAoB,EAAO,EAAuC,CAAW,EASvE,SAAS,CAA+C,CAAC,EAAmB,CAClF,EAAsB,EAAU,CAA4B,EAUtD,SAAS,CAAuD,CACtE,EACA,EACO,CACP,IAAM,EAAS,EAEf,EACC,EACA,EACC,EAAO,KAAoD,IAAI,GAGjE,EAGD,SAAS,CAAqC,CAC7C,EACA,EACA,EACO,CACP,IAAM,EAAS,EACT,EAAkB,OAAO,UAAU,eAAe,KAAK,EAAQ,CAAG,EAAI,EAAO,GAAO,OAE1F,GAAI,MAAM,QAAQ,CAAe,EAAG,CACnC,EAAgB,KAAK,CAAW,EAChC,OAGD,OAAO,eAAe,EAAQ,EAAK,CAClC,MAAO,CAAC,CAAW,CACpB,CAAC,EAGF,SAAS,CAAuC,CAAC,EAAa,EAAmB,CAChF,EAAmB,EAAU,CAAC,IAAc,CAC3C,IAAM,EAAgB,EAA2C,GAGjE,GAAI,CAAC,MAAM,QAAQ,CAAY,EAC9B,OAGD,QAAW,KAAe,EACzB,EAAY,CAAQ,EAErB,EAGF,SAAS,CAAuE,CAC/E,EACA,EACA,EACO,CACP,QAAW,KAAa,EAAsB,CAAQ,EAAG,CACxD,IAAM,EAAgB,EAA2C,GAGjE,GAAI,CAAC,MAAM,QAAQ,CAAY,EAC9B,SAGD,QAAW,KAAe,EAAc,CACvC,GAAI,EAAqB,IAAI,CAAW,EACvC,SAGD,EAAY,EAAU,CAAK,EAC3B,EAAqB,IAAI,CAAW,IAKvC,SAAS,CAAuC,CAAC,EAAuB,CACvE,IAAM,EAAuB,CAAC,EAC1B,EAA2B,OAAO,eAAe,CAAQ,EAE7D,MAAO,GAAa,IAAc,OAAO,UACxC,EAAW,QAAQ,CAAS,EAC5B,EAAY,OAAO,eAAe,CAAS,EAG5C,OAAO,EAGR,SAAS,CAAoC,CAAC,EAAa,EAA0C,CACpG,QAAW,KAAa,EAAsB,CAAQ,EACrD,EAAM,CAAS,ECtIV,SAAS,CAAuC,CAAC,EAAS,EAAuC,CACvG,OAAQ,OACF,YACJ,EAA8B,CAAI,EAClC,UACI,UACJ,EAAsC,EAAM,SAAS,EACrD,UACI,MACJ,EAAsC,EAAM,KAAK,EACjD,OCRI,SAAS,CAA0B,CAAC,EAAkC,CAC5E,OAAQ,QACF,MACJ,MAAO,aACH,QACJ,MAAO,eACH,OACJ,MAAO,cACH,OACJ,MAAO,cACH,OACJ,MAAO,UAUH,SAAS,CAAyB,CAAC,EAAqC,CAC9E,OAAQ,OAAO,OACT,UACJ,MAAO,cACH,SACJ,MAAO,aACH,SACJ,MAAO,SAGT,GAAI,MAAM,QAAQ,CAAY,EAAG,MAAO,QACxC,GAAI,OAAO,UAAU,SAAS,KAAK,CAAY,IAAM,kBAAmB,MAAO,SASzE,SAAS,CAAmB,CAAC,EAAsC,CACzE,OAAQ,QACF,OACJ,MAAO,QACH,OACJ,MAAO,QACH,QACJ,MAAO,WAEP,OAAO,MASV,SAAS,CAAY,CAAC,EAAkB,CACvC,GAAI,CACH,OAAO,KAAK,MAAM,CAAK,EACtB,KAAM,CACP,MAAU,UAAU,qBAAqB,GAQ3C,IAAM,EAAsC,CAC3C,KAAK,CAAC,EAA0B,CAC/B,IAAM,EAAQ,EAAqB,CAAK,EACxC,GAAI,CAAC,MAAM,QAAQ,CAAK,EACvB,MAAU,UAAU,8CAA8C,OAAO,IAAQ,EAElF,OAAO,GAGR,OAAO,CAAC,EAAwB,CAC/B,MAAO,EAAE,IAAU,KAAO,OAAO,CAAK,EAAE,YAAY,IAAM,UAG3D,MAAM,CAAC,EAAuB,CAE7B,OADe,OAAO,EAAM,QAAQ,KAAM,EAAE,CAAC,GAI9C,MAAM,CAAC,EAAuB,CAC7B,IAAM,EAAS,KAAK,MAAM,CAAK,EAC/B,GAAI,IAAW,MAAQ,OAAO,IAAW,UAAY,MAAM,QAAQ,CAAM,EACxE,MAAU,UACT,0DAA0D,eAAmB,EAC5E,CACD,IACD,EAED,OAAO,GAGR,MAAM,CAAC,EAAuB,CAC7B,OAAO,EAET,EAQM,EAAsC,CAC3C,QAAS,EACT,MAAO,EACP,OAAQ,CACT,EAEA,SAAS,CAAS,CAAC,EAAgB,CAClC,OAAO,KAAK,UAAU,CAAK,EAG5B,SAAS,CAAW,CAAC,EAAgB,CACpC,MAAO,GAAG,IAUJ,SAAS,CAAkB,CAAC,EAAe,EAA6B,CAC9E,IAAM,EAAa,EAA2B,CAAI,EAClD,GAAI,CAAC,EAAY,MAAU,UAAU,mCAAmC,IAAO,EAC/E,OAAO,EAAQ,GAAa,CAAK,EAa3B,SAAS,CAAmB,CAAC,EAAgB,EAA6B,CAChF,IAAM,EAAa,EAA2B,CAAI,EAClD,GAAI,CAAC,EAAY,MAAU,UAAU,mCAAmC,IAAO,EAE/E,OADuB,EAAQ,IAAe,EAAQ,SAAW,GACnD,CAAK,EAQpB,SAAS,CAAS,CAAC,EAAkC,CACpD,OAAO,OAAO,IAAU,UAGzB,SAAS,CAAQ,CAAC,EAAiC,CAClD,OAAO,OAAO,IAAU,SAGzB,SAAS,CAAQ,CAAC,EAAiC,CAClD,OAAO,OAAO,IAAU,SAGzB,SAAS,EAAO,CAAC,EAAyC,CACzD,OAAO,MAAM,QAAQ,CAAK,EAG3B,SAAS,EAAQ,CAAC,EAAiC,CAClD,OAAO,OAAO,IAAU,UAAY,CAAC,MAAM,QAAQ,CAAK,GAAK,IAAU,KAMjE,SAAS,CAAa,CAAC,EAA6B,EAAgC,CAC1F,OAAQ,QACF,QACJ,OAAO,EAAU,CAAY,OACzB,OACJ,OAAO,EAAS,CAAY,OACxB,OACJ,OAAO,EAAS,CAAY,OACxB,MACJ,OAAO,GAAQ,CAAY,OACvB,OACJ,OAAO,GAAS,CAAY,UAE5B,MAAO,IAIH,IAAM,GAAkB,CAC9B,EACA,EACA,EACA,IACI,CACJ,GAAI,IAAS,QAAS,CACrB,IAAM,EAAiB,EAAO,aAAa,CAAY,EACvD,GAAI,IAAmB,KACtB,OAAO,EAGR,OAAO,IAAmB,GAAK,GAAO,EAAmB,EAAgB,CAAI,EAG9E,IAAM,EAAiB,EAAO,aAAa,CAAY,EACvD,OAAO,IAAmB,KACvB,EAAmB,EAAgB,CAAI,EACtC,GAAiB,EAAoB,CAAI,GC9KvC,SAAS,CAA+B,CAAC,EAA6B,EAA6B,CACzG,GAAI,IAAiB,QAAa,CAAC,EAAc,EAAM,CAAY,EAClE,MAAU,MAAM,qDAAqD,EAAK,MAAM,EAI3E,SAAS,EAAgC,CAC/C,EACA,EACA,EACA,EACsB,CACtB,MAAO,CACN,OACA,KAAM,EACN,eACA,UAAW,EACX,UAAW,CACV,cAAe,CAAC,IAAU,EAAmB,EAAO,CAAI,EACxD,YAAa,CAAC,IAAU,EAAoB,EAAO,CAAI,CACxD,CACD,EC9ED,mBACC,YACA,aACA,sBACA,2BAWD,SAAS,EAAuB,CAAC,EAAqD,CACrF,OAAO,EAGR,SAAS,CAAiB,CAAC,EAA6D,CACvF,OAAO,EAWD,IAAM,EAA0C,CACtD,eAAe,CAAC,EAAM,CACrB,GAAgB,GAAwB,CAAI,CAAC,GAE9C,cAAiB,CAAC,EAAoC,CACrD,OAAO,IAAI,GAAgB,CAAI,GAEhC,aAAa,CAAC,EAAqC,CAClD,IAAM,EAAU,IAAI,GAAO,QAAQ,CAAM,EAEzC,MAAO,CACN,KAAK,CAAC,EAAQ,CACb,EAAQ,MAAM,EAAkB,CAAM,CAAC,GAExC,OAAO,CAAC,EAAQ,CACf,EAAQ,QAAQ,EAAkB,CAAM,CAAC,EAE3C,GAED,WAAc,CAAC,EAA8B,CAC5C,OAAO,GAAa,CAAO,EAE7B,EClDA,IAAI,EAAyC,EAUtC,SAAS,CAAkB,EAAoB,CACrD,OAAO,EAUD,SAAS,EAAkB,CAAC,EAAgC,CAClE,EAAwB,ECdlB,SAAS,EAAuB,CAAC,EAAoE,CAC3G,EAAmB,EAAE,gBAAgB,CAAI,EAInC,SAAS,CAAyB,CAAC,EAAoE,CAC7G,OAAO,EAAmB,EAAE,eAAe,CAAI,EAIzC,SAAS,CAAqB,CAAC,EAAqE,CAC1G,OAAO,EAAmB,EAAE,cAAc,CAAM,ECd1C,MAAM,CAAgB,CAKC,QAJrB,YAAc,GACd,YAAc,GACd,kBAAoB,GAE5B,WAAW,CAAkB,EAAiC,CAAjC,kBAElB,UAAS,EAAY,CAC/B,OAAO,KAAK,eAGF,QAAO,EAAY,CAC7B,OAAO,KAAK,YAGN,WAAW,EAAS,CAC1B,KAAK,YAAc,GAGb,YAAY,EAAS,CAC3B,KAAK,YAAc,GAGb,aAAa,EAAS,CAG5B,GAFA,KAAK,YAAc,GAEf,KAAK,kBACR,OAGD,KAAK,kBAAoB,GAEzB,eAAe,IAAM,CAGpB,GAFA,KAAK,kBAAoB,GAErB,CAAC,KAAK,YACT,OAGD,KAAK,MAAM,EACX,EAGK,KAAK,EAAS,CACpB,GAAI,CAAC,KAAK,QAAQ,SAAS,EAC1B,OAGD,MAAO,KAAK,aAAe,KAAK,QAAQ,SAAS,EAChD,KAAK,YAAc,GACnB,KAAK,UAAU,EAIV,YAAe,CAAC,EAAkB,CACxC,KAAK,YAAc,GAEnB,GAAI,CACH,OAAO,EAAK,SACX,CACD,KAAK,YAAc,IAIb,SAAS,EAAS,CACzB,KAAK,YAAc,GAEnB,GAAI,CACH,KAAK,QAAQ,OAAO,SACnB,CACD,KAAK,YAAc,IAGtB,CCjFA,qCACC,uBAaM,SAAS,CAAmE,CAClF,EACwC,CACxC,OAAO,GAA2B,CACjC,SAAU,IAAM,EAAM,IAAI,EAC1B,UAAW,CAAC,IAAW,EAAM,UAAU,CAAM,CAC9C,CAAC,ECkCK,MAAM,CAAgE,CAY1D,KACA,OACA,eAbF,SACA,EAER,gBAAkB,IAAI,IACtB,YAAc,IAAI,IAElB,gBAAkB,IAAI,IACtB,qBAAuC,CAAC,EACxC,uBAAyC,CAAC,EAElD,WAAW,CACO,EACA,EACA,EAChB,CAHgB,YACA,cACA,sBAEjB,IAAM,EAAmB,KAAK,+BAA+B,EAC7D,KAAK,SAAW,EAChB,KAAK,EAAI,EAMH,WAAW,EAAS,CAC1B,QAAW,KAAY,KAAK,qBAC3B,EAAS,EAOJ,cAAc,EAAS,CAC7B,QAAW,KAAW,KAAK,uBAC1B,EAAQ,EAOH,uBAAuB,CAAC,EAA4B,CAC1D,KAAK,uBAAuB,KAAK,CAAQ,EAMnC,yBAAyB,CAAC,EAA4B,CAC5D,KAAK,qBAAqB,KAAK,CAAQ,EAUjC,YAAY,CAAC,EAAyB,EAAoB,EAAuB,CACvF,IAAM,EAAY,KAAK,gBAAgB,IAAI,CAAe,EAE1D,GAAI,CAAC,EACJ,OAGD,QAAW,IAAU,CAAC,GAAG,EAAU,KAAK,CAAC,EACxC,EAAO,EAOF,iBAA8B,CAAC,EAAoD,CACzF,OAAO,KAAK,gBAAgB,IAAI,CAAY,EAMtC,oBAAuB,CAAC,EAAsB,EAAmC,CACvF,IAAM,EAAS,EAAmB,EAAE,YAAY,CAAY,EAE5D,OADA,KAAK,eAAe,EAAc,CAAgC,EAC3D,EAOD,sBAAyB,CAAC,EAAsB,EAAgC,CACtF,KAAK,eAAe,EAAc,CAAgC,EAO3D,cAAc,CAAC,EAAsB,EAAsC,CAClF,KAAK,gBAAgB,IAAI,EAAc,CAAM,EAC7C,KAAK,YAAY,OAAO,CAAY,EAEpC,IAAM,EAAY,KAAK,gBAAgB,IAAI,CAAY,EAEvD,GAAI,EACH,QAAW,KAAU,EAAU,KAAK,EACnC,KAAK,kBAAkB,EAAc,CAAM,EAStC,iBAAiB,CAAC,EAAsB,EAA0B,CACzE,IAAM,EAAY,KAAK,gBAAgB,IAAI,CAAY,EACjD,EAAS,KAAK,gBAAgB,IAAI,CAAY,EAEpD,GAAI,CAAC,GAAa,CAAC,GAAU,EAAU,IAAI,CAAM,EAChD,OAGD,IAAM,EAAc,EAAO,UAAU,IAAM,EAAO,CAAC,EACnD,EAAU,IAAI,EAAQ,CAAW,EAS3B,kBAAgE,CACtE,EAC2E,CAC3E,IAAM,EAAM,EACN,EAAS,KAAK,YAAY,IAAI,CAAG,EAEvC,GAAI,EACH,OAAO,EAGR,IAAM,EAAS,KAAK,gBAAgB,IAAI,CAAG,EAE3C,GAAI,CAAC,EACJ,MAAU,MAAM,uCAAuC,OAAO,CAAQ,KAAK,EAG5E,IAAM,EAAU,EACf,CACD,EAGA,OADA,KAAK,YAAY,IAAI,EAAK,CAAO,EAC1B,EAUD,sBAAsB,CAAC,EAAkB,EAAgC,CAC/E,IAAI,EAAY,KAAK,gBAAgB,IAAI,CAAQ,EAEjD,GAAI,CAAC,EACJ,EAAY,IAAI,IAChB,KAAK,gBAAgB,IAAI,EAAU,CAAS,EAM7C,OAHA,EAAU,IAAI,EAAQ,MAAS,EAC/B,KAAK,kBAAkB,EAAU,CAAM,EAEhC,IAAM,CACZ,IAAM,EAAc,KAAK,gBAAgB,IAAI,CAAQ,EAIrD,GAHA,GAAa,IAAI,CAAM,IAAI,EAC3B,GAAa,OAAO,CAAM,EAEtB,GAAe,EAAY,OAAS,EACvC,KAAK,gBAAgB,OAAO,CAAQ,GAShC,qBAAqB,CAAC,EAAkB,EAA8B,GAAY,CACxF,IAAM,EAAsB,OAAO,IAAS,SAAW,EAAO,EAAO,IAAI,IAAa,OAChF,EAAgB,KAAK,OAAO,mBAAmB,KAAK,IAAI,GAAK,KAAK,KAExE,GAAI,CAAC,GAAuB,KAAK,OAAO,YAAY,KAAK,KAAM,CAAmB,EACjF,OAGD,KAAK,OAAO,eAAe,EAAe,EAAqB,CAC9D,IAAK,IAAM,KAAK,mBAAmB,CAAuC,EAC1E,WAAY,GACZ,aAAc,EACf,CAAC,EAOK,sBAAyB,CAAC,EAAsB,EAA8C,CACpG,IAAM,EAAO,EAAQ,MAAQ,KAAK,eAAe,EAEjD,KAAK,sBAAsB,EAAc,CAAI,EAE7C,KAAK,OAAO,eAAe,KAAK,KAAM,EAAc,CACnD,IAAK,IAAM,EAAQ,OAAO,IAAI,EAC9B,IAAK,CAAC,IAAgB,CACrB,EAAQ,OAAO,IAAI,CAAQ,EAC3B,EAAQ,QAAQ,CAAQ,GAEzB,WAAY,GACZ,aAAc,EACf,CAAC,EAOK,mBAAsB,CAAC,EAAsB,EAAiB,EAAgC,CAAC,EAAS,CAC9G,IAAM,EAAW,KAAK,gBAAgB,IAAI,CAAY,EAChD,EAAS,GAAY,KAAK,qBAAqB,EAAc,CAAY,EAE/E,GAAI,GAAY,IAAiB,OAChC,EAAO,IAAI,CAAY,EAKxB,GAFA,KAAK,uBAAuB,EAAc,CAAE,KAAM,EAAQ,KAAM,QAAO,CAAC,EAEpE,CAAC,EAAQ,sBACZ,KAAK,aAAa,EAAc,OAAW,EAAO,IAAI,CAAC,EAIjD,8BAA8B,EAA+B,CACpE,OAAO,IAAI,MAAM,OAAO,OAAO,IAAI,EAAiC,CACnE,IAAK,CAAC,EAAS,IAAa,CAC3B,GAAI,OAAO,IAAa,SACvB,OAGD,OAAO,KAAK,mBAAmB,CAAuC,EAExE,CAAC,EAEH,CCvTA,iBAAS,uBAoCF,MAAM,CAAsF,CAClF,KACA,QACA,SACA,EAEC,aACT,UAAY,GACH,gBACT,eAAiB,GACR,gBAAkB,IAAI,EAC/B,aACS,cAAgB,EAAsB,IAAM,CAC5D,KAAK,cAAc,EACnB,EAED,WAAW,CAAC,EAAe,CAC1B,KAAK,KAAO,EACZ,KAAK,QAAU,EACf,KAAK,aAAe,IAAI,EACvB,KACA,CACC,eAAgB,CAAC,EAAQ,EAAU,IAAe,OAAO,eAAe,EAAQ,EAAU,CAAU,EACpG,YAAa,CAAC,EAAQ,KAAa,KAAY,GAC/C,aAAc,CAAC,EAAQ,IAAc,EAAmC,EACzE,EACA,IAAM,KAAK,8BAA8B,CAC1C,EACA,KAAK,SAAW,KAAK,aAAa,SAClC,KAAK,EAAI,KAAK,aAAa,EAC3B,KAAK,gBAAkB,IAAI,EAAgB,CAC1C,SAAU,IAAM,KAAK,WAAa,CAAC,KAAK,gBAAgB,UACxD,OAAQ,IAAM,CACb,IAAM,EAAe,KAAK,gBAAgB,EAE1C,GAAI,CAAC,EACJ,OAGD,GAAU,KAAK,2BAA2B,EAAG,CAAY,EAE3D,CAAC,EACD,EAAsB,KAAM,WAAW,EASjC,OAAO,EAAS,CAKtB,GAJA,EAAsB,KAAM,SAAS,EACrC,KAAK,UAAY,GACjB,KAAK,aAAa,YAAY,EAE1B,KAAK,yBAAyB,EACjC,KAAK,OAAO,EAQP,mBAAsB,CAAC,EAAkB,CAC/C,KAAK,eAAiB,GAEtB,GAAI,CACH,OAAO,EAAK,SACX,CACD,KAAK,eAAiB,IAOjB,UAAU,EAAS,CACzB,KAAK,UAAY,GACjB,KAAK,wBAAwB,EAC7B,KAAK,aAAa,eAAe,KAGvB,YAAW,EAAY,CACjC,OAAO,KAAK,UAUN,MAAM,EAAkB,CAC9B,OAAO,KAQD,aAAa,EAAS,CAC5B,GAAI,CAAC,KAAK,yBAAyB,EAClC,OAGD,KAAK,gBAAgB,cAAc,EAQ7B,MAAM,EAAS,CACrB,GAAI,CAAC,KAAK,yBAAyB,EAClC,OAGD,GAAI,CAAC,KAAK,gBAAgB,EACzB,OAGD,KAAK,gBAAgB,YAAY,EACjC,KAAK,gBAAgB,MAAM,EAMrB,IAAkD,CACxD,EAC2E,CAC3E,OAAO,KAAK,aAAa,mBAAmB,CAAQ,EAM9C,kBAAgE,CACtE,EAC2E,CAC3E,OAAO,KAAK,aAAa,mBAAmB,CAAQ,EAM9C,mBAAsB,CAAC,EAAsB,EAAiB,EAAgC,CAAC,EAAS,CAC9G,KAAK,aAAa,oBAAoB,EAAc,EAAc,CAAO,EAWnE,kBAA+B,CAAC,EAAsB,EAA2C,CACvG,IAAQ,OAAM,eAAc,QAAS,EAErC,EAAgC,EAAM,CAAY,EAElD,IAAM,EAAqB,IAAI,EAAgC,KAAK,KAAM,KAAM,CAAY,EAEtF,EADmB,EAAmB,gBAAgB,GAClB,GAAgB,EAAoB,CAAI,EAE5E,EAAS,KAAK,aAAa,qBAAqB,EAAc,CAAY,EAEhF,KAAK,aAAa,uBAAuB,EAAc,CAAE,OAAM,QAAO,CAAC,EAEvE,EAAmB,QAAQ,EAE3B,KAAK,wBAAwB,IAAM,CAClC,EAAmB,QAAQ,EAC3B,EAMK,qBAAqB,CAAC,EAAkB,EAA8B,GAAY,CACxF,KAAK,aAAa,sBAAsB,EAAU,CAAI,EAGhD,YAAY,CAAC,EAAyB,EAAmB,EAAsB,CACrF,KAAK,aAAa,aAAa,EAAiB,EAAU,CAAK,EAGzD,sBAAsB,CAAC,EAAkB,EAAgC,CAC/E,OAAO,KAAK,aAAa,uBAAuB,EAAU,CAAM,EAU1D,wBAAwB,CAAC,EAAoC,EAS7D,uBAAuB,CAAC,EAAc,EAAgD,CAC5F,KAAK,gBAAgB,wBAAwB,EAAM,CAAQ,EAMrD,wBAAwB,CAAC,EAAc,EAAgD,CAC7F,KAAK,gBAAgB,yBAAyB,EAAM,CAAO,EAMrD,sBAAsB,EAAqC,CACjE,OAAO,KAAK,gBAAgB,oBAAoB,EAM1C,uBAAuB,EAAsC,CACnE,OAAO,KAAK,gBAAgB,qBAAqB,EAG3C,uBAAuB,CAAC,EAA4B,CAC1D,KAAK,aAAa,wBAAwB,CAAQ,EAG5C,yBAAyB,CAAC,EAA4B,CAC5D,KAAK,aAAa,0BAA0B,CAAQ,EAG9C,oBAAuB,CAAC,EAAsB,EAAmC,CACvF,OAAO,KAAK,aAAa,qBAAqB,EAAc,CAAY,EAGlE,sBAAyB,CAAC,EAAsB,EAAgC,CACtF,KAAK,aAAa,uBAAuB,EAAc,CAAM,EAGvD,iBAA8B,CAAC,EAAoD,CACzF,OAAO,KAAK,aAAa,kBAAkB,CAAY,EAGjD,gBAAgB,CACtB,EACA,EACA,EACO,CACP,KAAK,KAAK,iBAAiB,EAAM,EAAU,CAAO,EAG5C,mBAAmB,CACzB,EACA,EACA,EACO,CACP,KAAK,KAAK,oBAAoB,EAAM,EAAU,CAAO,EAG/C,aAAa,CAAC,EAAuB,CAC3C,OAAO,KAAK,KAAK,cAAc,CAAK,EAW9B,MAAmC,CAAC,EAAa,EAAM,GAAuB,CACpF,IAAM,EAAW,cAAc,MAE/B,GAAI,EACH,OAAO,MAAM,KAAK,KAAK,KAAK,iBAAiB,CAAQ,CAAC,EAGvD,OAAQ,KAAK,KAAK,cAAc,CAAQ,GAAW,KAG1C,6BAA6B,EAAY,CAClD,MAAO,GAGE,wBAAwB,EAAY,CAC7C,MAAO,CAAC,KAAK,gBAAkB,KAAK,SAAW,EAAkB,UAAU,OAGpE,eAAe,EAAuB,CAC7C,OAAO,KAAK,gBAAgB,YAAc,KAAK,KAAO,KAG/C,uBAAuB,EAAS,CACvC,GAAI,CAAC,KAAK,aACT,OAGD,KAAK,cAAc,QAAQ,KAAK,YAAY,EAC5C,KAAK,aAAe,OAGb,0BAA0B,EAAkB,CACnD,IAAM,EAAmB,EAAuB,IAAM,KAAK,OAAO,CAAC,EAC7D,EAAS,EAAiB,IAAI,EAEpC,GAAI,CAAC,KAAK,UACT,OAAO,EAGR,GAAI,KAAK,aACR,KAAK,cAAc,QAAQ,KAAK,YAAY,EAK7C,OAFA,KAAK,aAAe,EACpB,KAAK,cAAc,MAAM,CAAgB,EAClC,EAET,CAEA,MAAM,CAAgC,CAInB,KACA,WACA,aALD,cAEjB,WAAW,CACO,EACA,EACA,EAChB,CAHgB,YACA,kBACA,oBAEjB,KAAK,cAAgB,OAAO,yBAAyB,KAAK,KAAM,KAAK,YAAY,EAG3E,eAAe,EAAkB,CACvC,OAAO,QAAQ,IAAI,KAAK,KAAM,KAAK,YAAY,EAGzC,OAAO,EAAS,CACtB,OAAO,eAAe,KAAK,KAAM,KAAK,aAAc,CACnD,IAAK,IAAM,QAAQ,IAAI,KAAK,WAAY,KAAK,YAAY,EACzD,IAAK,CAAC,IAAgB,CACrB,QAAQ,IAAI,KAAK,WAAY,KAAK,aAAc,CAAQ,GAEzD,WAAY,KAAK,eAAe,YAAc,GAC9C,aAAc,EACf,CAAC,EAGK,OAAO,EAAS,CACtB,IAAM,EAAa,QAAQ,IAAI,KAAK,WAAY,KAAK,YAAY,EAEjE,GAAI,KAAK,cAAe,CAGvB,GAFA,OAAO,eAAe,KAAK,KAAM,KAAK,aAAc,KAAK,aAAa,EAElE,UAAW,KAAK,eAAiB,KAAK,cAAc,SACvD,QAAQ,IAAI,KAAK,KAAM,KAAK,aAAc,CAAU,EAGrD,OAGD,QAAQ,eAAe,KAAK,KAAM,KAAK,YAAY,EAEnD,GAAI,CACH,QAAQ,IAAI,KAAK,KAAM,KAAK,aAAc,CAAU,EACnD,KAAM,CACP,OAAO,eAAe,KAAK,KAAM,KAAK,aAAc,CACnD,MAAO,EACP,SAAU,GACV,WAAY,GACZ,aAAc,EACf,CAAC,GAGJ",
19
+ "debugId": "3DB3D3D210C581D064756E2164756E21",
20
+ "names": []
21
+ }
@@ -1,29 +1,29 @@
1
1
  import type { JsxRenderable } from '@ecopages/jsx';
2
2
  import type { RenderToStringOptions } from '@ecopages/jsx/server';
3
3
  import type { SsrSerializableContextProvider } from '../context/context-provider';
4
- import type { ReactiveProperty } from './radiant-element';
4
+ import type { ReactiveProperty } from './reactive-prop-core';
5
5
  import type { ReactivePropDefinition } from './reactive-prop-metadata';
6
6
  import type { SsrSerializableHydrationBinding } from './ssr-hydration-binding';
7
- type RadiantElementSsrHost = {
7
+ /**
8
+ * Unified SSR host shape shared by core resolution and server serialization.
9
+ */
10
+ export type InternalRadiantSsrHost = {
8
11
  constructor: CustomElementConstructor;
12
+ getAttribute(name: string): string | null;
13
+ getAttributeNames(): string[];
9
14
  getAuthoredHydrationScriptMarkup?: () => string | undefined;
10
15
  getContextProviders: () => SsrSerializableContextProvider[];
11
16
  getHydrationBindings: () => SsrSerializableHydrationBinding[];
12
- getSlotProjectionScriptTag?: () => string | undefined;
13
- renderToString: (options?: RenderToStringOptions) => string;
14
17
  getReactiveProperties: () => ReactiveProperty[];
15
18
  getReactivePropDefinitions: () => ReactivePropDefinition[];
16
19
  getPropertyValue: (name: string) => unknown;
17
- listAttributeNames: () => string[];
18
- getAttributeValue: (name: string) => string | null;
20
+ getSlotProjectionScriptTag?: () => string | undefined;
21
+ resolveTrackedRenderOutput: () => {
22
+ containsSlots: boolean;
23
+ value: JsxRenderable;
24
+ };
25
+ renderViewToString: (options?: RenderToStringOptions) => string;
19
26
  };
20
- export declare class RadiantElementSsrService {
21
- private readonly host;
22
- constructor(host: RadiantElementSsrHost);
23
- renderHost(): JsxRenderable;
24
- renderHostToString(options?: RenderToStringOptions, attributes?: Record<string, string>): string;
25
- private renderHostContent;
26
- getHostAttributes(): Record<string, string>;
27
- private getTagName;
28
- }
29
- export {};
27
+ export type RadiantElementSsrHostSource = InternalRadiantSsrHost;
28
+ export declare function resolveRadiantElementSsrHostSource(component: object): InternalRadiantSsrHost | undefined;
29
+ export declare function isInternalRadiantSsrHost(component: object): component is InternalRadiantSsrHost;
@@ -0,0 +1,3 @@
1
+ var{defineProperty:w,getOwnPropertyNames:A,getOwnPropertyDescriptor:B}=Object,C=Object.prototype.hasOwnProperty;function D(g){return this[g]}var J=(g)=>{var j=(x??=new WeakMap).get(g),k;if(j)return j;if(j=w({},"__esModule",{value:!0}),g&&typeof g==="object"||typeof g==="function"){for(var q of A(g))if(!C.call(j,q))w(j,q,{get:D.bind(g,q),enumerable:!(k=B(g,q))||k.enumerable})}return x.set(g,j),j},x;var E=(g)=>g;function F(g,j){this[g]=E.bind(null,j)}var K=(g,j)=>{for(var k in j)w(g,k,{get:j[k],enumerable:!0,configurable:!0,set:F.bind(j,k)})};var L=(g,j)=>()=>(g&&(j=g(g=0)),j);var M=((g)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(g,{get:(j,k)=>(typeof require<"u"?require:j)[k]}):g)(function(g){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+g+'" is not supported')});function O(g){if(G(g))return g;return}function G(g){return typeof g.constructor==="function"&&typeof g.getAttribute==="function"&&typeof g.getAttributeNames==="function"&&typeof g.getAuthoredHydrationScriptMarkup==="function"&&typeof g.getContextProviders==="function"&&typeof g.getHydrationBindings==="function"&&typeof g.getReactiveProperties==="function"&&typeof g.getSlotProjectionScriptTag==="function"&&typeof g.resolveTrackedRenderOutput==="function"&&typeof g.renderViewToString==="function"}export{O as resolveRadiantElementSsrHostSource,G as isInternalRadiantSsrHost};
2
+
3
+ //# debugId=1715AE3ABAF06A6664756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/core/radiant-element-ssr-host.ts"],
4
+ "sourcesContent": [
5
+ "import type { JsxRenderable } from '@ecopages/jsx';\nimport type { RenderToStringOptions } from '@ecopages/jsx/server';\nimport type { SsrSerializableContextProvider } from '../context/context-provider';\nimport type { ReactiveProperty } from './reactive-prop-core';\nimport type { ReactivePropDefinition } from './reactive-prop-metadata';\nimport type { SsrSerializableHydrationBinding } from './ssr-hydration-binding';\n\n/**\n * Unified SSR host shape shared by core resolution and server serialization.\n */\nexport type InternalRadiantSsrHost = {\n\tconstructor: CustomElementConstructor;\n\tgetAttribute(name: string): string | null;\n\tgetAttributeNames(): string[];\n\tgetAuthoredHydrationScriptMarkup?: () => string | undefined;\n\tgetContextProviders: () => SsrSerializableContextProvider[];\n\tgetHydrationBindings: () => SsrSerializableHydrationBinding[];\n\tgetReactiveProperties: () => ReactiveProperty[];\n\tgetReactivePropDefinitions: () => ReactivePropDefinition[];\n\tgetPropertyValue: (name: string) => unknown;\n\tgetSlotProjectionScriptTag?: () => string | undefined;\n\tresolveTrackedRenderOutput: () => { containsSlots: boolean; value: JsxRenderable };\n\trenderViewToString: (options?: RenderToStringOptions) => string;\n};\n\nexport type RadiantElementSsrHostSource = InternalRadiantSsrHost;\n\nexport function resolveRadiantElementSsrHostSource(component: object): InternalRadiantSsrHost | undefined {\n\tif (isInternalRadiantSsrHost(component)) {\n\t\treturn component;\n\t}\n\n\treturn undefined;\n}\n\nexport function isInternalRadiantSsrHost(component: object): component is InternalRadiantSsrHost {\n\treturn (\n\t\ttypeof component.constructor === 'function' &&\n\t\ttypeof (component as { getAttribute?: unknown }).getAttribute === 'function' &&\n\t\ttypeof (component as { getAttributeNames?: unknown }).getAttributeNames === 'function' &&\n\t\ttypeof (component as { getAuthoredHydrationScriptMarkup?: unknown }).getAuthoredHydrationScriptMarkup ===\n\t\t\t'function' &&\n\t\ttypeof (component as { getContextProviders?: unknown }).getContextProviders === 'function' &&\n\t\ttypeof (component as { getHydrationBindings?: unknown }).getHydrationBindings === 'function' &&\n\t\ttypeof (component as { getReactiveProperties?: unknown }).getReactiveProperties === 'function' &&\n\t\ttypeof (component as { getSlotProjectionScriptTag?: unknown }).getSlotProjectionScriptTag === 'function' &&\n\t\ttypeof (component as { resolveTrackedRenderOutput?: unknown }).resolveTrackedRenderOutput === 'function' &&\n\t\ttypeof (component as { renderViewToString?: unknown }).renderViewToString === 'function'\n\t);\n}\n"
6
+ ],
7
+ "mappings": "i0BA2BO,SAAS,CAAkC,CAAC,EAAuD,CACzG,GAAI,EAAyB,CAAS,EACrC,OAAO,EAGR,OAGM,SAAS,CAAwB,CAAC,EAAwD,CAChG,OACC,OAAO,EAAU,cAAgB,YACjC,OAAQ,EAAyC,eAAiB,YAClE,OAAQ,EAA8C,oBAAsB,YAC5E,OAAQ,EAA6D,mCACpE,YACD,OAAQ,EAAgD,sBAAwB,YAChF,OAAQ,EAAiD,uBAAyB,YAClF,OAAQ,EAAkD,wBAA0B,YACpF,OAAQ,EAAuD,6BAA+B,YAC9F,OAAQ,EAAuD,6BAA+B,YAC9F,OAAQ,EAA+C,qBAAuB",
8
+ "debugId": "1715AE3ABAF06A6664756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,20 @@
1
+ import type { JsxRenderable } from '@ecopages/jsx';
2
+ import { type RenderToStringOptions } from '@ecopages/jsx/server';
3
+ import type { InternalRadiantSsrHost } from './radiant-element-ssr-host';
4
+ export type RadiantElementRenderBridge = {
5
+ renderHost?: () => JsxRenderable;
6
+ renderHostToString?: (options?: RenderToStringOptions) => string;
7
+ };
8
+ export type RadiantElementServerRenderSsrCapable = Omit<InternalRadiantSsrHost, 'constructor'> & {
9
+ constructor: Function;
10
+ };
11
+ export type RadiantElementTrackedRenderSsrCapable = RadiantElementServerRenderSsrCapable;
12
+ export type RadiantElementSsrRuntime = {
13
+ getHostAttributes(component: InternalRadiantSsrHost): Record<string, string>;
14
+ renderHost(component: InternalRadiantSsrHost): JsxRenderable;
15
+ renderHostToString(component: InternalRadiantSsrHost, options?: RenderToStringOptions): string;
16
+ resolveRenderBridge(component: object): RadiantElementRenderBridge | undefined;
17
+ renderView(component: InternalRadiantSsrHost, options?: RenderToStringOptions): string;
18
+ };
19
+ export declare function getRadiantElementSsrRuntime(): RadiantElementSsrRuntime | undefined;
20
+ export declare function withRadiantElementSsrRuntime<T>(runtime: RadiantElementSsrRuntime, render: () => T): T;
@@ -0,0 +1,3 @@
1
+ var{defineProperty:q,getOwnPropertyNames:z,getOwnPropertyDescriptor:C}=Object,F=Object.prototype.hasOwnProperty;function G(b){return this[b]}var Q=(b)=>{var f=(x??=new WeakMap).get(b),j;if(f)return f;if(f=q({},"__esModule",{value:!0}),b&&typeof b==="object"||typeof b==="function"){for(var k of z(b))if(!F.call(f,k))q(f,k,{get:G.bind(b,k),enumerable:!(j=C(b,k))||j.enumerable})}return x.set(b,f),f},x;var H=(b)=>b;function J(b,f){this[b]=H.bind(null,f)}var W=(b,f)=>{for(var j in f)q(b,j,{get:f[j],enumerable:!0,configurable:!0,set:J.bind(f,j)})};var X=(b,f)=>()=>(b&&(f=b(b=0)),f);var Z=((b)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(b,{get:(f,j)=>(typeof require<"u"?require:f)[j]}):b)(function(b){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+b+'" is not supported')});import{getActiveSsrScopeValue as K,withActiveSsrScopeValue as P}from"@ecopages/jsx/server";var y=Symbol.for("@ecopages/radiant.element-ssr-runtime");function h(){return K(y)}function w(b,f){return P(y,b,f)}export{w as withRadiantElementSsrRuntime,h as getRadiantElementSsrRuntime};
2
+
3
+ //# debugId=15E2280905A5CEA764756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/core/radiant-element-ssr-registry.ts"],
4
+ "sourcesContent": [
5
+ "import type { JsxRenderable } from '@ecopages/jsx';\nimport { getActiveSsrScopeValue, type RenderToStringOptions, withActiveSsrScopeValue } from '@ecopages/jsx/server';\nimport type { InternalRadiantSsrHost } from './radiant-element-ssr-host';\n\nexport type RadiantElementRenderBridge = {\n\trenderHost?: () => JsxRenderable;\n\trenderHostToString?: (options?: RenderToStringOptions) => string;\n};\n\nexport type RadiantElementServerRenderSsrCapable = Omit<InternalRadiantSsrHost, 'constructor'> & {\n\tconstructor: Function;\n};\n\nexport type RadiantElementTrackedRenderSsrCapable = RadiantElementServerRenderSsrCapable;\n\nexport type RadiantElementSsrRuntime = {\n\tgetHostAttributes(component: InternalRadiantSsrHost): Record<string, string>;\n\trenderHost(component: InternalRadiantSsrHost): JsxRenderable;\n\trenderHostToString(component: InternalRadiantSsrHost, options?: RenderToStringOptions): string;\n\tresolveRenderBridge(component: object): RadiantElementRenderBridge | undefined;\n\trenderView(component: InternalRadiantSsrHost, options?: RenderToStringOptions): string;\n};\n\nconst RADIANT_ELEMENT_SSR_RUNTIME_SYMBOL = Symbol.for('@ecopages/radiant.element-ssr-runtime');\n\nexport function getRadiantElementSsrRuntime(): RadiantElementSsrRuntime | undefined {\n\treturn getActiveSsrScopeValue<RadiantElementSsrRuntime>(RADIANT_ELEMENT_SSR_RUNTIME_SYMBOL);\n}\n\nexport function withRadiantElementSsrRuntime<T>(runtime: RadiantElementSsrRuntime, render: () => T): T {\n\treturn withActiveSsrScopeValue(RADIANT_ELEMENT_SSR_RUNTIME_SYMBOL, runtime, render);\n}\n"
6
+ ],
7
+ "mappings": "i0BACA,iCAAS,6BAAoD,6BAsB7D,IAAM,EAAqC,OAAO,IAAI,uCAAuC,EAEtF,SAAS,CAA2B,EAAyC,CACnF,OAAO,EAAiD,CAAkC,EAGpF,SAAS,CAA+B,CAAC,EAAmC,EAAoB,CACtG,OAAO,EAAwB,EAAoC,EAAS,CAAM",
8
+ "debugId": "15E2280905A5CEA764756E2164756E21",
9
+ "names": []
10
+ }