@tachui/core 0.7.0-alpha1 → 0.7.1-alpha

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 (947) hide show
  1. package/README.md +195 -0
  2. package/dist/ScrollView-h-6wYMAm.js +515 -0
  3. package/dist/Spacer-BbteDQ9I.js +5337 -0
  4. package/dist/binding-CmdpowkI.js +2276 -0
  5. package/dist/bundles/minimal.d.ts +30 -4
  6. package/dist/bundles/minimal.d.ts.map +1 -1
  7. package/dist/common.js +825 -954
  8. package/dist/compiler/index.js +1386 -10
  9. package/dist/components/index.js +4166 -101
  10. package/dist/concatenated-component-DPcl2TEO.js +6779 -0
  11. package/dist/{runtime/context.js → context--zQFIImS.js} +65 -71
  12. package/dist/debug.js +0 -1
  13. package/dist/dom-bridge-Cx-s6Ihx.js +406 -0
  14. package/dist/effect-CytAc9em.js +66 -0
  15. package/dist/essential.js +825 -954
  16. package/dist/index-Nfi2SBQh.js +3268 -0
  17. package/dist/index.js +825 -954
  18. package/dist/minimal-prod.js +162 -191
  19. package/dist/minimal.js +183 -957
  20. package/dist/modifiers/responsive/index.d.ts +10 -9
  21. package/dist/modifiers/responsive/index.d.ts.map +1 -1
  22. package/dist/plugins/index.js +543 -32
  23. package/dist/reactive/index.js +490 -93
  24. package/dist/runtime/dom-bridge.js +12 -239
  25. package/dist/runtime/renderer.js +8 -388
  26. package/dist/scheduler-7SvC3a21.js +814 -0
  27. package/dist/validation/index.js +6614 -198
  28. package/dist/viewport/index.js +2002 -83
  29. package/package.json +3 -4
  30. package/dist/assets/Asset.cjs +0 -2
  31. package/dist/assets/Asset.cjs.map +0 -1
  32. package/dist/assets/Asset.js +0 -9
  33. package/dist/assets/Asset.js.map +0 -1
  34. package/dist/assets/AssetCollection.cjs +0 -2
  35. package/dist/assets/AssetCollection.cjs.map +0 -1
  36. package/dist/assets/AssetCollection.js +0 -44
  37. package/dist/assets/AssetCollection.js.map +0 -1
  38. package/dist/assets/ColorAsset.cjs +0 -2
  39. package/dist/assets/ColorAsset.cjs.map +0 -1
  40. package/dist/assets/ColorAsset.js +0 -114
  41. package/dist/assets/ColorAsset.js.map +0 -1
  42. package/dist/assets/FontAsset.cjs +0 -9
  43. package/dist/assets/FontAsset.cjs.map +0 -1
  44. package/dist/assets/FontAsset.js +0 -173
  45. package/dist/assets/FontAsset.js.map +0 -1
  46. package/dist/assets/ImageAsset.cjs +0 -2
  47. package/dist/assets/ImageAsset.cjs.map +0 -1
  48. package/dist/assets/ImageAsset.js +0 -39
  49. package/dist/assets/ImageAsset.js.map +0 -1
  50. package/dist/assets/index.cjs +0 -2
  51. package/dist/assets/index.cjs.map +0 -1
  52. package/dist/assets/index.js +0 -119
  53. package/dist/assets/index.js.map +0 -1
  54. package/dist/common.cjs +0 -2
  55. package/dist/common.cjs.map +0 -1
  56. package/dist/common.js.map +0 -1
  57. package/dist/compiler/advanced-parser.cjs +0 -5
  58. package/dist/compiler/advanced-parser.cjs.map +0 -1
  59. package/dist/compiler/advanced-parser.js +0 -440
  60. package/dist/compiler/advanced-parser.js.map +0 -1
  61. package/dist/compiler/codegen.cjs +0 -6
  62. package/dist/compiler/codegen.cjs.map +0 -1
  63. package/dist/compiler/codegen.js +0 -241
  64. package/dist/compiler/codegen.js.map +0 -1
  65. package/dist/compiler/enhanced-codegen.cjs +0 -6
  66. package/dist/compiler/enhanced-codegen.cjs.map +0 -1
  67. package/dist/compiler/enhanced-codegen.js +0 -347
  68. package/dist/compiler/enhanced-codegen.js.map +0 -1
  69. package/dist/compiler/index.cjs +0 -2
  70. package/dist/compiler/index.cjs.map +0 -1
  71. package/dist/compiler/index.js.map +0 -1
  72. package/dist/compiler/parser.cjs +0 -5
  73. package/dist/compiler/parser.cjs.map +0 -1
  74. package/dist/compiler/parser.js +0 -275
  75. package/dist/compiler/parser.js.map +0 -1
  76. package/dist/compiler/plugin.cjs +0 -33
  77. package/dist/compiler/plugin.cjs.map +0 -1
  78. package/dist/compiler/plugin.js +0 -103
  79. package/dist/compiler/plugin.js.map +0 -1
  80. package/dist/components/BasicInput.cjs +0 -2
  81. package/dist/components/BasicInput.cjs.map +0 -1
  82. package/dist/components/BasicInput.js +0 -182
  83. package/dist/components/BasicInput.js.map +0 -1
  84. package/dist/components/Button.cjs +0 -7
  85. package/dist/components/Button.cjs.map +0 -1
  86. package/dist/components/Button.js +0 -408
  87. package/dist/components/Button.js.map +0 -1
  88. package/dist/components/Divider.cjs +0 -2
  89. package/dist/components/Divider.cjs.map +0 -1
  90. package/dist/components/Divider.js +0 -187
  91. package/dist/components/Divider.js.map +0 -1
  92. package/dist/components/EnhancedLink.cjs +0 -2
  93. package/dist/components/EnhancedLink.cjs.map +0 -1
  94. package/dist/components/EnhancedLink.js +0 -345
  95. package/dist/components/EnhancedLink.js.map +0 -1
  96. package/dist/components/Form.cjs +0 -2
  97. package/dist/components/Form.cjs.map +0 -1
  98. package/dist/components/Form.js +0 -244
  99. package/dist/components/Form.js.map +0 -1
  100. package/dist/components/Grid.cjs +0 -2
  101. package/dist/components/Grid.cjs.map +0 -1
  102. package/dist/components/Grid.js +0 -1045
  103. package/dist/components/Grid.js.map +0 -1
  104. package/dist/components/GridResponsive.cjs +0 -2
  105. package/dist/components/GridResponsive.cjs.map +0 -1
  106. package/dist/components/GridResponsive.js +0 -382
  107. package/dist/components/GridResponsive.js.map +0 -1
  108. package/dist/components/Image.cjs +0 -2
  109. package/dist/components/Image.cjs.map +0 -1
  110. package/dist/components/Image.js +0 -212
  111. package/dist/components/Image.js.map +0 -1
  112. package/dist/components/List.cjs +0 -2
  113. package/dist/components/List.cjs.map +0 -1
  114. package/dist/components/List.js +0 -561
  115. package/dist/components/List.js.map +0 -1
  116. package/dist/components/Menu.cjs +0 -2
  117. package/dist/components/Menu.cjs.map +0 -1
  118. package/dist/components/Menu.js +0 -443
  119. package/dist/components/Menu.js.map +0 -1
  120. package/dist/components/Picker.cjs +0 -2
  121. package/dist/components/Picker.cjs.map +0 -1
  122. package/dist/components/Picker.js +0 -478
  123. package/dist/components/Picker.js.map +0 -1
  124. package/dist/components/ScrollView.cjs +0 -6
  125. package/dist/components/ScrollView.cjs.map +0 -1
  126. package/dist/components/ScrollView.js +0 -363
  127. package/dist/components/ScrollView.js.map +0 -1
  128. package/dist/components/Section.cjs +0 -2
  129. package/dist/components/Section.cjs.map +0 -1
  130. package/dist/components/Section.js +0 -323
  131. package/dist/components/Section.js.map +0 -1
  132. package/dist/components/Show.cjs +0 -2
  133. package/dist/components/Show.cjs.map +0 -1
  134. package/dist/components/Show.js +0 -112
  135. package/dist/components/Show.js.map +0 -1
  136. package/dist/components/Spacer.cjs +0 -2
  137. package/dist/components/Spacer.cjs.map +0 -1
  138. package/dist/components/Spacer.js +0 -53
  139. package/dist/components/Spacer.js.map +0 -1
  140. package/dist/components/Text.cjs +0 -2
  141. package/dist/components/Text.cjs.map +0 -1
  142. package/dist/components/Text.js +0 -193
  143. package/dist/components/Text.js.map +0 -1
  144. package/dist/components/Toggle.cjs +0 -2
  145. package/dist/components/Toggle.cjs.map +0 -1
  146. package/dist/components/Toggle.js +0 -477
  147. package/dist/components/Toggle.js.map +0 -1
  148. package/dist/components/index.cjs +0 -2
  149. package/dist/components/index.cjs.map +0 -1
  150. package/dist/components/index.js.map +0 -1
  151. package/dist/components/wrapper.cjs +0 -2
  152. package/dist/components/wrapper.cjs.map +0 -1
  153. package/dist/components/wrapper.js +0 -484
  154. package/dist/components/wrapper.js.map +0 -1
  155. package/dist/concatenation/concatenatable.cjs +0 -2
  156. package/dist/concatenation/concatenatable.cjs.map +0 -1
  157. package/dist/concatenation/concatenatable.js +0 -118
  158. package/dist/concatenation/concatenatable.js.map +0 -1
  159. package/dist/concatenation/concatenated-component.cjs +0 -2
  160. package/dist/concatenation/concatenated-component.cjs.map +0 -1
  161. package/dist/concatenation/concatenated-component.js +0 -276
  162. package/dist/concatenation/concatenated-component.js.map +0 -1
  163. package/dist/concatenation/text-optimizer.cjs +0 -2
  164. package/dist/concatenation/text-optimizer.cjs.map +0 -1
  165. package/dist/concatenation/text-optimizer.js +0 -236
  166. package/dist/concatenation/text-optimizer.js.map +0 -1
  167. package/dist/concatenation/types.cjs +0 -2
  168. package/dist/concatenation/types.cjs.map +0 -1
  169. package/dist/concatenation/types.js +0 -13
  170. package/dist/concatenation/types.js.map +0 -1
  171. package/dist/constants/frame-utils.cjs +0 -2
  172. package/dist/constants/frame-utils.cjs.map +0 -1
  173. package/dist/constants/frame-utils.js +0 -116
  174. package/dist/constants/frame-utils.js.map +0 -1
  175. package/dist/constants/layout.cjs +0 -2
  176. package/dist/constants/layout.cjs.map +0 -1
  177. package/dist/constants/layout.js +0 -46
  178. package/dist/constants/layout.js.map +0 -1
  179. package/dist/css-classes/component-base.cjs +0 -2
  180. package/dist/css-classes/component-base.cjs.map +0 -1
  181. package/dist/css-classes/component-base.js +0 -62
  182. package/dist/css-classes/component-base.js.map +0 -1
  183. package/dist/css-classes/css-class-manager.cjs +0 -2
  184. package/dist/css-classes/css-class-manager.cjs.map +0 -1
  185. package/dist/css-classes/css-class-manager.js +0 -209
  186. package/dist/css-classes/css-class-manager.js.map +0 -1
  187. package/dist/css-classes/dom-integration.cjs +0 -2
  188. package/dist/css-classes/dom-integration.cjs.map +0 -1
  189. package/dist/css-classes/dom-integration.js +0 -67
  190. package/dist/css-classes/dom-integration.js.map +0 -1
  191. package/dist/css-classes/enhanced-renderer.cjs +0 -2
  192. package/dist/css-classes/enhanced-renderer.cjs.map +0 -1
  193. package/dist/css-classes/enhanced-renderer.js +0 -73
  194. package/dist/css-classes/enhanced-renderer.js.map +0 -1
  195. package/dist/css-classes/utilities.cjs +0 -2
  196. package/dist/css-classes/utilities.cjs.map +0 -1
  197. package/dist/css-classes/utilities.js +0 -41
  198. package/dist/css-classes/utilities.js.map +0 -1
  199. package/dist/debug.cjs +0 -52
  200. package/dist/debug.cjs.map +0 -1
  201. package/dist/debug.js.map +0 -1
  202. package/dist/essential.cjs +0 -2
  203. package/dist/essential.cjs.map +0 -1
  204. package/dist/essential.js.map +0 -1
  205. package/dist/gradients/css-generator.cjs +0 -2
  206. package/dist/gradients/css-generator.cjs.map +0 -1
  207. package/dist/gradients/css-generator.js +0 -100
  208. package/dist/gradients/css-generator.js.map +0 -1
  209. package/dist/gradients/examples.cjs +0 -2
  210. package/dist/gradients/examples.cjs.map +0 -1
  211. package/dist/gradients/examples.js +0 -555
  212. package/dist/gradients/examples.js.map +0 -1
  213. package/dist/gradients/gradient-asset.cjs +0 -2
  214. package/dist/gradients/gradient-asset.cjs.map +0 -1
  215. package/dist/gradients/gradient-asset.js +0 -22
  216. package/dist/gradients/gradient-asset.js.map +0 -1
  217. package/dist/gradients/index.cjs +0 -2
  218. package/dist/gradients/index.cjs.map +0 -1
  219. package/dist/gradients/index.js +0 -78
  220. package/dist/gradients/index.js.map +0 -1
  221. package/dist/gradients/performance.cjs +0 -2
  222. package/dist/gradients/performance.cjs.map +0 -1
  223. package/dist/gradients/performance.js +0 -237
  224. package/dist/gradients/performance.js.map +0 -1
  225. package/dist/gradients/presets.cjs +0 -2
  226. package/dist/gradients/presets.cjs.map +0 -1
  227. package/dist/gradients/presets.js +0 -254
  228. package/dist/gradients/presets.js.map +0 -1
  229. package/dist/gradients/reactive.cjs +0 -2
  230. package/dist/gradients/reactive.cjs.map +0 -1
  231. package/dist/gradients/reactive.js +0 -239
  232. package/dist/gradients/reactive.js.map +0 -1
  233. package/dist/gradients/state-gradient-asset.cjs +0 -2
  234. package/dist/gradients/state-gradient-asset.cjs.map +0 -1
  235. package/dist/gradients/state-gradient-asset.js +0 -111
  236. package/dist/gradients/state-gradient-asset.js.map +0 -1
  237. package/dist/gradients/utils.cjs +0 -2
  238. package/dist/gradients/utils.cjs.map +0 -1
  239. package/dist/gradients/utils.js +0 -385
  240. package/dist/gradients/utils.js.map +0 -1
  241. package/dist/gradients/validation.cjs +0 -2
  242. package/dist/gradients/validation.cjs.map +0 -1
  243. package/dist/gradients/validation.js +0 -209
  244. package/dist/gradients/validation.js.map +0 -1
  245. package/dist/index.cjs +0 -2
  246. package/dist/index.cjs.map +0 -1
  247. package/dist/index.js.map +0 -1
  248. package/dist/index2.cjs +0 -2
  249. package/dist/index2.cjs.map +0 -1
  250. package/dist/index2.js +0 -293
  251. package/dist/index2.js.map +0 -1
  252. package/dist/lifecycle/hooks.cjs +0 -2
  253. package/dist/lifecycle/hooks.cjs.map +0 -1
  254. package/dist/lifecycle/hooks.js +0 -159
  255. package/dist/lifecycle/hooks.js.map +0 -1
  256. package/dist/minimal-prod.cjs +0 -2
  257. package/dist/minimal-prod.cjs.map +0 -1
  258. package/dist/minimal-prod.js.map +0 -1
  259. package/dist/minimal.cjs +0 -2
  260. package/dist/minimal.cjs.map +0 -1
  261. package/dist/minimal.js.map +0 -1
  262. package/dist/modifiers/as-html-validator.cjs +0 -2
  263. package/dist/modifiers/as-html-validator.cjs.map +0 -1
  264. package/dist/modifiers/as-html-validator.js +0 -47
  265. package/dist/modifiers/as-html-validator.js.map +0 -1
  266. package/dist/modifiers/as-html.cjs +0 -2
  267. package/dist/modifiers/as-html.cjs.map +0 -1
  268. package/dist/modifiers/as-html.js +0 -71
  269. package/dist/modifiers/as-html.js.map +0 -1
  270. package/dist/modifiers/attributes.cjs +0 -2
  271. package/dist/modifiers/attributes.cjs.map +0 -1
  272. package/dist/modifiers/attributes.js +0 -272
  273. package/dist/modifiers/attributes.js.map +0 -1
  274. package/dist/modifiers/backdrop.cjs +0 -2
  275. package/dist/modifiers/backdrop.cjs.map +0 -1
  276. package/dist/modifiers/backdrop.js +0 -109
  277. package/dist/modifiers/backdrop.js.map +0 -1
  278. package/dist/modifiers/background.cjs +0 -2
  279. package/dist/modifiers/background.cjs.map +0 -1
  280. package/dist/modifiers/background.js +0 -67
  281. package/dist/modifiers/background.js.map +0 -1
  282. package/dist/modifiers/base.cjs +0 -25
  283. package/dist/modifiers/base.cjs.map +0 -1
  284. package/dist/modifiers/base.js +0 -745
  285. package/dist/modifiers/base.js.map +0 -1
  286. package/dist/modifiers/basic-sanitizer.cjs +0 -2
  287. package/dist/modifiers/basic-sanitizer.cjs.map +0 -1
  288. package/dist/modifiers/basic-sanitizer.js +0 -162
  289. package/dist/modifiers/basic-sanitizer.js.map +0 -1
  290. package/dist/modifiers/border.cjs +0 -2
  291. package/dist/modifiers/border.cjs.map +0 -1
  292. package/dist/modifiers/border.js +0 -160
  293. package/dist/modifiers/border.js.map +0 -1
  294. package/dist/modifiers/builder.cjs +0 -2
  295. package/dist/modifiers/builder.cjs.map +0 -1
  296. package/dist/modifiers/builder.js +0 -930
  297. package/dist/modifiers/builder.js.map +0 -1
  298. package/dist/modifiers/core.cjs +0 -2
  299. package/dist/modifiers/core.cjs.map +0 -1
  300. package/dist/modifiers/core.js +0 -398
  301. package/dist/modifiers/core.js.map +0 -1
  302. package/dist/modifiers/css.cjs +0 -2
  303. package/dist/modifiers/css.cjs.map +0 -1
  304. package/dist/modifiers/css.js +0 -50
  305. package/dist/modifiers/css.js.map +0 -1
  306. package/dist/modifiers/effects.cjs +0 -2
  307. package/dist/modifiers/effects.cjs.map +0 -1
  308. package/dist/modifiers/effects.js +0 -178
  309. package/dist/modifiers/effects.js.map +0 -1
  310. package/dist/modifiers/elements.cjs +0 -2
  311. package/dist/modifiers/elements.cjs.map +0 -1
  312. package/dist/modifiers/elements.js +0 -216
  313. package/dist/modifiers/elements.js.map +0 -1
  314. package/dist/modifiers/filters.cjs +0 -2
  315. package/dist/modifiers/filters.cjs.map +0 -1
  316. package/dist/modifiers/filters.js +0 -223
  317. package/dist/modifiers/filters.js.map +0 -1
  318. package/dist/modifiers/flexbox.cjs +0 -2
  319. package/dist/modifiers/flexbox.cjs.map +0 -1
  320. package/dist/modifiers/flexbox.js +0 -56
  321. package/dist/modifiers/flexbox.js.map +0 -1
  322. package/dist/modifiers/font.cjs +0 -2
  323. package/dist/modifiers/font.cjs.map +0 -1
  324. package/dist/modifiers/font.js +0 -60
  325. package/dist/modifiers/font.js.map +0 -1
  326. package/dist/modifiers/grid.cjs +0 -2
  327. package/dist/modifiers/grid.cjs.map +0 -1
  328. package/dist/modifiers/grid.js +0 -92
  329. package/dist/modifiers/grid.js.map +0 -1
  330. package/dist/modifiers/margin.cjs +0 -2
  331. package/dist/modifiers/margin.cjs.map +0 -1
  332. package/dist/modifiers/margin.js +0 -65
  333. package/dist/modifiers/margin.js.map +0 -1
  334. package/dist/modifiers/padding.cjs +0 -2
  335. package/dist/modifiers/padding.cjs.map +0 -1
  336. package/dist/modifiers/padding.js +0 -109
  337. package/dist/modifiers/padding.js.map +0 -1
  338. package/dist/modifiers/registry.cjs +0 -2
  339. package/dist/modifiers/registry.cjs.map +0 -1
  340. package/dist/modifiers/registry.js +0 -163
  341. package/dist/modifiers/registry.js.map +0 -1
  342. package/dist/modifiers/responsive/advanced-utilities.cjs +0 -2
  343. package/dist/modifiers/responsive/advanced-utilities.cjs.map +0 -1
  344. package/dist/modifiers/responsive/advanced-utilities.js +0 -291
  345. package/dist/modifiers/responsive/advanced-utilities.js.map +0 -1
  346. package/dist/modifiers/responsive/breakpoints.cjs +0 -2
  347. package/dist/modifiers/responsive/breakpoints.cjs.map +0 -1
  348. package/dist/modifiers/responsive/breakpoints.js +0 -168
  349. package/dist/modifiers/responsive/breakpoints.js.map +0 -1
  350. package/dist/modifiers/responsive/css-generator.cjs +0 -5
  351. package/dist/modifiers/responsive/css-generator.cjs.map +0 -1
  352. package/dist/modifiers/responsive/css-generator.js +0 -261
  353. package/dist/modifiers/responsive/css-generator.js.map +0 -1
  354. package/dist/modifiers/responsive/dev-tools.cjs +0 -77
  355. package/dist/modifiers/responsive/dev-tools.cjs.map +0 -1
  356. package/dist/modifiers/responsive/dev-tools.js +0 -380
  357. package/dist/modifiers/responsive/dev-tools.js.map +0 -1
  358. package/dist/modifiers/responsive/layout-patterns.cjs +0 -2
  359. package/dist/modifiers/responsive/layout-patterns.cjs.map +0 -1
  360. package/dist/modifiers/responsive/layout-patterns.js +0 -254
  361. package/dist/modifiers/responsive/layout-patterns.js.map +0 -1
  362. package/dist/modifiers/responsive/performance.cjs +0 -3
  363. package/dist/modifiers/responsive/performance.cjs.map +0 -1
  364. package/dist/modifiers/responsive/performance.js +0 -212
  365. package/dist/modifiers/responsive/performance.js.map +0 -1
  366. package/dist/modifiers/responsive/responsive-builder.cjs +0 -2
  367. package/dist/modifiers/responsive/responsive-builder.cjs.map +0 -1
  368. package/dist/modifiers/responsive/responsive-builder.js +0 -272
  369. package/dist/modifiers/responsive/responsive-builder.js.map +0 -1
  370. package/dist/modifiers/responsive/responsive-modifier.cjs +0 -3
  371. package/dist/modifiers/responsive/responsive-modifier.cjs.map +0 -1
  372. package/dist/modifiers/responsive/responsive-modifier.js +0 -204
  373. package/dist/modifiers/responsive/responsive-modifier.js.map +0 -1
  374. package/dist/modifiers/responsive/types.cjs +0 -2
  375. package/dist/modifiers/responsive/types.cjs.map +0 -1
  376. package/dist/modifiers/responsive/types.js +0 -26
  377. package/dist/modifiers/responsive/types.js.map +0 -1
  378. package/dist/modifiers/responsive/utilities.cjs +0 -16
  379. package/dist/modifiers/responsive/utilities.cjs.map +0 -1
  380. package/dist/modifiers/responsive/utilities.js +0 -273
  381. package/dist/modifiers/responsive/utilities.js.map +0 -1
  382. package/dist/modifiers/scroll.cjs +0 -2
  383. package/dist/modifiers/scroll.cjs.map +0 -1
  384. package/dist/modifiers/scroll.js +0 -82
  385. package/dist/modifiers/scroll.js.map +0 -1
  386. package/dist/modifiers/shadows.cjs +0 -2
  387. package/dist/modifiers/shadows.cjs.map +0 -1
  388. package/dist/modifiers/shadows.js +0 -147
  389. package/dist/modifiers/shadows.js.map +0 -1
  390. package/dist/modifiers/size.cjs +0 -2
  391. package/dist/modifiers/size.cjs.map +0 -1
  392. package/dist/modifiers/size.js +0 -74
  393. package/dist/modifiers/size.js.map +0 -1
  394. package/dist/modifiers/text.cjs +0 -2
  395. package/dist/modifiers/text.cjs.map +0 -1
  396. package/dist/modifiers/text.js +0 -166
  397. package/dist/modifiers/text.js.map +0 -1
  398. package/dist/modifiers/transformations.cjs +0 -2
  399. package/dist/modifiers/transformations.cjs.map +0 -1
  400. package/dist/modifiers/transformations.js +0 -216
  401. package/dist/modifiers/transformations.js.map +0 -1
  402. package/dist/modifiers/transitions.cjs +0 -2
  403. package/dist/modifiers/transitions.cjs.map +0 -1
  404. package/dist/modifiers/transitions.js +0 -102
  405. package/dist/modifiers/transitions.js.map +0 -1
  406. package/dist/modifiers/types.cjs +0 -2
  407. package/dist/modifiers/types.cjs.map +0 -1
  408. package/dist/modifiers/types.js +0 -5
  409. package/dist/modifiers/types.js.map +0 -1
  410. package/dist/modifiers/typography.cjs +0 -2
  411. package/dist/modifiers/typography.cjs.map +0 -1
  412. package/dist/modifiers/typography.js +0 -76
  413. package/dist/modifiers/typography.js.map +0 -1
  414. package/dist/modifiers/utility.cjs +0 -2
  415. package/dist/modifiers/utility.cjs.map +0 -1
  416. package/dist/modifiers/utility.js +0 -71
  417. package/dist/modifiers/utility.js.map +0 -1
  418. package/dist/modifiers/utils.cjs +0 -2
  419. package/dist/modifiers/utils.cjs.map +0 -1
  420. package/dist/modifiers/utils.js +0 -250
  421. package/dist/modifiers/utils.js.map +0 -1
  422. package/dist/plugins/index.cjs +0 -2
  423. package/dist/plugins/index.cjs.map +0 -1
  424. package/dist/plugins/index.js.map +0 -1
  425. package/dist/plugins/legacy-adapter.cjs +0 -2
  426. package/dist/plugins/legacy-adapter.cjs.map +0 -1
  427. package/dist/plugins/legacy-adapter.js +0 -30
  428. package/dist/plugins/legacy-adapter.js.map +0 -1
  429. package/dist/plugins/simplified-component-registry.cjs +0 -2
  430. package/dist/plugins/simplified-component-registry.cjs.map +0 -1
  431. package/dist/plugins/simplified-component-registry.js +0 -71
  432. package/dist/plugins/simplified-component-registry.js.map +0 -1
  433. package/dist/plugins/simplified-error-handler.cjs +0 -2
  434. package/dist/plugins/simplified-error-handler.cjs.map +0 -1
  435. package/dist/plugins/simplified-error-handler.js +0 -154
  436. package/dist/plugins/simplified-error-handler.js.map +0 -1
  437. package/dist/plugins/simplified-lazy-loader.cjs +0 -2
  438. package/dist/plugins/simplified-lazy-loader.cjs.map +0 -1
  439. package/dist/plugins/simplified-lazy-loader.js +0 -129
  440. package/dist/plugins/simplified-lazy-loader.js.map +0 -1
  441. package/dist/plugins/simplified-plugin-manager.cjs +0 -2
  442. package/dist/plugins/simplified-plugin-manager.cjs.map +0 -1
  443. package/dist/plugins/simplified-plugin-manager.js +0 -51
  444. package/dist/plugins/simplified-plugin-manager.js.map +0 -1
  445. package/dist/plugins/simplified-tachui-instance.cjs +0 -2
  446. package/dist/plugins/simplified-tachui-instance.cjs.map +0 -1
  447. package/dist/plugins/simplified-tachui-instance.js +0 -88
  448. package/dist/plugins/simplified-tachui-instance.js.map +0 -1
  449. package/dist/plugins/simplified-types.cjs +0 -2
  450. package/dist/plugins/simplified-types.cjs.map +0 -1
  451. package/dist/plugins/simplified-types.js +0 -9
  452. package/dist/plugins/simplified-types.js.map +0 -1
  453. package/dist/plugins/simplified-utils.cjs +0 -2
  454. package/dist/plugins/simplified-utils.cjs.map +0 -1
  455. package/dist/plugins/simplified-utils.js +0 -40
  456. package/dist/plugins/simplified-utils.js.map +0 -1
  457. package/dist/reactive/cleanup.cjs +0 -2
  458. package/dist/reactive/cleanup.cjs.map +0 -1
  459. package/dist/reactive/cleanup.js +0 -62
  460. package/dist/reactive/cleanup.js.map +0 -1
  461. package/dist/reactive/computed.cjs +0 -2
  462. package/dist/reactive/computed.cjs.map +0 -1
  463. package/dist/reactive/computed.js +0 -121
  464. package/dist/reactive/computed.js.map +0 -1
  465. package/dist/reactive/context.cjs +0 -2
  466. package/dist/reactive/context.cjs.map +0 -1
  467. package/dist/reactive/context.js +0 -143
  468. package/dist/reactive/context.js.map +0 -1
  469. package/dist/reactive/effect.cjs +0 -2
  470. package/dist/reactive/effect.cjs.map +0 -1
  471. package/dist/reactive/effect.js +0 -67
  472. package/dist/reactive/effect.js.map +0 -1
  473. package/dist/reactive/enhanced-effect.cjs +0 -2
  474. package/dist/reactive/enhanced-effect.cjs.map +0 -1
  475. package/dist/reactive/enhanced-effect.js +0 -153
  476. package/dist/reactive/enhanced-effect.js.map +0 -1
  477. package/dist/reactive/enhanced-signal.cjs +0 -2
  478. package/dist/reactive/enhanced-signal.cjs.map +0 -1
  479. package/dist/reactive/enhanced-signal.js +0 -117
  480. package/dist/reactive/enhanced-signal.js.map +0 -1
  481. package/dist/reactive/equality.cjs +0 -2
  482. package/dist/reactive/equality.cjs.map +0 -1
  483. package/dist/reactive/equality.js +0 -66
  484. package/dist/reactive/equality.js.map +0 -1
  485. package/dist/reactive/index.cjs +0 -2
  486. package/dist/reactive/index.cjs.map +0 -1
  487. package/dist/reactive/index.js.map +0 -1
  488. package/dist/reactive/migration.cjs +0 -18
  489. package/dist/reactive/migration.cjs.map +0 -1
  490. package/dist/reactive/migration.js +0 -164
  491. package/dist/reactive/migration.js.map +0 -1
  492. package/dist/reactive/ownership.cjs +0 -2
  493. package/dist/reactive/ownership.cjs.map +0 -1
  494. package/dist/reactive/ownership.js +0 -34
  495. package/dist/reactive/ownership.js.map +0 -1
  496. package/dist/reactive/scheduler.cjs +0 -2
  497. package/dist/reactive/scheduler.cjs.map +0 -1
  498. package/dist/reactive/scheduler.js +0 -111
  499. package/dist/reactive/scheduler.js.map +0 -1
  500. package/dist/reactive/signal.cjs +0 -2
  501. package/dist/reactive/signal.cjs.map +0 -1
  502. package/dist/reactive/signal.js +0 -96
  503. package/dist/reactive/signal.js.map +0 -1
  504. package/dist/reactive/theme.cjs +0 -2
  505. package/dist/reactive/theme.cjs.map +0 -1
  506. package/dist/reactive/theme.js +0 -27
  507. package/dist/reactive/theme.js.map +0 -1
  508. package/dist/reactive/types.cjs +0 -2
  509. package/dist/reactive/types.cjs.map +0 -1
  510. package/dist/reactive/types.js +0 -5
  511. package/dist/reactive/types.js.map +0 -1
  512. package/dist/reactive/unified-scheduler.cjs +0 -2
  513. package/dist/reactive/unified-scheduler.cjs.map +0 -1
  514. package/dist/reactive/unified-scheduler.js +0 -219
  515. package/dist/reactive/unified-scheduler.js.map +0 -1
  516. package/dist/runtime/component-context.cjs +0 -2
  517. package/dist/runtime/component-context.cjs.map +0 -1
  518. package/dist/runtime/component-context.js +0 -177
  519. package/dist/runtime/component-context.js.map +0 -1
  520. package/dist/runtime/component.cjs +0 -2
  521. package/dist/runtime/component.cjs.map +0 -1
  522. package/dist/runtime/component.js +0 -238
  523. package/dist/runtime/component.js.map +0 -1
  524. package/dist/runtime/context.cjs +0 -2
  525. package/dist/runtime/context.cjs.map +0 -1
  526. package/dist/runtime/context.js.map +0 -1
  527. package/dist/runtime/dev-tools.cjs +0 -2
  528. package/dist/runtime/dev-tools.cjs.map +0 -1
  529. package/dist/runtime/dev-tools.js +0 -391
  530. package/dist/runtime/dev-tools.js.map +0 -1
  531. package/dist/runtime/development-warnings.cjs +0 -2
  532. package/dist/runtime/development-warnings.cjs.map +0 -1
  533. package/dist/runtime/development-warnings.js +0 -69
  534. package/dist/runtime/development-warnings.js.map +0 -1
  535. package/dist/runtime/dom-bridge.cjs +0 -2
  536. package/dist/runtime/dom-bridge.cjs.map +0 -1
  537. package/dist/runtime/dom-bridge.js.map +0 -1
  538. package/dist/runtime/element-override.cjs +0 -2
  539. package/dist/runtime/element-override.cjs.map +0 -1
  540. package/dist/runtime/element-override.js +0 -214
  541. package/dist/runtime/element-override.js.map +0 -1
  542. package/dist/runtime/error-boundary.cjs +0 -2
  543. package/dist/runtime/error-boundary.cjs.map +0 -1
  544. package/dist/runtime/error-boundary.js +0 -559
  545. package/dist/runtime/error-boundary.js.map +0 -1
  546. package/dist/runtime/error-recovery.cjs +0 -2
  547. package/dist/runtime/error-recovery.cjs.map +0 -1
  548. package/dist/runtime/error-recovery.js +0 -385
  549. package/dist/runtime/error-recovery.js.map +0 -1
  550. package/dist/runtime/error-reporting.cjs +0 -3
  551. package/dist/runtime/error-reporting.cjs.map +0 -1
  552. package/dist/runtime/error-reporting.js +0 -479
  553. package/dist/runtime/error-reporting.js.map +0 -1
  554. package/dist/runtime/error-utils.cjs +0 -3
  555. package/dist/runtime/error-utils.cjs.map +0 -1
  556. package/dist/runtime/error-utils.js +0 -352
  557. package/dist/runtime/error-utils.js.map +0 -1
  558. package/dist/runtime/lazy-component.cjs +0 -2
  559. package/dist/runtime/lazy-component.cjs.map +0 -1
  560. package/dist/runtime/lazy-component.js +0 -129
  561. package/dist/runtime/lazy-component.js.map +0 -1
  562. package/dist/runtime/lifecycle.cjs +0 -2
  563. package/dist/runtime/lifecycle.cjs.map +0 -1
  564. package/dist/runtime/lifecycle.js +0 -7
  565. package/dist/runtime/lifecycle.js.map +0 -1
  566. package/dist/runtime/mounting.cjs +0 -2
  567. package/dist/runtime/mounting.cjs.map +0 -1
  568. package/dist/runtime/mounting.js +0 -12
  569. package/dist/runtime/mounting.js.map +0 -1
  570. package/dist/runtime/optimization.cjs +0 -2
  571. package/dist/runtime/optimization.cjs.map +0 -1
  572. package/dist/runtime/optimization.js +0 -6
  573. package/dist/runtime/optimization.js.map +0 -1
  574. package/dist/runtime/performance.cjs +0 -2
  575. package/dist/runtime/performance.cjs.map +0 -1
  576. package/dist/runtime/performance.js +0 -399
  577. package/dist/runtime/performance.js.map +0 -1
  578. package/dist/runtime/props.cjs +0 -2
  579. package/dist/runtime/props.cjs.map +0 -1
  580. package/dist/runtime/props.js +0 -265
  581. package/dist/runtime/props.js.map +0 -1
  582. package/dist/runtime/renderer.cjs +0 -2
  583. package/dist/runtime/renderer.cjs.map +0 -1
  584. package/dist/runtime/renderer.js.map +0 -1
  585. package/dist/runtime/semantic-role-manager.cjs +0 -2
  586. package/dist/runtime/semantic-role-manager.cjs.map +0 -1
  587. package/dist/runtime/semantic-role-manager.js +0 -82
  588. package/dist/runtime/semantic-role-manager.js.map +0 -1
  589. package/dist/state/binding.cjs +0 -2
  590. package/dist/state/binding.cjs.map +0 -1
  591. package/dist/state/binding.js +0 -155
  592. package/dist/state/binding.js.map +0 -1
  593. package/dist/state/environment.cjs +0 -2
  594. package/dist/state/environment.cjs.map +0 -1
  595. package/dist/state/environment.js +0 -115
  596. package/dist/state/environment.js.map +0 -1
  597. package/dist/state/index.cjs +0 -2
  598. package/dist/state/index.cjs.map +0 -1
  599. package/dist/state/index.js +0 -63
  600. package/dist/state/index.js.map +0 -1
  601. package/dist/state/observed-object.cjs +0 -2
  602. package/dist/state/observed-object.cjs.map +0 -1
  603. package/dist/state/observed-object.js +0 -163
  604. package/dist/state/observed-object.js.map +0 -1
  605. package/dist/state/state-manager.cjs +0 -2
  606. package/dist/state/state-manager.cjs.map +0 -1
  607. package/dist/state/state-manager.js +0 -233
  608. package/dist/state/state-manager.js.map +0 -1
  609. package/dist/state/state.cjs +0 -2
  610. package/dist/state/state.cjs.map +0 -1
  611. package/dist/state/state.js +0 -159
  612. package/dist/state/state.js.map +0 -1
  613. package/dist/sui-compat.cjs +0 -2
  614. package/dist/sui-compat.cjs.map +0 -1
  615. package/dist/sui-compat.js +0 -88
  616. package/dist/sui-compat.js.map +0 -1
  617. package/dist/validation/advanced-debugging.cjs +0 -44
  618. package/dist/validation/advanced-debugging.cjs.map +0 -1
  619. package/dist/validation/advanced-debugging.js +0 -455
  620. package/dist/validation/advanced-debugging.js.map +0 -1
  621. package/dist/validation/build-time/detection.cjs +0 -2
  622. package/dist/validation/build-time/detection.cjs.map +0 -1
  623. package/dist/validation/build-time/detection.js +0 -199
  624. package/dist/validation/build-time/detection.js.map +0 -1
  625. package/dist/validation/build-time/index.cjs +0 -2
  626. package/dist/validation/build-time/index.cjs.map +0 -1
  627. package/dist/validation/build-time/index.js +0 -122
  628. package/dist/validation/build-time/index.js.map +0 -1
  629. package/dist/validation/build-time/plugins.cjs +0 -3
  630. package/dist/validation/build-time/plugins.cjs.map +0 -1
  631. package/dist/validation/build-time/plugins.js +0 -282
  632. package/dist/validation/build-time/plugins.js.map +0 -1
  633. package/dist/validation/build-time/rules.cjs +0 -2
  634. package/dist/validation/build-time/rules.cjs.map +0 -1
  635. package/dist/validation/build-time/rules.js +0 -576
  636. package/dist/validation/build-time/rules.js.map +0 -1
  637. package/dist/validation/build-time/transformer.cjs +0 -3
  638. package/dist/validation/build-time/transformer.cjs.map +0 -1
  639. package/dist/validation/build-time/transformer.js +0 -177
  640. package/dist/validation/build-time/transformer.js.map +0 -1
  641. package/dist/validation/comprehensive.cjs +0 -9
  642. package/dist/validation/comprehensive.cjs.map +0 -1
  643. package/dist/validation/comprehensive.js +0 -916
  644. package/dist/validation/comprehensive.js.map +0 -1
  645. package/dist/validation/debug-tools.cjs +0 -16
  646. package/dist/validation/debug-tools.cjs.map +0 -1
  647. package/dist/validation/debug-tools.js +0 -405
  648. package/dist/validation/debug-tools.js.map +0 -1
  649. package/dist/validation/developer-experience.cjs +0 -17
  650. package/dist/validation/developer-experience.cjs.map +0 -1
  651. package/dist/validation/developer-experience.js +0 -433
  652. package/dist/validation/developer-experience.js.map +0 -1
  653. package/dist/validation/documentation-integration.cjs +0 -7
  654. package/dist/validation/documentation-integration.cjs.map +0 -1
  655. package/dist/validation/documentation-integration.js +0 -440
  656. package/dist/validation/documentation-integration.js.map +0 -1
  657. package/dist/validation/enhanced-runtime.cjs +0 -6
  658. package/dist/validation/enhanced-runtime.cjs.map +0 -1
  659. package/dist/validation/enhanced-runtime.js +0 -465
  660. package/dist/validation/enhanced-runtime.js.map +0 -1
  661. package/dist/validation/error-reporting.cjs +0 -32
  662. package/dist/validation/error-reporting.cjs.map +0 -1
  663. package/dist/validation/error-reporting.js +0 -370
  664. package/dist/validation/error-reporting.js.map +0 -1
  665. package/dist/validation/ide-integration.cjs +0 -85
  666. package/dist/validation/ide-integration.cjs.map +0 -1
  667. package/dist/validation/ide-integration.js +0 -557
  668. package/dist/validation/ide-integration.js.map +0 -1
  669. package/dist/validation/index.cjs +0 -6
  670. package/dist/validation/index.cjs.map +0 -1
  671. package/dist/validation/index.js.map +0 -1
  672. package/dist/validation/lifecycle-validation.cjs +0 -2
  673. package/dist/validation/lifecycle-validation.cjs.map +0 -1
  674. package/dist/validation/lifecycle-validation.js +0 -314
  675. package/dist/validation/lifecycle-validation.js.map +0 -1
  676. package/dist/validation/performance-optimizer.cjs +0 -2
  677. package/dist/validation/performance-optimizer.cjs.map +0 -1
  678. package/dist/validation/performance-optimizer.js +0 -338
  679. package/dist/validation/performance-optimizer.js.map +0 -1
  680. package/dist/validation/plugin-registration.cjs +0 -2
  681. package/dist/validation/plugin-registration.cjs.map +0 -1
  682. package/dist/validation/plugin-registration.js +0 -126
  683. package/dist/validation/plugin-registration.js.map +0 -1
  684. package/dist/validation/production-bypass.cjs +0 -2
  685. package/dist/validation/production-bypass.cjs.map +0 -1
  686. package/dist/validation/production-bypass.js +0 -218
  687. package/dist/validation/production-bypass.js.map +0 -1
  688. package/dist/validation/simple.cjs +0 -9
  689. package/dist/validation/simple.cjs.map +0 -1
  690. package/dist/validation/simple.js +0 -146
  691. package/dist/validation/simple.js.map +0 -1
  692. package/dist/viewport/adapters/web-adapter.cjs +0 -70
  693. package/dist/viewport/adapters/web-adapter.cjs.map +0 -1
  694. package/dist/viewport/adapters/web-adapter.js +0 -823
  695. package/dist/viewport/adapters/web-adapter.js.map +0 -1
  696. package/dist/viewport/components.cjs +0 -2
  697. package/dist/viewport/components.cjs.map +0 -1
  698. package/dist/viewport/components.js +0 -298
  699. package/dist/viewport/components.js.map +0 -1
  700. package/dist/viewport/environment.cjs +0 -2
  701. package/dist/viewport/environment.cjs.map +0 -1
  702. package/dist/viewport/environment.js +0 -86
  703. package/dist/viewport/environment.js.map +0 -1
  704. package/dist/viewport/index.cjs +0 -2
  705. package/dist/viewport/index.cjs.map +0 -1
  706. package/dist/viewport/index.js.map +0 -1
  707. package/dist/viewport/platform-detection.cjs +0 -2
  708. package/dist/viewport/platform-detection.cjs.map +0 -1
  709. package/dist/viewport/platform-detection.js +0 -205
  710. package/dist/viewport/platform-detection.js.map +0 -1
  711. package/dist/viewport/types.cjs +0 -2
  712. package/dist/viewport/types.cjs.map +0 -1
  713. package/dist/viewport/types.js +0 -13
  714. package/dist/viewport/types.js.map +0 -1
  715. package/dist/viewport/viewport-manager.cjs +0 -2
  716. package/dist/viewport/viewport-manager.cjs.map +0 -1
  717. package/dist/viewport/viewport-manager.js +0 -524
  718. package/dist/viewport/viewport-manager.js.map +0 -1
  719. package/src/assets/Asset.ts +0 -11
  720. package/src/assets/AssetCollection.ts +0 -99
  721. package/src/assets/ColorAsset.ts +0 -210
  722. package/src/assets/FontAsset.ts +0 -380
  723. package/src/assets/ImageAsset.ts +0 -91
  724. package/src/assets/README.md +0 -190
  725. package/src/assets/index.ts +0 -175
  726. package/src/assets/test-assets.ts +0 -69
  727. package/src/assets/test-integration.ts +0 -46
  728. package/src/assets/test-simple.ts +0 -28
  729. package/src/assets/types.ts +0 -79
  730. package/src/bundles/common.ts +0 -30
  731. package/src/bundles/complete.ts +0 -29
  732. package/src/bundles/essential.ts +0 -26
  733. package/src/bundles/minimal.ts +0 -26
  734. package/src/bundles/production-minimal.ts +0 -67
  735. package/src/compiler/advanced-parser.ts +0 -871
  736. package/src/compiler/codegen.ts +0 -450
  737. package/src/compiler/enhanced-codegen.ts +0 -729
  738. package/src/compiler/index.ts +0 -25
  739. package/src/compiler/parser.ts +0 -461
  740. package/src/compiler/plugin.ts +0 -181
  741. package/src/compiler/types.ts +0 -177
  742. package/src/components/BasicInput.ts +0 -352
  743. package/src/components/Button.ts +0 -963
  744. package/src/components/Divider.ts +0 -341
  745. package/src/components/EnhancedLink.ts +0 -676
  746. package/src/components/Form.ts +0 -414
  747. package/src/components/Grid.ts +0 -2507
  748. package/src/components/GridResponsive.ts +0 -637
  749. package/src/components/Image.ts +0 -426
  750. package/src/components/List.ts +0 -1084
  751. package/src/components/Menu.ts +0 -807
  752. package/src/components/Picker.ts +0 -678
  753. package/src/components/ScrollView.ts +0 -725
  754. package/src/components/Section.ts +0 -472
  755. package/src/components/Show.ts +0 -205
  756. package/src/components/Spacer.ts +0 -93
  757. package/src/components/Text.ts +0 -447
  758. package/src/components/Toggle.ts +0 -700
  759. package/src/components/index.ts +0 -231
  760. package/src/components/wrapper.ts +0 -828
  761. package/src/concatenation/concatenatable.ts +0 -211
  762. package/src/concatenation/concatenated-component.ts +0 -471
  763. package/src/concatenation/index.ts +0 -41
  764. package/src/concatenation/styles.css +0 -120
  765. package/src/concatenation/text-optimizer.ts +0 -440
  766. package/src/concatenation/types.ts +0 -116
  767. package/src/constants/README.md +0 -339
  768. package/src/constants/__tests__/frame-utils.test.ts +0 -276
  769. package/src/constants/__tests__/layout.test.ts +0 -215
  770. package/src/constants/frame-utils.ts +0 -174
  771. package/src/constants/index.ts +0 -8
  772. package/src/constants/layout.ts +0 -120
  773. package/src/css-classes/component-base.ts +0 -117
  774. package/src/css-classes/css-class-manager.ts +0 -372
  775. package/src/css-classes/dom-integration.ts +0 -162
  776. package/src/css-classes/enhanced-renderer.ts +0 -166
  777. package/src/css-classes/index.ts +0 -45
  778. package/src/css-classes/types.ts +0 -73
  779. package/src/css-classes/utilities.ts +0 -175
  780. package/src/debug/index.ts +0 -267
  781. package/src/developer-experience/enhanced-errors.ts +0 -556
  782. package/src/developer-experience/enhanced-types.ts +0 -427
  783. package/src/developer-experience/index.ts +0 -220
  784. package/src/globals.d.ts +0 -43
  785. package/src/gradients/__tests__/angular-gradient.test.ts +0 -111
  786. package/src/gradients/__tests__/background-modifier.test.ts +0 -81
  787. package/src/gradients/__tests__/comprehensive-gradients.test.ts +0 -296
  788. package/src/gradients/__tests__/gradient-asset.test.ts +0 -144
  789. package/src/gradients/__tests__/linear-gradient.test.ts +0 -92
  790. package/src/gradients/__tests__/phase4-features.test.ts +0 -386
  791. package/src/gradients/__tests__/radial-gradient.test.ts +0 -110
  792. package/src/gradients/__tests__/repeating-gradients.test.ts +0 -125
  793. package/src/gradients/__tests__/state-background-modifier.test.ts +0 -340
  794. package/src/gradients/__tests__/state-gradient-asset.test.ts +0 -262
  795. package/src/gradients/__tests__/state-gradient-integration.test.ts +0 -277
  796. package/src/gradients/css-generator.ts +0 -158
  797. package/src/gradients/examples.ts +0 -632
  798. package/src/gradients/gradient-asset.ts +0 -30
  799. package/src/gradients/index.ts +0 -85
  800. package/src/gradients/performance.ts +0 -521
  801. package/src/gradients/presets.ts +0 -422
  802. package/src/gradients/reactive.ts +0 -470
  803. package/src/gradients/state-gradient-asset.ts +0 -179
  804. package/src/gradients/types.ts +0 -148
  805. package/src/gradients/utils.ts +0 -579
  806. package/src/gradients/validation.ts +0 -489
  807. package/src/index.ts +0 -168
  808. package/src/lifecycle/hooks.ts +0 -332
  809. package/src/modifiers/__tests__/as-html-integration.test.ts +0 -204
  810. package/src/modifiers/__tests__/as-html.test.ts +0 -437
  811. package/src/modifiers/__tests__/basic-sanitizer-security.test.ts +0 -294
  812. package/src/modifiers/__tests__/border.test.ts +0 -371
  813. package/src/modifiers/__tests__/margin-string-support.test.ts +0 -41
  814. package/src/modifiers/__tests__/padding-string-support.test.ts +0 -41
  815. package/src/modifiers/as-html-validator.ts +0 -68
  816. package/src/modifiers/as-html.ts +0 -216
  817. package/src/modifiers/attributes.ts +0 -574
  818. package/src/modifiers/backdrop.ts +0 -290
  819. package/src/modifiers/background.ts +0 -165
  820. package/src/modifiers/base.ts +0 -1815
  821. package/src/modifiers/basic-sanitizer.ts +0 -227
  822. package/src/modifiers/border.ts +0 -574
  823. package/src/modifiers/builder.ts +0 -1747
  824. package/src/modifiers/core.ts +0 -521
  825. package/src/modifiers/css.ts +0 -148
  826. package/src/modifiers/effects.ts +0 -412
  827. package/src/modifiers/elements.ts +0 -541
  828. package/src/modifiers/filters.ts +0 -501
  829. package/src/modifiers/flexbox.ts +0 -180
  830. package/src/modifiers/font.ts +0 -149
  831. package/src/modifiers/grid.ts +0 -238
  832. package/src/modifiers/index.ts +0 -481
  833. package/src/modifiers/margin.ts +0 -218
  834. package/src/modifiers/padding.ts +0 -318
  835. package/src/modifiers/registry.ts +0 -444
  836. package/src/modifiers/responsive/__tests__/advanced-media-queries.test.ts +0 -392
  837. package/src/modifiers/responsive/__tests__/advanced-utilities.test.ts +0 -368
  838. package/src/modifiers/responsive/__tests__/comprehensive-browser-tests.test.ts +0 -556
  839. package/src/modifiers/responsive/__tests__/layout-patterns.test.ts +0 -558
  840. package/src/modifiers/responsive/advanced-utilities.ts +0 -562
  841. package/src/modifiers/responsive/breakpoints.ts +0 -330
  842. package/src/modifiers/responsive/css-generator.ts +0 -432
  843. package/src/modifiers/responsive/dev-tools.ts +0 -650
  844. package/src/modifiers/responsive/index.ts +0 -119
  845. package/src/modifiers/responsive/layout-patterns.ts +0 -592
  846. package/src/modifiers/responsive/performance.ts +0 -385
  847. package/src/modifiers/responsive/responsive-builder.ts +0 -620
  848. package/src/modifiers/responsive/responsive-modifier.ts +0 -410
  849. package/src/modifiers/responsive/types.ts +0 -226
  850. package/src/modifiers/responsive/utilities.ts +0 -478
  851. package/src/modifiers/scroll.ts +0 -297
  852. package/src/modifiers/shadows.ts +0 -321
  853. package/src/modifiers/size.ts +0 -208
  854. package/src/modifiers/text.ts +0 -416
  855. package/src/modifiers/transformations.ts +0 -640
  856. package/src/modifiers/transitions.ts +0 -218
  857. package/src/modifiers/types.ts +0 -889
  858. package/src/modifiers/typography.ts +0 -341
  859. package/src/modifiers/utility.ts +0 -209
  860. package/src/modifiers/utils.ts +0 -413
  861. package/src/plugins/__tests__/simplified-plugin-system.test.ts +0 -190
  862. package/src/plugins/component-loader-registry.ts +0 -371
  863. package/src/plugins/index.ts +0 -61
  864. package/src/plugins/legacy-adapter.ts +0 -84
  865. package/src/plugins/simplified-component-registry.ts +0 -130
  866. package/src/plugins/simplified-error-handler.ts +0 -372
  867. package/src/plugins/simplified-index.ts +0 -61
  868. package/src/plugins/simplified-lazy-loader.ts +0 -242
  869. package/src/plugins/simplified-plugin-manager.ts +0 -93
  870. package/src/plugins/simplified-tachui-instance.ts +0 -142
  871. package/src/plugins/simplified-types.ts +0 -79
  872. package/src/plugins/simplified-utils.ts +0 -118
  873. package/src/reactive/cleanup.ts +0 -241
  874. package/src/reactive/computed.ts +0 -281
  875. package/src/reactive/context.ts +0 -287
  876. package/src/reactive/effect.ts +0 -194
  877. package/src/reactive/enhanced-effect.ts +0 -318
  878. package/src/reactive/enhanced-signal.ts +0 -227
  879. package/src/reactive/equality.ts +0 -188
  880. package/src/reactive/globals.d.ts +0 -5
  881. package/src/reactive/index.ts +0 -150
  882. package/src/reactive/migration.ts +0 -335
  883. package/src/reactive/ownership.ts +0 -182
  884. package/src/reactive/scheduler.ts +0 -300
  885. package/src/reactive/signal.ts +0 -201
  886. package/src/reactive/theme.ts +0 -49
  887. package/src/reactive/types.ts +0 -103
  888. package/src/reactive/unified-scheduler.ts +0 -357
  889. package/src/runtime/component-context.ts +0 -343
  890. package/src/runtime/component.ts +0 -499
  891. package/src/runtime/context.ts +0 -527
  892. package/src/runtime/dev-tools.ts +0 -752
  893. package/src/runtime/development-warnings.ts +0 -114
  894. package/src/runtime/dom-bridge.ts +0 -570
  895. package/src/runtime/element-override.ts +0 -282
  896. package/src/runtime/error-boundary.ts +0 -955
  897. package/src/runtime/error-recovery.ts +0 -638
  898. package/src/runtime/error-reporting.ts +0 -808
  899. package/src/runtime/error-utils.ts +0 -698
  900. package/src/runtime/index.ts +0 -202
  901. package/src/runtime/lazy-component.ts +0 -268
  902. package/src/runtime/lifecycle.ts +0 -10
  903. package/src/runtime/mounting.ts +0 -17
  904. package/src/runtime/optimization.ts +0 -13
  905. package/src/runtime/performance.ts +0 -693
  906. package/src/runtime/props.ts +0 -434
  907. package/src/runtime/refs.ts +0 -13
  908. package/src/runtime/renderer.ts +0 -674
  909. package/src/runtime/semantic-role-manager.ts +0 -140
  910. package/src/runtime/types.ts +0 -282
  911. package/src/state/binding.ts +0 -381
  912. package/src/state/environment-object.ts +0 -444
  913. package/src/state/environment.ts +0 -351
  914. package/src/state/index.ts +0 -179
  915. package/src/state/observed-object.ts +0 -405
  916. package/src/state/state-manager.ts +0 -366
  917. package/src/state/state.ts +0 -339
  918. package/src/state/types.ts +0 -192
  919. package/src/sui-compat.ts +0 -163
  920. package/src/validation/__tests__/phase-1d-integration.test.ts +0 -558
  921. package/src/validation/advanced-debugging.ts +0 -860
  922. package/src/validation/build-time/detection.ts +0 -373
  923. package/src/validation/build-time/index.ts +0 -222
  924. package/src/validation/build-time/plugins.ts +0 -515
  925. package/src/validation/build-time/rules.ts +0 -624
  926. package/src/validation/build-time/transformer.ts +0 -372
  927. package/src/validation/build-time/types.ts +0 -232
  928. package/src/validation/comprehensive.ts +0 -1272
  929. package/src/validation/debug-tools.ts +0 -724
  930. package/src/validation/developer-experience.ts +0 -712
  931. package/src/validation/documentation-integration.ts +0 -835
  932. package/src/validation/enhanced-runtime.ts +0 -765
  933. package/src/validation/error-reporting.ts +0 -587
  934. package/src/validation/ide-integration.ts +0 -845
  935. package/src/validation/index.ts +0 -353
  936. package/src/validation/lifecycle-validation.ts +0 -636
  937. package/src/validation/performance-optimizer.ts +0 -599
  938. package/src/validation/plugin-registration.ts +0 -249
  939. package/src/validation/production-bypass.ts +0 -466
  940. package/src/validation/simple.ts +0 -465
  941. package/src/viewport/adapters/web-adapter.ts +0 -1385
  942. package/src/viewport/components.ts +0 -505
  943. package/src/viewport/environment.ts +0 -173
  944. package/src/viewport/index.ts +0 -290
  945. package/src/viewport/platform-detection.ts +0 -431
  946. package/src/viewport/types.ts +0 -371
  947. package/src/viewport/viewport-manager.ts +0 -979
