@syntrologie/adapt-faq 2.28.0 → 2.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,7 +11,7 @@
11
11
  * Decorator-free: uses `static override properties` (tsconfig has no
12
12
  * experimentalDecorators).
13
13
  */
14
- import { LitElement } from 'lit';
14
+ import { LitElement, nothing } from 'lit';
15
15
  import type { FAQWidgetRuntime } from './faq-types';
16
16
  import type { FAQConfig, FeedbackValue } from './types';
17
17
  /**
@@ -23,6 +23,7 @@ import type { FAQConfig, FeedbackValue } from './types';
23
23
  * el.instanceId = 'my-faq';
24
24
  */
25
25
  export declare class FAQAccordionElement extends LitElement {
26
+ #private;
26
27
  static properties: {
27
28
  faqConfig: {
28
29
  attribute: boolean;
@@ -33,9 +34,6 @@ export declare class FAQAccordionElement extends LitElement {
33
34
  instanceId: {
34
35
  type: StringConstructor;
35
36
  };
36
- _expandedIds: {
37
- state: boolean;
38
- };
39
37
  _highlightId: {
40
38
  state: boolean;
41
39
  };
@@ -52,34 +50,176 @@ export declare class FAQAccordionElement extends LitElement {
52
50
  faqConfig: FAQConfig;
53
51
  runtime: FAQWidgetRuntime | null;
54
52
  instanceId: string;
55
- _expandedIds: Set<string>;
53
+ private _generatedUid;
54
+ private readonly _flip;
55
+ get _openId(): string | null;
56
+ get _activeFace(): 'front' | 'back';
57
+ get _flipAnimating(): boolean;
56
58
  _highlightId: string | null;
57
59
  _searchQuery: string;
58
60
  _feedbackState: Map<string, FeedbackValue>;
59
61
  _hoveredId: string | null;
62
+ private _pendingFocus;
63
+ private _focusReturnId;
60
64
  private _unsubContext;
61
65
  private _unsubAccumulator;
66
+ private _unsubStateChanged;
62
67
  private _unsubCta;
63
68
  private _unsubDeepLink;
64
69
  private _unsubSessionMetrics;
65
70
  private _highlightTimer;
71
+ private _unsubCompositional;
72
+ private _tileId;
73
+ /** Instance ids already appended via the compositional bus — dedups
74
+ * the subscribe-then-replay path (and re-subscribes on runtime change). */
75
+ private _llmAppendedIds;
76
+ constructor();
66
77
  createRenderRoot(): this;
67
78
  connectedCallback(): void;
68
79
  disconnectedCallback(): void;
69
80
  updated(changedProps: Map<string, unknown>): void;
81
+ /**
82
+ * Move focus to the face that just became active after a flip (a11y). On
83
+ * flip-to-back, focus the ‹ Back button; on flip-to-front, focus the question
84
+ * row that originally opened the detail (so keyboard/AT users land back where
85
+ * they were). No-op when nothing is pending or the target isn't in the DOM
86
+ * yet (the flip-to-front row may not exist if the list changed).
87
+ */
88
+ private _applyPendingFocus;
70
89
  private _subscribeAll;
90
+ /**
91
+ * Subscribe to `element.compositional_*` events targeting this accordion's
92
+ * tile, and ask the element store to replay any items it already holds for
93
+ * us (covers the case where the accordion mounts AFTER the item did — the
94
+ * inline-slot hydration race that otherwise silently drops the question).
95
+ */
96
+ private _subscribeCompositional;
97
+ /** Tile id for compositional filtering: the enclosing tile card's
98
+ * `data-tile-id` (set by SyntroTileCard), falling back to `instanceId`
99
+ * when the accordion is mounted outside a tile card. */
100
+ private _resolveTileId;
101
+ /** Append (or prepend) a faq:question the LLM mounted. The wire shape is a
102
+ * fully-formed `{kind, config}` envelope, so we store it verbatim. */
103
+ private _insertItem;
104
+ /** Replace an existing question's content (full replacement). */
105
+ private _patchItem;
106
+ /** Remove a question by instance id. */
107
+ private _removeItem;
108
+ /**
109
+ * Re-evaluate whether the open question is still visible, then re-render.
110
+ * Called from the subscription-driven re-render paths (context / accumulator /
111
+ * sessionMetric changes). Those subscriptions can flip an open question's
112
+ * `triggerWhen` to false WITHOUT a compositional patch/remove — so without
113
+ * this hook the stale-open reset (`_resetFaceIfOpenStale`, otherwise only
114
+ * invoked on patch/remove) would never fire on the triggerWhen path, and an
115
+ * open question gated out this way would snap straight to the back face on
116
+ * re-appearance. `_resetFaceIfOpenStale` mutates reactive state (which itself
117
+ * schedules an update), and we still `requestUpdate()` for the no-op case.
118
+ */
119
+ private _reevaluateOpenAndUpdate;
120
+ /**
121
+ * If `_openId` no longer resolves against the visible/ordered list (gated out
122
+ * by triggerWhen, removed, or patched away), reset BOTH `_openId` and
123
+ * `_activeFace` to the front (and clear the pending a11y focus intent).
124
+ * Resolves against the SAME `ordered` list render() uses (visible + ordered,
125
+ * NOT search-filtered). Also cancels any pending back-clear timer. Invoked on
126
+ * compositional patch/remove AND on the subscription-driven re-render paths
127
+ * (via {@link _reevaluateOpenAndUpdate}) so the triggerWhen-gated-out case is
128
+ * genuinely covered. Keeping `_activeFace` on 'back' after the open id went
129
+ * stale is the bug this guards: render() would force the front face locally
130
+ * but leave state on 'back', so a later re-appearance snaps to the back face
131
+ * with no animation.
132
+ */
133
+ private _resetFaceIfOpenStale;
71
134
  private _unsubscribeAll;
72
- private _handleToggle;
135
+ /**
136
+ * Master→detail takeover: tapping a list row opens its single-Q&A detail
137
+ * view (the whole widget swaps), so a long answer fills — and never
138
+ * overflows — the bounded velvet tile. There is no simultaneous multi-expand;
139
+ * one question owns the tile at a time.
140
+ */
141
+ private _handleOpen;
142
+ /**
143
+ * Put the widget into the DETAIL (back) face for `id` and flip to it. Shared
144
+ * by the tap handler and the event-driven entry points (faq:open CTA,
145
+ * notification.deep_link) so every "open this question" path flips the same
146
+ * way. Cancels any pending back-clear timer (a re-open before the flip-out
147
+ * finishes must keep the detail mounted). Remembers the originating question
148
+ * id so focus can return to that exact row on flip-to-front (a11y), and moves
149
+ * focus to the ‹ Back button once the back face renders.
150
+ */
151
+ private _openToDetail;
152
+ /** Back affordance: FLIP from the detail (back) face to the list (front) face.
153
+ * The FlipController keeps `openId` populated through the rotation (never
154
+ * blank mid-flip) and clears it on settle — with reduced motion it clears
155
+ * synchronously. Focus returns to the originating question row. */
156
+ private _handleBack;
73
157
  private _handleFeedback;
158
+ /**
159
+ * Unified render list. Merges compositionally-appended rows
160
+ * (`faqConfig.actions`, the container-then-stream path) with atomically
161
+ * authored rows (`faqConfig.questions`, the struct_list path) normalized
162
+ * into the same `FAQQuestionAction` shape. The atomic path is how the LLM
163
+ * mounts a complete FAQ in one call — so it renders whole, never empty.
164
+ */
165
+ private _allQuestions;
74
166
  private _visibleQuestions;
75
167
  private _orderedQuestions;
76
168
  private _filteredQuestions;
77
169
  private _categoryGroups;
170
+ /**
171
+ * The `data-adaptive-id` scope for this element's injected <style>. When
172
+ * `instanceId` is left at the shared default (`'faq-widget'`), two tiles would
173
+ * both scope to `[data-adaptive-id="faq-widget"]` and cross-style each other.
174
+ * In that case we fall back to a per-element generated uid so each default tile
175
+ * gets its own scope. A caller-provided instanceId is used verbatim.
176
+ */
177
+ private get _scopeId();
178
+ /**
179
+ * Self-injected flip CSS, scoped to THIS instance (`[data-adaptive-id="…"]`)
180
+ * so it can't leak onto a sibling widget. The FAQ tile is a light-DOM widget
181
+ * mounted across several canvases (velvet, default, onflow) and standalone;
182
+ * velvet ships a GENERIC `[data-active-face]` flip rule (for the product card),
183
+ * but the other hosts don't — so the FAQ carries the SAME 3D-flip technique,
184
+ * now from the shared canvas primitive ({@link flipStyles}) rather than a local
185
+ * copy. The `faq` namespace keeps it on `data-faq-*` / `sc-faq-flip-*` so
186
+ * velvet's generic rule can't double-apply (the GPU/perspective + resting-flat
187
+ * contract lives in the primitive). MUST match the FlipController's
188
+ * `keyframePrefix: 'sc-faq-flip'`.
189
+ */
190
+ private _renderFlipStyles;
78
191
  private _renderAnswer;
79
192
  private _renderFeedback;
193
+ /**
194
+ * LIST-view row. A tappable question with its chevron \u2014 but NO inline answer
195
+ * body. Tapping it takes over the tile with the question's detail view (see
196
+ * {@link _renderDetail}). Keeps the per-row look/markers/highlight from the
197
+ * old accordion minus the inline-expanded answer that overflowed the tile.
198
+ */
80
199
  private _renderItem;
81
200
  private _renderItems;
82
- render(): import("lit-html").TemplateResult<1>;
201
+ /**
202
+ * DETAIL view \u2014 the master\u2192detail takeover. Renders ONLY the open question:
203
+ * a back affordance, the question prominently, and its full answer via the
204
+ * SAME {@link _renderAnswer}/`renderAnswerHtml` path (all answer formats still
205
+ * work). The answer area scrolls if extremely long, so a single answer fills
206
+ * the bounded velvet tile and never pushes content past the `overflow:hidden`
207
+ * clip.
208
+ */
209
+ private _renderDetail;
210
+ /**
211
+ * "Dive deeper" (items 4/5) — hand the open question's context back to the
212
+ * CHAT as a deep-dive turn, so a clamped answer never leaves the visitor
213
+ * stuck. Canvas-agnostic: dispatches the neutral DIVE_DEEPER_EVENT; the
214
+ * chat-bar mountable turns it into a user-visible turn. The answer text rides
215
+ * along as (trimmed) context so the agent grounds its fuller reply.
216
+ */
217
+ private _handleDiveDeeper;
218
+ render(): import("lit-html").TemplateResult<1> | typeof nothing;
219
+ /** The FRONT face — search box, the question list (optionally grouped by
220
+ * category), and the no-results message. Extracted so both faces can live in
221
+ * the DOM at once for the flip. */
222
+ private _renderListFace;
83
223
  }
84
224
  export default FAQAccordionElement;
85
225
  //# sourceMappingURL=FAQWidgetLit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FAQWidgetLit.d.ts","sourceRoot":"","sources":["../src/FAQWidgetLit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAQ,UAAU,EAAW,MAAM,KAAK,CAAC;AAKhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAEV,SAAS,EAGT,aAAa,EACd,MAAM,SAAS,CAAC;AAqCjB;;;;;;;GAOG;AACH,qBAAa,mBAAoB,SAAQ,UAAU;IAKjD,OAAgB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;MAYxB;IAMF,SAAS,EAAE,SAAS,CAKlB;IAEF,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAExC,UAAU,EAAE,MAAM,CAAgB;IAGlC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IACtC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IACnC,YAAY,EAAE,MAAM,CAAM;IAC1B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAa;IACvD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAQ;IAGjC,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,oBAAoB,CAA6B;IACzD,OAAO,CAAC,eAAe,CAA8C;IAM5D,gBAAgB;IAQhB,iBAAiB;IAKjB,oBAAoB;IAUpB,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAWnD,OAAO,CAAC,aAAa;IAwGrB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,aAAa;IA0BrB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,eAAe;IAsCvB,OAAO,CAAC,WAAW;IAmFnB,OAAO,CAAC,YAAY;IAcX,MAAM;CAmHhB;AAUD,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"FAQWidgetLit.d.ts","sourceRoot":"","sources":["../src/FAQWidgetLit.ts"],"names":[],"mappings":"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"}
package/dist/cdn.d.ts ADDED
@@ -0,0 +1,56 @@
1
+ /**
2
+ * CDN Entry Point for Adaptive FAQ
3
+ *
4
+ * Bundled for CDN delivery and loaded on-demand by the host runtime's
5
+ * AppLoader when a config references faq actions/widgets. Part of the
6
+ * kernel diet (ADR 2026-07-17-runtime-kernel-vs-lazy-presentation):
7
+ * this app left the builtin list — it has 1s+ loading tolerance, unlike
8
+ * adaptive-content which must act inside the anti-flicker window.
9
+ *
10
+ * Mirrors adaptive-gamification/src/cdn.ts: builds the manifest from the
11
+ * runtime export, then self-registers with the host's app registry on
12
+ * import. Without this entry, build-adaptives-only.js silently skips the
13
+ * package and the app is "lazy in name only" (no bundle on disk).
14
+ */
15
+ export declare const manifest: {
16
+ id: string;
17
+ version: string;
18
+ name: string;
19
+ description: string;
20
+ runtime: {
21
+ actions: {
22
+ kind: "faq:scroll_to" | "faq:toggle_item" | "faq:update";
23
+ executor: typeof import("./executors").executeScrollToFaq | typeof import("./executors").executeToggleFaqItem | typeof import("./executors").executeUpdateFaq;
24
+ }[];
25
+ widgets: {
26
+ id: string;
27
+ component: {
28
+ mount(container: HTMLElement, config?: (import("./types").FAQConfig & import("packages/sdk-contracts/dist").MountPlumbing & {
29
+ runtime?: import("./faq-types").FAQWidgetRuntime;
30
+ }) | null): () => void;
31
+ };
32
+ metadata: {
33
+ name: string;
34
+ description: string;
35
+ icon: string;
36
+ subtitle: string;
37
+ };
38
+ }[];
39
+ notifyWatchers: unknown;
40
+ events: unknown;
41
+ };
42
+ metadata: {
43
+ isBuiltIn: boolean;
44
+ };
45
+ };
46
+ declare global {
47
+ interface Window {
48
+ SynOS?: {
49
+ appRegistry?: {
50
+ register?: (m: unknown) => void;
51
+ };
52
+ };
53
+ }
54
+ }
55
+ export default manifest;
56
+ //# sourceMappingURL=cdn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdn.d.ts","sourceRoot":"","sources":["../src/cdn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;2BAQ+C,CAAC;;;;;;;;;;;;;;;;CAMpE,CAAC;AAEF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,KAAK,CAAC,EAAE;YACN,WAAW,CAAC,EAAE;gBACZ,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;aACjC,CAAC;SACH,CAAC;KACH;CACF;AASD,eAAe,QAAQ,CAAC"}
package/dist/cdn.js ADDED
@@ -0,0 +1,35 @@
1
+ import {
2
+ runtime
3
+ } from "./chunk-AJELMQH5.js";
4
+ import "./chunk-YNDAVOD7.js";
5
+ import "./chunk-KRKRB4OL.js";
6
+ import "./chunk-7DTOSQNC.js";
7
+
8
+ // src/cdn.ts
9
+ var manifest = {
10
+ id: runtime.id,
11
+ version: runtime.version,
12
+ name: runtime.name,
13
+ description: runtime.description,
14
+ runtime: {
15
+ actions: (runtime.executors ?? []).map(({ kind, executor }) => ({ kind, executor })),
16
+ widgets: runtime.widgets,
17
+ notifyWatchers: runtime.notifyWatchers,
18
+ events: runtime.eventHandlers
19
+ },
20
+ metadata: {
21
+ isBuiltIn: false
22
+ }
23
+ };
24
+ if (typeof window !== "undefined") {
25
+ const registry = window.SynOS?.appRegistry;
26
+ if (registry && typeof registry.register === "function") {
27
+ registry.register(manifest);
28
+ }
29
+ }
30
+ var cdn_default = manifest;
31
+ export {
32
+ cdn_default as default,
33
+ manifest
34
+ };
35
+ //# sourceMappingURL=cdn.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/cdn.ts"],
4
+ "sourcesContent": ["/**\n * CDN Entry Point for Adaptive FAQ\n *\n * Bundled for CDN delivery and loaded on-demand by the host runtime's\n * AppLoader when a config references faq actions/widgets. Part of the\n * kernel diet (ADR 2026-07-17-runtime-kernel-vs-lazy-presentation):\n * this app left the builtin list \u2014 it has 1s+ loading tolerance, unlike\n * adaptive-content which must act inside the anti-flicker window.\n *\n * Mirrors adaptive-gamification/src/cdn.ts: builds the manifest from the\n * runtime export, then self-registers with the host's app registry on\n * import. Without this entry, build-adaptives-only.js silently skips the\n * package and the app is \"lazy in name only\" (no bundle on disk).\n */\n\nimport { runtime } from './runtime';\n\nexport const manifest = {\n id: runtime.id,\n version: runtime.version,\n name: runtime.name,\n description: runtime.description,\n runtime: {\n actions: (runtime.executors ?? []).map(({ kind, executor }) => ({ kind, executor })),\n widgets: runtime.widgets,\n notifyWatchers: (runtime as { notifyWatchers?: unknown }).notifyWatchers,\n events: (runtime as { eventHandlers?: unknown }).eventHandlers,\n },\n metadata: {\n isBuiltIn: false,\n },\n};\n\ndeclare global {\n interface Window {\n SynOS?: {\n appRegistry?: {\n register?: (m: unknown) => void;\n };\n };\n }\n}\n\nif (typeof window !== 'undefined') {\n const registry = window.SynOS?.appRegistry;\n if (registry && typeof registry.register === 'function') {\n registry.register(manifest);\n }\n}\n\nexport default manifest;\n"],
5
+ "mappings": ";;;;;;;;AAiBO,IAAM,WAAW;AAAA,EACtB,IAAI,QAAQ;AAAA,EACZ,SAAS,QAAQ;AAAA,EACjB,MAAM,QAAQ;AAAA,EACd,aAAa,QAAQ;AAAA,EACrB,SAAS;AAAA,IACP,UAAU,QAAQ,aAAa,CAAC,GAAG,IAAI,CAAC,EAAE,MAAM,SAAS,OAAO,EAAE,MAAM,SAAS,EAAE;AAAA,IACnF,SAAS,QAAQ;AAAA,IACjB,gBAAiB,QAAyC;AAAA,IAC1D,QAAS,QAAwC;AAAA,EACnD;AAAA,EACA,UAAU;AAAA,IACR,WAAW;AAAA,EACb;AACF;AAYA,IAAI,OAAO,WAAW,aAAa;AACjC,QAAM,WAAW,OAAO,OAAO;AAC/B,MAAI,YAAY,OAAO,SAAS,aAAa,YAAY;AACvD,aAAS,SAAS,QAAQ;AAAA,EAC5B;AACF;AAEA,IAAO,cAAQ;",
6
+ "names": []
7
+ }
@@ -4,6 +4,9 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __getProtoOf = Object.getPrototypeOf;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __typeError = (msg) => {
8
+ throw TypeError(msg);
9
+ };
7
10
  var __commonJS = (cb, mod) => function __require() {
8
11
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
9
12
  };
@@ -23,9 +26,18 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
23
26
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
24
27
  mod
25
28
  ));
29
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
30
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
31
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
32
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
33
+ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
26
34
 
27
35
  export {
28
36
  __commonJS,
29
- __toESM
37
+ __toESM,
38
+ __privateGet,
39
+ __privateAdd,
40
+ __privateSet,
41
+ __privateMethod
30
42
  };
31
- //# sourceMappingURL=chunk-5WRI5ZAA.js.map
43
+ //# sourceMappingURL=chunk-7DTOSQNC.js.map