@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,443 +0,0 @@
1
- /**
2
- * dataBinding Tests
3
- *
4
- * Tests for data binding utility functions used in A2UI.
5
- */
6
-
7
- import { describe, it, expect } from 'vitest'
8
- import {
9
- resolveValue,
10
- isPathReference,
11
- getPath,
12
- contentsToObject,
13
- literalString,
14
- literalNumber,
15
- literalBoolean,
16
- pathRef,
17
- resolveActionContext,
18
- } from './dataBinding'
19
- import type { DataModel, ValueSource, DataEntry } from '../types'
20
-
21
- describe('dataBinding', () => {
22
- describe('resolveValue', () => {
23
- const testModel: DataModel = {
24
- user: {
25
- name: 'John',
26
- age: 30,
27
- active: true,
28
- },
29
- items: ['a', 'b', 'c'],
30
- count: 42,
31
- }
32
-
33
- describe('with undefined/null source', () => {
34
- it('should return default value when source is undefined', () => {
35
- expect(resolveValue(undefined, testModel, 'default')).toBe('default')
36
- })
37
-
38
- it('should return default value when source is null', () => {
39
- expect(
40
- resolveValue(null as unknown as ValueSource, testModel, 'default')
41
- ).toBe('default')
42
- })
43
-
44
- it('should return undefined when no default provided and source is undefined', () => {
45
- expect(resolveValue(undefined, testModel)).toBeUndefined()
46
- })
47
- })
48
-
49
- describe('with literal values', () => {
50
- it('should resolve literalString', () => {
51
- const source: ValueSource = { literalString: 'Hello' }
52
- expect(resolveValue<string>(source, testModel)).toBe('Hello')
53
- })
54
-
55
- it('should resolve empty literalString', () => {
56
- const source: ValueSource = { literalString: '' }
57
- expect(resolveValue<string>(source, testModel, 'default')).toBe('')
58
- })
59
-
60
- it('should resolve literalNumber', () => {
61
- const source: ValueSource = { literalNumber: 42 }
62
- expect(resolveValue<number>(source, testModel)).toBe(42)
63
- })
64
-
65
- it('should resolve zero literalNumber', () => {
66
- const source: ValueSource = { literalNumber: 0 }
67
- expect(resolveValue<number>(source, testModel, 99)).toBe(0)
68
- })
69
-
70
- it('should resolve negative literalNumber', () => {
71
- const source: ValueSource = { literalNumber: -10 }
72
- expect(resolveValue<number>(source, testModel)).toBe(-10)
73
- })
74
-
75
- it('should resolve literalBoolean true', () => {
76
- const source: ValueSource = { literalBoolean: true }
77
- expect(resolveValue<boolean>(source, testModel)).toBe(true)
78
- })
79
-
80
- it('should resolve literalBoolean false', () => {
81
- const source: ValueSource = { literalBoolean: false }
82
- expect(resolveValue<boolean>(source, testModel, true)).toBe(false)
83
- })
84
-
85
- it('should resolve literalArray', () => {
86
- const source: ValueSource = { literalArray: ['x', 'y', 'z'] }
87
- expect(resolveValue<string[]>(source, testModel)).toEqual([
88
- 'x',
89
- 'y',
90
- 'z',
91
- ])
92
- })
93
-
94
- it('should resolve empty literalArray', () => {
95
- const source: ValueSource = { literalArray: [] }
96
- expect(resolveValue<string[]>(source, testModel, ['default'])).toEqual(
97
- []
98
- )
99
- })
100
- })
101
-
102
- describe('with path references', () => {
103
- it('should resolve path to string value', () => {
104
- const source: ValueSource = { path: '/user/name' }
105
- expect(resolveValue<string>(source, testModel)).toBe('John')
106
- })
107
-
108
- it('should resolve path to number value', () => {
109
- const source: ValueSource = { path: '/count' }
110
- expect(resolveValue<number>(source, testModel)).toBe(42)
111
- })
112
-
113
- it('should resolve path to boolean value', () => {
114
- const source: ValueSource = { path: '/user/active' }
115
- expect(resolveValue<boolean>(source, testModel)).toBe(true)
116
- })
117
-
118
- it('should resolve path to nested object', () => {
119
- const source: ValueSource = { path: '/user' }
120
- expect(resolveValue(source, testModel)).toEqual({
121
- name: 'John',
122
- age: 30,
123
- active: true,
124
- })
125
- })
126
-
127
- it('should resolve path to array', () => {
128
- const source: ValueSource = { path: '/items' }
129
- expect(resolveValue<string[]>(source, testModel)).toEqual([
130
- 'a',
131
- 'b',
132
- 'c',
133
- ])
134
- })
135
-
136
- it('should return default when path not found', () => {
137
- const source: ValueSource = { path: '/nonexistent' }
138
- expect(resolveValue<string>(source, testModel, 'default')).toBe(
139
- 'default'
140
- )
141
- })
142
-
143
- it('should return undefined when path not found and no default', () => {
144
- const source: ValueSource = { path: '/nonexistent' }
145
- expect(resolveValue(source, testModel)).toBeUndefined()
146
- })
147
-
148
- it('should handle empty data model', () => {
149
- const source: ValueSource = { path: '/user/name' }
150
- expect(resolveValue<string>(source, {}, 'default')).toBe('default')
151
- })
152
- })
153
-
154
- describe('with unknown source structure', () => {
155
- it('should return default value for unknown source structure', () => {
156
- const source = { unknown: 'value' } as unknown as ValueSource
157
- expect(resolveValue(source, testModel, 'default')).toBe('default')
158
- })
159
- })
160
- })
161
-
162
- describe('isPathReference', () => {
163
- it('should return true for path reference', () => {
164
- expect(isPathReference({ path: '/user/name' })).toBe(true)
165
- })
166
-
167
- it('should return false for literalString', () => {
168
- expect(isPathReference({ literalString: 'Hello' })).toBe(false)
169
- })
170
-
171
- it('should return false for literalNumber', () => {
172
- expect(isPathReference({ literalNumber: 42 })).toBe(false)
173
- })
174
-
175
- it('should return false for literalBoolean', () => {
176
- expect(isPathReference({ literalBoolean: true })).toBe(false)
177
- })
178
-
179
- it('should return false for literalArray', () => {
180
- expect(isPathReference({ literalArray: ['a', 'b'] })).toBe(false)
181
- })
182
-
183
- it('should return false for undefined', () => {
184
- expect(isPathReference(undefined)).toBe(false)
185
- })
186
-
187
- it('should return false for null', () => {
188
- expect(isPathReference(null as unknown as ValueSource)).toBe(false)
189
- })
190
- })
191
-
192
- describe('getPath', () => {
193
- it('should return path from path reference', () => {
194
- expect(getPath({ path: '/user/name' })).toBe('/user/name')
195
- })
196
-
197
- it('should return undefined for literalString', () => {
198
- expect(getPath({ literalString: 'Hello' })).toBeUndefined()
199
- })
200
-
201
- it('should return undefined for literalNumber', () => {
202
- expect(getPath({ literalNumber: 42 })).toBeUndefined()
203
- })
204
-
205
- it('should return undefined for literalBoolean', () => {
206
- expect(getPath({ literalBoolean: true })).toBeUndefined()
207
- })
208
-
209
- it('should return undefined for literalArray', () => {
210
- expect(getPath({ literalArray: ['a'] })).toBeUndefined()
211
- })
212
-
213
- it('should return undefined for undefined source', () => {
214
- expect(getPath(undefined)).toBeUndefined()
215
- })
216
- })
217
-
218
- describe('contentsToObject', () => {
219
- it('should convert string entry', () => {
220
- const contents: DataEntry[] = [{ key: 'name', valueString: 'John' }]
221
- expect(contentsToObject(contents)).toEqual({ name: 'John' })
222
- })
223
-
224
- it('should convert number entry', () => {
225
- const contents: DataEntry[] = [{ key: 'age', valueNumber: 30 }]
226
- expect(contentsToObject(contents)).toEqual({ age: 30 })
227
- })
228
-
229
- it('should convert boolean entry', () => {
230
- const contents: DataEntry[] = [{ key: 'active', valueBoolean: true }]
231
- expect(contentsToObject(contents)).toEqual({ active: true })
232
- })
233
-
234
- it('should convert false boolean entry', () => {
235
- const contents: DataEntry[] = [{ key: 'active', valueBoolean: false }]
236
- expect(contentsToObject(contents)).toEqual({ active: false })
237
- })
238
-
239
- it('should convert zero number entry', () => {
240
- const contents: DataEntry[] = [{ key: 'count', valueNumber: 0 }]
241
- expect(contentsToObject(contents)).toEqual({ count: 0 })
242
- })
243
-
244
- it('should convert empty string entry', () => {
245
- const contents: DataEntry[] = [{ key: 'name', valueString: '' }]
246
- expect(contentsToObject(contents)).toEqual({ name: '' })
247
- })
248
-
249
- it('should convert nested map entry', () => {
250
- const contents: DataEntry[] = [
251
- {
252
- key: 'user',
253
- valueMap: [
254
- { key: 'name', valueString: 'John' },
255
- { key: 'age', valueNumber: 30 },
256
- ],
257
- },
258
- ]
259
- expect(contentsToObject(contents)).toEqual({
260
- user: { name: 'John', age: 30 },
261
- })
262
- })
263
-
264
- it('should convert deeply nested map entry', () => {
265
- const contents: DataEntry[] = [
266
- {
267
- key: 'user',
268
- valueMap: [
269
- {
270
- key: 'profile',
271
- valueMap: [{ key: 'email', valueString: 'john@example.com' }],
272
- },
273
- ],
274
- },
275
- ]
276
- expect(contentsToObject(contents)).toEqual({
277
- user: { profile: { email: 'john@example.com' } },
278
- })
279
- })
280
-
281
- it('should convert multiple entries', () => {
282
- const contents: DataEntry[] = [
283
- { key: 'name', valueString: 'John' },
284
- { key: 'age', valueNumber: 30 },
285
- { key: 'active', valueBoolean: true },
286
- ]
287
- expect(contentsToObject(contents)).toEqual({
288
- name: 'John',
289
- age: 30,
290
- active: true,
291
- })
292
- })
293
-
294
- it('should normalize path keys to last segment', () => {
295
- const contents: DataEntry[] = [
296
- { key: '/form/name', valueString: 'John' },
297
- { key: '/form/age', valueNumber: 30 },
298
- ]
299
- expect(contentsToObject(contents)).toEqual({
300
- name: 'John',
301
- age: 30,
302
- })
303
- })
304
-
305
- it('should handle empty contents array', () => {
306
- expect(contentsToObject([])).toEqual({})
307
- })
308
-
309
- it('should handle entry with no value type', () => {
310
- const contents: DataEntry[] = [{ key: 'empty' }]
311
- expect(contentsToObject(contents)).toEqual({})
312
- })
313
- })
314
-
315
- describe('literal factory functions', () => {
316
- describe('literalString', () => {
317
- it('should create literalString value source', () => {
318
- expect(literalString('Hello')).toEqual({ literalString: 'Hello' })
319
- })
320
-
321
- it('should create empty literalString', () => {
322
- expect(literalString('')).toEqual({ literalString: '' })
323
- })
324
- })
325
-
326
- describe('literalNumber', () => {
327
- it('should create literalNumber value source', () => {
328
- expect(literalNumber(42)).toEqual({ literalNumber: 42 })
329
- })
330
-
331
- it('should create zero literalNumber', () => {
332
- expect(literalNumber(0)).toEqual({ literalNumber: 0 })
333
- })
334
-
335
- it('should create negative literalNumber', () => {
336
- expect(literalNumber(-10)).toEqual({ literalNumber: -10 })
337
- })
338
-
339
- it('should create float literalNumber', () => {
340
- expect(literalNumber(3.14)).toEqual({ literalNumber: 3.14 })
341
- })
342
- })
343
-
344
- describe('literalBoolean', () => {
345
- it('should create true literalBoolean', () => {
346
- expect(literalBoolean(true)).toEqual({ literalBoolean: true })
347
- })
348
-
349
- it('should create false literalBoolean', () => {
350
- expect(literalBoolean(false)).toEqual({ literalBoolean: false })
351
- })
352
- })
353
-
354
- describe('pathRef', () => {
355
- it('should create path reference', () => {
356
- expect(pathRef('/user/name')).toEqual({ path: '/user/name' })
357
- })
358
-
359
- it('should create root path reference', () => {
360
- expect(pathRef('/')).toEqual({ path: '/' })
361
- })
362
-
363
- it('should create path without leading slash', () => {
364
- expect(pathRef('user/name')).toEqual({ path: 'user/name' })
365
- })
366
- })
367
- })
368
-
369
- describe('resolveActionContext', () => {
370
- const testModel: DataModel = {
371
- user: {
372
- name: 'John',
373
- age: 30,
374
- },
375
- selectedId: 'item-123',
376
- }
377
-
378
- it('should return empty object for undefined context', () => {
379
- expect(resolveActionContext(undefined, testModel)).toEqual({})
380
- })
381
-
382
- it('should return empty object for empty context array', () => {
383
- expect(resolveActionContext([], testModel)).toEqual({})
384
- })
385
-
386
- it('should resolve literalString values', () => {
387
- const context = [{ key: 'action', value: { literalString: 'submit' } }]
388
- expect(resolveActionContext(context, testModel)).toEqual({
389
- action: 'submit',
390
- })
391
- })
392
-
393
- it('should resolve literalNumber values', () => {
394
- const context = [{ key: 'count', value: { literalNumber: 5 } }]
395
- expect(resolveActionContext(context, testModel)).toEqual({ count: 5 })
396
- })
397
-
398
- it('should resolve literalBoolean values', () => {
399
- const context = [{ key: 'confirmed', value: { literalBoolean: true } }]
400
- expect(resolveActionContext(context, testModel)).toEqual({
401
- confirmed: true,
402
- })
403
- })
404
-
405
- it('should resolve path references', () => {
406
- const context = [{ key: 'userName', value: { path: '/user/name' } }]
407
- expect(resolveActionContext(context, testModel)).toEqual({
408
- userName: 'John',
409
- })
410
- })
411
-
412
- it('should resolve multiple context items', () => {
413
- const context = [
414
- { key: 'action', value: { literalString: 'update' } },
415
- { key: 'userId', value: { path: '/selectedId' } },
416
- { key: 'confirmed', value: { literalBoolean: true } },
417
- ]
418
- expect(resolveActionContext(context, testModel)).toEqual({
419
- action: 'update',
420
- userId: 'item-123',
421
- confirmed: true,
422
- })
423
- })
424
-
425
- it('should return undefined for non-existent path', () => {
426
- const context = [{ key: 'missing', value: { path: '/nonexistent' } }]
427
- expect(resolveActionContext(context, testModel)).toEqual({
428
- missing: undefined,
429
- })
430
- })
431
-
432
- it('should resolve nested path references', () => {
433
- const context = [
434
- { key: 'name', value: { path: '/user/name' } },
435
- { key: 'age', value: { path: '/user/age' } },
436
- ]
437
- expect(resolveActionContext(context, testModel)).toEqual({
438
- name: 'John',
439
- age: 30,
440
- })
441
- })
442
- })
443
- })
@@ -1,212 +0,0 @@
1
- /**
2
- * Data binding utility functions for A2UI.
3
- * Handles resolving value sources and converting data entries.
4
- */
5
-
6
- import type {
7
- ValueSource,
8
- DataModel,
9
- DataEntry,
10
- DataModelValue,
11
- } from '../types'
12
- import { getValueByPath } from './pathUtils'
13
-
14
- /**
15
- * Resolves a ValueSource to its actual value.
16
- *
17
- * @param source - The value source (literal or path reference)
18
- * @param dataModel - The data model for path lookups
19
- * @param defaultValue - Default value if source is undefined or path not found
20
- * @returns The resolved value
21
- *
22
- * @example
23
- * // Literal values
24
- * resolveValue({ literalString: "Hello" }, {}); // "Hello"
25
- * resolveValue({ literalNumber: 42 }, {}); // 42
26
- *
27
- * // Path references
28
- * const model = { user: { name: "John" } };
29
- * resolveValue({ path: "/user/name" }, model); // "John"
30
- * resolveValue({ path: "/user/age" }, model, 0); // 0 (default)
31
- */
32
- export function resolveValue<T = unknown>(
33
- source: ValueSource | undefined,
34
- dataModel: DataModel,
35
- defaultValue?: T
36
- ): T {
37
- if (source === undefined || source === null) {
38
- return defaultValue as T
39
- }
40
-
41
- if ('literalString' in source) {
42
- return source.literalString as T
43
- }
44
-
45
- if ('literalNumber' in source) {
46
- return source.literalNumber as T
47
- }
48
-
49
- if ('literalBoolean' in source) {
50
- return source.literalBoolean as T
51
- }
52
-
53
- if ('literalArray' in source) {
54
- return source.literalArray as T
55
- }
56
-
57
- if ('path' in source) {
58
- const value = getValueByPath(dataModel, source.path)
59
- if (value === undefined) {
60
- return defaultValue as T
61
- }
62
- return value as T
63
- }
64
-
65
- return defaultValue as T
66
- }
67
-
68
- /**
69
- * Checks if a value source is a path reference.
70
- *
71
- * @param source - The value source to check
72
- * @returns True if the source is a path reference
73
- */
74
- export function isPathReference(
75
- source: ValueSource | undefined
76
- ): source is { path: string } {
77
- return source !== undefined && source !== null && 'path' in source
78
- }
79
-
80
- /**
81
- * Gets the path from a value source, or undefined if it's not a path reference.
82
- *
83
- * @param source - The value source
84
- * @returns The path string or undefined
85
- */
86
- export function getPath(source: ValueSource | undefined): string | undefined {
87
- if (isPathReference(source)) {
88
- return source.path
89
- }
90
- return undefined
91
- }
92
-
93
- /**
94
- * Converts a DataEntry array to a plain object.
95
- * This is used for processing dataModelUpdate message contents.
96
- *
97
- * @param contents - Array of data entries from the server
98
- * @returns A plain object with the converted values
99
- *
100
- * @example
101
- * contentsToObject([
102
- * { key: "name", valueString: "John" },
103
- * { key: "age", valueNumber: 30 },
104
- * { key: "active", valueBoolean: true },
105
- * { key: "profile", valueMap: [
106
- * { key: "email", valueString: "john@example.com" }
107
- * ]}
108
- * ]);
109
- * // Returns: { name: "John", age: 30, active: true, profile: { email: "john@example.com" } }
110
- */
111
- export function contentsToObject(
112
- contents: DataEntry[]
113
- ): Record<string, DataModelValue> {
114
- const result: Record<string, DataModelValue> = {}
115
-
116
- for (const entry of contents) {
117
- const key = normalizeKey(entry.key)
118
-
119
- if (entry.valueString !== undefined) {
120
- result[key] = entry.valueString
121
- } else if (entry.valueNumber !== undefined) {
122
- result[key] = entry.valueNumber
123
- } else if (entry.valueBoolean !== undefined) {
124
- result[key] = entry.valueBoolean
125
- } else if (entry.valueMap !== undefined) {
126
- result[key] = contentsToObject(entry.valueMap)
127
- }
128
- }
129
-
130
- return result
131
- }
132
-
133
- /**
134
- * Normalizes a key from the data entry format.
135
- * Keys can come as "/form/name" or just "name".
136
- *
137
- * @param key - The key to normalize
138
- * @returns The normalized key (last segment)
139
- */
140
- function normalizeKey(key: string): string {
141
- // If key contains path separators, take the last segment
142
- if (key.includes('/')) {
143
- const segments = key.split('/').filter(Boolean)
144
- return segments[segments.length - 1] || key
145
- }
146
- return key
147
- }
148
-
149
- /**
150
- * Creates a literal string value source.
151
- *
152
- * @param value - The string value
153
- * @returns A ValueSource with literalString
154
- */
155
- export function literalString(value: string): ValueSource {
156
- return { literalString: value }
157
- }
158
-
159
- /**
160
- * Creates a literal number value source.
161
- *
162
- * @param value - The number value
163
- * @returns A ValueSource with literalNumber
164
- */
165
- export function literalNumber(value: number): ValueSource {
166
- return { literalNumber: value }
167
- }
168
-
169
- /**
170
- * Creates a literal boolean value source.
171
- *
172
- * @param value - The boolean value
173
- * @returns A ValueSource with literalBoolean
174
- */
175
- export function literalBoolean(value: boolean): ValueSource {
176
- return { literalBoolean: value }
177
- }
178
-
179
- /**
180
- * Creates a path reference value source.
181
- *
182
- * @param path - The data model path
183
- * @returns A ValueSource with path
184
- */
185
- export function pathRef(path: string): ValueSource {
186
- return { path }
187
- }
188
-
189
- /**
190
- * Resolves action context items to a plain object.
191
- * This is used when dispatching actions to resolve all context values.
192
- *
193
- * @param context - Array of action context items
194
- * @param dataModel - The data model for path lookups
195
- * @returns A plain object with resolved context values
196
- */
197
- export function resolveActionContext(
198
- context: Array<{ key: string; value: ValueSource }> | undefined,
199
- dataModel: DataModel
200
- ): Record<string, unknown> {
201
- if (!context) {
202
- return {}
203
- }
204
-
205
- const result: Record<string, unknown> = {}
206
-
207
- for (const item of context) {
208
- result[item.key] = resolveValue(item.value, dataModel)
209
- }
210
-
211
- return result
212
- }