@assistant-ui/react-generative-ui 0.0.23 → 0.1.0

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 (338) hide show
  1. package/README.md +2 -0
  2. package/dist/a2ui.d.ts +1 -4
  3. package/dist/a2ui.d.ts.map +1 -1
  4. package/dist/a2ui.js +1 -4
  5. package/dist/index.d.ts +1 -2
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -10
  8. package/dist/index.server.d.ts +1 -2
  9. package/dist/index.server.d.ts.map +1 -1
  10. package/dist/index.server.js +1 -10
  11. package/dist/ir.d.ts +1 -111
  12. package/dist/ir.d.ts.map +1 -1
  13. package/dist/ir.js +1 -175
  14. package/dist/slack.d.ts +1 -4
  15. package/dist/slack.d.ts.map +1 -1
  16. package/dist/slack.js +1 -4
  17. package/dist/teams.d.ts +1 -4
  18. package/dist/teams.d.ts.map +1 -1
  19. package/dist/teams.js +1 -4
  20. package/package.json +5 -5
  21. package/src/a2ui.ts +1 -22
  22. package/src/index.server.ts +1 -2
  23. package/src/index.test.ts +75 -0
  24. package/src/index.ts +1 -2
  25. package/src/ir.ts +1 -279
  26. package/src/slack.ts +1 -39
  27. package/src/teams.ts +1 -35
  28. package/dist/JSONGenerativeUI.client.d.ts +0 -28
  29. package/dist/JSONGenerativeUI.client.d.ts.map +0 -1
  30. package/dist/JSONGenerativeUI.client.js +0 -101
  31. package/dist/JSONGenerativeUI.client.js.map +0 -1
  32. package/dist/JSONGenerativeUI.server.d.ts +0 -21
  33. package/dist/JSONGenerativeUI.server.d.ts.map +0 -1
  34. package/dist/JSONGenerativeUI.server.js +0 -32
  35. package/dist/JSONGenerativeUI.server.js.map +0 -1
  36. package/dist/JSONGenerativeUI.shared.d.ts +0 -63
  37. package/dist/JSONGenerativeUI.shared.d.ts.map +0 -1
  38. package/dist/JSONGenerativeUI.shared.js +0 -31
  39. package/dist/JSONGenerativeUI.shared.js.map +0 -1
  40. package/dist/RadioGroupScope.d.ts +0 -6
  41. package/dist/RadioGroupScope.d.ts.map +0 -1
  42. package/dist/RadioGroupScope.js +0 -25
  43. package/dist/RadioGroupScope.js.map +0 -1
  44. package/dist/a2ui/BindingContext.d.ts +0 -11
  45. package/dist/a2ui/BindingContext.d.ts.map +0 -1
  46. package/dist/a2ui/BindingContext.js +0 -12
  47. package/dist/a2ui/BindingContext.js.map +0 -1
  48. package/dist/a2ui/PresentRenderer.d.ts +0 -11
  49. package/dist/a2ui/PresentRenderer.d.ts.map +0 -1
  50. package/dist/a2ui/PresentRenderer.js +0 -39
  51. package/dist/a2ui/PresentRenderer.js.map +0 -1
  52. package/dist/a2ui/convert.d.ts +0 -15
  53. package/dist/a2ui/convert.d.ts.map +0 -1
  54. package/dist/a2ui/convert.js +0 -728
  55. package/dist/a2ui/convert.js.map +0 -1
  56. package/dist/a2ui/dataModel.d.ts +0 -9
  57. package/dist/a2ui/dataModel.d.ts.map +0 -1
  58. package/dist/a2ui/dataModel.js +0 -44
  59. package/dist/a2ui/dataModel.js.map +0 -1
  60. package/dist/a2ui/reducer.d.ts +0 -8
  61. package/dist/a2ui/reducer.d.ts.map +0 -1
  62. package/dist/a2ui/reducer.js +0 -242
  63. package/dist/a2ui/reducer.js.map +0 -1
  64. package/dist/a2ui/snapshot.d.ts +0 -3
  65. package/dist/a2ui/snapshot.d.ts.map +0 -1
  66. package/dist/a2ui/snapshot.js +0 -33
  67. package/dist/a2ui/snapshot.js.map +0 -1
  68. package/dist/a2ui/types.d.ts +0 -88
  69. package/dist/a2ui/types.d.ts.map +0 -1
  70. package/dist/a2ui/types.js +0 -6
  71. package/dist/a2ui/types.js.map +0 -1
  72. package/dist/a2ui/valueFunctions.d.ts +0 -16
  73. package/dist/a2ui/valueFunctions.d.ts.map +0 -1
  74. package/dist/a2ui/valueFunctions.js +0 -332
  75. package/dist/a2ui/valueFunctions.js.map +0 -1
  76. package/dist/actionRegistry.d.ts +0 -29
  77. package/dist/actionRegistry.d.ts.map +0 -1
  78. package/dist/actionRegistry.js +0 -41
  79. package/dist/actionRegistry.js.map +0 -1
  80. package/dist/answeredValues.d.ts +0 -16
  81. package/dist/answeredValues.d.ts.map +0 -1
  82. package/dist/answeredValues.js +0 -37
  83. package/dist/answeredValues.js.map +0 -1
  84. package/dist/buildPresentParameters.d.ts +0 -21
  85. package/dist/buildPresentParameters.d.ts.map +0 -1
  86. package/dist/buildPresentParameters.js +0 -95
  87. package/dist/buildPresentParameters.js.map +0 -1
  88. package/dist/constants.d.ts +0 -15
  89. package/dist/constants.d.ts.map +0 -1
  90. package/dist/constants.js +0 -19
  91. package/dist/constants.js.map +0 -1
  92. package/dist/convert/boundSpec.d.ts +0 -48
  93. package/dist/convert/boundSpec.d.ts.map +0 -1
  94. package/dist/convert/boundSpec.js +0 -108
  95. package/dist/convert/boundSpec.js.map +0 -1
  96. package/dist/convert/copyBounded.d.ts +0 -25
  97. package/dist/convert/copyBounded.d.ts.map +0 -1
  98. package/dist/convert/copyBounded.js +0 -38
  99. package/dist/convert/copyBounded.js.map +0 -1
  100. package/dist/convert/isElement.d.ts +0 -3
  101. package/dist/convert/isElement.d.ts.map +0 -1
  102. package/dist/convert/isElement.js +0 -6
  103. package/dist/convert/isElement.js.map +0 -1
  104. package/dist/convert/takeRun.d.ts +0 -6
  105. package/dist/convert/takeRun.d.ts.map +0 -1
  106. package/dist/convert/takeRun.js +0 -20
  107. package/dist/convert/takeRun.js.map +0 -1
  108. package/dist/defineGenerativeComponents.d.ts +0 -29
  109. package/dist/defineGenerativeComponents.d.ts.map +0 -1
  110. package/dist/defineGenerativeComponents.js +0 -34
  111. package/dist/defineGenerativeComponents.js.map +0 -1
  112. package/dist/fieldReferences.d.ts +0 -9
  113. package/dist/fieldReferences.d.ts.map +0 -1
  114. package/dist/fieldReferences.js +0 -53
  115. package/dist/fieldReferences.js.map +0 -1
  116. package/dist/generativeUIToJSX.d.ts +0 -18
  117. package/dist/generativeUIToJSX.d.ts.map +0 -1
  118. package/dist/generativeUIToJSX.js +0 -76
  119. package/dist/generativeUIToJSX.js.map +0 -1
  120. package/dist/index.shared.d.ts +0 -15
  121. package/dist/index.shared.d.ts.map +0 -1
  122. package/dist/index.shared.js +0 -9
  123. package/dist/ir.js.map +0 -1
  124. package/dist/renderGenerativeUI.d.ts +0 -14
  125. package/dist/renderGenerativeUI.d.ts.map +0 -1
  126. package/dist/renderGenerativeUI.js +0 -83
  127. package/dist/renderGenerativeUI.js.map +0 -1
  128. package/dist/scopeSchema.d.ts +0 -6
  129. package/dist/scopeSchema.d.ts.map +0 -1
  130. package/dist/scopeSchema.js +0 -56
  131. package/dist/scopeSchema.js.map +0 -1
  132. package/dist/slack/constants.d.ts +0 -93
  133. package/dist/slack/constants.d.ts.map +0 -1
  134. package/dist/slack/constants.js +0 -146
  135. package/dist/slack/constants.js.map +0 -1
  136. package/dist/slack/decodeBlockAction.d.ts +0 -10
  137. package/dist/slack/decodeBlockAction.d.ts.map +0 -1
  138. package/dist/slack/decodeBlockAction.js +0 -129
  139. package/dist/slack/decodeBlockAction.js.map +0 -1
  140. package/dist/slack/fromSlackBlocks.d.ts +0 -27
  141. package/dist/slack/fromSlackBlocks.d.ts.map +0 -1
  142. package/dist/slack/fromSlackBlocks.js +0 -483
  143. package/dist/slack/fromSlackBlocks.js.map +0 -1
  144. package/dist/slack/toSlackBlocks.d.ts +0 -4
  145. package/dist/slack/toSlackBlocks.d.ts.map +0 -1
  146. package/dist/slack/toSlackBlocks.js +0 -901
  147. package/dist/slack/toSlackBlocks.js.map +0 -1
  148. package/dist/slack/types.d.ts +0 -204
  149. package/dist/slack/types.d.ts.map +0 -1
  150. package/dist/slack/types.js +0 -0
  151. package/dist/teams/constants.d.ts +0 -34
  152. package/dist/teams/constants.d.ts.map +0 -1
  153. package/dist/teams/constants.js +0 -68
  154. package/dist/teams/constants.js.map +0 -1
  155. package/dist/teams/decodeSubmitData.d.ts +0 -26
  156. package/dist/teams/decodeSubmitData.d.ts.map +0 -1
  157. package/dist/teams/decodeSubmitData.js +0 -70
  158. package/dist/teams/decodeSubmitData.js.map +0 -1
  159. package/dist/teams/temporalId.d.ts +0 -5
  160. package/dist/teams/temporalId.d.ts.map +0 -1
  161. package/dist/teams/temporalId.js +0 -28
  162. package/dist/teams/temporalId.js.map +0 -1
  163. package/dist/teams/toAdaptiveCard.d.ts +0 -45
  164. package/dist/teams/toAdaptiveCard.d.ts.map +0 -1
  165. package/dist/teams/toAdaptiveCard.js +0 -642
  166. package/dist/teams/toAdaptiveCard.js.map +0 -1
  167. package/dist/teams/toTeamsAttachments.d.ts +0 -10
  168. package/dist/teams/toTeamsAttachments.d.ts.map +0 -1
  169. package/dist/teams/toTeamsAttachments.js +0 -99
  170. package/dist/teams/toTeamsAttachments.js.map +0 -1
  171. package/dist/teams/types.d.ts +0 -224
  172. package/dist/teams/types.d.ts.map +0 -1
  173. package/dist/teams/types.js +0 -0
  174. package/dist/temporal.d.ts +0 -33
  175. package/dist/temporal.d.ts.map +0 -1
  176. package/dist/temporal.js +0 -152
  177. package/dist/temporal.js.map +0 -1
  178. package/dist/types.d.ts +0 -99
  179. package/dist/types.d.ts.map +0 -1
  180. package/dist/types.js +0 -0
  181. package/dist/vocabulary/alert.d.ts +0 -32
  182. package/dist/vocabulary/alert.d.ts.map +0 -1
  183. package/dist/vocabulary/alert.js +0 -160
  184. package/dist/vocabulary/alert.js.map +0 -1
  185. package/dist/vocabulary/collectFormValues.d.ts +0 -23
  186. package/dist/vocabulary/collectFormValues.d.ts.map +0 -1
  187. package/dist/vocabulary/collectFormValues.js +0 -44
  188. package/dist/vocabulary/collectFormValues.js.map +0 -1
  189. package/dist/vocabulary/data.d.ts +0 -66
  190. package/dist/vocabulary/data.d.ts.map +0 -1
  191. package/dist/vocabulary/data.js +0 -503
  192. package/dist/vocabulary/data.js.map +0 -1
  193. package/dist/vocabulary/dispatch.d.ts +0 -9
  194. package/dist/vocabulary/dispatch.d.ts.map +0 -1
  195. package/dist/vocabulary/dispatch.js +0 -50
  196. package/dist/vocabulary/dispatch.js.map +0 -1
  197. package/dist/vocabulary/fact.d.ts +0 -19
  198. package/dist/vocabulary/fact.d.ts.map +0 -1
  199. package/dist/vocabulary/fact.js +0 -51
  200. package/dist/vocabulary/fact.js.map +0 -1
  201. package/dist/vocabulary/form.d.ts +0 -11
  202. package/dist/vocabulary/form.d.ts.map +0 -1
  203. package/dist/vocabulary/form.js +0 -23
  204. package/dist/vocabulary/form.js.map +0 -1
  205. package/dist/vocabulary/formatValue.d.ts +0 -7
  206. package/dist/vocabulary/formatValue.d.ts.map +0 -1
  207. package/dist/vocabulary/formatValue.js +0 -76
  208. package/dist/vocabulary/formatValue.js.map +0 -1
  209. package/dist/vocabulary/icon.d.ts +0 -41
  210. package/dist/vocabulary/icon.d.ts.map +0 -1
  211. package/dist/vocabulary/icon.js +0 -272
  212. package/dist/vocabulary/icon.js.map +0 -1
  213. package/dist/vocabulary/index.d.ts +0 -12
  214. package/dist/vocabulary/index.d.ts.map +0 -1
  215. package/dist/vocabulary/index.js +0 -36
  216. package/dist/vocabulary/index.js.map +0 -1
  217. package/dist/vocabulary/interactive.d.ts +0 -230
  218. package/dist/vocabulary/interactive.d.ts.map +0 -1
  219. package/dist/vocabulary/interactive.js +0 -530
  220. package/dist/vocabulary/interactive.js.map +0 -1
  221. package/dist/vocabulary/layout.d.ts +0 -79
  222. package/dist/vocabulary/layout.d.ts.map +0 -1
  223. package/dist/vocabulary/layout.js +0 -139
  224. package/dist/vocabulary/layout.js.map +0 -1
  225. package/dist/vocabulary/list.d.ts +0 -14
  226. package/dist/vocabulary/list.d.ts.map +0 -1
  227. package/dist/vocabulary/list.js +0 -50
  228. package/dist/vocabulary/list.js.map +0 -1
  229. package/dist/vocabulary/media.d.ts +0 -25
  230. package/dist/vocabulary/media.d.ts.map +0 -1
  231. package/dist/vocabulary/media.js +0 -42
  232. package/dist/vocabulary/media.js.map +0 -1
  233. package/dist/vocabulary/text.d.ts +0 -57
  234. package/dist/vocabulary/text.d.ts.map +0 -1
  235. package/dist/vocabulary/text.js +0 -49
  236. package/dist/vocabulary/text.js.map +0 -1
  237. package/dist/vocabulary/toTextContent.d.ts +0 -2
  238. package/dist/vocabulary/toTextContent.d.ts.map +0 -1
  239. package/dist/vocabulary/toTextContent.js +0 -6
  240. package/dist/vocabulary/toTextContent.js.map +0 -1
  241. package/src/JSONGenerativeUI.client.tsx +0 -168
  242. package/src/JSONGenerativeUI.server.tsx +0 -39
  243. package/src/JSONGenerativeUI.shared.ts +0 -90
  244. package/src/JSONGenerativeUI.test.tsx +0 -1298
  245. package/src/RadioGroupScope.server.test.tsx +0 -24
  246. package/src/RadioGroupScope.tsx +0 -34
  247. package/src/a2ui/BindingContext.ts +0 -26
  248. package/src/a2ui/PresentRenderer.tsx +0 -83
  249. package/src/a2ui/convert.test.ts +0 -2923
  250. package/src/a2ui/convert.ts +0 -1207
  251. package/src/a2ui/dataModel.ts +0 -69
  252. package/src/a2ui/reducer.test.ts +0 -422
  253. package/src/a2ui/reducer.ts +0 -363
  254. package/src/a2ui/snapshot.test.ts +0 -52
  255. package/src/a2ui/snapshot.ts +0 -52
  256. package/src/a2ui/types.ts +0 -114
  257. package/src/a2ui/valueFunctions.test.ts +0 -271
  258. package/src/a2ui/valueFunctions.ts +0 -523
  259. package/src/actionRegistry.test.ts +0 -90
  260. package/src/actionRegistry.ts +0 -88
  261. package/src/answeredValues.test.ts +0 -33
  262. package/src/answeredValues.tsx +0 -70
  263. package/src/buildPresentParameters.test.ts +0 -246
  264. package/src/buildPresentParameters.ts +0 -130
  265. package/src/constants.ts +0 -17
  266. package/src/convert/boundSpec.test.ts +0 -192
  267. package/src/convert/boundSpec.ts +0 -134
  268. package/src/convert/copyBounded.test.ts +0 -131
  269. package/src/convert/copyBounded.ts +0 -38
  270. package/src/convert/isElement.ts +0 -6
  271. package/src/convert/takeRun.test.ts +0 -64
  272. package/src/convert/takeRun.ts +0 -19
  273. package/src/defineGenerativeComponents.ts +0 -38
  274. package/src/fieldReferences.test.ts +0 -66
  275. package/src/fieldReferences.ts +0 -83
  276. package/src/generativeUIToJSX.test.ts +0 -268
  277. package/src/generativeUIToJSX.ts +0 -152
  278. package/src/index.server.test.ts +0 -106
  279. package/src/index.shared.ts +0 -61
  280. package/src/ir.test.ts +0 -203
  281. package/src/renderGenerativeUI.test.tsx +0 -373
  282. package/src/renderGenerativeUI.tsx +0 -165
  283. package/src/scopeSchema.test.ts +0 -72
  284. package/src/scopeSchema.ts +0 -71
  285. package/src/slack/a2uiSlack.test.ts +0 -198
  286. package/src/slack/constants.ts +0 -194
  287. package/src/slack/datePicker.test.ts +0 -612
  288. package/src/slack/decodeBlockAction.test.ts +0 -233
  289. package/src/slack/decodeBlockAction.ts +0 -232
  290. package/src/slack/fromSlackBlocks.test.ts +0 -1465
  291. package/src/slack/fromSlackBlocks.ts +0 -789
  292. package/src/slack/toSlackBlocks.test.ts +0 -3065
  293. package/src/slack/toSlackBlocks.ts +0 -1818
  294. package/src/slack/types.ts +0 -264
  295. package/src/teams/constants.ts +0 -93
  296. package/src/teams/decodeSubmitData.test.ts +0 -397
  297. package/src/teams/decodeSubmitData.ts +0 -110
  298. package/src/teams/temporal.test.ts +0 -766
  299. package/src/teams/temporalId.ts +0 -56
  300. package/src/teams/toAdaptiveCard.test.ts +0 -1897
  301. package/src/teams/toAdaptiveCard.ts +0 -1057
  302. package/src/teams/toTeamsAttachments.test.ts +0 -74
  303. package/src/teams/toTeamsAttachments.ts +0 -133
  304. package/src/teams/types.ts +0 -266
  305. package/src/temporal.test.ts +0 -319
  306. package/src/temporal.ts +0 -259
  307. package/src/types.ts +0 -119
  308. package/src/vocabulary/alert.test.tsx +0 -427
  309. package/src/vocabulary/alert.tsx +0 -217
  310. package/src/vocabulary/collectFormValues.test.ts +0 -389
  311. package/src/vocabulary/collectFormValues.ts +0 -116
  312. package/src/vocabulary/data.test.tsx +0 -858
  313. package/src/vocabulary/data.tsx +0 -819
  314. package/src/vocabulary/datepicker.dom.test.tsx +0 -1148
  315. package/src/vocabulary/dispatch.ts +0 -83
  316. package/src/vocabulary/fact.test.tsx +0 -94
  317. package/src/vocabulary/fact.tsx +0 -54
  318. package/src/vocabulary/form.test.tsx +0 -113
  319. package/src/vocabulary/form.tsx +0 -39
  320. package/src/vocabulary/formatValue.test.ts +0 -72
  321. package/src/vocabulary/formatValue.ts +0 -127
  322. package/src/vocabulary/icon.test.tsx +0 -64
  323. package/src/vocabulary/icon.tsx +0 -174
  324. package/src/vocabulary/index.test.ts +0 -65
  325. package/src/vocabulary/index.ts +0 -33
  326. package/src/vocabulary/interactive.dispatch.test.tsx +0 -454
  327. package/src/vocabulary/interactive.dom.test.tsx +0 -1747
  328. package/src/vocabulary/interactive.test.tsx +0 -377
  329. package/src/vocabulary/interactive.tsx +0 -1048
  330. package/src/vocabulary/layout.test.tsx +0 -323
  331. package/src/vocabulary/layout.tsx +0 -247
  332. package/src/vocabulary/list.test.tsx +0 -222
  333. package/src/vocabulary/list.tsx +0 -50
  334. package/src/vocabulary/media.test.tsx +0 -85
  335. package/src/vocabulary/media.tsx +0 -56
  336. package/src/vocabulary/text.test.tsx +0 -102
  337. package/src/vocabulary/text.tsx +0 -60
  338. package/src/vocabulary/toTextContent.ts +0 -2
