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