@easyops-cn/a2ui-react 0.0.0 → 0.0.2

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 (604) hide show
  1. package/README.md +12 -8
  2. package/dist/0.8/A2UIRenderer.d.ts +49 -0
  3. package/dist/0.8/A2UIRenderer.test.d.ts +6 -0
  4. package/dist/0.8/components/ComponentRenderer.d.ts +39 -0
  5. package/dist/0.8/components/ComponentRenderer.test.d.ts +6 -0
  6. package/dist/0.8/components/UnknownComponent.d.ts +18 -0
  7. package/dist/0.8/components/display/AudioPlayerComponent.d.ts +5 -0
  8. package/dist/0.8/components/display/DividerComponent.d.ts +5 -0
  9. package/dist/0.8/components/display/IconComponent.d.ts +5 -0
  10. package/dist/0.8/components/display/ImageComponent.d.ts +6 -0
  11. package/dist/0.8/components/display/TextComponent.d.ts +6 -0
  12. package/dist/0.8/components/display/VideoComponent.d.ts +5 -0
  13. package/dist/0.8/components/display/display.test.d.ts +7 -0
  14. package/dist/0.8/components/display/index.d.ts +9 -0
  15. package/dist/0.8/components/index.d.ts +7 -0
  16. package/dist/0.8/components/interactive/ButtonComponent.d.ts +5 -0
  17. package/dist/0.8/components/interactive/CheckBoxComponent.d.ts +5 -0
  18. package/dist/0.8/components/interactive/DateTimeInputComponent.d.ts +5 -0
  19. package/dist/0.8/components/interactive/MultipleChoiceComponent.d.ts +7 -0
  20. package/dist/0.8/components/interactive/SliderComponent.d.ts +5 -0
  21. package/dist/0.8/components/interactive/TextFieldComponent.d.ts +5 -0
  22. package/dist/0.8/components/interactive/index.d.ts +9 -0
  23. package/dist/0.8/components/interactive/interactive.test.d.ts +7 -0
  24. package/dist/0.8/components/layout/CardComponent.d.ts +5 -0
  25. package/dist/0.8/components/layout/ColumnComponent.d.ts +5 -0
  26. package/dist/0.8/components/layout/ListComponent.d.ts +5 -0
  27. package/dist/0.8/components/layout/ModalComponent.d.ts +5 -0
  28. package/dist/0.8/components/layout/RowComponent.d.ts +5 -0
  29. package/dist/0.8/components/layout/TabsComponent.d.ts +5 -0
  30. package/dist/0.8/components/layout/index.d.ts +9 -0
  31. package/dist/0.8/components/layout/layout.test.d.ts +7 -0
  32. package/dist/0.8/contexts/A2UIProvider.d.ts +34 -0
  33. package/dist/0.8/contexts/A2UIProvider.test.d.ts +6 -0
  34. package/dist/0.8/contexts/ActionContext.d.ts +33 -0
  35. package/dist/0.8/contexts/ActionContext.test.d.ts +6 -0
  36. package/dist/0.8/contexts/ComponentsMapContext.d.ts +63 -0
  37. package/dist/0.8/contexts/DataModelContext.d.ts +43 -0
  38. package/dist/0.8/contexts/DataModelContext.test.d.ts +6 -0
  39. package/dist/0.8/contexts/SurfaceContext.d.ts +45 -0
  40. package/dist/0.8/contexts/SurfaceContext.test.d.ts +6 -0
  41. package/dist/0.8/hooks/useA2UIMessageHandler.d.ts +41 -0
  42. package/dist/0.8/hooks/useA2UIMessageHandler.test.d.ts +6 -0
  43. package/{src/0.8/hooks/useComponent.ts → dist/0.8/hooks/useComponent.d.ts} +2 -18
  44. package/dist/0.8/hooks/useComponent.test.d.ts +6 -0
  45. package/dist/0.8/hooks/useDataBinding.d.ts +50 -0
  46. package/dist/0.8/hooks/useDataBinding.test.d.ts +6 -0
  47. package/{src/0.8/hooks/useDispatchAction.ts → dist/0.8/hooks/useDispatchAction.d.ts} +2 -15
  48. package/dist/0.8/hooks/useDispatchAction.test.d.ts +6 -0
  49. package/{src/0.8/hooks/useSurface.ts → dist/0.8/hooks/useSurface.d.ts} +2 -15
  50. package/dist/0.8/hooks/useSurface.test.d.ts +6 -0
  51. package/{src/0.8/index.ts → dist/0.8/index.d.ts} +7 -21
  52. package/{src/0.8/types/index.ts → dist/0.8/types/index.d.ts} +128 -213
  53. package/dist/0.8/utils/dataBinding.d.ts +95 -0
  54. package/dist/0.8/utils/dataBinding.test.d.ts +6 -0
  55. package/dist/0.8/utils/pathUtils.d.ts +63 -0
  56. package/dist/0.8/utils/pathUtils.test.d.ts +6 -0
  57. package/dist/a2ui-react.js +4 -0
  58. package/dist/a2ui-react10.js +54 -0
  59. package/dist/a2ui-react100.js +24 -0
  60. package/dist/a2ui-react101.js +255 -0
  61. package/dist/a2ui-react102.js +163 -0
  62. package/dist/a2ui-react103.js +19 -0
  63. package/dist/a2ui-react104.js +251 -0
  64. package/dist/a2ui-react105.js +61 -0
  65. package/dist/a2ui-react106.js +35 -0
  66. package/dist/a2ui-react107.js +436 -0
  67. package/dist/a2ui-react108.js +16 -0
  68. package/dist/a2ui-react109.js +234 -0
  69. package/dist/a2ui-react11.js +9 -0
  70. package/dist/a2ui-react110.js +6 -0
  71. package/dist/a2ui-react111.js +6 -0
  72. package/dist/a2ui-react112.js +6 -0
  73. package/dist/a2ui-react113.js +239 -0
  74. package/dist/a2ui-react114.js +845 -0
  75. package/dist/a2ui-react115.js +6 -0
  76. package/dist/a2ui-react116.js +10 -0
  77. package/dist/a2ui-react117.js +8 -0
  78. package/dist/a2ui-react118.js +8 -0
  79. package/dist/a2ui-react119.js +20 -0
  80. package/dist/a2ui-react12.js +32 -0
  81. package/dist/a2ui-react120.js +8 -0
  82. package/dist/a2ui-react121.js +8 -0
  83. package/dist/a2ui-react122.js +9 -0
  84. package/dist/a2ui-react123.js +16 -0
  85. package/dist/a2ui-react124.js +18 -0
  86. package/dist/a2ui-react125.js +11 -0
  87. package/dist/a2ui-react126.js +9 -0
  88. package/dist/a2ui-react127.js +13 -0
  89. package/dist/a2ui-react128.js +17 -0
  90. package/dist/a2ui-react129.js +8 -0
  91. package/dist/a2ui-react13.js +36 -0
  92. package/dist/a2ui-react130.js +17 -0
  93. package/dist/a2ui-react131.js +8 -0
  94. package/dist/a2ui-react132.js +10 -0
  95. package/dist/a2ui-react133.js +9 -0
  96. package/dist/a2ui-react134.js +7 -0
  97. package/dist/a2ui-react135.js +9 -0
  98. package/dist/a2ui-react136.js +548 -0
  99. package/dist/a2ui-react137.js +49 -0
  100. package/dist/a2ui-react138.js +20 -0
  101. package/dist/a2ui-react139.js +21 -0
  102. package/dist/a2ui-react14.js +114 -0
  103. package/dist/a2ui-react140.js +11 -0
  104. package/dist/a2ui-react141.js +9 -0
  105. package/dist/a2ui-react142.js +10 -0
  106. package/dist/a2ui-react143.js +8 -0
  107. package/dist/a2ui-react144.js +9 -0
  108. package/dist/a2ui-react145.js +12 -0
  109. package/dist/a2ui-react146.js +8 -0
  110. package/dist/a2ui-react147.js +11 -0
  111. package/dist/a2ui-react148.js +15 -0
  112. package/dist/a2ui-react149.js +8 -0
  113. package/dist/a2ui-react15.js +18 -0
  114. package/dist/a2ui-react150.js +12 -0
  115. package/dist/a2ui-react151.js +10 -0
  116. package/dist/a2ui-react152.js +12 -0
  117. package/dist/a2ui-react153.js +16 -0
  118. package/dist/a2ui-react154.js +8 -0
  119. package/dist/a2ui-react155.js +8 -0
  120. package/dist/a2ui-react156.js +8 -0
  121. package/dist/a2ui-react157.js +7 -0
  122. package/dist/a2ui-react158.js +14 -0
  123. package/dist/a2ui-react159.js +13 -0
  124. package/dist/a2ui-react16.js +19 -0
  125. package/dist/a2ui-react160.js +13 -0
  126. package/dist/a2ui-react161.js +14 -0
  127. package/dist/a2ui-react162.js +14 -0
  128. package/dist/a2ui-react163.js +35 -0
  129. package/dist/a2ui-react164.js +67 -0
  130. package/dist/a2ui-react165.js +11 -0
  131. package/dist/a2ui-react166.js +11 -0
  132. package/dist/a2ui-react167.js +10 -0
  133. package/dist/a2ui-react168.js +13 -0
  134. package/dist/a2ui-react169.js +10 -0
  135. package/dist/a2ui-react17.js +18 -0
  136. package/dist/a2ui-react170.js +10 -0
  137. package/dist/a2ui-react171.js +9 -0
  138. package/dist/a2ui-react172.js +17 -0
  139. package/dist/a2ui-react173.js +21 -0
  140. package/dist/a2ui-react174.js +18 -0
  141. package/dist/a2ui-react175.js +35 -0
  142. package/dist/a2ui-react176.js +14 -0
  143. package/dist/a2ui-react177.js +7 -0
  144. package/dist/a2ui-react178.js +58 -0
  145. package/dist/a2ui-react179.js +25 -0
  146. package/dist/a2ui-react18.js +58 -0
  147. package/dist/a2ui-react180.js +43 -0
  148. package/dist/a2ui-react181.js +63 -0
  149. package/dist/a2ui-react182.js +34 -0
  150. package/dist/a2ui-react183.js +15 -0
  151. package/dist/a2ui-react184.js +67 -0
  152. package/dist/a2ui-react185.js +67 -0
  153. package/dist/a2ui-react186.js +69 -0
  154. package/dist/a2ui-react187.js +69 -0
  155. package/dist/a2ui-react188.js +42 -0
  156. package/dist/a2ui-react189.js +43 -0
  157. package/dist/a2ui-react19.js +58 -0
  158. package/dist/a2ui-react190.js +55 -0
  159. package/dist/a2ui-react191.js +45 -0
  160. package/dist/a2ui-react192.js +41 -0
  161. package/dist/a2ui-react193.js +72 -0
  162. package/dist/a2ui-react194.js +72 -0
  163. package/dist/a2ui-react195.js +97 -0
  164. package/dist/a2ui-react196.js +42 -0
  165. package/dist/a2ui-react197.js +42 -0
  166. package/dist/a2ui-react198.js +42 -0
  167. package/dist/a2ui-react199.js +27 -0
  168. package/dist/a2ui-react2.js +11 -0
  169. package/dist/a2ui-react20.js +51 -0
  170. package/dist/a2ui-react200.js +26 -0
  171. package/dist/a2ui-react201.js +26 -0
  172. package/dist/a2ui-react202.js +27 -0
  173. package/dist/a2ui-react203.js +26 -0
  174. package/dist/a2ui-react204.js +26 -0
  175. package/dist/a2ui-react205.js +16 -0
  176. package/dist/a2ui-react206.js +41 -0
  177. package/dist/a2ui-react207.js +41 -0
  178. package/dist/a2ui-react208.js +16 -0
  179. package/dist/a2ui-react209.js +16 -0
  180. package/dist/a2ui-react21.js +14 -0
  181. package/dist/a2ui-react210.js +32 -0
  182. package/dist/a2ui-react211.js +32 -0
  183. package/dist/a2ui-react212.js +6 -0
  184. package/dist/a2ui-react213.js +9 -0
  185. package/dist/a2ui-react214.js +50 -0
  186. package/dist/a2ui-react215.js +29 -0
  187. package/dist/a2ui-react216.js +68 -0
  188. package/dist/a2ui-react217.js +10 -0
  189. package/dist/a2ui-react218.js +127 -0
  190. package/dist/a2ui-react219.js +17 -0
  191. package/dist/a2ui-react22.js +29 -0
  192. package/dist/a2ui-react220.js +136 -0
  193. package/dist/a2ui-react221.js +13 -0
  194. package/dist/a2ui-react222.js +219 -0
  195. package/dist/a2ui-react223.js +15 -0
  196. package/dist/a2ui-react224.js +36 -0
  197. package/dist/a2ui-react225.js +49 -0
  198. package/dist/a2ui-react226.js +10 -0
  199. package/dist/a2ui-react227.js +52 -0
  200. package/dist/a2ui-react228.js +6 -0
  201. package/dist/a2ui-react229.js +8 -0
  202. package/dist/a2ui-react23.js +25 -0
  203. package/dist/a2ui-react230.js +30 -0
  204. package/dist/a2ui-react231.js +52 -0
  205. package/dist/a2ui-react232.js +11 -0
  206. package/dist/a2ui-react233.js +70 -0
  207. package/dist/a2ui-react234.js +49 -0
  208. package/dist/a2ui-react235.js +27 -0
  209. package/dist/a2ui-react236.js +49 -0
  210. package/dist/a2ui-react237.js +183 -0
  211. package/dist/a2ui-react238.js +70 -0
  212. package/dist/a2ui-react239.js +33 -0
  213. package/dist/a2ui-react24.js +29 -0
  214. package/dist/a2ui-react240.js +11 -0
  215. package/dist/a2ui-react241.js +155 -0
  216. package/dist/a2ui-react242.js +110 -0
  217. package/dist/a2ui-react243.js +22 -0
  218. package/dist/a2ui-react244.js +100 -0
  219. package/dist/a2ui-react245.js +49 -0
  220. package/dist/a2ui-react246.js +14 -0
  221. package/dist/a2ui-react247.js +208 -0
  222. package/dist/a2ui-react248.js +24 -0
  223. package/dist/a2ui-react249.js +402 -0
  224. package/dist/a2ui-react25.js +27 -0
  225. package/dist/a2ui-react250.js +49 -0
  226. package/dist/a2ui-react251.js +49 -0
  227. package/dist/a2ui-react252.js +54 -0
  228. package/dist/a2ui-react253.js +7 -0
  229. package/dist/a2ui-react254.js +7 -0
  230. package/dist/a2ui-react255.js +18 -0
  231. package/dist/a2ui-react256.js +8 -0
  232. package/dist/a2ui-react257.js +10 -0
  233. package/dist/a2ui-react258.js +19 -0
  234. package/dist/a2ui-react259.js +7 -0
  235. package/dist/a2ui-react26.js +44 -0
  236. package/dist/a2ui-react260.js +7 -0
  237. package/dist/a2ui-react261.js +8 -0
  238. package/dist/a2ui-react262.js +8 -0
  239. package/dist/a2ui-react263.js +7 -0
  240. package/dist/a2ui-react264.js +7 -0
  241. package/dist/a2ui-react265.js +9 -0
  242. package/dist/a2ui-react266.js +27 -0
  243. package/dist/a2ui-react267.js +9 -0
  244. package/dist/a2ui-react268.js +7 -0
  245. package/dist/a2ui-react269.js +9 -0
  246. package/dist/a2ui-react27.js +100 -0
  247. package/dist/a2ui-react270.js +8 -0
  248. package/dist/a2ui-react271.js +7 -0
  249. package/dist/a2ui-react272.js +8 -0
  250. package/dist/a2ui-react273.js +7 -0
  251. package/dist/a2ui-react274.js +11 -0
  252. package/dist/a2ui-react275.js +8 -0
  253. package/dist/a2ui-react276.js +7 -0
  254. package/dist/a2ui-react277.js +7 -0
  255. package/dist/a2ui-react278.js +9 -0
  256. package/dist/a2ui-react279.js +148 -0
  257. package/dist/a2ui-react28.js +82 -0
  258. package/dist/a2ui-react280.js +42 -0
  259. package/dist/a2ui-react281.js +7 -0
  260. package/dist/a2ui-react282.js +10 -0
  261. package/dist/a2ui-react283.js +16 -0
  262. package/dist/a2ui-react284.js +10 -0
  263. package/dist/a2ui-react285.js +34 -0
  264. package/dist/a2ui-react286.js +13 -0
  265. package/dist/a2ui-react287.js +13 -0
  266. package/dist/a2ui-react288.js +11 -0
  267. package/dist/a2ui-react289.js +16 -0
  268. package/dist/a2ui-react29.js +43 -0
  269. package/dist/a2ui-react290.js +104 -0
  270. package/dist/a2ui-react291.js +22 -0
  271. package/dist/a2ui-react292.js +56 -0
  272. package/dist/a2ui-react293.js +75 -0
  273. package/dist/a2ui-react294.js +12 -0
  274. package/dist/a2ui-react295.js +23 -0
  275. package/dist/a2ui-react296.js +19 -0
  276. package/dist/a2ui-react297.js +26 -0
  277. package/dist/a2ui-react298.js +9 -0
  278. package/dist/a2ui-react299.js +8 -0
  279. package/dist/a2ui-react3.js +40 -0
  280. package/dist/a2ui-react30.js +41 -0
  281. package/dist/a2ui-react300.js +26 -0
  282. package/dist/a2ui-react301.js +37 -0
  283. package/dist/a2ui-react302.js +18 -0
  284. package/dist/a2ui-react303.js +9 -0
  285. package/dist/a2ui-react304.js +7 -0
  286. package/dist/a2ui-react305.js +7 -0
  287. package/dist/a2ui-react306.js +7 -0
  288. package/dist/a2ui-react307.js +7 -0
  289. package/dist/a2ui-react308.js +6 -0
  290. package/dist/a2ui-react309.js +9 -0
  291. package/dist/a2ui-react31.js +86 -0
  292. package/dist/a2ui-react310.js +26 -0
  293. package/dist/a2ui-react311.js +10 -0
  294. package/dist/a2ui-react312.js +9 -0
  295. package/dist/a2ui-react313.js +8 -0
  296. package/dist/a2ui-react314.js +6 -0
  297. package/dist/a2ui-react315.js +6 -0
  298. package/dist/a2ui-react316.js +7 -0
  299. package/dist/a2ui-react317.js +6 -0
  300. package/dist/a2ui-react318.js +7 -0
  301. package/dist/a2ui-react319.js +6 -0
  302. package/dist/a2ui-react32.js +46 -0
  303. package/dist/a2ui-react320.js +6 -0
  304. package/dist/a2ui-react321.js +6 -0
  305. package/dist/a2ui-react322.js +9 -0
  306. package/dist/a2ui-react323.js +18 -0
  307. package/dist/a2ui-react324.js +31 -0
  308. package/dist/a2ui-react325.js +15 -0
  309. package/dist/a2ui-react326.js +27 -0
  310. package/dist/a2ui-react327.js +31 -0
  311. package/dist/a2ui-react328.js +7 -0
  312. package/dist/a2ui-react329.js +19 -0
  313. package/dist/a2ui-react33.js +44 -0
  314. package/dist/a2ui-react330.js +8 -0
  315. package/dist/a2ui-react331.js +8 -0
  316. package/dist/a2ui-react332.js +61 -0
  317. package/dist/a2ui-react333.js +69 -0
  318. package/dist/a2ui-react334.js +9 -0
  319. package/dist/a2ui-react335.js +7 -0
  320. package/dist/a2ui-react336.js +26 -0
  321. package/dist/a2ui-react337.js +19 -0
  322. package/dist/a2ui-react338.js +10 -0
  323. package/dist/a2ui-react339.js +13 -0
  324. package/dist/a2ui-react34.js +8 -0
  325. package/dist/a2ui-react340.js +13 -0
  326. package/dist/a2ui-react341.js +24 -0
  327. package/dist/a2ui-react342.js +13 -0
  328. package/dist/a2ui-react343.js +12 -0
  329. package/dist/a2ui-react344.js +12 -0
  330. package/dist/a2ui-react345.js +7 -0
  331. package/dist/a2ui-react346.js +8 -0
  332. package/dist/a2ui-react347.js +19 -0
  333. package/dist/a2ui-react348.js +12 -0
  334. package/dist/a2ui-react349.js +21 -0
  335. package/dist/a2ui-react35.js +16 -0
  336. package/dist/a2ui-react350.js +18 -0
  337. package/dist/a2ui-react351.js +15 -0
  338. package/dist/a2ui-react352.js +32 -0
  339. package/dist/a2ui-react353.js +15 -0
  340. package/dist/a2ui-react354.js +28 -0
  341. package/dist/a2ui-react355.js +8 -0
  342. package/dist/a2ui-react356.js +11 -0
  343. package/dist/a2ui-react357.js +22 -0
  344. package/dist/a2ui-react358.js +7 -0
  345. package/dist/a2ui-react359.js +5 -0
  346. package/dist/a2ui-react36.js +23 -0
  347. package/dist/a2ui-react360.js +26 -0
  348. package/dist/a2ui-react361.js +115 -0
  349. package/dist/a2ui-react362.js +18 -0
  350. package/dist/a2ui-react363.js +527 -0
  351. package/dist/a2ui-react364.js +130 -0
  352. package/dist/a2ui-react365.js +136 -0
  353. package/dist/a2ui-react366.js +7 -0
  354. package/dist/a2ui-react367.js +15 -0
  355. package/dist/a2ui-react368.js +67 -0
  356. package/dist/a2ui-react369.js +71 -0
  357. package/dist/a2ui-react37.js +15 -0
  358. package/dist/a2ui-react370.js +11 -0
  359. package/dist/a2ui-react371.js +16 -0
  360. package/dist/a2ui-react372.js +68 -0
  361. package/dist/a2ui-react373.js +6 -0
  362. package/dist/a2ui-react374.js +25 -0
  363. package/dist/a2ui-react375.js +15 -0
  364. package/dist/a2ui-react376.js +30 -0
  365. package/dist/a2ui-react377.js +7 -0
  366. package/dist/a2ui-react378.js +25 -0
  367. package/dist/a2ui-react38.js +10 -0
  368. package/dist/a2ui-react39.js +10 -0
  369. package/dist/a2ui-react4.js +76 -0
  370. package/dist/a2ui-react40.js +14 -0
  371. package/dist/a2ui-react41.js +14 -0
  372. package/dist/a2ui-react42.js +16 -0
  373. package/dist/a2ui-react43.js +12 -0
  374. package/dist/a2ui-react44.js +15 -0
  375. package/dist/a2ui-react45.js +15 -0
  376. package/dist/a2ui-react46.js +9 -0
  377. package/dist/a2ui-react47.js +11 -0
  378. package/dist/a2ui-react48.js +16 -0
  379. package/dist/a2ui-react49.js +10 -0
  380. package/dist/a2ui-react5.js +8 -0
  381. package/dist/a2ui-react50.js +14 -0
  382. package/dist/a2ui-react51.js +9 -0
  383. package/dist/a2ui-react52.js +9 -0
  384. package/dist/a2ui-react53.js +15 -0
  385. package/dist/a2ui-react54.js +17 -0
  386. package/dist/a2ui-react55.js +10 -0
  387. package/dist/a2ui-react56.js +10 -0
  388. package/dist/a2ui-react57.js +10 -0
  389. package/dist/a2ui-react58.js +9 -0
  390. package/dist/a2ui-react59.js +9 -0
  391. package/dist/a2ui-react6.js +28 -0
  392. package/dist/a2ui-react60.js +9 -0
  393. package/dist/a2ui-react61.js +15 -0
  394. package/dist/a2ui-react62.js +10 -0
  395. package/dist/a2ui-react63.js +15 -0
  396. package/dist/a2ui-react64.js +10 -0
  397. package/dist/a2ui-react65.js +14 -0
  398. package/dist/a2ui-react66.js +22 -0
  399. package/dist/a2ui-react67.js +14 -0
  400. package/dist/a2ui-react68.js +10 -0
  401. package/dist/a2ui-react69.js +17 -0
  402. package/dist/a2ui-react7.js +10 -0
  403. package/dist/a2ui-react70.js +15 -0
  404. package/dist/a2ui-react71.js +10 -0
  405. package/dist/a2ui-react72.js +12 -0
  406. package/dist/a2ui-react73.js +9 -0
  407. package/dist/a2ui-react74.js +6 -0
  408. package/dist/a2ui-react75.js +15 -0
  409. package/dist/a2ui-react76.js +11 -0
  410. package/dist/a2ui-react77.js +14 -0
  411. package/dist/a2ui-react78.js +9 -0
  412. package/dist/a2ui-react79.js +9 -0
  413. package/dist/a2ui-react8.js +21 -0
  414. package/dist/a2ui-react80.js +9 -0
  415. package/dist/a2ui-react81.js +10 -0
  416. package/dist/a2ui-react82.js +26 -0
  417. package/dist/a2ui-react83.js +29 -0
  418. package/dist/a2ui-react84.js +67 -0
  419. package/dist/a2ui-react85.js +77 -0
  420. package/dist/a2ui-react86.js +53 -0
  421. package/dist/a2ui-react87.js +31 -0
  422. package/dist/a2ui-react88.js +22 -0
  423. package/dist/a2ui-react89.js +21 -0
  424. package/dist/a2ui-react9.js +88 -0
  425. package/{src/components/ui/textarea.tsx → dist/a2ui-react90.js} +17 -17
  426. package/dist/a2ui-react91.js +176 -0
  427. package/dist/a2ui-react92.js +38 -0
  428. package/dist/a2ui-react93.js +88 -0
  429. package/dist/a2ui-react94.js +9 -0
  430. package/dist/a2ui-react95.js +58 -0
  431. package/dist/a2ui-react96.js +146 -0
  432. package/dist/a2ui-react97.js +63 -0
  433. package/dist/a2ui-react98.js +17 -0
  434. package/dist/a2ui-react99.js +2765 -0
  435. package/dist/components/ui/button.d.ts +10 -0
  436. package/dist/components/ui/calendar.d.ts +8 -0
  437. package/dist/components/ui/card.d.ts +9 -0
  438. package/dist/components/ui/checkbox.d.ts +4 -0
  439. package/dist/components/ui/dialog.d.ts +15 -0
  440. package/dist/components/ui/input.d.ts +3 -0
  441. package/dist/components/ui/label.d.ts +4 -0
  442. package/dist/components/ui/native-select.d.ts +7 -0
  443. package/dist/components/ui/popover.d.ts +7 -0
  444. package/dist/components/ui/select.d.ts +15 -0
  445. package/dist/components/ui/separator.d.ts +4 -0
  446. package/dist/components/ui/slider.d.ts +4 -0
  447. package/dist/components/ui/tabs.d.ts +7 -0
  448. package/dist/components/ui/textarea.d.ts +3 -0
  449. package/dist/index.d.ts +1 -0
  450. package/dist/lib/utils.d.ts +2 -0
  451. package/package.json +10 -2
  452. package/.claude/commands/speckit.analyze.md +0 -184
  453. package/.claude/commands/speckit.checklist.md +0 -294
  454. package/.claude/commands/speckit.clarify.md +0 -181
  455. package/.claude/commands/speckit.constitution.md +0 -82
  456. package/.claude/commands/speckit.implement.md +0 -135
  457. package/.claude/commands/speckit.plan.md +0 -89
  458. package/.claude/commands/speckit.specify.md +0 -256
  459. package/.claude/commands/speckit.tasks.md +0 -137
  460. package/.claude/commands/speckit.taskstoissues.md +0 -30
  461. package/.github/workflows/deploy.yml +0 -69
  462. package/.husky/pre-commit +0 -1
  463. package/.prettierignore +0 -4
  464. package/.prettierrc +0 -7
  465. package/.specify/memory/constitution.md +0 -73
  466. package/.specify/scripts/bash/check-prerequisites.sh +0 -166
  467. package/.specify/scripts/bash/common.sh +0 -156
  468. package/.specify/scripts/bash/create-new-feature.sh +0 -297
  469. package/.specify/scripts/bash/setup-plan.sh +0 -61
  470. package/.specify/scripts/bash/update-agent-context.sh +0 -799
  471. package/.specify/templates/agent-file-template.md +0 -28
  472. package/.specify/templates/checklist-template.md +0 -40
  473. package/.specify/templates/plan-template.md +0 -105
  474. package/.specify/templates/spec-template.md +0 -115
  475. package/.specify/templates/tasks-template.md +0 -250
  476. package/CLAUDE.md +0 -105
  477. package/CONTRIBUTING.md +0 -97
  478. package/components.json +0 -21
  479. package/eslint.config.js +0 -25
  480. package/netlify.toml +0 -50
  481. package/playground/README.md +0 -75
  482. package/playground/index.html +0 -22
  483. package/playground/package.json +0 -32
  484. package/playground/public/favicon.svg +0 -8
  485. package/playground/src/App.css +0 -256
  486. package/playground/src/App.tsx +0 -115
  487. package/playground/src/assets/react.svg +0 -1
  488. package/playground/src/components/ErrorDisplay.tsx +0 -13
  489. package/playground/src/components/ExampleSelector.tsx +0 -64
  490. package/playground/src/components/Header.tsx +0 -47
  491. package/playground/src/components/JsonEditor.tsx +0 -32
  492. package/playground/src/components/Preview.tsx +0 -78
  493. package/playground/src/components/ThemeToggle.tsx +0 -19
  494. package/playground/src/data/examples.ts +0 -1571
  495. package/playground/src/hooks/useTheme.ts +0 -55
  496. package/playground/src/index.css +0 -220
  497. package/playground/src/main.tsx +0 -10
  498. package/playground/tsconfig.app.json +0 -34
  499. package/playground/tsconfig.json +0 -13
  500. package/playground/tsconfig.node.json +0 -26
  501. package/playground/vite.config.ts +0 -31
  502. package/specs/001-a2ui-renderer/checklists/requirements.md +0 -41
  503. package/specs/001-a2ui-renderer/data-model.md +0 -140
  504. package/specs/001-a2ui-renderer/plan.md +0 -123
  505. package/specs/001-a2ui-renderer/quickstart.md +0 -141
  506. package/specs/001-a2ui-renderer/research.md +0 -140
  507. package/specs/001-a2ui-renderer/spec.md +0 -165
  508. package/specs/001-a2ui-renderer/tasks.md +0 -310
  509. package/specs/002-playground/checklists/requirements.md +0 -37
  510. package/specs/002-playground/contracts/components.md +0 -120
  511. package/specs/002-playground/data-model.md +0 -149
  512. package/specs/002-playground/plan.md +0 -73
  513. package/specs/002-playground/quickstart.md +0 -158
  514. package/specs/002-playground/research.md +0 -117
  515. package/specs/002-playground/spec.md +0 -109
  516. package/specs/002-playground/tasks.md +0 -224
  517. package/src/0.8/A2UIRender.test.tsx +0 -793
  518. package/src/0.8/A2UIRender.tsx +0 -142
  519. package/src/0.8/components/ComponentRenderer.test.tsx +0 -373
  520. package/src/0.8/components/ComponentRenderer.tsx +0 -163
  521. package/src/0.8/components/UnknownComponent.tsx +0 -49
  522. package/src/0.8/components/display/AudioPlayerComponent.tsx +0 -37
  523. package/src/0.8/components/display/DividerComponent.tsx +0 -23
  524. package/src/0.8/components/display/IconComponent.tsx +0 -137
  525. package/src/0.8/components/display/ImageComponent.tsx +0 -57
  526. package/src/0.8/components/display/TextComponent.tsx +0 -56
  527. package/src/0.8/components/display/VideoComponent.tsx +0 -31
  528. package/src/0.8/components/display/display.test.tsx +0 -660
  529. package/src/0.8/components/display/index.ts +0 -10
  530. package/src/0.8/components/index.ts +0 -14
  531. package/src/0.8/components/interactive/ButtonComponent.tsx +0 -44
  532. package/src/0.8/components/interactive/CheckBoxComponent.tsx +0 -45
  533. package/src/0.8/components/interactive/DateTimeInputComponent.tsx +0 -176
  534. package/src/0.8/components/interactive/MultipleChoiceComponent.tsx +0 -157
  535. package/src/0.8/components/interactive/SliderComponent.tsx +0 -53
  536. package/src/0.8/components/interactive/TextFieldComponent.tsx +0 -65
  537. package/src/0.8/components/interactive/index.ts +0 -10
  538. package/src/0.8/components/interactive/interactive.test.tsx +0 -618
  539. package/src/0.8/components/layout/CardComponent.tsx +0 -30
  540. package/src/0.8/components/layout/ColumnComponent.tsx +0 -93
  541. package/src/0.8/components/layout/ListComponent.tsx +0 -81
  542. package/src/0.8/components/layout/ModalComponent.tsx +0 -41
  543. package/src/0.8/components/layout/RowComponent.tsx +0 -94
  544. package/src/0.8/components/layout/TabsComponent.tsx +0 -59
  545. package/src/0.8/components/layout/index.ts +0 -10
  546. package/src/0.8/components/layout/layout.test.tsx +0 -558
  547. package/src/0.8/contexts/A2UIProvider.test.tsx +0 -226
  548. package/src/0.8/contexts/A2UIProvider.tsx +0 -54
  549. package/src/0.8/contexts/ActionContext.test.tsx +0 -242
  550. package/src/0.8/contexts/ActionContext.tsx +0 -105
  551. package/src/0.8/contexts/ComponentsMapContext.tsx +0 -125
  552. package/src/0.8/contexts/DataModelContext.test.tsx +0 -335
  553. package/src/0.8/contexts/DataModelContext.tsx +0 -184
  554. package/src/0.8/contexts/SurfaceContext.test.tsx +0 -339
  555. package/src/0.8/contexts/SurfaceContext.tsx +0 -197
  556. package/src/0.8/hooks/useA2UIMessageHandler.test.tsx +0 -399
  557. package/src/0.8/hooks/useA2UIMessageHandler.ts +0 -123
  558. package/src/0.8/hooks/useComponent.test.tsx +0 -148
  559. package/src/0.8/hooks/useDataBinding.test.tsx +0 -334
  560. package/src/0.8/hooks/useDataBinding.ts +0 -99
  561. package/src/0.8/hooks/useDispatchAction.test.tsx +0 -83
  562. package/src/0.8/hooks/useSurface.test.tsx +0 -114
  563. package/src/0.8/schemas/client_to_server.json +0 -50
  564. package/src/0.8/schemas/server_to_client.json +0 -148
  565. package/src/0.8/schemas/standard_catalog_definition.json +0 -661
  566. package/src/0.8/utils/dataBinding.test.ts +0 -443
  567. package/src/0.8/utils/dataBinding.ts +0 -212
  568. package/src/0.8/utils/pathUtils.test.ts +0 -353
  569. package/src/0.8/utils/pathUtils.ts +0 -200
  570. package/src/components/ui/button.tsx +0 -62
  571. package/src/components/ui/calendar.tsx +0 -220
  572. package/src/components/ui/card.tsx +0 -92
  573. package/src/components/ui/checkbox.tsx +0 -30
  574. package/src/components/ui/dialog.tsx +0 -141
  575. package/src/components/ui/input.tsx +0 -21
  576. package/src/components/ui/label.tsx +0 -22
  577. package/src/components/ui/native-select.tsx +0 -53
  578. package/src/components/ui/popover.tsx +0 -46
  579. package/src/components/ui/select.tsx +0 -188
  580. package/src/components/ui/separator.tsx +0 -26
  581. package/src/components/ui/slider.tsx +0 -61
  582. package/src/components/ui/tabs.tsx +0 -64
  583. package/src/index.ts +0 -1
  584. package/src/lib/utils.ts +0 -6
  585. package/tsconfig.json +0 -28
  586. package/vite.config.ts +0 -29
  587. package/vitest.config.ts +0 -22
  588. package/vitest.setup.ts +0 -8
  589. package/website/README.md +0 -4
  590. package/website/assets/favicon.svg +0 -8
  591. package/website/content/.gitkeep +0 -0
  592. package/website/content/index.md +0 -122
  593. package/website/global.d.ts +0 -9
  594. package/website/package.json +0 -17
  595. package/website/plain.config.js +0 -28
  596. package/website/serve.json +0 -6
  597. package/website/src/client/color-mode-switch.css +0 -47
  598. package/website/src/client/index.js +0 -61
  599. package/website/src/client/moon.svg +0 -1
  600. package/website/src/client/sun.svg +0 -1
  601. package/website/src/components/Footer.jsx +0 -9
  602. package/website/src/components/Header.jsx +0 -44
  603. package/website/src/components/Page.jsx +0 -28
  604. package/website/src/global.css +0 -423