@@ -1 +0,0 @@
1
- {"version":3,"file":"decodeSubmitData.js","names":[],"sources":["../../src/teams/decodeSubmitData.ts"],"sourcesContent":["import { resolveFieldReferences } from \"../fieldReferences\";\nimport type { Action } from \"../ir\";\nimport {\n classifyTemporal,\n fromOffsetDateTime,\n mergeTemporalMinutes,\n} from \"../temporal\";\nimport { decodeTemporalInputId, TEMPORAL_INPUT_PREFIX } from \"./temporalId\";\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null && !Array.isArray(value);\n\n/**\n * Decodes the merged `activity.value` object a Teams bot receives on\n * Action.Submit, inverting the `aui` envelope {@link buildSubmitAction} nests\n * the resume action under. Adaptive Cards fold every other same-card input's\n * value into the same submit object keyed by its `id`, so every top-level key\n * besides `aui` is collected into `$input` (omitted when there are none).\n * Each `{ \"$field\": name }` reference inside the payload resolves to the\n * same-card input value with that id, as the string Adaptive Cards submitted,\n * and a reference with no such input resolves to its `fallback`, or is dropped\n * without one.\n * `aui` is reserved for the envelope: `toAdaptiveCard` renames any input\n * whose id would collide to an unused id derived from it before encoding, so\n * a same-card input value can never land on this key. `$input` and `type`\n * are reserved on the way out: a `$input` key inside the envelope payload is\n * dropped so the slot only ever reflects same-card input values, and the\n * envelope's own `type` wins over a payload key of the same name. Every\n * collected key (in `payload` or `$input`) is kept as an own data property of\n * the returned object, even a `__proto__` or `constructor` key, since the\n * object is always built by spreading and `Object.fromEntries` rather than by\n * keyed assignment. Envelope keys are read as own properties only, so\n * prototype-inherited `aui`, `type`, or `payload` values never dispatch.\n * Returns `undefined` for a missing or malformed `aui` envelope; never throws.\n */\nexport function decodeSubmitData(value: unknown): Action | undefined {\n try {\n if (!isRecord(value) || !Object.hasOwn(value, \"aui\")) return undefined;\n const aui = value[\"aui\"];\n if (\n !isRecord(aui) ||\n !Object.hasOwn(aui, \"type\") ||\n typeof aui[\"type\"] !== \"string\"\n ) {\n return undefined;\n }\n const type = aui[\"type\"];\n\n const payload =\n Object.hasOwn(aui, \"payload\") && isRecord(aui[\"payload\"])\n ? aui[\"payload\"]\n : {};\n const payloadEntries = Object.entries(payload).filter(\n ([key]) => key !== \"$input\",\n );\n const inputEntries = Object.entries(value).filter(([key]) => key !== \"aui\");\n const input = Object.fromEntries(inputEntries);\n const temporalFields = new Map<\n string,\n { date?: string; time?: string; previousValue?: string }\n >();\n for (const [id, submitted] of inputEntries) {\n if (!id.startsWith(TEMPORAL_INPUT_PREFIX)) continue;\n const metadata = decodeTemporalInputId(id);\n if (\n !metadata ||\n Object.hasOwn(input, metadata.fieldId) ||\n typeof submitted !== \"string\" ||\n (submitted !== \"\" && classifyTemporal(submitted).kind !== metadata.role)\n )\n return undefined;\n const field = temporalFields.get(metadata.fieldId) ?? {};\n if (field[metadata.role] !== undefined) return undefined;\n field[metadata.role] = submitted;\n if (metadata.role === \"time\" && metadata.previousValue !== undefined)\n field.previousValue = metadata.previousValue;\n temporalFields.set(metadata.fieldId, field);\n delete input[id];\n }\n for (const [fieldId, field] of temporalFields) {\n Object.defineProperty(input, fieldId, {\n value: fromOffsetDateTime(\n mergeTemporalMinutes(field.date ?? \"\", field.time ?? \"\"),\n field.previousValue,\n ),\n enumerable: true,\n configurable: true,\n writable: true,\n });\n }\n const hasInput = inputEntries.length > 0;\n\n return {\n ...(resolveFieldReferences(\n Object.fromEntries(payloadEntries),\n Object.fromEntries(\n Object.entries(input).flatMap(([id, submitted]) =>\n /^_+aui:datetime:/.test(id)\n ? [[id.slice(1), submitted]]\n : [[id, submitted]],\n ),\n ),\n ) as Record<string, unknown>),\n type,\n ...(hasInput ? { $input: input } : {}),\n };\n } catch {\n return undefined;\n }\n}\n"],"mappings":";;;;AASA,MAAM,YAAY,UAChB,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;;;;;;;;;;;;;;;;;;;;;;;;AAyBrE,SAAgB,iBAAiB,OAAoC;CACnE,IAAI;EACF,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,OAAO,OAAO,KAAK,GAAG,OAAO,KAAA;EAC7D,MAAM,MAAM,MAAM;EAClB,IACE,CAAC,SAAS,GAAG,KACb,CAAC,OAAO,OAAO,KAAK,MAAM,KAC1B,OAAO,IAAI,YAAY,UAEvB;EAEF,MAAM,OAAO,IAAI;EAEjB,MAAM,UACJ,OAAO,OAAO,KAAK,SAAS,KAAK,SAAS,IAAI,UAAU,IACpD,IAAI,aACJ,CAAC;EACP,MAAM,iBAAiB,OAAO,QAAQ,OAAO,CAAC,CAAC,QAC5C,CAAC,SAAS,QAAQ,QACrB;EACA,MAAM,eAAe,OAAO,QAAQ,KAAK,CAAC,CAAC,QAAQ,CAAC,SAAS,QAAQ,KAAK;EAC1E,MAAM,QAAQ,OAAO,YAAY,YAAY;EAC7C,MAAM,iCAAiB,IAAI,IAGzB;EACF,KAAK,MAAM,CAAC,IAAI,cAAc,cAAc;GAC1C,IAAI,CAAC,GAAG,WAAA,eAAgC,GAAG;GAC3C,MAAM,WAAW,sBAAsB,EAAE;GACzC,IACE,CAAC,YACD,OAAO,OAAO,OAAO,SAAS,OAAO,KACrC,OAAO,cAAc,YACpB,cAAc,MAAM,iBAAiB,SAAS,CAAC,CAAC,SAAS,SAAS,MAEnE,OAAO,KAAA;GACT,MAAM,QAAQ,eAAe,IAAI,SAAS,OAAO,KAAK,CAAC;GACvD,IAAI,MAAM,SAAS,UAAU,KAAA,GAAW,OAAO,KAAA;GAC/C,MAAM,SAAS,QAAQ;GACvB,IAAI,SAAS,SAAS,UAAU,SAAS,kBAAkB,KAAA,GACzD,MAAM,gBAAgB,SAAS;GACjC,eAAe,IAAI,SAAS,SAAS,KAAK;GAC1C,OAAO,MAAM;EACf;EACA,KAAK,MAAM,CAAC,SAAS,UAAU,gBAC7B,OAAO,eAAe,OAAO,SAAS;GACpC,OAAO,mBACL,qBAAqB,MAAM,QAAQ,IAAI,MAAM,QAAQ,EAAE,GACvD,MAAM,aACR;GACA,YAAY;GACZ,cAAc;GACd,UAAU;EACZ,CAAC;EAEH,MAAM,WAAW,aAAa,SAAS;EAEvC,OAAO;GACL,GAAI,uBACF,OAAO,YAAY,cAAc,GACjC,OAAO,YACL,OAAO,QAAQ,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,eAClC,mBAAmB,KAAK,EAAE,IACtB,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS,CAAC,IACzB,CAAC,CAAC,IAAI,SAAS,CAAC,CACtB,CACF,CACF;GACA;GACA,GAAI,WAAW,EAAE,QAAQ,MAAM,IAAI,CAAC;EACtC;CACF,QAAQ;EACN;CACF;AACF"}
@@ -1,5 +0,0 @@
1
- import type { TeamsTemporalField } from "./types.js";
2
- export declare const TEMPORAL_INPUT_PREFIX = "aui:datetime:";
3
- export declare const encodeTemporalInputId: (field: TeamsTemporalField) => string;
4
- export declare const decodeTemporalInputId: (id: string) => TeamsTemporalField | undefined;
5
- //# sourceMappingURL=temporalId.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"temporalId.d.ts","sourceRoot":"","sources":["../../src/teams/temporalId.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAgB;AAElD,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AAkBrD,eAAO,MAAM,qBAAqB,GAAI,OAAO,kBAAkB,KAAG,MAC0F,CAAC;AAE7J,eAAO,MAAM,qBAAqB,GAChC,IAAI,MAAM,KACT,kBAAkB,GAAG,SA6BvB,CAAC"}
@@ -1,28 +0,0 @@
1
- import { classifyTemporal } from "../temporal.js";
2
- //#region src/teams/temporalId.ts
3
- const TEMPORAL_INPUT_PREFIX = "aui:datetime:";
4
- const encodeFieldId = (value) => Array.from(value, (char) => /^[\uD800-\uDFFF]$/.test(char) ? `%u${char.charCodeAt(0).toString(16).toUpperCase()}` : encodeURIComponent(char)).join("");
5
- const decodeFieldId = (value) => value.split(/(%uD[89A-F][0-9A-F]{2})/).map((part, index) => index % 2 === 0 ? decodeURIComponent(part) : String.fromCharCode(Number.parseInt(part.slice(2), 16))).join("");
6
- const encodeTemporalInputId = (field) => `${TEMPORAL_INPUT_PREFIX}${field.role}:${encodeFieldId(field.fieldId)}${field.role === "time" ? `:${encodeURIComponent(field.previousValue ?? "")}` : ""}`;
7
- const decodeTemporalInputId = (id) => {
8
- try {
9
- const parts = id.slice(13).split(":");
10
- const role = parts[0];
11
- if (!id.startsWith("aui:datetime:") || role !== "date" && role !== "time" || parts.length !== (role === "date" ? 2 : 3)) return void 0;
12
- const fieldId = decodeFieldId(parts[1]);
13
- const previousValue = role === "time" ? decodeURIComponent(parts[2]) : "";
14
- if (!fieldId || fieldId === "aui" || fieldId.startsWith("aui:datetime:") || previousValue !== "" && classifyTemporal(previousValue).kind !== "instant") return void 0;
15
- const metadata = {
16
- fieldId,
17
- role,
18
- ...previousValue ? { previousValue } : {}
19
- };
20
- return encodeTemporalInputId(metadata) === id ? metadata : void 0;
21
- } catch {
22
- return;
23
- }
24
- };
25
- //#endregion
26
- export { TEMPORAL_INPUT_PREFIX, decodeTemporalInputId, encodeTemporalInputId };
27
-
28
- //# sourceMappingURL=temporalId.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"temporalId.js","names":[],"sources":["../../src/teams/temporalId.ts"],"sourcesContent":["import { classifyTemporal } from \"../temporal\";\nimport type { TeamsTemporalField } from \"./types\";\n\nexport const TEMPORAL_INPUT_PREFIX = \"aui:datetime:\";\nconst encodeFieldId = (value: string): string =>\n Array.from(value, (char) =>\n /^[\\uD800-\\uDFFF]$/.test(char)\n ? `%u${char.charCodeAt(0).toString(16).toUpperCase()}`\n : encodeURIComponent(char),\n ).join(\"\");\n\nconst decodeFieldId = (value: string): string =>\n value\n .split(/(%uD[89A-F][0-9A-F]{2})/)\n .map((part, index) =>\n index % 2 === 0\n ? decodeURIComponent(part)\n : String.fromCharCode(Number.parseInt(part.slice(2), 16)),\n )\n .join(\"\");\n\nexport const encodeTemporalInputId = (field: TeamsTemporalField): string =>\n `${TEMPORAL_INPUT_PREFIX}${field.role}:${encodeFieldId(field.fieldId)}${field.role === \"time\" ? `:${encodeURIComponent(field.previousValue ?? \"\")}` : \"\"}`;\n\nexport const decodeTemporalInputId = (\n id: string,\n): TeamsTemporalField | undefined => {\n try {\n const parts = id.slice(TEMPORAL_INPUT_PREFIX.length).split(\":\");\n const role = parts[0];\n if (\n !id.startsWith(TEMPORAL_INPUT_PREFIX) ||\n (role !== \"date\" && role !== \"time\") ||\n parts.length !== (role === \"date\" ? 2 : 3)\n )\n return undefined;\n const fieldId = decodeFieldId(parts[1]!);\n const previousValue = role === \"time\" ? decodeURIComponent(parts[2]!) : \"\";\n if (\n !fieldId ||\n fieldId === \"aui\" ||\n fieldId.startsWith(TEMPORAL_INPUT_PREFIX) ||\n (previousValue !== \"\" &&\n classifyTemporal(previousValue).kind !== \"instant\")\n )\n return undefined;\n const metadata: TeamsTemporalField = {\n fieldId,\n role,\n ...(previousValue ? { previousValue } : {}),\n };\n return encodeTemporalInputId(metadata) === id ? metadata : undefined;\n } catch {\n return undefined;\n }\n};\n"],"mappings":";;AAGA,MAAa,wBAAwB;AACrC,MAAM,iBAAiB,UACrB,MAAM,KAAK,QAAQ,SACjB,oBAAoB,KAAK,IAAI,IACzB,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,YAAY,MACjD,mBAAmB,IAAI,CAC7B,CAAC,CAAC,KAAK,EAAE;AAEX,MAAM,iBAAiB,UACrB,MACG,MAAM,yBAAyB,CAAC,CAChC,KAAK,MAAM,UACV,QAAQ,MAAM,IACV,mBAAmB,IAAI,IACvB,OAAO,aAAa,OAAO,SAAS,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAC5D,CAAC,CACA,KAAK,EAAE;AAEZ,MAAa,yBAAyB,UACpC,GAAG,wBAAwB,MAAM,KAAK,GAAG,cAAc,MAAM,OAAO,IAAI,MAAM,SAAS,SAAS,IAAI,mBAAmB,MAAM,iBAAiB,EAAE,MAAM;AAExJ,MAAa,yBACX,OACmC;CACnC,IAAI;EACF,MAAM,QAAQ,GAAG,MAAM,EAA4B,CAAC,CAAC,MAAM,GAAG;EAC9D,MAAM,OAAO,MAAM;EACnB,IACE,CAAC,GAAG,WAAA,eAAgC,KACnC,SAAS,UAAU,SAAS,UAC7B,MAAM,YAAY,SAAS,SAAS,IAAI,IAExC,OAAO,KAAA;EACT,MAAM,UAAU,cAAc,MAAM,EAAG;EACvC,MAAM,gBAAgB,SAAS,SAAS,mBAAmB,MAAM,EAAG,IAAI;EACxE,IACE,CAAC,WACD,YAAY,SACZ,QAAQ,WAAA,eAAgC,KACvC,kBAAkB,MACjB,iBAAiB,aAAa,CAAC,CAAC,SAAS,WAE3C,OAAO,KAAA;EACT,MAAM,WAA+B;GACnC;GACA;GACA,GAAI,gBAAgB,EAAE,cAAc,IAAI,CAAC;EAC3C;EACA,OAAO,sBAAsB,QAAQ,MAAM,KAAK,WAAW,KAAA;CAC7D,QAAQ;EACN;CACF;AACF"}
@@ -1,45 +0,0 @@
1
- import { type NormalizedUIElement, type NormalizedUINode } from "../ir.js";
2
- import type { AdaptiveCardResult, TeamsAdaptiveCard, TeamsCardElement, TeamsConversionWarning, ToAdaptiveCardOptions } from "./types.js";
3
- /** Shared mutable conversion state threaded through one top-level conversion. */
4
- export interface ConversionContext {
5
- readonly warnings: TeamsConversionWarning[];
6
- usedInputIds: Set<string>;
7
- }
8
- /**
9
- * Converts a child whose output is thrown away, and reports whether anything
10
- * was lost with it. A scratch context keeps the ids it claims out of the card,
11
- * where they would rename a control that survives; only its `dropped` warnings
12
- * are forwarded, because those describe the tree the caller wrote, while a
13
- * clamp or a rename would describe content never delivered.
14
- */
15
- export declare const discardedChild: (child: NormalizedUINode, context: ConversionContext, depth: number) => boolean;
16
- export declare function convertElement(element: NormalizedUIElement, context: ConversionContext, depth: number): TeamsCardElement[];
17
- /**
18
- * Walks a normalized sequence into card body elements. Nested arrays are
19
- * flattened into one flat sibling sequence first (via {@link normalizedList}),
20
- * so a `Divider`/`Fact`/`Button` run merges correctly even when the model
21
- * wrapped some of its siblings in their own array. Consecutive `Fact`
22
- * siblings merge into one FactSet and consecutive `Button` siblings merge
23
- * into one ActionSet; a `Divider`/`Spacer` emits nothing itself but sets
24
- * `separator`/`spacing` on the next emitted sibling (a trailing or orphan
25
- * one is dropped silently, since there is no sibling left to carry it).
26
- * `depth` advances by exactly one per element-nesting level: this call does
27
- * not itself add a level, since flattening a sibling array or converting a
28
- * sibling element is not a descent; only a container's own recursive
29
- * `convertSequence(children, depth + 1)` call is.
30
- */
31
- export declare function convertSequence(node: NormalizedUINode | undefined, context: ConversionContext, depth: number): TeamsCardElement[];
32
- /** Builds a full card (schema envelope plus body) from an already-normalized root, checking the soft payload budget. */
33
- export declare function convertRootToCard(root: NormalizedUINode | readonly NormalizedUINode[], context: ConversionContext): TeamsAdaptiveCard;
34
- /**
35
- * Converts a generative-ui tree into a Microsoft Teams Adaptive Card and
36
- * non-fatal conversion warnings. Sizes, weights, and colors map to Adaptive
37
- * Card's semantic enums rather than raw values. An Input/Select/RadioGroup/
38
- * CheckboxGroup/Checkbox/Slider/DatePicker whose id would be the reserved
39
- * {@link RESERVED_INPUT_ID} is renamed with a warning (see `decodeSubmitData`).
40
- * Never throws: an unknown `$type` is skipped with a "dropped" warning, and a
41
- * malformed input resolves to an empty card plus a "dropped" warning instead
42
- * of throwing.
43
- */
44
- export declare function toAdaptiveCard(node: unknown, _options?: ToAdaptiveCardOptions): AdaptiveCardResult;
45
- //# sourceMappingURL=toAdaptiveCard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toAdaptiveCard.d.ts","sourceRoot":"","sources":["../../src/teams/toAdaptiveCard.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,iBAAc;AAsBf,OAAO,KAAK,EACV,kBAAkB,EAElB,iBAAiB,EACjB,gBAAgB,EAIhB,sBAAsB,EAQtB,qBAAqB,EACtB,mBAAgB;AAEjB,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,EAAE,CAAC;IAC5C,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC3B;AAwWD;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,gBAAgB,EACvB,SAAS,iBAAiB,EAC1B,OAAO,MAAM,KACZ,OAUF,CAAC;AAEF,wBAAgB,cAAc,CAC5B,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,MAAM,GACZ,gBAAgB,EAAE,CAsdpB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,gBAAgB,GAAG,SAAS,EAClC,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,MAAM,GACZ,gBAAgB,EAAE,CA6DpB;AAED,wHAAwH;AACxH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,gBAAgB,GAAG,SAAS,gBAAgB,EAAE,EACpD,OAAO,EAAE,iBAAiB,GACzB,iBAAiB,CAcnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,OAAO,EACb,QAAQ,CAAC,EAAE,qBAAqB,GAC/B,kBAAkB,CA0BpB"}