@cerebro-labs/agentnava-sdk 0.75.0 → 0.75.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cerebro-labs/agentnava-sdk",
3
- "version": "0.75.0",
3
+ "version": "0.75.1",
4
4
  "description": "The AgentNava SDK. Configure an agent, start a conversation, and work with it.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
package/react.css CHANGED
@@ -216,12 +216,19 @@
216
216
 
217
217
  .an-w-table {
218
218
  overflow-x: auto;
219
- border: 1px solid var(--an-w-line);
220
- border-radius: 12px;
221
- background: #fff;
219
+ border: 1px solid rgba(16, 16, 16, 0.06);
220
+ border-radius: 14px;
221
+ background: linear-gradient(180deg, #ffffff, #f6f6f4);
222
+ box-shadow: 0 1px 2px rgba(16, 16, 16, 0.05), 0 2px 8px rgba(16, 16, 16, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.75);
222
223
  }
223
224
  .an-w-table > .an-w-title {
224
- padding: 10px 12px 0;
225
+ margin: 0;
226
+ padding: 14px 16px;
227
+ font-size: 1em;
228
+ font-weight: 600;
229
+ color: var(--an-w-ink);
230
+ background: #fff;
231
+ border-bottom: 1px solid var(--an-w-line);
225
232
  }
226
233
  .an-w-table table {
227
234
  border-collapse: collapse;
@@ -230,24 +237,64 @@
230
237
  .an-w-table th,
231
238
  .an-w-table td {
232
239
  text-align: left;
233
- padding: 9px 12px;
240
+ padding: 12px 16px;
234
241
  border-bottom: 1px solid var(--an-w-line);
235
- vertical-align: top;
242
+ white-space: nowrap;
236
243
  }
237
244
  .an-w-table tbody tr:last-child td {
238
245
  border-bottom: 0;
239
246
  }
247
+ .an-w-table > .an-w-title {
248
+ display: flex;
249
+ justify-content: space-between;
250
+ align-items: baseline;
251
+ }
252
+ .an-w-table > .an-w-title span {
253
+ color: var(--an-w-muted);
254
+ font-size: 0.8em;
255
+ font-weight: 500;
256
+ }
257
+ .an-w-table tbody tr {
258
+ transition: background 0.12s ease;
259
+ }
260
+ .an-w-table tbody tr:hover {
261
+ background: rgba(47, 107, 85, 0.05);
262
+ }
263
+ .an-w-table td em {
264
+ display: inline-block;
265
+ font-style: normal;
266
+ font-weight: 600;
267
+ font-size: 0.9em;
268
+ padding: 2px 8px;
269
+ border-radius: 999px;
270
+ }
271
+ .an-w-table td em.is-up {
272
+ color: var(--an-w-good);
273
+ background: color-mix(in srgb, var(--an-w-good) 11%, transparent);
274
+ }
275
+ .an-w-table td em.is-down {
276
+ color: var(--an-w-high);
277
+ background: color-mix(in srgb, var(--an-w-high) 10%, transparent);
278
+ }
240
279
  .an-w-table th {
280
+ color: var(--an-w-muted);
281
+ font-size: 0.72em;
282
+ font-weight: 600;
283
+ letter-spacing: 0.06em;
284
+ text-transform: uppercase;
285
+ padding-top: 10px;
286
+ padding-bottom: 10px;
287
+ }
288
+ .an-w-table td {
241
289
  color: var(--an-w-ink);
290
+ }
291
+ .an-w-table td:first-child {
242
292
  font-weight: 600;
243
- background: var(--an-w-surface);
244
- white-space: nowrap;
245
293
  }
246
294
  .an-w-table th.is-num,
247
295
  .an-w-table td.is-num {
248
296
  text-align: right;
249
297
  font-variant-numeric: tabular-nums;
250
- white-space: nowrap;
251
298
  }
252
299
 
253
300
  .an-w-chart figcaption {
package/react.js CHANGED
@@ -216,7 +216,7 @@ function defaultPart(part, kids, ctx) {
216
216
  return filled.length > 0 && filled.every(figure);
217
217
  };
218
218
  const nums = Array.from({ length: Math.max(cols.length, ...rows.map((r) => r.length)) }, (_, j) => numCol(j));
219
- return (_jsxs("div", { className: "an-w-table", children: [str(part.title) && _jsx("div", { className: "an-w-title", children: str(part.title) }), _jsxs("table", { children: [cols.length > 0 && (_jsx("thead", { children: _jsx("tr", { children: cols.map((c, j) => (_jsx("th", { className: nums[j] ? 'is-num' : undefined, children: c }, j))) }) })), _jsx("tbody", { children: rows.map((r, i) => (_jsx("tr", { children: r.map((c, j) => (_jsx("td", { className: nums[j] ? 'is-num' : undefined, children: typeof c === 'number' ? ctx.number(c) : str(c) }, j))) }, i))) })] })] }));
219
+ return (_jsxs("div", { className: "an-w-table", children: [str(part.title) && (_jsxs("div", { className: "an-w-title", children: [str(part.title), rows.length > 3 && _jsxs("span", { children: [rows.length, " rows"] })] })), _jsxs("table", { children: [cols.length > 0 && (_jsx("thead", { children: _jsx("tr", { children: cols.map((c, j) => (_jsx("th", { className: nums[j] ? 'is-num' : undefined, children: c }, j))) }) })), _jsx("tbody", { children: rows.map((r, i) => (_jsx("tr", { children: r.map((c, j) => (_jsx("td", { className: nums[j] ? 'is-num' : undefined, children: typeof c === 'string' && /^[+\-\u2212]\d/.test(c.trim()) ? (_jsx("em", { className: /^\+/.test(c.trim()) ? 'is-up' : 'is-down', children: c })) : typeof c === 'number' ? (ctx.number(c)) : (str(c)) }, j))) }, i))) })] })] }));
220
220
  }
221
221
  case 'Chart':
222
222
  return _jsx(Chart, { part: part, ctx: ctx });
package/react.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"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","sourcesContent":["// Ready-made React views for the widgets an agent draws in its replies.\n//\n// import { ReplyView } from '@cerebro-labs/agentnava-sdk/react'\n// import '@cerebro-labs/agentnava-sdk/react/styles.css'\n//\n// <ReplyView text={reply} widgets={widgets} onAsk={send} />\n//\n// React is optional for the SDK: only this entry needs it, and the rest of the\n// package never imports it. Every kind of part has a default look (styles.css,\n// themed through CSS variables), and any kind can be swapped for your own\n// component with `parts`.\n//\n// A widget is written by the model, so it is drawn defensively: a kind this\n// does not know, or a part missing a field, is skipped; each part is drawn\n// once, even if two containers name it; links and pictures open only over\n// https:// (narrow it further with `allowUrl`); and a widget that throws while\n// drawing is left out rather than breaking the screen around it.\n\nimport { Component, Fragment, type ReactNode, useEffect, useId, useRef, useState } from 'react';\nimport type { Widget, WidgetPart } from './types.ts';\nimport { placeWidgets } from './widgets.ts';\n\nexport { placeWidgets, type ReplyPiece } from './widgets.ts';\n\n/** Every kind of part an agent may draw. */\nexport type WidgetKind =\n\t| 'Column'\n\t| 'Row'\n\t| 'Card'\n\t| 'Text'\n\t| 'Stat'\n\t| 'KeyValue'\n\t| 'Table'\n\t| 'Chart'\n\t| 'Image'\n\t| 'List'\n\t| 'Note'\n\t| 'Badge'\n\t| 'Link'\n\t| 'Button'\n\t| 'Suggestions'\n\t| 'Divider';\n\n/** What a replacement for one kind of part receives. */\nexport interface PartProps {\n\tpart: WidgetPart;\n\t/** The part's children, already drawn (containers only). */\n\tchildren?: ReactNode;\n\t/** Send words as the reader's next message (Button, Suggestions). */\n\tonAsk?: ((text: string) => void) | undefined;\n}\n\nexport interface WidgetViewProps {\n\twidget: Widget;\n\t/** Called with a Button's label or a tapped suggestion: send it as the next message. */\n\tonAsk?: (text: string) => void;\n\t/** Your own component for any kind of part, in place of the default. */\n\tparts?: Partial<Record<WidgetKind, (props: PartProps) => ReactNode>>;\n\t/** ISO currency code for charts and numbers marked as money. Default \"USD\". */\n\tcurrency?: string;\n\t/** Locale for numbers. Default: the reader's. */\n\tlocale?: string;\n\t/** Whether a link or picture address may be opened. Default: https:// only. */\n\tallowUrl?: (url: string, use: 'link' | 'image') => boolean;\n\tclassName?: string;\n}\n\nexport interface ReplyViewProps extends Omit<WidgetViewProps, 'widget' | 'className'> {\n\t/** The reply's words, as `text` events or `done.reply` give them. */\n\ttext: string;\n\t/** The reply's widgets, as `widget` events or `done.widgets` give them. */\n\twidgets?: readonly Widget[] | undefined;\n\t/** How to draw the words. Default: paragraphs. Pass your markdown renderer here. */\n\trenderText?: (text: string) => ReactNode;\n\tclassName?: string;\n}\n\nconst str = (v: unknown): string => (typeof v === 'string' || typeof v === 'number' ? String(v) : '');\nconst list = <T = unknown,>(v: unknown): T[] => (Array.isArray(v) ? (v as T[]) : []);\nconst TONES = new Set(['high', 'medium', 'low', 'good', 'info']);\nconst toneOf = (v: unknown): string => (typeof v === 'string' && TONES.has(v) ? v : 'info');\nconst httpsOnly = (url: string) => /^https:\\/\\//i.test(url);\n\n/** A widget that throws while drawing is left out, never a crash of the screen. */\nclass Boundary extends Component<{ children: ReactNode }, { failed: boolean }> {\n\toverride state = { failed: false };\n\tstatic getDerivedStateFromError() {\n\t\treturn { failed: true };\n\t}\n\toverride render() {\n\t\treturn this.state.failed ? null : this.props.children;\n\t}\n}\n\ninterface Ctx {\n\tbyId: Map<string, WidgetPart>;\n\tseen: Set<string>;\n\tprops: WidgetViewProps;\n\tmoney: (n: number) => string;\n\tnumber: (n: number) => string;\n\turl: (v: unknown, use: 'link' | 'image') => string | undefined;\n}\n\n/** A caption's leading figure is bold; a signed one (\"-1.55%\", \"+12\") is red or green too. */\nfunction caption(text: string): ReactNode {\n\tconst m = /^([+\\-\\u2212]?[$\\u20ac\\u00a3\\u20b9]?\\d[\\d,.]*[%KMBTx]?)(.*)$/s.exec(text);\n\tif (!m) return text;\n\t// Only a signed figure says which way it moved; \"12 errors\" is not good news.\n\tconst dir = /^[-\\u2212]/.test(m[1]!) ? 'is-down' : m[1]!.startsWith('+') ? 'is-up' : '';\n\treturn (\n\t\t<>\n\t\t\t<b className={dir || undefined}>{m[1]}</b>\n\t\t\t{m[2]}\n\t\t</>\n\t);\n}\n\n/** Round numbers for the y axis: about `count` steps of 1, 2, 2.5 or 5 x 10^n. */\nfunction niceTicks(lo: number, hi: number, count = 4): number[] {\n\tif (lo === hi) {\n\t\tconst pad = Math.abs(lo) * 0.1 || 1;\n\t\tlo -= pad;\n\t\thi += pad;\n\t}\n\tconst raw = (hi - lo) / count;\n\tconst mag = 10 ** Math.floor(Math.log10(raw));\n\tconst step = ([1, 2, 2.5, 5, 10].find((m) => m * mag >= raw) ?? 10) * mag;\n\tconst ticks: number[] = [];\n\tfor (let t = Math.floor(lo / step) * step; t <= hi + step * 1e-9; t += step) ticks.push(Number(t.toPrecision(12)));\n\tif (ticks[ticks.length - 1]! < hi) ticks.push(Number((ticks[ticks.length - 1]! + step).toPrecision(12)));\n\treturn ticks;\n}\n\n/** Short axis numbers: 1.2K, 3.4M, 5B. */\nfunction compact(n: number, locale?: string): string {\n\ttry {\n\t\treturn new Intl.NumberFormat(locale, {\n\t\t\tnotation: 'compact',\n\t\t\tmaximumFractionDigits: 1,\n\t\t}).format(n);\n\t} catch {\n\t\treturn String(n);\n\t}\n}\n\nfunction Chart({ part, ctx }: { part: WidgetPart; ctx: Ctx }) {\n\tconst box = useRef<HTMLDivElement>(null);\n\tconst gid = `an-w-g${useId().replace(/:/g, '')}`;\n\t// Drawn in real pixels at the box's own width, so text stays at body size\n\t// however wide the card is (a scaled viewBox blew 10px labels up to 40px).\n\tconst [W, setW] = useState(560);\n\tconst [hover, setHover] = useState<number | null>(null);\n\tuseEffect(() => {\n\t\tconst el = box.current;\n\t\tif (!el || typeof ResizeObserver === 'undefined') return;\n\t\tconst ro = new ResizeObserver(([e]) => {\n\t\t\tconst w = Math.round(e!.contentRect.width);\n\t\t\tif (w > 0) setW(w);\n\t\t});\n\t\tro.observe(el);\n\t\treturn () => ro.disconnect();\n\t}, []);\n\tconst series = list<{ name?: unknown; points?: unknown }>(part.series)\n\t\t.map((s) => ({\n\t\t\tname: str(s?.name),\n\t\t\tpoints: list<{ x?: unknown; y?: unknown }>(s?.points).filter((p) => typeof p?.y === 'number' && Number.isFinite(p.y)),\n\t\t}))\n\t\t.filter((s) => s.points.length > 0);\n\tif (series.length === 0) return null;\n\tconst xs = series[0]!.points.map((p) => str(p.x));\n\tconst n = Math.max(...series.map((s) => s.points.length));\n\tconst ref = part.reference as { y?: unknown; label?: unknown } | undefined;\n\tconst refY = typeof ref?.y === 'number' && Number.isFinite(ref.y) ? ref.y : undefined;\n\tconst isBar = part.type === 'bar';\n\tconst ys = [...series.flatMap((s) => s.points.map((p) => p.y as number)), ...(refY === undefined ? [] : [refY])];\n\t// Bars measure from zero, so zero is always in range. A line shows change,\n\t// so it fits its own range: a price moving 520 to 540 must not draw flat.\n\tconst dataLo = Math.min(...ys);\n\tconst dataHi = Math.max(...ys);\n\tconst ticks = isBar ? niceTicks(Math.min(dataLo, 0), Math.max(dataHi, 0)) : niceTicks(dataLo, dataHi);\n\tconst lo = ticks[0]!;\n\tconst hi = ticks[ticks.length - 1]!;\n\tconst span = hi - lo || 1;\n\tconst fmt = (v: number) => (part.unit === 'currency' ? ctx.money(v) : part.unit === 'percent' ? `${ctx.number(v)}%` : ctx.number(v));\n\tconst axis = (v: number) => {\n\t\tconst short = Math.abs(hi) >= 10000 || Math.abs(lo) >= 10000 ? compact(v, ctx.props.locale) : ctx.number(v);\n\t\treturn part.unit === 'currency' ? (fmt(0).replace(/[\\d.,\\s]+/g, '') || '') + short : part.unit === 'percent' ? `${short}%` : short;\n\t};\n\tconst H = 220;\n\tconst top = 12;\n\tconst bottom = 26;\n\tconst left = Math.max(...ticks.map((t) => axis(t).length)) * 6.5 + 10;\n\tconst right = Math.max(12, Math.max(...xs.map((x) => x.length), 1) * 3.3);\n\tconst plotW = Math.max(W - left - right, 40);\n\tconst plotH = H - top - bottom;\n\tconst yOf = (y: number) => top + plotH - ((y - lo) / span) * plotH;\n\tconst step = plotW / Math.max(n, 1);\n\tconst xOf = (i: number) => (isBar ? left + i * step + step / 2 : left + (n === 1 ? plotW / 2 : (i / (n - 1)) * plotW));\n\tconst zero = yOf(Math.max(lo, Math.min(0, hi)));\n\t// Thin the x labels until each fits in the room it has.\n\tconst longest = Math.max(...xs.map((x) => x.length), 1);\n\tconst every = Math.max(1, Math.ceil((longest * 6.5 + 12) / (plotW / Math.max(n, 1))));\n\tconst showDots = false;\n\tconst pick = (e: { clientX: number; currentTarget: SVGSVGElement }) => {\n\t\tconst r = e.currentTarget.getBoundingClientRect();\n\t\tconst px = ((e.clientX - r.left) / r.width) * W;\n\t\tlet best = 0;\n\t\tfor (let i = 1; i < n; i++) if (Math.abs(xOf(i) - px) < Math.abs(xOf(best) - px)) best = i;\n\t\tsetHover(best);\n\t};\n\tconst tipX = hover === null ? 0 : xOf(hover);\n\t// One trend line leads with where it ended and how far it moved, like a stat.\n\tconst only = series.length === 1 && !isBar && series[0]!.points.length >= 2 ? series[0]!.points : undefined;\n\tconst headline = only\n\t\t? (() => {\n\t\t\t\tconst first = only[0]!.y as number;\n\t\t\t\tconst last = only[only.length - 1]!.y as number;\n\t\t\t\tconst delta = last - first;\n\t\t\t\tconst abs = part.unit === 'percent' ? `${ctx.number(Math.abs(delta))} pts` : fmt(Math.abs(delta)).replace('-', '');\n\t\t\t\tconst pct = part.unit !== 'percent' && first > 0 && last >= 0 ? ` (${ctx.number(Math.round((Math.abs(delta) / first) * 1000) / 10)}%)` : '';\n\t\t\t\treturn { last, delta, change: abs + pct, from: str(only[0]!.x) };\n\t\t\t})()\n\t\t: undefined;\n\treturn (\n\t\t<figure className=\"an-w-chart\">\n\t\t\t{str(part.title) && <figcaption>{str(part.title)}</figcaption>}\n\t\t\t{headline && (\n\t\t\t\t<div className=\"an-w-chart-head\">\n\t\t\t\t\t<strong>{fmt(headline.last)}</strong>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{headline.delta === 0 ? 'No change' : `${headline.delta > 0 ? '\\u25B2' : '\\u25BC'} ${headline.change}`} since {headline.from}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t<div ref={box} className=\"an-w-chart-box\">\n\t\t\t\t<svg\n\t\t\t\t\twidth={W}\n\t\t\t\t\theight={H}\n\t\t\t\t\tviewBox={`0 0 ${W} ${H}`}\n\t\t\t\t\trole=\"img\"\n\t\t\t\t\taria-label={str(part.title) || 'Chart'}\n\t\t\t\t\tonMouseMove={pick}\n\t\t\t\t\tonMouseLeave={() => setHover(null)}\n\t\t\t\t>\n\t\t\t\t\t<defs>\n\t\t\t\t\t\t{[0, 1, 2, 3].map((k) => (\n\t\t\t\t\t\t\t<linearGradient key={k} id={`${gid}-${k}`} x1=\"0\" x2=\"0\" y1=\"0\" y2=\"1\">\n\t\t\t\t\t\t\t\t<stop offset=\"0%\" className={`an-w-stop an-w-s${k}`} stopOpacity={part.type === 'area' ? 0.28 : 0.18} />\n\t\t\t\t\t\t\t\t<stop offset=\"100%\" className={`an-w-stop an-w-s${k}`} stopOpacity={0} />\n\t\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</defs>\n\t\t\t\t\t{ticks.map((t) => (\n\t\t\t\t\t\t<g key={t} className=\"an-w-grid\">\n\t\t\t\t\t\t\t<line x1={left} x2={W - right} y1={yOf(t)} y2={yOf(t)} />\n\t\t\t\t\t\t\t<text x={left - 8} y={yOf(t)} dy=\"0.32em\" textAnchor=\"end\">\n\t\t\t\t\t\t\t\t{axis(t)}\n\t\t\t\t\t\t\t</text>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t))}\n\t\t\t\t\t{series.map((s, si) =>\n\t\t\t\t\t\tisBar ? (\n\t\t\t\t\t\t\ts.points.map((p, i) => {\n\t\t\t\t\t\t\t\tconst bw = Math.min((step * 0.7) / series.length, 48);\n\t\t\t\t\t\t\t\tconst x = xOf(i) - (bw * series.length) / 2 + si * bw;\n\t\t\t\t\t\t\t\tconst y = yOf(p.y as number);\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<g key={`${si}-${i}`}>\n\t\t\t\t\t\t\t\t\t\t<rect\n\t\t\t\t\t\t\t\t\t\t\tclassName={`an-w-s${si % 4}${hover !== null && hover !== i ? ' is-dim' : ''}`}\n\t\t\t\t\t\t\t\t\t\t\tx={x + 1}\n\t\t\t\t\t\t\t\t\t\t\ty={Math.min(y, zero)}\n\t\t\t\t\t\t\t\t\t\t\twidth={Math.max(bw - 2, 1)}\n\t\t\t\t\t\t\t\t\t\t\theight={Math.max(Math.abs(zero - y), 1)}\n\t\t\t\t\t\t\t\t\t\t\trx={3}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t{series.length === 1 && n <= 8 && (\n\t\t\t\t\t\t\t\t\t\t\t<text className=\"an-w-val\" x={x + bw / 2} y={Math.min(y, zero) - 6} textAnchor=\"middle\">\n\t\t\t\t\t\t\t\t\t\t\t\t{fmt(p.y as number)}\n\t\t\t\t\t\t\t\t\t\t\t</text>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<g key={si}>\n\t\t\t\t\t\t\t\t{(part.type === 'area' || series.length === 1) && (\n\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\tclassName={`an-w-area an-w-s${si % 4}`}\n\t\t\t\t\t\t\t\t\t\tfill={`url(#${gid}-${si % 4})`}\n\t\t\t\t\t\t\t\t\t\td={`M${xOf(0)},${zero} ${s.points.map((p, i) => `L${xOf(i)},${yOf(p.y as number)}`).join(' ')} L${xOf(s.points.length - 1)},${zero}Z`}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<polyline className={`an-w-line an-w-s${si % 4}`} points={s.points.map((p, i) => `${xOf(i)},${yOf(p.y as number)}`).join(' ')} />\n\t\t\t\t\t\t\t\t{s.points.map((p, i) =>\n\t\t\t\t\t\t\t\t\tshowDots || hover === i || (series.length === 1 && i === s.points.length - 1) ? (\n\t\t\t\t\t\t\t\t\t\t<circle key={i} className={`an-w-s${si % 4}`} cx={xOf(i)} cy={yOf(p.y as number)} r={hover === i ? 4.5 : 4} />\n\t\t\t\t\t\t\t\t\t) : null,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t),\n\t\t\t\t\t)}\n\t\t\t\t\t{lo < 0 && hi > 0 && <line className=\"an-w-zero\" x1={left} x2={W - right} y1={zero} y2={zero} />}\n\t\t\t\t\t{refY !== undefined && (\n\t\t\t\t\t\t<g className=\"an-w-ref\">\n\t\t\t\t\t\t\t<line x1={left} x2={W - right} y1={yOf(refY)} y2={yOf(refY)} />\n\t\t\t\t\t\t\t{str(ref?.label) && (\n\t\t\t\t\t\t\t\t<text x={W - right} y={yOf(refY) - 5} textAnchor=\"end\">\n\t\t\t\t\t\t\t\t\t{str(ref?.label)}\n\t\t\t\t\t\t\t\t</text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</g>\n\t\t\t\t\t)}\n\t\t\t\t\t{xs.map((x, i) =>\n\t\t\t\t\t\ti % every === 0 ? (\n\t\t\t\t\t\t\t<text key={i} x={xOf(i)} y={H - 8} textAnchor=\"middle\">\n\t\t\t\t\t\t\t\t{x}\n\t\t\t\t\t\t\t</text>\n\t\t\t\t\t\t) : null,\n\t\t\t\t\t)}\n\t\t\t\t\t{hover !== null && !isBar && <line className=\"an-w-cross\" x1={tipX} x2={tipX} y1={top} y2={top + plotH} />}\n\t\t\t\t</svg>\n\t\t\t\t{hover !== null && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"an-w-tip\"\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tleft: tipX,\n\t\t\t\t\t\t\ttransform: `translateX(${tipX > W / 2 ? 'calc(-100% - 10px)' : '10px'})`,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<b>{xs[hover]}</b>\n\t\t\t\t\t\t{series.map((s, si) =>\n\t\t\t\t\t\t\ts.points[hover] ? (\n\t\t\t\t\t\t\t\t<span key={si}>\n\t\t\t\t\t\t\t\t\t<i className={`an-w-s${si % 4}`} />\n\t\t\t\t\t\t\t\t\t{series.length > 1 && `${s.name} `}\n\t\t\t\t\t\t\t\t\t<strong>{fmt(s.points[hover]!.y as number)}</strong>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t) : null,\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{series.length > 1 && (\n\t\t\t\t<div className=\"an-w-legend\">\n\t\t\t\t\t{series.map((s, si) => (\n\t\t\t\t\t\t<span key={si}>\n\t\t\t\t\t\t\t<i className={`an-w-s${si % 4}`} />\n\t\t\t\t\t\t\t{s.name}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</figure>\n\t);\n}\n\n/** The default look of one part. `kids` is its children, already drawn. */\nfunction defaultPart(part: WidgetPart, kids: ReactNode, ctx: Ctx): ReactNode {\n\tconst onAsk = ctx.props.onAsk;\n\tswitch (part.component) {\n\t\tcase 'Column':\n\t\t\treturn <div className={`an-w-col an-w-gap-${['small', 'large'].includes(str(part.gap)) ? str(part.gap) : 'medium'}`}>{kids}</div>;\n\t\tcase 'Row':\n\t\t\treturn <div className={`an-w-row${part.scroll === true ? ' is-scroll' : ''}`}>{kids}</div>;\n\t\tcase 'Card': {\n\t\t\tconst image = ctx.url(part.image, 'image');\n\t\t\tconst href = ctx.url(part.href, 'link');\n\t\t\tconst actionHref = ctx.url(part.actionHref, 'link');\n\t\t\tconst actionLabel = str(part.actionLabel);\n\t\t\tif (actionHref && actionLabel) {\n\t\t\t\t// The card's one button (\"Add to cart\") is a link beside the card's\n\t\t\t\t// own link, never inside it.\n\t\t\t\tconst inner = (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{image && <img src={image} alt={str(part.imageAlt)} referrerPolicy=\"no-referrer\" loading=\"lazy\" />}\n\t\t\t\t\t\t<div className=\"an-w-card-body\">{kids}</div>\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t\treturn (\n\t\t\t\t\t<div className=\"an-w-card has-action\">\n\t\t\t\t\t\t{href ? (\n\t\t\t\t\t\t\t<a className=\"an-w-card-main\" href={href} target=\"_blank\" rel=\"noreferrer noopener\">\n\t\t\t\t\t\t\t\t{inner}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<div className=\"an-w-card-main\">{inner}</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<a className=\"an-w-card-action\" href={actionHref} target=\"_blank\" rel=\"noreferrer noopener\">\n\t\t\t\t\t\t\t{actionLabel}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst body = (\n\t\t\t\t<div className=\"an-w-card\">\n\t\t\t\t\t{image && <img src={image} alt={str(part.imageAlt)} referrerPolicy=\"no-referrer\" loading=\"lazy\" />}\n\t\t\t\t\t<div className=\"an-w-card-body\">{kids}</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t\treturn href ? (\n\t\t\t\t<a className=\"an-w-card-link\" href={href} target=\"_blank\" rel=\"noreferrer noopener\">\n\t\t\t\t\t{body}\n\t\t\t\t</a>\n\t\t\t) : (\n\t\t\t\tbody\n\t\t\t);\n\t\t}\n\t\tcase 'Text': {\n\t\t\tif (!str(part.text)) return null;\n\t\t\tconst v = ['title', 'heading', 'caption'].includes(str(part.variant)) ? str(part.variant) : 'body';\n\t\t\treturn <p className={`an-w-text is-${v}`}>{str(part.text)}</p>;\n\t\t}\n\t\tcase 'Stat':\n\t\t\tif (!str(part.value)) return null;\n\t\t\treturn (\n\t\t\t\t<div className=\"an-w-stat\">\n\t\t\t\t\t{str(part.label) && <span>{str(part.label)}</span>}\n\t\t\t\t\t<strong>{str(part.value)}</strong>\n\t\t\t\t\t{str(part.caption) && <small>{caption(str(part.caption))}</small>}\n\t\t\t\t</div>\n\t\t\t);\n\t\tcase 'KeyValue': {\n\t\t\tconst rows = list<{\n\t\t\t\tlabel?: unknown;\n\t\t\t\tvalue?: unknown;\n\t\t\t\temphasis?: unknown;\n\t\t\t}>(part.rows).filter((r) => str(r?.label) || str(r?.value));\n\t\t\tif (rows.length === 0) return null;\n\t\t\treturn (\n\t\t\t\t<div className=\"an-w-kv\">\n\t\t\t\t\t{str(part.title) && <div className=\"an-w-title\">{str(part.title)}</div>}\n\t\t\t\t\t<dl>\n\t\t\t\t\t\t{rows.map((r, i) => (\n\t\t\t\t\t\t\t<div key={i} className={r?.emphasis ? 'is-total' : undefined}>\n\t\t\t\t\t\t\t\t<dt>{str(r?.label)}</dt>\n\t\t\t\t\t\t\t\t<dd>{str(r?.value)}</dd>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</dl>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t\tcase 'Table': {\n\t\t\tconst cols = list(part.columns).map(str);\n\t\t\tconst rows = list(part.rows).filter(Array.isArray) as unknown[][];\n\t\t\tif (cols.length === 0 && rows.length === 0) return null;\n\t\t\t// A column is numeric when every filled cell is a figure (\"521.91\", \"-1.55%\", \"$3.2B\"),\n\t\t\t// and then its header lines up with its numbers on the right.\n\t\t\tconst figure = (c: unknown) => typeof c === 'number' || (typeof c === 'string' && /^[+\\-\\u2212]?[$\\u20ac\\u00a3\\u20b9]?\\d[\\d,.]*\\s?[%KMBTx]?$/.test(c.trim()));\n\t\t\tconst numCol = (j: number) => {\n\t\t\t\tconst filled = rows.map((r) => r[j]).filter((c) => c !== null && c !== undefined && c !== '');\n\t\t\t\treturn filled.length > 0 && filled.every(figure);\n\t\t\t};\n\t\t\tconst nums = Array.from({ length: Math.max(cols.length, ...rows.map((r) => r.length)) }, (_, j) => numCol(j));\n\t\t\treturn (\n\t\t\t\t<div className=\"an-w-table\">\n\t\t\t\t\t{str(part.title) && <div className=\"an-w-title\">{str(part.title)}</div>}\n\t\t\t\t\t<table>\n\t\t\t\t\t\t{cols.length > 0 && (\n\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t{cols.map((c, j) => (\n\t\t\t\t\t\t\t\t\t\t<th key={j} className={nums[j] ? 'is-num' : undefined}>\n\t\t\t\t\t\t\t\t\t\t\t{c}\n\t\t\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t{rows.map((r, i) => (\n\t\t\t\t\t\t\t\t<tr key={i}>\n\t\t\t\t\t\t\t\t\t{r.map((c, j) => (\n\t\t\t\t\t\t\t\t\t\t<td key={j} className={nums[j] ? 'is-num' : undefined}>\n\t\t\t\t\t\t\t\t\t\t\t{typeof c === 'number' ? ctx.number(c) : str(c)}\n\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t</table>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t\tcase 'Chart':\n\t\t\treturn <Chart part={part} ctx={ctx} />;\n\t\tcase 'Image': {\n\t\t\tconst url = ctx.url(part.url, 'image');\n\t\t\treturn url ? (\n\t\t\t\t<figure className=\"an-w-image\">\n\t\t\t\t\t<img src={url} alt={str(part.alt)} referrerPolicy=\"no-referrer\" loading=\"lazy\" />\n\t\t\t\t\t{str(part.caption) && <figcaption>{str(part.caption)}</figcaption>}\n\t\t\t\t</figure>\n\t\t\t) : null;\n\t\t}\n\t\tcase 'List': {\n\t\t\tconst items = list<{\n\t\t\t\ttitle?: unknown;\n\t\t\t\tdetail?: unknown;\n\t\t\t\tmeta?: unknown;\n\t\t\t\ttone?: unknown;\n\t\t\t}>(part.items).filter((it) => str(it?.title));\n\t\t\tif (items.length === 0) return null;\n\t\t\tconst Tag = part.ordered === true ? 'ol' : 'ul';\n\t\t\treturn (\n\t\t\t\t<div className=\"an-w-list\">\n\t\t\t\t\t{str(part.title) && <div className=\"an-w-title\">{str(part.title)}</div>}\n\t\t\t\t\t<Tag>\n\t\t\t\t\t\t{items.map((it, i) => (\n\t\t\t\t\t\t\t<li key={i}>\n\t\t\t\t\t\t\t\t<i className={`an-w-dot is-${toneOf(it?.tone)}`} aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<strong>{str(it?.title)}</strong>\n\t\t\t\t\t\t\t\t\t{str(it?.detail) && <span>{str(it?.detail)}</span>}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t{str(it?.meta) && <small>{str(it?.meta)}</small>}\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</Tag>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t\tcase 'Note':\n\t\t\tif (!str(part.text)) return null;\n\t\t\treturn (\n\t\t\t\t<div className=\"an-w-note\">\n\t\t\t\t\t{str(part.title) && <strong>{str(part.title)}</strong>}\n\t\t\t\t\t<span>{str(part.text)}</span>\n\t\t\t\t</div>\n\t\t\t);\n\t\tcase 'Badge':\n\t\t\treturn str(part.text) ? <span className={`an-w-badge is-${toneOf(part.tone)}`}>{str(part.text)}</span> : null;\n\t\tcase 'Link': {\n\t\t\tconst url = ctx.url(part.url, 'link');\n\t\t\treturn url && str(part.label) ? (\n\t\t\t\t<a className=\"an-w-link\" href={url} target=\"_blank\" rel=\"noreferrer noopener\">\n\t\t\t\t\t{str(part.label)}\n\t\t\t\t</a>\n\t\t\t) : null;\n\t\t}\n\t\tcase 'Button':\n\t\t\tif (!str(part.label)) return null;\n\t\t\treturn (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName={`an-w-button is-${part.variant === 'secondary' ? 'secondary' : 'primary'}`}\n\t\t\t\t\tdisabled={!onAsk}\n\t\t\t\t\tonClick={() => onAsk?.(str(part.label))}\n\t\t\t\t>\n\t\t\t\t\t{str(part.label)}\n\t\t\t\t</button>\n\t\t\t);\n\t\tcase 'Suggestions': {\n\t\t\tconst options = list(part.options).map(str).filter(Boolean);\n\t\t\tif (options.length === 0) return null;\n\t\t\treturn (\n\t\t\t\t<div className=\"an-w-suggest\">\n\t\t\t\t\t{options.map((o, i) => (\n\t\t\t\t\t\t<button key={i} type=\"button\" disabled={!onAsk} onClick={() => onAsk?.(o)}>\n\t\t\t\t\t\t\t{o}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t\tcase 'Divider':\n\t\t\treturn <hr className=\"an-w-divider\" />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\nconst CONTAINERS = new Set(['Column', 'Row', 'Card']);\n\n// A plain function, not a component: the set of parts already drawn lives for\n// one render of the widget. As a component, React's development mode would draw\n// each part twice and find every one \"already drawn\" on its second pass.\nfunction draw(id: string, ctx: Ctx): ReactNode {\n\tconst part = ctx.byId.get(id);\n\t// A part listed twice, or a loop of containers, is drawn once.\n\tif (!part || ctx.seen.has(id)) return null;\n\tctx.seen.add(id);\n\tconst kids = CONTAINERS.has(part.component)\n\t\t? list(part.children)\n\t\t\t\t.filter((k): k is string => typeof k === 'string')\n\t\t\t\t.map((k) => <Fragment key={k}>{draw(k, ctx)}</Fragment>)\n\t\t: undefined;\n\tconst own = ctx.props.parts?.[part.component as WidgetKind];\n\treturn own ? own({ part, children: kids, onAsk: ctx.props.onAsk }) : defaultPart(part, kids, ctx);\n}\n\n/** One widget, drawn from its root part. Draws nothing when there is no root yet. */\nexport function WidgetView(props: WidgetViewProps) {\n\tconst { widget, currency = 'USD', locale, allowUrl } = props;\n\tconst byId = new Map<string, WidgetPart>();\n\tfor (const p of Array.isArray(widget?.components) ? widget.components : []) {\n\t\tif (p && typeof p === 'object' && typeof p.id === 'string' && typeof p.component === 'string' && !byId.has(p.id)) byId.set(p.id, p);\n\t}\n\tif (!byId.has('root')) return null;\n\tlet moneyFormat: Intl.NumberFormat;\n\ttry {\n\t\tmoneyFormat = new Intl.NumberFormat(locale, {\n\t\t\tstyle: 'currency',\n\t\t\tcurrency,\n\t\t\tmaximumFractionDigits: 0,\n\t\t});\n\t} catch {\n\t\tmoneyFormat = new Intl.NumberFormat(locale, { maximumFractionDigits: 0 });\n\t}\n\tconst numberFormat = new Intl.NumberFormat(locale);\n\tconst ctx: Ctx = {\n\t\tbyId,\n\t\tseen: new Set(),\n\t\tprops,\n\t\tmoney: (n) => moneyFormat.format(n),\n\t\tnumber: (n) => numberFormat.format(n),\n\t\turl: (v, use) => (typeof v === 'string' && httpsOnly(v) && (allowUrl ? allowUrl(v, use) : true) ? v : undefined),\n\t};\n\treturn (\n\t\t<Boundary>\n\t\t\t<div className={`an-w${props.className ? ` ${props.className}` : ''}`} data-surface={widget.surfaceId}>\n\t\t\t\t{draw('root', ctx)}\n\t\t\t</div>\n\t\t</Boundary>\n\t);\n}\n\nfunction Paragraphs({ text }: { text: string }) {\n\treturn (\n\t\t<>\n\t\t\t{text\n\t\t\t\t.trim()\n\t\t\t\t.split(/\\n{2,}/)\n\t\t\t\t.map((p, i) => (\n\t\t\t\t\t<p key={i} className=\"an-reply-text\">\n\t\t\t\t\t\t{p.split('\\n').map((line, j) => (\n\t\t\t\t\t\t\t<Fragment key={j}>\n\t\t\t\t\t\t\t\t{j > 0 && <br />}\n\t\t\t\t\t\t\t\t{line}\n\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</p>\n\t\t\t\t))}\n\t\t</>\n\t);\n}\n\n/** A whole reply: its words, with each widget drawn where it sits. */\nexport function ReplyView({ text, widgets, renderText, className, ...widgetProps }: ReplyViewProps) {\n\treturn (\n\t\t<div className={`an-reply${className ? ` ${className}` : ''}`}>\n\t\t\t{placeWidgets(text, widgets ?? []).map((piece, i) =>\n\t\t\t\tpiece.kind === 'text' ? (\n\t\t\t\t\t<Fragment key={`t${i}`}>{renderText ? renderText(piece.text) : <Paragraphs text={piece.text} />}</Fragment>\n\t\t\t\t) : (\n\t\t\t\t\t<WidgetView key={piece.widget.surfaceId} widget={piece.widget} {...widgetProps} />\n\t\t\t\t),\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"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","sourcesContent":["// Ready-made React views for the widgets an agent draws in its replies.\n//\n// import { ReplyView } from '@cerebro-labs/agentnava-sdk/react'\n// import '@cerebro-labs/agentnava-sdk/react/styles.css'\n//\n// <ReplyView text={reply} widgets={widgets} onAsk={send} />\n//\n// React is optional for the SDK: only this entry needs it, and the rest of the\n// package never imports it. Every kind of part has a default look (styles.css,\n// themed through CSS variables), and any kind can be swapped for your own\n// component with `parts`.\n//\n// A widget is written by the model, so it is drawn defensively: a kind this\n// does not know, or a part missing a field, is skipped; each part is drawn\n// once, even if two containers name it; links and pictures open only over\n// https:// (narrow it further with `allowUrl`); and a widget that throws while\n// drawing is left out rather than breaking the screen around it.\n\nimport { Component, Fragment, type ReactNode, useEffect, useId, useRef, useState } from 'react';\nimport type { Widget, WidgetPart } from './types.ts';\nimport { placeWidgets } from './widgets.ts';\n\nexport { placeWidgets, type ReplyPiece } from './widgets.ts';\n\n/** Every kind of part an agent may draw. */\nexport type WidgetKind =\n\t| 'Column'\n\t| 'Row'\n\t| 'Card'\n\t| 'Text'\n\t| 'Stat'\n\t| 'KeyValue'\n\t| 'Table'\n\t| 'Chart'\n\t| 'Image'\n\t| 'List'\n\t| 'Note'\n\t| 'Badge'\n\t| 'Link'\n\t| 'Button'\n\t| 'Suggestions'\n\t| 'Divider';\n\n/** What a replacement for one kind of part receives. */\nexport interface PartProps {\n\tpart: WidgetPart;\n\t/** The part's children, already drawn (containers only). */\n\tchildren?: ReactNode;\n\t/** Send words as the reader's next message (Button, Suggestions). */\n\tonAsk?: ((text: string) => void) | undefined;\n}\n\nexport interface WidgetViewProps {\n\twidget: Widget;\n\t/** Called with a Button's label or a tapped suggestion: send it as the next message. */\n\tonAsk?: (text: string) => void;\n\t/** Your own component for any kind of part, in place of the default. */\n\tparts?: Partial<Record<WidgetKind, (props: PartProps) => ReactNode>>;\n\t/** ISO currency code for charts and numbers marked as money. Default \"USD\". */\n\tcurrency?: string;\n\t/** Locale for numbers. Default: the reader's. */\n\tlocale?: string;\n\t/** Whether a link or picture address may be opened. Default: https:// only. */\n\tallowUrl?: (url: string, use: 'link' | 'image') => boolean;\n\tclassName?: string;\n}\n\nexport interface ReplyViewProps extends Omit<WidgetViewProps, 'widget' | 'className'> {\n\t/** The reply's words, as `text` events or `done.reply` give them. */\n\ttext: string;\n\t/** The reply's widgets, as `widget` events or `done.widgets` give them. */\n\twidgets?: readonly Widget[] | undefined;\n\t/** How to draw the words. Default: paragraphs. Pass your markdown renderer here. */\n\trenderText?: (text: string) => ReactNode;\n\tclassName?: string;\n}\n\nconst str = (v: unknown): string => (typeof v === 'string' || typeof v === 'number' ? String(v) : '');\nconst list = <T = unknown,>(v: unknown): T[] => (Array.isArray(v) ? (v as T[]) : []);\nconst TONES = new Set(['high', 'medium', 'low', 'good', 'info']);\nconst toneOf = (v: unknown): string => (typeof v === 'string' && TONES.has(v) ? v : 'info');\nconst httpsOnly = (url: string) => /^https:\\/\\//i.test(url);\n\n/** A widget that throws while drawing is left out, never a crash of the screen. */\nclass Boundary extends Component<{ children: ReactNode }, { failed: boolean }> {\n\toverride state = { failed: false };\n\tstatic getDerivedStateFromError() {\n\t\treturn { failed: true };\n\t}\n\toverride render() {\n\t\treturn this.state.failed ? null : this.props.children;\n\t}\n}\n\ninterface Ctx {\n\tbyId: Map<string, WidgetPart>;\n\tseen: Set<string>;\n\tprops: WidgetViewProps;\n\tmoney: (n: number) => string;\n\tnumber: (n: number) => string;\n\turl: (v: unknown, use: 'link' | 'image') => string | undefined;\n}\n\n/** A caption's leading figure is bold; a signed one (\"-1.55%\", \"+12\") is red or green too. */\nfunction caption(text: string): ReactNode {\n\tconst m = /^([+\\-\\u2212]?[$\\u20ac\\u00a3\\u20b9]?\\d[\\d,.]*[%KMBTx]?)(.*)$/s.exec(text);\n\tif (!m) return text;\n\t// Only a signed figure says which way it moved; \"12 errors\" is not good news.\n\tconst dir = /^[-\\u2212]/.test(m[1]!) ? 'is-down' : m[1]!.startsWith('+') ? 'is-up' : '';\n\treturn (\n\t\t<>\n\t\t\t<b className={dir || undefined}>{m[1]}</b>\n\t\t\t{m[2]}\n\t\t</>\n\t);\n}\n\n/** Round numbers for the y axis: about `count` steps of 1, 2, 2.5 or 5 x 10^n. */\nfunction niceTicks(lo: number, hi: number, count = 4): number[] {\n\tif (lo === hi) {\n\t\tconst pad = Math.abs(lo) * 0.1 || 1;\n\t\tlo -= pad;\n\t\thi += pad;\n\t}\n\tconst raw = (hi - lo) / count;\n\tconst mag = 10 ** Math.floor(Math.log10(raw));\n\tconst step = ([1, 2, 2.5, 5, 10].find((m) => m * mag >= raw) ?? 10) * mag;\n\tconst ticks: number[] = [];\n\tfor (let t = Math.floor(lo / step) * step; t <= hi + step * 1e-9; t += step) ticks.push(Number(t.toPrecision(12)));\n\tif (ticks[ticks.length - 1]! < hi) ticks.push(Number((ticks[ticks.length - 1]! + step).toPrecision(12)));\n\treturn ticks;\n}\n\n/** Short axis numbers: 1.2K, 3.4M, 5B. */\nfunction compact(n: number, locale?: string): string {\n\ttry {\n\t\treturn new Intl.NumberFormat(locale, {\n\t\t\tnotation: 'compact',\n\t\t\tmaximumFractionDigits: 1,\n\t\t}).format(n);\n\t} catch {\n\t\treturn String(n);\n\t}\n}\n\nfunction Chart({ part, ctx }: { part: WidgetPart; ctx: Ctx }) {\n\tconst box = useRef<HTMLDivElement>(null);\n\tconst gid = `an-w-g${useId().replace(/:/g, '')}`;\n\t// Drawn in real pixels at the box's own width, so text stays at body size\n\t// however wide the card is (a scaled viewBox blew 10px labels up to 40px).\n\tconst [W, setW] = useState(560);\n\tconst [hover, setHover] = useState<number | null>(null);\n\tuseEffect(() => {\n\t\tconst el = box.current;\n\t\tif (!el || typeof ResizeObserver === 'undefined') return;\n\t\tconst ro = new ResizeObserver(([e]) => {\n\t\t\tconst w = Math.round(e!.contentRect.width);\n\t\t\tif (w > 0) setW(w);\n\t\t});\n\t\tro.observe(el);\n\t\treturn () => ro.disconnect();\n\t}, []);\n\tconst series = list<{ name?: unknown; points?: unknown }>(part.series)\n\t\t.map((s) => ({\n\t\t\tname: str(s?.name),\n\t\t\tpoints: list<{ x?: unknown; y?: unknown }>(s?.points).filter((p) => typeof p?.y === 'number' && Number.isFinite(p.y)),\n\t\t}))\n\t\t.filter((s) => s.points.length > 0);\n\tif (series.length === 0) return null;\n\tconst xs = series[0]!.points.map((p) => str(p.x));\n\tconst n = Math.max(...series.map((s) => s.points.length));\n\tconst ref = part.reference as { y?: unknown; label?: unknown } | undefined;\n\tconst refY = typeof ref?.y === 'number' && Number.isFinite(ref.y) ? ref.y : undefined;\n\tconst isBar = part.type === 'bar';\n\tconst ys = [...series.flatMap((s) => s.points.map((p) => p.y as number)), ...(refY === undefined ? [] : [refY])];\n\t// Bars measure from zero, so zero is always in range. A line shows change,\n\t// so it fits its own range: a price moving 520 to 540 must not draw flat.\n\tconst dataLo = Math.min(...ys);\n\tconst dataHi = Math.max(...ys);\n\tconst ticks = isBar ? niceTicks(Math.min(dataLo, 0), Math.max(dataHi, 0)) : niceTicks(dataLo, dataHi);\n\tconst lo = ticks[0]!;\n\tconst hi = ticks[ticks.length - 1]!;\n\tconst span = hi - lo || 1;\n\tconst fmt = (v: number) => (part.unit === 'currency' ? ctx.money(v) : part.unit === 'percent' ? `${ctx.number(v)}%` : ctx.number(v));\n\tconst axis = (v: number) => {\n\t\tconst short = Math.abs(hi) >= 10000 || Math.abs(lo) >= 10000 ? compact(v, ctx.props.locale) : ctx.number(v);\n\t\treturn part.unit === 'currency' ? (fmt(0).replace(/[\\d.,\\s]+/g, '') || '') + short : part.unit === 'percent' ? `${short}%` : short;\n\t};\n\tconst H = 220;\n\tconst top = 12;\n\tconst bottom = 26;\n\tconst left = Math.max(...ticks.map((t) => axis(t).length)) * 6.5 + 10;\n\tconst right = Math.max(12, Math.max(...xs.map((x) => x.length), 1) * 3.3);\n\tconst plotW = Math.max(W - left - right, 40);\n\tconst plotH = H - top - bottom;\n\tconst yOf = (y: number) => top + plotH - ((y - lo) / span) * plotH;\n\tconst step = plotW / Math.max(n, 1);\n\tconst xOf = (i: number) => (isBar ? left + i * step + step / 2 : left + (n === 1 ? plotW / 2 : (i / (n - 1)) * plotW));\n\tconst zero = yOf(Math.max(lo, Math.min(0, hi)));\n\t// Thin the x labels until each fits in the room it has.\n\tconst longest = Math.max(...xs.map((x) => x.length), 1);\n\tconst every = Math.max(1, Math.ceil((longest * 6.5 + 12) / (plotW / Math.max(n, 1))));\n\tconst showDots = false;\n\tconst pick = (e: { clientX: number; currentTarget: SVGSVGElement }) => {\n\t\tconst r = e.currentTarget.getBoundingClientRect();\n\t\tconst px = ((e.clientX - r.left) / r.width) * W;\n\t\tlet best = 0;\n\t\tfor (let i = 1; i < n; i++) if (Math.abs(xOf(i) - px) < Math.abs(xOf(best) - px)) best = i;\n\t\tsetHover(best);\n\t};\n\tconst tipX = hover === null ? 0 : xOf(hover);\n\t// One trend line leads with where it ended and how far it moved, like a stat.\n\tconst only = series.length === 1 && !isBar && series[0]!.points.length >= 2 ? series[0]!.points : undefined;\n\tconst headline = only\n\t\t? (() => {\n\t\t\t\tconst first = only[0]!.y as number;\n\t\t\t\tconst last = only[only.length - 1]!.y as number;\n\t\t\t\tconst delta = last - first;\n\t\t\t\tconst abs = part.unit === 'percent' ? `${ctx.number(Math.abs(delta))} pts` : fmt(Math.abs(delta)).replace('-', '');\n\t\t\t\tconst pct = part.unit !== 'percent' && first > 0 && last >= 0 ? ` (${ctx.number(Math.round((Math.abs(delta) / first) * 1000) / 10)}%)` : '';\n\t\t\t\treturn { last, delta, change: abs + pct, from: str(only[0]!.x) };\n\t\t\t})()\n\t\t: undefined;\n\treturn (\n\t\t<figure className=\"an-w-chart\">\n\t\t\t{str(part.title) && <figcaption>{str(part.title)}</figcaption>}\n\t\t\t{headline && (\n\t\t\t\t<div className=\"an-w-chart-head\">\n\t\t\t\t\t<strong>{fmt(headline.last)}</strong>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{headline.delta === 0 ? 'No change' : `${headline.delta > 0 ? '\\u25B2' : '\\u25BC'} ${headline.change}`} since {headline.from}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t<div ref={box} className=\"an-w-chart-box\">\n\t\t\t\t<svg\n\t\t\t\t\twidth={W}\n\t\t\t\t\theight={H}\n\t\t\t\t\tviewBox={`0 0 ${W} ${H}`}\n\t\t\t\t\trole=\"img\"\n\t\t\t\t\taria-label={str(part.title) || 'Chart'}\n\t\t\t\t\tonMouseMove={pick}\n\t\t\t\t\tonMouseLeave={() => setHover(null)}\n\t\t\t\t>\n\t\t\t\t\t<defs>\n\t\t\t\t\t\t{[0, 1, 2, 3].map((k) => (\n\t\t\t\t\t\t\t<linearGradient key={k} id={`${gid}-${k}`} x1=\"0\" x2=\"0\" y1=\"0\" y2=\"1\">\n\t\t\t\t\t\t\t\t<stop offset=\"0%\" className={`an-w-stop an-w-s${k}`} stopOpacity={part.type === 'area' ? 0.28 : 0.18} />\n\t\t\t\t\t\t\t\t<stop offset=\"100%\" className={`an-w-stop an-w-s${k}`} stopOpacity={0} />\n\t\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</defs>\n\t\t\t\t\t{ticks.map((t) => (\n\t\t\t\t\t\t<g key={t} className=\"an-w-grid\">\n\t\t\t\t\t\t\t<line x1={left} x2={W - right} y1={yOf(t)} y2={yOf(t)} />\n\t\t\t\t\t\t\t<text x={left - 8} y={yOf(t)} dy=\"0.32em\" textAnchor=\"end\">\n\t\t\t\t\t\t\t\t{axis(t)}\n\t\t\t\t\t\t\t</text>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t))}\n\t\t\t\t\t{series.map((s, si) =>\n\t\t\t\t\t\tisBar ? (\n\t\t\t\t\t\t\ts.points.map((p, i) => {\n\t\t\t\t\t\t\t\tconst bw = Math.min((step * 0.7) / series.length, 48);\n\t\t\t\t\t\t\t\tconst x = xOf(i) - (bw * series.length) / 2 + si * bw;\n\t\t\t\t\t\t\t\tconst y = yOf(p.y as number);\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<g key={`${si}-${i}`}>\n\t\t\t\t\t\t\t\t\t\t<rect\n\t\t\t\t\t\t\t\t\t\t\tclassName={`an-w-s${si % 4}${hover !== null && hover !== i ? ' is-dim' : ''}`}\n\t\t\t\t\t\t\t\t\t\t\tx={x + 1}\n\t\t\t\t\t\t\t\t\t\t\ty={Math.min(y, zero)}\n\t\t\t\t\t\t\t\t\t\t\twidth={Math.max(bw - 2, 1)}\n\t\t\t\t\t\t\t\t\t\t\theight={Math.max(Math.abs(zero - y), 1)}\n\t\t\t\t\t\t\t\t\t\t\trx={3}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t{series.length === 1 && n <= 8 && (\n\t\t\t\t\t\t\t\t\t\t\t<text className=\"an-w-val\" x={x + bw / 2} y={Math.min(y, zero) - 6} textAnchor=\"middle\">\n\t\t\t\t\t\t\t\t\t\t\t\t{fmt(p.y as number)}\n\t\t\t\t\t\t\t\t\t\t\t</text>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<g key={si}>\n\t\t\t\t\t\t\t\t{(part.type === 'area' || series.length === 1) && (\n\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\tclassName={`an-w-area an-w-s${si % 4}`}\n\t\t\t\t\t\t\t\t\t\tfill={`url(#${gid}-${si % 4})`}\n\t\t\t\t\t\t\t\t\t\td={`M${xOf(0)},${zero} ${s.points.map((p, i) => `L${xOf(i)},${yOf(p.y as number)}`).join(' ')} L${xOf(s.points.length - 1)},${zero}Z`}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<polyline className={`an-w-line an-w-s${si % 4}`} points={s.points.map((p, i) => `${xOf(i)},${yOf(p.y as number)}`).join(' ')} />\n\t\t\t\t\t\t\t\t{s.points.map((p, i) =>\n\t\t\t\t\t\t\t\t\tshowDots || hover === i || (series.length === 1 && i === s.points.length - 1) ? (\n\t\t\t\t\t\t\t\t\t\t<circle key={i} className={`an-w-s${si % 4}`} cx={xOf(i)} cy={yOf(p.y as number)} r={hover === i ? 4.5 : 4} />\n\t\t\t\t\t\t\t\t\t) : null,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t),\n\t\t\t\t\t)}\n\t\t\t\t\t{lo < 0 && hi > 0 && <line className=\"an-w-zero\" x1={left} x2={W - right} y1={zero} y2={zero} />}\n\t\t\t\t\t{refY !== undefined && (\n\t\t\t\t\t\t<g className=\"an-w-ref\">\n\t\t\t\t\t\t\t<line x1={left} x2={W - right} y1={yOf(refY)} y2={yOf(refY)} />\n\t\t\t\t\t\t\t{str(ref?.label) && (\n\t\t\t\t\t\t\t\t<text x={W - right} y={yOf(refY) - 5} textAnchor=\"end\">\n\t\t\t\t\t\t\t\t\t{str(ref?.label)}\n\t\t\t\t\t\t\t\t</text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</g>\n\t\t\t\t\t)}\n\t\t\t\t\t{xs.map((x, i) =>\n\t\t\t\t\t\ti % every === 0 ? (\n\t\t\t\t\t\t\t<text key={i} x={xOf(i)} y={H - 8} textAnchor=\"middle\">\n\t\t\t\t\t\t\t\t{x}\n\t\t\t\t\t\t\t</text>\n\t\t\t\t\t\t) : null,\n\t\t\t\t\t)}\n\t\t\t\t\t{hover !== null && !isBar && <line className=\"an-w-cross\" x1={tipX} x2={tipX} y1={top} y2={top + plotH} />}\n\t\t\t\t</svg>\n\t\t\t\t{hover !== null && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"an-w-tip\"\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tleft: tipX,\n\t\t\t\t\t\t\ttransform: `translateX(${tipX > W / 2 ? 'calc(-100% - 10px)' : '10px'})`,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<b>{xs[hover]}</b>\n\t\t\t\t\t\t{series.map((s, si) =>\n\t\t\t\t\t\t\ts.points[hover] ? (\n\t\t\t\t\t\t\t\t<span key={si}>\n\t\t\t\t\t\t\t\t\t<i className={`an-w-s${si % 4}`} />\n\t\t\t\t\t\t\t\t\t{series.length > 1 && `${s.name} `}\n\t\t\t\t\t\t\t\t\t<strong>{fmt(s.points[hover]!.y as number)}</strong>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t) : null,\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{series.length > 1 && (\n\t\t\t\t<div className=\"an-w-legend\">\n\t\t\t\t\t{series.map((s, si) => (\n\t\t\t\t\t\t<span key={si}>\n\t\t\t\t\t\t\t<i className={`an-w-s${si % 4}`} />\n\t\t\t\t\t\t\t{s.name}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</figure>\n\t);\n}\n\n/** The default look of one part. `kids` is its children, already drawn. */\nfunction defaultPart(part: WidgetPart, kids: ReactNode, ctx: Ctx): ReactNode {\n\tconst onAsk = ctx.props.onAsk;\n\tswitch (part.component) {\n\t\tcase 'Column':\n\t\t\treturn <div className={`an-w-col an-w-gap-${['small', 'large'].includes(str(part.gap)) ? str(part.gap) : 'medium'}`}>{kids}</div>;\n\t\tcase 'Row':\n\t\t\treturn <div className={`an-w-row${part.scroll === true ? ' is-scroll' : ''}`}>{kids}</div>;\n\t\tcase 'Card': {\n\t\t\tconst image = ctx.url(part.image, 'image');\n\t\t\tconst href = ctx.url(part.href, 'link');\n\t\t\tconst actionHref = ctx.url(part.actionHref, 'link');\n\t\t\tconst actionLabel = str(part.actionLabel);\n\t\t\tif (actionHref && actionLabel) {\n\t\t\t\t// The card's one button (\"Add to cart\") is a link beside the card's\n\t\t\t\t// own link, never inside it.\n\t\t\t\tconst inner = (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{image && <img src={image} alt={str(part.imageAlt)} referrerPolicy=\"no-referrer\" loading=\"lazy\" />}\n\t\t\t\t\t\t<div className=\"an-w-card-body\">{kids}</div>\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t\treturn (\n\t\t\t\t\t<div className=\"an-w-card has-action\">\n\t\t\t\t\t\t{href ? (\n\t\t\t\t\t\t\t<a className=\"an-w-card-main\" href={href} target=\"_blank\" rel=\"noreferrer noopener\">\n\t\t\t\t\t\t\t\t{inner}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<div className=\"an-w-card-main\">{inner}</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<a className=\"an-w-card-action\" href={actionHref} target=\"_blank\" rel=\"noreferrer noopener\">\n\t\t\t\t\t\t\t{actionLabel}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst body = (\n\t\t\t\t<div className=\"an-w-card\">\n\t\t\t\t\t{image && <img src={image} alt={str(part.imageAlt)} referrerPolicy=\"no-referrer\" loading=\"lazy\" />}\n\t\t\t\t\t<div className=\"an-w-card-body\">{kids}</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t\treturn href ? (\n\t\t\t\t<a className=\"an-w-card-link\" href={href} target=\"_blank\" rel=\"noreferrer noopener\">\n\t\t\t\t\t{body}\n\t\t\t\t</a>\n\t\t\t) : (\n\t\t\t\tbody\n\t\t\t);\n\t\t}\n\t\tcase 'Text': {\n\t\t\tif (!str(part.text)) return null;\n\t\t\tconst v = ['title', 'heading', 'caption'].includes(str(part.variant)) ? str(part.variant) : 'body';\n\t\t\treturn <p className={`an-w-text is-${v}`}>{str(part.text)}</p>;\n\t\t}\n\t\tcase 'Stat':\n\t\t\tif (!str(part.value)) return null;\n\t\t\treturn (\n\t\t\t\t<div className=\"an-w-stat\">\n\t\t\t\t\t{str(part.label) && <span>{str(part.label)}</span>}\n\t\t\t\t\t<strong>{str(part.value)}</strong>\n\t\t\t\t\t{str(part.caption) && <small>{caption(str(part.caption))}</small>}\n\t\t\t\t</div>\n\t\t\t);\n\t\tcase 'KeyValue': {\n\t\t\tconst rows = list<{\n\t\t\t\tlabel?: unknown;\n\t\t\t\tvalue?: unknown;\n\t\t\t\temphasis?: unknown;\n\t\t\t}>(part.rows).filter((r) => str(r?.label) || str(r?.value));\n\t\t\tif (rows.length === 0) return null;\n\t\t\treturn (\n\t\t\t\t<div className=\"an-w-kv\">\n\t\t\t\t\t{str(part.title) && <div className=\"an-w-title\">{str(part.title)}</div>}\n\t\t\t\t\t<dl>\n\t\t\t\t\t\t{rows.map((r, i) => (\n\t\t\t\t\t\t\t<div key={i} className={r?.emphasis ? 'is-total' : undefined}>\n\t\t\t\t\t\t\t\t<dt>{str(r?.label)}</dt>\n\t\t\t\t\t\t\t\t<dd>{str(r?.value)}</dd>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</dl>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t\tcase 'Table': {\n\t\t\tconst cols = list(part.columns).map(str);\n\t\t\tconst rows = list(part.rows).filter(Array.isArray) as unknown[][];\n\t\t\tif (cols.length === 0 && rows.length === 0) return null;\n\t\t\t// A column is numeric when every filled cell is a figure (\"521.91\", \"-1.55%\", \"$3.2B\"),\n\t\t\t// and then its header lines up with its numbers on the right.\n\t\t\tconst figure = (c: unknown) => typeof c === 'number' || (typeof c === 'string' && /^[+\\-\\u2212]?[$\\u20ac\\u00a3\\u20b9]?\\d[\\d,.]*\\s?[%KMBTx]?$/.test(c.trim()));\n\t\t\tconst numCol = (j: number) => {\n\t\t\t\tconst filled = rows.map((r) => r[j]).filter((c) => c !== null && c !== undefined && c !== '');\n\t\t\t\treturn filled.length > 0 && filled.every(figure);\n\t\t\t};\n\t\t\tconst nums = Array.from({ length: Math.max(cols.length, ...rows.map((r) => r.length)) }, (_, j) => numCol(j));\n\t\t\treturn (\n\t\t\t\t<div className=\"an-w-table\">\n\t\t\t\t\t{str(part.title) && (\n\t\t\t\t\t\t<div className=\"an-w-title\">\n\t\t\t\t\t\t\t{str(part.title)}\n\t\t\t\t\t\t\t{rows.length > 3 && <span>{rows.length} rows</span>}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<table>\n\t\t\t\t\t\t{cols.length > 0 && (\n\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t{cols.map((c, j) => (\n\t\t\t\t\t\t\t\t\t\t<th key={j} className={nums[j] ? 'is-num' : undefined}>\n\t\t\t\t\t\t\t\t\t\t\t{c}\n\t\t\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t{rows.map((r, i) => (\n\t\t\t\t\t\t\t\t<tr key={i}>\n\t\t\t\t\t\t\t\t\t{r.map((c, j) => (\n\t\t\t\t\t\t\t\t\t\t<td key={j} className={nums[j] ? 'is-num' : undefined}>\n\t\t\t\t\t\t\t\t\t\t\t{typeof c === 'string' && /^[+\\-\\u2212]\\d/.test(c.trim()) ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<em className={/^\\+/.test(c.trim()) ? 'is-up' : 'is-down'}>{c}</em>\n\t\t\t\t\t\t\t\t\t\t\t) : typeof c === 'number' ? (\n\t\t\t\t\t\t\t\t\t\t\t\tctx.number(c)\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\tstr(c)\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t</table>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t\tcase 'Chart':\n\t\t\treturn <Chart part={part} ctx={ctx} />;\n\t\tcase 'Image': {\n\t\t\tconst url = ctx.url(part.url, 'image');\n\t\t\treturn url ? (\n\t\t\t\t<figure className=\"an-w-image\">\n\t\t\t\t\t<img src={url} alt={str(part.alt)} referrerPolicy=\"no-referrer\" loading=\"lazy\" />\n\t\t\t\t\t{str(part.caption) && <figcaption>{str(part.caption)}</figcaption>}\n\t\t\t\t</figure>\n\t\t\t) : null;\n\t\t}\n\t\tcase 'List': {\n\t\t\tconst items = list<{\n\t\t\t\ttitle?: unknown;\n\t\t\t\tdetail?: unknown;\n\t\t\t\tmeta?: unknown;\n\t\t\t\ttone?: unknown;\n\t\t\t}>(part.items).filter((it) => str(it?.title));\n\t\t\tif (items.length === 0) return null;\n\t\t\tconst Tag = part.ordered === true ? 'ol' : 'ul';\n\t\t\treturn (\n\t\t\t\t<div className=\"an-w-list\">\n\t\t\t\t\t{str(part.title) && <div className=\"an-w-title\">{str(part.title)}</div>}\n\t\t\t\t\t<Tag>\n\t\t\t\t\t\t{items.map((it, i) => (\n\t\t\t\t\t\t\t<li key={i}>\n\t\t\t\t\t\t\t\t<i className={`an-w-dot is-${toneOf(it?.tone)}`} aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<strong>{str(it?.title)}</strong>\n\t\t\t\t\t\t\t\t\t{str(it?.detail) && <span>{str(it?.detail)}</span>}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t{str(it?.meta) && <small>{str(it?.meta)}</small>}\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</Tag>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t\tcase 'Note':\n\t\t\tif (!str(part.text)) return null;\n\t\t\treturn (\n\t\t\t\t<div className=\"an-w-note\">\n\t\t\t\t\t{str(part.title) && <strong>{str(part.title)}</strong>}\n\t\t\t\t\t<span>{str(part.text)}</span>\n\t\t\t\t</div>\n\t\t\t);\n\t\tcase 'Badge':\n\t\t\treturn str(part.text) ? <span className={`an-w-badge is-${toneOf(part.tone)}`}>{str(part.text)}</span> : null;\n\t\tcase 'Link': {\n\t\t\tconst url = ctx.url(part.url, 'link');\n\t\t\treturn url && str(part.label) ? (\n\t\t\t\t<a className=\"an-w-link\" href={url} target=\"_blank\" rel=\"noreferrer noopener\">\n\t\t\t\t\t{str(part.label)}\n\t\t\t\t</a>\n\t\t\t) : null;\n\t\t}\n\t\tcase 'Button':\n\t\t\tif (!str(part.label)) return null;\n\t\t\treturn (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName={`an-w-button is-${part.variant === 'secondary' ? 'secondary' : 'primary'}`}\n\t\t\t\t\tdisabled={!onAsk}\n\t\t\t\t\tonClick={() => onAsk?.(str(part.label))}\n\t\t\t\t>\n\t\t\t\t\t{str(part.label)}\n\t\t\t\t</button>\n\t\t\t);\n\t\tcase 'Suggestions': {\n\t\t\tconst options = list(part.options).map(str).filter(Boolean);\n\t\t\tif (options.length === 0) return null;\n\t\t\treturn (\n\t\t\t\t<div className=\"an-w-suggest\">\n\t\t\t\t\t{options.map((o, i) => (\n\t\t\t\t\t\t<button key={i} type=\"button\" disabled={!onAsk} onClick={() => onAsk?.(o)}>\n\t\t\t\t\t\t\t{o}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t\tcase 'Divider':\n\t\t\treturn <hr className=\"an-w-divider\" />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\nconst CONTAINERS = new Set(['Column', 'Row', 'Card']);\n\n// A plain function, not a component: the set of parts already drawn lives for\n// one render of the widget. As a component, React's development mode would draw\n// each part twice and find every one \"already drawn\" on its second pass.\nfunction draw(id: string, ctx: Ctx): ReactNode {\n\tconst part = ctx.byId.get(id);\n\t// A part listed twice, or a loop of containers, is drawn once.\n\tif (!part || ctx.seen.has(id)) return null;\n\tctx.seen.add(id);\n\tconst kids = CONTAINERS.has(part.component)\n\t\t? list(part.children)\n\t\t\t\t.filter((k): k is string => typeof k === 'string')\n\t\t\t\t.map((k) => <Fragment key={k}>{draw(k, ctx)}</Fragment>)\n\t\t: undefined;\n\tconst own = ctx.props.parts?.[part.component as WidgetKind];\n\treturn own ? own({ part, children: kids, onAsk: ctx.props.onAsk }) : defaultPart(part, kids, ctx);\n}\n\n/** One widget, drawn from its root part. Draws nothing when there is no root yet. */\nexport function WidgetView(props: WidgetViewProps) {\n\tconst { widget, currency = 'USD', locale, allowUrl } = props;\n\tconst byId = new Map<string, WidgetPart>();\n\tfor (const p of Array.isArray(widget?.components) ? widget.components : []) {\n\t\tif (p && typeof p === 'object' && typeof p.id === 'string' && typeof p.component === 'string' && !byId.has(p.id)) byId.set(p.id, p);\n\t}\n\tif (!byId.has('root')) return null;\n\tlet moneyFormat: Intl.NumberFormat;\n\ttry {\n\t\tmoneyFormat = new Intl.NumberFormat(locale, {\n\t\t\tstyle: 'currency',\n\t\t\tcurrency,\n\t\t\tmaximumFractionDigits: 0,\n\t\t});\n\t} catch {\n\t\tmoneyFormat = new Intl.NumberFormat(locale, { maximumFractionDigits: 0 });\n\t}\n\tconst numberFormat = new Intl.NumberFormat(locale);\n\tconst ctx: Ctx = {\n\t\tbyId,\n\t\tseen: new Set(),\n\t\tprops,\n\t\tmoney: (n) => moneyFormat.format(n),\n\t\tnumber: (n) => numberFormat.format(n),\n\t\turl: (v, use) => (typeof v === 'string' && httpsOnly(v) && (allowUrl ? allowUrl(v, use) : true) ? v : undefined),\n\t};\n\treturn (\n\t\t<Boundary>\n\t\t\t<div className={`an-w${props.className ? ` ${props.className}` : ''}`} data-surface={widget.surfaceId}>\n\t\t\t\t{draw('root', ctx)}\n\t\t\t</div>\n\t\t</Boundary>\n\t);\n}\n\nfunction Paragraphs({ text }: { text: string }) {\n\treturn (\n\t\t<>\n\t\t\t{text\n\t\t\t\t.trim()\n\t\t\t\t.split(/\\n{2,}/)\n\t\t\t\t.map((p, i) => (\n\t\t\t\t\t<p key={i} className=\"an-reply-text\">\n\t\t\t\t\t\t{p.split('\\n').map((line, j) => (\n\t\t\t\t\t\t\t<Fragment key={j}>\n\t\t\t\t\t\t\t\t{j > 0 && <br />}\n\t\t\t\t\t\t\t\t{line}\n\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</p>\n\t\t\t\t))}\n\t\t</>\n\t);\n}\n\n/** A whole reply: its words, with each widget drawn where it sits. */\nexport function ReplyView({ text, widgets, renderText, className, ...widgetProps }: ReplyViewProps) {\n\treturn (\n\t\t<div className={`an-reply${className ? ` ${className}` : ''}`}>\n\t\t\t{placeWidgets(text, widgets ?? []).map((piece, i) =>\n\t\t\t\tpiece.kind === 'text' ? (\n\t\t\t\t\t<Fragment key={`t${i}`}>{renderText ? renderText(piece.text) : <Paragraphs text={piece.text} />}</Fragment>\n\t\t\t\t) : (\n\t\t\t\t\t<WidgetView key={piece.widget.surfaceId} widget={piece.widget} {...widgetProps} />\n\t\t\t\t),\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"]}
package/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const SDK_VERSION = "0.75.0";
1
+ export declare const SDK_VERSION = "0.75.1";
package/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // GENERATED by scripts/regen-version.mjs. Do not edit: run `bun run regen:version`
2
2
  // after bumping the version in package.json. tests/version.test.ts fails if
3
3
  // this drifts.
4
- export const SDK_VERSION = '0.75.0';
4
+ export const SDK_VERSION = '0.75.1';
5
5
  //# sourceMappingURL=version.js.map
package/version.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,4EAA4E;AAC5E,eAAe;AACf,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC","sourcesContent":["// GENERATED by scripts/regen-version.mjs. Do not edit: run `bun run regen:version`\n// after bumping the version in package.json. tests/version.test.ts fails if\n// this drifts.\nexport const SDK_VERSION = '0.75.0';\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,4EAA4E;AAC5E,eAAe;AACf,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC","sourcesContent":["// GENERATED by scripts/regen-version.mjs. Do not edit: run `bun run regen:version`\n// after bumping the version in package.json. tests/version.test.ts fails if\n// this drifts.\nexport const SDK_VERSION = '0.75.1';\n"]}