@@ -1 +0,0 @@
1
- {"version":3,"file":"dom-bridge.js","sources":["../../src/runtime/dom-bridge.ts"],"sourcesContent":["/**\n * DOM Rendering Bridge Layer\n *\n * Critical missing piece that connects TachUI components to actual DOM rendering.\n * This bridges the gap between component instances and browser DOM elements.\n */\n\nimport type { ModifiableComponent } from '../modifiers/types'\nimport { createRoot as createReactiveRoot, getOwner } from '../reactive'\nimport { ComponentContextSymbol, createComponentContext, setCurrentComponentContext } from './component-context'\nimport { DOMRenderer } from './renderer'\nimport type { ComponentInstance, DOMNode } from './types'\n\n/**\n * Global DOM renderer instance\n */\nconst globalRenderer = new DOMRenderer()\n\n/**\n * Component mounting registry to track mounted components\n */\nconst mountedComponents = new Map<Element, ComponentInstance>()\nconst componentElements = new Map<ComponentInstance, Element[]>()\n\n/**\n * Track component instances with lifecycle hooks for processing\n */\nconst componentsWithLifecycleHooks = new Set<ComponentInstance>()\n\n/**\n * Register a component that has lifecycle hooks for later processing\n */\nexport function registerComponentWithLifecycleHooks(component: ComponentInstance): void {\n \n if ((component as any)._enhancedLifecycle) {\n componentsWithLifecycleHooks.add(component)\n }\n}\n\n/**\n * Process pending lifecycle hooks for components that were rendered but not mounted\n */\nfunction processPendingLifecycleHooks(): void {\n for (const component of componentsWithLifecycleHooks) {\n const enhancedLifecycle = (component as any)._enhancedLifecycle\n if (enhancedLifecycle && !component.domReady) {\n // Find DOM elements associated with this component by searching the DOM\n const elements = findDOMElementsForComponent(component)\n if (elements.length > 0) {\n // Set up DOM tracking\n component.domElements = new Map()\n elements.forEach((element, index) => {\n const key = element.id || `element-${index}`\n component.domElements!.set(key, element)\n if (!component.primaryElement) {\n component.primaryElement = element\n }\n })\n \n component.domReady = true\n \n // Process lifecycle hooks\n if (enhancedLifecycle.onDOMReady) {\n console.log('🚀 Processing delayed onDOMReady for component:', component.id)\n const cleanup = enhancedLifecycle.onDOMReady(\n component.domElements,\n component.primaryElement\n )\n if (typeof cleanup === 'function') {\n component.cleanup = component.cleanup || []\n component.cleanup.push(cleanup)\n }\n }\n \n if (enhancedLifecycle.onMount) {\n const cleanup = enhancedLifecycle.onMount()\n if (typeof cleanup === 'function') {\n component.cleanup = component.cleanup || []\n component.cleanup.push(cleanup)\n }\n }\n }\n }\n }\n \n // Clear the set of processed components\n componentsWithLifecycleHooks.clear()\n}\n\n/**\n * Find DOM elements associated with a component by searching the DOM\n * This is a fallback method for components that were rendered but not mounted\n */\nfunction findDOMElementsForComponent(component: ComponentInstance): Element[] {\n // For Image components, look for img elements that match the component's expected structure\n if (component.id.startsWith('image-')) {\n const allImages = document.querySelectorAll('img.tachui-image')\n return Array.from(allImages)\n }\n \n // For other components, this could be expanded with more specific search logic\n return []\n}\n\n/**\n * Create a reactive root that can mount component trees to DOM.\n * \n * This is the application-level mounting function for TachUI apps.\n * It creates a reactive context and mounts your component tree to the DOM.\n * \n * @param rootFunction - Function that returns the root component of your app\n * \n * @example\n * ```typescript\n * import { mountRoot } from '@tachui/core'\n * import { MyApp } from './MyApp'\n * \n * mountRoot(() => MyApp())\n * ```\n * \n * Note: This requires a DOM element with id=\"app\" to exist.\n */\nexport function mountRoot(rootFunction: () => ComponentInstance): void {\n createReactiveRoot((dispose) => {\n // Create root component context for State() to work throughout the entire app\n const rootContext = createComponentContext('root-app')\n setCurrentComponentContext(rootContext)\n \n // Also store context in reactive owner so State() can find it\n const owner = getOwner()\n if (owner) {\n owner.context.set(ComponentContextSymbol, rootContext)\n }\n \n let component: ComponentInstance\n \n try {\n component = rootFunction()\n\n // Find app container\n const container = document.getElementById('app')\n if (!container) {\n throw new Error('App container element with id=\"app\" not found')\n }\n\n // Mount the component tree to the container\n mountComponentTree(component, container)\n } catch (error) {\n // Reset context on error\n setCurrentComponentContext(null)\n if (owner) {\n owner.context.delete(ComponentContextSymbol)\n }\n throw error\n }\n\n // Set up cleanup that resets context when the root is disposed\n const originalDispose = dispose\n return () => {\n setCurrentComponentContext(null)\n if (owner) {\n owner.context.delete(ComponentContextSymbol)\n }\n return originalDispose()\n }\n })\n}\n\n/**\n * Mount a component tree to a DOM container\n */\nexport function mountComponentTree(component: ComponentInstance, container: Element, clearContainer: boolean = true): () => void {\n \n try {\n // Clear container only if requested (typically only for root components)\n if (clearContainer) {\n container.innerHTML = ''\n }\n\n // Render component to DOM nodes\n const domNodes = component.render()\n const nodeArray = Array.isArray(domNodes) ? domNodes : [domNodes]\n\n // Convert DOM nodes to actual DOM elements\n const elements: Element[] = []\n for (const node of nodeArray) {\n const element = globalRenderer.render(node, container)\n\n if (element instanceof DocumentFragment) {\n // Handle fragments by adding all child nodes\n const children = Array.from(element.childNodes)\n for (const child of children) {\n if (child instanceof Element) {\n elements.push(child)\n container.appendChild(child)\n }\n }\n } else if (element instanceof Element) {\n elements.push(element)\n container.appendChild(element)\n }\n }\n\n // ENHANCED: Set up DOM element tracking for lifecycle hooks\n if (elements.length > 0) {\n component.domElements = new Map()\n \n elements.forEach((element, index) => {\n const key = element.id || `element-${index}`\n component.domElements!.set(key, element)\n \n // Set primary element (first element with ID or index 0)\n if (!component.primaryElement) {\n component.primaryElement = element\n }\n })\n \n // Mark DOM as ready\n component.domReady = true\n \n // ENHANCED: Trigger onDOMReady with guaranteed DOM elements\n const enhancedLifecycle = (component as any)._enhancedLifecycle\n \n if (enhancedLifecycle?.onDOMReady) {\n const cleanup = enhancedLifecycle.onDOMReady(\n component.domElements, \n component.primaryElement\n )\n if (typeof cleanup === 'function') {\n component.cleanup = component.cleanup || []\n component.cleanup.push(cleanup)\n }\n }\n \n // Trigger legacy onMount for backwards compatibility\n if (enhancedLifecycle?.onMount) {\n const cleanup = enhancedLifecycle.onMount()\n if (typeof cleanup === 'function') {\n component.cleanup = component.cleanup || []\n component.cleanup.push(cleanup)\n }\n }\n }\n\n // Apply modifiers if this is a modifiable component\n if (isModifiableComponent(component)) {\n for (const element of elements) {\n applyModifiersToElement(element, component)\n }\n }\n\n // Bind event handlers\n for (const element of elements) {\n bindEventHandlers(element, component)\n }\n\n // REMOVED: Recursive child mounting - children are rendered as part of parent's render() method\n // This was causing duplicate mounting where child components were being mounted individually\n // instead of being rendered as part of their parent's DOM structure\n const childCleanupFunctions: (() => void)[] = []\n\n // Register component\n mountedComponents.set(container, component)\n componentElements.set(component, elements)\n component.mounted = true\n\n // Process any pending lifecycle hooks for components that were rendered but not mounted\n // Use setTimeout to ensure all DOM rendering is complete\n setTimeout(() => {\n processPendingLifecycleHooks()\n }, 0)\n\n // Return cleanup function\n return () => {\n // Clean up child components first\n childCleanupFunctions.forEach((cleanup) => cleanup())\n // Then clean up this component\n unmountComponentEnhanced(component, container)\n }\n } catch (error) {\n // ENHANCED: Better error handling with DOM context\n const domError = Object.assign(new Error(), error, {\n code: 'MOUNT_FAILED',\n context: 'mountComponentTree',\n }) as any\n \n const enhancedLifecycle = (component as any)._enhancedLifecycle\n if (enhancedLifecycle?.onDOMError) {\n enhancedLifecycle.onDOMError(domError, 'mount')\n } else if (enhancedLifecycle?.onError) {\n enhancedLifecycle.onError(domError)\n } else {\n console.error('Failed to mount component tree:', error)\n }\n throw error\n }\n}\n\n/**\n * Unmount a component from DOM\n */\nexport function unmountComponent(component: ComponentInstance, container: Element): void {\n const elements = componentElements.get(component)\n if (elements) {\n elements.forEach((element) => {\n if (element.parentNode) {\n element.parentNode.removeChild(element)\n }\n })\n componentElements.delete(component)\n }\n\n mountedComponents.delete(container)\n component.mounted = false\n\n // Run cleanup functions\n if (component.cleanup) {\n component.cleanup.forEach((cleanup) => cleanup())\n component.cleanup = []\n }\n}\n\n/**\n * Enhanced unmount component with lifecycle hooks\n */\nexport function unmountComponentEnhanced(component: ComponentInstance, container: Element): void {\n try {\n // Trigger onUnmount lifecycle\n const enhancedLifecycle = (component as any)._enhancedLifecycle\n if (enhancedLifecycle?.onUnmount) {\n enhancedLifecycle.onUnmount()\n }\n \n // Run cleanup functions\n if (component.cleanup) {\n component.cleanup.forEach((cleanup) => {\n try {\n cleanup()\n } catch (error) {\n console.error(`Cleanup error for component ${component.id}:`, error)\n }\n })\n component.cleanup = []\n }\n \n // Remove DOM elements\n const elements = componentElements.get(component)\n if (elements) {\n elements.forEach((element) => {\n if (element.parentNode) {\n element.parentNode.removeChild(element)\n }\n })\n componentElements.delete(component)\n }\n \n // Clear enhanced DOM tracking\n if (component.domElements) {\n component.domElements.clear()\n }\n \n // Clear references\n component.primaryElement = undefined\n component.domReady = false\n component.mounted = false\n \n mountedComponents.delete(container)\n } catch (error) {\n const domError = Object.assign(new Error(), error, {\n code: 'UNMOUNT_FAILED',\n context: 'unmountComponentEnhanced',\n }) as any\n \n const enhancedLifecycle = (component as any)._enhancedLifecycle\n if (enhancedLifecycle?.onDOMError) {\n enhancedLifecycle.onDOMError(domError, 'unmount')\n } else {\n console.error('Component unmounting failed:', error)\n }\n }\n}\n\n/**\n * Apply modifier chains to DOM elements\n */\nfunction applyModifiersToElement(element: Element, component: ModifiableComponent<any>): void {\n \n if (!('modifiers' in component) || !component.modifiers) {\n return\n }\n\n const htmlElement = element as HTMLElement\n const modifiers = component.modifiers\n\n // Create a DOMNode wrapper for the HTMLElement to match the modifier interface\n const domNode: DOMNode = {\n type: 'element',\n tag: htmlElement.tagName.toLowerCase(),\n props: {},\n element: htmlElement,\n }\n\n // Apply each modifier to the DOM element\n for (const modifier of modifiers) {\n try {\n // Each modifier should apply its styles/properties to the element\n if (modifier && typeof modifier.apply === 'function') {\n modifier.apply(domNode, {\n componentId: component.id,\n componentInstance: component,\n element: htmlElement,\n phase: 'creation',\n })\n }\n } catch (error) {\n console.warn('Failed to apply modifier:', modifier, error)\n }\n }\n}\n\n/**\n * Bind component event handlers to DOM events\n */\nfunction bindEventHandlers(element: Element, component: ComponentInstance): void {\n const htmlElement = element as HTMLElement\n\n // Handle component-level events from props\n if (component.props) {\n const props = component.props\n\n // Bind common event handlers\n if (props.onClick && typeof props.onClick === 'function') {\n htmlElement.addEventListener('click', props.onClick)\n }\n\n if (props.onMouseEnter && typeof props.onMouseEnter === 'function') {\n htmlElement.addEventListener('mouseenter', props.onMouseEnter)\n }\n\n if (props.onMouseLeave && typeof props.onMouseLeave === 'function') {\n htmlElement.addEventListener('mouseleave', props.onMouseLeave)\n }\n\n if (props.onFocus && typeof props.onFocus === 'function') {\n htmlElement.addEventListener('focus', props.onFocus)\n }\n\n if (props.onBlur && typeof props.onBlur === 'function') {\n htmlElement.addEventListener('blur', props.onBlur)\n }\n }\n\n // Handle modifier-based events if this is a modifiable component\n if (isModifiableComponent(component) && component.modifiers) {\n for (const modifier of component.modifiers) {\n if (modifier && 'eventHandlers' in modifier && modifier.eventHandlers) {\n for (const [eventType, handler] of Object.entries(modifier.eventHandlers)) {\n if (typeof handler === 'function') {\n htmlElement.addEventListener(\n eventType as keyof HTMLElementEventMap,\n handler as EventListener\n )\n }\n }\n }\n }\n }\n}\n\n/**\n * Type guard to check if component is modifiable\n */\nfunction isModifiableComponent(component: any): component is ModifiableComponent<any> {\n return (\n component &&\n typeof component === 'object' &&\n ('modifiers' in component || 'modifier' in component)\n )\n}\n\n/**\n * Recursively mount component children\n */\nexport function mountComponentChildren(\n children: ComponentInstance[],\n container: Element\n): (() => void)[] {\n const cleanupFunctions: (() => void)[] = []\n\n for (const child of children) {\n const childCleanup = mountComponentTree(child, container)\n cleanupFunctions.push(childCleanup)\n }\n\n return cleanupFunctions\n}\n\n/**\n * Update a mounted component with new props\n */\nexport function updateComponent(component: ComponentInstance, newProps: any): void {\n const elements = componentElements.get(component)\n if (!elements) {\n console.warn('Attempted to update unmounted component')\n return\n }\n\n // Update props\n component.prevProps = component.props\n component.props = { ...component.props, ...newProps }\n\n // Re-render if needed\n const container = elements[0]?.parentElement\n if (container) {\n unmountComponent(component, container)\n mountComponentTree(component, container)\n }\n}\n\n/**\n * Get mounted component from DOM element\n */\nexport function getComponentFromElement(element: Element): ComponentInstance | undefined {\n let current: Element | null = element\n while (current) {\n const component = mountedComponents.get(current)\n if (component) {\n return component\n }\n current = current.parentElement\n }\n return undefined\n}\n\n\n/**\n * Debug utilities for DOM bridge\n */\nexport const DOMBridgeDebug = {\n getMountedComponents: () => Array.from(mountedComponents.entries()),\n getComponentElements: (component: ComponentInstance) => componentElements.get(component),\n isComponentMounted: (component: ComponentInstance) => component.mounted || false,\n\n /**\n * Validate that all components are properly mounted\n */\n validateMounting(): { valid: boolean; issues: string[] } {\n const issues: string[] = []\n\n for (const [container, component] of mountedComponents.entries()) {\n if (!document.contains(container)) {\n issues.push(`Container for component ${component.id} is not in DOM`)\n }\n\n if (!component.mounted) {\n issues.push(`Component ${component.id} marked as unmounted but still registered`)\n }\n\n const elements = componentElements.get(component)\n if (!elements || elements.length === 0) {\n issues.push(`Component ${component.id} has no associated DOM elements`)\n }\n }\n\n return {\n valid: issues.length === 0,\n issues,\n }\n },\n}\n"],"names":["globalRenderer","DOMRenderer","mountedComponents","componentElements","componentsWithLifecycleHooks","registerComponentWithLifecycleHooks","component","processPendingLifecycleHooks","enhancedLifecycle","elements","findDOMElementsForComponent","element","index","key","cleanup","allImages","mountRoot","rootFunction","createReactiveRoot","dispose","rootContext","createComponentContext","setCurrentComponentContext","owner","getOwner","ComponentContextSymbol","container","mountComponentTree","error","originalDispose","clearContainer","domNodes","nodeArray","node","children","child","isModifiableComponent","applyModifiersToElement","bindEventHandlers","childCleanupFunctions","unmountComponentEnhanced","domError","unmountComponent","htmlElement","modifiers","domNode","modifier","props","eventType","handler","mountComponentChildren","cleanupFunctions","childCleanup","updateComponent","newProps","getComponentFromElement","current","DOMBridgeDebug","issues"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./development-warnings.cjs"),o=new Set(["div","section","article","aside","nav","main","header","footer","h1","h2","h3","h4","h5","h6","p","span","strong","em","code","pre","blockquote","address","ul","ol","li","dl","dt","dd","button","a","input","textarea","select","form","label","img","video","audio","canvas","svg","picture","source","table","thead","tbody","tfoot","tr","th","td","caption","colgroup","col","fieldset","legend","optgroup","option","datalist","output","progress","meter","details","summary","dialog","abbr","cite","dfn","kbd","mark","q","s","samp","small","sub","sup","time","u","var","body","head","title","base","link","meta","style","script","noscript","embed","iframe","object","param","track","map","area","menu","menuitem"]),c=new Map([["nav",{role:"navigation",applyARIA:!0}],["main",{role:"main",applyARIA:!0}],["article",{role:"article",applyARIA:!0}],["section",{role:"region",applyARIA:!0}],["aside",{role:"complementary",applyARIA:!0}],["header",{role:"banner",applyARIA:!1}],["footer",{role:"contentinfo",applyARIA:!1}],["form",{role:"form",applyARIA:!0}],["search",{role:"search",applyARIA:!0}],["dialog",{role:"dialog",applyARIA:!0}],["button",{role:"button",applyARIA:!1}],["a",{role:"link",applyARIA:!1}]]),u=new Map([["HStack",{warningLevel:"none",idealTags:["nav","header","footer","section","article","aside","main","div"]}],["VStack",{warningLevel:"none",idealTags:["main","section","article","aside","header","footer","div"]}],["ZStack",{warningLevel:"none",idealTags:["article","aside","section","div"]}],["Text",{warningLevel:"none",idealTags:["h1","h2","h3","h4","h5","h6","p","span","strong","em"]}],["Image",{warningLevel:"warning",problematicTags:["figure","picture"]}],["Spacer",{warningLevel:"none"}],["Button",{warningLevel:"warning",problematicTags:["div","span","a"]}],["Link",{warningLevel:"warning",problematicTags:["div","span","button"]}]]);function d(n,i){const e=u.get(n);return e?e.warningLevel==="none"?!1:e.warningLevel==="warning"&&e.problematicTags?e.problematicTags.includes(i):!(e.idealTags&&e.idealTags.includes(i)):!0}class g{static validate(i,e){return o.has(i)?{valid:!0,warnings:this.checkSemanticWarnings(i,e),semanticRole:c.get(i)}:(t.DevelopmentWarnings.errorInvalidTag(i,e),{valid:!1,warning:`Invalid HTML tag '${i}' specified for ${e}. Tag will be used as-is.`,severity:"error"})}static checkSemanticWarnings(i,e){const r=[];if(["button","a","input","select","textarea"].includes(i)&&["HStack","VStack","ZStack"].includes(e)){const a=`Using interactive tag '${i}' on layout component ${e} may cause accessibility issues.`;r.push({message:a,severity:"warning"}),t.DevelopmentWarnings.warnAccessibility(e,i,"Interactive tag on layout component may cause unexpected behavior")}if(i==="li"&&!["VStack","HStack"].includes(e)&&(r.push({message:"<li> tags should typically be used within list structures.",severity:"info"}),t.DevelopmentWarnings.warnProblematicCombination(e,i,"Consider using within <ul> or <ol> structure","info")),["h1","h2","h3","h4","h5","h6"].includes(i)&&["HStack","VStack","ZStack"].includes(e)){const a=`Using heading tag '${i}' on layout component ${e}. Consider using Text component instead.`;r.push({message:a,severity:"info"}),t.DevelopmentWarnings.warnProblematicCombination(e,i,"Heading tags are better suited for Text components","info")}if(["form","fieldset","legend"].includes(i)&&!["VStack","HStack","Form"].includes(e)){const a=`Form tag '${i}' used on ${e}. Ensure proper form semantics.`;r.push({message:a,severity:"info"}),t.DevelopmentWarnings.warnProblematicCombination(e,i,"Form tags require proper semantic context","info")}return r}}let l={autoApplySemanticRoles:!0,warnOnOverrides:process.env.NODE_ENV!=="production",warnOnSemanticIssues:process.env.NODE_ENV!=="production",validateTags:!0,allowInvalidTags:!0};function f(n){l={...l,...n}}function m(){return{...l}}function v(n,i,e){const r=e||i,a=m();let s={valid:!0};return e&&(a.warnOnOverrides&&d(n,e)&&t.DevelopmentWarnings.warnElementOverride(n,i,e),a.validateTags&&(s=g.validate(e,n),!s.valid&&!a.allowInvalidTags))?(t.DevelopmentWarnings.warnProblematicCombination(n,e,`Invalid tag rejected, using default '${i}' instead`,"warning"),{tag:i,validation:s}):{tag:r,validation:s}}function p(n,i){return e=>v(n,i,e)}exports.COMPONENT_ELIGIBILITY=u;exports.ElementTagValidator=g;exports.SEMANTIC_TAG_ROLES=c;exports.VALID_HTML_TAGS=o;exports.configureElementOverrides=f;exports.createElementOverrideValidator=p;exports.getElementOverrideConfig=m;exports.processElementOverride=v;exports.shouldWarnOnOverride=d;
2
- //# sourceMappingURL=element-override.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"element-override.cjs","sources":["../../src/runtime/element-override.ts"],"sourcesContent":["/**\n * Element Override System - Tag Specification Enhancement\n * \n * Enables components to override their default HTML tags for semantic markup,\n * improving SEO and accessibility while preserving all styling and functionality.\n */\n\nimport { DevelopmentWarnings } from './development-warnings'\n\nexport interface ElementOverrideProps {\n element?: string\n}\n\nexport interface ValidationResult {\n valid: boolean\n warnings?: Warning[]\n severity?: 'error' | 'warning' | 'info'\n warning?: string\n semanticRole?: SemanticRoleInfo\n}\n\nexport interface Warning {\n message: string\n severity: 'error' | 'warning' | 'info'\n}\n\nexport interface SemanticRoleInfo {\n role: string\n applyARIA: boolean\n}\n\nexport interface ElementOverrideConfig {\n // Accessibility\n autoApplySemanticRoles: boolean\n \n // Development warnings\n warnOnOverrides: boolean\n warnOnSemanticIssues: boolean\n \n // Validation\n validateTags: boolean\n allowInvalidTags: boolean\n}\n\n// Valid HTML tag validation\nexport const VALID_HTML_TAGS = new Set([\n // Container tags\n 'div', 'section', 'article', 'aside', 'nav', 'main', 'header', 'footer',\n // Heading tags \n 'h1', 'h2', 'h3', 'h4', 'h5', 'h6',\n // Content tags\n 'p', 'span', 'strong', 'em', 'code', 'pre', 'blockquote', 'address',\n // List tags\n 'ul', 'ol', 'li', 'dl', 'dt', 'dd',\n // Interactive tags (with warnings)\n 'button', 'a', 'input', 'textarea', 'select', 'form', 'label',\n // Media tags\n 'img', 'video', 'audio', 'canvas', 'svg', 'picture', 'source',\n // Table tags\n 'table', 'thead', 'tbody', 'tfoot', 'tr', 'th', 'td', 'caption', 'colgroup', 'col',\n // Form tags\n 'fieldset', 'legend', 'optgroup', 'option', 'datalist', 'output', 'progress', 'meter',\n // Interactive content\n 'details', 'summary', 'dialog',\n // Text semantics\n 'abbr', 'cite', 'dfn', 'kbd', 'mark', 'q', 's', 'samp', 'small', 'sub', 'sup', 'time', 'u', 'var',\n // Document sections\n 'body', 'head', 'title', 'base', 'link', 'meta', 'style', 'script', 'noscript',\n // Embedded content\n 'embed', 'iframe', 'object', 'param', 'track', 'map', 'area',\n // Interactive elements\n 'menu', 'menuitem'\n])\n\nexport const SEMANTIC_TAG_ROLES = new Map<string, SemanticRoleInfo>([\n ['nav', { role: 'navigation', applyARIA: true }],\n ['main', { role: 'main', applyARIA: true }],\n ['article', { role: 'article', applyARIA: true }],\n ['section', { role: 'region', applyARIA: true }],\n ['aside', { role: 'complementary', applyARIA: true }],\n ['header', { role: 'banner', applyARIA: false }], // Context dependent - may not always be page banner\n ['footer', { role: 'contentinfo', applyARIA: false }], // Context dependent - may not always be page footer\n ['form', { role: 'form', applyARIA: true }],\n ['search', { role: 'search', applyARIA: true }],\n ['dialog', { role: 'dialog', applyARIA: true }],\n ['button', { role: 'button', applyARIA: false }], // Usually implicit\n ['a', { role: 'link', applyARIA: false }], // Usually implicit\n])\n\n/**\n * Component Eligibility Matrix - Warning Levels\n * Based on design/Enh-TagSpecification.md Component Eligibility Matrix\n */\nexport const COMPONENT_ELIGIBILITY = new Map<string, { warningLevel: 'none' | 'info' | 'warning', idealTags?: string[], problematicTags?: string[] }>([\n // Layout Components - Ideal for semantic containers (Warning Level: None)\n ['HStack', { warningLevel: 'none', idealTags: ['nav', 'header', 'footer', 'section', 'article', 'aside', 'main', 'div'] }],\n ['VStack', { warningLevel: 'none', idealTags: ['main', 'section', 'article', 'aside', 'header', 'footer', 'div'] }],\n ['ZStack', { warningLevel: 'none', idealTags: ['article', 'aside', 'section', 'div'] }],\n \n // Content Components - Common for specific overrides (Warning Level: None for appropriate tags)\n ['Text', { warningLevel: 'none', idealTags: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'span', 'strong', 'em'] }],\n ['Image', { warningLevel: 'warning', problematicTags: ['figure', 'picture'] }], // May break functionality\n ['Spacer', { warningLevel: 'none' }],\n \n // Interactive Components - Use with warnings\n ['Button', { warningLevel: 'warning', problematicTags: ['div', 'span', 'a'] }], // May break accessibility\n ['Link', { warningLevel: 'warning', problematicTags: ['div', 'span', 'button'] }], // May break navigation\n])\n\n/**\n * Check if an element override should show a warning based on component eligibility matrix\n */\nexport function shouldWarnOnOverride(componentType: string, tag: string): boolean {\n const eligibility = COMPONENT_ELIGIBILITY.get(componentType)\n \n if (!eligibility) {\n // Unknown component - always warn for safety\n return true\n }\n\n // If component has no warning for any overrides\n if (eligibility.warningLevel === 'none') {\n return false\n }\n\n // If component warns for specific problematic tags\n if (eligibility.warningLevel === 'warning' && eligibility.problematicTags) {\n return eligibility.problematicTags.includes(tag)\n }\n\n // If component has ideal tags defined, only warn for non-ideal ones\n if (eligibility.idealTags && eligibility.idealTags.includes(tag)) {\n return false\n }\n\n // Default to warning for unknown combinations\n return true\n}\n\n/**\n * The applyARIA flag controls whether the framework automatically adds \n * the corresponding ARIA role attribute to elements with semantic tags.\n * \n * applyARIA: true - Always add the ARIA role (e.g., <nav> gets role=\"navigation\")\n * applyARIA: false - Don't automatically add ARIA role due to context sensitivity\n * \n * Examples:\n * - <nav> always represents navigation → applyARIA: true\n * - <header> could be page banner OR section header → applyARIA: false \n * - <footer> could be page footer OR article footer → applyARIA: false\n * \n * When applyARIA is false, developers should manually specify appropriate \n * ARIA roles using the .aria() modifier when semantic meaning is ambiguous.\n */\n\nexport class ElementTagValidator {\n static validate(tag: string, componentType: string): ValidationResult {\n if (!VALID_HTML_TAGS.has(tag)) {\n // Show development warning for invalid tags\n DevelopmentWarnings.errorInvalidTag(tag, componentType)\n \n return {\n valid: false,\n warning: `Invalid HTML tag '${tag}' specified for ${componentType}. Tag will be used as-is.`,\n severity: 'error'\n }\n }\n\n // Check for potentially problematic combinations\n const warnings = this.checkSemanticWarnings(tag, componentType)\n \n return {\n valid: true,\n warnings,\n semanticRole: SEMANTIC_TAG_ROLES.get(tag)\n }\n }\n\n private static checkSemanticWarnings(tag: string, componentType: string): Warning[] {\n const warnings: Warning[] = []\n\n // Warn about interactive tags on layout components\n if (['button', 'a', 'input', 'select', 'textarea'].includes(tag)) {\n if (['HStack', 'VStack', 'ZStack'].includes(componentType)) {\n const message = `Using interactive tag '${tag}' on layout component ${componentType} may cause accessibility issues.`\n warnings.push({ message, severity: 'warning' })\n DevelopmentWarnings.warnAccessibility(componentType, tag, 'Interactive tag on layout component may cause unexpected behavior')\n }\n }\n\n // Warn about structural violations\n if (tag === 'li' && !['VStack', 'HStack'].includes(componentType)) {\n const message = `<li> tags should typically be used within list structures.`\n warnings.push({ message, severity: 'info' })\n DevelopmentWarnings.warnProblematicCombination(componentType, tag, 'Consider using within <ul> or <ol> structure', 'info')\n }\n\n // Warn about heading tags on layout components\n if (['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag)) {\n if (['HStack', 'VStack', 'ZStack'].includes(componentType)) {\n const message = `Using heading tag '${tag}' on layout component ${componentType}. Consider using Text component instead.`\n warnings.push({ message, severity: 'info' })\n DevelopmentWarnings.warnProblematicCombination(componentType, tag, 'Heading tags are better suited for Text components', 'info')\n }\n }\n\n // Warn about form tags on non-form components\n if (['form', 'fieldset', 'legend'].includes(tag)) {\n if (!['VStack', 'HStack', 'Form'].includes(componentType)) {\n const message = `Form tag '${tag}' used on ${componentType}. Ensure proper form semantics.`\n warnings.push({ message, severity: 'info' })\n DevelopmentWarnings.warnProblematicCombination(componentType, tag, 'Form tags require proper semantic context', 'info')\n }\n }\n\n return warnings\n }\n}\n\n// Global configuration\nlet globalConfig: ElementOverrideConfig = {\n autoApplySemanticRoles: true,\n warnOnOverrides: process.env.NODE_ENV !== 'production',\n warnOnSemanticIssues: process.env.NODE_ENV !== 'production',\n validateTags: true,\n allowInvalidTags: true\n}\n\nexport function configureElementOverrides(config: Partial<ElementOverrideConfig>): void {\n globalConfig = { ...globalConfig, ...config }\n}\n\nexport function getElementOverrideConfig(): ElementOverrideConfig {\n return { ...globalConfig }\n}\n\n/**\n * Process element override for a component with validation and warnings\n */\nexport function processElementOverride(\n componentType: string,\n defaultTag: string,\n overrideTag?: string\n): { tag: string; validation: ValidationResult } {\n const effectiveTag = overrideTag || defaultTag\n const config = getElementOverrideConfig()\n\n // Always validate in development, even when validation is disabled\n let validation: ValidationResult = { valid: true }\n \n if (overrideTag) {\n // Show override warning if enabled and appropriate per component eligibility matrix\n if (config.warnOnOverrides && shouldWarnOnOverride(componentType, overrideTag)) {\n DevelopmentWarnings.warnElementOverride(componentType, defaultTag, overrideTag)\n }\n\n // Validate tag if enabled\n if (config.validateTags) {\n validation = ElementTagValidator.validate(overrideTag, componentType)\n \n // If validation fails and we don't allow invalid tags, use default\n if (!validation.valid && !config.allowInvalidTags) {\n DevelopmentWarnings.warnProblematicCombination(\n componentType, \n overrideTag, \n `Invalid tag rejected, using default '${defaultTag}' instead`, \n 'warning'\n )\n return { tag: defaultTag, validation }\n }\n }\n }\n\n return { tag: effectiveTag, validation }\n}\n\n/**\n * Create element override validation helper for components\n */\nexport function createElementOverrideValidator(componentType: string, defaultTag: string) {\n return (overrideTag?: string) => processElementOverride(componentType, defaultTag, overrideTag)\n}"],"names":["VALID_HTML_TAGS","SEMANTIC_TAG_ROLES","COMPONENT_ELIGIBILITY","shouldWarnOnOverride","componentType","tag","eligibility","ElementTagValidator","DevelopmentWarnings","warnings","message","globalConfig","configureElementOverrides","config","getElementOverrideConfig","processElementOverride","defaultTag","overrideTag","effectiveTag","validation","createElementOverrideValidator"],"mappings":"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"}
@@ -1,214 +0,0 @@
1
- import { DevelopmentWarnings as r } from "./development-warnings.js";
2
- const o = /* @__PURE__ */ new Set([
3
- // Container tags
4
- "div",
5
- "section",
6
- "article",
7
- "aside",
8
- "nav",
9
- "main",
10
- "header",
11
- "footer",
12
- // Heading tags
13
- "h1",
14
- "h2",
15
- "h3",
16
- "h4",
17
- "h5",
18
- "h6",
19
- // Content tags
20
- "p",
21
- "span",
22
- "strong",
23
- "em",
24
- "code",
25
- "pre",
26
- "blockquote",
27
- "address",
28
- // List tags
29
- "ul",
30
- "ol",
31
- "li",
32
- "dl",
33
- "dt",
34
- "dd",
35
- // Interactive tags (with warnings)
36
- "button",
37
- "a",
38
- "input",
39
- "textarea",
40
- "select",
41
- "form",
42
- "label",
43
- // Media tags
44
- "img",
45
- "video",
46
- "audio",
47
- "canvas",
48
- "svg",
49
- "picture",
50
- "source",
51
- // Table tags
52
- "table",
53
- "thead",
54
- "tbody",
55
- "tfoot",
56
- "tr",
57
- "th",
58
- "td",
59
- "caption",
60
- "colgroup",
61
- "col",
62
- // Form tags
63
- "fieldset",
64
- "legend",
65
- "optgroup",
66
- "option",
67
- "datalist",
68
- "output",
69
- "progress",
70
- "meter",
71
- // Interactive content
72
- "details",
73
- "summary",
74
- "dialog",
75
- // Text semantics
76
- "abbr",
77
- "cite",
78
- "dfn",
79
- "kbd",
80
- "mark",
81
- "q",
82
- "s",
83
- "samp",
84
- "small",
85
- "sub",
86
- "sup",
87
- "time",
88
- "u",
89
- "var",
90
- // Document sections
91
- "body",
92
- "head",
93
- "title",
94
- "base",
95
- "link",
96
- "meta",
97
- "style",
98
- "script",
99
- "noscript",
100
- // Embedded content
101
- "embed",
102
- "iframe",
103
- "object",
104
- "param",
105
- "track",
106
- "map",
107
- "area",
108
- // Interactive elements
109
- "menu",
110
- "menuitem"
111
- ]), c = /* @__PURE__ */ new Map([
112
- ["nav", { role: "navigation", applyARIA: !0 }],
113
- ["main", { role: "main", applyARIA: !0 }],
114
- ["article", { role: "article", applyARIA: !0 }],
115
- ["section", { role: "region", applyARIA: !0 }],
116
- ["aside", { role: "complementary", applyARIA: !0 }],
117
- ["header", { role: "banner", applyARIA: !1 }],
118
- // Context dependent - may not always be page banner
119
- ["footer", { role: "contentinfo", applyARIA: !1 }],
120
- // Context dependent - may not always be page footer
121
- ["form", { role: "form", applyARIA: !0 }],
122
- ["search", { role: "search", applyARIA: !0 }],
123
- ["dialog", { role: "dialog", applyARIA: !0 }],
124
- ["button", { role: "button", applyARIA: !1 }],
125
- // Usually implicit
126
- ["a", { role: "link", applyARIA: !1 }]
127
- // Usually implicit
128
- ]), u = /* @__PURE__ */ new Map([
129
- // Layout Components - Ideal for semantic containers (Warning Level: None)
130
- ["HStack", { warningLevel: "none", idealTags: ["nav", "header", "footer", "section", "article", "aside", "main", "div"] }],
131
- ["VStack", { warningLevel: "none", idealTags: ["main", "section", "article", "aside", "header", "footer", "div"] }],
132
- ["ZStack", { warningLevel: "none", idealTags: ["article", "aside", "section", "div"] }],
133
- // Content Components - Common for specific overrides (Warning Level: None for appropriate tags)
134
- ["Text", { warningLevel: "none", idealTags: ["h1", "h2", "h3", "h4", "h5", "h6", "p", "span", "strong", "em"] }],
135
- ["Image", { warningLevel: "warning", problematicTags: ["figure", "picture"] }],
136
- // May break functionality
137
- ["Spacer", { warningLevel: "none" }],
138
- // Interactive Components - Use with warnings
139
- ["Button", { warningLevel: "warning", problematicTags: ["div", "span", "a"] }],
140
- // May break accessibility
141
- ["Link", { warningLevel: "warning", problematicTags: ["div", "span", "button"] }]
142
- // May break navigation
143
- ]);
144
- function d(i, a) {
145
- const e = u.get(i);
146
- return e ? e.warningLevel === "none" ? !1 : e.warningLevel === "warning" && e.problematicTags ? e.problematicTags.includes(a) : !(e.idealTags && e.idealTags.includes(a)) : !0;
147
- }
148
- class g {
149
- static validate(a, e) {
150
- return o.has(a) ? {
151
- valid: !0,
152
- warnings: this.checkSemanticWarnings(a, e),
153
- semanticRole: c.get(a)
154
- } : (r.errorInvalidTag(a, e), {
155
- valid: !1,
156
- warning: `Invalid HTML tag '${a}' specified for ${e}. Tag will be used as-is.`,
157
- severity: "error"
158
- });
159
- }
160
- static checkSemanticWarnings(a, e) {
161
- const t = [];
162
- if (["button", "a", "input", "select", "textarea"].includes(a) && ["HStack", "VStack", "ZStack"].includes(e)) {
163
- const n = `Using interactive tag '${a}' on layout component ${e} may cause accessibility issues.`;
164
- t.push({ message: n, severity: "warning" }), r.warnAccessibility(e, a, "Interactive tag on layout component may cause unexpected behavior");
165
- }
166
- if (a === "li" && !["VStack", "HStack"].includes(e) && (t.push({ message: "<li> tags should typically be used within list structures.", severity: "info" }), r.warnProblematicCombination(e, a, "Consider using within <ul> or <ol> structure", "info")), ["h1", "h2", "h3", "h4", "h5", "h6"].includes(a) && ["HStack", "VStack", "ZStack"].includes(e)) {
167
- const n = `Using heading tag '${a}' on layout component ${e}. Consider using Text component instead.`;
168
- t.push({ message: n, severity: "info" }), r.warnProblematicCombination(e, a, "Heading tags are better suited for Text components", "info");
169
- }
170
- if (["form", "fieldset", "legend"].includes(a) && !["VStack", "HStack", "Form"].includes(e)) {
171
- const n = `Form tag '${a}' used on ${e}. Ensure proper form semantics.`;
172
- t.push({ message: n, severity: "info" }), r.warnProblematicCombination(e, a, "Form tags require proper semantic context", "info");
173
- }
174
- return t;
175
- }
176
- }
177
- let l = {
178
- autoApplySemanticRoles: !0,
179
- warnOnOverrides: process.env.NODE_ENV !== "production",
180
- warnOnSemanticIssues: process.env.NODE_ENV !== "production",
181
- validateTags: !0,
182
- allowInvalidTags: !0
183
- };
184
- function v(i) {
185
- l = { ...l, ...i };
186
- }
187
- function m() {
188
- return { ...l };
189
- }
190
- function f(i, a, e) {
191
- const t = e || a, n = m();
192
- let s = { valid: !0 };
193
- return e && (n.warnOnOverrides && d(i, e) && r.warnElementOverride(i, a, e), n.validateTags && (s = g.validate(e, i), !s.valid && !n.allowInvalidTags)) ? (r.warnProblematicCombination(
194
- i,
195
- e,
196
- `Invalid tag rejected, using default '${a}' instead`,
197
- "warning"
198
- ), { tag: a, validation: s }) : { tag: t, validation: s };
199
- }
200
- function h(i, a) {
201
- return (e) => f(i, a, e);
202
- }
203
- export {
204
- u as COMPONENT_ELIGIBILITY,
205
- g as ElementTagValidator,
206
- c as SEMANTIC_TAG_ROLES,
207
- o as VALID_HTML_TAGS,
208
- v as configureElementOverrides,
209
- h as createElementOverrideValidator,
210
- m as getElementOverrideConfig,
211
- f as processElementOverride,
212
- d as shouldWarnOnOverride
213
- };
214
- //# sourceMappingURL=element-override.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"element-override.js","sources":["../../src/runtime/element-override.ts"],"sourcesContent":["/**\n * Element Override System - Tag Specification Enhancement\n * \n * Enables components to override their default HTML tags for semantic markup,\n * improving SEO and accessibility while preserving all styling and functionality.\n */\n\nimport { DevelopmentWarnings } from './development-warnings'\n\nexport interface ElementOverrideProps {\n element?: string\n}\n\nexport interface ValidationResult {\n valid: boolean\n warnings?: Warning[]\n severity?: 'error' | 'warning' | 'info'\n warning?: string\n semanticRole?: SemanticRoleInfo\n}\n\nexport interface Warning {\n message: string\n severity: 'error' | 'warning' | 'info'\n}\n\nexport interface SemanticRoleInfo {\n role: string\n applyARIA: boolean\n}\n\nexport interface ElementOverrideConfig {\n // Accessibility\n autoApplySemanticRoles: boolean\n \n // Development warnings\n warnOnOverrides: boolean\n warnOnSemanticIssues: boolean\n \n // Validation\n validateTags: boolean\n allowInvalidTags: boolean\n}\n\n// Valid HTML tag validation\nexport const VALID_HTML_TAGS = new Set([\n // Container tags\n 'div', 'section', 'article', 'aside', 'nav', 'main', 'header', 'footer',\n // Heading tags \n 'h1', 'h2', 'h3', 'h4', 'h5', 'h6',\n // Content tags\n 'p', 'span', 'strong', 'em', 'code', 'pre', 'blockquote', 'address',\n // List tags\n 'ul', 'ol', 'li', 'dl', 'dt', 'dd',\n // Interactive tags (with warnings)\n 'button', 'a', 'input', 'textarea', 'select', 'form', 'label',\n // Media tags\n 'img', 'video', 'audio', 'canvas', 'svg', 'picture', 'source',\n // Table tags\n 'table', 'thead', 'tbody', 'tfoot', 'tr', 'th', 'td', 'caption', 'colgroup', 'col',\n // Form tags\n 'fieldset', 'legend', 'optgroup', 'option', 'datalist', 'output', 'progress', 'meter',\n // Interactive content\n 'details', 'summary', 'dialog',\n // Text semantics\n 'abbr', 'cite', 'dfn', 'kbd', 'mark', 'q', 's', 'samp', 'small', 'sub', 'sup', 'time', 'u', 'var',\n // Document sections\n 'body', 'head', 'title', 'base', 'link', 'meta', 'style', 'script', 'noscript',\n // Embedded content\n 'embed', 'iframe', 'object', 'param', 'track', 'map', 'area',\n // Interactive elements\n 'menu', 'menuitem'\n])\n\nexport const SEMANTIC_TAG_ROLES = new Map<string, SemanticRoleInfo>([\n ['nav', { role: 'navigation', applyARIA: true }],\n ['main', { role: 'main', applyARIA: true }],\n ['article', { role: 'article', applyARIA: true }],\n ['section', { role: 'region', applyARIA: true }],\n ['aside', { role: 'complementary', applyARIA: true }],\n ['header', { role: 'banner', applyARIA: false }], // Context dependent - may not always be page banner\n ['footer', { role: 'contentinfo', applyARIA: false }], // Context dependent - may not always be page footer\n ['form', { role: 'form', applyARIA: true }],\n ['search', { role: 'search', applyARIA: true }],\n ['dialog', { role: 'dialog', applyARIA: true }],\n ['button', { role: 'button', applyARIA: false }], // Usually implicit\n ['a', { role: 'link', applyARIA: false }], // Usually implicit\n])\n\n/**\n * Component Eligibility Matrix - Warning Levels\n * Based on design/Enh-TagSpecification.md Component Eligibility Matrix\n */\nexport const COMPONENT_ELIGIBILITY = new Map<string, { warningLevel: 'none' | 'info' | 'warning', idealTags?: string[], problematicTags?: string[] }>([\n // Layout Components - Ideal for semantic containers (Warning Level: None)\n ['HStack', { warningLevel: 'none', idealTags: ['nav', 'header', 'footer', 'section', 'article', 'aside', 'main', 'div'] }],\n ['VStack', { warningLevel: 'none', idealTags: ['main', 'section', 'article', 'aside', 'header', 'footer', 'div'] }],\n ['ZStack', { warningLevel: 'none', idealTags: ['article', 'aside', 'section', 'div'] }],\n \n // Content Components - Common for specific overrides (Warning Level: None for appropriate tags)\n ['Text', { warningLevel: 'none', idealTags: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'span', 'strong', 'em'] }],\n ['Image', { warningLevel: 'warning', problematicTags: ['figure', 'picture'] }], // May break functionality\n ['Spacer', { warningLevel: 'none' }],\n \n // Interactive Components - Use with warnings\n ['Button', { warningLevel: 'warning', problematicTags: ['div', 'span', 'a'] }], // May break accessibility\n ['Link', { warningLevel: 'warning', problematicTags: ['div', 'span', 'button'] }], // May break navigation\n])\n\n/**\n * Check if an element override should show a warning based on component eligibility matrix\n */\nexport function shouldWarnOnOverride(componentType: string, tag: string): boolean {\n const eligibility = COMPONENT_ELIGIBILITY.get(componentType)\n \n if (!eligibility) {\n // Unknown component - always warn for safety\n return true\n }\n\n // If component has no warning for any overrides\n if (eligibility.warningLevel === 'none') {\n return false\n }\n\n // If component warns for specific problematic tags\n if (eligibility.warningLevel === 'warning' && eligibility.problematicTags) {\n return eligibility.problematicTags.includes(tag)\n }\n\n // If component has ideal tags defined, only warn for non-ideal ones\n if (eligibility.idealTags && eligibility.idealTags.includes(tag)) {\n return false\n }\n\n // Default to warning for unknown combinations\n return true\n}\n\n/**\n * The applyARIA flag controls whether the framework automatically adds \n * the corresponding ARIA role attribute to elements with semantic tags.\n * \n * applyARIA: true - Always add the ARIA role (e.g., <nav> gets role=\"navigation\")\n * applyARIA: false - Don't automatically add ARIA role due to context sensitivity\n * \n * Examples:\n * - <nav> always represents navigation → applyARIA: true\n * - <header> could be page banner OR section header → applyARIA: false \n * - <footer> could be page footer OR article footer → applyARIA: false\n * \n * When applyARIA is false, developers should manually specify appropriate \n * ARIA roles using the .aria() modifier when semantic meaning is ambiguous.\n */\n\nexport class ElementTagValidator {\n static validate(tag: string, componentType: string): ValidationResult {\n if (!VALID_HTML_TAGS.has(tag)) {\n // Show development warning for invalid tags\n DevelopmentWarnings.errorInvalidTag(tag, componentType)\n \n return {\n valid: false,\n warning: `Invalid HTML tag '${tag}' specified for ${componentType}. Tag will be used as-is.`,\n severity: 'error'\n }\n }\n\n // Check for potentially problematic combinations\n const warnings = this.checkSemanticWarnings(tag, componentType)\n \n return {\n valid: true,\n warnings,\n semanticRole: SEMANTIC_TAG_ROLES.get(tag)\n }\n }\n\n private static checkSemanticWarnings(tag: string, componentType: string): Warning[] {\n const warnings: Warning[] = []\n\n // Warn about interactive tags on layout components\n if (['button', 'a', 'input', 'select', 'textarea'].includes(tag)) {\n if (['HStack', 'VStack', 'ZStack'].includes(componentType)) {\n const message = `Using interactive tag '${tag}' on layout component ${componentType} may cause accessibility issues.`\n warnings.push({ message, severity: 'warning' })\n DevelopmentWarnings.warnAccessibility(componentType, tag, 'Interactive tag on layout component may cause unexpected behavior')\n }\n }\n\n // Warn about structural violations\n if (tag === 'li' && !['VStack', 'HStack'].includes(componentType)) {\n const message = `<li> tags should typically be used within list structures.`\n warnings.push({ message, severity: 'info' })\n DevelopmentWarnings.warnProblematicCombination(componentType, tag, 'Consider using within <ul> or <ol> structure', 'info')\n }\n\n // Warn about heading tags on layout components\n if (['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag)) {\n if (['HStack', 'VStack', 'ZStack'].includes(componentType)) {\n const message = `Using heading tag '${tag}' on layout component ${componentType}. Consider using Text component instead.`\n warnings.push({ message, severity: 'info' })\n DevelopmentWarnings.warnProblematicCombination(componentType, tag, 'Heading tags are better suited for Text components', 'info')\n }\n }\n\n // Warn about form tags on non-form components\n if (['form', 'fieldset', 'legend'].includes(tag)) {\n if (!['VStack', 'HStack', 'Form'].includes(componentType)) {\n const message = `Form tag '${tag}' used on ${componentType}. Ensure proper form semantics.`\n warnings.push({ message, severity: 'info' })\n DevelopmentWarnings.warnProblematicCombination(componentType, tag, 'Form tags require proper semantic context', 'info')\n }\n }\n\n return warnings\n }\n}\n\n// Global configuration\nlet globalConfig: ElementOverrideConfig = {\n autoApplySemanticRoles: true,\n warnOnOverrides: process.env.NODE_ENV !== 'production',\n warnOnSemanticIssues: process.env.NODE_ENV !== 'production',\n validateTags: true,\n allowInvalidTags: true\n}\n\nexport function configureElementOverrides(config: Partial<ElementOverrideConfig>): void {\n globalConfig = { ...globalConfig, ...config }\n}\n\nexport function getElementOverrideConfig(): ElementOverrideConfig {\n return { ...globalConfig }\n}\n\n/**\n * Process element override for a component with validation and warnings\n */\nexport function processElementOverride(\n componentType: string,\n defaultTag: string,\n overrideTag?: string\n): { tag: string; validation: ValidationResult } {\n const effectiveTag = overrideTag || defaultTag\n const config = getElementOverrideConfig()\n\n // Always validate in development, even when validation is disabled\n let validation: ValidationResult = { valid: true }\n \n if (overrideTag) {\n // Show override warning if enabled and appropriate per component eligibility matrix\n if (config.warnOnOverrides && shouldWarnOnOverride(componentType, overrideTag)) {\n DevelopmentWarnings.warnElementOverride(componentType, defaultTag, overrideTag)\n }\n\n // Validate tag if enabled\n if (config.validateTags) {\n validation = ElementTagValidator.validate(overrideTag, componentType)\n \n // If validation fails and we don't allow invalid tags, use default\n if (!validation.valid && !config.allowInvalidTags) {\n DevelopmentWarnings.warnProblematicCombination(\n componentType, \n overrideTag, \n `Invalid tag rejected, using default '${defaultTag}' instead`, \n 'warning'\n )\n return { tag: defaultTag, validation }\n }\n }\n }\n\n return { tag: effectiveTag, validation }\n}\n\n/**\n * Create element override validation helper for components\n */\nexport function createElementOverrideValidator(componentType: string, defaultTag: string) {\n return (overrideTag?: string) => processElementOverride(componentType, defaultTag, overrideTag)\n}"],"names":["VALID_HTML_TAGS","SEMANTIC_TAG_ROLES","COMPONENT_ELIGIBILITY","shouldWarnOnOverride","componentType","tag","eligibility","ElementTagValidator","DevelopmentWarnings","warnings","message","globalConfig","configureElementOverrides","config","getElementOverrideConfig","processElementOverride","defaultTag","overrideTag","effectiveTag","validation","createElementOverrideValidator"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../reactive/cleanup.cjs");require("../reactive/unified-scheduler.cjs");const m=require("../reactive/effect.cjs"),d=require("../reactive/signal.cjs");require("../reactive/scheduler.cjs");require("../reactive/theme.cjs");const h=require("./dev-tools.cjs"),p=require("./performance.cjs");var E=Object.defineProperty,b=(o,r,e)=>r in o?E(o,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[r]=e,a=(o,r,e)=>b(o,typeof r!="symbol"?r+"":r,e);class u{constructor(r,e,t){a(this,"state",{hasError:!1,error:null,errorInfo:{retryAttempts:0}}),a(this,"props"),a(this,"children"),a(this,"errorManager"),a(this,"stateSignal"),a(this,"setState"),this.props=r,this.children=e,this.errorManager=t;const[s,n]=d.createSignal(this.state);this.stateSignal=s,this.setState=n,(r.resetOnPropsChange||r.resetKeys)&&this.setupPropsWatcher()}componentDidCatch(r,e){const t=this.errorManager.createTachUIError(r,{category:"component_error",severity:"high",componentId:this.props.id,componentName:"ErrorBoundary",phase:"render",context:e});this.handleError(t,e)}handleError(r,e){const t={hasError:!0,error:r,errorInfo:{componentStack:e?.componentStack,errorBoundary:this.props.id||"ErrorBoundary",retryAttempts:this.state.errorInfo.retryAttempts}};if(this.state=t,this.setState(t),this.props.onError&&this.props.onError(r,t.errorInfo),this.errorManager.reportError(r),this.attemptRecovery(r),h.globalDevTools.isEnabled()){const s=new Error(r.message);s.stack=r.stack,h.globalDevTools.addError(r.componentId||"unknown",s)}}attemptRecovery(r){if(this.props.recovery){for(const e of this.props.recovery)if(!(e.condition&&!e.condition(r))){switch(e.strategy){case"retry":this.retryWithConfig(e);break;case"fallback":break;case"reload":this.reloadComponent();break;case"ignore":this.resetErrorBoundary();break;case"escalate":if(!this.props.isolate)throw r.cause||new Error(r.message);break}e.onRecovery&&e.onRecovery(r);break}}}retryWithConfig(r){const e=r.maxRetries||3,t=r.retryDelay||1e3;if(this.state.errorInfo.retryAttempts>=e){console.warn(`Max retry attempts (${e}) reached for error boundary`);return}setTimeout(()=>{this.retry()},t)}retry(){this.state.errorInfo.retryAttempts++,this.resetErrorBoundary()}resetErrorBoundary(){this.state={hasError:!1,error:null,errorInfo:{retryAttempts:this.state.errorInfo.retryAttempts}},this.setState(this.state)}reloadComponent(){this.resetErrorBoundary()}setupPropsWatcher(){this.props.resetKeys&&m.createEffect(()=>{const r=this.props;this.state.hasError&&this.shouldResetOnProps(r)&&this.resetErrorBoundary()})}shouldResetOnProps(r){return this.props.resetKeys?this.props.resetKeys.some(e=>e in r&&r[e]!==void 0):!1}render(){if(this.state.hasError&&this.state.error){if(this.props.fallback)if(typeof this.props.fallback=="function"){const r=this.props.fallback(this.state.error,()=>this.retry()),e=r.render?r.render():[];return Array.isArray(e)?e:[e]}else{const r=this.props.fallback.render?this.props.fallback.render():[];return Array.isArray(r)?r:[r]}return this.renderDefaultErrorUI()}try{return this.children.flatMap(r=>{const e=r.render();return Array.isArray(e)?e:[e]})}catch(r){return this.componentDidCatch(r,{componentStack:"children rendering"}),this.renderDefaultErrorUI()}}renderDefaultErrorUI(){const r=this.state.error;return[{type:"element",tag:"div",props:{className:"tachui-error-boundary",style:{padding:"20px",border:"2px solid #ff6b6b",borderRadius:"8px",backgroundColor:"#fff5f5",color:"#c92a2a",fontFamily:"monospace"}},children:[{type:"element",tag:"h3",props:{style:{margin:"0 0 10px 0"}},children:[{type:"text",text:"🚨 Something went wrong"}]},{type:"element",tag:"p",props:{style:{margin:"0 0 15px 0"}},children:[{type:"text",text:r.message}]},{type:"element",tag:"button",props:{onClick:()=>this.retry(),style:{padding:"8px 16px",backgroundColor:"#4c6ef5",color:"white",border:"none",borderRadius:"4px",cursor:"pointer"}},children:[{type:"text",text:`Retry (${this.state.errorInfo.retryAttempts} attempts)`}]}]}]}getState(){return this.state}getStateSignal(){return this.stateSignal}}const f=class c{constructor(){a(this,"config",{enabled:!0,captureConsoleErrors:!0,captureUnhandledPromises:!0,captureReactiveErrors:!0,captureComponentErrors:!0,maxErrorsPerSession:100,maxErrorAge:1800*1e3,reportingThrottle:1e3,enableStackTrace:!0,enableSourceMap:!1,development:!1}),a(this,"errors",[]),a(this,"reporters",[]),a(this,"handlers",[]),a(this,"throttleMap",new Map),a(this,"errorsSignal"),a(this,"setErrors");const[r,e]=d.createSignal([]);this.errorsSignal=r,this.setErrors=e,this.setupGlobalErrorHandlers()}static getInstance(){return c.instance||(c.instance=new c),c.instance}configure(r){this.config={...this.config,...r},r.development!==void 0&&h.globalDevTools.configure({enableErrors:r.development})}setupGlobalErrorHandlers(){typeof window>"u"||(window.addEventListener("error",r=>{if(!this.config.captureConsoleErrors)return;const e=this.createTachUIError(r.error||new Error(r.message),{category:"unknown_error",severity:"medium",context:{filename:r.filename,lineno:r.lineno,colno:r.colno}});this.reportError(e)}),window.addEventListener("unhandledrejection",r=>{if(!this.config.captureUnhandledPromises)return;const e=this.createTachUIError(r.reason instanceof Error?r.reason:new Error(String(r.reason)),{category:"network_error",severity:"medium",context:{type:"unhandled_promise_rejection"}});this.reportError(e)}))}createTachUIError(r,e={}){return{id:`error_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,message:r.message,stack:this.config.enableStackTrace?r.stack:void 0,cause:r,timestamp:Date.now(),category:e.category||"unknown_error",severity:e.severity||"medium",componentId:e.componentId,componentName:e.componentName,phase:e.phase,context:e.context,userAgent:typeof window<"u"?window.navigator.userAgent:void 0,url:typeof window<"u"?window.location.href:void 0,retryCount:0,recovered:!1}}reportError(r){if(!this.config.enabled)return;const e=`${r.category}_${r.message}`,t=this.throttleMap.get(e)||0,s=Date.now();s-t<this.config.reportingThrottle||(this.throttleMap.set(e,s),this.errors.push(r),this.errors.length>this.config.maxErrorsPerSession&&this.errors.shift(),this.cleanOldErrors(),this.setErrors([...this.errors]),p.globalPerformanceMonitor.isEnabled()&&p.globalPerformanceMonitor.recordMetric({name:"error_reported",value:1,unit:"count",timestamp:r.timestamp,category:"component",componentId:r.componentId}),this.reporters.forEach(n=>{try{n.report(r)}catch(l){console.error("Error reporter failed:",l)}}),this.handlers.forEach(n=>{try{n(r)}catch(l){console.error("Error handler failed:",l)}}),this.config.development&&(console.group(`🚨 TachUI Error [${r.category}]`),console.error(r.message),r.stack&&console.error(r.stack),r.context&&console.log("Context:",r.context),console.groupEnd()))}cleanOldErrors(){const r=Date.now()-this.config.maxErrorAge;this.errors=this.errors.filter(e=>e.timestamp>r)}addReporter(r){return this.reporters.push(r),()=>{const e=this.reporters.indexOf(r);e!==-1&&this.reporters.splice(e,1)}}addHandler(r){return this.handlers.push(r),()=>{const e=this.handlers.indexOf(r);e!==-1&&this.handlers.splice(e,1)}}getErrors(){return[...this.errors]}getErrorsSignal(){return this.errorsSignal}getErrorsByCategory(r){return this.errors.filter(e=>e.category===r)}getErrorsBySeverity(r){return this.errors.filter(e=>e.severity===r)}getErrorsByComponent(r){return this.errors.filter(e=>e.componentId===r)}markErrorRecovered(r){const e=this.errors.find(t=>t.id===r);e&&(e.recovered=!0,this.setErrors([...this.errors]))}clear(){this.errors.length=0,this.throttleMap.clear(),this.setErrors([])}getStatistics(){const r={},e={};for(const n of this.errors)r[n.category]=(r[n.category]||0)+1,e[n.severity]=(e[n.severity]||0)+1;const t=this.errors.filter(n=>n.recovered).length,s=this.errors.filter(n=>Date.now()-n.timestamp<300*1e3).length;return{totalErrors:this.errors.length,errorsByCategory:r,errorsBySeverity:e,recoveredErrors:t,recentErrors:s}}};a(f,"instance");let g=f;const i=g.getInstance();function y(o,r){return new u(o,r,i)}const w={console:{report(o){console.error(`[${o.category}] ${o.message}`,o)}},localStorage:{report(o){try{const r=JSON.parse(localStorage.getItem("tachui_errors")||"[]");r.push(o),r.length>50&&r.splice(0,r.length-50),localStorage.setItem("tachui_errors",JSON.stringify(r))}catch(r){console.error("Failed to store error in localStorage:",r)}}},createRemoteReporter(o,r){return{async report(e){try{const t={"Content-Type":"application/json"};r&&(t.Authorization=`Bearer ${r}`),await fetch(o,{method:"POST",headers:t,body:JSON.stringify(e)})}catch(t){console.error("Failed to report error to remote endpoint:",t)}}}}},S={withErrorHandling(o,r={}){return((...e)=>{try{return o(...e)}catch(t){const s=i.createTachUIError(t,{category:r.category||"unknown_error"});if(i.reportError(s),r.onError&&r.onError(s),r.fallback!==void 0)return r.fallback;throw t}})},withAsyncErrorHandling(o,r={}){return(async(...e)=>{try{return await o(...e)}catch(t){const s=i.createTachUIError(t,{category:r.category||"network_error"});if(i.reportError(s),r.onError&&r.onError(s),r.fallback!==void 0)return r.fallback;throw t}})},createSimpleErrorBoundary(o="Something went wrong"){return r=>y({fallback:(e,t)=>({type:"component",id:"error-fallback",props:{},render:()=>[{type:"element",tag:"div",props:{className:"simple-error-boundary"},children:[{type:"text",text:o}]}]}),recovery:[{strategy:"retry",maxRetries:3,retryDelay:1e3}]},r)}};exports.ErrorBoundary=u;exports.ErrorManager=g;exports.createErrorBoundary=y;exports.errorReporters=w;exports.errorUtils=S;exports.globalErrorManager=i;
2
- //# sourceMappingURL=error-boundary.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-boundary.cjs","sources":["../../src/runtime/error-boundary.ts"],"sourcesContent":["/**\n * Error Boundary and Error Handling System (Phase 3.2.3)\n *\n * Comprehensive error handling system for TachUI applications.\n * Provides error boundaries, recovery mechanisms, and error reporting.\n */\n\nimport { createEffect, createSignal } from '../reactive'\nimport { globalDevTools } from './dev-tools'\nimport { globalPerformanceMonitor } from './performance'\nimport type { ComponentInstance, ComponentProps, DOMNode } from './types'\n\n/**\n * Error severity levels\n */\nexport type ErrorSeverity = 'low' | 'medium' | 'high' | 'critical'\n\n/**\n * Error categories for classification\n */\nexport type ErrorCategory =\n | 'component_error' // Component rendering/lifecycle errors\n | 'reactive_error' // Signal/computed/effect errors\n | 'render_error' // DOM rendering errors\n | 'lifecycle_error' // Component lifecycle errors\n | 'network_error' // Network/async operation errors\n | 'validation_error' // Props/data validation errors\n | 'unknown_error' // Uncategorized errors\n\n/**\n * Comprehensive error information\n */\nexport interface TachUIError {\n id: string\n message: string\n stack?: string\n cause?: Error\n timestamp: number\n category: ErrorCategory\n severity: ErrorSeverity\n componentId?: string\n componentName?: string\n phase?: string\n context?: Record<string, any>\n userAgent?: string\n url?: string\n retryCount: number\n recovered: boolean\n}\n\n/**\n * Error boundary state\n */\nexport interface ErrorBoundaryState {\n hasError: boolean\n error: TachUIError | null\n errorInfo: {\n componentStack?: string\n errorBoundary?: string\n retryAttempts: number\n }\n}\n\n/**\n * Error recovery strategies\n */\nexport type ErrorRecoveryStrategy =\n | 'retry' // Retry the failed operation\n | 'fallback' // Show fallback content\n | 'reload' // Reload the component\n | 'redirect' // Navigate away\n | 'ignore' // Ignore the error\n | 'escalate' // Pass error to parent boundary\n\n/**\n * Error recovery configuration\n */\nexport interface ErrorRecoveryConfig {\n strategy: ErrorRecoveryStrategy\n maxRetries?: number\n retryDelay?: number\n fallbackComponent?: ComponentInstance\n onRecovery?: (error: TachUIError) => void\n condition?: (error: TachUIError) => boolean\n}\n\n/**\n * Error boundary props\n */\nexport interface ErrorBoundaryProps extends ComponentProps {\n fallback?: ComponentInstance | ((error: TachUIError, retry: () => void) => ComponentInstance)\n onError?: (error: TachUIError, errorInfo: ErrorBoundaryState['errorInfo']) => void\n recovery?: ErrorRecoveryConfig[]\n isolate?: boolean // Prevent error propagation to parent boundaries\n resetOnPropsChange?: boolean\n resetKeys?: string[] // Props that trigger error boundary reset\n}\n\n/**\n * Error reporter interface\n */\nexport interface ErrorReporter {\n report(error: TachUIError): void | Promise<void>\n}\n\n/**\n * Error handler function type\n */\nexport type ErrorHandler = (error: TachUIError) => void | Promise<void>\n\n/**\n * Global error handling configuration\n */\nexport interface ErrorHandlingConfig {\n enabled: boolean\n captureConsoleErrors: boolean\n captureUnhandledPromises: boolean\n captureReactiveErrors: boolean\n captureComponentErrors: boolean\n maxErrorsPerSession: number\n maxErrorAge: number // milliseconds\n reportingThrottle: number // milliseconds\n enableStackTrace: boolean\n enableSourceMap: boolean\n development: boolean\n}\n\n/**\n * Error boundary component implementation\n */\nexport class ErrorBoundary {\n private state: ErrorBoundaryState = {\n hasError: false,\n error: null,\n errorInfo: {\n retryAttempts: 0,\n },\n }\n\n private props: ErrorBoundaryProps\n private children: ComponentInstance[]\n private errorManager: ErrorManager\n\n // Reactive state\n private stateSignal: () => ErrorBoundaryState\n private setState: (value: ErrorBoundaryState) => void\n\n constructor(\n props: ErrorBoundaryProps,\n children: ComponentInstance[],\n errorManager: ErrorManager\n ) {\n this.props = props\n this.children = children\n this.errorManager = errorManager\n\n // Initialize reactive state\n const [stateSignal, setState] = createSignal<ErrorBoundaryState>(this.state)\n this.stateSignal = stateSignal\n this.setState = setState\n\n // Reset error boundary when specific props change\n if (props.resetOnPropsChange || props.resetKeys) {\n this.setupPropsWatcher()\n }\n }\n\n /**\n * Catch and handle errors in child components\n */\n componentDidCatch(error: Error, errorInfo: any): void {\n const tachUIError = this.errorManager.createTachUIError(error, {\n category: 'component_error',\n severity: 'high',\n componentId: this.props.id,\n componentName: 'ErrorBoundary',\n phase: 'render',\n context: errorInfo,\n })\n\n this.handleError(tachUIError, errorInfo)\n }\n\n /**\n * Handle error and determine recovery strategy\n */\n private handleError(error: TachUIError, errorInfo: any): void {\n const newState: ErrorBoundaryState = {\n hasError: true,\n error,\n errorInfo: {\n componentStack: errorInfo?.componentStack,\n errorBoundary: this.props.id || 'ErrorBoundary',\n retryAttempts: this.state.errorInfo.retryAttempts,\n },\n }\n\n this.state = newState\n this.setState(newState)\n\n // Report error\n if (this.props.onError) {\n this.props.onError(error, newState.errorInfo)\n }\n\n // Register with error manager\n this.errorManager.reportError(error)\n\n // Attempt recovery\n this.attemptRecovery(error)\n\n // Add to dev tools if enabled\n if (globalDevTools.isEnabled()) {\n const errorObj = new Error(error.message)\n errorObj.stack = error.stack\n globalDevTools.addError(error.componentId || 'unknown', errorObj)\n }\n }\n\n /**\n * Attempt error recovery based on configured strategies\n */\n private attemptRecovery(error: TachUIError): void {\n if (!this.props.recovery) return\n\n for (const config of this.props.recovery) {\n if (config.condition && !config.condition(error)) continue\n\n switch (config.strategy) {\n case 'retry':\n this.retryWithConfig(config)\n break\n case 'fallback':\n // Fallback is handled in render method\n break\n case 'reload':\n this.reloadComponent()\n break\n case 'ignore':\n this.resetErrorBoundary()\n break\n case 'escalate':\n if (!this.props.isolate) {\n throw error.cause || new Error(error.message)\n }\n break\n }\n\n if (config.onRecovery) {\n config.onRecovery(error)\n }\n\n break // Use first matching strategy\n }\n }\n\n /**\n * Retry failed operation with configuration\n */\n private retryWithConfig(config: ErrorRecoveryConfig): void {\n const maxRetries = config.maxRetries || 3\n const retryDelay = config.retryDelay || 1000\n\n if (this.state.errorInfo.retryAttempts >= maxRetries) {\n console.warn(`Max retry attempts (${maxRetries}) reached for error boundary`)\n return\n }\n\n setTimeout(() => {\n this.retry()\n }, retryDelay)\n }\n\n /**\n * Retry the failed operation\n */\n retry(): void {\n this.state.errorInfo.retryAttempts++\n this.resetErrorBoundary()\n }\n\n /**\n * Reset error boundary to normal state\n */\n resetErrorBoundary(): void {\n this.state = {\n hasError: false,\n error: null,\n errorInfo: {\n retryAttempts: this.state.errorInfo.retryAttempts,\n },\n }\n this.setState(this.state)\n }\n\n /**\n * Reload the component\n */\n private reloadComponent(): void {\n this.resetErrorBoundary()\n // Force re-render of children\n // This would need integration with the component system\n }\n\n /**\n * Setup props watcher for error boundary reset\n */\n private setupPropsWatcher(): void {\n if (this.props.resetKeys) {\n // Watch specific prop keys\n createEffect(() => {\n const currentProps = this.props\n if (this.state.hasError && this.shouldResetOnProps(currentProps)) {\n this.resetErrorBoundary()\n }\n })\n }\n }\n\n /**\n * Check if error boundary should reset based on props\n */\n private shouldResetOnProps(props: ErrorBoundaryProps): boolean {\n if (!this.props.resetKeys) return false\n\n // This is simplified - in real implementation would track previous props\n return this.props.resetKeys.some(\n (key) => key in props && props[key as keyof ErrorBoundaryProps] !== undefined\n )\n }\n\n /**\n * Render error boundary content\n */\n render(): DOMNode[] {\n if (this.state.hasError && this.state.error) {\n // Render fallback UI\n if (this.props.fallback) {\n if (typeof this.props.fallback === 'function') {\n const fallbackInstance = this.props.fallback(this.state.error, () => this.retry())\n const result = fallbackInstance.render ? fallbackInstance.render() : []\n return Array.isArray(result) ? result : [result]\n } else {\n const result = this.props.fallback.render ? this.props.fallback.render() : []\n return Array.isArray(result) ? result : [result]\n }\n }\n\n // Default error UI\n return this.renderDefaultErrorUI()\n }\n\n // Render children normally\n try {\n return this.children.flatMap((child) => {\n const result = child.render()\n return Array.isArray(result) ? result : [result]\n })\n } catch (error) {\n this.componentDidCatch(error as Error, { componentStack: 'children rendering' })\n return this.renderDefaultErrorUI()\n }\n }\n\n /**\n * Render default error UI\n */\n private renderDefaultErrorUI(): DOMNode[] {\n const error = this.state.error!\n\n return [\n {\n type: 'element',\n tag: 'div',\n props: {\n className: 'tachui-error-boundary',\n style: {\n padding: '20px',\n border: '2px solid #ff6b6b',\n borderRadius: '8px',\n backgroundColor: '#fff5f5',\n color: '#c92a2a',\n fontFamily: 'monospace',\n },\n },\n children: [\n {\n type: 'element',\n tag: 'h3',\n props: { style: { margin: '0 0 10px 0' } },\n children: [\n {\n type: 'text',\n text: '🚨 Something went wrong',\n },\n ],\n },\n {\n type: 'element',\n tag: 'p',\n props: { style: { margin: '0 0 15px 0' } },\n children: [\n {\n type: 'text',\n text: error.message,\n },\n ],\n },\n {\n type: 'element',\n tag: 'button',\n props: {\n onClick: () => this.retry(),\n style: {\n padding: '8px 16px',\n backgroundColor: '#4c6ef5',\n color: 'white',\n border: 'none',\n borderRadius: '4px',\n cursor: 'pointer',\n },\n },\n children: [\n {\n type: 'text',\n text: `Retry (${this.state.errorInfo.retryAttempts} attempts)`,\n },\n ],\n },\n ],\n },\n ]\n }\n\n /**\n * Get current error boundary state\n */\n getState(): ErrorBoundaryState {\n return this.state\n }\n\n /**\n * Get reactive state signal\n */\n getStateSignal(): () => ErrorBoundaryState {\n return this.stateSignal\n }\n}\n\n/**\n * Global error manager\n */\nexport class ErrorManager {\n private static instance: ErrorManager\n\n private config: ErrorHandlingConfig = {\n enabled: true,\n captureConsoleErrors: true,\n captureUnhandledPromises: true,\n captureReactiveErrors: true,\n captureComponentErrors: true,\n maxErrorsPerSession: 100,\n maxErrorAge: 30 * 60 * 1000, // 30 minutes\n reportingThrottle: 1000, // 1 second\n enableStackTrace: true,\n enableSourceMap: false,\n development: false,\n }\n\n private errors: TachUIError[] = []\n private reporters: ErrorReporter[] = []\n private handlers: ErrorHandler[] = []\n private throttleMap = new Map<string, number>()\n\n // Reactive state\n private errorsSignal: () => TachUIError[]\n private setErrors: (value: TachUIError[]) => void\n\n constructor() {\n // Initialize reactive state\n const [errorsSignal, setErrors] = createSignal<TachUIError[]>([])\n this.errorsSignal = errorsSignal\n this.setErrors = setErrors\n\n this.setupGlobalErrorHandlers()\n }\n\n static getInstance(): ErrorManager {\n if (!ErrorManager.instance) {\n ErrorManager.instance = new ErrorManager()\n }\n return ErrorManager.instance\n }\n\n /**\n * Configure error handling\n */\n configure(config: Partial<ErrorHandlingConfig>): void {\n this.config = { ...this.config, ...config }\n\n if (config.development !== undefined) {\n globalDevTools.configure({ enableErrors: config.development })\n }\n }\n\n /**\n * Setup global error handlers\n */\n private setupGlobalErrorHandlers(): void {\n if (typeof window === 'undefined') return\n\n // Capture unhandled errors\n window.addEventListener('error', (event) => {\n if (!this.config.captureConsoleErrors) return\n\n const error = this.createTachUIError(event.error || new Error(event.message), {\n category: 'unknown_error',\n severity: 'medium',\n context: {\n filename: event.filename,\n lineno: event.lineno,\n colno: event.colno,\n },\n })\n\n this.reportError(error)\n })\n\n // Capture unhandled promise rejections\n window.addEventListener('unhandledrejection', (event) => {\n if (!this.config.captureUnhandledPromises) return\n\n const error = this.createTachUIError(\n event.reason instanceof Error ? event.reason : new Error(String(event.reason)),\n {\n category: 'network_error',\n severity: 'medium',\n context: { type: 'unhandled_promise_rejection' },\n }\n )\n\n this.reportError(error)\n })\n }\n\n /**\n * Create standardized TachUI error\n */\n createTachUIError(\n error: Error,\n options: {\n category?: ErrorCategory\n severity?: ErrorSeverity\n componentId?: string\n componentName?: string\n phase?: string\n context?: Record<string, any>\n } = {}\n ): TachUIError {\n return {\n id: `error_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,\n message: error.message,\n stack: this.config.enableStackTrace ? error.stack : undefined,\n cause: error,\n timestamp: Date.now(),\n category: options.category || 'unknown_error',\n severity: options.severity || 'medium',\n componentId: options.componentId,\n componentName: options.componentName,\n phase: options.phase,\n context: options.context,\n userAgent: typeof window !== 'undefined' ? window.navigator.userAgent : undefined,\n url: typeof window !== 'undefined' ? window.location.href : undefined,\n retryCount: 0,\n recovered: false,\n }\n }\n\n /**\n * Report error to all registered reporters\n */\n reportError(error: TachUIError): void {\n if (!this.config.enabled) return\n\n // Throttle reporting to prevent spam\n const throttleKey = `${error.category}_${error.message}`\n const lastReport = this.throttleMap.get(throttleKey) || 0\n const now = Date.now()\n\n if (now - lastReport < this.config.reportingThrottle) {\n return\n }\n\n this.throttleMap.set(throttleKey, now)\n\n // Add to errors array\n this.errors.push(error)\n\n // Limit errors array size\n if (this.errors.length > this.config.maxErrorsPerSession) {\n this.errors.shift()\n }\n\n // Clean old errors\n this.cleanOldErrors()\n\n // Update reactive signal\n this.setErrors([...this.errors])\n\n // Track with performance monitor\n if (globalPerformanceMonitor.isEnabled()) {\n globalPerformanceMonitor.recordMetric({\n name: 'error_reported',\n value: 1,\n unit: 'count',\n timestamp: error.timestamp,\n category: 'component',\n componentId: error.componentId,\n })\n }\n\n // Call reporters\n this.reporters.forEach((reporter) => {\n try {\n reporter.report(error)\n } catch (reporterError) {\n console.error('Error reporter failed:', reporterError)\n }\n })\n\n // Call handlers\n this.handlers.forEach((handler) => {\n try {\n handler(error)\n } catch (handlerError) {\n console.error('Error handler failed:', handlerError)\n }\n })\n\n // Log to console in development\n if (this.config.development) {\n console.group(`🚨 TachUI Error [${error.category}]`)\n console.error(error.message)\n if (error.stack) console.error(error.stack)\n if (error.context) console.log('Context:', error.context)\n console.groupEnd()\n }\n }\n\n /**\n * Clean old errors based on max age\n */\n private cleanOldErrors(): void {\n const cutoff = Date.now() - this.config.maxErrorAge\n this.errors = this.errors.filter((error) => error.timestamp > cutoff)\n }\n\n /**\n * Add error reporter\n */\n addReporter(reporter: ErrorReporter): () => void {\n this.reporters.push(reporter)\n\n return () => {\n const index = this.reporters.indexOf(reporter)\n if (index !== -1) {\n this.reporters.splice(index, 1)\n }\n }\n }\n\n /**\n * Add error handler\n */\n addHandler(handler: ErrorHandler): () => void {\n this.handlers.push(handler)\n\n return () => {\n const index = this.handlers.indexOf(handler)\n if (index !== -1) {\n this.handlers.splice(index, 1)\n }\n }\n }\n\n /**\n * Get all errors\n */\n getErrors(): TachUIError[] {\n return [...this.errors]\n }\n\n /**\n * Get errors signal\n */\n getErrorsSignal(): () => TachUIError[] {\n return this.errorsSignal\n }\n\n /**\n * Get errors by category\n */\n getErrorsByCategory(category: ErrorCategory): TachUIError[] {\n return this.errors.filter((error) => error.category === category)\n }\n\n /**\n * Get errors by severity\n */\n getErrorsBySeverity(severity: ErrorSeverity): TachUIError[] {\n return this.errors.filter((error) => error.severity === severity)\n }\n\n /**\n * Get errors by component\n */\n getErrorsByComponent(componentId: string): TachUIError[] {\n return this.errors.filter((error) => error.componentId === componentId)\n }\n\n /**\n * Mark error as recovered\n */\n markErrorRecovered(errorId: string): void {\n const error = this.errors.find((e) => e.id === errorId)\n if (error) {\n error.recovered = true\n this.setErrors([...this.errors])\n }\n }\n\n /**\n * Clear all errors\n */\n clear(): void {\n this.errors.length = 0\n this.throttleMap.clear()\n this.setErrors([])\n }\n\n /**\n * Get error statistics\n */\n getStatistics(): {\n totalErrors: number\n errorsByCategory: Record<ErrorCategory, number>\n errorsBySeverity: Record<ErrorSeverity, number>\n recoveredErrors: number\n recentErrors: number\n } {\n const errorsByCategory = {} as Record<ErrorCategory, number>\n const errorsBySeverity = {} as Record<ErrorSeverity, number>\n\n for (const error of this.errors) {\n errorsByCategory[error.category] = (errorsByCategory[error.category] || 0) + 1\n errorsBySeverity[error.severity] = (errorsBySeverity[error.severity] || 0) + 1\n }\n\n const recoveredErrors = this.errors.filter((e) => e.recovered).length\n const recentErrors = this.errors.filter(\n (e) => Date.now() - e.timestamp < 5 * 60 * 1000 // Last 5 minutes\n ).length\n\n return {\n totalErrors: this.errors.length,\n errorsByCategory,\n errorsBySeverity,\n recoveredErrors,\n recentErrors,\n }\n }\n}\n\n/**\n * Global error manager instance\n */\nexport const globalErrorManager = ErrorManager.getInstance()\n\n/**\n * Create error boundary component\n */\nexport function createErrorBoundary(\n props: ErrorBoundaryProps,\n children: ComponentInstance[]\n): ErrorBoundary {\n return new ErrorBoundary(props, children, globalErrorManager)\n}\n\n/**\n * Built-in error reporters\n */\nexport const errorReporters = {\n /**\n * Console reporter\n */\n console: {\n report(error: TachUIError): void {\n console.error(`[${error.category}] ${error.message}`, error)\n },\n } as ErrorReporter,\n\n /**\n * Local storage reporter\n */\n localStorage: {\n report(error: TachUIError): void {\n try {\n const stored = JSON.parse(localStorage.getItem('tachui_errors') || '[]')\n stored.push(error)\n\n // Keep only last 50 errors\n if (stored.length > 50) {\n stored.splice(0, stored.length - 50)\n }\n\n localStorage.setItem('tachui_errors', JSON.stringify(stored))\n } catch (e) {\n console.error('Failed to store error in localStorage:', e)\n }\n },\n } as ErrorReporter,\n\n /**\n * Remote API reporter\n */\n createRemoteReporter(endpoint: string, apiKey?: string): ErrorReporter {\n return {\n async report(error: TachUIError): Promise<void> {\n try {\n const headers: HeadersInit = {\n 'Content-Type': 'application/json',\n }\n\n if (apiKey) {\n headers.Authorization = `Bearer ${apiKey}`\n }\n\n await fetch(endpoint, {\n method: 'POST',\n headers,\n body: JSON.stringify(error),\n })\n } catch (e) {\n console.error('Failed to report error to remote endpoint:', e)\n }\n },\n }\n },\n}\n\n/**\n * Error handling utilities\n */\nexport const errorUtils = {\n /**\n * Wrap function with error handling\n */\n withErrorHandling<T extends (...args: any[]) => any>(\n fn: T,\n options: {\n category?: ErrorCategory\n onError?: (error: TachUIError) => void\n fallback?: ReturnType<T>\n } = {}\n ): T {\n return ((...args: Parameters<T>): ReturnType<T> => {\n try {\n return fn(...args)\n } catch (error) {\n const tachUIError = globalErrorManager.createTachUIError(error as Error, {\n category: options.category || 'unknown_error',\n })\n\n globalErrorManager.reportError(tachUIError)\n\n if (options.onError) {\n options.onError(tachUIError)\n }\n\n if (options.fallback !== undefined) {\n return options.fallback\n }\n\n throw error\n }\n }) as T\n },\n\n /**\n * Wrap async function with error handling\n */\n withAsyncErrorHandling<T extends (...args: any[]) => Promise<any>>(\n fn: T,\n options: {\n category?: ErrorCategory\n onError?: (error: TachUIError) => void\n fallback?: Awaited<ReturnType<T>>\n } = {}\n ): T {\n return (async (...args: Parameters<T>): Promise<Awaited<ReturnType<T>>> => {\n try {\n return await fn(...args)\n } catch (error) {\n const tachUIError = globalErrorManager.createTachUIError(error as Error, {\n category: options.category || 'network_error',\n })\n\n globalErrorManager.reportError(tachUIError)\n\n if (options.onError) {\n options.onError(tachUIError)\n }\n\n if (options.fallback !== undefined) {\n return options.fallback\n }\n\n throw error\n }\n }) as T\n },\n\n /**\n * Create error boundary with common configurations\n */\n createSimpleErrorBoundary(\n fallbackMessage: string = 'Something went wrong'\n ): (children: ComponentInstance[]) => ErrorBoundary {\n return (children: ComponentInstance[]) =>\n createErrorBoundary(\n {\n fallback: (_error, _retry) => ({\n type: 'component',\n id: 'error-fallback',\n props: {},\n render: () => [\n {\n type: 'element',\n tag: 'div',\n props: { className: 'simple-error-boundary' },\n children: [\n {\n type: 'text',\n text: fallbackMessage,\n },\n ],\n },\n ],\n }),\n recovery: [{ strategy: 'retry', maxRetries: 3, retryDelay: 1000 }],\n },\n children\n )\n },\n}\n"],"names":["ErrorBoundary","props","children","errorManager","__publicField","stateSignal","setState","createSignal","error","errorInfo","tachUIError","newState","globalDevTools","errorObj","config","maxRetries","retryDelay","createEffect","currentProps","key","fallbackInstance","result","child","_ErrorManager","errorsSignal","setErrors","event","options","throttleKey","lastReport","now","globalPerformanceMonitor","reporter","reporterError","handler","handlerError","cutoff","index","category","severity","componentId","errorId","e","errorsByCategory","errorsBySeverity","recoveredErrors","recentErrors","ErrorManager","globalErrorManager","createErrorBoundary","errorReporters","stored","endpoint","apiKey","headers","errorUtils","fn","args","fallbackMessage","_error","_retry"],"mappings":"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"}