@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":"wrapper.js","sources":["../../src/components/wrapper.ts"],"sourcesContent":["/**\n * Component Wrapper System\n *\n * Provides wrapper functions to enhance regular components with modifier support\n * and integrate them with the TachUI modifier system.\n */\n\nimport { createModifiableComponent, createModifierBuilder } from '../modifiers'\nimport type { ModifiableComponent, ModifierBuilder } from '../modifiers/types'\nimport { h, text } from '../runtime'\nimport type { ComponentInstance, ComponentProps, DOMNode } from '../runtime/types'\nimport { useLifecycle } from '../lifecycle/hooks'\nimport { registerComponentWithLifecycleHooks } from '../runtime/dom-bridge'\nimport { \n processElementOverride, \n type ElementOverrideProps \n} from '../runtime/element-override'\nimport {\n ComponentWithCSSClasses,\n type CSSClassesProps\n} from '../css-classes'\nimport type { Concatenatable } from '../concatenation/types'\n// Lazy import debug manager to avoid circular dependencies\nlet debugManager: any = null\nconst getDebugManager = () => {\n if (!debugManager) {\n try {\n const debugModule = require('../debug')\n debugManager = debugModule.debugManager\n } catch {\n // Debug module not available, create a mock\n debugManager = {\n isEnabled: () => false,\n logComponent: () => {},\n }\n }\n }\n return debugManager\n}\n\n/**\n * Wrapper options for enhancing components\n */\nexport interface WrapperOptions {\n enableModifiers?: boolean\n enableReactivity?: boolean\n enableErrorBoundary?: boolean\n enablePerformanceTracking?: boolean\n}\n\n/**\n * Helper function to check if a component implements Concatenatable\n */\nfunction isConcatenatable(component: any): component is Concatenatable {\n return component && \n typeof component.concat === 'function' && \n typeof component.toSegment === 'function' && \n typeof component.isConcatenatable === 'function'\n}\n\n/**\n * Enhanced component wrapper that adds modifier support and preserves concatenation methods\n */\nexport function withModifiers<P extends ComponentProps>(\n component: ComponentInstance<P>\n): ModifiableComponent<P> & { modifier: ModifierBuilder<ModifiableComponent<P>> } & (ComponentInstance<P> extends Concatenatable ? Concatenatable : {}) {\n const modifiableComponent = createModifiableComponent(component)\n const modifierBuilder = createModifierBuilder(modifiableComponent)\n\n const result: any = {\n ...modifiableComponent,\n modifier: modifierBuilder,\n modifierBuilder: modifierBuilder,\n }\n\n // If the original component supports concatenation, preserve those methods\n if (isConcatenatable(component)) {\n result.concat = function(other: any) {\n return (component as any).concat(other)\n }\n result.toSegment = function() {\n return (component as any).toSegment()\n }\n result.isConcatenatable = function() {\n return (component as any).isConcatenatable()\n }\n }\n\n return result\n}\n\n/**\n * Create a reactive component wrapper with full TachUI features\n */\nexport function createReactiveWrapper<P extends ComponentProps>(\n renderFn: (props: P) => DOMNode | DOMNode[],\n options: WrapperOptions = {}\n): (props: P) => ModifiableComponent<P> & { modifier: ModifierBuilder<ModifiableComponent<P>> } {\n const { enableModifiers = true } = options\n\n return (props: P) => {\n // Create a simple component instance that uses the render function\n const component: ComponentInstance<P> = {\n type: 'component' as const,\n id: `wrapper-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,\n props,\n mounted: false,\n cleanup: [],\n render() {\n const result = renderFn(props)\n return Array.isArray(result) ? result : [result]\n },\n }\n\n // Add modifier support if enabled\n if (enableModifiers) {\n return withModifiers(component)\n }\n\n // Return basic component with minimal wrapper\n return withModifiers(component)\n }\n}\n\n/**\n * Simple element component class\n */\nclass ElementComponent implements ComponentInstance<ComponentProps> {\n public readonly type = 'component' as const\n public readonly id: string\n public mounted = false\n public cleanup: (() => void)[] = []\n\n constructor(\n public props: ComponentProps,\n private tag: string,\n private content?: string,\n private attributes: Record<string, any> = {}\n ) {\n this.id = `element-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n }\n\n render() {\n return [h(this.tag, this.attributes, this.content ? text(this.content) : '')]\n }\n}\n\n/**\n * Simple HTML element wrappers with modifier support\n *\n * These are basic HTML element wrappers for simple use cases.\n * For enhanced SwiftUI-style components with advanced features,\n * use the main component exports (Button, Image, Text, etc.).\n */\nexport const HTML = {\n /**\n * Create a div element with modifier support\n */\n div: (props: { children?: any } = {}) => {\n const component = new ElementComponent(\n props,\n 'div',\n props.children ? String(props.children) : undefined\n )\n return withModifiers(component)\n },\n\n /**\n * Create a span element with modifier support\n */\n span: (props: { children?: any } = {}) => {\n const component = new ElementComponent(\n props,\n 'span',\n props.children ? String(props.children) : undefined\n )\n return withModifiers(component)\n },\n\n /**\n * Create a paragraph element with modifier support\n */\n p: (props: { children?: any } = {}) => {\n const component = new ElementComponent(\n props,\n 'p',\n props.children ? String(props.children) : undefined\n )\n return withModifiers(component)\n },\n\n /**\n * Create a button element with modifier support\n *\n * Note: For enhanced button features (press states, variants, accessibility),\n * use the main Button component instead.\n */\n button: (props: { children?: any; onClick?: () => void } = {}) => {\n const component = new ElementComponent(\n props,\n 'button',\n props.children ? String(props.children) : undefined,\n {\n onclick: props.onClick,\n }\n )\n return withModifiers(component)\n },\n\n /**\n * Create an input element with modifier support\n */\n input: (\n props: {\n type?: string\n value?: string\n placeholder?: string\n onChange?: (value: string) => void\n } = {}\n ) => {\n const component = new ElementComponent(props, 'input', undefined, {\n type: props.type || 'text',\n value: props.value || '',\n placeholder: props.placeholder || '',\n oninput: (e: Event) => {\n const target = e.target as HTMLInputElement\n props.onChange?.(target.value)\n },\n })\n return withModifiers(component)\n },\n\n /**\n * Create an image element with modifier support\n *\n * Note: For enhanced image features (loading states, content modes, progressive loading),\n * use the main Image component instead.\n */\n img: (props: {\n src: string\n alt?: string\n width?: number | string\n height?: number | string\n }) => {\n const component = new ElementComponent(props, 'img', undefined, {\n src: props.src,\n alt: props.alt || '',\n width: props.width,\n height: props.height,\n })\n return withModifiers(component)\n },\n\n /**\n * Create a heading element with modifier support\n */\n heading:\n (level: 1 | 2 | 3 | 4 | 5 | 6) =>\n (props: { children?: any } = {}) => {\n const component = new ElementComponent(\n props,\n `h${level}`,\n props.children ? String(props.children) : undefined\n )\n return withModifiers(component)\n },\n}\n\n/**\n * Shorthand for heading elements\n */\nexport const H1 = HTML.heading(1)\nexport const H2 = HTML.heading(2)\nexport const H3 = HTML.heading(3)\nexport const H4 = HTML.heading(4)\nexport const H5 = HTML.heading(5)\nexport const H6 = HTML.heading(6)\n\n/**\n * Layout container component class with element override support\n */\nclass LayoutComponent extends ComponentWithCSSClasses implements ComponentInstance<ComponentProps & ElementOverrideProps & CSSClassesProps> {\n public readonly type = 'component' as const\n public readonly id: string\n public mounted = false\n public cleanup: (() => void)[] = []\n private effectiveTag: string\n private validationResult: any\n\n constructor(\n public props: ComponentProps & ElementOverrideProps & CSSClassesProps,\n private layoutType: 'vstack' | 'hstack' | 'zstack',\n public children: ComponentInstance[] = [],\n private layoutProps: any = {}\n ) {\n super()\n this.id = `layout-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n \n // Process element override for tag specification enhancement\n const componentType = this.layoutType === 'hstack' ? 'HStack' : \n this.layoutType === 'vstack' ? 'VStack' : 'ZStack'\n const override = processElementOverride(componentType, 'div', this.props.element)\n this.effectiveTag = override.tag\n this.validationResult = override.validation\n\n\n // Set up lifecycle hooks to process child components\n useLifecycle(this, {\n onDOMReady: (_elements, primaryElement) => {\n // Process lifecycle hooks for child components that have them\n this.children.forEach((child, index) => {\n const enhancedLifecycle = (child as any)._enhancedLifecycle\n \n if (enhancedLifecycle && enhancedLifecycle.onDOMReady && !child.domReady) {\n try {\n // Find DOM elements for this child by searching within our container\n if (primaryElement) {\n // For layout components, children are rendered as direct children\n // Try to find the child's DOM element(s)\n const childElements = this.findChildDOMElements(child, primaryElement, index)\n \n if (childElements.length > 0) {\n // Set up DOM tracking for the child\n child.domElements = new Map()\n childElements.forEach((element, idx) => {\n const key = element.id || `element-${idx}`\n child.domElements!.set(key, element)\n if (!child.primaryElement) {\n child.primaryElement = element\n }\n })\n\n child.domReady = true\n\n // Call the child's onDOMReady hook\n const cleanup = enhancedLifecycle.onDOMReady(\n child.domElements,\n child.primaryElement\n )\n if (typeof cleanup === 'function') {\n child.cleanup = child.cleanup || []\n child.cleanup.push(cleanup)\n }\n\n // Also call onMount if it exists\n if (enhancedLifecycle.onMount) {\n const mountCleanup = enhancedLifecycle.onMount()\n if (typeof mountCleanup === 'function') {\n child.cleanup = child.cleanup || []\n child.cleanup.push(mountCleanup)\n }\n }\n }\n }\n } catch (error) {\n console.error(`Error processing lifecycle hooks for child ${child.id}:`, error)\n // Continue processing other children even if one fails\n }\n }\n })\n }\n })\n\n // Register this component for lifecycle processing\n registerComponentWithLifecycleHooks(this)\n }\n\n /**\n * Find DOM elements for a specific child component within the layout container\n */\n private findChildDOMElements(child: ComponentInstance, container: Element, childIndex: number): Element[] {\n // For Image components, look for img elements with the tachui-image class\n if (child.id.startsWith('image-')) {\n const images = container.querySelectorAll('img.tachui-image')\n // Since we don't have a perfect way to match, we'll use the childIndex as a heuristic\n if (images[childIndex]) {\n return [images[childIndex]]\n }\n // Fallback: return all images and let the component handle it\n return Array.from(images)\n }\n\n // For Button components, look for button elements with the tachui-button class\n if (child.id.startsWith('button-')) {\n const buttons = container.querySelectorAll('button.tachui-button')\n if (buttons[childIndex]) {\n return [buttons[childIndex]]\n }\n // Fallback: return all buttons and let the component handle it\n return Array.from(buttons)\n }\n\n // For Text components, look for span elements with the tachui-text class\n if (child.id.startsWith('text-')) {\n const textElements = container.querySelectorAll('span.tachui-text, .tachui-text')\n if (textElements[childIndex]) {\n return [textElements[childIndex]]\n }\n return Array.from(textElements)\n }\n\n // For other components, try to find any direct children elements\n // This is a fallback that should work for most components\n const allChildren = Array.from(container.children)\n if (allChildren[childIndex]) {\n return [allChildren[childIndex]]\n }\n\n // Final fallback: return all children and let the component handle it\n return allChildren\n }\n\n render() {\n const { spacing = 0, debugLabel } = this.layoutProps\n // Explicitly handle alignment to avoid default override\n const alignment = this.layoutProps.alignment !== undefined ? this.layoutProps.alignment : 'center'\n\n // Log component for debugging\n const debug = getDebugManager()\n debug.logComponent(this.layoutType.toUpperCase(), debugLabel)\n \n // Process CSS classes for this component\n const baseClasses = [`tachui-${this.layoutType}`, ...(debug.isEnabled() ? ['tachui-debug'] : [])]\n const classString = this.createClassString(this.props, baseClasses)\n\n\n switch (this.layoutType) {\n case 'vstack': {\n // Render children normally but also make them available for DOM bridge processing\n const vstackRenderedChildren = this.children.map((child) => {\n const childResult = child.render()\n const resultArray = Array.isArray(childResult) ? childResult : [childResult]\n return resultArray\n })\n const vstackFlattened = vstackRenderedChildren.flat()\n\n const element = {\n type: 'element' as const,\n tag: this.effectiveTag,\n props: {\n className: classString,\n style: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing ? `${spacing}px` : '0',\n alignItems:\n alignment === 'leading'\n ? 'flex-start'\n : alignment === 'trailing'\n ? 'flex-end'\n : 'center',\n },\n // Add debug attributes\n ...(debug.isEnabled() && {\n 'data-tachui-component': 'VStack',\n ...(debugLabel && { 'data-tachui-label': debugLabel })\n })\n },\n children: vstackFlattened,\n // Add component metadata for semantic role processing\n componentMetadata: {\n originalType: 'VStack',\n overriddenTo: this.effectiveTag !== 'div' ? this.effectiveTag : undefined,\n validationResult: this.validationResult\n }\n }\n\n return [element]\n }\n\n case 'hstack': {\n const hstackRenderedChildren = this.children.map((child) => {\n const childResult = child.render()\n const resultArray = Array.isArray(childResult) ? childResult : [childResult]\n return resultArray\n })\n const hstackFlattened = hstackRenderedChildren.flat()\n\n const element = {\n type: 'element' as const,\n tag: this.effectiveTag,\n props: {\n className: classString,\n style: {\n display: 'flex',\n flexDirection: 'row',\n gap: spacing ? `${spacing}px` : '0',\n alignItems:\n alignment === 'top'\n ? 'flex-start'\n : alignment === 'bottom'\n ? 'flex-end'\n : 'center',\n },\n // Add debug attributes\n ...(debug.isEnabled() && {\n 'data-tachui-component': 'HStack',\n ...(debugLabel && { 'data-tachui-label': debugLabel })\n })\n },\n children: hstackFlattened,\n // Add component metadata for semantic role processing\n componentMetadata: {\n originalType: 'HStack',\n overriddenTo: this.effectiveTag !== 'div' ? this.effectiveTag : undefined,\n validationResult: this.validationResult\n }\n }\n\n return [element]\n }\n\n case 'zstack': {\n // Find the highest layoutPriority child to determine container size\n let maxPriority = -Infinity\n let highestPriorityChild: ComponentInstance | null = null\n\n this.children.forEach((child) => {\n if ('modifiers' in child && Array.isArray(child.modifiers)) {\n const layoutMod = child.modifiers.find(\n (m) =>\n m.type === 'layout' &&\n m.properties &&\n 'layoutPriority' in m.properties &&\n typeof m.properties.layoutPriority === 'number'\n )\n if (layoutMod) {\n const priority = layoutMod.properties.layoutPriority as number\n if (priority > maxPriority) {\n maxPriority = priority\n highestPriorityChild = child\n }\n }\n }\n })\n\n const container = h('div', {\n className: classString,\n style: {\n position: 'relative',\n display: 'flex',\n justifyContent: alignment.includes('Leading')\n ? 'flex-start'\n : alignment.includes('Trailing')\n ? 'flex-end'\n : 'center',\n alignItems: alignment.includes('top')\n ? 'flex-start'\n : alignment.includes('bottom')\n ? 'flex-end'\n : 'center',\n // Container sizes to the highest priority child\n ...(highestPriorityChild\n ? {\n minWidth: 'fit-content',\n minHeight: 'fit-content',\n }\n : {}),\n },\n // Add debug attributes\n ...(debug.isEnabled() && {\n 'data-tachui-component': 'ZStack',\n ...(debugLabel && { 'data-tachui-label': debugLabel })\n })\n })\n\n // Apply absolute positioning to children for z-stack\n const renderedChildren = this.children.flatMap((child, index) => {\n const childNodes = child.render()\n const nodeArray = Array.isArray(childNodes) ? childNodes : [childNodes]\n\n // Get layoutPriority from child's modifiers\n let childPriority = index // Default to index-based z-index\n if ('modifiers' in child && Array.isArray(child.modifiers)) {\n const layoutMod = child.modifiers.find(\n (m) => m.type === 'layout' && m.properties && 'layoutPriority' in m.properties\n )\n if (layoutMod && typeof layoutMod.properties.layoutPriority === 'number') {\n childPriority = layoutMod.properties.layoutPriority\n }\n }\n\n return nodeArray.map((node) => {\n if (node.type === 'element') {\n const isHighestPriority = child === highestPriorityChild\n return {\n ...node,\n props: {\n ...node.props,\n style: {\n ...node.props?.style,\n // Highest priority child determines container size\n ...(isHighestPriority\n ? {\n position: 'relative',\n zIndex: childPriority,\n }\n : {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: childPriority,\n }),\n },\n },\n }\n }\n return node\n })\n })\n\n return [\n {\n type: 'element' as const,\n tag: this.effectiveTag,\n props: {\n ...container.props,\n className: classString\n },\n children: renderedChildren,\n // Add component metadata for semantic role processing\n componentMetadata: {\n originalType: 'ZStack',\n overriddenTo: this.effectiveTag !== 'div' ? this.effectiveTag : undefined,\n validationResult: this.validationResult\n }\n },\n ]\n }\n\n default:\n return [\n {\n type: 'element' as const,\n tag: 'div',\n props: {},\n children: [],\n },\n ]\n }\n }\n}\n\n/**\n * Layout container components with modifier support\n */\nexport const Layout = {\n /**\n * Vertical stack container (flexbox column)\n */\n VStack: (\n props: {\n children?: ComponentInstance[]\n spacing?: number\n alignment?: 'leading' | 'center' | 'trailing'\n } = {}\n ) => {\n const { children = [], spacing = 0, alignment = 'center' } = props\n const component = new LayoutComponent(props, 'vstack', children, { spacing, alignment })\n return withModifiers(component)\n },\n\n /**\n * Horizontal stack container (flexbox row)\n */\n HStack: (\n props: {\n children?: ComponentInstance[]\n spacing?: number\n alignment?: 'top' | 'center' | 'bottom'\n } = {}\n ) => {\n const { children = [], spacing = 0, alignment = 'center' } = props\n const component = new LayoutComponent(props, 'hstack', children, { spacing, alignment })\n return withModifiers(component)\n },\n\n /**\n * Z-index stack container (absolute positioning)\n */\n ZStack: (\n props: {\n children?: ComponentInstance[]\n alignment?:\n | 'topLeading'\n | 'top'\n | 'topTrailing'\n | 'leading'\n | 'center'\n | 'trailing'\n | 'bottomLeading'\n | 'bottom'\n | 'bottomTrailing'\n } = {}\n ) => {\n const { children = [], alignment = 'center' } = props\n const component = new LayoutComponent(props, 'zstack', children, { alignment })\n return withModifiers(component)\n },\n}\n\n/**\n * SwiftUI-aligned direct exports for layout components\n * These provide the same functionality as Layout.VStack, Layout.HStack, Layout.ZStack\n * but with direct component names for better SwiftUI syntax alignment\n */\nexport function VStack(\n props: {\n children?: ComponentInstance[]\n spacing?: number\n alignment?: 'leading' | 'center' | 'trailing'\n debugLabel?: string\n element?: string\n } = {}\n) {\n const { children = [], spacing = 0, debugLabel } = props\n // Explicitly handle alignment to avoid default override\n const alignment = props.alignment !== undefined ? props.alignment : 'center'\n const component = new LayoutComponent(props, 'vstack', children, { spacing, alignment, debugLabel })\n return withModifiers(component)\n}\n\nexport function HStack(\n props: {\n children?: ComponentInstance[]\n spacing?: number\n alignment?: 'top' | 'center' | 'bottom'\n debugLabel?: string\n element?: string\n } = {}\n) {\n const { children = [], spacing = 0, debugLabel } = props\n // Explicitly handle alignment to avoid default override\n const alignment = props.alignment !== undefined ? props.alignment : 'center'\n const component = new LayoutComponent(props, 'hstack', children, { spacing, alignment, debugLabel })\n return withModifiers(component)\n}\n\nexport function ZStack(\n props: {\n children?: ComponentInstance[]\n alignment?:\n | 'topLeading'\n | 'top'\n | 'topTrailing'\n | 'leading'\n | 'center'\n | 'trailing'\n | 'bottomLeading'\n | 'bottom'\n | 'bottomTrailing'\n element?: string\n } = {}\n) {\n const { children = [], alignment = 'center' } = props\n const component = new LayoutComponent(props, 'zstack', children, { alignment })\n return withModifiers(component)\n}\n\n/**\n * Simple Text component with modifier support\n */\nexport function Text(content: string | (() => string)) {\n const component = new ElementComponent(\n { content },\n 'span',\n typeof content === 'function' ? content() : content\n )\n return withModifiers(component)\n}\n\n/**\n * Utility to wrap any component with modifier support\n */\nexport function wrapComponent<P extends ComponentProps>(\n component: ComponentInstance<P>\n): ModifiableComponent<P> & { modifier: ModifierBuilder<ModifiableComponent<P>> } {\n return withModifiers(component)\n}\n\n/**\n * Higher-order component wrapper\n */\nexport function withModifierSupport<P extends ComponentProps>(\n ComponentClass: new (props: P) => ComponentInstance<P>\n) {\n return class extends ComponentClass {\n public _modifiableComponent?: ModifiableComponent<P>\n\n constructor(props: P) {\n super(props)\n this._modifiableComponent = withModifiers(this)\n }\n\n get modifier(): ModifierBuilder<ModifiableComponent<P>> {\n return createModifierBuilder(this._modifiableComponent!)\n }\n\n get modifiers() {\n return this._modifiableComponent!.modifiers\n }\n }\n}\n\n/**\n * Factory function for creating modifiable components\n */\nexport function createModifiableComponentFactory<P extends ComponentProps>(\n renderFn: (props: P) => DOMNode | DOMNode[]\n) {\n return (props: P) => {\n // Create a simple component instance that uses the render function\n const component: ComponentInstance<P> = {\n type: 'component' as const,\n id: `factory-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,\n props,\n mounted: false,\n cleanup: [],\n render() {\n const result = renderFn(props)\n return Array.isArray(result) ? result : [result]\n },\n }\n return withModifiers(component)\n }\n}\n"],"names":["debugManager","getDebugManager","isConcatenatable","component","withModifiers","modifiableComponent","createModifiableComponent","modifierBuilder","createModifierBuilder","result","other","createReactiveWrapper","renderFn","options","enableModifiers","props","ElementComponent","tag","content","attributes","__publicField","h","text","HTML","e","target","level","H1","H2","H3","H4","H5","H6","LayoutComponent","ComponentWithCSSClasses","layoutType","children","layoutProps","componentType","override","processElementOverride","useLifecycle","_elements","primaryElement","child","index","enhancedLifecycle","childElements","element","idx","key","cleanup","mountCleanup","error","registerComponentWithLifecycleHooks","container","childIndex","images","buttons","textElements","allChildren","spacing","debugLabel","alignment","debug","baseClasses","classString","vstackFlattened","childResult","hstackFlattened","maxPriority","highestPriorityChild","layoutMod","m","priority","renderedChildren","childNodes","nodeArray","childPriority","node","isHighestPriority","Layout","VStack","HStack","ZStack","wrapComponent","withModifierSupport","ComponentClass","createModifiableComponentFactory"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./concatenated-component.cjs"),a=Symbol.for("tachui.concat");class s{concat(e){const t=this.toSegment(),r=e.toSegment();return e instanceof n.ConcatenatedComponent?new n.ConcatenatedComponent([t,...e.segments],this.mergeMetadata(e.metadata,e.segments.length+1)):new n.ConcatenatedComponent([t,r],this.createMetadata(2))}isConcatenatable(){return!0}createMetadata(e){return{totalSegments:e,accessibilityRole:this.determineAccessibilityRole(),semanticStructure:this.determineSemanticStructure()}}mergeMetadata(e,t){return{totalSegments:t,accessibilityRole:this.mergeAccessibilityRoles(e.accessibilityRole),semanticStructure:this.mergeSemanticStructures(e.semanticStructure)}}determineAccessibilityRole(){const e=this.constructor.name;return e==="EnhancedText"?"text":e==="EnhancedImage"||e==="EnhancedButton"||e==="EnhancedLink"?"group":"composite"}determineSemanticStructure(){const e=this.constructor.name;return e==="EnhancedText"||e==="EnhancedImage"?"inline":"mixed"}mergeAccessibilityRoles(e){const t=this.determineAccessibilityRole();return t==="text"&&e==="text"?"text":t==="composite"||e==="composite"?"composite":"group"}mergeSemanticStructures(e){const t=this.determineSemanticStructure();return t==="inline"&&e==="inline"?"inline":t==="block"&&e==="block"?"block":"mixed"}}function m(c){const e=c;return e.concat=function(t){const r={id:this.id,component:this,modifiers:this.modifiers||[],render:()=>{const i=this.render();return Array.isArray(i)?i[0]:i}},o=t.toSegment();return t instanceof n.ConcatenatedComponent?new n.ConcatenatedComponent([r,...t.segments],{totalSegments:t.segments.length+1,accessibilityRole:"group",semanticStructure:"mixed"}):new n.ConcatenatedComponent([r,o],{totalSegments:2,accessibilityRole:"group",semanticStructure:"mixed"})},e.toSegment=function(){return{id:this.id,component:this,modifiers:this.modifiers||[],render:()=>{const t=this.render();return Array.isArray(t)?t[0]:t}}},e.isConcatenatable=function(){return!0},e}exports.CONCAT_SYMBOL=a;exports.ConcatenatableBase=s;exports.makeConcatenatable=m;
2
- //# sourceMappingURL=concatenatable.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"concatenatable.cjs","sources":["../../src/concatenation/concatenatable.ts"],"sourcesContent":["/**\n * Concatenatable Interface Implementation\n * \n * Provides the base implementation for components that support concatenation\n * using the SwiftUI-style + operator syntax.\n */\n\nimport type { ComponentInstance } from '../runtime/types'\nimport type { Concatenatable, ComponentSegment } from './types'\nimport { ConcatenatedComponent } from './concatenated-component'\n\n/**\n * Symbol for concatenation operations - matches the one used in types\n */\nexport const CONCAT_SYMBOL = Symbol.for('tachui.concat')\n\n/**\n * Base implementation for concatenatable functionality\n * This can be mixed into component classes\n */\nexport abstract class ConcatenatableBase<T = any> implements Concatenatable<T> {\n abstract readonly id: string\n abstract readonly type: string\n \n /**\n * Concatenate this component with another concatenatable component\n */\n concat<U extends Concatenatable<any>>(other: U): ConcatenatedComponent<T | U> {\n const thisSegment = this.toSegment()\n const otherSegment = other.toSegment()\n \n // If other is already a concatenated component, merge segments\n if (other instanceof ConcatenatedComponent) {\n return new ConcatenatedComponent(\n [thisSegment, ...other.segments],\n this.mergeMetadata(other.metadata, other.segments.length + 1)\n )\n }\n \n // Create new concatenated component with both segments\n return new ConcatenatedComponent(\n [thisSegment, otherSegment],\n this.createMetadata(2)\n )\n }\n \n /**\n * Convert this component to a segment for concatenation\n */\n abstract toSegment(): ComponentSegment\n \n /**\n * Check if this component supports concatenation\n */\n isConcatenatable(): boolean {\n return true\n }\n \n /**\n * Create metadata for a new concatenated component\n */\n protected createMetadata(totalSegments: number): import('./types').ConcatenationMetadata {\n return {\n totalSegments,\n accessibilityRole: this.determineAccessibilityRole(),\n semanticStructure: this.determineSemanticStructure()\n }\n }\n \n /**\n * Merge metadata when concatenating with existing concatenated component\n */\n protected mergeMetadata(\n existing: import('./types').ConcatenationMetadata, \n newTotal: number\n ): import('./types').ConcatenationMetadata {\n return {\n totalSegments: newTotal,\n accessibilityRole: this.mergeAccessibilityRoles(existing.accessibilityRole),\n semanticStructure: this.mergeSemanticStructures(existing.semanticStructure)\n }\n }\n \n /**\n * Determine the accessibility role for this component\n */\n protected determineAccessibilityRole(): 'text' | 'group' | 'composite' {\n // Default implementation - subclasses should override\n const componentType = this.constructor.name\n \n if (componentType === 'EnhancedText') return 'text'\n if (componentType === 'EnhancedImage') return 'group'\n if (componentType === 'EnhancedButton' || componentType === 'EnhancedLink') return 'group'\n \n return 'composite'\n }\n \n /**\n * Determine the semantic structure for this component\n */\n protected determineSemanticStructure(): 'inline' | 'block' | 'mixed' {\n // Default implementation - subclasses should override\n const componentType = this.constructor.name\n \n if (componentType === 'EnhancedText') return 'inline'\n if (componentType === 'EnhancedImage') return 'inline'\n \n return 'mixed'\n }\n \n /**\n * Merge accessibility roles when combining components\n */\n protected mergeAccessibilityRoles(\n existing: 'text' | 'group' | 'composite'\n ): 'text' | 'group' | 'composite' {\n const thisRole = this.determineAccessibilityRole()\n \n // If both are text, keep text\n if (thisRole === 'text' && existing === 'text') return 'text'\n \n // If either is composite, result is composite\n if (thisRole === 'composite' || existing === 'composite') return 'composite'\n \n // Otherwise, it's a group\n return 'group'\n }\n \n /**\n * Merge semantic structures when combining components\n */\n protected mergeSemanticStructures(\n existing: 'inline' | 'block' | 'mixed'\n ): 'inline' | 'block' | 'mixed' {\n const thisStructure = this.determineSemanticStructure()\n \n // If both are inline, keep inline\n if (thisStructure === 'inline' && existing === 'inline') return 'inline'\n \n // If both are block, keep block\n if (thisStructure === 'block' && existing === 'block') return 'block'\n \n // Otherwise, it's mixed\n return 'mixed'\n }\n}\n\n/**\n * Utility function to make any component concatenatable\n * This can be used as a mixin for existing components\n */\nexport function makeConcatenatable<T extends ComponentInstance>(\n component: T\n): T & Concatenatable {\n const concatenatable = component as T & Concatenatable\n \n // Add concatenation method\n concatenatable.concat = function<U extends Concatenatable<any>>(\n other: U\n ): ConcatenatedComponent<any> {\n const thisSegment: ComponentSegment = {\n id: this.id,\n component: this,\n modifiers: (this as any).modifiers || [],\n render: () => {\n const rendered = this.render()\n return Array.isArray(rendered) ? rendered[0] : rendered\n }\n }\n \n const otherSegment = other.toSegment()\n \n if (other instanceof ConcatenatedComponent) {\n return new ConcatenatedComponent(\n [thisSegment, ...other.segments],\n {\n totalSegments: other.segments.length + 1,\n accessibilityRole: 'group',\n semanticStructure: 'mixed'\n }\n )\n }\n \n return new ConcatenatedComponent(\n [thisSegment, otherSegment],\n {\n totalSegments: 2,\n accessibilityRole: 'group',\n semanticStructure: 'mixed'\n }\n )\n }\n \n concatenatable.toSegment = function(): ComponentSegment {\n return {\n id: this.id,\n component: this,\n modifiers: (this as any).modifiers || [],\n render: () => {\n const rendered = this.render()\n return Array.isArray(rendered) ? rendered[0] : rendered\n }\n }\n }\n \n concatenatable.isConcatenatable = function(): boolean {\n return true\n }\n \n return concatenatable\n}"],"names":["CONCAT_SYMBOL","ConcatenatableBase","other","thisSegment","otherSegment","ConcatenatedComponent","totalSegments","existing","newTotal","componentType","thisRole","thisStructure","makeConcatenatable","component","concatenatable","rendered"],"mappings":"gIAcaA,EAAgB,OAAO,IAAI,eAAe,EAMhD,MAAeC,CAAyD,CAO7E,OAAsCC,EAAwC,CAC5E,MAAMC,EAAc,KAAK,UAAA,EACnBC,EAAeF,EAAM,UAAA,EAG3B,OAAIA,aAAiBG,EAAAA,sBACZ,IAAIA,EAAAA,sBACT,CAACF,EAAa,GAAGD,EAAM,QAAQ,EAC/B,KAAK,cAAcA,EAAM,SAAUA,EAAM,SAAS,OAAS,CAAC,CAAA,EAKzD,IAAIG,EAAAA,sBACT,CAACF,EAAaC,CAAY,EAC1B,KAAK,eAAe,CAAC,CAAA,CAEzB,CAUA,kBAA4B,CAC1B,MAAO,EACT,CAKU,eAAeE,EAAgE,CACvF,MAAO,CACL,cAAAA,EACA,kBAAmB,KAAK,2BAAA,EACxB,kBAAmB,KAAK,2BAAA,CAA2B,CAEvD,CAKU,cACRC,EACAC,EACyC,CACzC,MAAO,CACL,cAAeA,EACf,kBAAmB,KAAK,wBAAwBD,EAAS,iBAAiB,EAC1E,kBAAmB,KAAK,wBAAwBA,EAAS,iBAAiB,CAAA,CAE9E,CAKU,4BAA6D,CAErE,MAAME,EAAgB,KAAK,YAAY,KAEvC,OAAIA,IAAkB,eAAuB,OACzCA,IAAkB,iBAClBA,IAAkB,kBAAoBA,IAAkB,eAAuB,QAE5E,WACT,CAKU,4BAA2D,CAEnE,MAAMA,EAAgB,KAAK,YAAY,KAGvC,OADIA,IAAkB,gBAClBA,IAAkB,gBAAwB,SAEvC,OACT,CAKU,wBACRF,EACgC,CAChC,MAAMG,EAAW,KAAK,2BAAA,EAGtB,OAAIA,IAAa,QAAUH,IAAa,OAAe,OAGnDG,IAAa,aAAeH,IAAa,YAAoB,YAG1D,OACT,CAKU,wBACRA,EAC8B,CAC9B,MAAMI,EAAgB,KAAK,2BAAA,EAG3B,OAAIA,IAAkB,UAAYJ,IAAa,SAAiB,SAG5DI,IAAkB,SAAWJ,IAAa,QAAgB,QAGvD,OACT,CACF,CAMO,SAASK,EACdC,EACoB,CACpB,MAAMC,EAAiBD,EAGvB,OAAAC,EAAe,OAAS,SACtBZ,EAC4B,CAC5B,MAAMC,EAAgC,CACpC,GAAI,KAAK,GACT,UAAW,KACX,UAAY,KAAa,WAAa,CAAA,EACtC,OAAQ,IAAM,CACZ,MAAMY,EAAW,KAAK,OAAA,EACtB,OAAO,MAAM,QAAQA,CAAQ,EAAIA,EAAS,CAAC,EAAIA,CACjD,CAAA,EAGIX,EAAeF,EAAM,UAAA,EAE3B,OAAIA,aAAiBG,EAAAA,sBACZ,IAAIA,EAAAA,sBACT,CAACF,EAAa,GAAGD,EAAM,QAAQ,EAC/B,CACE,cAAeA,EAAM,SAAS,OAAS,EACvC,kBAAmB,QACnB,kBAAmB,OAAA,CACrB,EAIG,IAAIG,EAAAA,sBACT,CAACF,EAAaC,CAAY,EAC1B,CACE,cAAe,EACf,kBAAmB,QACnB,kBAAmB,OAAA,CACrB,CAEJ,EAEAU,EAAe,UAAY,UAA6B,CACtD,MAAO,CACL,GAAI,KAAK,GACT,UAAW,KACX,UAAY,KAAa,WAAa,CAAA,EACtC,OAAQ,IAAM,CACZ,MAAMC,EAAW,KAAK,OAAA,EACtB,OAAO,MAAM,QAAQA,CAAQ,EAAIA,EAAS,CAAC,EAAIA,CACjD,CAAA,CAEJ,EAEAD,EAAe,iBAAmB,UAAoB,CACpD,MAAO,EACT,EAEOA,CACT"}
@@ -1,118 +0,0 @@
1
- import { ConcatenatedComponent as n } from "./concatenated-component.js";
2
- const a = Symbol.for("tachui.concat");
3
- class m {
4
- /**
5
- * Concatenate this component with another concatenatable component
6
- */
7
- concat(e) {
8
- const t = this.toSegment(), r = e.toSegment();
9
- return e instanceof n ? new n(
10
- [t, ...e.segments],
11
- this.mergeMetadata(e.metadata, e.segments.length + 1)
12
- ) : new n(
13
- [t, r],
14
- this.createMetadata(2)
15
- );
16
- }
17
- /**
18
- * Check if this component supports concatenation
19
- */
20
- isConcatenatable() {
21
- return !0;
22
- }
23
- /**
24
- * Create metadata for a new concatenated component
25
- */
26
- createMetadata(e) {
27
- return {
28
- totalSegments: e,
29
- accessibilityRole: this.determineAccessibilityRole(),
30
- semanticStructure: this.determineSemanticStructure()
31
- };
32
- }
33
- /**
34
- * Merge metadata when concatenating with existing concatenated component
35
- */
36
- mergeMetadata(e, t) {
37
- return {
38
- totalSegments: t,
39
- accessibilityRole: this.mergeAccessibilityRoles(e.accessibilityRole),
40
- semanticStructure: this.mergeSemanticStructures(e.semanticStructure)
41
- };
42
- }
43
- /**
44
- * Determine the accessibility role for this component
45
- */
46
- determineAccessibilityRole() {
47
- const e = this.constructor.name;
48
- return e === "EnhancedText" ? "text" : e === "EnhancedImage" || e === "EnhancedButton" || e === "EnhancedLink" ? "group" : "composite";
49
- }
50
- /**
51
- * Determine the semantic structure for this component
52
- */
53
- determineSemanticStructure() {
54
- const e = this.constructor.name;
55
- return e === "EnhancedText" || e === "EnhancedImage" ? "inline" : "mixed";
56
- }
57
- /**
58
- * Merge accessibility roles when combining components
59
- */
60
- mergeAccessibilityRoles(e) {
61
- const t = this.determineAccessibilityRole();
62
- return t === "text" && e === "text" ? "text" : t === "composite" || e === "composite" ? "composite" : "group";
63
- }
64
- /**
65
- * Merge semantic structures when combining components
66
- */
67
- mergeSemanticStructures(e) {
68
- const t = this.determineSemanticStructure();
69
- return t === "inline" && e === "inline" ? "inline" : t === "block" && e === "block" ? "block" : "mixed";
70
- }
71
- }
72
- function u(c) {
73
- const e = c;
74
- return e.concat = function(t) {
75
- const r = {
76
- id: this.id,
77
- component: this,
78
- modifiers: this.modifiers || [],
79
- render: () => {
80
- const i = this.render();
81
- return Array.isArray(i) ? i[0] : i;
82
- }
83
- }, s = t.toSegment();
84
- return t instanceof n ? new n(
85
- [r, ...t.segments],
86
- {
87
- totalSegments: t.segments.length + 1,
88
- accessibilityRole: "group",
89
- semanticStructure: "mixed"
90
- }
91
- ) : new n(
92
- [r, s],
93
- {
94
- totalSegments: 2,
95
- accessibilityRole: "group",
96
- semanticStructure: "mixed"
97
- }
98
- );
99
- }, e.toSegment = function() {
100
- return {
101
- id: this.id,
102
- component: this,
103
- modifiers: this.modifiers || [],
104
- render: () => {
105
- const t = this.render();
106
- return Array.isArray(t) ? t[0] : t;
107
- }
108
- };
109
- }, e.isConcatenatable = function() {
110
- return !0;
111
- }, e;
112
- }
113
- export {
114
- a as CONCAT_SYMBOL,
115
- m as ConcatenatableBase,
116
- u as makeConcatenatable
117
- };
118
- //# sourceMappingURL=concatenatable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"concatenatable.js","sources":["../../src/concatenation/concatenatable.ts"],"sourcesContent":["/**\n * Concatenatable Interface Implementation\n * \n * Provides the base implementation for components that support concatenation\n * using the SwiftUI-style + operator syntax.\n */\n\nimport type { ComponentInstance } from '../runtime/types'\nimport type { Concatenatable, ComponentSegment } from './types'\nimport { ConcatenatedComponent } from './concatenated-component'\n\n/**\n * Symbol for concatenation operations - matches the one used in types\n */\nexport const CONCAT_SYMBOL = Symbol.for('tachui.concat')\n\n/**\n * Base implementation for concatenatable functionality\n * This can be mixed into component classes\n */\nexport abstract class ConcatenatableBase<T = any> implements Concatenatable<T> {\n abstract readonly id: string\n abstract readonly type: string\n \n /**\n * Concatenate this component with another concatenatable component\n */\n concat<U extends Concatenatable<any>>(other: U): ConcatenatedComponent<T | U> {\n const thisSegment = this.toSegment()\n const otherSegment = other.toSegment()\n \n // If other is already a concatenated component, merge segments\n if (other instanceof ConcatenatedComponent) {\n return new ConcatenatedComponent(\n [thisSegment, ...other.segments],\n this.mergeMetadata(other.metadata, other.segments.length + 1)\n )\n }\n \n // Create new concatenated component with both segments\n return new ConcatenatedComponent(\n [thisSegment, otherSegment],\n this.createMetadata(2)\n )\n }\n \n /**\n * Convert this component to a segment for concatenation\n */\n abstract toSegment(): ComponentSegment\n \n /**\n * Check if this component supports concatenation\n */\n isConcatenatable(): boolean {\n return true\n }\n \n /**\n * Create metadata for a new concatenated component\n */\n protected createMetadata(totalSegments: number): import('./types').ConcatenationMetadata {\n return {\n totalSegments,\n accessibilityRole: this.determineAccessibilityRole(),\n semanticStructure: this.determineSemanticStructure()\n }\n }\n \n /**\n * Merge metadata when concatenating with existing concatenated component\n */\n protected mergeMetadata(\n existing: import('./types').ConcatenationMetadata, \n newTotal: number\n ): import('./types').ConcatenationMetadata {\n return {\n totalSegments: newTotal,\n accessibilityRole: this.mergeAccessibilityRoles(existing.accessibilityRole),\n semanticStructure: this.mergeSemanticStructures(existing.semanticStructure)\n }\n }\n \n /**\n * Determine the accessibility role for this component\n */\n protected determineAccessibilityRole(): 'text' | 'group' | 'composite' {\n // Default implementation - subclasses should override\n const componentType = this.constructor.name\n \n if (componentType === 'EnhancedText') return 'text'\n if (componentType === 'EnhancedImage') return 'group'\n if (componentType === 'EnhancedButton' || componentType === 'EnhancedLink') return 'group'\n \n return 'composite'\n }\n \n /**\n * Determine the semantic structure for this component\n */\n protected determineSemanticStructure(): 'inline' | 'block' | 'mixed' {\n // Default implementation - subclasses should override\n const componentType = this.constructor.name\n \n if (componentType === 'EnhancedText') return 'inline'\n if (componentType === 'EnhancedImage') return 'inline'\n \n return 'mixed'\n }\n \n /**\n * Merge accessibility roles when combining components\n */\n protected mergeAccessibilityRoles(\n existing: 'text' | 'group' | 'composite'\n ): 'text' | 'group' | 'composite' {\n const thisRole = this.determineAccessibilityRole()\n \n // If both are text, keep text\n if (thisRole === 'text' && existing === 'text') return 'text'\n \n // If either is composite, result is composite\n if (thisRole === 'composite' || existing === 'composite') return 'composite'\n \n // Otherwise, it's a group\n return 'group'\n }\n \n /**\n * Merge semantic structures when combining components\n */\n protected mergeSemanticStructures(\n existing: 'inline' | 'block' | 'mixed'\n ): 'inline' | 'block' | 'mixed' {\n const thisStructure = this.determineSemanticStructure()\n \n // If both are inline, keep inline\n if (thisStructure === 'inline' && existing === 'inline') return 'inline'\n \n // If both are block, keep block\n if (thisStructure === 'block' && existing === 'block') return 'block'\n \n // Otherwise, it's mixed\n return 'mixed'\n }\n}\n\n/**\n * Utility function to make any component concatenatable\n * This can be used as a mixin for existing components\n */\nexport function makeConcatenatable<T extends ComponentInstance>(\n component: T\n): T & Concatenatable {\n const concatenatable = component as T & Concatenatable\n \n // Add concatenation method\n concatenatable.concat = function<U extends Concatenatable<any>>(\n other: U\n ): ConcatenatedComponent<any> {\n const thisSegment: ComponentSegment = {\n id: this.id,\n component: this,\n modifiers: (this as any).modifiers || [],\n render: () => {\n const rendered = this.render()\n return Array.isArray(rendered) ? rendered[0] : rendered\n }\n }\n \n const otherSegment = other.toSegment()\n \n if (other instanceof ConcatenatedComponent) {\n return new ConcatenatedComponent(\n [thisSegment, ...other.segments],\n {\n totalSegments: other.segments.length + 1,\n accessibilityRole: 'group',\n semanticStructure: 'mixed'\n }\n )\n }\n \n return new ConcatenatedComponent(\n [thisSegment, otherSegment],\n {\n totalSegments: 2,\n accessibilityRole: 'group',\n semanticStructure: 'mixed'\n }\n )\n }\n \n concatenatable.toSegment = function(): ComponentSegment {\n return {\n id: this.id,\n component: this,\n modifiers: (this as any).modifiers || [],\n render: () => {\n const rendered = this.render()\n return Array.isArray(rendered) ? rendered[0] : rendered\n }\n }\n }\n \n concatenatable.isConcatenatable = function(): boolean {\n return true\n }\n \n return concatenatable\n}"],"names":["CONCAT_SYMBOL","ConcatenatableBase","other","thisSegment","otherSegment","ConcatenatedComponent","totalSegments","existing","newTotal","componentType","thisRole","thisStructure","makeConcatenatable","component","concatenatable","rendered"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("../runtime/renderer.cjs");var l=Object.defineProperty,u=(c,e,t)=>e in c?l(c,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):c[e]=t,r=(c,e,t)=>u(c,typeof e!="symbol"?e+"":e,t);class o{constructor(e,t,n=!0){this.metadata=t,r(this,"type","component"),r(this,"id"),r(this,"mounted",!1),r(this,"cleanup",[]),r(this,"props",{}),r(this,"segments"),this.id=`concat-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,this.segments=e}render(){const e=this.determineContainerClass(),t=this.buildAccessibilityLabel(),n=this.buildAccessibilityAttributes(),s=this.segments.map(i=>i.render()).flat();return[m.h("span",{class:`tachui-concatenated ${e}`,...n,"aria-label":t||void 0,...this.hasInteractiveContent()&&{"aria-live":"polite","aria-atomic":"true"},...process.env.NODE_ENV==="development"&&{"data-concatenated-segments":this.segments.length,"data-semantic-structure":this.metadata.semanticStructure,"data-accessibility-role":this.metadata.accessibilityRole}},...s)]}buildAccessibilityAttributes(){const e={};switch(this.metadata.accessibilityRole){case"text":break;case"group":e.role="group",e["aria-describedby"]=this.generateGroupDescription();break;case"composite":e.role="group",e["aria-roledescription"]="interactive content group";break}return this.metadata.semanticStructure==="mixed"&&this.segments.length>2&&(e["aria-flowto"]=this.generateFlowTargets()),this.hasInteractiveContent()&&(e.tabindex="0",e["aria-description"]="Contains interactive elements. Use Tab to navigate."),e}generateGroupDescription(){const e=this.getUniqueComponentTypes();return e.length===1?`Group of ${this.segments.length} ${e[0]} elements`:`Group containing ${e.join(", ")} elements`}generateFlowTargets(){return""}hasInteractiveContent(){return this.segments.some(e=>{const t=e.component.constructor.name;return t==="EnhancedButton"||t==="EnhancedLinkComponent"})}getUniqueComponentTypes(){const e=new Set(this.segments.map(t=>{switch(t.component.constructor.name){case"EnhancedText":return"text";case"EnhancedImage":return"image";case"EnhancedButton":return"button";case"EnhancedLinkComponent":return"link";default:return"component"}}));return Array.from(e)}concat(e){let t,n;return e instanceof o?(t=[...this.segments,...e.segments],n=this.mergeMetadata(this.metadata,e.metadata,t.length)):(t=[...this.segments,e.toSegment()],n=this.mergeMetadata(this.metadata,{totalSegments:1,accessibilityRole:this.determineComponentAccessibilityRole(e),semanticStructure:this.determineComponentSemanticStructure(e)},t.length)),new o(t,n)}toSegment(){return{id:this.id,component:this,modifiers:[],render:()=>this.render()[0]}}isConcatenatable(){return!0}determineContainerClass(){const e=this.segments.map(i=>i.component.constructor.name),t=e.some(i=>i==="EnhancedImage"),n=e.some(i=>i==="EnhancedText"),s=e.some(i=>i==="EnhancedButton"),a=e.some(i=>i==="EnhancedLink");return t&&n&&(s||a)?"mixed-content":t&&n?"image-text-composition":t&&!n?"image-composition":n&&!t?"text-composition":"generic-composition"}buildAccessibilityLabel(){const t=this.segments.map(n=>this.extractAccessibilityText(n)).filter(Boolean);return t.length===0?"":this.joinAccessibilityLabels(t)}joinAccessibilityLabels(e){if(e.length===1)return e[0];switch(this.metadata.semanticStructure){case"inline":return e.join(" ");case"block":return e.join(". ");case"mixed":return this.smartJoinLabels(e);default:return e.join(" ")}}smartJoinLabels(e){const t=[];for(let n=0;n<e.length;n++){const s=e[n],a=e[n+1];t.push(s),a&&(this.needsExplicitSeparator(s,a)?t.push(". "):t.push(" "))}return t.join("")}needsExplicitSeparator(e,t){const n=/[.!?:;]$/.test(e.trim()),s=/^[A-Z]/.test(t.trim());return!n&&s}extractAccessibilityText(e){const t=e.component;switch(t.constructor.name){case"EnhancedText":return t.content||t.title||"";case"EnhancedImage":return t.alt||t.accessibilityLabel||"Image";case"EnhancedButton":return t.title||t.accessibilityLabel||"Button";case"EnhancedLink":return t.title||t.accessibilityLabel||"Link";case"ConcatenatedComponent":return t.buildAccessibilityLabel();default:return t.accessibilityLabel||""}}mergeMetadata(e,t,n){return{totalSegments:n,accessibilityRole:this.mergeAccessibilityRoles(e.accessibilityRole,t.accessibilityRole),semanticStructure:this.mergeSemanticStructures(e.semanticStructure,t.semanticStructure)}}mergeAccessibilityRoles(e,t){return e==="text"&&t==="text"?"text":e==="composite"||t==="composite"?"composite":"group"}mergeSemanticStructures(e,t){return e==="inline"&&t==="inline"?"inline":e==="block"&&t==="block"?"block":"mixed"}determineComponentAccessibilityRole(e){switch(e.constructor.name){case"EnhancedText":return"text";case"EnhancedImage":return"group";case"EnhancedButton":case"EnhancedLink":return"group";default:return"composite"}}determineComponentSemanticStructure(e){switch(e.constructor.name){case"EnhancedText":case"EnhancedImage":return"inline";case"EnhancedButton":case"EnhancedLink":return"inline";default:return"mixed"}}generateAccessibilityTree(){return{role:this.metadata.accessibilityRole,label:this.buildAccessibilityLabel(),children:this.segments.map(e=>this.segmentToAccessibilityNode(e))}}segmentToAccessibilityNode(e){const t=e.component;return{role:this.determineComponentAccessibilityRole(t),label:this.extractAccessibilityText(e),children:t instanceof o?t.generateAccessibilityTree().children:void 0}}}exports.ConcatenatedComponent=o;
2
- //# sourceMappingURL=concatenated-component.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"concatenated-component.cjs","sources":["../../src/concatenation/concatenated-component.ts"],"sourcesContent":["/**\n * ConcatenatedComponent Implementation\n * \n * The main class that represents a concatenated component composed of multiple\n * component segments. Handles rendering, accessibility, and further concatenation.\n */\n\nimport { h } from '../runtime/renderer'\nimport type { ComponentInstance, DOMNode } from '../runtime/types'\nimport type { \n Concatenatable, \n ComponentSegment, \n ConcatenationMetadata,\n AccessibilityNode \n} from './types'\n// import { CONCAT_SYMBOL } from './concatenatable' // Unused\n\n/**\n * A component that represents the concatenation of multiple components\n */\nexport class ConcatenatedComponent<T = any> \n implements ComponentInstance<any>, Concatenatable<T> {\n \n public readonly type = 'component' as const\n public readonly id: string\n public mounted = false\n public cleanup: (() => void)[] = []\n public props: any = {} // Required by ComponentInstance interface\n public segments: ComponentSegment[] // Make segments public\n \n constructor(\n segments: ComponentSegment[],\n public metadata: ConcatenationMetadata,\n _enableOptimization: boolean = true\n ) {\n this.id = `concat-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n \n // Temporarily disable optimization to avoid require() issues in browser\n // TODO: Fix text optimization to work in browser environment\n this.segments = segments\n \n // Apply text optimization if enabled and beneficial (disabled for now)\n // if (enableOptimization && TextConcatenationOptimizer.shouldOptimize(segments)) {\n // this.segments = TextConcatenationOptimizer.optimize(segments)\n // \n // // Log optimization stats in development\n // if (process.env.NODE_ENV === 'development') {\n // const stats = TextConcatenationOptimizer.getOptimizationStats(segments, this.segments)\n // console.log(`TachUI Concatenation: Optimized ${stats.originalCount} → ${stats.optimizedCount} segments (${stats.reductionPercent}% reduction)`)\n // }\n // } else {\n // this.segments = segments\n // }\n }\n \n /**\n * Render the concatenated component to DOM nodes (Enhanced - Phase 4.2)\n */\n render(): DOMNode[] {\n const containerClass = this.determineContainerClass()\n const ariaLabel = this.buildAccessibilityLabel()\n const accessibilityAttributes = this.buildAccessibilityAttributes()\n \n // Render all segments and flatten the results\n const segmentNodes = this.segments.map(segment => segment.render()).flat()\n \n // Create container element with comprehensive accessibility\n const container = h('span', {\n class: `tachui-concatenated ${containerClass}`,\n ...accessibilityAttributes,\n 'aria-label': ariaLabel || undefined,\n // Enhanced live region support for dynamic content\n ...(this.hasInteractiveContent() && {\n 'aria-live': 'polite',\n 'aria-atomic': 'true'\n }),\n // Add debug information in development\n ...(process.env.NODE_ENV === 'development' && {\n 'data-concatenated-segments': this.segments.length,\n 'data-semantic-structure': this.metadata.semanticStructure,\n 'data-accessibility-role': this.metadata.accessibilityRole\n })\n }, ...segmentNodes)\n \n return [container]\n }\n \n /**\n * Build comprehensive accessibility attributes\n */\n private buildAccessibilityAttributes(): Record<string, string> {\n const attributes: Record<string, string> = {}\n \n // Set appropriate role based on metadata\n switch (this.metadata.accessibilityRole) {\n case 'text':\n // For text-only content, no explicit role needed (default text semantics)\n break\n \n case 'group':\n attributes.role = 'group'\n // Add description for groups to clarify purpose\n attributes['aria-describedby'] = this.generateGroupDescription()\n break\n \n case 'composite':\n attributes.role = 'group'\n // For composite content (with interactive elements), mark as application region\n attributes['aria-roledescription'] = 'interactive content group'\n break\n }\n \n // Add reading order hints for complex layouts\n if (this.metadata.semanticStructure === 'mixed' && this.segments.length > 2) {\n attributes['aria-flowto'] = this.generateFlowTargets()\n }\n \n // Add keyboard navigation hints for interactive content\n if (this.hasInteractiveContent()) {\n attributes.tabindex = '0'\n attributes['aria-description'] = 'Contains interactive elements. Use Tab to navigate.'\n }\n \n return attributes\n }\n \n /**\n * Generate description for grouped content\n */\n private generateGroupDescription(): string {\n const componentTypes = this.getUniqueComponentTypes()\n \n if (componentTypes.length === 1) {\n return `Group of ${this.segments.length} ${componentTypes[0]} elements`\n }\n \n return `Group containing ${componentTypes.join(', ')} elements`\n }\n \n /**\n * Generate flow targets for reading order\n */\n private generateFlowTargets(): string {\n // This would typically reference IDs of next focusable elements\n // For now, return empty string as it requires DOM coordination\n return ''\n }\n \n /**\n * Check if concatenated content contains interactive elements\n */\n private hasInteractiveContent(): boolean {\n return this.segments.some(segment => {\n const componentType = segment.component.constructor.name\n return componentType === 'EnhancedButton' || componentType === 'EnhancedLinkComponent'\n })\n }\n \n /**\n * Get unique component types in this concatenation\n */\n private getUniqueComponentTypes(): string[] {\n const types = new Set(this.segments.map(segment => {\n const componentType = segment.component.constructor.name\n switch (componentType) {\n case 'EnhancedText': return 'text'\n case 'EnhancedImage': return 'image'\n case 'EnhancedButton': return 'button'\n case 'EnhancedLinkComponent': return 'link'\n default: return 'component'\n }\n }))\n \n return Array.from(types)\n }\n \n /**\n * Concatenate this component with another concatenatable component\n */\n concat<U extends Concatenatable<any>>(other: U): ConcatenatedComponent<T | U> {\n let newSegments: ComponentSegment[]\n let newMetadata: ConcatenationMetadata\n \n if (other instanceof ConcatenatedComponent) {\n // Merging with another concatenated component\n newSegments = [...this.segments, ...other.segments]\n newMetadata = this.mergeMetadata(this.metadata, other.metadata, newSegments.length)\n } else {\n // Adding a single component\n newSegments = [...this.segments, other.toSegment()]\n newMetadata = this.mergeMetadata(\n this.metadata, \n {\n totalSegments: 1,\n accessibilityRole: this.determineComponentAccessibilityRole(other),\n semanticStructure: this.determineComponentSemanticStructure(other)\n },\n newSegments.length\n )\n }\n \n return new ConcatenatedComponent(newSegments, newMetadata)\n }\n \n /**\n * Convert this concatenated component to a segment (for further concatenation)\n */\n toSegment(): ComponentSegment {\n return {\n id: this.id,\n component: this as any, // Cast to satisfy interface requirements\n modifiers: [], // Concatenated components don't have their own modifiers\n render: () => this.render()[0]\n }\n }\n \n /**\n * Check if this component supports concatenation\n */\n isConcatenatable(): boolean {\n return true\n }\n \n /**\n * Determine the appropriate CSS class for the container\n */\n private determineContainerClass(): string {\n const componentTypes = this.segments.map(s => s.component.constructor.name)\n \n const hasImages = componentTypes.some(type => type === 'EnhancedImage')\n const hasText = componentTypes.some(type => type === 'EnhancedText')\n const hasButtons = componentTypes.some(type => type === 'EnhancedButton')\n const hasLinks = componentTypes.some(type => type === 'EnhancedLink')\n \n // Determine the most appropriate container class\n if (hasImages && hasText && (hasButtons || hasLinks)) {\n return 'mixed-content'\n } else if (hasImages && hasText) {\n return 'image-text-composition'\n } else if (hasImages && !hasText) {\n return 'image-composition'\n } else if (hasText && !hasImages) {\n return 'text-composition'\n } else {\n return 'generic-composition'\n }\n }\n \n /**\n * Build comprehensive accessibility label for screen readers (Enhanced - Phase 4.2)\n */\n private buildAccessibilityLabel(): string {\n const labels = this.segments.map(segment => this.extractAccessibilityText(segment))\n \n // Filter out empty labels and format appropriately\n const cleanLabels = labels.filter(Boolean)\n \n if (cleanLabels.length === 0) return ''\n \n // Apply intelligent joining based on content type\n return this.joinAccessibilityLabels(cleanLabels)\n }\n \n /**\n * Intelligently join accessibility labels based on content and structure\n */\n private joinAccessibilityLabels(labels: string[]): string {\n if (labels.length === 1) return labels[0]\n \n // Analyze the semantic structure to determine appropriate joining\n switch (this.metadata.semanticStructure) {\n case 'inline':\n // For inline content, join with spaces (natural reading flow)\n return labels.join(' ')\n \n case 'block':\n // For block content, use more explicit separators\n return labels.join('. ')\n \n case 'mixed':\n // For mixed content, use context-aware joining\n return this.smartJoinLabels(labels)\n \n default:\n return labels.join(' ')\n }\n }\n \n /**\n * Context-aware label joining for mixed content\n */\n private smartJoinLabels(labels: string[]): string {\n const result: string[] = []\n \n for (let i = 0; i < labels.length; i++) {\n const current = labels[i]\n const next = labels[i + 1]\n \n result.push(current)\n \n if (next) {\n // Add appropriate separator based on content\n if (this.needsExplicitSeparator(current, next)) {\n result.push('. ')\n } else {\n result.push(' ')\n }\n }\n }\n \n return result.join('')\n }\n \n /**\n * Determine if two accessibility labels need explicit separation\n */\n private needsExplicitSeparator(current: string, next: string): boolean {\n // Add separator if current doesn't end with punctuation and next is a new concept\n const currentEndsWithPunctuation = /[.!?:;]$/.test(current.trim())\n const nextStartsWithCapital = /^[A-Z]/.test(next.trim())\n \n return !currentEndsWithPunctuation && nextStartsWithCapital\n }\n \n /**\n * Extract accessibility text from a component segment\n */\n private extractAccessibilityText(segment: ComponentSegment): string {\n const component = segment.component\n const componentType = component.constructor.name\n \n // Handle different component types\n switch (componentType) {\n case 'EnhancedText':\n return (component as any).content || (component as any).title || ''\n \n case 'EnhancedImage':\n return (component as any).alt || (component as any).accessibilityLabel || 'Image'\n \n case 'EnhancedButton':\n return (component as any).title || (component as any).accessibilityLabel || 'Button'\n \n case 'EnhancedLink':\n return (component as any).title || (component as any).accessibilityLabel || 'Link'\n \n case 'ConcatenatedComponent':\n return (component as unknown as ConcatenatedComponent).buildAccessibilityLabel()\n \n default:\n return (component as any).accessibilityLabel || ''\n }\n }\n \n /**\n * Merge metadata from two concatenation operations\n */\n private mergeMetadata(\n metadata1: ConcatenationMetadata,\n metadata2: ConcatenationMetadata,\n totalSegments: number\n ): ConcatenationMetadata {\n return {\n totalSegments,\n accessibilityRole: this.mergeAccessibilityRoles(\n metadata1.accessibilityRole, \n metadata2.accessibilityRole\n ),\n semanticStructure: this.mergeSemanticStructures(\n metadata1.semanticStructure, \n metadata2.semanticStructure\n )\n }\n }\n \n /**\n * Merge accessibility roles from two components\n */\n private mergeAccessibilityRoles(\n role1: 'text' | 'group' | 'composite',\n role2: 'text' | 'group' | 'composite'\n ): 'text' | 'group' | 'composite' {\n // If both are text, keep text\n if (role1 === 'text' && role2 === 'text') return 'text'\n \n // If either is composite, result is composite\n if (role1 === 'composite' || role2 === 'composite') return 'composite'\n \n // Otherwise, it's a group\n return 'group'\n }\n \n /**\n * Merge semantic structures from two components\n */\n private mergeSemanticStructures(\n structure1: 'inline' | 'block' | 'mixed',\n structure2: 'inline' | 'block' | 'mixed'\n ): 'inline' | 'block' | 'mixed' {\n // If both are inline, keep inline\n if (structure1 === 'inline' && structure2 === 'inline') return 'inline'\n \n // If both are block, keep block\n if (structure1 === 'block' && structure2 === 'block') return 'block'\n \n // Otherwise, it's mixed\n return 'mixed'\n }\n \n /**\n * Determine accessibility role for a single component\n */\n private determineComponentAccessibilityRole(component: Concatenatable): 'text' | 'group' | 'composite' {\n const componentType = (component as any).constructor.name\n \n switch (componentType) {\n case 'EnhancedText':\n return 'text'\n case 'EnhancedImage':\n return 'group'\n case 'EnhancedButton':\n case 'EnhancedLink':\n return 'group'\n default:\n return 'composite'\n }\n }\n \n /**\n * Determine semantic structure for a single component\n */\n private determineComponentSemanticStructure(component: Concatenatable): 'inline' | 'block' | 'mixed' {\n const componentType = (component as any).constructor.name\n \n switch (componentType) {\n case 'EnhancedText':\n case 'EnhancedImage':\n return 'inline'\n case 'EnhancedButton':\n case 'EnhancedLink':\n return 'inline' // Buttons and links are typically inline in concatenation\n default:\n return 'mixed'\n }\n }\n \n /**\n * Generate comprehensive accessibility tree for this concatenated component\n */\n generateAccessibilityTree(): AccessibilityNode {\n return {\n role: this.metadata.accessibilityRole,\n label: this.buildAccessibilityLabel(),\n children: this.segments.map(segment => this.segmentToAccessibilityNode(segment))\n }\n }\n \n /**\n * Convert a component segment to an accessibility node\n */\n private segmentToAccessibilityNode(segment: ComponentSegment): AccessibilityNode {\n const component = segment.component\n \n return {\n role: this.determineComponentAccessibilityRole(component as unknown as Concatenatable),\n label: this.extractAccessibilityText(segment),\n children: component instanceof ConcatenatedComponent \n ? component.generateAccessibilityTree().children \n : undefined\n }\n }\n}"],"names":["ConcatenatedComponent","segments","metadata","_enableOptimization","__publicField","containerClass","ariaLabel","accessibilityAttributes","segmentNodes","segment","h","attributes","componentTypes","componentType","types","other","newSegments","newMetadata","s","hasImages","type","hasText","hasButtons","hasLinks","cleanLabels","labels","result","i","current","next","currentEndsWithPunctuation","nextStartsWithCapital","component","metadata1","metadata2","totalSegments","role1","role2","structure1","structure2"],"mappings":"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"}
@@ -1,276 +0,0 @@
1
- import { h as m } from "../runtime/renderer.js";
2
- var l = Object.defineProperty, u = (r, e, t) => e in r ? l(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t, c = (r, e, t) => u(r, typeof e != "symbol" ? e + "" : e, t);
3
- class o {
4
- // Make segments public
5
- constructor(e, t, n = !0) {
6
- this.metadata = t, c(this, "type", "component"), c(this, "id"), c(this, "mounted", !1), c(this, "cleanup", []), c(this, "props", {}), c(this, "segments"), this.id = `concat-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`, this.segments = e;
7
- }
8
- /**
9
- * Render the concatenated component to DOM nodes (Enhanced - Phase 4.2)
10
- */
11
- render() {
12
- const e = this.determineContainerClass(), t = this.buildAccessibilityLabel(), n = this.buildAccessibilityAttributes(), s = this.segments.map((i) => i.render()).flat();
13
- return [m("span", {
14
- class: `tachui-concatenated ${e}`,
15
- ...n,
16
- "aria-label": t || void 0,
17
- // Enhanced live region support for dynamic content
18
- ...this.hasInteractiveContent() && {
19
- "aria-live": "polite",
20
- "aria-atomic": "true"
21
- },
22
- // Add debug information in development
23
- ...process.env.NODE_ENV === "development" && {
24
- "data-concatenated-segments": this.segments.length,
25
- "data-semantic-structure": this.metadata.semanticStructure,
26
- "data-accessibility-role": this.metadata.accessibilityRole
27
- }
28
- }, ...s)];
29
- }
30
- /**
31
- * Build comprehensive accessibility attributes
32
- */
33
- buildAccessibilityAttributes() {
34
- const e = {};
35
- switch (this.metadata.accessibilityRole) {
36
- case "text":
37
- break;
38
- case "group":
39
- e.role = "group", e["aria-describedby"] = this.generateGroupDescription();
40
- break;
41
- case "composite":
42
- e.role = "group", e["aria-roledescription"] = "interactive content group";
43
- break;
44
- }
45
- return this.metadata.semanticStructure === "mixed" && this.segments.length > 2 && (e["aria-flowto"] = this.generateFlowTargets()), this.hasInteractiveContent() && (e.tabindex = "0", e["aria-description"] = "Contains interactive elements. Use Tab to navigate."), e;
46
- }
47
- /**
48
- * Generate description for grouped content
49
- */
50
- generateGroupDescription() {
51
- const e = this.getUniqueComponentTypes();
52
- return e.length === 1 ? `Group of ${this.segments.length} ${e[0]} elements` : `Group containing ${e.join(", ")} elements`;
53
- }
54
- /**
55
- * Generate flow targets for reading order
56
- */
57
- generateFlowTargets() {
58
- return "";
59
- }
60
- /**
61
- * Check if concatenated content contains interactive elements
62
- */
63
- hasInteractiveContent() {
64
- return this.segments.some((e) => {
65
- const t = e.component.constructor.name;
66
- return t === "EnhancedButton" || t === "EnhancedLinkComponent";
67
- });
68
- }
69
- /**
70
- * Get unique component types in this concatenation
71
- */
72
- getUniqueComponentTypes() {
73
- const e = new Set(this.segments.map((t) => {
74
- switch (t.component.constructor.name) {
75
- case "EnhancedText":
76
- return "text";
77
- case "EnhancedImage":
78
- return "image";
79
- case "EnhancedButton":
80
- return "button";
81
- case "EnhancedLinkComponent":
82
- return "link";
83
- default:
84
- return "component";
85
- }
86
- }));
87
- return Array.from(e);
88
- }
89
- /**
90
- * Concatenate this component with another concatenatable component
91
- */
92
- concat(e) {
93
- let t, n;
94
- return e instanceof o ? (t = [...this.segments, ...e.segments], n = this.mergeMetadata(this.metadata, e.metadata, t.length)) : (t = [...this.segments, e.toSegment()], n = this.mergeMetadata(
95
- this.metadata,
96
- {
97
- totalSegments: 1,
98
- accessibilityRole: this.determineComponentAccessibilityRole(e),
99
- semanticStructure: this.determineComponentSemanticStructure(e)
100
- },
101
- t.length
102
- )), new o(t, n);
103
- }
104
- /**
105
- * Convert this concatenated component to a segment (for further concatenation)
106
- */
107
- toSegment() {
108
- return {
109
- id: this.id,
110
- component: this,
111
- // Cast to satisfy interface requirements
112
- modifiers: [],
113
- // Concatenated components don't have their own modifiers
114
- render: () => this.render()[0]
115
- };
116
- }
117
- /**
118
- * Check if this component supports concatenation
119
- */
120
- isConcatenatable() {
121
- return !0;
122
- }
123
- /**
124
- * Determine the appropriate CSS class for the container
125
- */
126
- determineContainerClass() {
127
- const e = this.segments.map((i) => i.component.constructor.name), t = e.some((i) => i === "EnhancedImage"), n = e.some((i) => i === "EnhancedText"), s = e.some((i) => i === "EnhancedButton"), a = e.some((i) => i === "EnhancedLink");
128
- return t && n && (s || a) ? "mixed-content" : t && n ? "image-text-composition" : t && !n ? "image-composition" : n && !t ? "text-composition" : "generic-composition";
129
- }
130
- /**
131
- * Build comprehensive accessibility label for screen readers (Enhanced - Phase 4.2)
132
- */
133
- buildAccessibilityLabel() {
134
- const t = this.segments.map((n) => this.extractAccessibilityText(n)).filter(Boolean);
135
- return t.length === 0 ? "" : this.joinAccessibilityLabels(t);
136
- }
137
- /**
138
- * Intelligently join accessibility labels based on content and structure
139
- */
140
- joinAccessibilityLabels(e) {
141
- if (e.length === 1) return e[0];
142
- switch (this.metadata.semanticStructure) {
143
- case "inline":
144
- return e.join(" ");
145
- case "block":
146
- return e.join(". ");
147
- case "mixed":
148
- return this.smartJoinLabels(e);
149
- default:
150
- return e.join(" ");
151
- }
152
- }
153
- /**
154
- * Context-aware label joining for mixed content
155
- */
156
- smartJoinLabels(e) {
157
- const t = [];
158
- for (let n = 0; n < e.length; n++) {
159
- const s = e[n], a = e[n + 1];
160
- t.push(s), a && (this.needsExplicitSeparator(s, a) ? t.push(". ") : t.push(" "));
161
- }
162
- return t.join("");
163
- }
164
- /**
165
- * Determine if two accessibility labels need explicit separation
166
- */
167
- needsExplicitSeparator(e, t) {
168
- const n = /[.!?:;]$/.test(e.trim()), s = /^[A-Z]/.test(t.trim());
169
- return !n && s;
170
- }
171
- /**
172
- * Extract accessibility text from a component segment
173
- */
174
- extractAccessibilityText(e) {
175
- const t = e.component;
176
- switch (t.constructor.name) {
177
- case "EnhancedText":
178
- return t.content || t.title || "";
179
- case "EnhancedImage":
180
- return t.alt || t.accessibilityLabel || "Image";
181
- case "EnhancedButton":
182
- return t.title || t.accessibilityLabel || "Button";
183
- case "EnhancedLink":
184
- return t.title || t.accessibilityLabel || "Link";
185
- case "ConcatenatedComponent":
186
- return t.buildAccessibilityLabel();
187
- default:
188
- return t.accessibilityLabel || "";
189
- }
190
- }
191
- /**
192
- * Merge metadata from two concatenation operations
193
- */
194
- mergeMetadata(e, t, n) {
195
- return {
196
- totalSegments: n,
197
- accessibilityRole: this.mergeAccessibilityRoles(
198
- e.accessibilityRole,
199
- t.accessibilityRole
200
- ),
201
- semanticStructure: this.mergeSemanticStructures(
202
- e.semanticStructure,
203
- t.semanticStructure
204
- )
205
- };
206
- }
207
- /**
208
- * Merge accessibility roles from two components
209
- */
210
- mergeAccessibilityRoles(e, t) {
211
- return e === "text" && t === "text" ? "text" : e === "composite" || t === "composite" ? "composite" : "group";
212
- }
213
- /**
214
- * Merge semantic structures from two components
215
- */
216
- mergeSemanticStructures(e, t) {
217
- return e === "inline" && t === "inline" ? "inline" : e === "block" && t === "block" ? "block" : "mixed";
218
- }
219
- /**
220
- * Determine accessibility role for a single component
221
- */
222
- determineComponentAccessibilityRole(e) {
223
- switch (e.constructor.name) {
224
- case "EnhancedText":
225
- return "text";
226
- case "EnhancedImage":
227
- return "group";
228
- case "EnhancedButton":
229
- case "EnhancedLink":
230
- return "group";
231
- default:
232
- return "composite";
233
- }
234
- }
235
- /**
236
- * Determine semantic structure for a single component
237
- */
238
- determineComponentSemanticStructure(e) {
239
- switch (e.constructor.name) {
240
- case "EnhancedText":
241
- case "EnhancedImage":
242
- return "inline";
243
- case "EnhancedButton":
244
- case "EnhancedLink":
245
- return "inline";
246
- // Buttons and links are typically inline in concatenation
247
- default:
248
- return "mixed";
249
- }
250
- }
251
- /**
252
- * Generate comprehensive accessibility tree for this concatenated component
253
- */
254
- generateAccessibilityTree() {
255
- return {
256
- role: this.metadata.accessibilityRole,
257
- label: this.buildAccessibilityLabel(),
258
- children: this.segments.map((e) => this.segmentToAccessibilityNode(e))
259
- };
260
- }
261
- /**
262
- * Convert a component segment to an accessibility node
263
- */
264
- segmentToAccessibilityNode(e) {
265
- const t = e.component;
266
- return {
267
- role: this.determineComponentAccessibilityRole(t),
268
- label: this.extractAccessibilityText(e),
269
- children: t instanceof o ? t.generateAccessibilityTree().children : void 0
270
- };
271
- }
272
- }
273
- export {
274
- o as ConcatenatedComponent
275
- };
276
- //# sourceMappingURL=concatenated-component.js.map