@@ -1,334 +0,0 @@
1
- /**
2
- * useDataBinding Tests
3
- *
4
- * Tests for the useDataBinding, useDataModel, and useFormBinding hooks.
5
- */
6
-
7
- import { describe, it, expect, vi } from 'vitest'
8
- import { renderHook, act } from '@testing-library/react'
9
- import { useDataBinding, useDataModel, useFormBinding } from './useDataBinding'
10
- import {
11
- DataModelProvider,
12
- useDataModelContext,
13
- } from '../contexts/DataModelContext'
14
- import type { ReactNode } from 'react'
15
- import type { ValueSource } from '../types'
16
-
17
- describe('useDataBinding', () => {
18
- // Helper to render hook with provider
19
- const wrapper = ({ children }: { children: ReactNode }) => (
20
- <DataModelProvider>{children}</DataModelProvider>
21
- )
22
-
23
- describe('useDataBinding', () => {
24
- it('should return default value when source is undefined', () => {
25
- const { result } = renderHook(
26
- () => useDataBinding<string>('surface-1', undefined, 'default'),
27
- { wrapper }
28
- )
29
- expect(result.current).toBe('default')
30
- })
31
-
32
- it('should resolve literalString', () => {
33
- const source: ValueSource = { literalString: 'Hello' }
34
- const { result } = renderHook(
35
- () => useDataBinding<string>('surface-1', source),
36
- { wrapper }
37
- )
38
- expect(result.current).toBe('Hello')
39
- })
40
-
41
- it('should resolve literalNumber', () => {
42
- const source: ValueSource = { literalNumber: 42 }
43
- const { result } = renderHook(
44
- () => useDataBinding<number>('surface-1', source),
45
- { wrapper }
46
- )
47
- expect(result.current).toBe(42)
48
- })
49
-
50
- it('should resolve literalBoolean', () => {
51
- const source: ValueSource = { literalBoolean: true }
52
- const { result } = renderHook(
53
- () => useDataBinding<boolean>('surface-1', source),
54
- { wrapper }
55
- )
56
- expect(result.current).toBe(true)
57
- })
58
-
59
- it('should resolve literalArray', () => {
60
- const source: ValueSource = { literalArray: ['a', 'b', 'c'] }
61
- const { result } = renderHook(
62
- () => useDataBinding<string[]>('surface-1', source),
63
- { wrapper }
64
- )
65
- expect(result.current).toEqual(['a', 'b', 'c'])
66
- })
67
-
68
- it('should resolve path reference from data model', () => {
69
- const { result } = renderHook(
70
- () => {
71
- const value = useDataBinding<string>(
72
- 'surface-1',
73
- { path: '/user/name' },
74
- ''
75
- )
76
- const { setDataValue } = useDataModelContext()
77
- return { value, setDataValue }
78
- },
79
- { wrapper }
80
- )
81
-
82
- // Initially empty
83
- expect(result.current.value).toBe('')
84
-
85
- // Set data
86
- act(() => {
87
- result.current.setDataValue('surface-1', '/user/name', 'John')
88
- })
89
-
90
- expect(result.current.value).toBe('John')
91
- })
92
-
93
- it('should return default when path not found', () => {
94
- const { result } = renderHook(
95
- () =>
96
- useDataBinding<string>(
97
- 'surface-1',
98
- { path: '/nonexistent' },
99
- 'default'
100
- ),
101
- { wrapper }
102
- )
103
- expect(result.current).toBe('default')
104
- })
105
-
106
- it('should update when data model changes', () => {
107
- const { result } = renderHook(
108
- () => {
109
- const value = useDataBinding<number>(
110
- 'surface-1',
111
- { path: '/count' },
112
- 0
113
- )
114
- const { setDataValue } = useDataModelContext()
115
- return { value, setDataValue }
116
- },
117
- { wrapper }
118
- )
119
-
120
- expect(result.current.value).toBe(0)
121
-
122
- act(() => {
123
- result.current.setDataValue('surface-1', '/count', 10)
124
- })
125
- expect(result.current.value).toBe(10)
126
-
127
- act(() => {
128
- result.current.setDataValue('surface-1', '/count', 20)
129
- })
130
- expect(result.current.value).toBe(20)
131
- })
132
-
133
- it('should throw error when used outside provider', () => {
134
- const consoleError = vi
135
- .spyOn(console, 'error')
136
- .mockImplementation(() => {})
137
-
138
- expect(() => {
139
- renderHook(() => useDataBinding('test', undefined))
140
- }).toThrow('useDataModelContext must be used within a DataModelProvider')
141
-
142
- consoleError.mockRestore()
143
- })
144
- })
145
-
146
- describe('useDataModel', () => {
147
- it('should return empty object for non-existent surface', () => {
148
- const { result } = renderHook(() => useDataModel('non-existent'), {
149
- wrapper,
150
- })
151
- expect(result.current).toEqual({})
152
- })
153
-
154
- it('should return data model for surface', () => {
155
- const { result } = renderHook(
156
- () => {
157
- const dataModel = useDataModel('surface-1')
158
- const { setDataValue } = useDataModelContext()
159
- return { dataModel, setDataValue }
160
- },
161
- { wrapper }
162
- )
163
-
164
- act(() => {
165
- result.current.setDataValue('surface-1', '/name', 'John')
166
- result.current.setDataValue('surface-1', '/age', 30)
167
- })
168
-
169
- expect(result.current.dataModel).toEqual({ name: 'John', age: 30 })
170
- })
171
-
172
- it('should update when data model changes', () => {
173
- const { result } = renderHook(
174
- () => {
175
- const dataModel = useDataModel('surface-1')
176
- const { setDataValue } = useDataModelContext()
177
- return { dataModel, setDataValue }
178
- },
179
- { wrapper }
180
- )
181
-
182
- act(() => {
183
- result.current.setDataValue('surface-1', '/name', 'John')
184
- })
185
-
186
- expect(result.current.dataModel).toEqual({ name: 'John' })
187
-
188
- act(() => {
189
- result.current.setDataValue('surface-1', '/name', 'Jane')
190
- })
191
-
192
- expect(result.current.dataModel).toEqual({ name: 'Jane' })
193
- })
194
- })
195
-
196
- describe('useFormBinding', () => {
197
- it('should return value and setter', () => {
198
- const { result } = renderHook(
199
- () => useFormBinding<string>('surface-1', { path: '/name' }, ''),
200
- { wrapper }
201
- )
202
-
203
- expect(result.current).toHaveLength(2)
204
- expect(typeof result.current[0]).toBe('string')
205
- expect(typeof result.current[1]).toBe('function')
206
- })
207
-
208
- it('should return default value initially', () => {
209
- const { result } = renderHook(
210
- () => useFormBinding<string>('surface-1', { path: '/name' }, 'default'),
211
- { wrapper }
212
- )
213
-
214
- expect(result.current[0]).toBe('default')
215
- })
216
-
217
- it('should update data model when setValue is called', () => {
218
- const { result } = renderHook(
219
- () => {
220
- const [value, setValue] = useFormBinding<string>(
221
- 'surface-1',
222
- { path: '/name' },
223
- ''
224
- )
225
- const { getDataValue } = useDataModelContext()
226
- return { value, setValue, getDataValue }
227
- },
228
- { wrapper }
229
- )
230
-
231
- act(() => {
232
- result.current.setValue('John')
233
- })
234
-
235
- expect(result.current.value).toBe('John')
236
- expect(result.current.getDataValue('surface-1', '/name')).toBe('John')
237
- })
238
-
239
- it('should not update when source is literal', () => {
240
- const { result } = renderHook(
241
- () => {
242
- const [value, setValue] = useFormBinding<string>(
243
- 'surface-1',
244
- { literalString: 'constant' },
245
- ''
246
- )
247
- const { getDataModel } = useDataModelContext()
248
- return { value, setValue, getDataModel }
249
- },
250
- { wrapper }
251
- )
252
-
253
- expect(result.current.value).toBe('constant')
254
-
255
- // Try to set value - should not throw but also not update
256
- act(() => {
257
- result.current.setValue('new value')
258
- })
259
-
260
- // Value should still be the literal
261
- expect(result.current.value).toBe('constant')
262
- })
263
-
264
- it('should not update when source is undefined', () => {
265
- const { result } = renderHook(
266
- () => {
267
- const [value, setValue] = useFormBinding<string>(
268
- 'surface-1',
269
- undefined,
270
- 'default'
271
- )
272
- return { value, setValue }
273
- },
274
- { wrapper }
275
- )
276
-
277
- expect(result.current.value).toBe('default')
278
-
279
- // Try to set value - should not throw
280
- act(() => {
281
- result.current.setValue('new value')
282
- })
283
-
284
- // Value should still be default
285
- expect(result.current.value).toBe('default')
286
- })
287
-
288
- it('should work with different value types', () => {
289
- // Number
290
- const { result: numberResult } = renderHook(
291
- () => useFormBinding<number>('surface-1', { path: '/count' }, 0),
292
- { wrapper }
293
- )
294
-
295
- act(() => {
296
- numberResult.current[1](42)
297
- })
298
- expect(numberResult.current[0]).toBe(42)
299
-
300
- // Boolean
301
- const { result: boolResult } = renderHook(
302
- () => useFormBinding<boolean>('surface-2', { path: '/active' }, false),
303
- { wrapper }
304
- )
305
-
306
- act(() => {
307
- boolResult.current[1](true)
308
- })
309
- expect(boolResult.current[0]).toBe(true)
310
- })
311
-
312
- it('should reflect external data model changes', () => {
313
- const { result } = renderHook(
314
- () => {
315
- const [value, setValue] = useFormBinding<string>(
316
- 'surface-1',
317
- { path: '/name' },
318
- ''
319
- )
320
- const { setDataValue } = useDataModelContext()
321
- return { value, setValue, setDataValue }
322
- },
323
- { wrapper }
324
- )
325
-
326
- // Set via external setDataValue
327
- act(() => {
328
- result.current.setDataValue('surface-1', '/name', 'External')
329
- })
330
-
331
- expect(result.current.value).toBe('External')
332
- })
333
- })
334
- })
@@ -1,99 +0,0 @@
1
- /**
2
- * useDataBinding - Hook for resolving data bindings in components.
3
- */
4
-
5
- import { useMemo } from 'react'
6
- import type { ValueSource, DataModel } from '../types'
7
- import { useDataModelContext } from '../contexts/DataModelContext'
8
- import { resolveValue } from '../utils/dataBinding'
9
-
10
- /**
11
- * Resolves a ValueSource to its actual value.
12
- *
13
- * @param surfaceId - The surface ID for data model lookup
14
- * @param source - The value source (literal or path reference)
15
- * @param defaultValue - Default value if source is undefined or path not found
16
- * @returns The resolved value
17
- *
18
- * @example
19
- * ```tsx
20
- * function TextComponent({ surfaceId, text }) {
21
- * const textValue = useDataBinding<string>(surfaceId, text, '');
22
- * return <span>{textValue}</span>;
23
- * }
24
- * ```
25
- */
26
- export function useDataBinding<T = unknown>(
27
- surfaceId: string,
28
- source: ValueSource | undefined,
29
- defaultValue?: T
30
- ): T {
31
- const { getDataModel } = useDataModelContext()
32
-
33
- return useMemo(() => {
34
- const dataModel = getDataModel(surfaceId)
35
- return resolveValue<T>(source, dataModel, defaultValue)
36
- }, [getDataModel, surfaceId, source, defaultValue])
37
- }
38
-
39
- /**
40
- * Gets the full data model for a surface.
41
- * Useful for components that need access to multiple values.
42
- *
43
- * @param surfaceId - The surface ID
44
- * @returns The data model for this surface
45
- */
46
- export function useDataModel(surfaceId: string): DataModel {
47
- const { getDataModel } = useDataModelContext()
48
-
49
- return useMemo(() => {
50
- return getDataModel(surfaceId)
51
- }, [getDataModel, surfaceId])
52
- }
53
-
54
- /**
55
- * Hook for two-way data binding in form components.
56
- * Returns both the current value and a setter function.
57
- *
58
- * @param surfaceId - The surface ID
59
- * @param source - The value source (must be a path reference for setting)
60
- * @param defaultValue - Default value if not found
61
- * @returns Tuple of [value, setValue]
62
- *
63
- * @example
64
- * ```tsx
65
- * function TextFieldComponent({ surfaceId, text }) {
66
- * const [value, setValue] = useFormBinding<string>(surfaceId, text, '');
67
- *
68
- * return (
69
- * <input
70
- * value={value}
71
- * onChange={(e) => setValue(e.target.value)}
72
- * />
73
- * );
74
- * }
75
- * ```
76
- */
77
- export function useFormBinding<T = unknown>(
78
- surfaceId: string,
79
- source: ValueSource | undefined,
80
- defaultValue?: T
81
- ): [T, (value: T) => void] {
82
- const { getDataModel, setDataValue } = useDataModelContext()
83
-
84
- const value = useMemo(() => {
85
- const dataModel = getDataModel(surfaceId)
86
- return resolveValue<T>(source, dataModel, defaultValue)
87
- }, [getDataModel, surfaceId, source, defaultValue])
88
-
89
- const setValue = useMemo(() => {
90
- return (newValue: T) => {
91
- // Only path references can be updated
92
- if (source && 'path' in source) {
93
- setDataValue(surfaceId, source.path, newValue)
94
- }
95
- }
96
- }, [setDataValue, surfaceId, source])
97
-
98
- return [value, setValue]
99
- }
@@ -1,83 +0,0 @@
1
- /**
2
- * useDispatchAction Tests
3
- *
4
- * Tests for the useDispatchAction hooks.
5
- */
6
-
7
- import { describe, it, expect, vi } from 'vitest'
8
- import { renderHook, act } from '@testing-library/react'
9
- import { useDispatchAction } from './useDispatchAction'
10
- import { ActionProvider } from '../contexts/ActionContext'
11
- import { DataModelProvider } from '../contexts/DataModelContext'
12
- import type { ReactNode } from 'react'
13
- import type { Action, ActionPayload } from '../types'
14
-
15
- describe('useDispatchAction', () => {
16
- // Helper to create wrapper with providers
17
- const createWrapper =
18
- (onAction?: (action: ActionPayload) => void) =>
19
- ({ children }: { children: ReactNode }) => (
20
- <DataModelProvider>
21
- <ActionProvider onAction={onAction}>{children}</ActionProvider>
22
- </DataModelProvider>
23
- )
24
-
25
- it('should return dispatch function', () => {
26
- const wrapper = createWrapper()
27
- const { result } = renderHook(() => useDispatchAction(), { wrapper })
28
- expect(typeof result.current).toBe('function')
29
- })
30
-
31
- it('should dispatch action with correct payload', () => {
32
- const onAction = vi.fn()
33
- const wrapper = createWrapper(onAction)
34
-
35
- const { result } = renderHook(() => useDispatchAction(), { wrapper })
36
-
37
- const action: Action = {
38
- name: 'submit',
39
- context: [{ key: 'type', value: { literalString: 'form' } }],
40
- }
41
-
42
- act(() => {
43
- result.current('surface-1', 'button-1', action)
44
- })
45
-
46
- expect(onAction).toHaveBeenCalledWith({
47
- surfaceId: 'surface-1',
48
- name: 'submit',
49
- context: { type: 'form' },
50
- sourceComponentId: 'button-1',
51
- })
52
- })
53
-
54
- it('should dispatch action without context', () => {
55
- const onAction = vi.fn()
56
- const wrapper = createWrapper(onAction)
57
-
58
- const { result } = renderHook(() => useDispatchAction(), { wrapper })
59
-
60
- const action: Action = { name: 'cancel' }
61
-
62
- act(() => {
63
- result.current('surface-1', 'button-1', action)
64
- })
65
-
66
- expect(onAction).toHaveBeenCalledWith({
67
- surfaceId: 'surface-1',
68
- name: 'cancel',
69
- context: {},
70
- sourceComponentId: 'button-1',
71
- })
72
- })
73
-
74
- it('should throw error when used outside provider', () => {
75
- const consoleError = vi.spyOn(console, 'error').mockImplementation(() => {})
76
-
77
- expect(() => {
78
- renderHook(() => useDispatchAction())
79
- }).toThrow('useActionContext must be used within an ActionProvider')
80
-
81
- consoleError.mockRestore()
82
- })
83
- })
@@ -1,114 +0,0 @@
1
- /**
2
- * useSurface Tests
3
- *
4
- * Tests for the useSurface hook.
5
- */
6
-
7
- import { describe, it, expect, vi } from 'vitest'
8
- import { renderHook, act } from '@testing-library/react'
9
- import { useSurface } from './useSurface'
10
- import { SurfaceProvider, useSurfaceContext } from '../contexts/SurfaceContext'
11
- import type { ReactNode } from 'react'
12
-
13
- describe('useSurface', () => {
14
- // Helper to render hook with provider
15
- const wrapper = ({ children }: { children: ReactNode }) => (
16
- <SurfaceProvider>{children}</SurfaceProvider>
17
- )
18
-
19
- it('should return undefined for non-existent surface', () => {
20
- const { result } = renderHook(() => useSurface('non-existent'), { wrapper })
21
- expect(result.current).toBeUndefined()
22
- })
23
-
24
- it('should return surface when it exists', () => {
25
- // Custom wrapper that initializes a surface
26
- const TestWrapper = ({ children }: { children: ReactNode }) => (
27
- <SurfaceProvider>
28
- <SurfaceInitializer>{children}</SurfaceInitializer>
29
- </SurfaceProvider>
30
- )
31
-
32
- function SurfaceInitializer({ children }: { children: ReactNode }) {
33
- const { initSurface } = useSurfaceContext()
34
- React.useEffect(() => {
35
- initSurface('test-surface', 'root-component', { font: 'Arial' })
36
- }, [initSurface])
37
- return <>{children}</>
38
- }
39
-
40
- const { result } = renderHook(() => useSurface('test-surface'), {
41
- wrapper: TestWrapper,
42
- })
43
-
44
- expect(result.current).toBeDefined()
45
- expect(result.current?.surfaceId).toBe('test-surface')
46
- expect(result.current?.root).toBe('root-component')
47
- expect(result.current?.styles?.font).toBe('Arial')
48
- })
49
-
50
- it('should update when surface changes', () => {
51
- const { result } = renderHook(
52
- () => {
53
- const surface = useSurface('test-surface')
54
- const { initSurface, updateSurface } = useSurfaceContext()
55
- return { surface, initSurface, updateSurface }
56
- },
57
- { wrapper }
58
- )
59
-
60
- // Initially undefined
61
- expect(result.current.surface).toBeUndefined()
62
-
63
- // Initialize surface
64
- act(() => {
65
- result.current.initSurface('test-surface', 'root')
66
- })
67
-
68
- expect(result.current.surface).toBeDefined()
69
- expect(result.current.surface?.root).toBe('root')
70
-
71
- // Update surface with components
72
- act(() => {
73
- result.current.updateSurface('test-surface', [
74
- { id: 'comp-1', component: { Text: {} } },
75
- ])
76
- })
77
-
78
- expect(result.current.surface?.components.size).toBe(1)
79
- })
80
-
81
- it('should memoize result based on surfaceId', () => {
82
- const { result, rerender } = renderHook(
83
- ({ surfaceId }) => {
84
- const surface = useSurface(surfaceId)
85
- const { initSurface } = useSurfaceContext()
86
- return { surface, initSurface }
87
- },
88
- { wrapper, initialProps: { surfaceId: 'surface-1' } }
89
- )
90
-
91
- act(() => {
92
- result.current.initSurface('surface-1', 'root-1')
93
- result.current.initSurface('surface-2', 'root-2')
94
- })
95
-
96
- expect(result.current.surface?.root).toBe('root-1')
97
-
98
- // Change surfaceId
99
- rerender({ surfaceId: 'surface-2' })
100
- expect(result.current.surface?.root).toBe('root-2')
101
- })
102
-
103
- it('should throw error when used outside provider', () => {
104
- const consoleError = vi.spyOn(console, 'error').mockImplementation(() => {})
105
-
106
- expect(() => {
107
- renderHook(() => useSurface('test'))
108
- }).toThrow('useSurfaceContext must be used within a SurfaceProvider')
109
-
110
- consoleError.mockRestore()
111
- })
112
- })
113
-
114
- import React from 'react'
@@ -1,50 +0,0 @@
1
- {
2
- "title": "A2UI (Agent to UI) Client-to-Server Event Schema",
3
- "description": "Describes a JSON payload for a client-to-server event message.",
4
- "type": "object",
5
- "minProperties": 1,
6
- "maxProperties": 1,
7
- "properties": {
8
- "userAction": {
9
- "type": "object",
10
- "description": "Reports a user-initiated action from a component.",
11
- "properties": {
12
- "name": {
13
- "type": "string",
14
- "description": "The name of the action, taken from the component's action.name property."
15
- },
16
- "surfaceId": {
17
- "type": "string",
18
- "description": "The id of the surface where the event originated."
19
- },
20
- "sourceComponentId": {
21
- "type": "string",
22
- "description": "The id of the component that triggered the event."
23
- },
24
- "timestamp": {
25
- "type": "string",
26
- "format": "date-time",
27
- "description": "An ISO 8601 timestamp of when the event occurred."
28
- },
29
- "context": {
30
- "type": "object",
31
- "description": "A JSON object containing the key-value pairs from the component's action.context, after resolving all data bindings.",
32
- "additionalProperties": true
33
- }
34
- },
35
- "required": [
36
- "name",
37
- "surfaceId",
38
- "sourceComponentId",
39
- "timestamp",
40
- "context"
41
- ]
42
- },
43
- "error": {
44
- "type": "object",
45
- "description": "Reports a client-side error. The content is flexible.",
46
- "additionalProperties": true
47
- }
48
- },
49
- "oneOf": [{ "required": ["userAction"] }, { "required": ["error"] }]
50
- }