@polyxd/core 0.4.0 → 0.4.2

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/NOTICE CHANGED
@@ -2,7 +2,9 @@ Polyxd
2
2
  Copyright 2026 the Polyxd authors
3
3
 
4
4
  This product includes software developed at Polyxd, licensed under the Apache
5
- License, Version 2.0 (see LICENSE).
5
+ License, Version 2.0 (see LICENSE), except Polyxd Studio (apps/studio), which is
6
+ licensed under the Functional Source License, Version 1.1, ALv2 Future License
7
+ (see apps/studio/LICENSE).
6
8
 
7
9
  It also includes material from the projects below. Each is used under its own
8
10
  licence, and each licence is included in full beside the material it covers.
@@ -199,6 +201,8 @@ Apache-2.0: playwright
199
201
  MIT: react, react-dom, radix-ui, ajv, ajv-formats, vite, @vitejs/plugin-react,
200
202
  marked, lenis, @types/react, @types/react-dom
201
203
  MIT OR Apache-2.0: wrangler, @cloudflare/workers-types
204
+ Apache-2.0 AND MIT: posthog-js (the analytics on polyxd.com and in Studio, only
205
+ when a PostHog key is set; the site's build copies it out of node_modules)
202
206
 
203
207
  Two need a word.
204
208
 
package/README.md CHANGED
@@ -28,16 +28,17 @@ surface.subscribe((data) => render());
28
28
  | Bindings | `get`, `set`, `resolve`, `resolveContext`, `resolveDeep`, `absolute`, `childPointer`, `asList`, `isBinding`, `itemScopes`, `ROOT_SCOPE` |
29
29
  | Formatting | `formatValue`, `resolveFormat`, `safeColor`, `currencySymbol`, `formatCount`, `formatPercent` |
30
30
  | Surface | `createSurface`, `a11yAttributes`, `dispatchAction`, `contextWithValue`, `copyText`, `rowChangeAction`, `isRendererAction` |
31
+ | Semantic events | `createSurfaceEvents` (the emitter a renderer tells what happened; it decides which events that makes), `validityReason`, `fileRefusalReason`, `SEMANTIC_EVENT_TYPES`, `EVENT_PROPERTIES`, `EVENT_SURFACE_PROPERTIES`, `EVENT_ACTOR_PROPERTIES`, `EVENT_COMPONENT_PROPERTIES`, and the `SemanticEvent` type, all checked against `schema/event.schema.json` |
31
32
  | Choice | `optionsOf`, `planChoice` (chips, people or list; searchable past 10), `optionKey`, `matchesQuery`, `partitionRecent`, `toggleSelection`, `isSelected`, `searchPlaceholder`, `idOf` |
32
33
  | State machines | `stepsReducer`, `initialStep`, `isLastStep`, `stepsProgress`, `taskStatus`, `tasklistReducer`, `tasklistProgress`; `selectedView`, `viewsReducer`; `splitReducer`, `initialSplit`, `splitPanes`, `splitSelection`, `splitItemValue`, `clampShare` |
33
34
  | Layout rules | `frameWidth`, `placementFor`, `appBarTitle`, `documentTitle` (the Frame); `TABLE_COMPACT_PX`, `stackedColumns`, `isNumericColumn`, `paging`, `rowValue`, `nextSort`, `columnCount` (Table); `fitActions`, `minShown`, `menuOrder` (ActionBar); `collectionLayout`, `orderedIndices`, `moveItem`, `calendarMonth` (Collection); `treeRows`, `treeKey`, `typeAheadTarget`, `visibleWindow` (Tree); `activeFilters` (FilterPanel) |
34
35
  | Loading | `skeletonShape`, `SKELETON_SHAPES`, `PATTERN_SHAPE`, `skeletonStatus` |
35
36
  | Shortcuts | `parseShortcut`, `shortcutMatches`, `unmodified`, `isApplePlatform` |
36
37
  | Small marks | `metricChange`, `gaugeState`, `meterHint`, `starsLabel`, `ratingSaid`, `maskSecret`, `groupSummary`, `avatarTone`, `initialsOf`, `iconPath` |
37
- | Content | `richText` (tokens for `**bold**`, `*italic*`, `` `code` ``, `[text](href)`), `qrEncode`, chart geometry (`niceMax`, `axisLabel`, `treemap`, `verticalScale`, `flowLayout`, `markerShape`), `applyMask`, colour parsing (`parseColor`, `formatColor`), file limits (`formatBytes`, `refuseFile`, `fileLimits`) |
38
+ | Content | `richText` (tokens for `**bold**`, `*italic*`, `` `code` ``, `[text](href)`), `qrEncode`, chart geometry (`niceMax`, `axisLabel`, `axisLabelStep`, `treemap`, `verticalScale`, `flowLayout`, `markerShape`), `applyMask`, colour parsing (`parseColor`, `formatColor`), file limits (`formatBytes`, `refuseFile`, `fileLimits`) |
38
39
 
39
40
  Every renderer that uses these makes the same decisions from the same document: a `Choice` with three short options is chips everywhere, a Table stacks below 720px everywhere, `ui.dismiss` closes everywhere. The conformance suite in `@polyxd/verifier` checks that it does.
40
41
 
41
42
  ## Tests
42
43
 
43
- `npm test -w @polyxd/core` runs the unit tests: pointer resolution, formatting per locale, the reducers, control selection, the layout rules, shortcuts, and the headless surface.
44
+ `npm test -w @polyxd/core` runs the unit tests: pointer resolution, formatting per locale, the reducers, control selection, the layout rules, shortcuts, the headless surface, and the semantic events (each one validated against the spec's schema).
package/dist/actions.d.ts CHANGED
@@ -1,9 +1,12 @@
1
1
  /** What an action does when it fires: the renderer's own names, and everything else to the host. */
2
2
  import { type Scope } from "./data.ts";
3
3
  import type { Action, ActionEvent, Node } from "./document.ts";
4
+ import type { SurfaceEvents } from "./events.ts";
4
5
  export interface DispatchHandlers {
5
6
  onAction?: (event: ActionEvent) => void;
6
7
  onDismiss?: () => void;
8
+ /** The surface's semantic events, when the host asked for them: told about every action first. */
9
+ events?: SurfaceEvents;
7
10
  }
8
11
  export declare const isRendererAction: (name: string) => boolean;
9
12
  /**
package/dist/actions.js CHANGED
@@ -11,6 +11,7 @@ export function dispatchAction(action, scope, source, data, handlers) {
11
11
  if (!action)
12
12
  return;
13
13
  const { name, context } = action.event;
14
+ handlers.events?.action(action, source);
14
15
  if (name === "ui.dismiss")
15
16
  return handlers.onDismiss?.();
16
17
  handlers.onAction?.({ name, context: resolveContext(context, data, scope), source });
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAc,MAAM,WAAW,CAAC;AAErF,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAOjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAW,EAAE,CAAE,gBAAsC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAElH;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,MAA0B,EAAE,KAAY,EAAE,MAAc,EAAE,IAAa,EAAE,QAA0B;IAChI,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;IACvC,IAAI,IAAI,KAAK,YAAY;QAAE,OAAO,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;IACzD,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AACvF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAU,EAAE,IAAa,EAAE,KAAY,EAAE,IAAa;IACrF,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CACxK,CAAC;AACJ,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,QAAQ,CAAC,IAAU,EAAE,IAAa,EAAE,KAAY,EAAE,IAA4B;IAC5F,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AACjI,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,SAAiB,EAAE,GAAW,EAAU,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAc,MAAM,WAAW,CAAC;AAErF,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAUjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAW,EAAE,CAAE,gBAAsC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAElH;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,MAA0B,EAAE,KAAY,EAAE,MAAc,EAAE,IAAa,EAAE,QAA0B;IAChI,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,IAAI,IAAI,KAAK,YAAY;QAAE,OAAO,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;IACzD,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AACvF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAU,EAAE,IAAa,EAAE,KAAY,EAAE,IAAa;IACrF,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CACxK,CAAC;AACJ,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,QAAQ,CAAC,IAAU,EAAE,IAAa,EAAE,KAAY,EAAE,IAA4B;IAC5F,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AACjI,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,SAAiB,EAAE,GAAW,EAAU,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC"}
package/dist/chart.d.ts CHANGED
@@ -12,6 +12,12 @@ export declare const seriesColor: (i: number) => string;
12
12
  export declare function niceMax(v: number): number;
13
13
  /** Short axis labels: dates as "Apr" (or "3 Apr"), everything else as text. */
14
14
  export declare function axisLabel(v: unknown, type: string | undefined, locale: string): string;
15
+ /**
16
+ * How many points apart the x-axis labels go so they don't overlap: 1 when every label fits under
17
+ * its band, otherwise the smallest step that leaves room for the widest label. Widths are estimated
18
+ * at 7 units a character (the axis text is 12px), with 8 units between labels.
19
+ */
20
+ export declare function axisLabelStep(labels: string[], plotW: number): number;
15
21
  export interface Rect {
16
22
  x: number;
17
23
  y: number;
package/dist/chart.js CHANGED
@@ -21,6 +21,17 @@ export function axisLabel(v, type, locale) {
21
21
  }
22
22
  return String(v ?? "").slice(0, 12);
23
23
  }
24
+ /**
25
+ * How many points apart the x-axis labels go so they don't overlap: 1 when every label fits under
26
+ * its band, otherwise the smallest step that leaves room for the widest label. Widths are estimated
27
+ * at 7 units a character (the axis text is 12px), with 8 units between labels.
28
+ */
29
+ export function axisLabelStep(labels, plotW) {
30
+ if (labels.length < 2)
31
+ return 1;
32
+ const widest = Math.max(...labels.map((l) => l.length)) * 7 + 8;
33
+ return Math.max(1, Math.ceil(widest / (plotW / labels.length)));
34
+ }
24
35
  /** Squarified treemap: tiles laid in rows along the shorter side, keeping them near square. */
25
36
  export function treemap(values, w, h) {
26
37
  const total = values.reduce((a, v) => a + v, 0);
package/dist/chart.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"chart.js","sourceRoot":"","sources":["../src/chart.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chart.js","sourceRoot":"","sources":["../src/chart.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Semantic analytics events: what people do with a rendered surface, said in the document's own
3
+ * terms (its intent, pattern, component ids and capability names), never in the values they typed.
4
+ * The shape is the spec's schema/event.schema.json; core's tests hold these types to it.
5
+ *
6
+ * A renderer creates one emitter per surface it shows and tells it what happened: shown, an action
7
+ * dispatched, an input edited, an input refused, a Status drawn, the surface taken down. The
8
+ * emitter decides which events that makes and hands each one to the host's handler. Polyxd itself
9
+ * receives none of them.
10
+ */
11
+ import type { Action, Node, UIDocument } from "./document.ts";
12
+ /** Every event type the schema defines, in its order. */
13
+ export declare const SEMANTIC_EVENT_TYPES: readonly ["surface.shown", "surface.dismissed", "surface.regenerated", "action.taken", "checkpoint.reached", "task.completed", "task.abandoned", "input.error", "status.shown", "undo", "feedback"];
14
+ export type SemanticEventType = (typeof SEMANTIC_EVENT_TYPES)[number];
15
+ /** Which surface an event is about. `intent` is the surface id when the document gives no intent. */
16
+ export interface EventSurface {
17
+ id: string;
18
+ intent: string;
19
+ pattern?: string;
20
+ journey?: string;
21
+ specVersion?: string;
22
+ /** Model or generator id and version, when the host knows it */
23
+ generator?: string;
24
+ /** Design Direction name@version */
25
+ direction?: string;
26
+ /** Experiment key to variant */
27
+ experiment?: Record<string, string>;
28
+ }
29
+ export interface EventActor {
30
+ kind: "human" | "agent";
31
+ assistiveTech?: boolean;
32
+ }
33
+ /** The component an event came from: its id, its stable semantic `key` when the document gives one, and its type. */
34
+ export interface EventComponent {
35
+ id?: string;
36
+ key?: string;
37
+ type?: string;
38
+ }
39
+ export type EventRating = -1 | 0 | 1;
40
+ export interface SemanticEvent {
41
+ type: SemanticEventType;
42
+ /** ISO 8601 */
43
+ timestamp: string;
44
+ sessionId: string;
45
+ surface: EventSurface;
46
+ actor: EventActor;
47
+ component?: EventComponent;
48
+ capability?: string;
49
+ checkpoint?: string;
50
+ /** Time since surface.shown */
51
+ durationMs?: number;
52
+ /** Interactions since surface.shown */
53
+ steps?: number;
54
+ /** A short code, never free text */
55
+ reason?: string;
56
+ rating?: EventRating;
57
+ }
58
+ /** The property names the schema allows, at the top level and in each nested object. */
59
+ export declare const EVENT_PROPERTIES: readonly ["type", "timestamp", "sessionId", "surface", "actor", "component", "capability", "checkpoint", "durationMs", "steps", "reason", "rating"];
60
+ export declare const EVENT_SURFACE_PROPERTIES: readonly ["id", "intent", "pattern", "journey", "specVersion", "generator", "direction", "experiment"];
61
+ export declare const EVENT_ACTOR_PROPERTIES: readonly ["kind", "assistiveTech"];
62
+ export declare const EVENT_COMPONENT_PROPERTIES: readonly ["id", "key", "type"];
63
+ /** The parts of a journey (schema/journey.schema.json) the emitter reads. */
64
+ export interface EventJourney {
65
+ id?: string;
66
+ checkpoints?: {
67
+ key: string;
68
+ event?: string;
69
+ }[];
70
+ done?: {
71
+ event: string;
72
+ };
73
+ }
74
+ export interface SurfaceEventOptions {
75
+ /** Ties events together. Defaults to a random id made when the surface is shown. */
76
+ sessionId?: string;
77
+ /** Who is using the surface. Defaults to an agent when the browser says it is automated (navigator.webdriver), else a human. */
78
+ actor?: EventActor;
79
+ /** The journey this surface is a step of: its checkpoint events and its done event. */
80
+ journey?: EventJourney;
81
+ generator?: string;
82
+ direction?: string;
83
+ experiment?: Record<string, string>;
84
+ /** The clock, for tests. Defaults to Date.now. */
85
+ now?: () => number;
86
+ }
87
+ /** What a renderer tells the emitter. Every method is safe to call more than once. */
88
+ export interface SurfaceEvents {
89
+ readonly sessionId: string;
90
+ /** The surface is on screen: surface.shown, once. Also cancels an unmount that was only a remount. */
91
+ shown(): void;
92
+ /** Any action the surface dispatched, before the host hears it. */
93
+ action(action: Action, source: string): void;
94
+ /** An input wrote a value. Only the pointer is read, never the value. */
95
+ edited(pointer: string): void;
96
+ /** An input was refused: its node (or id) and a reason code. */
97
+ inputError(node: Node | string, reason: string): void;
98
+ /** A Status was drawn. */
99
+ statusShown(node: Node): void;
100
+ /** The person rated the surface. */
101
+ feedback(rating: EventRating, reason?: string): void;
102
+ /** The person asked for this surface again: it is being replaced. */
103
+ regenerated(reason?: string): void;
104
+ /**
105
+ * The renderer took the surface down. Deferred (the default), it ends on the next microtask unless
106
+ * shown() is called first, so a remount in the same tick (React StrictMode) is not an ending.
107
+ * `unmounted(false)` ends it now, or settles a deferred ending before the next surface is shown.
108
+ */
109
+ unmounted(defer?: boolean): void;
110
+ }
111
+ /** A browser's ValidityState, or anything shaped like it. */
112
+ export type ValidityLike = Partial<Record<"valueMissing" | "typeMismatch" | "patternMismatch" | "tooShort" | "tooLong" | "rangeUnderflow" | "rangeOverflow" | "stepMismatch" | "badInput" | "customError", boolean>>;
113
+ /** The reason code for a failed control: "required", "pattern", "too-short", … ; "invalid" when nothing says. */
114
+ export declare function validityReason(validity: ValidityLike | undefined): string;
115
+ /** Why a file was refused, as a code: the same order of checks as refuseFile. */
116
+ export declare function fileRefusalReason(file: {
117
+ size: number;
118
+ }, maxSize: number | undefined): string;
119
+ /**
120
+ * The emitter for one surface. `emit` receives each event; an exception in it is caught, so a
121
+ * failing analytics call never breaks the surface.
122
+ *
123
+ * - surface.shown: the first time the surface is on screen.
124
+ * - action.taken: every action that reaches the host (not ui.dismiss).
125
+ * - checkpoint.reached: an action whose name is one of the journey's checkpoint events, once each.
126
+ * - task.completed: with a journey, its done event; without one, the primary action of a Form,
127
+ * Confirm or Steps. Once. Shells have no task.
128
+ * - undo: the action of an 'undo' Status (after action.taken).
129
+ * - surface.dismissed: ui.dismiss (reason "dismiss"), except from a Panel or Confirm that is not
130
+ * the root, which closes only itself; or the surface taken down (reason "unmount") before it
131
+ * completed or handed on.
132
+ * - task.abandoned: dismissed or taken down after at least one interaction, without completing or
133
+ * handing on (reaching a checkpoint or firing a primary action hands on).
134
+ * - input.error, status.shown, feedback, surface.regenerated: when the renderer or host says so.
135
+ */
136
+ export declare function createSurfaceEvents(doc: UIDocument, emit: (event: SemanticEvent) => void, options?: SurfaceEventOptions): SurfaceEvents;
package/dist/events.js ADDED
@@ -0,0 +1,245 @@
1
+ import { indexById } from "./document.js";
2
+ /** Every event type the schema defines, in its order. */
3
+ export const SEMANTIC_EVENT_TYPES = [
4
+ "surface.shown", "surface.dismissed", "surface.regenerated",
5
+ "action.taken", "checkpoint.reached", "task.completed", "task.abandoned",
6
+ "input.error", "status.shown", "undo", "feedback",
7
+ ];
8
+ /** The property names the schema allows, at the top level and in each nested object. */
9
+ export const EVENT_PROPERTIES = ["type", "timestamp", "sessionId", "surface", "actor", "component", "capability", "checkpoint", "durationMs", "steps", "reason", "rating"];
10
+ export const EVENT_SURFACE_PROPERTIES = ["id", "intent", "pattern", "journey", "specVersion", "generator", "direction", "experiment"];
11
+ export const EVENT_ACTOR_PROPERTIES = ["kind", "assistiveTech"];
12
+ export const EVENT_COMPONENT_PROPERTIES = ["id", "key", "type"];
13
+ /** A reason is a short code: letters, digits, dots, dashes and underscores. Anything else is dropped. */
14
+ const REASON = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/;
15
+ const code = (reason) => (typeof reason === "string" && REASON.test(reason) ? reason : undefined);
16
+ const VALIDITY = [
17
+ ["valueMissing", "required"],
18
+ ["typeMismatch", "type"],
19
+ ["patternMismatch", "pattern"],
20
+ ["tooShort", "too-short"],
21
+ ["tooLong", "too-long"],
22
+ ["rangeUnderflow", "too-low"],
23
+ ["rangeOverflow", "too-high"],
24
+ ["stepMismatch", "step"],
25
+ ["badInput", "bad-input"],
26
+ ["customError", "custom"],
27
+ ];
28
+ /** The reason code for a failed control: "required", "pattern", "too-short", … ; "invalid" when nothing says. */
29
+ export function validityReason(validity) {
30
+ for (const [flag, reason] of VALIDITY)
31
+ if (validity?.[flag])
32
+ return reason;
33
+ return "invalid";
34
+ }
35
+ /** Why a file was refused, as a code: the same order of checks as refuseFile. */
36
+ export function fileRefusalReason(file, maxSize) {
37
+ return maxSize && file.size > maxSize ? "file-too-large" : "file-type";
38
+ }
39
+ function randomId() {
40
+ const c = globalThis.crypto;
41
+ if (c?.randomUUID)
42
+ return c.randomUUID();
43
+ return `s_${Date.now().toString(36)}${Math.random().toString(36).slice(2, 10)}`;
44
+ }
45
+ function defaultActor() {
46
+ const nav = globalThis.navigator;
47
+ return { kind: nav?.webdriver === true ? "agent" : "human" };
48
+ }
49
+ /** A component as an event names it: its id, its stable semantic key when it has one, and its type. */
50
+ function describe(node, id) {
51
+ if (!node)
52
+ return { id };
53
+ return { id: node.id, ...(typeof node.key === "string" ? { key: node.key } : {}), type: node.component };
54
+ }
55
+ /** The ids of every Action a node reaches through `action` (an Action, or an ActionBar's children). */
56
+ function actionIds(id, byId) {
57
+ const node = id ? byId.get(id) : undefined;
58
+ if (!node)
59
+ return [];
60
+ if (node.component === "ActionBar")
61
+ return (node.children ?? []).flatMap((c) => actionIds(c, byId));
62
+ return [node.id];
63
+ }
64
+ /**
65
+ * Whether an action is the source's primary one: a Form's submit, a Confirm's confirm, a Steps'
66
+ * finish. These are where a surface hands its task on.
67
+ */
68
+ function isPrimary(source, action) {
69
+ if (!source)
70
+ return false;
71
+ const primary = source.component === "Form" ? source.submit : source.component === "Confirm" ? source.confirm : source.component === "Steps" ? source.finish : undefined;
72
+ const p = primary?.action;
73
+ if (!p)
74
+ return false;
75
+ if (p === action)
76
+ return true;
77
+ const other = source.cancel?.action;
78
+ return p.event.name === action.event.name && other?.event?.name !== action.event.name;
79
+ }
80
+ /**
81
+ * The emitter for one surface. `emit` receives each event; an exception in it is caught, so a
82
+ * failing analytics call never breaks the surface.
83
+ *
84
+ * - surface.shown: the first time the surface is on screen.
85
+ * - action.taken: every action that reaches the host (not ui.dismiss).
86
+ * - checkpoint.reached: an action whose name is one of the journey's checkpoint events, once each.
87
+ * - task.completed: with a journey, its done event; without one, the primary action of a Form,
88
+ * Confirm or Steps. Once. Shells have no task.
89
+ * - undo: the action of an 'undo' Status (after action.taken).
90
+ * - surface.dismissed: ui.dismiss (reason "dismiss"), except from a Panel or Confirm that is not
91
+ * the root, which closes only itself; or the surface taken down (reason "unmount") before it
92
+ * completed or handed on.
93
+ * - task.abandoned: dismissed or taken down after at least one interaction, without completing or
94
+ * handing on (reaching a checkpoint or firing a primary action hands on).
95
+ * - input.error, status.shown, feedback, surface.regenerated: when the renderer or host says so.
96
+ */
97
+ export function createSurfaceEvents(doc, emit, options = {}) {
98
+ const now = options.now ?? Date.now;
99
+ const sessionId = options.sessionId ?? randomId();
100
+ const actor = options.actor ? { kind: options.actor.kind === "agent" ? "agent" : "human", ...(typeof options.actor.assistiveTech === "boolean" ? { assistiveTech: options.actor.assistiveTech } : {}) } : defaultActor();
101
+ const byId = indexById(doc);
102
+ const s = doc.surface;
103
+ const journeyId = options.journey?.id ?? s.journey;
104
+ const surface = {
105
+ id: s.id,
106
+ intent: s.intent ?? s.id,
107
+ ...(s.pattern ? { pattern: s.pattern } : {}),
108
+ ...(journeyId ? { journey: journeyId } : {}),
109
+ ...(doc.specVersion ? { specVersion: doc.specVersion } : {}),
110
+ ...(options.generator ? { generator: options.generator } : {}),
111
+ ...(options.direction ? { direction: options.direction } : {}),
112
+ ...(options.experiment ? { experiment: Object.fromEntries(Object.entries(options.experiment).filter(([, v]) => typeof v === "string")) } : {}),
113
+ };
114
+ const shell = s.kind === "shell";
115
+ const undoSources = new Set(doc.components.filter((c) => c.component === "Status" && c.kind === "undo").flatMap((c) => actionIds(c.action, byId)));
116
+ const checkpoints = new Map((options.journey?.checkpoints ?? []).filter((c) => c.event).map((c) => [c.event, c.key]));
117
+ const doneEvent = options.journey?.done?.event;
118
+ let started;
119
+ let steps = 0;
120
+ let lastEdited;
121
+ let completed = false;
122
+ let handedOn = false;
123
+ let ended = false;
124
+ let pendingEnd = false;
125
+ const reached = new Set();
126
+ const send = (type, extra = {}) => {
127
+ // Every other event is about a surface that was shown, so shown comes first whatever the order of calls.
128
+ if (type !== "surface.shown" && started === undefined)
129
+ ensureShown();
130
+ const t = now();
131
+ const event = { type, timestamp: new Date(t).toISOString(), sessionId, surface, actor, ...extra };
132
+ if (type === "surface.shown")
133
+ started = t;
134
+ else {
135
+ event.durationMs = Math.max(0, Math.round(t - (started ?? t)));
136
+ event.steps = steps;
137
+ }
138
+ try {
139
+ emit(event);
140
+ }
141
+ catch {
142
+ // The host's analytics failing is not the surface's problem.
143
+ }
144
+ };
145
+ const componentOf = (id) => describe(byId.get(id), id);
146
+ const end = (reason) => {
147
+ if (ended)
148
+ return;
149
+ ended = true;
150
+ if (reason === "unmount" && (completed || handedOn))
151
+ return;
152
+ send("surface.dismissed", { reason });
153
+ if (!shell && steps > 0 && !completed && !handedOn)
154
+ send("task.abandoned", { reason });
155
+ };
156
+ function ensureShown() {
157
+ if (started === undefined)
158
+ send("surface.shown");
159
+ }
160
+ return {
161
+ sessionId,
162
+ shown() {
163
+ pendingEnd = false;
164
+ ensureShown();
165
+ },
166
+ action(action, source) {
167
+ if (!action?.event?.name)
168
+ return;
169
+ ensureShown();
170
+ const name = action.event.name;
171
+ const node = byId.get(source);
172
+ if (name === "ui.dismiss") {
173
+ const overlay = node && (node.component === "Panel" || node.component === "Confirm") && doc.root !== node.id;
174
+ if (!overlay)
175
+ end("dismiss");
176
+ return;
177
+ }
178
+ steps++;
179
+ lastEdited = undefined;
180
+ const component = componentOf(source);
181
+ send("action.taken", { component, capability: name });
182
+ const checkpoint = checkpoints.get(name);
183
+ if (checkpoint !== undefined && !reached.has(checkpoint)) {
184
+ reached.add(checkpoint);
185
+ handedOn = true;
186
+ send("checkpoint.reached", { component, capability: name, checkpoint });
187
+ }
188
+ const primary = isPrimary(node, action);
189
+ const completes = shell ? false : doneEvent !== undefined ? name === doneEvent : primary;
190
+ if (completes && !completed) {
191
+ completed = true;
192
+ send("task.completed", { component, capability: name });
193
+ }
194
+ else if (primary && !shell)
195
+ handedOn = true;
196
+ if (undoSources.has(source))
197
+ send("undo", { component, capability: name });
198
+ },
199
+ edited(pointer) {
200
+ if (pointer === lastEdited)
201
+ return;
202
+ lastEdited = pointer;
203
+ steps++;
204
+ },
205
+ inputError(target, reason) {
206
+ const node = typeof target === "string" ? byId.get(target) : target;
207
+ const id = typeof target === "string" ? target : target.id;
208
+ send("input.error", { component: describe(node, id), reason: code(reason) ?? "invalid" });
209
+ },
210
+ statusShown(node) {
211
+ const kind = code(node.kind);
212
+ send("status.shown", { component: describe(node, node.id), ...(kind ? { reason: kind } : {}) });
213
+ },
214
+ feedback(rating, reason) {
215
+ if (rating !== -1 && rating !== 0 && rating !== 1)
216
+ return;
217
+ const r = code(reason);
218
+ send("feedback", { rating, ...(r ? { reason: r } : {}) });
219
+ },
220
+ regenerated(reason) {
221
+ if (ended)
222
+ return;
223
+ ended = true;
224
+ const r = code(reason);
225
+ send("surface.regenerated", r ? { reason: r } : {});
226
+ },
227
+ unmounted(defer = true) {
228
+ if (ended)
229
+ return;
230
+ if (!defer) {
231
+ pendingEnd = false;
232
+ return end("unmount");
233
+ }
234
+ if (pendingEnd)
235
+ return;
236
+ pendingEnd = true;
237
+ queueMicrotask(() => {
238
+ if (pendingEnd)
239
+ end("unmount");
240
+ pendingEnd = false;
241
+ });
242
+ },
243
+ };
244
+ }
245
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -20,9 +20,10 @@ export { type MetricChange, type GaugeState, metricChange, meterHint, gaugeState
20
20
  export { avatarTone, initialsOf, isMediaRef, ICON_PATHS, iconPath, STATUS_ICON, STAR_PATH } from "./avatar.ts";
21
21
  export { type CalendarMonth, collectionItemValue, collectionLayout, orderedIndices, moveItem, dateParts, monthToShow, shiftMonth, calendarMonth, nearestSlide } from "./collection.ts";
22
22
  export { bestPerAttribute, groupAttributes, recommendedFirst, groupItems, navigationLabel } from "./comparison.ts";
23
- export { type Rect, CHART_W, CHART_H, CHART_PAD, MARKERS, seriesColor, niceMax, axisLabel, treemap, verticalScale, markerShape, flowLayout } from "./chart.ts";
23
+ export { type Rect, CHART_W, CHART_H, CHART_PAD, MARKERS, seriesColor, niceMax, axisLabel, axisLabelStep, treemap, verticalScale, markerShape, flowLayout } from "./chart.ts";
24
24
  export { type TreeRow, type TreeMove, VIRTUAL_LIMIT, OVERSCAN, TYPEAHEAD_MS, treeRows, typeAheadTarget, treeKey, visibleWindow } from "./tree.ts";
25
25
  export { type ActiveFilter, FILTER_COMPACT_PX, activeFilters, resultCountText } from "./filter.ts";
26
26
  export { qrEncode } from "./qr.ts";
27
27
  export { MORE_ACTIONS, TRIGGER_FALLBACK, minShown, fitActions, menuOrder } from "./actionbar.ts";
28
28
  export { type Surface, type SurfaceOptions, createSurface, a11yAttributes } from "./surface.ts";
29
+ export { type SemanticEvent, type SemanticEventType, type EventSurface, type EventActor, type EventComponent, type EventRating, type EventJourney, type SurfaceEventOptions, type SurfaceEvents, type ValidityLike, SEMANTIC_EVENT_TYPES, EVENT_PROPERTIES, EVENT_SURFACE_PROPERTIES, EVENT_ACTOR_PROPERTIES, EVENT_COMPONENT_PROPERTIES, createSurfaceEvents, validityReason, fileRefusalReason, } from "./events.ts";
package/dist/index.js CHANGED
@@ -20,10 +20,11 @@ export { metricChange, meterHint, gaugeState, starsLabel, ratingSaid, maskSecret
20
20
  export { avatarTone, initialsOf, isMediaRef, ICON_PATHS, iconPath, STATUS_ICON, STAR_PATH } from "./avatar.js";
21
21
  export { collectionItemValue, collectionLayout, orderedIndices, moveItem, dateParts, monthToShow, shiftMonth, calendarMonth, nearestSlide } from "./collection.js";
22
22
  export { bestPerAttribute, groupAttributes, recommendedFirst, groupItems, navigationLabel } from "./comparison.js";
23
- export { CHART_W, CHART_H, CHART_PAD, MARKERS, seriesColor, niceMax, axisLabel, treemap, verticalScale, markerShape, flowLayout } from "./chart.js";
23
+ export { CHART_W, CHART_H, CHART_PAD, MARKERS, seriesColor, niceMax, axisLabel, axisLabelStep, treemap, verticalScale, markerShape, flowLayout } from "./chart.js";
24
24
  export { VIRTUAL_LIMIT, OVERSCAN, TYPEAHEAD_MS, treeRows, typeAheadTarget, treeKey, visibleWindow } from "./tree.js";
25
25
  export { FILTER_COMPACT_PX, activeFilters, resultCountText } from "./filter.js";
26
26
  export { qrEncode } from "./qr.js";
27
27
  export { MORE_ACTIONS, TRIGGER_FALLBACK, minShown, fitActions, menuOrder } from "./actionbar.js";
28
28
  export { createSurface, a11yAttributes } from "./surface.js";
29
+ export { SEMANTIC_EVENT_TYPES, EVENT_PROPERTIES, EVENT_SURFACE_PROPERTIES, EVENT_ACTOR_PROPERTIES, EVENT_COMPONENT_PROPERTIES, createSurfaceEvents, validityReason, fileRefusalReason, } from "./events.js";
29
30
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/surface.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { type Data, type Scope } from "./data.ts";
2
2
  import type { Action, ActionEvent, Node, UIDocument } from "./document.ts";
3
3
  import { type Format } from "./format.ts";
4
+ import type { SurfaceEvents } from "./events.ts";
4
5
  export interface SurfaceOptions {
5
6
  /** Host data. Defaults to document.data. */
6
7
  data?: Data;
@@ -16,6 +17,8 @@ export interface SurfaceOptions {
16
17
  onDataChange?: (data: Data) => void;
17
18
  /** Called for ui.dismiss (Cancel on a dialog, closing the surface). */
18
19
  onDismiss?: () => void;
20
+ /** Semantic events (createSurfaceEvents): told about every action and every input write. Off when absent. */
21
+ events?: SurfaceEvents;
19
22
  }
20
23
  export interface Surface {
21
24
  document: UIDocument;
package/dist/surface.js CHANGED
@@ -22,6 +22,7 @@ export function createSurface(document, options = {}) {
22
22
  locale,
23
23
  setValue(pointer, value) {
24
24
  const written = set(data, pointer, value);
25
+ options.events?.edited(pointer);
25
26
  data = options.derive?.(written) ?? written;
26
27
  options.onDataChange?.(data);
27
28
  notify();
@@ -1 +1 @@
1
- {"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polyxd/core",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "description": "The framework-free heart of Polyxd rendering: document types, JSON Pointer bindings, localised formatting, the renderer's decisions, and a headless surface model every renderer walks the same way",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -32,5 +32,8 @@
32
32
  "bugs": "https://github.com/visualfart/polyxd/issues",
33
33
  "publishConfig": {
34
34
  "access": "public"
35
+ },
36
+ "devDependencies": {
37
+ "ajv": "^8.20.0"
35
38
  }
36
39
  }