@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":"background.js","sources":["../../src/modifiers/background.ts"],"sourcesContent":["import { BaseModifier } from './base'\nimport type { ModifierContext } from './types'\nimport type { DOMNode } from '../runtime/types'\nimport type { Asset } from '../assets/types'\nimport type { \n GradientDefinition, \n StatefulBackgroundValue, \n StateGradientOptions \n} from '../gradients/types'\nimport { gradientToCSS } from '../gradients/css-generator'\nimport { StateGradientAsset } from '../gradients/state-gradient-asset'\n\nexport interface BackgroundOptions {\n background: StatefulBackgroundValue\n}\n\nexport class BackgroundModifier extends BaseModifier<BackgroundOptions> {\n readonly type = 'background'\n readonly priority = 95\n private stateGradientAsset?: StateGradientAsset\n\n apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined {\n if (!context.element) return\n\n const background = this.properties.background\n const element = context.element as HTMLElement\n\n if (this.isStateGradientOptions(background)) {\n this.setupStateGradient(element, background)\n } else {\n const cssValue = this.resolveBackground(background)\n if (cssValue) {\n element.style.background = cssValue\n }\n }\n\n return undefined\n }\n\n private setupStateGradient(element: HTMLElement, stateOptions: StateGradientOptions): void {\n // Create or update the state gradient asset\n this.stateGradientAsset = new StateGradientAsset('background-state', stateOptions)\n \n // Set initial background\n element.style.background = this.stateGradientAsset.resolve()\n \n // Add animation styles\n const animationCSS = this.stateGradientAsset.getAnimationCSS()\n element.style.cssText += animationCSS\n\n // Set up event listeners for state changes\n this.setupStateEventListeners(element)\n }\n\n private setupStateEventListeners(element: HTMLElement): void {\n if (!this.stateGradientAsset) return\n\n // Hover state\n if (this.stateGradientAsset.hasState('hover')) {\n element.addEventListener('mouseenter', () => {\n this.stateGradientAsset!.setState('hover')\n element.style.background = this.stateGradientAsset!.resolve()\n })\n\n element.addEventListener('mouseleave', () => {\n // Return to appropriate state (active, focus, or default)\n const currentState = this.getCurrentElementState(element)\n this.stateGradientAsset!.setState(currentState)\n element.style.background = this.stateGradientAsset!.resolve()\n })\n }\n\n // Active/pressed state\n if (this.stateGradientAsset.hasState('active')) {\n element.addEventListener('mousedown', () => {\n this.stateGradientAsset!.setState('active')\n element.style.background = this.stateGradientAsset!.resolve()\n })\n\n element.addEventListener('mouseup', () => {\n // Return to hover if still hovering, otherwise default\n const isHovering = element.matches(':hover')\n const nextState = isHovering && this.stateGradientAsset!.hasState('hover') ? 'hover' : 'default'\n this.stateGradientAsset!.setState(nextState)\n element.style.background = this.stateGradientAsset!.resolve()\n })\n }\n\n // Focus state\n if (this.stateGradientAsset.hasState('focus')) {\n element.addEventListener('focus', () => {\n this.stateGradientAsset!.setState('focus')\n element.style.background = this.stateGradientAsset!.resolve()\n })\n\n element.addEventListener('blur', () => {\n this.stateGradientAsset!.setState('default')\n element.style.background = this.stateGradientAsset!.resolve()\n })\n }\n\n // Disabled state (handled via attribute observation)\n if (this.stateGradientAsset.hasState('disabled')) {\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.type === 'attributes' && mutation.attributeName === 'disabled') {\n const isDisabled = element.hasAttribute('disabled')\n const state = isDisabled ? 'disabled' : 'default'\n this.stateGradientAsset!.setState(state)\n element.style.background = this.stateGradientAsset!.resolve()\n }\n })\n })\n\n observer.observe(element, { attributes: true, attributeFilter: ['disabled'] })\n }\n }\n\n private getCurrentElementState(element: HTMLElement): keyof StateGradientOptions {\n if (!this.stateGradientAsset) return 'default'\n\n if (element.hasAttribute('disabled') && this.stateGradientAsset.hasState('disabled')) {\n return 'disabled'\n }\n\n if (element.matches(':focus') && this.stateGradientAsset.hasState('focus')) {\n return 'focus'\n }\n\n return 'default'\n }\n\n private resolveBackground(background: StatefulBackgroundValue): string {\n if (typeof background === 'string') {\n return background\n }\n\n if (this.isAsset(background)) {\n return background.resolve() as string\n }\n\n if (this.isGradientDefinition(background)) {\n return gradientToCSS(background)\n }\n\n if (this.isStateGradientOptions(background)) {\n // This should be handled by setupStateGradient\n return this.resolveBackground(background.default)\n }\n\n return ''\n }\n\n private isAsset(value: any): value is Asset {\n return value && typeof value === 'object' && typeof value.resolve === 'function'\n }\n\n private isGradientDefinition(value: any): value is GradientDefinition {\n return value && typeof value === 'object' && 'type' in value && 'options' in value\n }\n\n private isStateGradientOptions(value: any): value is StateGradientOptions {\n return value && typeof value === 'object' && 'default' in value\n }\n}"],"names":["BackgroundModifier","BaseModifier","__publicField","_node","context","background","element","cssValue","stateOptions","StateGradientAsset","animationCSS","currentState","nextState","mutations","mutation","state","gradientToCSS","value"],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../reactive/cleanup.cjs");const d=require("../reactive/computed.cjs"),y=require("../reactive/effect.cjs");require("../reactive/unified-scheduler.cjs");const u=require("../reactive/signal.cjs");require("../reactive/scheduler.cjs");const E=require("../reactive/theme.cjs"),C=require("./types.cjs"),h=require("../constants/layout.cjs");var L=Object.defineProperty,T=(v,i,t)=>i in v?L(v,i,{enumerable:!0,configurable:!0,writable:!0,value:t}):v[i]=t,g=(v,i,t)=>T(v,typeof i!="symbol"?i+"":i,t);class b{constructor(i){this.properties=i}resolveReactiveProps(i,t){const e={};for(const[n,s]of Object.entries(i))u.isSignal(s)||d.isComputed(s),e[n]=s;return e}applyStyleChange(i,t,e){if(i instanceof HTMLElement){const n=this.toCSSProperty(t);if(u.isSignal(e)||d.isComputed(e))y.createEffect(()=>{const s=e(),o=String(s);if(o.includes("!important")){const r=o.replace(/\s*!important\s*$/,"").trim();i.style.setProperty(n,r,"important")}else i.style.setProperty(n,o)});else{const s=String(e);if(s.includes("!important")){const o=s.replace(/\s*!important\s*$/,"").trim();i.style.setProperty(n,o,"important")}else i.style.setProperty(n,s)}}}toCSSProperty(i){return i.replace(/([A-Z])/g,"-$1").toLowerCase()}toCSSValue(i){return typeof i=="number"?`${i}px`:String(i)}toCSSValueForProperty(i,t){return typeof t=="number"?["opacity","z-index","line-height","flex-grow","flex-shrink","order","column-count","font-weight"].includes(i)?String(t):`${t}px`:(["filter","transform","clip-path"].includes(i),String(t))}applyStyles(i,t){if(i instanceof HTMLElement||i.style){const e=(i instanceof HTMLElement,i.style);for(const[n,s]of Object.entries(t))if(s!==void 0){const o=this.toCSSProperty(n);if(u.isSignal(s)||d.isComputed(s))y.createEffect(()=>{const r=s(),a=this.toCSSValueForProperty(o,r);if(e.setProperty)if(typeof a=="string"&&a.includes("!important")){const l=a.replace(/\s*!important\s*$/,"").trim();e.setProperty(o,l,"important")}else e.setProperty(o,a);else e[o]=a});else{const r=this.toCSSValueForProperty(o,s);if(e.setProperty)if(typeof r=="string"&&r.includes("!important")){const a=r.replace(/\s*!important\s*$/,"").trim();e.setProperty(o,a,"important")}else e.setProperty(o,r);else e[o]=r}}}}addClasses(i,t){i instanceof HTMLElement&&i.classList.add(...t)}removeClasses(i,t){i instanceof HTMLElement&&i.classList.remove(...t)}createStyleContext(i,t,e){return{componentId:i,element:t,modifiers:e,signals:new Set,cleanup:[]}}}class M extends b{constructor(){super(...arguments),g(this,"type","layout"),g(this,"priority",C.ModifierPriority.LAYOUT)}apply(i,t){if(!i.element||!t.element)return;const e=this.createStyleContext(t.componentId,t.element,[]),n=this.computeLayoutStyles(this.properties,e);this.applyStyles(t.element,n);const s=this.properties;s.offset&&t.element instanceof HTMLElement&&this.applyOffsetTransform(t.element,s.offset),s.aspectRatio&&t.element instanceof HTMLElement&&this.applyAspectRatio(t.element,s.aspectRatio),s.scaleEffect&&t.element instanceof HTMLElement&&this.applyScaleTransform(t.element,s.scaleEffect),s.position&&t.element instanceof HTMLElement&&this.applyAbsolutePosition(t.element,s.position),s.zIndex!==void 0&&t.element instanceof HTMLElement&&this.applyZIndex(t.element,s.zIndex)}applyOffsetTransform(i,t){const{x:e,y:n}=t;if(u.isSignal(e)||d.isComputed(e)||u.isSignal(n)||d.isComputed(n))y.createEffect(()=>{const s=u.isSignal(e)||d.isComputed(e)?e():e??0,o=u.isSignal(n)||d.isComputed(n)?n():n??0,r=this.toCSSValue(s),a=this.toCSSValue(o),l=`translate(${r}, ${a})`,m=(i.style.transform||"").split(" ").filter(p=>p&&!p.startsWith("translate(")).join(" "),f=m?`${m} ${l}`:l;i.style.transform=f});else{const s=e??0,o=n??0,r=this.toCSSValue(s),a=this.toCSSValue(o),l=`translate(${r}, ${a})`,m=(i.style.transform||"").split(" ").filter(p=>p&&!p.startsWith("translate(")).join(" "),f=m?`${m} ${l}`:l;i.style.transform=f}}applyAspectRatio(i,t){const{ratio:e,contentMode:n}=t;e!==void 0&&(u.isSignal(e)||d.isComputed(e)?y.createEffect(()=>{const s=typeof e=="function"?e():e;i.style.aspectRatio=String(s)}):i.style.aspectRatio=String(e),n==="fill"?i.style.objectFit="cover":i.style.objectFit="contain")}applyScaleTransform(i,t){const{x:e,y:n,anchor:s}=t,o=e??1,r=n??o;if(u.isSignal(o)||d.isComputed(o)||u.isSignal(r)||d.isComputed(r))y.createEffect(()=>{const a=u.isSignal(o)||d.isComputed(o)?o():o,l=u.isSignal(r)||d.isComputed(r)?r():r,c=`scale(${a}, ${l})`;i.style.transformOrigin=this.getTransformOrigin(s||"center");const f=(i.style.transform||"").replace(/\s*scale\([^)]*\)\s*/g," ").replace(/\s+/g," ").trim(),p=f?`${f} ${c}`:c;i.style.transform=p});else{const a=`scale(${o}, ${r})`;i.style.transformOrigin=this.getTransformOrigin(s||"center");const c=(i.style.transform||"").replace(/\s*scale\([^)]*\)\s*/g," ").replace(/\s+/g," ").trim(),m=c?`${c} ${a}`:a;i.style.transform=m}}applyAbsolutePosition(i,t){const{x:e,y:n}=t;if(i.style.position="absolute",u.isSignal(e)||d.isComputed(e)||u.isSignal(n)||d.isComputed(n))y.createEffect(()=>{const s=u.isSignal(e)||d.isComputed(e)?e():e??0,o=u.isSignal(n)||d.isComputed(n)?n():n??0;i.style.left=this.toCSSValue(s),i.style.top=this.toCSSValue(o)});else{const s=e??0,o=n??0;i.style.left=this.toCSSValue(s),i.style.top=this.toCSSValue(o)}}applyZIndex(i,t){u.isSignal(t)||d.isComputed(t)?y.createEffect(()=>{const e=t();i.style.zIndex=String(e)}):i.style.zIndex=String(t)}getTransformOrigin(i){return{center:"center center",top:"center top",topLeading:"left top",topTrailing:"right top",bottom:"center bottom",bottomLeading:"left bottom",bottomTrailing:"right bottom",leading:"left center",trailing:"right center"}[i]||"center center"}computeLayoutStyles(i,t){const e={};if(i.frame){const n=i.frame,s=h.shouldExpandForInfinity(n);if(Object.assign(e,s.cssProps),n.width!==void 0){const o=h.dimensionToCSS(n.width);o!==void 0&&!h.isInfinity(n.width)&&!s.expandWidth&&(e.width=o)}if(n.height!==void 0){const o=h.dimensionToCSS(n.height);o!==void 0&&!h.isInfinity(n.height)&&!s.expandHeight&&(e.height=o)}if(n.minWidth!==void 0){const o=h.dimensionToCSS(n.minWidth);o!==void 0&&(e.minWidth=o)}if(n.maxWidth!==void 0&&!h.isInfinity(n.maxWidth)){const o=h.dimensionToCSS(n.maxWidth);o!==void 0&&(e.maxWidth=o)}else h.isInfinity(n.maxWidth)&&(e.maxWidth="none",e.flexGrow="1 !important",e.flexShrink="1 !important",e.flexBasis="0% !important",e.alignSelf="stretch !important");if(n.minHeight!==void 0){const o=h.dimensionToCSS(n.minHeight);o!==void 0&&(e.minHeight=o)}if(n.maxHeight!==void 0&&!h.isInfinity(n.maxHeight)){const o=h.dimensionToCSS(n.maxHeight);o!==void 0&&(e.maxHeight=o)}else h.isInfinity(n.maxHeight)&&(e.maxHeight="none",e.flexGrow="1 !important",e.flexShrink="1 !important",e.flexBasis="0% !important",e.alignSelf="stretch !important")}if(i.padding!==void 0)if(typeof i.padding=="number")e.padding=this.toCSSValue(i.padding);else{const n=i.padding;n.top!==void 0&&(e.paddingTop=this.toCSSValue(n.top)),n.right!==void 0&&(e.paddingRight=this.toCSSValue(n.right)),n.bottom!==void 0&&(e.paddingBottom=this.toCSSValue(n.bottom)),n.left!==void 0&&(e.paddingLeft=this.toCSSValue(n.left))}if(i.margin!==void 0)if(typeof i.margin=="number")e.margin=this.toCSSValue(i.margin);else{const n=i.margin;n.top!==void 0&&(e.marginTop=this.toCSSValue(n.top)),n.right!==void 0&&(e.marginRight=this.toCSSValue(n.right)),n.bottom!==void 0&&(e.marginBottom=this.toCSSValue(n.bottom)),n.left!==void 0&&(e.marginLeft=this.toCSSValue(n.left))}if(i.alignment)switch(i.alignment){case"leading":e.textAlign="left",e.alignItems="flex-start";break;case"center":e.textAlign="center",e.alignItems="center";break;case"trailing":e.textAlign="right",e.alignItems="flex-end";break;case"top":e.alignItems="flex-start";break;case"bottom":e.alignItems="flex-end";break}if(i.layoutPriority!==void 0){const n=Number(i.layoutPriority);n>0?(e.flexShrink="0",e.flexGrow=String(Math.max(1,n/10)),e.zIndex=String(n),e.gridRowEnd=`span ${String(Math.min(10,Math.max(1,Math.ceil(n/10))))}`,e.gridColumnEnd=`span ${String(Math.min(10,Math.max(1,Math.ceil(n/10))))}`):n===0?(e.flexShrink="1",e.flexGrow="1"):(e.flexShrink=String(Math.abs(n)),e.flexGrow="0",e.zIndex=String(n)),e&&typeof e=="object"&&"setProperty"in e&&e.setProperty("--layout-priority",String(n))}if(i.offset,i.aspectRatio){const{ratio:n,contentMode:s}=i.aspectRatio;n!==void 0&&(e.aspectRatio=typeof n=="number"?String(n):n,s==="fill"?e.objectFit="cover":e.objectFit="contain")}if(i.fixedSize){const{horizontal:n,vertical:s}=i.fixedSize;n&&(e.flexShrink="0",e.width="max-content"),s&&(e.flexShrink="0",e.height="max-content")}return e}}class P extends b{constructor(){super(...arguments),g(this,"type","appearance"),g(this,"priority",C.ModifierPriority.APPEARANCE)}apply(i,t){if(!i.element||!t.element)return;const e=this.createStyleContext(t.componentId,t.element,[]),n=this.resolveReactiveProps(this.properties,e);this.applyAssetBasedStyles(t.element,n);const s=this.computeAppearanceStyles(n);this.applyStyles(t.element,s)}applyAssetBasedStyles(i,t){const e=E.getThemeSignal();t.foregroundColor&&this.isAsset(t.foregroundColor)&&y.createEffect(()=>{e();const n=t.foregroundColor.resolve();this.applyStyleChange(i,"color",n)}),t.backgroundColor&&this.isAsset(t.backgroundColor)&&y.createEffect(()=>{e();const n=t.backgroundColor.resolve();this.applyStyleChange(i,"backgroundColor",n)}),t.border?.color&&this.isAsset(t.border.color)&&y.createEffect(()=>{e();const n=t.border.color.resolve();this.applyStyleChange(i,"borderColor",n)})}isAsset(i){return i!=null&&typeof i=="object"&&"resolve"in i&&typeof i.resolve=="function"}computeAppearanceStyles(i){const t={};if(i.foregroundColor&&!this.isAsset(i.foregroundColor)&&(t.color=i.foregroundColor),i.backgroundColor&&!this.isAsset(i.backgroundColor)&&(t.backgroundColor=i.backgroundColor),i.opacity!==void 0&&(t.opacity=i.opacity),i.font){const n=i.font;n.family&&(typeof n.family=="object"&&n.family!==null&&"resolve"in n.family?t.fontFamily=n.family.resolve():t.fontFamily=n.family),n.size&&(t.fontSize=this.toCSSValue(n.size)),n.weight&&(t.fontWeight=String(n.weight)),n.style&&(t.fontStyle=n.style)}if(i.cornerRadius!==void 0&&(t.borderRadius=this.toCSSValue(i.cornerRadius)),i.border){const n=i.border;n.width!==void 0&&(t.borderWidth=this.toCSSValue(n.width)),n.color&&!this.isAsset(n.color)&&(t.borderColor=n.color),n.style&&(t.borderStyle=n.style)}if(i.shadow){const n=i.shadow,s=n.x||0,o=n.y||0,r=n.radius||0,a=n.color||"rgba(0,0,0,0.25)";t.boxShadow=`${s}px ${o}px ${r}px ${a}`}if(i.clipped&&(t.overflow="hidden"),i.clipShape){const{shape:n,parameters:s}=i.clipShape;switch(n){case"circle":t.clipPath="circle(50%)";break;case"ellipse":{const o=s?.radiusX||"50%",r=s?.radiusY||"50%";t.clipPath=`ellipse(${o} ${r} at center)`;break}case"rect":{const o=s?.inset||0;t.clipPath=`inset(${o}px)`;break}case"polygon":{const o=s?.points||"0% 0%, 100% 0%, 100% 100%, 0% 100%";t.clipPath=`polygon(${o})`;break}}}const e=[];return i.blur!==void 0&&e.push(`blur(${i.blur}px)`),i.brightness!==void 0&&e.push(`brightness(${i.brightness})`),i.contrast!==void 0&&e.push(`contrast(${i.contrast})`),i.saturation!==void 0&&e.push(`saturate(${i.saturation})`),i.hueRotation!==void 0&&e.push(`hue-rotate(${i.hueRotation}deg)`),i.grayscale!==void 0&&e.push(`grayscale(${i.grayscale})`),i.colorInvert!==void 0&&e.push(`invert(${i.colorInvert})`),e.length>0&&(t.filter=e.join(" ")),t}}class $ extends b{constructor(){super(...arguments),g(this,"type","interaction"),g(this,"priority",C.ModifierPriority.INTERACTION)}apply(i,t){if(!t.element)return;const e=this.properties;e.onTap&&t.element.addEventListener("click",e.onTap),e.onHover&&(t.element.addEventListener("mouseenter",()=>e.onHover(!0)),t.element.addEventListener("mouseleave",()=>e.onHover(!1))),e.onMouseEnter&&t.element.addEventListener("mouseenter",e.onMouseEnter),e.onMouseLeave&&t.element.addEventListener("mouseleave",e.onMouseLeave),e.onMouseDown&&t.element.addEventListener("mousedown",e.onMouseDown),e.onMouseUp&&t.element.addEventListener("mouseup",e.onMouseUp),e.onDragStart&&t.element.addEventListener("dragstart",e.onDragStart),e.onDragOver&&t.element.addEventListener("dragover",e.onDragOver),e.onDragLeave&&t.element.addEventListener("dragleave",e.onDragLeave),e.onDrop&&t.element.addEventListener("drop",e.onDrop),e.onDoubleClick&&t.element.addEventListener("dblclick",e.onDoubleClick),e.onContextMenu&&t.element.addEventListener("contextmenu",e.onContextMenu),e.onFocus&&(t.element.addEventListener("focus",()=>e.onFocus(!0)),t.element.addEventListener("blur",()=>e.onFocus(!1))),e.onBlur&&t.element.addEventListener("blur",()=>e.onBlur(!1)),e.onKeyPress&&t.element.addEventListener("keypress",e.onKeyPress),e.onKeyDown&&t.element.addEventListener("keydown",e.onKeyDown),e.onKeyUp&&t.element.addEventListener("keyup",e.onKeyUp),e.onScroll&&t.element.addEventListener("scroll",e.onScroll,{passive:!0}),e.onWheel&&t.element.addEventListener("wheel",e.onWheel,{passive:!1}),e.onInput&&t.element.addEventListener("input",e.onInput),e.onChange&&t.element.addEventListener("change",n=>{const s=n.target,o=s.value||s.textContent||"";e.onChange(o,n)}),e.onCopy&&t.element.addEventListener("copy",e.onCopy),e.onCut&&t.element.addEventListener("cut",e.onCut),e.onPaste&&t.element.addEventListener("paste",e.onPaste),e.onSelect&&t.element.addEventListener("select",e.onSelect),e.disabled!==void 0&&t.element instanceof HTMLElement&&(e.disabled?(t.element.setAttribute("disabled","true"),t.element.style.pointerEvents="none",t.element.style.opacity="0.6"):(t.element.removeAttribute("disabled"),t.element.style.pointerEvents="",t.element.style.opacity="")),e.draggable!==void 0&&t.element instanceof HTMLElement&&(t.element.draggable=e.draggable),e.accessibilityLabel&&t.element.setAttribute("aria-label",e.accessibilityLabel),e.accessibilityHint&&t.element.setAttribute("aria-describedby",e.accessibilityHint),e.onLongPressGesture&&this.setupLongPressGesture(t.element,e.onLongPressGesture),e.keyboardShortcut&&this.setupKeyboardShortcut(t.element,e.keyboardShortcut),e.focused!==void 0&&this.setupFocusManagement(t.element,e.focused),e.focusable&&this.setupFocusable(t.element,e.focusable),e.onContinuousHover&&this.setupContinuousHover(t.element,e.onContinuousHover),e.allowsHitTesting!==void 0&&this.setupHitTesting(t.element,e.allowsHitTesting)}setupLongPressGesture(i,t){const e=t.minimumDuration??500,n=t.maximumDistance??10;let s,o=null,r=!1;const a=()=>{s&&(clearTimeout(s),s=void 0),r&&t.onPressingChanged&&t.onPressingChanged(!1),r=!1,o=null},l=p=>{const S=p;o={x:S.clientX,y:S.clientY},r=!0,t.onPressingChanged&&t.onPressingChanged(!0),s=window.setTimeout(()=>{r&&o&&(t.perform(),a())},e)},c=p=>{const S=p;if(!o||!r)return;Math.sqrt(Math.pow(S.clientX-o.x,2)+Math.pow(S.clientY-o.y,2))>n&&a()},m=()=>{a()},f=()=>{a()};i.addEventListener("pointerdown",l),i.addEventListener("pointermove",c),i.addEventListener("pointerup",m),i.addEventListener("pointercancel",f),i._longPressCleanup=a}setupKeyboardShortcut(i,t){const e=t.modifiers??[],n=s=>{const o={cmd:e.includes("cmd")||e.includes("meta"),ctrl:e.includes("ctrl"),shift:e.includes("shift"),alt:e.includes("alt")},r={cmd:s.metaKey||s.ctrlKey,ctrl:s.ctrlKey,shift:s.shiftKey,alt:s.altKey},a=s.key.toLowerCase()===t.key.toLowerCase(),l=Object.entries(o).every(([c,m])=>m===r[c]);a&&l&&(s.preventDefault(),t.action())};document.addEventListener("keydown",n),i._keyboardShortcutCleanup=()=>{document.removeEventListener("keydown",n)}}setupFocusManagement(i,t){if(!(i instanceof HTMLElement))return;const e=i;e.hasAttribute("tabindex")||e.setAttribute("tabindex","0"),u.isSignal(t)||d.isComputed(t)?y.createEffect(()=>{t()?e.focus():e.blur()}):t&&e.focus()}setupFocusable(i,t){if(!(i instanceof HTMLElement))return;const e=i;t.isFocusable===!1?e.setAttribute("tabindex","-1"):e.hasAttribute("tabindex")||e.setAttribute("tabindex","0"),t.interactions?.includes("activate")&&e.addEventListener("keydown",n=>{(n.key==="Enter"||n.key===" ")&&(n.preventDefault(),e.click())}),t.interactions?.includes("edit")&&(e.setAttribute("role","textbox"),e.setAttribute("contenteditable","true"))}setupContinuousHover(i,t){const e=t.coordinateSpace??"local",n=o=>{const r=o;let a,l;if(e==="local"){const c=i.getBoundingClientRect();a=r.clientX-c.left,l=r.clientY-c.top}else a=r.clientX,l=r.clientY;t.perform({x:a,y:l})},s=()=>{t.perform(null)};i.addEventListener("mousemove",n),i.addEventListener("mouseleave",s),i._continuousHoverCleanup=()=>{i.removeEventListener("mousemove",n),i.removeEventListener("mouseleave",s)}}setupHitTesting(i,t){i instanceof HTMLElement&&(i.style.pointerEvents=t?"":"none")}}class w extends b{constructor(){super(...arguments),g(this,"type","animation"),g(this,"priority",C.ModifierPriority.ANIMATION)}apply(i,t){if(!t.element)return;const e=this.properties;if(e.transition){const n=e.transition,s=n.property||"all",o=n.duration||300,r=n.easing||"ease",a=n.delay||0;t.element instanceof HTMLElement&&(t.element.style.transition=`${s} ${o}ms ${r} ${a}ms`)}if(e.animation&&t.element instanceof HTMLElement){const n=e.animation;if(n.keyframes){const s=`tachui-animation-${t.componentId}-${Date.now()}`,o=this.createKeyframeRule(s,n.keyframes);this.addKeyframesToStylesheet(o);const r=n.duration||1e3,a=n.easing||"ease",l=n.iterations||1,c=n.direction||"normal";t.element.style.animation=`${s} ${r}ms ${a} ${l} ${c}`}}if(e.transform&&t.element instanceof HTMLElement&&(u.isSignal(e.transform)||d.isComputed(e.transform)?y.createEffect(()=>{const n=e.transform();t.element instanceof HTMLElement&&(t.element.style.transform=n)}):t.element.style.transform=e.transform),e.rotationEffect&&t.element instanceof HTMLElement){const{angle:n,anchor:s}=e.rotationEffect,r={center:"50% 50%",top:"50% 0%",topLeading:"0% 0%",topTrailing:"100% 0%",bottom:"50% 100%",bottomLeading:"0% 100%",bottomTrailing:"100% 100%",leading:"0% 50%",trailing:"100% 50%"}[s||"center"]||"50% 50%",a=`rotate(${n}deg)`;if(u.isSignal(n)||d.isComputed(n))y.createEffect(()=>{const c=`rotate(${typeof n=="function"?n():n}deg)`;if(t.element instanceof HTMLElement){t.element.style.transformOrigin=r;const f=(t.element.style.transform||"").split(" ").filter(S=>S&&!S.startsWith("rotate(")).join(" "),p=f?`${f} ${c}`:c;t.element.style.transform=p}});else if(t.element instanceof HTMLElement){t.element.style.transformOrigin=r;const c=(t.element.style.transform||"").split(" ").filter(f=>f&&!f.startsWith("rotate(")).join(" "),m=c?`${c} ${a}`:a;t.element.style.transform=m}}e.overlay&&t.element instanceof HTMLElement&&this.applyOverlay(t.element,e.overlay,t)}applyOverlay(i,t,e){const{content:n,alignment:s="center"}=t;(i.style.position===""||i.style.position==="static")&&(i.style.position="relative");const o=document.createElement("div");o.style.position="absolute",o.style.pointerEvents="none";const r=this.getOverlayAlignment(s);if(Object.assign(o.style,r),typeof n=="function"){const a=n();if(a&&typeof a.render=="function"){const l=a.render();l.element&&o.appendChild(l.element)}}else if(n&&typeof n.render=="function"){const a=n.render();a.element&&o.appendChild(a.element)}else n instanceof HTMLElement&&o.appendChild(n);i.appendChild(o)}getOverlayAlignment(i){const t={center:{top:"50%",left:"50%",transform:"translate(-50%, -50%)"},top:{top:"0",left:"50%",transform:"translateX(-50%)"},bottom:{bottom:"0",left:"50%",transform:"translateX(-50%)"},leading:{top:"50%",left:"0",transform:"translateY(-50%)"},trailing:{top:"50%",right:"0",transform:"translateY(-50%)"},topLeading:{top:"0",left:"0"},topTrailing:{top:"0",right:"0"},bottomLeading:{bottom:"0",left:"0"},bottomTrailing:{bottom:"0",right:"0"}};return t[i]||t.center}createKeyframeRule(i,t){let e=`@keyframes ${i} {
2
- `;for(const[n,s]of Object.entries(t)){e+=` ${n} {
3
- `;for(const[o,r]of Object.entries(s)){const a=this.toCSSProperty(o);e+=` ${a}: ${r};
4
- `}e+=` }
5
- `}return e+="}",e}addKeyframesToStylesheet(i){let t=document.querySelector("#tachui-animations");t||(t=document.createElement("style"),t.id="tachui-animations",document.head.appendChild(t)),t.appendChild(document.createTextNode(i))}}class A extends b{constructor(){super(...arguments),g(this,"type","lifecycle"),g(this,"priority",C.ModifierPriority.CUSTOM),g(this,"activeAbortController")}apply(i,t){if(!t.element)return;const e=this.properties;this.activeAbortController&&this.activeAbortController.abort(),(e.onAppear||e.onDisappear)&&this.setupLifecycleObserver(t.element,e),e.task&&this.setupTask(t,e.task),e.refreshable&&this.setupRefreshable(t.element,e.refreshable)}setupLifecycleObserver(i,t){const e=new IntersectionObserver(n=>{n.forEach(s=>{s.isIntersecting&&t.onAppear?t.onAppear():!s.isIntersecting&&t.onDisappear&&t.onDisappear()})},{threshold:.1,rootMargin:"10px"});e.observe(i),this.addCleanup(()=>{e.disconnect()})}setupTask(i,t){if(!t)return;this.activeAbortController=new AbortController;const{signal:e}=this.activeAbortController;(async()=>{try{if(e.aborted)return;const s=t.operation();s instanceof Promise&&await s}catch(s){if(e.aborted)return;console.error("TachUI Task Error:",s)}})(),this.addCleanup(()=>{this.activeAbortController&&this.activeAbortController.abort()})}setupRefreshable(i,t){if(!t)return;let e=!1,n=0,s=0;const o=70,r=document.createElement("div");if(r.style.cssText=`
6
- position: absolute;
7
- top: -50px;
8
- left: 50%;
9
- transform: translateX(-50%);
10
- width: 30px;
11
- height: 30px;
12
- border: 2px solid #ccc;
13
- border-top: 2px solid #007AFF;
14
- border-radius: 50%;
15
- animation: tachui-spin 1s linear infinite;
16
- opacity: 0;
17
- transition: opacity 0.3s ease;
18
- z-index: 1000;
19
- `,!document.querySelector("#tachui-refresh-styles")){const f=document.createElement("style");f.id="tachui-refresh-styles",f.textContent=`
20
- @keyframes tachui-spin {
21
- 0% { transform: translateX(-50%) rotate(0deg); }
22
- 100% { transform: translateX(-50%) rotate(360deg); }
23
- }
24
- `,document.head.appendChild(f)}const a=i.parentElement||i;a instanceof HTMLElement&&(a.style.position="relative",a.appendChild(r));const l=f=>{e||(s=f.touches[0].clientY)},c=f=>{if(e)return;const p=f.touches[0].clientY;if(n=Math.max(0,p-s),n>20){f.preventDefault();const S=Math.min(n/o,1);r.style.opacity=String(S*.8),r.style.top=`${-50+S*20}px`}},m=async()=>{if(e||n<o){r.style.opacity="0",r.style.top="-50px",n=0;return}e=!0,r.style.opacity="1",r.style.top="10px";try{await t.onRefresh()}catch(f){console.error("TachUI Refresh Error:",f)}finally{e=!1,r.style.opacity="0",r.style.top="-50px",n=0}};i.addEventListener("touchstart",l,{passive:!1}),i.addEventListener("touchmove",c,{passive:!1}),i.addEventListener("touchend",m),this.addCleanup(()=>{i.removeEventListener("touchstart",l),i.removeEventListener("touchmove",c),i.removeEventListener("touchend",m),r.parentElement&&r.parentElement.removeChild(r)})}addCleanup(i){this.properties._cleanupFunctions||(this.properties._cleanupFunctions=[]),this.properties._cleanupFunctions.push(i)}}class k extends b{constructor(){super(...arguments),g(this,"type","resizable"),g(this,"priority",C.ModifierPriority.APPEARANCE)}apply(i,t){t.element&&t.element instanceof HTMLImageElement&&(t.element.style.objectFit="fill")}}exports.AnimationModifier=w;exports.AppearanceModifier=P;exports.BaseModifier=b;exports.InteractionModifier=$;exports.LayoutModifier=M;exports.LifecycleModifier=A;exports.ResizableModifier=k;
25
- //# sourceMappingURL=base.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.cjs","sources":["../../src/modifiers/base.ts"],"sourcesContent":["/**\n * Base Modifier System Implementation\n *\n * Core modifier classes and utilities for the SwiftUI-inspired modifier system.\n */\n\nimport { createEffect, isComputed, isSignal, getThemeSignal } from '../reactive'\nimport type { Signal } from '../reactive/types'\nimport type { DOMNode } from '../runtime/types'\nimport type {\n CSSStyleProperties,\n LifecycleModifierProps,\n Modifier,\n ModifierContext,\n ReactiveModifierProps,\n StyleComputationContext,\n} from './types'\nimport { ModifierPriority } from './types'\nimport { isInfinity, dimensionToCSS, shouldExpandForInfinity } from '../constants/layout'\n\n/**\n * Abstract base modifier class\n */\nexport abstract class BaseModifier<TProps = {}> implements Modifier<TProps> {\n abstract readonly type: string\n abstract readonly priority: number\n\n constructor(public readonly properties: TProps) {}\n\n /**\n * Apply the modifier to a DOM node\n */\n abstract apply(node: DOMNode, context: ModifierContext): DOMNode | undefined\n\n /**\n * Helper to resolve reactive properties\n */\n protected resolveReactiveProps<T extends Record<string, any>>(\n props: ReactiveModifierProps<T>,\n context: StyleComputationContext\n ): T {\n const resolved = {} as T\n\n for (const [key, value] of Object.entries(props)) {\n if (isSignal(value) || isComputed(value)) {\n // Preserve the signal/computed - let applyStyles handle reactivity\n resolved[key as keyof T] = value as T[keyof T]\n } else {\n // Static value\n resolved[key as keyof T] = value\n }\n }\n\n // Context parameter is kept for compatibility but not used in new approach\n void context\n\n return resolved\n }\n\n /**\n * Apply a single style change to an element with reactive support\n */\n protected applyStyleChange(element: Element, property: string, value: any): void {\n if (element instanceof HTMLElement) {\n const cssProperty = this.toCSSProperty(property)\n\n // Handle reactive values (signals and computed)\n if (isSignal(value) || isComputed(value)) {\n // Create reactive effect for this style property\n createEffect(() => {\n const currentValue = value()\n const cssValue = String(currentValue)\n\n // Check if value contains !important and handle it properly\n if (cssValue.includes('!important')) {\n const actualValue = cssValue.replace(/\\s*!important\\s*$/, '').trim()\n element.style.setProperty(cssProperty, actualValue, 'important')\n } else {\n element.style.setProperty(cssProperty, cssValue)\n }\n })\n } else {\n // Handle static values\n const cssValue = String(value)\n\n // Check if value contains !important and handle it properly\n if (cssValue.includes('!important')) {\n const actualValue = cssValue.replace(/\\s*!important\\s*$/, '').trim()\n element.style.setProperty(cssProperty, actualValue, 'important')\n } else {\n element.style.setProperty(cssProperty, cssValue)\n }\n }\n }\n }\n\n /**\n * Convert camelCase property to CSS kebab-case\n */\n protected toCSSProperty(property: string): string {\n return property.replace(/([A-Z])/g, '-$1').toLowerCase()\n }\n\n /**\n * Convert value to CSS value string\n */\n protected toCSSValue(value: any): string {\n if (typeof value === 'number') {\n return `${value}px`\n }\n return String(value)\n }\n\n /**\n * Convert value to CSS value string with property-specific handling\n */\n protected toCSSValueForProperty(property: string, value: any): string {\n if (typeof value === 'number') {\n // Properties that should be unitless\n const unitlessProperties = [\n 'opacity',\n 'z-index',\n 'line-height',\n 'flex-grow',\n 'flex-shrink',\n 'order',\n 'column-count',\n 'font-weight',\n ]\n\n if (unitlessProperties.includes(property)) {\n return String(value)\n }\n\n return `${value}px`\n }\n\n // Properties that should be passed through as-is (no processing)\n const passthroughProperties = [\n 'filter', // CSS filter strings should not be processed\n 'transform', // CSS transform strings\n 'clip-path' // CSS clip-path strings\n ]\n\n if (passthroughProperties.includes(property)) {\n return String(value)\n }\n\n return String(value)\n }\n\n /**\n * Apply multiple CSS properties to an element with reactive support\n */\n protected applyStyles(element: Element, styles: CSSStyleProperties): void {\n // Check if element has a style property (for testing and real elements)\n if (element instanceof HTMLElement || (element as any).style) {\n const styleTarget = element instanceof HTMLElement ? element.style : (element as any).style\n\n for (const [property, value] of Object.entries(styles)) {\n if (value !== undefined) {\n const cssProperty = this.toCSSProperty(property)\n\n // Handle reactive values (signals and computed)\n if (isSignal(value) || isComputed(value)) {\n // Create reactive effect for this style property\n createEffect(() => {\n const currentValue = value()\n const cssValue = this.toCSSValueForProperty(cssProperty, currentValue)\n\n if (styleTarget.setProperty) {\n // Check if value contains !important and handle it properly\n if (typeof cssValue === 'string' && cssValue.includes('!important')) {\n const actualValue = cssValue.replace(/\\s*!important\\s*$/, '').trim()\n styleTarget.setProperty(cssProperty, actualValue, 'important')\n } else {\n styleTarget.setProperty(cssProperty, cssValue)\n }\n } else {\n ;(styleTarget as any)[cssProperty] = cssValue\n }\n })\n } else {\n // Handle static values\n const cssValue = this.toCSSValueForProperty(cssProperty, value)\n\n if (styleTarget.setProperty) {\n // Check if value contains !important and handle it properly\n if (typeof cssValue === 'string' && cssValue.includes('!important')) {\n const actualValue = cssValue.replace(/\\s*!important\\s*$/, '').trim()\n styleTarget.setProperty(cssProperty, actualValue, 'important')\n } else {\n styleTarget.setProperty(cssProperty, cssValue)\n }\n } else {\n ;(styleTarget as any)[cssProperty] = cssValue\n }\n }\n }\n }\n }\n }\n\n /**\n * Add CSS classes to an element\n */\n protected addClasses(element: Element, classes: string[]): void {\n if (element instanceof HTMLElement) {\n element.classList.add(...classes)\n }\n }\n\n /**\n * Remove CSS classes from an element\n */\n protected removeClasses(element: Element, classes: string[]): void {\n if (element instanceof HTMLElement) {\n element.classList.remove(...classes)\n }\n }\n\n /**\n * Create a style computation context\n */\n protected createStyleContext(\n componentId: string,\n element: Element,\n modifiers: Modifier[]\n ): StyleComputationContext {\n return {\n componentId,\n element,\n modifiers,\n signals: new Set(),\n cleanup: [],\n }\n }\n}\n\n/**\n * Layout modifier for frame, padding, margin\n */\nexport class LayoutModifier extends BaseModifier {\n readonly type = 'layout'\n readonly priority = ModifierPriority.LAYOUT\n\n apply(node: DOMNode, context: ModifierContext): DOMNode | undefined {\n if (!node.element || !context.element) return\n\n const styleContext = this.createStyleContext(context.componentId, context.element, [])\n\n const styles = this.computeLayoutStyles(this.properties as any, styleContext)\n\n this.applyStyles(context.element, styles)\n\n // Handle offset separately for proper transform combining\n const props = this.properties as any\n if (props.offset && context.element instanceof HTMLElement) {\n this.applyOffsetTransform(context.element, props.offset)\n }\n\n // Handle aspectRatio separately for reactive support\n if (props.aspectRatio && context.element instanceof HTMLElement) {\n this.applyAspectRatio(context.element, props.aspectRatio)\n }\n\n // Handle scaleEffect separately for proper transform combining (Phase 3 - Epic: Butternut)\n if (props.scaleEffect && context.element instanceof HTMLElement) {\n this.applyScaleTransform(context.element, props.scaleEffect)\n }\n\n // Handle absolutePosition separately for proper positioning (Phase 3 - Epic: Butternut)\n if (props.position && context.element instanceof HTMLElement) {\n this.applyAbsolutePosition(context.element, props.position)\n }\n\n // Handle zIndex separately for proper layering (Phase 3 - Epic: Butternut)\n if (props.zIndex !== undefined && context.element instanceof HTMLElement) {\n this.applyZIndex(context.element, props.zIndex)\n }\n\n return undefined\n }\n\n private applyOffsetTransform(element: HTMLElement, offset: { x?: any; y?: any }): void {\n const { x, y } = offset\n\n // Handle reactive values\n if (isSignal(x) || isComputed(x) || isSignal(y) || isComputed(y)) {\n createEffect(() => {\n const currentX = isSignal(x) || isComputed(x) ? x() : (x ?? 0)\n const currentY = isSignal(y) || isComputed(y) ? y() : (y ?? 0)\n\n const offsetX = this.toCSSValue(currentX)\n const offsetY = this.toCSSValue(currentY)\n const translateValue = `translate(${offsetX}, ${offsetY})`\n\n // Preserve existing transforms but replace any existing translate\n const existingTransform = element.style.transform || ''\n const existingTransforms = existingTransform\n .split(' ')\n .filter((t) => t && !t.startsWith('translate('))\n .join(' ')\n\n const newTransform = existingTransforms\n ? `${existingTransforms} ${translateValue}`\n : translateValue\n\n element.style.transform = newTransform\n })\n } else {\n // Handle static values\n const currentX = x ?? 0\n const currentY = y ?? 0\n\n const offsetX = this.toCSSValue(currentX)\n const offsetY = this.toCSSValue(currentY)\n const translateValue = `translate(${offsetX}, ${offsetY})`\n\n // Preserve existing transforms but replace any existing translate\n const existingTransform = element.style.transform || ''\n const existingTransforms = existingTransform\n .split(' ')\n .filter((t) => t && !t.startsWith('translate('))\n .join(' ')\n\n const newTransform = existingTransforms\n ? `${existingTransforms} ${translateValue}`\n : translateValue\n\n element.style.transform = newTransform\n }\n }\n\n private applyAspectRatio(\n element: HTMLElement,\n aspectRatio: { ratio?: any; contentMode?: 'fit' | 'fill' }\n ): void {\n const { ratio, contentMode } = aspectRatio\n\n if (ratio !== undefined) {\n // Handle reactive aspect ratio\n if (isSignal(ratio) || isComputed(ratio)) {\n createEffect(() => {\n const currentRatio = typeof ratio === 'function' ? ratio() : ratio\n element.style.aspectRatio = String(currentRatio)\n })\n } else {\n element.style.aspectRatio = String(ratio)\n }\n\n // Set content mode\n if (contentMode === 'fill') {\n element.style.objectFit = 'cover'\n } else {\n element.style.objectFit = 'contain'\n }\n }\n }\n\n // Phase 3 - Epic: Butternut Transform Methods\n\n private applyScaleTransform(\n element: HTMLElement,\n scaleEffect: { x?: any; y?: any; anchor?: string }\n ): void {\n const { x, y, anchor } = scaleEffect\n const scaleX = x ?? 1\n const scaleY = y ?? scaleX // Default to uniform scaling if y not provided\n\n // Handle reactive values\n if (isSignal(scaleX) || isComputed(scaleX) || isSignal(scaleY) || isComputed(scaleY)) {\n createEffect(() => {\n const currentX = isSignal(scaleX) || isComputed(scaleX) ? scaleX() : scaleX\n const currentY = isSignal(scaleY) || isComputed(scaleY) ? scaleY() : scaleY\n\n const scaleValue = `scale(${currentX}, ${currentY})`\n\n // Set transform-origin based on anchor\n element.style.transformOrigin = this.getTransformOrigin(anchor || 'center')\n\n // Preserve existing transforms but replace any existing scale\n const existingTransform = element.style.transform || ''\n const existingTransforms = existingTransform\n .replace(/\\s*scale\\([^)]*\\)\\s*/g, ' ')\n .replace(/\\s+/g, ' ')\n .trim()\n\n const newTransform = existingTransforms\n ? `${existingTransforms} ${scaleValue}`\n : scaleValue\n\n element.style.transform = newTransform\n })\n } else {\n // Handle static values\n const scaleValue = `scale(${scaleX}, ${scaleY})`\n\n // Set transform-origin based on anchor\n element.style.transformOrigin = this.getTransformOrigin(anchor || 'center')\n\n // Preserve existing transforms but replace any existing scale\n const existingTransform = element.style.transform || ''\n const existingTransforms = existingTransform\n .replace(/\\s*scale\\([^)]*\\)\\s*/g, ' ')\n .replace(/\\s+/g, ' ')\n .trim()\n\n const newTransform = existingTransforms\n ? `${existingTransforms} ${scaleValue}`\n : scaleValue\n\n element.style.transform = newTransform\n }\n }\n\n private applyAbsolutePosition(element: HTMLElement, position: { x?: any; y?: any }): void {\n const { x, y } = position\n\n // Set position to absolute for SwiftUI-style absolute positioning\n element.style.position = 'absolute'\n\n // Handle reactive values\n if (isSignal(x) || isComputed(x) || isSignal(y) || isComputed(y)) {\n createEffect(() => {\n const currentX = isSignal(x) || isComputed(x) ? x() : (x ?? 0)\n const currentY = isSignal(y) || isComputed(y) ? y() : (y ?? 0)\n\n element.style.left = this.toCSSValue(currentX)\n element.style.top = this.toCSSValue(currentY)\n })\n } else {\n // Handle static values\n const currentX = x ?? 0\n const currentY = y ?? 0\n\n element.style.left = this.toCSSValue(currentX)\n element.style.top = this.toCSSValue(currentY)\n }\n }\n\n private applyZIndex(element: HTMLElement, zIndex: any): void {\n // Handle reactive values\n if (isSignal(zIndex) || isComputed(zIndex)) {\n createEffect(() => {\n const currentZIndex = zIndex()\n element.style.zIndex = String(currentZIndex)\n })\n } else {\n // Handle static values\n element.style.zIndex = String(zIndex)\n }\n }\n\n private getTransformOrigin(anchor: string): string {\n const anchorMap: Record<string, string> = {\n center: 'center center',\n top: 'center top',\n topLeading: 'left top',\n topTrailing: 'right top',\n bottom: 'center bottom',\n bottomLeading: 'left bottom',\n bottomTrailing: 'right bottom',\n leading: 'left center',\n trailing: 'right center',\n }\n\n return anchorMap[anchor] || 'center center'\n }\n\n private computeLayoutStyles(props: any, _context: StyleComputationContext): CSSStyleProperties {\n const styles: CSSStyleProperties = {}\n\n // Frame properties - handle infinity values properly\n if (props.frame) {\n const frame = props.frame\n\n // Check for infinity constraints and apply appropriate flex/size styles\n const infinityResult = shouldExpandForInfinity(frame)\n Object.assign(styles, infinityResult.cssProps)\n\n // Convert dimensions to CSS, handling infinity appropriately\n // Don't apply explicit width/height if infinity expansion is happening\n if (frame.width !== undefined) {\n const cssValue = dimensionToCSS(frame.width)\n if (cssValue !== undefined && !isInfinity(frame.width) && !infinityResult.expandWidth) {\n styles.width = cssValue\n }\n }\n\n if (frame.height !== undefined) {\n const cssValue = dimensionToCSS(frame.height)\n if (cssValue !== undefined && !isInfinity(frame.height) && !infinityResult.expandHeight) {\n styles.height = cssValue\n }\n }\n\n if (frame.minWidth !== undefined) {\n const cssValue = dimensionToCSS(frame.minWidth)\n if (cssValue !== undefined) {\n styles.minWidth = cssValue\n }\n }\n\n if (frame.maxWidth !== undefined && !isInfinity(frame.maxWidth)) {\n const cssValue = dimensionToCSS(frame.maxWidth)\n if (cssValue !== undefined) {\n styles.maxWidth = cssValue\n }\n } else if (isInfinity(frame.maxWidth)) {\n // SwiftUI compatibility: maxWidth infinity means expand to fill available width\n // Remove maxWidth constraint and use flex properties for expansion\n styles.maxWidth = 'none'\n styles.flexGrow = '1 !important'\n styles.flexShrink = '1 !important'\n styles.flexBasis = '0% !important'\n styles.alignSelf = 'stretch !important'\n }\n\n if (frame.minHeight !== undefined) {\n const cssValue = dimensionToCSS(frame.minHeight)\n if (cssValue !== undefined) {\n styles.minHeight = cssValue\n }\n }\n\n if (frame.maxHeight !== undefined && !isInfinity(frame.maxHeight)) {\n const cssValue = dimensionToCSS(frame.maxHeight)\n if (cssValue !== undefined) {\n styles.maxHeight = cssValue\n }\n } else if (isInfinity(frame.maxHeight)) {\n // SwiftUI compatibility: maxHeight infinity means expand to fill available height\n // Remove maxHeight constraint and use flex properties for expansion\n styles.maxHeight = 'none'\n styles.flexGrow = '1 !important'\n styles.flexShrink = '1 !important'\n styles.flexBasis = '0% !important'\n styles.alignSelf = 'stretch !important'\n }\n }\n\n // Padding\n if (props.padding !== undefined) {\n if (typeof props.padding === 'number') {\n styles.padding = this.toCSSValue(props.padding)\n } else {\n const p = props.padding\n if (p.top !== undefined) styles.paddingTop = this.toCSSValue(p.top)\n if (p.right !== undefined) styles.paddingRight = this.toCSSValue(p.right)\n if (p.bottom !== undefined) styles.paddingBottom = this.toCSSValue(p.bottom)\n if (p.left !== undefined) styles.paddingLeft = this.toCSSValue(p.left)\n }\n }\n\n // Margin\n if (props.margin !== undefined) {\n if (typeof props.margin === 'number') {\n styles.margin = this.toCSSValue(props.margin)\n } else {\n const m = props.margin\n if (m.top !== undefined) styles.marginTop = this.toCSSValue(m.top)\n if (m.right !== undefined) styles.marginRight = this.toCSSValue(m.right)\n if (m.bottom !== undefined) styles.marginBottom = this.toCSSValue(m.bottom)\n if (m.left !== undefined) styles.marginLeft = this.toCSSValue(m.left)\n }\n }\n\n // Alignment\n if (props.alignment) {\n switch (props.alignment) {\n case 'leading':\n styles.textAlign = 'left'\n styles.alignItems = 'flex-start'\n break\n case 'center':\n styles.textAlign = 'center'\n styles.alignItems = 'center'\n break\n case 'trailing':\n styles.textAlign = 'right'\n styles.alignItems = 'flex-end'\n break\n case 'top':\n styles.alignItems = 'flex-start'\n break\n case 'bottom':\n styles.alignItems = 'flex-end'\n break\n }\n }\n\n // Layout Priority\n // In SwiftUI, layoutPriority determines which views get priority in sizing\n // Higher priority views determine container size in ZStack\n // We implement this using CSS flexbox properties for flexible layouts\n if (props.layoutPriority !== undefined) {\n const priority = Number(props.layoutPriority)\n\n // Set flex properties based on priority\n // Higher priority = less flex shrink, more flex grow\n if (priority > 0) {\n // High priority: Don't shrink, allow growth\n styles.flexShrink = '0'\n styles.flexGrow = String(Math.max(1, priority / 10))\n\n // For ZStack containers, higher priority elements determine size\n // We use z-index for layering and flex properties for sizing behavior\n styles.zIndex = String(priority)\n\n // In grid layouts, higher priority gets more space\n styles.gridRowEnd = `span ${String(Math.min(10, Math.max(1, Math.ceil(priority / 10))))}`\n styles.gridColumnEnd = `span ${String(Math.min(10, Math.max(1, Math.ceil(priority / 10))))}`\n } else if (priority === 0) {\n // Default priority: Normal flex behavior\n styles.flexShrink = '1'\n styles.flexGrow = '1'\n } else {\n // Low priority: Shrink more, grow less\n styles.flexShrink = String(Math.abs(priority))\n styles.flexGrow = '0'\n styles.zIndex = String(priority)\n }\n\n // For containers that need to size based on highest priority child\n // We use CSS custom properties that can be read by parent containers\n if (styles && typeof styles === 'object' && 'setProperty' in styles) {\n ;(styles as any).setProperty('--layout-priority', String(priority))\n }\n }\n\n // Offset modifier (SwiftUI .offset(x, y))\n // Note: Offset handling is done in the apply method with proper reactive support\n // This is just for setting up the basic structure\n if (props.offset) {\n // The actual transform application happens in apply() method\n // to handle both reactive and static values properly\n }\n\n // Aspect Ratio modifier (SwiftUI .aspectRatio(ratio, contentMode))\n if (props.aspectRatio) {\n const { ratio, contentMode } = props.aspectRatio\n\n if (ratio !== undefined) {\n // Apply CSS aspect-ratio property\n styles.aspectRatio = typeof ratio === 'number' ? String(ratio) : ratio\n\n // Handle content mode\n if (contentMode === 'fill') {\n styles.objectFit = 'cover'\n } else {\n styles.objectFit = 'contain'\n }\n }\n }\n\n // Fixed Size modifier (SwiftUI .fixedSize())\n if (props.fixedSize) {\n const { horizontal, vertical } = props.fixedSize\n\n if (horizontal) {\n styles.flexShrink = '0'\n styles.width = 'max-content'\n }\n if (vertical) {\n styles.flexShrink = '0'\n styles.height = 'max-content'\n }\n }\n\n return styles\n }\n}\n\n/**\n * Appearance modifier for colors, fonts, borders, shadows\n */\nexport class AppearanceModifier extends BaseModifier {\n readonly type = 'appearance'\n readonly priority = ModifierPriority.APPEARANCE\n\n apply(node: DOMNode, context: ModifierContext): DOMNode | undefined {\n if (!node.element || !context.element) {\n return\n }\n\n const styleContext = this.createStyleContext(context.componentId, context.element, [])\n\n const resolved = this.resolveReactiveProps(this.properties as any, styleContext)\n\n // Handle Assets separately with theme reactivity\n this.applyAssetBasedStyles(context.element, resolved)\n\n // Handle non-Asset styles normally\n const styles = this.computeAppearanceStyles(resolved)\n this.applyStyles(context.element, styles)\n\n return undefined\n }\n\n /**\n * Apply Asset-based styles with theme reactivity\n */\n private applyAssetBasedStyles(element: Element, props: any): void {\n // Get the shared theme signal\n const themeSignal = getThemeSignal()\n\n // Handle foregroundColor Asset\n if (props.foregroundColor && this.isAsset(props.foregroundColor)) {\n createEffect(() => {\n // Watch theme changes to trigger re-resolution\n themeSignal()\n // Re-resolve Asset when theme changes\n const resolvedColor = props.foregroundColor.resolve()\n this.applyStyleChange(element, 'color', resolvedColor)\n })\n }\n\n // Handle backgroundColor Asset\n if (props.backgroundColor && this.isAsset(props.backgroundColor)) {\n createEffect(() => {\n // Watch theme changes to trigger re-resolution\n themeSignal()\n // Re-resolve Asset when theme changes\n const resolvedColor = props.backgroundColor.resolve()\n this.applyStyleChange(element, 'backgroundColor', resolvedColor)\n })\n }\n\n // Handle border color Asset\n if (props.border?.color && this.isAsset(props.border.color)) {\n createEffect(() => {\n // Watch theme changes\n themeSignal()\n // Re-resolve Asset when theme changes\n const resolvedColor = props.border.color.resolve()\n this.applyStyleChange(element, 'borderColor', resolvedColor)\n })\n }\n }\n\n /**\n * Check if a value is an Asset object (including Asset proxies)\n */\n private isAsset(value: any): boolean {\n return (\n value !== null &&\n value !== undefined &&\n typeof value === 'object' &&\n 'resolve' in value &&\n typeof value.resolve === 'function'\n )\n }\n\n private computeAppearanceStyles(props: any): CSSStyleProperties {\n const styles: CSSStyleProperties = {}\n\n // Colors (skip Assets - they're handled reactively in applyAssetBasedStyles)\n if (props.foregroundColor && !this.isAsset(props.foregroundColor)) {\n styles.color = props.foregroundColor\n }\n if (props.backgroundColor && !this.isAsset(props.backgroundColor)) {\n styles.backgroundColor = props.backgroundColor\n }\n if (props.opacity !== undefined) styles.opacity = props.opacity\n\n // Font\n if (props.font) {\n const font = props.font\n if (font.family) {\n // Handle FontAsset objects that need to be resolved\n if (typeof font.family === 'object' && font.family !== null && 'resolve' in font.family) {\n styles.fontFamily = (font.family as any).resolve()\n } else {\n styles.fontFamily = font.family as string\n }\n }\n if (font.size) styles.fontSize = this.toCSSValue(font.size)\n if (font.weight) styles.fontWeight = String(font.weight)\n if (font.style) styles.fontStyle = font.style\n }\n\n // Corner radius\n if (props.cornerRadius !== undefined) {\n styles.borderRadius = this.toCSSValue(props.cornerRadius)\n }\n\n // Border\n if (props.border) {\n const border = props.border\n if (border.width !== undefined) styles.borderWidth = this.toCSSValue(border.width)\n if (border.color && !this.isAsset(border.color)) {\n styles.borderColor = border.color as string\n }\n if (border.style) styles.borderStyle = border.style\n }\n\n // Shadow\n if (props.shadow) {\n const shadow = props.shadow\n const x = shadow.x || 0\n const y = shadow.y || 0\n const radius = shadow.radius || 0\n const color = shadow.color || 'rgba(0,0,0,0.25)'\n styles.boxShadow = `${x}px ${y}px ${radius}px ${color}`\n }\n\n // Clipped modifier (SwiftUI .clipped())\n if (props.clipped) {\n styles.overflow = 'hidden'\n }\n\n // Clip Shape modifier (SwiftUI .clipShape())\n if (props.clipShape) {\n const { shape, parameters } = props.clipShape\n\n switch (shape) {\n case 'circle':\n styles.clipPath = 'circle(50%)'\n break\n case 'ellipse': {\n const radiusX = parameters?.radiusX || '50%'\n const radiusY = parameters?.radiusY || '50%'\n styles.clipPath = `ellipse(${radiusX} ${radiusY} at center)`\n break\n }\n case 'rect': {\n const inset = parameters?.inset || 0\n styles.clipPath = `inset(${inset}px)`\n break\n }\n case 'polygon': {\n const points = parameters?.points || '0% 0%, 100% 0%, 100% 100%, 0% 100%'\n styles.clipPath = `polygon(${points})`\n break\n }\n }\n }\n\n // Visual Effects (Phase 2 - Epic: Butternut)\n const filters: string[] = []\n\n if (props.blur !== undefined) {\n filters.push(`blur(${props.blur}px)`)\n }\n if (props.brightness !== undefined) {\n filters.push(`brightness(${props.brightness})`)\n }\n if (props.contrast !== undefined) {\n filters.push(`contrast(${props.contrast})`)\n }\n if (props.saturation !== undefined) {\n filters.push(`saturate(${props.saturation})`)\n }\n if (props.hueRotation !== undefined) {\n filters.push(`hue-rotate(${props.hueRotation}deg)`)\n }\n if (props.grayscale !== undefined) {\n filters.push(`grayscale(${props.grayscale})`)\n }\n if (props.colorInvert !== undefined) {\n filters.push(`invert(${props.colorInvert})`)\n }\n\n if (filters.length > 0) {\n styles.filter = filters.join(' ')\n }\n\n return styles\n }\n}\n\n/**\n * Interaction modifier for events and accessibility\n */\nexport class InteractionModifier extends BaseModifier {\n readonly type = 'interaction'\n readonly priority = ModifierPriority.INTERACTION\n\n apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined {\n if (!context.element) return\n\n const props = this.properties as any\n\n // Event handlers\n if (props.onTap) {\n context.element.addEventListener('click', props.onTap)\n }\n\n if (props.onHover) {\n context.element.addEventListener('mouseenter', () => props.onHover(true))\n context.element.addEventListener('mouseleave', () => props.onHover(false))\n }\n\n if (props.onMouseEnter) {\n context.element.addEventListener('mouseenter', props.onMouseEnter)\n }\n\n if (props.onMouseLeave) {\n context.element.addEventListener('mouseleave', props.onMouseLeave)\n }\n\n if (props.onMouseDown) {\n context.element.addEventListener('mousedown', props.onMouseDown)\n }\n\n if (props.onMouseUp) {\n context.element.addEventListener('mouseup', props.onMouseUp)\n }\n\n if (props.onDragStart) {\n context.element.addEventListener('dragstart', props.onDragStart)\n }\n\n if (props.onDragOver) {\n context.element.addEventListener('dragover', props.onDragOver)\n }\n\n if (props.onDragLeave) {\n context.element.addEventListener('dragleave', props.onDragLeave)\n }\n\n if (props.onDrop) {\n context.element.addEventListener('drop', props.onDrop)\n }\n\n // Additional mouse events\n if (props.onDoubleClick) {\n context.element.addEventListener('dblclick', props.onDoubleClick)\n }\n\n if (props.onContextMenu) {\n context.element.addEventListener('contextmenu', props.onContextMenu)\n }\n\n // Focus events\n if (props.onFocus) {\n context.element.addEventListener('focus', () => props.onFocus(true))\n context.element.addEventListener('blur', () => props.onFocus(false))\n }\n\n if (props.onBlur) {\n context.element.addEventListener('blur', () => props.onBlur(false))\n }\n\n // Keyboard events\n if (props.onKeyPress) {\n context.element.addEventListener('keypress', props.onKeyPress)\n }\n\n if (props.onKeyDown) {\n context.element.addEventListener('keydown', props.onKeyDown)\n }\n\n if (props.onKeyUp) {\n context.element.addEventListener('keyup', props.onKeyUp)\n }\n\n // Scroll and wheel events\n if (props.onScroll) {\n context.element.addEventListener('scroll', props.onScroll, { passive: true })\n }\n\n if (props.onWheel) {\n context.element.addEventListener('wheel', props.onWheel, { passive: false })\n }\n\n // Input events\n if (props.onInput) {\n context.element.addEventListener('input', props.onInput)\n }\n\n if (props.onChange) {\n context.element.addEventListener('change', (event) => {\n const target = event.target as HTMLInputElement\n const value = target.value || target.textContent || ''\n props.onChange(value, event)\n })\n }\n\n // Clipboard events\n if (props.onCopy) {\n context.element.addEventListener('copy', props.onCopy)\n }\n\n if (props.onCut) {\n context.element.addEventListener('cut', props.onCut)\n }\n\n if (props.onPaste) {\n context.element.addEventListener('paste', props.onPaste)\n }\n\n // Selection events\n if (props.onSelect) {\n context.element.addEventListener('select', props.onSelect)\n }\n\n // Disabled state\n if (props.disabled !== undefined) {\n if (context.element instanceof HTMLElement) {\n if (props.disabled) {\n context.element.setAttribute('disabled', 'true')\n context.element.style.pointerEvents = 'none'\n context.element.style.opacity = '0.6'\n } else {\n context.element.removeAttribute('disabled')\n context.element.style.pointerEvents = ''\n context.element.style.opacity = ''\n }\n }\n }\n\n // Draggable state\n if (props.draggable !== undefined) {\n if (context.element instanceof HTMLElement) {\n context.element.draggable = props.draggable\n }\n }\n\n // Accessibility\n if (props.accessibilityLabel) {\n context.element.setAttribute('aria-label', props.accessibilityLabel)\n }\n\n if (props.accessibilityHint) {\n context.element.setAttribute('aria-describedby', props.accessibilityHint)\n }\n\n // Advanced Gesture Modifiers (Phase 4 - Epic: Butternut)\n if (props.onLongPressGesture) {\n this.setupLongPressGesture(context.element, props.onLongPressGesture)\n }\n\n if (props.keyboardShortcut) {\n this.setupKeyboardShortcut(context.element, props.keyboardShortcut)\n }\n\n if (props.focused !== undefined) {\n this.setupFocusManagement(context.element, props.focused)\n }\n\n if (props.focusable) {\n this.setupFocusable(context.element, props.focusable)\n }\n\n if (props.onContinuousHover) {\n this.setupContinuousHover(context.element, props.onContinuousHover)\n }\n\n if (props.allowsHitTesting !== undefined) {\n this.setupHitTesting(context.element, props.allowsHitTesting)\n }\n\n return undefined\n }\n\n // Phase 4 Advanced Gesture Methods\n\n /**\n * Setup long press gesture with timing and distance constraints\n */\n private setupLongPressGesture(\n element: Element,\n options: {\n minimumDuration?: number\n maximumDistance?: number\n perform: () => void\n onPressingChanged?: (isPressing: boolean) => void\n }\n ): void {\n const minimumDuration = options.minimumDuration ?? 500 // ms\n const maximumDistance = options.maximumDistance ?? 10 // px\n\n let timeoutId: number | undefined\n let startPoint: { x: number; y: number } | null = null\n let isPressing = false\n\n const cleanup = () => {\n if (timeoutId) {\n clearTimeout(timeoutId)\n timeoutId = undefined\n }\n if (isPressing && options.onPressingChanged) {\n options.onPressingChanged(false)\n }\n isPressing = false\n startPoint = null\n }\n\n const handlePointerDown = (event: Event) => {\n const pointerEvent = event as PointerEvent\n startPoint = { x: pointerEvent.clientX, y: pointerEvent.clientY }\n isPressing = true\n\n if (options.onPressingChanged) {\n options.onPressingChanged(true)\n }\n\n timeoutId = window.setTimeout(() => {\n if (isPressing && startPoint) {\n options.perform()\n cleanup()\n }\n }, minimumDuration)\n }\n\n const handlePointerMove = (event: Event) => {\n const pointerEvent = event as PointerEvent\n if (!startPoint || !isPressing) return\n\n const distance = Math.sqrt(\n Math.pow(pointerEvent.clientX - startPoint.x, 2) +\n Math.pow(pointerEvent.clientY - startPoint.y, 2)\n )\n\n if (distance > maximumDistance) {\n cleanup()\n }\n }\n\n const handlePointerUp = () => {\n cleanup()\n }\n\n const handlePointerCancel = () => {\n cleanup()\n }\n\n // Use pointer events for better touch/mouse compatibility\n element.addEventListener('pointerdown', handlePointerDown as EventListener)\n element.addEventListener('pointermove', handlePointerMove as EventListener)\n element.addEventListener('pointerup', handlePointerUp as EventListener)\n element.addEventListener('pointercancel', handlePointerCancel as EventListener)\n\n // Store cleanup function for later removal\n ;(element as any)._longPressCleanup = cleanup\n }\n\n /**\n * Setup keyboard shortcut handling\n */\n private setupKeyboardShortcut(\n element: Element,\n shortcut: {\n key: string\n modifiers?: ('cmd' | 'ctrl' | 'shift' | 'alt' | 'meta')[]\n action: () => void\n }\n ): void {\n const modifiers = shortcut.modifiers ?? []\n\n const handleKeyDown = (event: KeyboardEvent) => {\n // Check if all required modifiers are pressed\n const requiredModifiers = {\n cmd: modifiers.includes('cmd') || modifiers.includes('meta'),\n ctrl: modifiers.includes('ctrl'),\n shift: modifiers.includes('shift'),\n alt: modifiers.includes('alt')\n }\n\n const actualModifiers = {\n cmd: event.metaKey || event.ctrlKey, // Handle both Mac (meta) and PC (ctrl)\n ctrl: event.ctrlKey,\n shift: event.shiftKey,\n alt: event.altKey\n }\n\n // Check key match (case insensitive)\n const keyMatches = event.key.toLowerCase() === shortcut.key.toLowerCase()\n\n // Check modifier requirements\n const modifiersMatch = Object.entries(requiredModifiers).every(\n ([mod, required]) => required === actualModifiers[mod as keyof typeof actualModifiers]\n )\n\n if (keyMatches && modifiersMatch) {\n event.preventDefault()\n shortcut.action()\n }\n }\n\n // Add keyboard event listener to document for global shortcuts\n document.addEventListener('keydown', handleKeyDown)\n\n // Store cleanup function\n ;(element as any)._keyboardShortcutCleanup = () => {\n document.removeEventListener('keydown', handleKeyDown)\n }\n }\n\n /**\n * Setup focus management with reactive binding\n */\n private setupFocusManagement(element: Element, focused: boolean | Signal<boolean>): void {\n if (!(element instanceof HTMLElement)) return\n\n const htmlElement = element as HTMLElement\n\n // Make element focusable if it's not naturally focusable\n if (!htmlElement.hasAttribute('tabindex')) {\n htmlElement.setAttribute('tabindex', '0')\n }\n\n if (isSignal(focused) || isComputed(focused)) {\n // Reactive focus management\n createEffect(() => {\n const shouldFocus = focused()\n if (shouldFocus) {\n htmlElement.focus()\n } else {\n htmlElement.blur()\n }\n })\n } else {\n // Static focus management\n if (focused) {\n htmlElement.focus()\n }\n }\n }\n\n /**\n * Setup focusable behavior\n */\n private setupFocusable(\n element: Element,\n options: {\n isFocusable?: boolean\n interactions?: ('activate' | 'edit')[]\n }\n ): void {\n if (!(element instanceof HTMLElement)) return\n\n const htmlElement = element as HTMLElement\n\n if (options.isFocusable === false) {\n htmlElement.setAttribute('tabindex', '-1')\n } else {\n if (!htmlElement.hasAttribute('tabindex')) {\n htmlElement.setAttribute('tabindex', '0')\n }\n }\n\n // Setup interaction behaviors\n if (options.interactions?.includes('activate')) {\n htmlElement.addEventListener('keydown', (event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n htmlElement.click()\n }\n })\n }\n\n if (options.interactions?.includes('edit')) {\n htmlElement.setAttribute('role', 'textbox')\n htmlElement.setAttribute('contenteditable', 'true')\n }\n }\n\n /**\n * Setup continuous hover tracking with coordinates\n */\n private setupContinuousHover(\n element: Element,\n options: {\n coordinateSpace?: 'local' | 'global'\n perform: (location: { x: number; y: number } | null) => void\n }\n ): void {\n const coordinateSpace = options.coordinateSpace ?? 'local'\n\n const handleMouseMove = (event: Event) => {\n const mouseEvent = event as MouseEvent\n let x: number, y: number\n\n if (coordinateSpace === 'local') {\n const rect = element.getBoundingClientRect()\n x = mouseEvent.clientX - rect.left\n y = mouseEvent.clientY - rect.top\n } else {\n x = mouseEvent.clientX\n y = mouseEvent.clientY\n }\n\n options.perform({ x, y })\n }\n\n const handleMouseLeave = () => {\n options.perform(null)\n }\n\n element.addEventListener('mousemove', handleMouseMove as EventListener)\n element.addEventListener('mouseleave', handleMouseLeave as EventListener)\n\n // Store cleanup\n ;(element as any)._continuousHoverCleanup = () => {\n element.removeEventListener('mousemove', handleMouseMove as EventListener)\n element.removeEventListener('mouseleave', handleMouseLeave as EventListener)\n }\n }\n\n /**\n * Setup hit testing control\n */\n private setupHitTesting(element: Element, enabled: boolean): void {\n if (element instanceof HTMLElement) {\n element.style.pointerEvents = enabled ? '' : 'none'\n }\n }\n}\n\n/**\n * Animation modifier for transitions and animations\n */\nexport class AnimationModifier extends BaseModifier {\n readonly type = 'animation'\n readonly priority = ModifierPriority.ANIMATION\n\n apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined {\n if (!context.element) return\n\n const props = this.properties as any\n\n // Transition\n if (props.transition) {\n const t = props.transition\n const property = t.property || 'all'\n const duration = t.duration || 300\n const easing = t.easing || 'ease'\n const delay = t.delay || 0\n\n if (context.element instanceof HTMLElement) {\n context.element.style.transition = `${property} ${duration}ms ${easing} ${delay}ms`\n }\n }\n\n // Animation\n if (props.animation && context.element instanceof HTMLElement) {\n const anim = props.animation\n\n if (anim.keyframes) {\n // Create keyframes\n const keyframeName = `tachui-animation-${context.componentId}-${Date.now()}`\n const keyframeRule = this.createKeyframeRule(keyframeName, anim.keyframes)\n\n // Add keyframes to stylesheet\n this.addKeyframesToStylesheet(keyframeRule)\n\n // Apply animation\n const duration = anim.duration || 1000\n const easing = anim.easing || 'ease'\n const iterations = anim.iterations || 1\n const direction = anim.direction || 'normal'\n\n context.element.style.animation = `${keyframeName} ${duration}ms ${easing} ${iterations} ${direction}`\n }\n }\n\n // Transform\n if (props.transform && context.element instanceof HTMLElement) {\n if (isSignal(props.transform) || isComputed(props.transform)) {\n // Create reactive effect for transform\n createEffect(() => {\n const transformValue = props.transform()\n if (context.element instanceof HTMLElement) {\n context.element.style.transform = transformValue\n }\n })\n } else {\n context.element.style.transform = props.transform\n }\n }\n\n // Rotation Effect (SwiftUI .rotationEffect(angle))\n if (props.rotationEffect && context.element instanceof HTMLElement) {\n const { angle, anchor } = props.rotationEffect\n\n // Convert anchor to CSS transform-origin\n const anchorOrigins: Record<string, string> = {\n center: '50% 50%',\n top: '50% 0%',\n topLeading: '0% 0%',\n topTrailing: '100% 0%',\n bottom: '50% 100%',\n bottomLeading: '0% 100%',\n bottomTrailing: '100% 100%',\n leading: '0% 50%',\n trailing: '100% 50%',\n }\n\n const transformOrigin = anchorOrigins[anchor || 'center'] || '50% 50%'\n\n // Create rotation transform\n const rotationTransform = `rotate(${angle}deg)`\n\n if (isSignal(angle) || isComputed(angle)) {\n // Reactive rotation\n createEffect(() => {\n const currentAngle = typeof angle === 'function' ? angle() : angle\n const currentRotation = `rotate(${currentAngle}deg)`\n\n if (context.element instanceof HTMLElement) {\n context.element.style.transformOrigin = transformOrigin\n\n // Combine with existing transforms if any\n const existingTransform = context.element.style.transform || ''\n const existingTransforms = existingTransform\n .split(' ')\n .filter((t) => t && !t.startsWith('rotate('))\n .join(' ')\n\n const newTransform = existingTransforms\n ? `${existingTransforms} ${currentRotation}`\n : currentRotation\n\n context.element.style.transform = newTransform\n }\n })\n } else {\n // Static rotation\n if (context.element instanceof HTMLElement) {\n context.element.style.transformOrigin = transformOrigin\n\n // Combine with existing transforms if any\n const existingTransform = context.element.style.transform || ''\n const existingTransforms = existingTransform\n .split(' ')\n .filter((t) => t && !t.startsWith('rotate('))\n .join(' ')\n\n const newTransform = existingTransforms\n ? `${existingTransforms} ${rotationTransform}`\n : rotationTransform\n\n context.element.style.transform = newTransform\n }\n }\n }\n\n // Overlay modifier (SwiftUI .overlay())\n if (props.overlay && context.element instanceof HTMLElement) {\n this.applyOverlay(context.element, props.overlay, context)\n }\n\n return undefined\n }\n\n private applyOverlay(\n element: HTMLElement,\n overlay: { content: any; alignment?: string },\n _context: ModifierContext\n ): void {\n const { content, alignment = 'center' } = overlay\n\n // Make the element a positioned container\n if (element.style.position === '' || element.style.position === 'static') {\n element.style.position = 'relative'\n }\n\n // Create overlay container\n const overlayContainer = document.createElement('div')\n overlayContainer.style.position = 'absolute'\n overlayContainer.style.pointerEvents = 'none' // Allow clicks to pass through by default\n\n // Apply alignment positioning\n const alignmentStyles = this.getOverlayAlignment(alignment)\n Object.assign(overlayContainer.style, alignmentStyles)\n\n // Render content\n if (typeof content === 'function') {\n // If content is a function, call it to get component\n const contentComponent = content()\n if (contentComponent && typeof contentComponent.render === 'function') {\n const contentNode = contentComponent.render()\n if (contentNode.element) {\n overlayContainer.appendChild(contentNode.element)\n }\n }\n } else if (content && typeof content.render === 'function') {\n // If content is a component instance\n const contentNode = content.render()\n if (contentNode.element) {\n overlayContainer.appendChild(contentNode.element)\n }\n } else if (content instanceof HTMLElement) {\n // If content is already a DOM element\n overlayContainer.appendChild(content)\n }\n\n // Add overlay to the element\n element.appendChild(overlayContainer)\n }\n\n private getOverlayAlignment(alignment: string): Record<string, string> {\n const alignments: Record<string, Record<string, string>> = {\n center: {\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n },\n top: {\n top: '0',\n left: '50%',\n transform: 'translateX(-50%)',\n },\n bottom: {\n bottom: '0',\n left: '50%',\n transform: 'translateX(-50%)',\n },\n leading: {\n top: '50%',\n left: '0',\n transform: 'translateY(-50%)',\n },\n trailing: {\n top: '50%',\n right: '0',\n transform: 'translateY(-50%)',\n },\n topLeading: {\n top: '0',\n left: '0',\n },\n topTrailing: {\n top: '0',\n right: '0',\n },\n bottomLeading: {\n bottom: '0',\n left: '0',\n },\n bottomTrailing: {\n bottom: '0',\n right: '0',\n },\n }\n\n return alignments[alignment] || alignments.center\n }\n\n private createKeyframeRule(\n name: string,\n keyframes: Record<string, Record<string, string>>\n ): string {\n let rule = `@keyframes ${name} {\\n`\n\n for (const [percentage, styles] of Object.entries(keyframes)) {\n rule += ` ${percentage} {\\n`\n for (const [property, value] of Object.entries(styles)) {\n const cssProperty = this.toCSSProperty(property)\n rule += ` ${cssProperty}: ${value};\\n`\n }\n rule += ` }\\n`\n }\n\n rule += '}'\n return rule\n }\n\n private addKeyframesToStylesheet(rule: string): void {\n let stylesheet = document.querySelector('#tachui-animations') as HTMLStyleElement\n\n if (!stylesheet) {\n stylesheet = document.createElement('style')\n stylesheet.id = 'tachui-animations'\n document.head.appendChild(stylesheet)\n }\n\n stylesheet.appendChild(document.createTextNode(rule))\n }\n}\n\n/**\n * Lifecycle modifier for component lifecycle events\n */\nexport class LifecycleModifier extends BaseModifier {\n readonly type = 'lifecycle'\n readonly priority = ModifierPriority.CUSTOM\n\n private activeAbortController?: AbortController\n\n apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined {\n if (!context.element) return\n\n const props = this.properties as LifecycleModifierProps\n\n // Clean up any existing tasks on re-application\n if (this.activeAbortController) {\n this.activeAbortController.abort()\n }\n\n // Set up intersection observer for onAppear/onDisappear\n if (props.onAppear || props.onDisappear) {\n this.setupLifecycleObserver(context.element, props)\n }\n\n // Set up async task with cancellation\n if (props.task) {\n this.setupTask(context, props.task)\n }\n\n // Set up refreshable behavior\n if (props.refreshable) {\n this.setupRefreshable(context.element, props.refreshable)\n }\n\n return undefined\n }\n\n private setupLifecycleObserver(element: Element, props: LifecycleModifierProps): void {\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting && props.onAppear) {\n // Element has appeared in viewport\n props.onAppear()\n } else if (!entry.isIntersecting && props.onDisappear) {\n // Element has disappeared from viewport\n props.onDisappear()\n }\n })\n },\n {\n threshold: 0.1, // Trigger when 10% of element is visible\n rootMargin: '10px', // Add some margin for better UX\n }\n )\n\n observer.observe(element)\n\n // Store cleanup function\n this.addCleanup(() => {\n observer.disconnect()\n })\n }\n\n private setupTask(_context: ModifierContext, task: LifecycleModifierProps['task']): void {\n if (!task) return\n\n // Create abort controller for task cancellation\n this.activeAbortController = new AbortController()\n const { signal } = this.activeAbortController\n\n // Execute the task operation\n const executeTask = async () => {\n try {\n if (signal.aborted) return\n\n const result = task.operation()\n\n // Handle both sync and async operations\n if (result instanceof Promise) {\n await result\n }\n } catch (error) {\n if (signal.aborted) return\n console.error('TachUI Task Error:', error)\n }\n }\n\n // Start task execution\n executeTask()\n\n // Add cleanup to cancel task on component unmount\n this.addCleanup(() => {\n if (this.activeAbortController) {\n this.activeAbortController.abort()\n }\n })\n }\n\n private setupRefreshable(\n element: Element,\n refreshable: LifecycleModifierProps['refreshable']\n ): void {\n if (!refreshable) return\n\n let isRefreshing = false\n let pullDistance = 0\n let startY = 0\n\n const threshold = 70 // Pull threshold in pixels\n\n // Create refresh indicator element\n const refreshIndicator = document.createElement('div')\n refreshIndicator.style.cssText = `\n position: absolute;\n top: -50px;\n left: 50%;\n transform: translateX(-50%);\n width: 30px;\n height: 30px;\n border: 2px solid #ccc;\n border-top: 2px solid #007AFF;\n border-radius: 50%;\n animation: tachui-spin 1s linear infinite;\n opacity: 0;\n transition: opacity 0.3s ease;\n z-index: 1000;\n `\n\n // Add spinner animation\n if (!document.querySelector('#tachui-refresh-styles')) {\n const style = document.createElement('style')\n style.id = 'tachui-refresh-styles'\n style.textContent = `\n @keyframes tachui-spin {\n 0% { transform: translateX(-50%) rotate(0deg); }\n 100% { transform: translateX(-50%) rotate(360deg); }\n }\n `\n document.head.appendChild(style)\n }\n\n const container = element.parentElement || element\n if (container instanceof HTMLElement) {\n container.style.position = 'relative'\n container.appendChild(refreshIndicator)\n }\n\n // Touch event handlers\n const handleTouchStart = (e: TouchEvent) => {\n if (isRefreshing) return\n startY = e.touches[0].clientY\n }\n\n const handleTouchMove = (e: TouchEvent) => {\n if (isRefreshing) return\n\n const currentY = e.touches[0].clientY\n pullDistance = Math.max(0, currentY - startY)\n\n if (pullDistance > 20) {\n e.preventDefault() // Prevent default scrolling\n\n const progress = Math.min(pullDistance / threshold, 1)\n refreshIndicator.style.opacity = String(progress * 0.8)\n refreshIndicator.style.top = `${-50 + progress * 20}px`\n }\n }\n\n const handleTouchEnd = async () => {\n if (isRefreshing || pullDistance < threshold) {\n // Reset if threshold not met\n refreshIndicator.style.opacity = '0'\n refreshIndicator.style.top = '-50px'\n pullDistance = 0\n return\n }\n\n // Trigger refresh\n isRefreshing = true\n refreshIndicator.style.opacity = '1'\n refreshIndicator.style.top = '10px'\n\n try {\n await refreshable.onRefresh()\n } catch (error) {\n console.error('TachUI Refresh Error:', error)\n } finally {\n isRefreshing = false\n refreshIndicator.style.opacity = '0'\n refreshIndicator.style.top = '-50px'\n pullDistance = 0\n }\n }\n\n // Add event listeners with proper typing\n element.addEventListener('touchstart', handleTouchStart as EventListener, { passive: false })\n element.addEventListener('touchmove', handleTouchMove as EventListener, { passive: false })\n element.addEventListener('touchend', handleTouchEnd as EventListener)\n\n // Cleanup\n this.addCleanup(() => {\n element.removeEventListener('touchstart', handleTouchStart as EventListener)\n element.removeEventListener('touchmove', handleTouchMove as EventListener)\n element.removeEventListener('touchend', handleTouchEnd as EventListener)\n\n if (refreshIndicator.parentElement) {\n refreshIndicator.parentElement.removeChild(refreshIndicator)\n }\n })\n }\n\n private addCleanup(cleanup: () => void): void {\n // Store cleanup functions for proper disposal\n if (!(this.properties as any)._cleanupFunctions) {\n ;(this.properties as any)._cleanupFunctions = []\n }\n ;(this.properties as any)._cleanupFunctions.push(cleanup)\n }\n}\n\n/**\n * Resizable modifier for making images resizable\n * In SwiftUI, .resizable() allows images to be scaled to fit their container\n */\nexport class ResizableModifier extends BaseModifier {\n readonly type = 'resizable'\n readonly priority = ModifierPriority.APPEARANCE\n\n apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined {\n if (!context.element) return\n\n // For images, resizable means they can be scaled to fit their container\n // This is typically achieved with object-fit: fill in CSS\n if (context.element instanceof HTMLImageElement) {\n context.element.style.objectFit = 'fill'\n }\n\n return undefined\n }\n}\n"],"names":["BaseModifier","properties","props","context","resolved","key","value","isSignal","isComputed","element","property","cssProperty","createEffect","currentValue","cssValue","actualValue","styles","styleTarget","classes","componentId","modifiers","LayoutModifier","__publicField","ModifierPriority","node","styleContext","offset","x","y","currentX","currentY","offsetX","offsetY","translateValue","existingTransforms","t","newTransform","aspectRatio","ratio","contentMode","currentRatio","scaleEffect","anchor","scaleX","scaleY","scaleValue","position","zIndex","currentZIndex","_context","frame","infinityResult","shouldExpandForInfinity","dimensionToCSS","isInfinity","p","m","priority","horizontal","vertical","AppearanceModifier","themeSignal","getThemeSignal","resolvedColor","font","border","shadow","radius","color","shape","parameters","radiusX","radiusY","inset","points","filters","InteractionModifier","_node","event","target","options","minimumDuration","maximumDistance","timeoutId","startPoint","isPressing","cleanup","handlePointerDown","pointerEvent","handlePointerMove","handlePointerUp","handlePointerCancel","shortcut","handleKeyDown","requiredModifiers","actualModifiers","keyMatches","modifiersMatch","mod","required","focused","htmlElement","coordinateSpace","handleMouseMove","mouseEvent","rect","handleMouseLeave","enabled","AnimationModifier","duration","easing","delay","anim","keyframeName","keyframeRule","iterations","direction","transformValue","angle","transformOrigin","rotationTransform","currentRotation","overlay","content","alignment","overlayContainer","alignmentStyles","contentComponent","contentNode","alignments","name","keyframes","rule","percentage","stylesheet","LifecycleModifier","observer","entries","entry","task","signal","result","error","refreshable","isRefreshing","pullDistance","startY","threshold","refreshIndicator","style","container","handleTouchStart","e","handleTouchMove","progress","handleTouchEnd","ResizableModifier"],"mappings":"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"}