@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.
- package/README.md +2 -0
- package/dist/a2ui.d.ts +1 -4
- package/dist/a2ui.d.ts.map +1 -1
- package/dist/a2ui.js +1 -4
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -10
- package/dist/index.server.d.ts +1 -2
- package/dist/index.server.d.ts.map +1 -1
- package/dist/index.server.js +1 -10
- package/dist/ir.d.ts +1 -111
- package/dist/ir.d.ts.map +1 -1
- package/dist/ir.js +1 -175
- package/dist/slack.d.ts +1 -4
- package/dist/slack.d.ts.map +1 -1
- package/dist/slack.js +1 -4
- package/dist/teams.d.ts +1 -4
- package/dist/teams.d.ts.map +1 -1
- package/dist/teams.js +1 -4
- package/package.json +5 -5
- package/src/a2ui.ts +1 -22
- package/src/index.server.ts +1 -2
- package/src/index.test.ts +75 -0
- package/src/index.ts +1 -2
- package/src/ir.ts +1 -279
- package/src/slack.ts +1 -39
- package/src/teams.ts +1 -35
- package/dist/JSONGenerativeUI.client.d.ts +0 -28
- package/dist/JSONGenerativeUI.client.d.ts.map +0 -1
- package/dist/JSONGenerativeUI.client.js +0 -101
- package/dist/JSONGenerativeUI.client.js.map +0 -1
- package/dist/JSONGenerativeUI.server.d.ts +0 -21
- package/dist/JSONGenerativeUI.server.d.ts.map +0 -1
- package/dist/JSONGenerativeUI.server.js +0 -32
- package/dist/JSONGenerativeUI.server.js.map +0 -1
- package/dist/JSONGenerativeUI.shared.d.ts +0 -63
- package/dist/JSONGenerativeUI.shared.d.ts.map +0 -1
- package/dist/JSONGenerativeUI.shared.js +0 -31
- package/dist/JSONGenerativeUI.shared.js.map +0 -1
- package/dist/RadioGroupScope.d.ts +0 -6
- package/dist/RadioGroupScope.d.ts.map +0 -1
- package/dist/RadioGroupScope.js +0 -25
- package/dist/RadioGroupScope.js.map +0 -1
- package/dist/a2ui/BindingContext.d.ts +0 -11
- package/dist/a2ui/BindingContext.d.ts.map +0 -1
- package/dist/a2ui/BindingContext.js +0 -12
- package/dist/a2ui/BindingContext.js.map +0 -1
- package/dist/a2ui/PresentRenderer.d.ts +0 -11
- package/dist/a2ui/PresentRenderer.d.ts.map +0 -1
- package/dist/a2ui/PresentRenderer.js +0 -39
- package/dist/a2ui/PresentRenderer.js.map +0 -1
- package/dist/a2ui/convert.d.ts +0 -15
- package/dist/a2ui/convert.d.ts.map +0 -1
- package/dist/a2ui/convert.js +0 -728
- package/dist/a2ui/convert.js.map +0 -1
- package/dist/a2ui/dataModel.d.ts +0 -9
- package/dist/a2ui/dataModel.d.ts.map +0 -1
- package/dist/a2ui/dataModel.js +0 -44
- package/dist/a2ui/dataModel.js.map +0 -1
- package/dist/a2ui/reducer.d.ts +0 -8
- package/dist/a2ui/reducer.d.ts.map +0 -1
- package/dist/a2ui/reducer.js +0 -242
- package/dist/a2ui/reducer.js.map +0 -1
- package/dist/a2ui/snapshot.d.ts +0 -3
- package/dist/a2ui/snapshot.d.ts.map +0 -1
- package/dist/a2ui/snapshot.js +0 -33
- package/dist/a2ui/snapshot.js.map +0 -1
- package/dist/a2ui/types.d.ts +0 -88
- package/dist/a2ui/types.d.ts.map +0 -1
- package/dist/a2ui/types.js +0 -6
- package/dist/a2ui/types.js.map +0 -1
- package/dist/a2ui/valueFunctions.d.ts +0 -16
- package/dist/a2ui/valueFunctions.d.ts.map +0 -1
- package/dist/a2ui/valueFunctions.js +0 -332
- package/dist/a2ui/valueFunctions.js.map +0 -1
- package/dist/actionRegistry.d.ts +0 -29
- package/dist/actionRegistry.d.ts.map +0 -1
- package/dist/actionRegistry.js +0 -41
- package/dist/actionRegistry.js.map +0 -1
- package/dist/answeredValues.d.ts +0 -16
- package/dist/answeredValues.d.ts.map +0 -1
- package/dist/answeredValues.js +0 -37
- package/dist/answeredValues.js.map +0 -1
- package/dist/buildPresentParameters.d.ts +0 -21
- package/dist/buildPresentParameters.d.ts.map +0 -1
- package/dist/buildPresentParameters.js +0 -95
- package/dist/buildPresentParameters.js.map +0 -1
- package/dist/constants.d.ts +0 -15
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -19
- package/dist/constants.js.map +0 -1
- package/dist/convert/boundSpec.d.ts +0 -48
- package/dist/convert/boundSpec.d.ts.map +0 -1
- package/dist/convert/boundSpec.js +0 -108
- package/dist/convert/boundSpec.js.map +0 -1
- package/dist/convert/copyBounded.d.ts +0 -25
- package/dist/convert/copyBounded.d.ts.map +0 -1
- package/dist/convert/copyBounded.js +0 -38
- package/dist/convert/copyBounded.js.map +0 -1
- package/dist/convert/isElement.d.ts +0 -3
- package/dist/convert/isElement.d.ts.map +0 -1
- package/dist/convert/isElement.js +0 -6
- package/dist/convert/isElement.js.map +0 -1
- package/dist/convert/takeRun.d.ts +0 -6
- package/dist/convert/takeRun.d.ts.map +0 -1
- package/dist/convert/takeRun.js +0 -20
- package/dist/convert/takeRun.js.map +0 -1
- package/dist/defineGenerativeComponents.d.ts +0 -29
- package/dist/defineGenerativeComponents.d.ts.map +0 -1
- package/dist/defineGenerativeComponents.js +0 -34
- package/dist/defineGenerativeComponents.js.map +0 -1
- package/dist/fieldReferences.d.ts +0 -9
- package/dist/fieldReferences.d.ts.map +0 -1
- package/dist/fieldReferences.js +0 -53
- package/dist/fieldReferences.js.map +0 -1
- package/dist/generativeUIToJSX.d.ts +0 -18
- package/dist/generativeUIToJSX.d.ts.map +0 -1
- package/dist/generativeUIToJSX.js +0 -76
- package/dist/generativeUIToJSX.js.map +0 -1
- package/dist/index.shared.d.ts +0 -15
- package/dist/index.shared.d.ts.map +0 -1
- package/dist/index.shared.js +0 -9
- package/dist/ir.js.map +0 -1
- package/dist/renderGenerativeUI.d.ts +0 -14
- package/dist/renderGenerativeUI.d.ts.map +0 -1
- package/dist/renderGenerativeUI.js +0 -83
- package/dist/renderGenerativeUI.js.map +0 -1
- package/dist/scopeSchema.d.ts +0 -6
- package/dist/scopeSchema.d.ts.map +0 -1
- package/dist/scopeSchema.js +0 -56
- package/dist/scopeSchema.js.map +0 -1
- package/dist/slack/constants.d.ts +0 -93
- package/dist/slack/constants.d.ts.map +0 -1
- package/dist/slack/constants.js +0 -146
- package/dist/slack/constants.js.map +0 -1
- package/dist/slack/decodeBlockAction.d.ts +0 -10
- package/dist/slack/decodeBlockAction.d.ts.map +0 -1
- package/dist/slack/decodeBlockAction.js +0 -129
- package/dist/slack/decodeBlockAction.js.map +0 -1
- package/dist/slack/fromSlackBlocks.d.ts +0 -27
- package/dist/slack/fromSlackBlocks.d.ts.map +0 -1
- package/dist/slack/fromSlackBlocks.js +0 -483
- package/dist/slack/fromSlackBlocks.js.map +0 -1
- package/dist/slack/toSlackBlocks.d.ts +0 -4
- package/dist/slack/toSlackBlocks.d.ts.map +0 -1
- package/dist/slack/toSlackBlocks.js +0 -901
- package/dist/slack/toSlackBlocks.js.map +0 -1
- package/dist/slack/types.d.ts +0 -204
- package/dist/slack/types.d.ts.map +0 -1
- package/dist/slack/types.js +0 -0
- package/dist/teams/constants.d.ts +0 -34
- package/dist/teams/constants.d.ts.map +0 -1
- package/dist/teams/constants.js +0 -68
- package/dist/teams/constants.js.map +0 -1
- package/dist/teams/decodeSubmitData.d.ts +0 -26
- package/dist/teams/decodeSubmitData.d.ts.map +0 -1
- package/dist/teams/decodeSubmitData.js +0 -70
- package/dist/teams/decodeSubmitData.js.map +0 -1
- package/dist/teams/temporalId.d.ts +0 -5
- package/dist/teams/temporalId.d.ts.map +0 -1
- package/dist/teams/temporalId.js +0 -28
- package/dist/teams/temporalId.js.map +0 -1
- package/dist/teams/toAdaptiveCard.d.ts +0 -45
- package/dist/teams/toAdaptiveCard.d.ts.map +0 -1
- package/dist/teams/toAdaptiveCard.js +0 -642
- package/dist/teams/toAdaptiveCard.js.map +0 -1
- package/dist/teams/toTeamsAttachments.d.ts +0 -10
- package/dist/teams/toTeamsAttachments.d.ts.map +0 -1
- package/dist/teams/toTeamsAttachments.js +0 -99
- package/dist/teams/toTeamsAttachments.js.map +0 -1
- package/dist/teams/types.d.ts +0 -224
- package/dist/teams/types.d.ts.map +0 -1
- package/dist/teams/types.js +0 -0
- package/dist/temporal.d.ts +0 -33
- package/dist/temporal.d.ts.map +0 -1
- package/dist/temporal.js +0 -152
- package/dist/temporal.js.map +0 -1
- package/dist/types.d.ts +0 -99
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -0
- package/dist/vocabulary/alert.d.ts +0 -32
- package/dist/vocabulary/alert.d.ts.map +0 -1
- package/dist/vocabulary/alert.js +0 -160
- package/dist/vocabulary/alert.js.map +0 -1
- package/dist/vocabulary/collectFormValues.d.ts +0 -23
- package/dist/vocabulary/collectFormValues.d.ts.map +0 -1
- package/dist/vocabulary/collectFormValues.js +0 -44
- package/dist/vocabulary/collectFormValues.js.map +0 -1
- package/dist/vocabulary/data.d.ts +0 -66
- package/dist/vocabulary/data.d.ts.map +0 -1
- package/dist/vocabulary/data.js +0 -503
- package/dist/vocabulary/data.js.map +0 -1
- package/dist/vocabulary/dispatch.d.ts +0 -9
- package/dist/vocabulary/dispatch.d.ts.map +0 -1
- package/dist/vocabulary/dispatch.js +0 -50
- package/dist/vocabulary/dispatch.js.map +0 -1
- package/dist/vocabulary/fact.d.ts +0 -19
- package/dist/vocabulary/fact.d.ts.map +0 -1
- package/dist/vocabulary/fact.js +0 -51
- package/dist/vocabulary/fact.js.map +0 -1
- package/dist/vocabulary/form.d.ts +0 -11
- package/dist/vocabulary/form.d.ts.map +0 -1
- package/dist/vocabulary/form.js +0 -23
- package/dist/vocabulary/form.js.map +0 -1
- package/dist/vocabulary/formatValue.d.ts +0 -7
- package/dist/vocabulary/formatValue.d.ts.map +0 -1
- package/dist/vocabulary/formatValue.js +0 -76
- package/dist/vocabulary/formatValue.js.map +0 -1
- package/dist/vocabulary/icon.d.ts +0 -41
- package/dist/vocabulary/icon.d.ts.map +0 -1
- package/dist/vocabulary/icon.js +0 -272
- package/dist/vocabulary/icon.js.map +0 -1
- package/dist/vocabulary/index.d.ts +0 -12
- package/dist/vocabulary/index.d.ts.map +0 -1
- package/dist/vocabulary/index.js +0 -36
- package/dist/vocabulary/index.js.map +0 -1
- package/dist/vocabulary/interactive.d.ts +0 -230
- package/dist/vocabulary/interactive.d.ts.map +0 -1
- package/dist/vocabulary/interactive.js +0 -530
- package/dist/vocabulary/interactive.js.map +0 -1
- package/dist/vocabulary/layout.d.ts +0 -79
- package/dist/vocabulary/layout.d.ts.map +0 -1
- package/dist/vocabulary/layout.js +0 -139
- package/dist/vocabulary/layout.js.map +0 -1
- package/dist/vocabulary/list.d.ts +0 -14
- package/dist/vocabulary/list.d.ts.map +0 -1
- package/dist/vocabulary/list.js +0 -50
- package/dist/vocabulary/list.js.map +0 -1
- package/dist/vocabulary/media.d.ts +0 -25
- package/dist/vocabulary/media.d.ts.map +0 -1
- package/dist/vocabulary/media.js +0 -42
- package/dist/vocabulary/media.js.map +0 -1
- package/dist/vocabulary/text.d.ts +0 -57
- package/dist/vocabulary/text.d.ts.map +0 -1
- package/dist/vocabulary/text.js +0 -49
- package/dist/vocabulary/text.js.map +0 -1
- package/dist/vocabulary/toTextContent.d.ts +0 -2
- package/dist/vocabulary/toTextContent.d.ts.map +0 -1
- package/dist/vocabulary/toTextContent.js +0 -6
- package/dist/vocabulary/toTextContent.js.map +0 -1
- package/src/JSONGenerativeUI.client.tsx +0 -168
- package/src/JSONGenerativeUI.server.tsx +0 -39
- package/src/JSONGenerativeUI.shared.ts +0 -90
- package/src/JSONGenerativeUI.test.tsx +0 -1298
- package/src/RadioGroupScope.server.test.tsx +0 -24
- package/src/RadioGroupScope.tsx +0 -34
- package/src/a2ui/BindingContext.ts +0 -26
- package/src/a2ui/PresentRenderer.tsx +0 -83
- package/src/a2ui/convert.test.ts +0 -2923
- package/src/a2ui/convert.ts +0 -1207
- package/src/a2ui/dataModel.ts +0 -69
- package/src/a2ui/reducer.test.ts +0 -422
- package/src/a2ui/reducer.ts +0 -363
- package/src/a2ui/snapshot.test.ts +0 -52
- package/src/a2ui/snapshot.ts +0 -52
- package/src/a2ui/types.ts +0 -114
- package/src/a2ui/valueFunctions.test.ts +0 -271
- package/src/a2ui/valueFunctions.ts +0 -523
- package/src/actionRegistry.test.ts +0 -90
- package/src/actionRegistry.ts +0 -88
- package/src/answeredValues.test.ts +0 -33
- package/src/answeredValues.tsx +0 -70
- package/src/buildPresentParameters.test.ts +0 -246
- package/src/buildPresentParameters.ts +0 -130
- package/src/constants.ts +0 -17
- package/src/convert/boundSpec.test.ts +0 -192
- package/src/convert/boundSpec.ts +0 -134
- package/src/convert/copyBounded.test.ts +0 -131
- package/src/convert/copyBounded.ts +0 -38
- package/src/convert/isElement.ts +0 -6
- package/src/convert/takeRun.test.ts +0 -64
- package/src/convert/takeRun.ts +0 -19
- package/src/defineGenerativeComponents.ts +0 -38
- package/src/fieldReferences.test.ts +0 -66
- package/src/fieldReferences.ts +0 -83
- package/src/generativeUIToJSX.test.ts +0 -268
- package/src/generativeUIToJSX.ts +0 -152
- package/src/index.server.test.ts +0 -106
- package/src/index.shared.ts +0 -61
- package/src/ir.test.ts +0 -203
- package/src/renderGenerativeUI.test.tsx +0 -373
- package/src/renderGenerativeUI.tsx +0 -165
- package/src/scopeSchema.test.ts +0 -72
- package/src/scopeSchema.ts +0 -71
- package/src/slack/a2uiSlack.test.ts +0 -198
- package/src/slack/constants.ts +0 -194
- package/src/slack/datePicker.test.ts +0 -612
- package/src/slack/decodeBlockAction.test.ts +0 -233
- package/src/slack/decodeBlockAction.ts +0 -232
- package/src/slack/fromSlackBlocks.test.ts +0 -1465
- package/src/slack/fromSlackBlocks.ts +0 -789
- package/src/slack/toSlackBlocks.test.ts +0 -3065
- package/src/slack/toSlackBlocks.ts +0 -1818
- package/src/slack/types.ts +0 -264
- package/src/teams/constants.ts +0 -93
- package/src/teams/decodeSubmitData.test.ts +0 -397
- package/src/teams/decodeSubmitData.ts +0 -110
- package/src/teams/temporal.test.ts +0 -766
- package/src/teams/temporalId.ts +0 -56
- package/src/teams/toAdaptiveCard.test.ts +0 -1897
- package/src/teams/toAdaptiveCard.ts +0 -1057
- package/src/teams/toTeamsAttachments.test.ts +0 -74
- package/src/teams/toTeamsAttachments.ts +0 -133
- package/src/teams/types.ts +0 -266
- package/src/temporal.test.ts +0 -319
- package/src/temporal.ts +0 -259
- package/src/types.ts +0 -119
- package/src/vocabulary/alert.test.tsx +0 -427
- package/src/vocabulary/alert.tsx +0 -217
- package/src/vocabulary/collectFormValues.test.ts +0 -389
- package/src/vocabulary/collectFormValues.ts +0 -116
- package/src/vocabulary/data.test.tsx +0 -858
- package/src/vocabulary/data.tsx +0 -819
- package/src/vocabulary/datepicker.dom.test.tsx +0 -1148
- package/src/vocabulary/dispatch.ts +0 -83
- package/src/vocabulary/fact.test.tsx +0 -94
- package/src/vocabulary/fact.tsx +0 -54
- package/src/vocabulary/form.test.tsx +0 -113
- package/src/vocabulary/form.tsx +0 -39
- package/src/vocabulary/formatValue.test.ts +0 -72
- package/src/vocabulary/formatValue.ts +0 -127
- package/src/vocabulary/icon.test.tsx +0 -64
- package/src/vocabulary/icon.tsx +0 -174
- package/src/vocabulary/index.test.ts +0 -65
- package/src/vocabulary/index.ts +0 -33
- package/src/vocabulary/interactive.dispatch.test.tsx +0 -454
- package/src/vocabulary/interactive.dom.test.tsx +0 -1747
- package/src/vocabulary/interactive.test.tsx +0 -377
- package/src/vocabulary/interactive.tsx +0 -1048
- package/src/vocabulary/layout.test.tsx +0 -323
- package/src/vocabulary/layout.tsx +0 -247
- package/src/vocabulary/list.test.tsx +0 -222
- package/src/vocabulary/list.tsx +0 -50
- package/src/vocabulary/media.test.tsx +0 -85
- package/src/vocabulary/media.tsx +0 -56
- package/src/vocabulary/text.test.tsx +0 -102
- package/src/vocabulary/text.tsx +0 -60
- 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"}
|
package/dist/teams/temporalId.js
DELETED
|
@@ -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"}
|