@exponential_app/eui 0.2.0 → 0.3.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 (69) hide show
  1. package/catalog/a11y.json +15 -1
  2. package/catalog/core.catalog.json +142 -0
  3. package/catalog/core.schema.json +198 -1
  4. package/catalog/host.json +10 -0
  5. package/catalog/macros.json +541 -1
  6. package/catalog/recipes.json +2 -2
  7. package/catalog/strings.json +5 -0
  8. package/catalog/theme.schema.json +2066 -212
  9. package/conformance/manifest.json +5 -5
  10. package/dist/chunks/{index-gtk2gwsb.js → index-4z7f2bp1.js} +160 -33
  11. package/dist/chunks/{index-gtk2gwsb.js.map → index-4z7f2bp1.js.map} +6 -5
  12. package/dist/chunks/{index-5fmaa0xq.js → index-abcjanhc.js} +629 -3
  13. package/dist/chunks/{index-5fmaa0xq.js.map → index-abcjanhc.js.map} +2 -2
  14. package/dist/chunks/{index-62yzr94z.js → index-dx45asrf.js} +99 -3
  15. package/dist/chunks/{index-62yzr94z.js.map → index-dx45asrf.js.map} +2 -2
  16. package/dist/chunks/{index-bg2jsgjq.js → index-h3zgfghf.js} +304 -6
  17. package/dist/chunks/{index-bg2jsgjq.js.map → index-h3zgfghf.js.map} +2 -2
  18. package/dist/conformance.js +7901 -614
  19. package/dist/conformance.js.map +2 -2
  20. package/dist/entries/prompt.js +2 -2
  21. package/dist/entries/schema.js +2 -2
  22. package/dist/host/index.js +20 -4
  23. package/dist/host/index.js.map +1 -1
  24. package/dist/index.js +46 -5
  25. package/dist/index.js.map +4 -3
  26. package/dist/types/src/catalog.generated.d.ts +23 -3
  27. package/dist/types/src/host/contract.d.ts +17 -0
  28. package/dist/types/src/host/exposes.d.ts +68 -0
  29. package/dist/types/src/host/index.d.ts +1 -0
  30. package/dist/types/src/host/package.d.ts +8 -0
  31. package/dist/types/src/index.d.ts +1 -0
  32. package/dist/types/src/text-clusters.d.ts +11 -0
  33. package/dist/types/src/web/primitives/carousel.d.ts +17 -0
  34. package/dist/types/src/web/primitives/index.d.ts +3 -0
  35. package/dist/types/src/web/primitives/mosaic.d.ts +30 -0
  36. package/dist/types/src/web/primitives/outline.d.ts +22 -0
  37. package/dist/web/index.js +8 -2
  38. package/dist/web/index.js.map +4 -4
  39. package/dist/web/primitives/index.js +59 -1
  40. package/dist/web/primitives/index.js.map +6 -3
  41. package/docs/components.generated.json +150 -1
  42. package/docs/package-format.md +56 -1
  43. package/docs/round-6-contract.md +108 -0
  44. package/docs/themes.generated.json +39 -2
  45. package/fixtures/bind-time.json +1464 -0
  46. package/fixtures/catalog-components.json +96 -0
  47. package/fixtures/catalog-macros.json +1159 -48
  48. package/fixtures/conformance-baseline.json +46073 -44448
  49. package/fixtures/conformance-known.json +76 -64
  50. package/fixtures/host-router.json +539 -1
  51. package/fixtures/kitchen-sink.expanded.json +614 -1
  52. package/fixtures/kitchen-sink.json +69 -1
  53. package/fixtures/primitive-specimens.json +3 -0
  54. package/fixtures/prompt-budget.json +14 -14
  55. package/fixtures/specimens.json +122 -0
  56. package/fixtures/text-clusters.json +65 -0
  57. package/fixtures/theme-recipes.json +4617 -1691
  58. package/fixtures/theme-resolved.json +1154 -2
  59. package/generated/ExponentialUICatalog.generated.kt +13 -13
  60. package/generated/ExponentialUICatalog.generated.swift +13 -13
  61. package/generated/ExponentialUIThemes.generated.kt +7 -7
  62. package/generated/ExponentialUIThemes.generated.swift +7 -7
  63. package/generated/catalog.descriptions.generated.rs +1 -1
  64. package/generated/catalog.generated.rs +18 -18
  65. package/generated/catalog.themes.generated.rs +8 -8
  66. package/generated/core.descriptions.json +96 -0
  67. package/generated/core.runtime.json +86 -0
  68. package/package.json +1 -1
  69. package/themes/neutral.theme.json +288 -0
