@exponential_app/eui 0.2.0 → 0.2.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/dist/index.js CHANGED
@@ -1252,6 +1252,15 @@ function tokenizeCode(source, language) {
1252
1252
  }
1253
1253
  return lines;
1254
1254
  }
1255
+ // packages/exponential-ui/src/text-clusters.ts
1256
+ var segmenter = new Intl.Segmenter(undefined, { granularity: `grapheme` });
1257
+ var BIDI_CONTROL = /^[؜‎‏‪-‮⁦-⁩]+$/u;
1258
+ function textClusters(text) {
1259
+ return Array.from(segmenter.segment(text), (s) => s.segment);
1260
+ }
1261
+ function trackedClusters(text) {
1262
+ return textClusters(text).filter((c) => !BIDI_CONTROL.test(c)).length;
1263
+ }
1255
1264
  // packages/exponential-ui/src/text-shimmer.ts
1256
1265
  var TEXT_SHIMMER = style_default.textShimmer;
1257
1266
  var toLinear = (c) => c <= 0.04045 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
@@ -3792,6 +3801,7 @@ export {
3792
3801
  templateItemKeys,
3793
3802
  templateMessages2 as templateMessages,
3794
3803
  templateSiteKey,
3804
+ textClusters,
3795
3805
  textDirection,
3796
3806
  textShimmer,
3797
3807
  themeFromImport,
@@ -3802,6 +3812,7 @@ export {
3802
3812
  toolCall2 as toolCall,
3803
3813
  toolConsent2 as toolConsent,
3804
3814
  toolConsentKey2 as toolConsentKey,
3815
+ trackedClusters,
3805
3816
  treeGuides2 as treeGuides,
3806
3817
  truthy2 as truthy,
3807
3818
  tryLoadTheme2 as tryLoadTheme,
@@ -3836,5 +3847,5 @@ export {
3836
3847
  writeTokens2 as writeTokens
3837
3848
  };
3838
3849
 
3839
- //# debugId=578D93FFB073216664756E2164756E21
3850
+ //# debugId=9FC24B3FA24F32DC64756E2164756E21
3840
3851
  //# sourceMappingURL=index.js.map
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": "9FC24B3FA24F32DC64756E2164756E21",
28
29
  "names": []
29
30
  }
@@ -30,6 +30,7 @@ export { DEFAULT_LOCALE, parseLocale, localeRegion, weekStart, textDirection, RT
30
30
  export type { LocaleParts } from "./locale.js";
31
31
  export { tokenizeCode, codeText, ansiRuns, CODE_LANGUAGES, CODE_LANGUAGE_NAMES } from "./code.js";
32
32
  export type { AnsiRun } from "./code.js";
33
+ export { textClusters, trackedClusters } from "./text-clusters.js";
33
34
  export { textShimmer, TEXT_SHIMMER } from "./text-shimmer.js";
34
35
  export type { TextShimmer } from "./text-shimmer.js";
35
36
  export { voiceWave, voiceWavePath, voiceWavePhase, voiceWaveChildSize, voiceWaveChildBox, voiceWaveActivity, VOICE_WAVE, VOICE_WAVE_ACTIVITIES, VOICE_WAVE_RINGS } from "./voice-wave.js";
@@ -0,0 +1,11 @@
1
+ /**
2
+ * YO-30: the reference for `fixtures/text-clusters.json`. Text lays out per
3
+ * grapheme cluster (UAX #29 extended): font fallback picks one face per
4
+ * cluster (a combining mark shares its base's face), and CSS
5
+ * `letter-spacing` is added once per cluster (a mark and a bidi control add
6
+ * none).
7
+ */
8
+ /** The grapheme clusters of `text`, in order. */
9
+ export declare function textClusters(text: string): string[];
10
+ /** How many times `letter-spacing` is added to `text`. */
11
+ export declare function trackedClusters(text: string): number;
@@ -0,0 +1,65 @@
1
+ {
2
+ "$comment": "YO-30: text is laid out per grapheme CLUSTER (UAX #29 extended), never per code point. (1) Font fallback: a cluster the primary face cannot shape whole (Nunito has no U+0329 COMBINING VERTICAL LINE BELOW) shapes whole in the first fallback face that covers every character of it, so a combining mark attaches to its base (browsers, CoreText, minikin do this; gpui falls back per character and eui-gpui cuts its runs per cluster, crates/eui-gpui/src/fallback.rs). `attach` = the clusters whose marks must paint ON their base: same face as the base, inside the base's advance (never a free-standing glyph after it). (2) CSS `letter-spacing` follows clusters: `tracked` = how many times `letterSpacing` is added (a mark adds none; bidi controls none). Hand-written; src/text-clusters.ts is the reference, every renderer replays it (eui-gpui tests/text_clusters.rs with the conformance fonts, SwiftUI Round2Suites, Compose Round2Suites).",
3
+ "family": "Nunito",
4
+ "cases": [
5
+ {
6
+ "name": "IPA Spätzle (the Spezl sense line)",
7
+ "text": "/ˈʃpɛtsl̩/",
8
+ "clusters": [
9
+ "/",
10
+ "ˈ",
11
+ "ʃ",
12
+ "p",
13
+ "ɛ",
14
+ "t",
15
+ "s",
16
+ "l̩",
17
+ "/"
18
+ ],
19
+ "tracked": 9,
20
+ "attach": [
21
+ 7
22
+ ]
23
+ },
24
+ {
25
+ "name": "decomposed accents Nunito covers",
26
+ "text": "Spätzle",
27
+ "clusters": [
28
+ "S",
29
+ "p",
30
+ "ä",
31
+ "t",
32
+ "z",
33
+ "l",
34
+ "e"
35
+ ],
36
+ "tracked": 7,
37
+ "attach": [
38
+ 2
39
+ ]
40
+ },
41
+ {
42
+ "name": "two marks on one base",
43
+ "text": "ń̩",
44
+ "clusters": [
45
+ "ń̩"
46
+ ],
47
+ "tracked": 1,
48
+ "attach": [
49
+ 0
50
+ ]
51
+ },
52
+ {
53
+ "name": "a bidi mark takes no letter-spacing",
54
+ "text": "‎abc",
55
+ "clusters": [
56
+ "‎",
57
+ "a",
58
+ "b",
59
+ "c"
60
+ ],
61
+ "tracked": 3,
62
+ "attach": []
63
+ }
64
+ ]
65
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exponential_app/eui",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Exponential UI: the core A2UI catalog (components, macros, model descriptions, token names), the A2UI basic catalog map, the TypeScript reference reducer, the runtime theme format with the built-in themes, and the theme builder.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://exponential.at/ui/",