package/dist/index.js.map CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/layout.ts", "../src/list.ts", "../src/resizable.ts", "../src/direction.ts", "../src/animation.ts", "../src/locale.ts", "../src/code.ts", "../src/text-shimmer.ts", "../src/voice-wave.ts", "../src/qr-code.ts", "../src/a11y.ts", "../src/chart.ts", "../src/extension.ts", "../src/define.ts", "../src/css.ts", "../src/builder.ts", "../src/geometry.ts", "../src/overlay.ts", "../src/connector/connector.ts", "../src/connector/app.ts"],
3
+ "sources": ["../src/layout.ts", "../src/list.ts", "../src/resizable.ts", "../src/direction.ts", "../src/animation.ts", "../src/locale.ts", "../src/code.ts", "../src/text-clusters.ts", "../src/text-shimmer.ts", "../src/voice-wave.ts", "../src/qr-code.ts", "../src/a11y.ts", "../src/chart.ts", "../src/extension.ts", "../src/define.ts", "../src/css.ts", "../src/builder.ts", "../src/geometry.ts", "../src/overlay.ts", "../src/connector/connector.ts", "../src/connector/app.ts"],
4
4
  "sourcesContent": [
5
5
  "// Round 2 (docs/round-2-contract.md §7): the shared layout numbers\n// (catalog/layout.json), one place for the TS reference and the generated\n// constants of every target.\n\nimport layoutJson from \"../catalog/layout.json\" with { type: \"json\" }\n\nexport const LAYOUT_CONSTANTS: Readonly<Record<string, number>> = Object.fromEntries(Object.entries(layoutJson).filter(([k]) => !k.startsWith(`$`))) as Record<string, number>\nexport const WINDOW_THRESHOLD: number = layoutJson.windowThreshold\nexport const WINDOW_OVERSCAN: number = layoutJson.windowOverscan\nexport const RESIZE_STEP: number = layoutJson.resizeStep\nexport const PANEL_MIN: number = layoutJson.panelMin\nexport const RESIZE_HANDLE_HIT: number = layoutJson.resizeHandleHit\nexport const FIELD_INTRINSIC_WIDTH: number = layoutJson.fieldIntrinsicWidth\nexport const MEDIA_INTRINSIC_WIDTH: number = layoutJson.mediaIntrinsicWidth\nexport const MEDIA_ASPECT_RATIO: number = layoutJson.mediaAspectRatio\nexport const TREE_GUIDE_COLUMN: number = layoutJson.treeGuideColumn\n/** Round 3: the elbow's corner radius and how far the guide verticals overshoot a row's top edge (paint only). */\nexport const TREE_GUIDE_RADIUS: number = layoutJson.treeGuideRadius\nexport const TREE_GUIDE_BRIDGE: number = layoutJson.treeGuideBridge\n/** EXP-1259: the pending Button's delay, the Skeleton's pulse and the SearchList's bottom fade (feedback-states.json, search-list.json). */\nexport const PENDING_DELAY_MS: number = layoutJson.pendingDelayMs\nexport const SKELETON_PULSE_MS: number = layoutJson.skeletonPulseMs\nexport const SKELETON_OPACITY_LOW: number = layoutJson.skeletonOpacityLow\nexport const SKELETON_OPACITY_HIGH: number = layoutJson.skeletonOpacityHigh\nexport const SKELETON_REDUCED_OPACITY: number = layoutJson.skeletonReducedOpacity\nexport const SEARCH_LIST_FADE: number = layoutJson.searchListFade\n",
6
6
  "// Round 2 (docs/round-2-contract.md §4–5): the LIST numbers every renderer\n// shares — template item keys and instance ids (duplicates and empty keys →\n// `#<index>`, instance suffixes accumulate through nested templates), Table\n// row keys, the virtual window over measured extents (vertical OR horizontal:\n// one axis), sticky section headers and scrollToIndex. Pure, mirrored by the\n// Rust core; fixtures/template-items.json and fixtures/virtual-list.json lock\n// it.\n\nimport { absolutePath, readPointer } from \"./dynamic\"\nimport type { ChildTemplate, ReduceIssue, UiNode } from \"./types\"\n\nimport { WINDOW_OVERSCAN, WINDOW_THRESHOLD } from \"./layout\"\nimport { LIMIT_ISSUES, MAX_COMPONENTS, MAX_TEMPLATE_ITEMS } from \"./limits\"\nexport { WINDOW_THRESHOLD, WINDOW_OVERSCAN } from \"./layout\"\n\n/** The instance key of every item: the value at `keyPointer` (relative to\n * the item; objects as their JSON) — `#<index>` when that value is missing,\n * null, `` or a DUPLICATE of an earlier item's key (more `#`s until unique);\n * without a pointer, the index. */\nexport function templateItemKeys(items: readonly unknown[], keyPointer?: string): string[] {\n const seen = new Set<string>()\n return items.map((item, index) => {\n let key = String(index)\n if (keyPointer !== undefined) {\n const v = readPointer(item, keyPointer.startsWith(`/`) ? keyPointer : `/${keyPointer}`)\n const own = v === undefined || v === null || v === `` ? null : typeof v === `object` ? JSON.stringify(v) : String(v)\n key = own !== null && !seen.has(own) ? own : `#${index}`\n while (seen.has(key)) key = `#${key}`\n }\n seen.add(key)\n return key\n })\n}\n\nconst escapeToken = (token: string) => token.replace(/~/g, `~0`).replace(/\\//g, `~1`)\n\n/** Table row keys: the `rowKey` FIELD (default `id`) under the same rules\n * (`#<index>` for missing, empty or duplicate). */\nexport function tableRowKeys(rows: readonly unknown[], rowKey = `id`): string[] {\n return templateItemKeys(rows, `/${escapeToken(rowKey)}`)\n}\n\n/** A key as one instance-suffix segment: `~` → `~0`, `.` → `~1` (as JSON\n * pointer escapes `/`), so dotted keys never collide across nesting levels\n * (`a.b` + `c` vs `a` + `b.c`). */\nexport const instanceSegment = (key: string) => key.replace(/~/g, `~0`).replace(/\\./g, `~1`)\n\nexport interface TemplateInstance {\n /** The item's key (see `templateItemKeys`). */\n key: string\n /** The item's data pointer: its scope (`/posts/3`). */\n path: string\n index: number\n /** The suffix every node of the item wears: the enclosing instance's\n * suffix + `.<key>`, the key escaped by `instanceSegment` (`.a` for an\n * outer item, `.a.0` inside it, `.a~1b` for key `a.b`). A node's painted\n * id = its id + the suffix. */\n instance: string\n}\n\n/** The items a node's `template` renders in a data scope: one per array\n * item at `template.path` (relative to `scope`), keyed by `template.key`.\n * `instance` = the suffix of the item the template sits in (`` at the top). */\nexport function templateInstances(data: unknown, template: ChildTemplate, scope = ``, instance = ``): TemplateInstance[] {\n const path = absolutePath(template.path, { base: scope })\n const list = readPointer(data, path)\n if (!Array.isArray(list)) return []\n const keys = templateItemKeys(list, template.key)\n // VAPP-103: never more than `maxTemplateItems` (a renderer counts them\n // per surface; past the limit the rest is not rendered).\n return list.slice(0, MAX_TEMPLATE_ITEMS).map((_, index) => ({ key: keys[index], path: `${path}/${index}`, index, instance: `${instance}.${instanceSegment(keys[index])}` }))\n}\n\n/** A template site's key in a `TemplateBudget`: the node holding the\n * template + the data scope it sits in. */\nexport const templateSiteKey = (nodeId: string, scope: string) => `${nodeId}\\u0000${scope}`\n\nexport interface TemplateBudget {\n /** Items each visited template site builds (absent = a site the walk\n * never reached: it sits in an item that is not built). */\n allowed: Map<string, number>\n /** ONE issue per build: the template component whose next item did not\n * fit (`LIMIT_ISSUES.templateItems` or `LIMIT_ISSUES.components`); null =\n * everything fits. */\n issue: ReduceIssue | null\n}\n\n/** Nodes one subtree builds by itself (children + slots; the items of a\n * template inside it count when they are instantiated). Iterative. */\nfunction staticSize(root: UiNode): number {\n let n = 0\n const stack: UiNode[] = [root]\n while (stack.length) {\n const node = stack.pop()!\n n++\n for (const slot of Object.values(node.slots ?? {})) stack.push(slot)\n for (const child of node.children) stack.push(child)\n }\n return n\n}\n\ntype BudgetEntry =\n | { node: UiNode; scope: string }\n | { site: string; component: string; tpl: UiNode; path: string; size: number; index: number; length: number }\n\n/** VAPP-103: the template items ONE surface builds, in the Rust layout\n * build's order (depth-first: a node's slots and static children, then its\n * template items, each item's own subtree, nested items included, before\n * the next item). The build holds `maxComponents` nodes: it starts at the\n * reduced root tree's own nodes (children + slots; template definitions\n * aside), and every item costs 1 against `maxTemplateItems` AND its\n * template subtree's nodes. The first item that does not fit either budget\n * and every later one is not built, with ONE issue on that template\n * component. A windowed List (more than `WINDOW_THRESHOLD` rows) mounts\n * its rows on demand: its items are not counted up front. Iterative. */\nexport function templateBudget(root: UiNode, data: unknown, templateNode: (componentId: string) => UiNode | undefined): TemplateBudget {\n const allowed = new Map<string, number>()\n const sizes = new Map<UiNode, number>()\n const sizeOf = (tpl: UiNode) => {\n let n = sizes.get(tpl)\n if (n === undefined) sizes.set(tpl, (n = staticSize(tpl)))\n return n\n }\n let items = 0\n let nodes = staticSize(root)\n let issue: ReduceIssue | null = null\n const stack: BudgetEntry[] = [{ node: root, scope: `` }]\n while (stack.length) {\n const entry = stack.pop()!\n if (`site` in entry) {\n if (issue || entry.index >= entry.length) continue\n if (items >= MAX_TEMPLATE_ITEMS) issue = { id: entry.component, message: LIMIT_ISSUES.templateItems }\n else if (nodes + entry.size > MAX_COMPONENTS) issue = { id: entry.component, message: LIMIT_ISSUES.components }\n if (issue) continue\n items++\n nodes += entry.size\n allowed.set(entry.site, entry.index + 1)\n stack.push({ ...entry, index: entry.index + 1 })\n stack.push({ node: entry.tpl, scope: `${entry.path}/${entry.index}` })\n continue\n }\n const { node, scope } = entry\n const next: BudgetEntry[] = []\n for (const slot of Object.values(node.slots ?? {})) next.push({ node: slot, scope })\n for (const child of node.children) next.push({ node: child, scope })\n const template = node.template\n const tpl = template ? templateNode(template.component) : undefined\n if (template && tpl) {\n const path = absolutePath(template.path, { base: scope })\n const list = readPointer(data, path)\n const windowed = Array.isArray(list) && node.component === `List` && node.children.length + list.length > WINDOW_THRESHOLD\n if (Array.isArray(list) && !windowed) {\n const site = templateSiteKey(node.id, scope)\n allowed.set(site, 0)\n next.push({ site, component: template.component, tpl, path, size: sizeOf(tpl), index: 0, length: list.length })\n }\n }\n for (let i = next.length - 1; i >= 0; i--) stack.push(next[i]!)\n }\n return { allowed, issue }\n}\n\n// ---------------------------------------------------------------------------\n// The virtual window (one axis)\n// ---------------------------------------------------------------------------\n\n/** Start offsets of items laid end to end on one axis with `gap` between\n * them (a `divided` list adds `$control.hairline` to the gap; the divider\n * is centred in it): `offsets[i]` = where item i starts, `offsets[count]` =\n * the content length. */\nexport function itemOffsets(extents: readonly number[], gap = 0): number[] {\n const out = new Array<number>(extents.length + 1)\n let at = 0\n for (let i = 0; i < extents.length; i++) {\n out[i] = at\n at += extents[i] + (i < extents.length - 1 ? gap : 0)\n }\n out[extents.length] = at\n return out\n}\n\n/** Every item's extent on the list's axis: a measured item keeps its\n * extent; an unmeasured one (`null`) takes the MEAN of the measured\n * extents once any item is measured (the content length stays stable while\n * rows measure in, so a fling lands on the real end), else `row` (the\n * theme's `$control.row`). */\nexport function itemExtents(measured: readonly (number | null | undefined)[], row: number): number[] {\n let sum = 0\n let n = 0\n for (const m of measured) {\n if (typeof m === `number`) {\n sum += m\n n++\n }\n }\n const estimate = n ? sum / n : row\n return measured.map((m) => (typeof m === `number` ? m : estimate))\n}\n\nexport interface WindowRange {\n /** First rendered item. */\n start: number\n /** One past the last rendered item. */\n end: number\n /** Space before `start` / after `end - 1` (the spacers). */\n before: number\n after: number\n /** The content length. */\n total: number\n}\n\n/** The first index in [lo, hi) whose `test` holds, for a test that is\n * false then true along the range (binary search); `hi` when none. */\nfunction firstWhere(lo: number, hi: number, test: (i: number) => boolean): number {\n while (lo < hi) {\n const mid = (lo + hi) >>> 1\n if (test(mid)) hi = mid\n else lo = mid + 1\n }\n return lo\n}\n\n/** The items to render for a viewport `[scroll, scroll + viewport)` on the\n * list's axis (both relative to the list's content start; a list without a\n * bounded size windows against its nearest scrolling ancestor or the host\n * viewport, translated into this frame): every item that intersects it\n * (an item ending exactly at the viewport start still counts) plus\n * `overscan` items on each side. Unmeasured items take `itemExtents`'s\n * estimate (the caller's extents). `offsets` = `itemOffsets(extents, gap)` when the\n * caller caches it (recompute only when an extent changes): the window is\n * then two binary searches, O(log n) per scroll frame. */\nexport function virtualWindow(extents: readonly number[], gap: number, scroll: number, viewport: number, overscan = WINDOW_OVERSCAN, offsets?: readonly number[]): WindowRange {\n const count = extents.length\n const off = offsets ?? itemOffsets(extents, gap)\n const total = off[count]\n let start = firstWhere(0, count, (i) => off[i] + extents[i] >= scroll)\n let end = firstWhere(start, count, (i) => off[i] >= scroll + viewport)\n start = Math.max(0, start - overscan)\n end = Math.min(count, end + overscan)\n if (end <= start) return { start, end: start, before: 0, after: total, total }\n const before = off[start]\n const after = total - (off[end - 1] + extents[end - 1])\n return { start, end, before, after, total }\n}\n\nexport type ScrollAlign = `start` | `center` | `end` | `nearest`\n\n/** The scroll offset that brings item `index` into a viewport of length\n * `viewport` currently at `scroll` (the `scrollToIndex` command): `start` =\n * its start at the viewport start (after `inset`, the pinned header's\n * extent), `end` = its end at the viewport end, `center` = centred,\n * `nearest` (default) = the smallest move that shows it whole (none when it\n * already is). Clamped to `[0, max(0, total - viewport)]`. `offsets` = the\n * cached `itemOffsets`, as for `virtualWindow`. */\nexport function scrollOffsetForIndex(extents: readonly number[], gap: number, index: number, viewport: number, scroll: number, align: ScrollAlign = `nearest`, inset = 0, offsets?: readonly number[]): number {\n const off = offsets ?? itemOffsets(extents, gap)\n const total = off[extents.length]\n if (index < 0 || index >= extents.length) return scroll\n const top = off[index]\n const size = extents[index]\n let next = scroll\n if (align === `start`) next = top - inset\n else if (align === `end`) next = top + size - viewport\n else if (align === `center`) next = top + size / 2 - (viewport + inset) / 2\n else if (top - inset < scroll) next = top - inset\n else if (top + size > scroll + viewport) next = top + size - viewport\n return Math.max(0, Math.min(Math.max(0, total - viewport), next))\n}\n\n// ---------------------------------------------------------------------------\n// Sections and sticky headers\n// ---------------------------------------------------------------------------\n\nexport interface ListSection {\n /** The `sectionBy` value its items share (as `displayString`; `` for\n * missing). */\n value: string\n /** Index of the section's first item in the data. */\n start: number\n count: number\n}\n\n/** Consecutive template items with the same `sectionBy` value (a pointer\n * relative to each item) form a section; the data order is kept (sort the\n * data to group it). */\nexport function listSections(items: readonly unknown[], sectionBy: string): ListSection[] {\n const out: ListSection[] = []\n const pointer = sectionBy.startsWith(`/`) ? sectionBy : `/${sectionBy}`\n items.forEach((item, index) => {\n const v = readPointer(item, pointer)\n const value = v === undefined || v === null ? `` : typeof v === `object` ? JSON.stringify(v) : String(v)\n const last = out.at(-1)\n if (last && last.value === value) last.count++\n else out.push({ value, start: index, count: 1 })\n })\n return out\n}\n\n/** The flat ROW list a sectioned list windows: a header row before each\n * section's items (`{header: sectionIndex}` / `{item: dataIndex}`). */\nexport function sectionRows(sections: readonly ListSection[]): ({ header: number } | { item: number })[] {\n const rows: ({ header: number } | { item: number })[] = []\n sections.forEach((s, i) => {\n rows.push({ header: i })\n for (let k = 0; k < s.count; k++) rows.push({ item: s.start + k })\n })\n return rows\n}\n\n/** `scrollToIndex` on a SECTIONED list: the DATA index → its flat row\n * (`sectionRows`; -1 = absent → no move), then `scrollOffsetForIndex` over\n * the rows' extents with `inset` = the extent of the item's own section\n * header when headers are sticky (it pins over the item), else 0. */\nexport function scrollOffsetForItem(rows: readonly ({ header: number } | { item: number })[], rowExtents: readonly number[], gap: number, dataIndex: number, viewport: number, scroll: number, align: ScrollAlign = `nearest`, stickyHeaders = false, offsets?: readonly number[]): number {\n const row = rows.findIndex((r) => `item` in r && r.item === dataIndex)\n if (row < 0) return scroll\n let header = row\n while (header >= 0 && !(`header` in rows[header])) header--\n const inset = stickyHeaders && header >= 0 ? rowExtents[header] : 0\n return scrollOffsetForIndex(rowExtents, gap, row, viewport, scroll, align, inset, offsets)\n}\n\n/** The sticky header at a scroll offset: the LAST header row starting at or\n * before `scroll` is pinned at the viewport start — pushed back by the next\n * header as it arrives (its offset = min(scroll, nextHeaderStart −\n * extent)). `rowOffsets` = itemOffsets of the flat rows; `headerRows` = the\n * flat indices of the header rows, ascending. Null before the first header\n * reaches the viewport start. Binary search: O(log headers). The pinned header is rendered even when the\n * window does not contain it. */\nexport function stickyHeader(rowOffsets: readonly number[], rowExtents: readonly number[], headerRows: readonly number[], scroll: number): { row: number; offset: number } | null {\n const pinned = firstWhere(0, headerRows.length, (h) => rowOffsets[headerRows[h]] > scroll) - 1\n if (pinned < 0) return null\n const row = headerRows[pinned]\n const next = headerRows[pinned + 1]\n const extent = rowExtents[row]\n const offset = next === undefined ? scroll : Math.min(scroll, rowOffsets[next] - extent)\n return { row, offset }\n}\n",
@@ -9,6 +9,7 @@
9
9
  "// Round 2 (docs/round-2-contract.md §2, animation): the token-only\n// `animation` style key. catalog/style.json `animations` holds the keyframe\n// sets; this module turns one into what a painter needs at a moment —\n// duration from the theme's motion tokens, per-segment easing, the channel\n// values (opacity, translate, rotate, scale, the shimmer band) — and into\n// CSS @keyframes. fixtures/animations.json locks the sampled frames. Pure.\n\nimport styleJson from \"../catalog/style.json\" with { type: \"json\" }\nimport { parseTokenRef } from \"./catalog\"\nimport type { Easing, ResolvedTheme } from \"./theme-types\"\n\nexport interface Keyframe {\n offset: number\n opacity?: number\n translateX?: number\n translateY?: number\n rotate?: number\n scale?: number\n band?: number\n}\n\nexport interface AnimationDef {\n duration: string\n factor: number\n easing: string\n iterations: number | `infinite`\n rest: number\n keyframes: Keyframe[]\n band?: { color: string; stops: { offset: number; alpha: number }[] }\n}\n\n/** The keyframe sets by name (style.json `animations`, `$comment` aside). */\nexport const ANIMATIONS: Readonly<Record<string, AnimationDef>> = Object.fromEntries(Object.entries(styleJson.animations).filter(([k]) => !k.startsWith(`$`))) as unknown as Record<string, AnimationDef>\nexport const ANIMATION_NAMES: readonly string[] = Object.keys(ANIMATIONS)\n\n/** One frame: every channel at its value (`band` null = no shimmer band). */\nexport interface AnimationFrame {\n opacity: number\n translateX: number\n translateY: number\n rotate: number\n scale: number\n band: number | null\n}\n\nexport interface AnimationTiming {\n durationMs: number\n /** A cubic bezier or `linear`. */\n easing: Easing | `linear`\n iterations: number | `infinite`\n}\n\nconst LINEAR: `linear` = `linear`\n\n/** Duration and easing of an animation under a theme: the `duration` token\n * (or `durationToken`, the node's `animationDuration`) × `factor`. */\nexport function animationTiming(name: string, theme: ResolvedTheme, durationToken?: string): AnimationTiming | null {\n const def = ANIMATIONS[name]\n if (!def) return null\n const token = parseTokenRef(durationToken ?? def.duration)\n const base = token && token.group === `motion` ? theme.tokens.motion[token.name] : undefined\n const fallback = parseTokenRef(def.duration)\n const ms = (base ?? (fallback ? theme.tokens.motion[fallback.name] : 0) ?? 0) * def.factor\n const ease = parseTokenRef(def.easing)\n const easing = def.easing === LINEAR ? LINEAR : ease && ease.group === `ease` ? (theme.tokens.ease[ease.name] ?? LINEAR) : LINEAR\n return { durationMs: ms, easing, iterations: def.iterations }\n}\n\n/** y of a CSS cubic-bezier at x (bisection on x, 60 steps: deterministic). */\nexport function cubicBezier(curve: Easing, x: number): number {\n const [x1, y1, x2, y2] = curve\n if (x <= 0) return 0\n if (x >= 1) return 1\n const bx = (t: number) => 3 * x1 * t * (1 - t) ** 2 + 3 * x2 * t * t * (1 - t) + t ** 3\n const by = (t: number) => 3 * y1 * t * (1 - t) ** 2 + 3 * y2 * t * t * (1 - t) + t ** 3\n let lo = 0\n let hi = 1\n for (let i = 0; i < 60; i++) {\n const mid = (lo + hi) / 2\n if (bx(mid) < x) lo = mid\n else hi = mid\n }\n return by((lo + hi) / 2)\n}\n\nconst CHANNELS = [`opacity`, `translateX`, `translateY`, `rotate`, `scale`] as const\nconst REST: AnimationFrame = { opacity: 1, translateX: 0, translateY: 0, rotate: 0, scale: 1, band: null }\nconst r4 = (v: number) => {\n const r = Math.round(v * 1e4) / 1e4\n return Object.is(r, -0) ? 0 : r\n}\n\nfunction frameAt(def: AnimationDef, progress: number, easing: Easing | `linear`): AnimationFrame {\n const ks = def.keyframes\n let k = 0\n while (k < ks.length - 2 && progress > ks[k + 1].offset) k++\n const a = ks[k]\n const b = ks[Math.min(k + 1, ks.length - 1)]\n const span = b.offset - a.offset\n const local = span > 0 ? Math.max(0, Math.min(1, (progress - a.offset) / span)) : 1\n const t = easing === LINEAR ? local : cubicBezier(easing, local)\n const out: AnimationFrame = { ...REST }\n for (const ch of CHANNELS) {\n const va = a[ch] ?? REST[ch]\n const vb = b[ch] ?? REST[ch]\n out[ch] = r4(va + (vb - va) * t)\n }\n if (a.band !== undefined && b.band !== undefined) out.band = r4(a.band + (b.band - a.band) * t)\n return out\n}\n\n/** The frame `elapsedMs` after the node entered the tree. Finished finite\n * animations hold their last keyframe; reduced motion = the `rest`\n * keyframe (no band). */\nexport function animationFrame(name: string, elapsedMs: number, theme: ResolvedTheme, options: { reducedMotion?: boolean; durationToken?: string } = {}): AnimationFrame | null {\n const def = ANIMATIONS[name]\n const timing = animationTiming(name, theme, options.durationToken)\n if (!def || !timing) return null\n if (options.reducedMotion) {\n const rest = frameAt(def, def.rest, LINEAR)\n return { ...rest, band: null }\n }\n const d = timing.durationMs\n if (d <= 0) return frameAt(def, 1, LINEAR)\n const iterations = timing.iterations === `infinite` ? Infinity : timing.iterations\n const t = Math.max(0, elapsedMs)\n if (t >= d * iterations) return frameAt(def, 1, timing.easing)\n return frameAt(def, (t % d) / d, timing.easing)\n}\n\n/** What a painter shows: the node's own opacity × the frame's (an\n * animation MULTIPLIES opacity; it never replaces it). */\nexport function paintedOpacity(own: number | undefined, frame: AnimationFrame | null): number {\n return r4((own ?? 1) * (frame?.opacity ?? 1))\n}\n\nconst css = (n: number) => String(r4(n))\n\n/** The custom properties the keyframes animate, registered so they\n * interpolate: `--xui-a-opacity` (the animation's opacity factor; the node's\n * `opacity` = own × it, see css.ts styleToCss) and `--xui-band` (the shimmer\n * band). A CSS renderer adds this ONCE per document beside the keyframes. */\nexport const ANIMATION_PROPERTIES_CSS = `@property --xui-a-opacity{syntax:\"<number>\";inherits:false;initial-value:1}@property --xui-band{syntax:\"<number>\";inherits:true;initial-value:1}`\n\n/** Whether a keyframe set animates opacity (its node's CSS opacity then\n * multiplies `--xui-a-opacity`). */\nexport function animatesOpacity(name: string): boolean {\n return ANIMATIONS[name]?.keyframes.some((k) => k.opacity !== undefined) ?? false\n}\n\n/** The CSS `@keyframes xui-<name>` rule (individual `translate`/`rotate`/\n * `scale` properties compose OUTSIDE the node's own `transform`; opacity\n * moves `--xui-a-opacity`, which the node's `opacity` multiplies, so the\n * author's opacity survives the `both` fill; the shimmer band moves\n * `--xui-band`, which the renderer's overlay reads). Needs\n * `ANIMATION_PROPERTIES_CSS`. */\nexport function keyframesCss(name: string): string {\n const def = ANIMATIONS[name]\n if (!def) return ``\n const steps = def.keyframes.map((k) => {\n const decl: string[] = []\n if (k.opacity !== undefined) decl.push(`--xui-a-opacity:${css(k.opacity)}`)\n if (k.translateX !== undefined || k.translateY !== undefined) decl.push(`translate:${css(k.translateX ?? 0)}px ${css(k.translateY ?? 0)}px`)\n if (k.rotate !== undefined) decl.push(`rotate:${css(k.rotate)}deg`)\n if (k.scale !== undefined) decl.push(`scale:${css(k.scale)}`)\n if (k.band !== undefined) decl.push(`--xui-band:${css(k.band)}`)\n return `${css(k.offset * 100)}%{${decl.join(`;`)}}`\n })\n return `@keyframes xui-${name}{${steps.join(``)}}`\n}\n\n/** The CSS `animation` shorthand for a resolved timing (per-segment easing\n * is CSS's own semantics). */\nexport function animationCss(name: string, timing: AnimationTiming): string {\n const easing = timing.easing === LINEAR ? `linear` : `cubic-bezier(${timing.easing.join(`, `)})`\n const iterations = timing.iterations === `infinite` ? `infinite` : String(timing.iterations)\n return `xui-${name} ${timing.durationMs}ms ${easing} ${iterations} both`\n}\n",
10
10
  "// Round 1 (docs/round-1-contract.md §4): the locale decisions every renderer\n// shares (catalog/locale.json): the week start by region, the likely region\n// of a bare language, deprecated language codes, the right-to-left languages\n// and the directional glyphs mirrored under rtl. Formatting itself is the\n// platform's ICU; these are the parts that must not differ between them.\n\nimport localeJson from \"../catalog/locale.json\" with { type: \"json\" }\n\nexport const DEFAULT_LOCALE: string = localeJson.default\n\nexport interface LocaleParts {\n language: string\n region: string | null\n}\n\nconst ALIASES: Readonly<Record<string, string>> = localeJson.languageAliases\n\n/** `pt-BR` → {pt, BR}; `zh-Hant-TW` → {zh, TW}; `de` → {de, null}. The\n * region = the first 2-letter or 3-digit subtag after the language; a\n * deprecated language code is normalised (`iw` → `he`, `ji` → `yi`, `in` →\n * `id`: `languageAliases`). */\nexport function parseLocale(locale: string): LocaleParts {\n const tags = locale.replace(/_/g, `-`).split(`-`).filter(Boolean)\n const raw = (tags[0] ?? ``).toLowerCase()\n const language = ALIASES[raw] ?? raw\n const region = tags.slice(1).find((t) => /^[A-Za-z]{2}$|^\\d{3}$/.test(t))\n return { language, region: region ? region.toUpperCase() : null }\n}\n\nconst WEEK_START_BY_REGION: Record<string, number> = (() => {\n const out: Record<string, number> = {}\n for (const [day, regions] of Object.entries(localeJson.weekStart.regions)) for (const r of regions) out[r] = Number(day)\n return out\n})()\n\n/** The region a locale's data comes from: its own, else the language's\n * likely region (CLDR likelySubtags), else null. */\nexport function localeRegion(locale: string): string | null {\n const { language, region } = parseLocale(locale)\n return region ?? (localeJson.likelyRegion as Record<string, string>)[language] ?? null\n}\n\n/** The first day of the week, 0 = Sunday … 6 = Saturday. */\nexport function weekStart(locale: string): number {\n const r = localeRegion(locale)\n return r !== null && r in WEEK_START_BY_REGION ? WEEK_START_BY_REGION[r] : localeJson.weekStart.default\n}\n\n/** `rtl` for the right-to-left languages, else `ltr`. */\nexport function textDirection(locale: string): `ltr` | `rtl` {\n return localeJson.rtl.includes(parseLocale(locale).language) ? `rtl` : `ltr`\n}\n\n/** The directional glyphs (icons.json names) a painter mirrors under rtl. */\nexport const RTL_MIRRORED_ICONS: readonly string[] = localeJson.rtlMirroredIcons\n\n/** True when `icon` is drawn mirrored (scaleX(-1), outermost) in this\n * direction. */\nexport function mirrorsInRtl(icon: string, direction: `ltr` | `rtl`): boolean {\n return direction === `rtl` && RTL_MIRRORED_ICONS.includes(icon)\n}\n",
11
11
  "// Round 1 (docs/round-1-contract.md §3): CodeBlock's BUILT-IN tokenizer, the\n// reference every renderer mirrors (catalog/code.json `$comment` lists the\n// rules in order; fixtures/code-tokens.json locks the output). Deliberately\n// small: one forward scan, no regex backtracking, no nesting beyond markup\n// tags, so the Rust core, Swift and Kotlin port it line by line.\n\nimport codeJson from \"../catalog/code.json\" with { type: \"json\" }\n\nexport interface CodeToken {\n kind: string\n text: string\n}\n\ninterface LanguageSpec {\n plain?: boolean\n ansi?: boolean\n lineKinds?: Record<string, string>\n lineComment?: string[]\n blockComment?: [string, string][]\n strings?: string[]\n multiline?: string[]\n keyStrings?: boolean\n markup?: boolean\n numbers?: boolean\n identExtra?: string\n keywords?: string[]\n caseInsensitive?: boolean\n keyIdents?: boolean\n typeNames?: string[]\n types?: string\n operators?: string\n punctuation?: string\n}\n\nexport const CODE_LANGUAGES: Record<string, LanguageSpec> = codeJson.languages as unknown as Record<string, LanguageSpec>\nexport const CODE_LANGUAGE_NAMES: readonly string[] = Object.keys(CODE_LANGUAGES)\n\nconst isDigit = (c: string | undefined) => c !== undefined && c >= `0` && c <= `9`\nconst isAlpha = (c: string | undefined) => c !== undefined && ((c >= `a` && c <= `z`) || (c >= `A` && c <= `Z`))\nconst isSpace = (c: string | undefined) => c === ` ` || c === `\\t`\n\n/** The next char after `j` that is not a space or tab. */\nfunction nextNonSpace(code: string, j: number): string | undefined {\n let k = j\n while (isSpace(code[k])) k++\n return code[k]\n}\n\n/** The source as flat tokens (text may span lines). `lineStart` = whether\n * index 0 sits at the start of a line (an ansi run that begins mid-line\n * does not). */\nfunction scan(code: string, spec: LanguageSpec, lineStart = true): CodeToken[] {\n const out: CodeToken[] = []\n const n = code.length\n const operators = spec.operators ?? codeJson.defaults.operators\n const punctuation = spec.punctuation ?? codeJson.defaults.punctuation\n const extra = spec.identExtra ?? ``\n const identStart = (c: string | undefined) => isAlpha(c) || c === `_` || c === `$` || (c !== undefined && extra.includes(c))\n const identPart = (c: string | undefined) => identStart(c) || isDigit(c)\n const keywords = new Set(spec.keywords ?? [])\n const typeNames = new Set(spec.typeNames ?? [])\n const push = (kind: string, text: string) => out.push({ kind, text })\n const lastSignificant = () => {\n for (let k = out.length - 1; k >= 0; k--) if (out[k].text.trim() !== ``) return out[k]\n return undefined\n }\n if (spec.plain) return code ? [{ kind: `plain`, text: code }] : []\n let i = 0\n let inTag = false\n while (i < n) {\n const c = code[i]\n if (c === `\\n`) {\n push(`plain`, c)\n i++\n continue\n }\n // (1) line kinds\n if (spec.lineKinds && (i === 0 ? lineStart : code[i - 1] === `\\n` || isSpaceRunToLineStart(code, i, lineStart))) {\n // EXP-1324: the LONGEST listed prefix wins (`FAILED` over `FAIL`).\n let prefix: string | undefined\n for (const p of Object.keys(spec.lineKinds)) if (code.startsWith(p, i) && (!prefix || p.length > prefix.length)) prefix = p\n if (prefix && !isSpace(c)) {\n let j = i\n while (j < n && code[j] !== `\\n`) j++\n push(spec.lineKinds[prefix], code.slice(i, j))\n i = j\n continue\n }\n }\n // (2) line comments\n const line = !inTag ? (spec.lineComment ?? []).find((p) => code.startsWith(p, i)) : undefined\n if (line) {\n let j = i\n while (j < n && code[j] !== `\\n`) j++\n push(`comment`, code.slice(i, j))\n i = j\n continue\n }\n // (3) block comments\n const block = !inTag ? (spec.blockComment ?? []).find(([open]) => code.startsWith(open, i)) : undefined\n if (block) {\n const end = code.indexOf(block[1], i + block[0].length)\n const j = end < 0 ? n : end + block[1].length\n push(`comment`, code.slice(i, j))\n i = j\n continue\n }\n // (4) strings\n if ((spec.strings ?? []).includes(c) && (!spec.markup || inTag)) {\n const multi = (spec.multiline ?? []).includes(c)\n let j = i + 1\n while (j < n) {\n if (code[j] === `\\\\`) {\n j += 2\n continue\n }\n if (code[j] === c) {\n j++\n break\n }\n if (code[j] === `\\n` && !multi) break\n j++\n }\n j = Math.min(j, n)\n const kind = spec.keyStrings && nextNonSpace(code, j) === `:` ? `property` : `string`\n push(kind, code.slice(i, j))\n i = j\n continue\n }\n // (5) markup\n if (spec.markup) {\n if (!inTag) {\n if (c === `<` && (isAlpha(code[i + 1]) || code[i + 1] === `/` || code[i + 1] === `!`)) {\n const open = code[i + 1] === `/` ? `</` : `<`\n push(`punctuation`, open)\n let j = i + open.length\n const start = j\n while (j < n && (isAlpha(code[j]) || isDigit(code[j]) || code[j] === `-` || code[j] === `:` || code[j] === `!`)) j++\n if (j > start) push(`tag`, code.slice(start, j))\n inTag = true\n i = j\n continue\n }\n let j = i\n while (j < n && code[j] !== `<` && code[j] !== `\\n`) j++\n if (j === i) j = i + 1\n push(`plain`, code.slice(i, j))\n i = j\n continue\n }\n if (c === `>` || code.startsWith(`/>`, i)) {\n const close = c === `>` ? `>` : `/>`\n push(`punctuation`, close)\n inTag = false\n i += close.length\n continue\n }\n if (c === `=`) {\n push(`operator`, c)\n i++\n continue\n }\n if (isAlpha(c) || c === `_` || c === `:` || c === `@`) {\n let j = i\n while (j < n && (isAlpha(code[j]) || isDigit(code[j]) || `_:@.-`.includes(code[j]))) j++\n push(`attribute`, code.slice(i, j))\n i = j\n continue\n }\n if (isSpace(c)) {\n let j = i\n while (isSpace(code[j])) j++\n push(`plain`, code.slice(i, j))\n i = j\n continue\n }\n push(`plain`, c)\n i++\n continue\n }\n // (6) numbers\n if (spec.numbers !== false && (isDigit(c) || (c === `.` && isDigit(code[i + 1])))) {\n let j = i + 1\n while (j < n && (isDigit(code[j]) || isAlpha(code[j]) || code[j] === `_` || code[j] === `.`)) j++\n push(`number`, code.slice(i, j))\n i = j\n continue\n }\n // (7) identifiers\n if (identStart(c)) {\n let j = i + 1\n while (j < n && identPart(code[j])) j++\n const word = code.slice(i, j)\n const key = spec.caseInsensitive ? word.toLowerCase() : word\n const next = nextNonSpace(code, j)\n const after = (() => {\n let k = j\n while (isSpace(code[k])) k++\n return code[k + 1]\n })()\n const prev = lastSignificant()\n let kind = `plain`\n if (keywords.has(key)) kind = `keyword`\n else if (spec.keyIdents && next === `:` && after !== `:`) kind = `property`\n else if (next === `(`) kind = `function`\n else if (prev && prev.kind === `punctuation` && prev.text.endsWith(`.`)) kind = `property`\n else if (typeNames.has(word) || (spec.types === `capitalized` && word[0] >= `A` && word[0] <= `Z`)) kind = `type`\n push(kind, word)\n i = j\n continue\n }\n // (8) spaces\n if (isSpace(c)) {\n let j = i\n while (isSpace(code[j])) j++\n push(`plain`, code.slice(i, j))\n i = j\n continue\n }\n // (9) operators\n if (operators.includes(c)) {\n let j = i\n while (j < n && operators.includes(code[j])) j++\n push(`operator`, code.slice(i, j))\n i = j\n continue\n }\n // (10) punctuation, (11) anything else\n push(punctuation.includes(c) ? `punctuation` : `plain`, c)\n i++\n }\n return out\n}\n\n/** True when only spaces/tabs separate `i` from the start of its line\n * (`lineStart` = whether the text's index 0 starts a line). */\nfunction isSpaceRunToLineStart(code: string, i: number, lineStart = true): boolean {\n let k = i - 1\n while (k >= 0 && isSpace(code[k])) k--\n return k < 0 ? lineStart : code[k] === `\\n`\n}\n\n/** EXP-1324 `ansi`: one run of the escape-free text, with the SGR colour\n * (a codeToken kind) it was printed in, or null. */\nexport interface AnsiRun {\n kind: string | null\n text: string\n}\n\nconst isCsiParam = (c: number) => c >= 0x30 && c <= 0x3f\nconst isCsiIntermediate = (c: number) => c >= 0x20 && c <= 0x2f\nconst isCsiFinal = (c: number) => c >= 0x40 && c <= 0x7e\n\n/** The SGR colour after applying `params` (left to right) to `kind`:\n * 31/91 error, 32/92 success, 33/93 warning, 2/90 comment, 0/39/empty\n * reset; any other parameter leaves the colour as it was. */\nfunction sgrKind(params: string, kind: string | null): string | null {\n let out = kind\n for (const raw of params.split(`;`)) {\n const p = raw === `` ? 0 : Number(raw)\n if (p === 0 || p === 39) out = null\n else if (p === 31 || p === 91) out = `error`\n else if (p === 32 || p === 92) out = `success`\n else if (p === 33 || p === 93) out = `warning`\n else if (p === 2 || p === 90) out = `comment`\n }\n return out\n}\n\n/** The source with every ANSI CSI escape removed, split into runs by SGR\n * colour (catalog/code.json `$comment`, `ansi`). Adjacent runs of one\n * colour merge; an incomplete escape stays text. */\nexport function ansiRuns(source: string): AnsiRun[] {\n const runs: AnsiRun[] = []\n let kind: string | null = null\n let text = ``\n const flush = () => {\n if (text === ``) return\n const last = runs.at(-1)\n if (last && last.kind === kind) last.text += text\n else runs.push({ kind, text })\n text = ``\n }\n let i = 0\n const n = source.length\n while (i < n) {\n if (source.charCodeAt(i) === 0x1b && source[i + 1] === `[`) {\n let j = i + 2\n while (j < n && isCsiParam(source.charCodeAt(j))) j++\n const params = source.slice(i + 2, j)\n while (j < n && isCsiIntermediate(source.charCodeAt(j))) j++\n if (j < n && isCsiFinal(source.charCodeAt(j))) {\n if (source[j] === `m`) {\n const next = sgrKind(params, kind)\n if (next !== kind) {\n flush()\n kind = next\n }\n }\n i = j + 1\n continue\n }\n }\n text += source[i]\n i++\n }\n flush()\n return runs\n}\n\n/** `ansi`: coloured runs verbatim, uncoloured ones through the scanner. */\nfunction scanAnsi(code: string, spec: LanguageSpec): CodeToken[] {\n const out: CodeToken[] = []\n let atLine = true\n for (const run of ansiRuns(code)) {\n if (run.kind) out.push({ kind: run.kind, text: run.text })\n else out.push(...scan(run.text, spec, atLine))\n atLine = isSpaceRunToLineStart(run.text, run.text.length, atLine)\n }\n return out\n}\n\n/** The text a CodeBlock shows and copies: the source with CRLF → LF and,\n * for `ansi`, every escape removed. */\nexport function codeText(source: string, language: string): string {\n const code = source.replace(/\\r\\n?/g, `\\n`)\n return CODE_LANGUAGES[language]?.ansi ? ansiRuns(code).map((r) => r.text).join(``) : code\n}\n\n/** The source tokenized per LINE: each line's tokens concatenate to exactly\n * its text (no `\\n`), adjacent tokens of one kind merged; an empty line is\n * an empty list. An unknown language tokenizes as `plain`. */\nexport function tokenizeCode(source: string, language: string): CodeToken[][] {\n const code = source.replace(/\\r\\n?/g, `\\n`)\n const spec = CODE_LANGUAGES[language] ?? CODE_LANGUAGES.plain\n const lines: CodeToken[][] = [[]]\n for (const token of spec.ansi ? scanAnsi(code, spec) : scan(code, spec)) {\n const pieces = token.text.split(`\\n`)\n pieces.forEach((piece, index) => {\n if (index > 0) lines.push([])\n if (piece === ``) return\n const line = lines.at(-1)!\n const last = line.at(-1)\n if (last && last.kind === token.kind) last.text += piece\n else line.push({ kind: token.kind, text: piece })\n })\n }\n return lines\n}\n",
12
+ "/**\n * YO-30: the reference for `fixtures/text-clusters.json`. Text lays out per\n * grapheme cluster (UAX #29 extended): font fallback picks one face per\n * cluster (a combining mark shares its base's face), and CSS\n * `letter-spacing` is added once per cluster (a mark and a bidi control add\n * none).\n */\n\nconst segmenter = new Intl.Segmenter(undefined, { granularity: `grapheme` })\n\n/** The invisible bidi controls (no letter-spacing of their own). */\nconst BIDI_CONTROL = /^[؜‎‏‪-‮⁦-⁩]+$/u\n\n/** The grapheme clusters of `text`, in order. */\nexport function textClusters(text: string): string[] {\n return Array.from(segmenter.segment(text), (s) => s.segment)\n}\n\n/** How many times `letter-spacing` is added to `text`. */\nexport function trackedClusters(text: string): number {\n return textClusters(text).filter((c) => !BIDI_CONTROL.test(c)).length\n}\n",
12
13
  "// EXP-1324: the Text `shimmer` (catalog/style.json `textShimmer`): the\n// colours a painter fills the glyphs with while a TraceItem runs. Pure; the\n// Rust core's `text_shimmer` ports it and fixtures/text-shimmer.json locks it.\n\nimport styleJson from \"../catalog/style.json\" with { type: \"json\" }\nimport { parseColor, toHex } from \"./color\"\n\nexport const TEXT_SHIMMER = styleJson.textShimmer\n\nexport interface TextShimmer {\n /** The text colour (`#rrggbb[aa]`). */\n base: string\n /** The band's centre. */\n highlight: string\n /** The 50% OKLab mix at ± spread/2. */\n mid: string\n durationMs: number\n angleDeg: number\n spreadPx: number\n}\n\ntype Lab = [number, number, number]\n\nconst toLinear = (c: number) => (c <= 0.04045 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4))\nconst toGamma = (c: number) => {\n const x = Math.max(0, Math.min(1, c))\n return x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055\n}\n\nfunction rgbToOklab(r: number, g: number, b: number): Lab {\n const [lr, lg, lb] = [toLinear(r / 255), toLinear(g / 255), toLinear(b / 255)]\n const l = Math.cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb)\n const m = Math.cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb)\n const s = Math.cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb)\n return [\n 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,\n 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,\n 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s,\n ]\n}\n\nfunction oklabToRgb([L, a, b]: Lab): [number, number, number] {\n const l = Math.pow(L + 0.3963377774 * a + 0.2158037573 * b, 3)\n const m = Math.pow(L - 0.1055613458 * a - 0.0638541728 * b, 3)\n const s = Math.pow(L - 0.0894841775 * a - 1.291485548 * b, 3)\n return [\n toGamma(4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s) * 255,\n toGamma(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s) * 255,\n toGamma(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s) * 255,\n ]\n}\n\nconst hex = (lab: Lab, alpha: number) => {\n const [r, g, b] = oklabToRgb(lab)\n return toHex({ r, g, b, a: alpha })\n}\n\n/** The shimmer colours for a text colour (`#rrggbb[aa]`); `dark` = the\n * surface's dark mode. An unparsable colour shimmers from black. */\nexport function textShimmer(color: string, dark: boolean): TextShimmer {\n const t = TEXT_SHIMMER\n const c = parseColor(color) ?? { r: 0, g: 0, b: 0, a: 1 }\n const base = rgbToOklab(c.r, c.g, c.b)\n let high: Lab = base\n let highAlpha = c.a * t.lightAlphaFactor\n if (dark) {\n high = [Math.min(1, Math.max(t.highlightLightnessMin, base[0] + t.highlightLightnessBoost)), base[1], base[2]]\n highAlpha = Math.min(1, c.a + t.highlightAlphaBoost)\n }\n const sum = c.a + highAlpha\n const mid: Lab = sum > 0 ? [0, 1, 2].map((i) => (base[i] * c.a + high[i] * highAlpha) / sum) as Lab : base\n return {\n base: toHex(c),\n highlight: hex(high, highAlpha),\n mid: hex(mid, sum / 2),\n durationMs: t.durationMs,\n angleDeg: t.angleDeg,\n spreadPx: t.spreadPx,\n }\n}\n",
13
14
  "// NEW-77: the VoiceWave native (catalog/style.json `voiceWave`): three closed\n// polar waves around one optional centre child, driven by a microphone or\n// speaker level. Pure; the Rust core's `voice_wave` ports it and\n// fixtures/voice-wave.json locks the points every painter draws.\n\nimport styleJson from \"../catalog/style.json\" with { type: \"json\" }\n\nexport const VOICE_WAVE = styleJson.voiceWave\n\nexport const VOICE_WAVE_ACTIVITIES = [`idle`, `listening`, `thinking`, `speaking`, `muted`] as const\nexport type VoiceWaveActivity = (typeof VOICE_WAVE_ACTIVITIES)[number]\n\nexport const VOICE_WAVE_RINGS = [`outer`, `mid`, `inner`] as const\nexport type VoiceWaveRingName = (typeof VOICE_WAVE_RINGS)[number]\n\nexport interface VoiceWaveInput {\n /** The box edge in px (the root recipe's width). */\n size: number\n activity: VoiceWaveActivity\n /** 0..1; clamped. */\n level?: number\n /** 0..1 each; the first `maxBands` count, clamped. */\n bands?: readonly number[]\n /** Seconds since the wave started animating (ignored when idle or muted). */\n elapsed?: number\n reducedMotion?: boolean\n /** The one child's own laid-out size (the core centres it at that size). */\n child?: { width: number; height: number }\n}\n\n/** Where the painter draws the child: its own box scaled about the wave's\n * centre by `scale` = min(1, childSize / its longer edge), never up; 0 =\n * kept in the tree but not painted (`sm`). */\nexport interface VoiceWaveChildBox {\n x: number\n y: number\n width: number\n height: number\n scale: number\n}\n\nexport interface VoiceWaveRing {\n /** The recipe part that colours it. */\n part: VoiceWaveRingName\n /** `steps + 1` points, x/y in px from the box's top-left (the last repeats the first). */\n points: Array<[number, number]>\n fillAlpha: number\n strokeAlpha: number\n strokeWidth: number\n}\n\nexport interface VoiceWave {\n rings: VoiceWaveRing[]\n /** The centre child's edge in px; 0 = the child is not painted (`sm`). */\n childSize: number\n /** The phase the rings were drawn at (radians). */\n phase: number\n /** Present when the input gave the child's size. */\n child?: VoiceWaveChildBox\n}\n\nconst clamp01 = (n: number) => (Number.isFinite(n) ? Math.min(1, Math.max(0, n)) : 0)\nconst round2 = (n: number) => Math.round(n * 100) / 100\n\n/** The phase a painter draws at `elapsed` seconds. */\nexport function voiceWavePhase(raw: VoiceWaveActivity, elapsed: number, reducedMotion = false): number {\n const activity = voiceWaveActivity(raw)\n if (reducedMotion || activity === `idle` || activity === `muted`) return 0\n return (Number.isFinite(elapsed) ? Math.max(0, elapsed) : 0) * VOICE_WAVE.phaseSpeed\n}\n\n/** The child's edge for a box `size` (the size enum's px, sm 32 · md 56 · lg 160 · xl 200). */\nexport function voiceWaveChildSize(size: number): number {\n const v = VOICE_WAVE\n if (size < 40) return 0\n return round2(size * (size >= 100 ? v.childScaleLarge : v.childScale))\n}\n\n/** The child's painted box in a wave of edge `size` (see VoiceWaveChildBox). */\nexport function voiceWaveChildBox(size: number, child: { width: number; height: number }): VoiceWaveChildBox {\n const edge = voiceWaveChildSize(size)\n const w = Math.max(0, child.width)\n const h = Math.max(0, child.height)\n const longer = Math.max(w, h)\n const scale = edge === 0 ? 0 : longer <= edge || longer === 0 ? 1 : Math.round((edge / longer) * 10000) / 10000\n const width = round2(w * scale)\n const height = round2(h * scale)\n return { x: round2((size - width) / 2), y: round2((size - height) / 2), width, height, scale }\n}\n\n/** The three rings for one frame. Coordinates are rounded to 0.01 px. */\n/** The activity as the catalog names it; anything else (a bound string, a\n * typo) is `idle`, in every renderer (the Rust core: `#[serde(other)]`). */\nexport function voiceWaveActivity(value: unknown): VoiceWaveActivity {\n return (VOICE_WAVE_ACTIVITIES as readonly unknown[]).includes(value) ? (value as VoiceWaveActivity) : `idle`\n}\n\nexport function voiceWave(raw: VoiceWaveInput): VoiceWave {\n const input = { ...raw, activity: voiceWaveActivity(raw.activity) }\n const v = VOICE_WAVE\n const size = Math.max(0, input.size)\n const c = size / 2\n const level = clamp01(input.level ?? 0)\n const bands = (input.bands ?? []).slice(0, v.maxBands).map(clamp01)\n const phase = voiceWavePhase(input.activity, input.elapsed ?? 0, input.reducedMotion)\n const drive =\n input.activity === `listening` || input.activity === `speaking`\n ? v.ampBase + v.ampLevel * level\n : input.activity === `thinking`\n ? v.thinkingAmp\n : 0\n const flat = bands.length === 0 || input.activity === `thinking`\n const rings = VOICE_WAVE_RINGS.map((part, k): VoiceWaveRing => {\n const harmonics = v.harmonics[k]!\n const amp = (v.ringAmp[k]! * size * drive) / 200\n const points: Array<[number, number]> = []\n for (let i = 0; i <= v.steps; i += 1) {\n const t = (i / v.steps) * Math.PI * 2\n let r = size * v.radius[k]!\n harmonics.forEach((h, j) => {\n const band = flat ? 1 : bands[(3 * k + j) % bands.length]!\n r += (amp / (j + 1)) * band * Math.sin(h * t + (v.phase0[k]! + phase) * (j + 1))\n })\n points.push([round2(c + r * Math.cos(t)), round2(c + r * Math.sin(t))])\n }\n return {\n part,\n points,\n fillAlpha: v.fillAlpha[k]!,\n strokeAlpha: v.strokeAlpha[k]!,\n strokeWidth: round2(Math.max(1, (v.strokeWidth[k]! * size) / 200)),\n }\n })\n const out: VoiceWave = { rings, childSize: voiceWaveChildSize(size), phase: round2(phase) }\n if (input.child) out.child = voiceWaveChildBox(size, input.child)\n return out\n}\n\n/** An SVG path (`M … L … Z`) for a ring: what the web painters set as `d`. */\nexport function voiceWavePath(ring: VoiceWaveRing): string {\n return `${ring.points.map(([x, y], i) => `${i === 0 ? `M` : `L`}${x} ${y}`).join(` `)}Z`\n}\n\n// ---------------------------------------------------------------------------\n// VAPP-162: `variant: bars`, the horizontal level meter (style.json\n// `voiceWave.bars`). Same inputs as the rings; no child.\n// ---------------------------------------------------------------------------\n\nexport const VOICE_WAVE_BARS = styleJson.voiceWave.bars\n\nexport const VOICE_WAVE_SIZES = [`sm`, `md`, `lg`, `xl`] as const\nexport type VoiceWaveSizeName = (typeof VOICE_WAVE_SIZES)[number]\n\nexport const VOICE_WAVE_VARIANTS = [`ring`, `bars`] as const\nexport type VoiceWaveVariant = (typeof VOICE_WAVE_VARIANTS)[number]\n\n/** The variant as the catalog names it; anything else is `ring`. */\nexport function voiceWaveVariant(value: unknown): VoiceWaveVariant {\n return (VOICE_WAVE_VARIANTS as readonly unknown[]).includes(value) ? (value as VoiceWaveVariant) : `ring`\n}\n\nexport interface VoiceWaveBarsInput {\n /** The size class (an unknown one is `md`). */\n size: VoiceWaveSizeName\n activity: VoiceWaveActivity\n level?: number\n bands?: readonly number[]\n elapsed?: number\n reducedMotion?: boolean\n}\n\nexport interface VoiceWaveBar {\n x: number\n y: number\n width: number\n height: number\n radius: number\n}\n\nexport interface VoiceWaveBars {\n /** The root box: count × barWidth + (count − 1) × gap wide, `height` tall. */\n width: number\n height: number\n phase: number\n bars: VoiceWaveBar[]\n}\n\n/** The box of a `bars` meter for a size class. */\nexport function voiceWaveBarsBox(raw: unknown): { width: number; height: number; barWidth: number; gap: number } {\n const size = (VOICE_WAVE_SIZES as readonly unknown[]).includes(raw) ? (raw as VoiceWaveSizeName) : `md`\n const spec = VOICE_WAVE_BARS.sizes[size]\n const n = VOICE_WAVE_BARS.count\n return { width: n * spec.barWidth + (n - 1) * spec.gap, height: spec.height, barWidth: spec.barWidth, gap: spec.gap }\n}\n\n/** The bars for one frame (style.json `voiceWave.bars` $comment). */\nexport function voiceWaveBars(raw: VoiceWaveBarsInput): VoiceWaveBars {\n const activity = voiceWaveActivity(raw.activity)\n const v = VOICE_WAVE\n const b = VOICE_WAVE_BARS\n const box = voiceWaveBarsBox(raw.size)\n const level = clamp01(raw.level ?? 0)\n const bands = (raw.bands ?? []).slice(0, v.maxBands).map(clamp01)\n const phase = voiceWavePhase(activity, raw.elapsed ?? 0, raw.reducedMotion)\n const full = v.ampBase + v.ampLevel\n const drive = activity === `listening` || activity === `speaking` ? (v.ampBase + v.ampLevel * level) / full : activity === `thinking` ? v.thinkingAmp / full : 0\n const flat = bands.length === 0 || activity === `thinking`\n const n = b.count\n const bars: VoiceWaveBar[] = []\n for (let i = 0; i < n; i += 1) {\n const band = flat ? 1 : bands[i % bands.length]!\n const envelope = 1 - b.envelope * Math.abs((2 * i) / (n - 1) - 1)\n const shape = 0.5 + 0.5 * Math.sin(b.shapeFreq * i + phase * (1 + (i % 3) * 0.5))\n const fraction = b.minFraction + (1 - b.minFraction) * drive * band * envelope * (b.shapeBase + (1 - b.shapeBase) * shape)\n const height = round2(box.height * fraction)\n bars.push({ x: i * (box.barWidth + box.gap), y: round2((box.height - height) / 2), width: box.barWidth, height, radius: box.barWidth / 2 })\n }\n return { width: box.width, height: box.height, phase: round2(phase), bars }\n}\n",
14
15
  "// VAPP-162: the QrCode native's MATRIX (catalog/style.json `qrCode`). A\n// faithful TypeScript port of Project Nayuki's QR Code generator library\n// (https://www.nayuki.io/page/qr-code-generator-library, MIT licence,\n// Copyright (c) Project Nayuki; the notice is in docs/third-party-licences.md),\n// narrowed to what the catalog needs: ONE byte-mode segment over the value's\n// UTF-8 bytes, the smallest version 1–40 that fits, the given error\n// correction level kept exact (Nayuki's `boostEcl` OFF), the mask with the\n// lowest penalty. Pure; the Rust core ports it and fixtures/qr-code.json\n// locks every matrix.\n\nimport styleJson from \"../catalog/style.json\" with { type: \"json\" }\n\nexport const QR_CODE = styleJson.qrCode\n\nexport const QR_LEVELS = [`L`, `M`, `Q`, `H`] as const\nexport type QrLevel = (typeof QR_LEVELS)[number]\n\nexport interface QrMatrix {\n /** Modules per side (21 + 4 × (version − 1)). */\n size: number\n version: number\n /** The mask pattern chosen (0..7). */\n mask: number\n /** `size` rows of `size` characters: '1' = dark, '0' = light; no quiet zone. */\n rows: string[]\n}\n\n/** The level as the catalog names it; anything else is `M` (the default). */\nexport function qrLevel(value: unknown): QrLevel {\n return (QR_LEVELS as readonly unknown[]).includes(value) ? (value as QrLevel) : `M`\n}\n\n// Nayuki: ECC_CODEWORDS_PER_BLOCK / NUM_ERROR_CORRECTION_BLOCKS, indexed\n// [level ordinal L M Q H][version]; index 0 is padding.\nconst ECC_CODEWORDS_PER_BLOCK: readonly (readonly number[])[] = [\n [-1, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28, 28, 28, 30, 30, 26, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],\n [-1, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],\n [-1, 13, 22, 18, 26, 18, 24, 18, 22, 20, 24, 28, 26, 24, 20, 30, 24, 28, 28, 26, 30, 28, 30, 30, 30, 30, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],\n [-1, 17, 28, 22, 16, 22, 28, 26, 26, 24, 28, 24, 28, 22, 24, 24, 30, 28, 28, 26, 28, 30, 24, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],\n]\nconst NUM_ERROR_CORRECTION_BLOCKS: readonly (readonly number[])[] = [\n [-1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8, 8, 9, 9, 10, 12, 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 24, 25],\n [-1, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31, 33, 35, 37, 38, 40, 43, 45, 47, 49],\n [-1, 1, 1, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 12, 16, 12, 17, 16, 18, 21, 20, 23, 23, 25, 27, 29, 34, 34, 35, 38, 40, 43, 45, 48, 51, 53, 56, 59, 62, 65, 68],\n [-1, 1, 1, 2, 4, 4, 4, 5, 6, 8, 8, 11, 11, 16, 16, 18, 16, 19, 21, 25, 25, 25, 34, 30, 32, 35, 37, 40, 42, 45, 48, 51, 54, 57, 60, 63, 66, 70, 74, 77, 81],\n]\n/** The two format bits the spec gives each level (L 1, M 0, Q 3, H 2). */\nconst FORMAT_BITS: Record<QrLevel, number> = { L: 1, M: 0, Q: 3, H: 2 }\nconst ORDINAL: Record<QrLevel, number> = { L: 0, M: 1, Q: 2, H: 3 }\n\nconst PENALTY_N1 = 3\nconst PENALTY_N2 = 3\nconst PENALTY_N3 = 40\nconst PENALTY_N4 = 10\n\nfunction utf8(value: string): number[] {\n return [...new TextEncoder().encode(value)]\n}\n\n/** Raw data modules of a version (all modules minus the function patterns). */\nfunction numRawDataModules(ver: number): number {\n let result = (16 * ver + 128) * ver + 64\n if (ver >= 2) {\n const numAlign = Math.floor(ver / 7) + 2\n result -= (25 * numAlign - 10) * numAlign - 55\n if (ver >= 7) result -= 36\n }\n return result\n}\n\nfunction numDataCodewords(ver: number, level: QrLevel): number {\n const o = ORDINAL[level]\n return Math.floor(numRawDataModules(ver) / 8) - ECC_CODEWORDS_PER_BLOCK[o]![ver]! * NUM_ERROR_CORRECTION_BLOCKS[o]![ver]!\n}\n\n/** Byte mode's character-count field width per version band. */\nconst byteCountBits = (ver: number) => (ver < 10 ? 8 : 16)\n\n// --- Reed–Solomon over GF(2^8 / 0x11D) --------------------------------------\n\nfunction rsMultiply(x: number, y: number): number {\n let z = 0\n for (let i = 7; i >= 0; i--) {\n z = (z << 1) ^ ((z >>> 7) * 0x11d)\n z ^= ((y >>> i) & 1) * x\n }\n return z & 0xff\n}\n\nfunction rsDivisor(degree: number): number[] {\n const result: number[] = new Array(degree - 1).fill(0)\n result.push(1)\n let root = 1\n for (let i = 0; i < degree; i++) {\n for (let j = 0; j < result.length; j++) {\n result[j] = rsMultiply(result[j]!, root)\n if (j + 1 < result.length) result[j] = result[j]! ^ result[j + 1]!\n }\n root = rsMultiply(root, 0x02)\n }\n return result\n}\n\nfunction rsRemainder(data: readonly number[], divisor: readonly number[]): number[] {\n const result = divisor.map(() => 0)\n for (const b of data) {\n const factor = b ^ result.shift()!\n result.push(0)\n divisor.forEach((coef, i) => (result[i] = result[i]! ^ rsMultiply(coef, factor)))\n }\n return result\n}\n\n// --- The symbol ---------------------------------------------------------------\n\nclass QrSymbol {\n readonly size: number\n readonly modules: boolean[][]\n readonly isFunction: boolean[][]\n\n constructor(\n readonly version: number,\n readonly level: QrLevel\n ) {\n this.size = version * 4 + 17\n this.modules = Array.from({ length: this.size }, () => new Array<boolean>(this.size).fill(false))\n this.isFunction = Array.from({ length: this.size }, () => new Array<boolean>(this.size).fill(false))\n }\n\n setFunction(x: number, y: number, dark: boolean): void {\n this.modules[y]![x] = dark\n this.isFunction[y]![x] = true\n }\n\n drawFunctionPatterns(): void {\n for (let i = 0; i < this.size; i++) {\n this.setFunction(6, i, i % 2 === 0)\n this.setFunction(i, 6, i % 2 === 0)\n }\n this.drawFinder(3, 3)\n this.drawFinder(this.size - 4, 3)\n this.drawFinder(3, this.size - 4)\n const align = this.alignmentPositions()\n const n = align.length\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < n; j++) {\n if (!((i === 0 && j === 0) || (i === 0 && j === n - 1) || (i === n - 1 && j === 0))) this.drawAlignment(align[i]!, align[j]!)\n }\n }\n this.drawFormatBits(0) // dummy, overwritten after the mask is chosen\n this.drawVersion()\n }\n\n drawFormatBits(mask: number): void {\n const data = (FORMAT_BITS[this.level] << 3) | mask\n let rem = data\n for (let i = 0; i < 10; i++) rem = (rem << 1) ^ ((rem >>> 9) * 0x537)\n const bits = ((data << 10) | rem) ^ 0x5412\n const bit = (i: number) => ((bits >>> i) & 1) !== 0\n for (let i = 0; i <= 5; i++) this.setFunction(8, i, bit(i))\n this.setFunction(8, 7, bit(6))\n this.setFunction(8, 8, bit(7))\n this.setFunction(7, 8, bit(8))\n for (let i = 9; i < 15; i++) this.setFunction(14 - i, 8, bit(i))\n for (let i = 0; i < 8; i++) this.setFunction(this.size - 1 - i, 8, bit(i))\n for (let i = 8; i < 15; i++) this.setFunction(8, this.size - 15 + i, bit(i))\n this.setFunction(8, this.size - 8, true) // always dark\n }\n\n drawVersion(): void {\n if (this.version < 7) return\n let rem = this.version\n for (let i = 0; i < 12; i++) rem = (rem << 1) ^ ((rem >>> 11) * 0x1f25)\n const bits = (this.version << 12) | rem\n for (let i = 0; i < 18; i++) {\n const dark = ((bits >>> i) & 1) !== 0\n const a = this.size - 11 + (i % 3)\n const b = Math.floor(i / 3)\n this.setFunction(a, b, dark)\n this.setFunction(b, a, dark)\n }\n }\n\n drawFinder(x: number, y: number): void {\n for (let dy = -4; dy <= 4; dy++) {\n for (let dx = -4; dx <= 4; dx++) {\n const dist = Math.max(Math.abs(dx), Math.abs(dy))\n const xx = x + dx\n const yy = y + dy\n if (xx >= 0 && xx < this.size && yy >= 0 && yy < this.size) this.setFunction(xx, yy, dist !== 2 && dist !== 4)\n }\n }\n }\n\n drawAlignment(x: number, y: number): void {\n for (let dy = -2; dy <= 2; dy++) for (let dx = -2; dx <= 2; dx++) this.setFunction(x + dx, y + dy, Math.max(Math.abs(dx), Math.abs(dy)) !== 1)\n }\n\n alignmentPositions(): number[] {\n if (this.version === 1) return []\n const numAlign = Math.floor(this.version / 7) + 2\n const step = Math.floor((this.version * 8 + numAlign * 3 + 5) / (numAlign * 4 - 4)) * 2\n const result = [6]\n for (let pos = this.size - 7; result.length < numAlign; pos -= step) result.splice(1, 0, pos)\n return result\n }\n\n addEccAndInterleave(data: readonly number[]): number[] {\n const o = ORDINAL[this.level]\n const numBlocks = NUM_ERROR_CORRECTION_BLOCKS[o]![this.version]!\n const blockEccLen = ECC_CODEWORDS_PER_BLOCK[o]![this.version]!\n const rawCodewords = Math.floor(numRawDataModules(this.version) / 8)\n const numShortBlocks = numBlocks - (rawCodewords % numBlocks)\n const shortBlockLen = Math.floor(rawCodewords / numBlocks)\n const blocks: number[][] = []\n const divisor = rsDivisor(blockEccLen)\n for (let i = 0, k = 0; i < numBlocks; i++) {\n const dat = data.slice(k, k + shortBlockLen - blockEccLen + (i < numShortBlocks ? 0 : 1))\n k += dat.length\n const ecc = rsRemainder(dat, divisor)\n if (i < numShortBlocks) dat.push(0)\n blocks.push(dat.concat(ecc))\n }\n const result: number[] = []\n for (let i = 0; i < blocks[0]!.length; i++) {\n blocks.forEach((block, j) => {\n if (i !== shortBlockLen - blockEccLen || j >= numShortBlocks) result.push(block[i]!)\n })\n }\n return result\n }\n\n drawCodewords(data: readonly number[]): void {\n let i = 0\n for (let right = this.size - 1; right >= 1; right -= 2) {\n if (right === 6) right = 5\n for (let vert = 0; vert < this.size; vert++) {\n for (let j = 0; j < 2; j++) {\n const x = right - j\n const upward = ((right + 1) & 2) === 0\n const y = upward ? this.size - 1 - vert : vert\n if (!this.isFunction[y]![x] && i < data.length * 8) {\n this.modules[y]![x] = ((data[i >>> 3]! >>> (7 - (i & 7))) & 1) !== 0\n i++\n }\n }\n }\n }\n }\n\n applyMask(mask: number): void {\n for (let y = 0; y < this.size; y++) {\n for (let x = 0; x < this.size; x++) {\n let invert: boolean\n switch (mask) {\n case 0: invert = (x + y) % 2 === 0; break\n case 1: invert = y % 2 === 0; break\n case 2: invert = x % 3 === 0; break\n case 3: invert = (x + y) % 3 === 0; break\n case 4: invert = (Math.floor(x / 3) + Math.floor(y / 2)) % 2 === 0; break\n case 5: invert = ((x * y) % 2) + ((x * y) % 3) === 0; break\n case 6: invert = (((x * y) % 2) + ((x * y) % 3)) % 2 === 0; break\n default: invert = (((x + y) % 2) + ((x * y) % 3)) % 2 === 0; break\n }\n if (!this.isFunction[y]![x] && invert) this.modules[y]![x] = !this.modules[y]![x]\n }\n }\n }\n\n penaltyScore(): number {\n let result = 0\n const size = this.size\n for (let y = 0; y < size; y++) {\n let runColor = false\n let runX = 0\n const runHistory = [0, 0, 0, 0, 0, 0, 0]\n for (let x = 0; x < size; x++) {\n if (this.modules[y]![x] === runColor) {\n runX++\n if (runX === 5) result += PENALTY_N1\n else if (runX > 5) result++\n } else {\n this.finderPenaltyAddHistory(runX, runHistory)\n if (!runColor) result += this.finderPenaltyCountPatterns(runHistory) * PENALTY_N3\n runColor = this.modules[y]![x]!\n runX = 1\n }\n }\n result += this.finderPenaltyTerminateAndCount(runColor, runX, runHistory) * PENALTY_N3\n }\n for (let x = 0; x < size; x++) {\n let runColor = false\n let runY = 0\n const runHistory = [0, 0, 0, 0, 0, 0, 0]\n for (let y = 0; y < size; y++) {\n if (this.modules[y]![x] === runColor) {\n runY++\n if (runY === 5) result += PENALTY_N1\n else if (runY > 5) result++\n } else {\n this.finderPenaltyAddHistory(runY, runHistory)\n if (!runColor) result += this.finderPenaltyCountPatterns(runHistory) * PENALTY_N3\n runColor = this.modules[y]![x]!\n runY = 1\n }\n }\n result += this.finderPenaltyTerminateAndCount(runColor, runY, runHistory) * PENALTY_N3\n }\n for (let y = 0; y < size - 1; y++) {\n for (let x = 0; x < size - 1; x++) {\n const color = this.modules[y]![x]\n if (color === this.modules[y]![x + 1] && color === this.modules[y + 1]![x] && color === this.modules[y + 1]![x + 1]) result += PENALTY_N2\n }\n }\n let dark = 0\n for (const row of this.modules) dark = row.reduce((sum, c) => sum + (c ? 1 : 0), dark)\n const total = size * size\n const k = Math.ceil(Math.abs(dark * 20 - total * 10) / total) - 1\n result += k * PENALTY_N4\n return result\n }\n\n finderPenaltyCountPatterns(runHistory: readonly number[]): number {\n const n = runHistory[1]!\n const core = n > 0 && runHistory[2] === n && runHistory[3] === n * 3 && runHistory[4] === n && runHistory[5] === n\n return (core && runHistory[0]! >= n * 4 && runHistory[6]! >= n ? 1 : 0) + (core && runHistory[6]! >= n * 4 && runHistory[0]! >= n ? 1 : 0)\n }\n\n finderPenaltyTerminateAndCount(currentRunColor: boolean, currentRunLength: number, runHistory: number[]): number {\n if (currentRunColor) {\n this.finderPenaltyAddHistory(currentRunLength, runHistory)\n currentRunLength = 0\n }\n currentRunLength += this.size\n this.finderPenaltyAddHistory(currentRunLength, runHistory)\n return this.finderPenaltyCountPatterns(runHistory)\n }\n\n finderPenaltyAddHistory(currentRunLength: number, runHistory: number[]): void {\n if (runHistory[0] === 0) currentRunLength += this.size\n runHistory.pop()\n runHistory.unshift(currentRunLength)\n }\n}\n\n/** The data codewords of one byte segment at `version` (header, data,\n * terminator, byte padding, the 0xEC/0x11 pad bytes). */\nfunction dataCodewords(bytes: readonly number[], version: number, level: QrLevel): number[] {\n const bits: number[] = []\n const append = (val: number, len: number) => {\n for (let i = len - 1; i >= 0; i--) bits.push((val >>> i) & 1)\n }\n append(0x4, 4)\n append(bytes.length, byteCountBits(version))\n for (const b of bytes) append(b, 8)\n const capacityBits = numDataCodewords(version, level) * 8\n append(0, Math.min(4, capacityBits - bits.length))\n append(0, (8 - (bits.length % 8)) % 8)\n for (let pad = 0xec; bits.length < capacityBits; pad ^= 0xec ^ 0x11) append(pad, 8)\n const out: number[] = new Array(bits.length / 8).fill(0)\n bits.forEach((b, i) => (out[i >>> 3] = out[i >>> 3]! | (b << (7 - (i & 7)))))\n return out\n}\n\n/** The smallest version whose data capacity holds `bytes` at `level`, or null. */\nexport function qrVersion(byteLength: number, level: QrLevel): number | null {\n for (let version = 1; version <= 40; version++) {\n const used = 4 + byteCountBits(version) + byteLength * 8\n if (byteLength < 1 << byteCountBits(version) && used <= numDataCodewords(version, level) * 8) return version\n }\n return null\n}\n\n/** The QR matrix of `value` (UTF-8, byte mode) at `level`; null for an empty\n * value or one too long for version 40 at that level. */\nexport function qrMatrix(value: string, rawLevel: unknown = `M`): QrMatrix | null {\n const level = qrLevel(rawLevel)\n if (typeof value !== `string` || value.length === 0) return null\n const bytes = utf8(value)\n const version = qrVersion(bytes.length, level)\n if (version === null) return null\n const sym = new QrSymbol(version, level)\n sym.drawFunctionPatterns()\n sym.drawCodewords(sym.addEccAndInterleave(dataCodewords(bytes, version, level)))\n let mask = 0\n let minPenalty = Infinity\n for (let i = 0; i < 8; i++) {\n sym.applyMask(i)\n sym.drawFormatBits(i)\n const penalty = sym.penaltyScore()\n if (penalty < minPenalty) {\n mask = i\n minPenalty = penalty\n }\n sym.applyMask(i) // XOR undoes it\n }\n sym.applyMask(mask)\n sym.drawFormatBits(mask)\n return { size: sym.size, version, mask, rows: sym.modules.map((row) => row.map((d) => (d ? `1` : `0`)).join(``)) }\n}\n\n/** The painted geometry of a QrCode of edge `size` px (style.json `qrCode`):\n * the module edge and the quiet zone's inset, both in px. */\nexport function qrLayout(size: number, modules: number): { module: number; inset: number } {\n const module = size / (modules + 2 * QR_CODE.quietZone)\n return { module, inset: module * QR_CODE.quietZone }\n}\n",
@@ -23,7 +24,7 @@
23
24
  "// VAPP-91: the Exponential connector. A third-party host runs a declarative\n// app against an Exponential instance: OAuth to Exponential (the MCP OAuth\n// grant, EXP-792 — discovery, dynamic client registration, PKCE S256, the\n// person's consent picks the teams/boards) and `exp:` binding resolvers over\n// that instance's MCP tools (an OAuth token is confined to /api/mcp and to\n// its grant). Plain fetch + WebCrypto; it knows the instance's PUBLIC HTTP\n// API only, nothing of the app's code.\n\nimport type { HostFunction } from \"../host/runtime\"\nimport type { ParsedSource, SourceEmit, SourceResolvers } from \"../host/sources\"\n\nexport interface AuthServerMetadata {\n issuer: string\n authorization_endpoint: string\n token_endpoint: string\n registration_endpoint?: string\n}\n\nexport interface ConnectorTokens {\n accessToken: string\n refreshToken?: string\n /** Epoch ms. */\n expiresAt?: number\n}\n\nexport interface ConnectorOptions {\n /** The Exponential instance, e.g. `https://app.exponential.at`. */\n baseUrl: string\n /** Where the instance sends the person back with `?code=&state=`. */\n redirectUri: string\n clientName?: string\n /** A client id registered earlier (skips dynamic registration). */\n clientId?: string\n tokens?: ConnectorTokens\n /** Called whenever tokens change (persist them). */\n onTokens?: (tokens: ConnectorTokens) => void\n fetch?: typeof fetch\n /** Seconds between re-reads of a bound source (MCP has no live feed). */\n pollSeconds?: number\n}\n\nconst b64url = (bytes: Uint8Array) => btoa(String.fromCharCode(...bytes)).replace(/\\+/g, `-`).replace(/\\//g, `_`).replace(/=+$/, ``)\n\n/** A PKCE verifier and its S256 challenge. */\nexport async function pkcePair(): Promise<{ verifier: string; challenge: string }> {\n const verifier = b64url(crypto.getRandomValues(new Uint8Array(32)))\n const digest = new Uint8Array(await crypto.subtle.digest(`SHA-256`, new TextEncoder().encode(verifier)))\n return { verifier, challenge: b64url(digest) }\n}\n\nexport class ExponentialConnector {\n private metadata?: AuthServerMetadata\n private clientId?: string\n tokens?: ConnectorTokens\n private rpcId = 0\n\n constructor(private options: ConnectorOptions) {\n this.clientId = options.clientId\n this.tokens = options.tokens\n }\n\n private get fetch(): typeof fetch {\n return this.options.fetch ?? fetch\n }\n\n private url(path: string): string {\n return new URL(path, this.options.baseUrl).href\n }\n\n async discover(): Promise<AuthServerMetadata> {\n if (this.metadata) return this.metadata\n const res = await this.fetch(this.url(`/.well-known/oauth-authorization-server`))\n if (!res.ok) throw new Error(`discovery failed: HTTP ${res.status}`)\n this.metadata = (await res.json()) as AuthServerMetadata\n return this.metadata\n }\n\n /** Dynamic client registration (a public client: PKCE, no secret). */\n async register(): Promise<string> {\n if (this.clientId) return this.clientId\n const meta = await this.discover()\n if (!meta.registration_endpoint) throw new Error(`the instance offers no dynamic client registration; pass clientId`)\n const res = await this.fetch(meta.registration_endpoint, {\n method: `POST`,\n headers: { \"content-type\": `application/json` },\n body: JSON.stringify({ client_name: this.options.clientName ?? `Exponential UI host`, redirect_uris: [this.options.redirectUri], grant_types: [`authorization_code`, `refresh_token`], response_types: [`code`], token_endpoint_auth_method: `none` }),\n })\n if (!res.ok) throw new Error(`registration failed: HTTP ${res.status}`)\n this.clientId = ((await res.json()) as { client_id: string }).client_id\n return this.clientId\n }\n\n /** Where to send the person. Keep `verifier`, `state` AND `clientId`\n * for the callback: a connector rebuilt after the redirect needs the\n * dynamically registered client id (pass it to `exchange`, or as\n * `ConnectorOptions.clientId`), or the code was issued to a client the\n * token request does not name. */\n async authorizeUrl(): Promise<{ url: string; verifier: string; state: string; clientId: string }> {\n const meta = await this.discover()\n const clientId = await this.register()\n const { verifier, challenge } = await pkcePair()\n const state = b64url(crypto.getRandomValues(new Uint8Array(16)))\n const url = new URL(meta.authorization_endpoint)\n url.search = new URLSearchParams({ response_type: `code`, client_id: clientId, redirect_uri: this.options.redirectUri, code_challenge: challenge, code_challenge_method: `S256`, state, scope: `openid profile email offline_access` }).toString()\n return { url: url.href, verifier, state, clientId }\n }\n\n private async token(body: Record<string, string>): Promise<ConnectorTokens> {\n const meta = await this.discover()\n const res = await this.fetch(meta.token_endpoint, { method: `POST`, headers: { \"content-type\": `application/x-www-form-urlencoded` }, body: new URLSearchParams({ client_id: this.clientId ?? ``, ...body }).toString() })\n if (!res.ok) throw new Error(`token request failed: HTTP ${res.status}`)\n const json = (await res.json()) as { access_token: string; refresh_token?: string; expires_in?: number }\n this.tokens = { accessToken: json.access_token, refreshToken: json.refresh_token ?? this.tokens?.refreshToken, expiresAt: json.expires_in ? Date.now() + json.expires_in * 1000 : undefined }\n this.options.onTokens?.(this.tokens)\n return this.tokens\n }\n\n /** The callback: trade the code for tokens. `clientId` = the one\n * `authorizeUrl` returned (required unless this connector registered it\n * or got it in its options): the exchange never registers a new client,\n * whose id the code was not issued to. */\n async exchange(code: string, verifier: string, clientId?: string): Promise<ConnectorTokens> {\n if (clientId) this.clientId = clientId\n if (!this.clientId) throw new Error(`no client id for the token exchange; pass the clientId authorizeUrl returned`)\n return this.token({ grant_type: `authorization_code`, code, code_verifier: verifier, redirect_uri: this.options.redirectUri })\n }\n\n async refresh(): Promise<ConnectorTokens> {\n if (!this.tokens?.refreshToken) throw new Error(`no refresh token; authorize again`)\n return this.token({ grant_type: `refresh_token`, refresh_token: this.tokens.refreshToken })\n }\n\n /** One MCP tool call on the instance, as the person who consented.\n * Returns the tool's JSON payload (its text content parsed). */\n async callTool(name: string, args: Record<string, unknown> = {}): Promise<unknown> {\n if (!this.tokens) throw new Error(`not connected; authorize first`)\n if (this.tokens.expiresAt && this.tokens.expiresAt < Date.now() + 30_000 && this.tokens.refreshToken) await this.refresh()\n const res = await this.fetch(this.url(`/api/mcp`), {\n method: `POST`,\n headers: { \"content-type\": `application/json`, accept: `application/json, text/event-stream`, authorization: `Bearer ${this.tokens.accessToken}` },\n body: JSON.stringify({ jsonrpc: `2.0`, id: ++this.rpcId, method: `tools/call`, params: { name, arguments: args } }),\n })\n if (!res.ok) throw new Error(`MCP HTTP ${res.status}`)\n const text = await res.text()\n const line = text.trimStart().startsWith(`{`) ? text : (text.split(`\\n`).find((l) => l.startsWith(`data:`))?.slice(5) ?? `{}`)\n const reply = JSON.parse(line) as { result?: { content?: { type: string; text?: string }[]; structuredContent?: unknown; isError?: boolean }; error?: { message?: string } }\n if (reply.error) throw new Error(reply.error.message ?? `MCP error`)\n const result = reply.result ?? {}\n const body = result.structuredContent ?? (result.content ?? []).filter((c) => c.type === `text`).map((c) => c.text ?? ``).join(``)\n if (result.isError) throw new Error(typeof body === `string` ? body : `tool error`)\n if (typeof body !== `string`) return body\n try {\n return JSON.parse(body)\n } catch {\n return body\n }\n }\n\n /** The `exp:` scheme over MCP: `exp:issues?board=<id>&team=<id>&limit=<n>&search=<q>`,\n * `exp:boards?team=<id>`, `exp:teams`, `exp:members?team=<id>`. Each\n * emits `{rows, count}` and re-reads every `pollSeconds` (default 30, the\n * `poll` param overrides; 0 = once). Unknown names emit `null`. */\n sources(): SourceResolvers {\n return { exp: (source, emit) => this.follow(source, emit) }\n }\n\n private follow(source: ParsedSource, emit: SourceEmit): () => void {\n const p = source.params\n const read = async (): Promise<unknown> => {\n switch (source.name) {\n case `issues`: {\n const args: Record<string, unknown> = { limit: Number(p.limit ?? 50) }\n if (p.board) args.boardId = p.board\n if (p.team) args.teamId = p.team\n if (p.search) args.search = p.search\n return this.callTool(`exponential_issues_list`, args)\n }\n case `boards`:\n return this.callTool(`exponential_boards_list`, p.team ? { teamId: p.team } : {})\n case `teams`:\n return this.callTool(`exponential_teams_list`, {})\n case `members`:\n return this.callTool(`exponential_members_list`, p.team ? { teamId: p.team } : {})\n default:\n return null\n }\n }\n let live = true\n let timer: ReturnType<typeof setTimeout> | undefined\n const seconds = Number(p.poll ?? this.options.pollSeconds ?? 30)\n const tick = async () => {\n try {\n const value = await read()\n if (!live) return\n const rows = Array.isArray(value) ? value : (value as { rows?: unknown[] } | null)?.rows\n emit(rows ? { rows, count: rows.length } : value)\n } catch (e) {\n if (live) emit({ rows: [], count: 0, error: e instanceof Error ? e.message : String(e) })\n }\n if (live && seconds > 0) timer = setTimeout(tick, seconds * 1000)\n }\n void tick()\n return () => {\n live = false\n if (timer) clearTimeout(timer)\n }\n }\n\n /** `exponential.mcp({tool, arguments})` for an ExponentialHost (gate it\n * with an `ask` policy: it acts as the person). */\n functions(): Record<string, HostFunction> {\n return { \"exponential.mcp\": (args) => this.callTool(String(args.tool ?? ``), (args.arguments ?? {}) as Record<string, unknown>) }\n }\n}\n",
24
25
  "// VAPP-91: running a declarative app (VAPP-82) in any host: install the\n// package, apply a template onto a surface, bind its sources (the host's own\n// resolvers, or the Exponential connector's `exp:` ones), and let the\n// package's `functions` list narrow the policy. The apps product's own host\n// plugin is this plus its theme and extension.\n\nimport type { ServerMessage } from \"../host/contract\"\nimport type { PackageIssue, AppPackage } from \"../host/package\"\nimport { ExponentialHost } from \"../host/runtime\"\nimport type { HostOptions } from \"../host/runtime\"\n\nexport interface AppHostOptions extends HostOptions {\n /** The package to run. */\n package: AppPackage\n}\n\nexport interface AppHost {\n host: ExponentialHost\n issues: PackageIssue[]\n /** Apply a template of the package onto a surface (default: the first). */\n open(surfaceId: string, templateId?: string, data?: unknown): void\n}\n\nexport function createAppHost(options: AppHostOptions): AppHost {\n const { package: pkg, ...rest } = options\n const host = new ExponentialHost(rest)\n const issues = host.installPackage(pkg)\n return {\n host,\n issues,\n open(surfaceId, templateId = Object.keys(pkg.templates)[0]!, data) {\n const message: ServerMessage = { version: `v0.9`, applyTemplate: { surfaceId, templateId, packageId: pkg.id, ...(data === undefined ? {} : { data }) } }\n host.receive(message)\n },\n }\n}\n"
25
26
  ],
26
- "mappings": "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",
27
- "debugId": "578D93FFB073216664756E2164756E21",
27
+ "mappings": "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",
28
+ "debugId": "7F458AE4739CE68F64756E2164756E21",
28
29
  "names": []
29
30
  }