@nommos/core 0.0.44 → 0.0.46

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.
@@ -1,18 +1,21 @@
1
- import { POPUP_AUTO_OPEN_KEY, POPUP_INTERRUPTIVE_PRIORITIES, POPUP_PUSH_OPEN_COOLDOWN_MS, resolveEndpoints, POPUP_INBOX_CACHE_KEY, POPUP_LAUNCHER_HIDDEN_KEY, POPUP_MAX_ITEMS, POPUP_TOPIC_PREFIX, } from './constants';
1
+ import { POPUP_AUTO_OPEN_KEY, POPUP_INTERRUPTIVE_PRIORITIES, POPUP_PUSH_OPEN_COOLDOWN_MS, resolveEndpoints, POPUP_INBOX_CACHE_KEY, POPUP_MAX_ITEMS, POPUP_TOPIC_PREFIX, } from './constants';
2
2
  import { ANALYTICS_ACTION_STATE } from './enums';
3
3
  import { PopupViewer } from './popup-viewer';
4
4
  const EVENT_STATE = {
5
5
  // Not engagement at all — a push landed while the viewer was closed.
6
6
  arrival_nudge: ANALYTICS_ACTION_STATE.INIT,
7
+ // Nor is this. The tray lists popups; it does not open one, and it has no per-popup span to
8
+ // close. Marking it SELECT would open three spans at once that nothing could ever end.
9
+ tray_open: ANALYTICS_ACTION_STATE.INIT,
7
10
  // Span opens, and everything that happens while it is open.
8
11
  auto_open: ANALYTICS_ACTION_STATE.SELECT,
9
12
  manual_open: ANALYTICS_ACTION_STATE.SELECT,
10
13
  viewed: ANALYTICS_ACTION_STATE.SELECT,
11
- carousel_next: ANALYTICS_ACTION_STATE.SELECT,
12
- carousel_prev: ANALYTICS_ACTION_STATE.SELECT,
13
14
  link_click: ANALYTICS_ACTION_STATE.SELECT,
14
15
  // The conversion. SUBMIT leaves the span open, which is correct — a CTA opens in a new tab.
15
16
  cta_click: ANALYTICS_ACTION_STATE.SUBMIT,
17
+ // Deliberate, and shaped like a conversion rather than a span: it neither opens nor closes one.
18
+ mark_all_seen: ANALYTICS_ACTION_STATE.SUBMIT,
16
19
  // Span closes. `dismissed` is terminal, `abandoned` means they left with it still open.
17
20
  closed: ANALYTICS_ACTION_STATE.UNSELECT,
18
21
  dismissed: ANALYTICS_ACTION_STATE.UNSELECT,
@@ -50,10 +53,11 @@ export class PopupInbox {
50
53
  onOpened: (item, trigger) => this.handleOpened(item, trigger),
51
54
  onClosed: (item) => this.emit('closed', this.meta(item)),
52
55
  onAbandoned: (item) => this.emit('abandoned', this.meta(item)),
53
- onDismissed: (item) => void this.dismiss(item),
56
+ onDismissed: (item, source) => void this.dismiss(item, source),
54
57
  onCtaClick: (item, buttonIndex, url) => this.handleCtaClick(item, buttonIndex, url),
55
58
  onLinkClick: (item, url) => this.emit('link_click', { ...this.meta(item), url }),
56
- onCarouselMove: (item, direction) => this.emit(direction === 'next' ? 'carousel_next' : 'carousel_prev', this.meta(item)),
59
+ onTrayOpened: (items, unreadCount) => this.handleTrayOpened(items, unreadCount),
60
+ onMarkAllSeen: () => void this.markAllSeen(),
57
61
  onRenderFailed: (item, reason) => this.emit('render_failed', { ...this.meta(item), reason }),
58
62
  });
59
63
  }
@@ -91,7 +95,6 @@ export class PopupInbox {
91
95
  try {
92
96
  sessionStorage.removeItem(POPUP_INBOX_CACHE_KEY);
93
97
  sessionStorage.removeItem(POPUP_AUTO_OPEN_KEY);
94
- sessionStorage.removeItem(POPUP_LAUNCHER_HIDDEN_KEY);
95
98
  }
96
99
  catch {
97
100
  /* storage unavailable — nothing cached to clear */
@@ -222,41 +225,106 @@ export class PopupInbox {
222
225
  return;
223
226
  this.emit('viewed', this.meta(item));
224
227
  // Optimistic: the badge should drop the moment it is opened, not a round trip later.
225
- const previous = item.status;
226
- item.status = 'VIEWED';
227
228
  this.persistCache();
228
229
  this.viewer.setItems(this.items);
229
- // ...but optimism has to be revocable, and the two ways it can fail need opposite answers.
230
- // A 404 means the popup is gone for this visitor, so restoring "unread" would strand a phantom
231
- // nothing can ever clear. Anything else is transient, so put the status back and let the next
232
- // open retry it.
233
- void this.post(`${item.id}/view`).then((status) => {
234
- if (status === 404) {
235
- this.dropItem(item.id);
236
- return;
237
- }
238
- if (status >= 200 && status < 300)
239
- return;
240
- if (item.status !== 'VIEWED')
241
- return;
242
- item.status = previous;
230
+ void this.markViewedOptimistic(item).then(() => {
243
231
  this.persistCache();
244
232
  this.viewer.setItems(this.items);
245
233
  });
246
234
  }
235
+ /**
236
+ * Flips one popup to VIEWED locally, tells the server, and puts it back if the server disagrees.
237
+ *
238
+ * <p>Shared by {@link handleOpened} and {@link markAllSeen} so the failure handling exists once.
239
+ * The two ways it can fail need opposite answers: a 404 means the popup is gone for this visitor,
240
+ * so restoring "unread" would strand a phantom nothing can ever clear; anything else is transient,
241
+ * so the status goes back and the next open retries it.
242
+ *
243
+ * <p>Emits nothing. Each caller owns its own events — {@link markAllSeen} in particular must not
244
+ * emit a `viewed` per item, which would open a SELECT span per popup that nothing ever closes.
245
+ *
246
+ * <p>The status flips <em>before</em> the first await, so a caller that repaints synchronously
247
+ * after calling this already sees the new state.
248
+ */
249
+ async markViewedOptimistic(item) {
250
+ if (item.status === 'VIEWED')
251
+ return;
252
+ const previous = item.status;
253
+ item.status = 'VIEWED';
254
+ const status = await this.post(`${item.id}/view`);
255
+ if (status === 404) {
256
+ this.dropItem(item.id);
257
+ return;
258
+ }
259
+ if (status >= 200 && status < 300)
260
+ return;
261
+ // Revert against the live item: the list may have been replaced by a refresh while in flight.
262
+ const live = this.items.find((candidate) => candidate.id === item.id);
263
+ if (!live || live.status !== 'VIEWED')
264
+ return;
265
+ live.status = previous;
266
+ }
267
+ /**
268
+ * The tray was opened. Reported, but deliberately inert.
269
+ *
270
+ * <p>No `/view` call and no `viewed` event: seeing a title in a list is not reading the message.
271
+ * If this marked items viewed, every campaign would report a 100% open rate the moment its
272
+ * popup was delivered, and the metric would be worthless.
273
+ */
274
+ handleTrayOpened(items, unreadCount) {
275
+ this.emit('tray_open', {
276
+ notification_type: 'WEB_POPUP',
277
+ item_count: items.length,
278
+ unread_count: unreadCount,
279
+ impressed_ids: items.map((item) => item.id),
280
+ trigger: 'launcher',
281
+ });
282
+ }
283
+ /**
284
+ * Marks every unread popup seen, in response to an explicit click.
285
+ *
286
+ * <p>Fanned out over the existing per-item endpoint rather than a bulk one: `POPUP_MAX_ITEMS`
287
+ * caps the inbox at three, so this is at most three requests.
288
+ */
289
+ async markAllSeen() {
290
+ const unread = this.items.filter((item) => item.status !== 'VIEWED');
291
+ if (unread.length === 0)
292
+ return;
293
+ this.emit('mark_all_seen', {
294
+ notification_type: 'WEB_POPUP',
295
+ marked_count: unread.length,
296
+ popup_ids: unread.map((item) => item.id),
297
+ });
298
+ const settled = Promise.all(unread.map((item) => this.markViewedOptimistic(item)));
299
+ // Painted before the POSTs settle — dropping the badge instantly is the whole point of the
300
+ // action. `markViewedOptimistic` flips each status before its first await, so this sees them.
301
+ this.persistCache();
302
+ this.viewer.setItems(this.items);
303
+ await settled;
304
+ // Again afterwards, so a server refusal that reverted a status is reflected rather than lost.
305
+ this.persistCache();
306
+ this.viewer.setItems(this.items);
307
+ }
247
308
  handleCtaClick(item, buttonIndex, url) {
248
309
  this.emit('cta_click', { ...this.meta(item), button_index: buttonIndex, url });
249
310
  void this.post(`${item.id}/cta-click`, { buttonIndex });
250
311
  }
251
- async dismiss(item) {
252
- this.emit('dismissed', this.meta(item));
312
+ /**
313
+ * @param source which surface it was dismissed from. One act, one event — the surface is a data
314
+ * field, so tray and modal dismissals stay in the same bucket and can still be told apart.
315
+ */
316
+ async dismiss(item, source) {
317
+ this.emit('dismissed', { ...this.meta(item), dismiss_source: source });
253
318
  await this.post(`${item.id}/dismiss`);
254
319
  this.items = this.items.filter((candidate) => candidate.id !== item.id);
255
320
  this.contentCache.delete(item.id);
256
321
  this.persistCache();
322
+ // Deliberately no teardown here, even when this empties the inbox. `setItems` already owns that
323
+ // decision and makes a better one — it tears down only when there is no anchor, and keeps an
324
+ // anchored launcher mounted, because vacating a slot the tenant reserved in their own header
325
+ // collapses their layout around the gap. Tearing down here overrode that, and with a tray open
326
+ // it would also destroy the panel the visitor is standing in mid-click.
257
327
  this.viewer.setItems(this.items);
258
- if (this.items.length === 0)
259
- this.viewer.teardown();
260
328
  }
261
329
  /**
262
330
  * @returns whether the server accepted the transition.
@@ -1 +1 @@
1
- {"version":3,"file":"popup-inbox.js","sourceRoot":"","sources":["../../../../../nommos/core/src/lib/popup-inbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"popup-inbox.js","sourceRoot":"","sources":["../../../../../nommos/core/src/lib/popup-inbox.ts"],"names":[],"mappings":"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"}
@@ -11,10 +11,20 @@ export interface PopupViewerCallbacks {
11
11
  * engagement span from running forever when the tab simply goes away.
12
12
  */
13
13
  onAbandoned: (item: WebPopupItem) => void;
14
- onDismissed: (item: WebPopupItem) => void;
14
+ /**
15
+ * @param source which surface the visitor dismissed from. Same act either way — the distinction
16
+ * is a data field on one event, not two events.
17
+ */
18
+ onDismissed: (item: WebPopupItem, source: 'tray' | 'modal') => void;
15
19
  onCtaClick: (item: WebPopupItem, buttonIndex: number, url: string) => void;
16
20
  onLinkClick: (item: WebPopupItem, url: string) => void;
17
- onCarouselMove: (item: WebPopupItem, direction: 'next' | 'prev') => void;
21
+ /**
22
+ * The tray was opened. Not an engagement signal for any single popup — seeing a row in a list is
23
+ * not opening it — so this must never be treated as a view.
24
+ */
25
+ onTrayOpened: (items: WebPopupItem[], unreadCount: number) => void;
26
+ /** The visitor asked for everything to be marked seen. Deliberate and explicit, never implicit. */
27
+ onMarkAllSeen: () => void;
18
28
  onRenderFailed: (item: WebPopupItem, reason: string) => void;
19
29
  }
20
30
  export declare class PopupViewer {
@@ -24,28 +34,37 @@ export declare class PopupViewer {
24
34
  private state;
25
35
  private launcherHost;
26
36
  private launcherRoot;
27
- /** The element the launcher is currently mounted into. `null` means the floating fallback. */
37
+ /** The element the launcher is mounted into. `null` means no anchor, so no launcher at all. */
28
38
  private anchor;
29
39
  private domObserver;
30
40
  private remountQueued;
31
41
  /** Resolved once per viewer: the visitor's language does not change mid-page. */
42
+ private readonly lang;
32
43
  private readonly copy;
33
44
  private items;
34
- /** What is on screen. Only moves once the next popup's content is in hand. */
45
+ /** Which popup the modal is showing. Set by {@link open}; the tray is what moves between them. */
35
46
  private index;
36
- /**
37
- * Where the visitor has navigated to, which runs ahead of {@link index} while a load is in
38
- * flight. Without it, two quick taps on `›` both step from the same rendered index and the
39
- * second is swallowed.
40
- */
41
- private pendingIndex;
42
- /** Guards against a slow content load landing after a later move and rewinding the carousel. */
43
- private swapToken;
44
47
  private lastFocused;
45
- private touchStartX;
46
48
  private audio;
49
+ /**
50
+ * Tray visibility, deliberately separate from {@link ViewerState}.
51
+ *
52
+ * <p>That enum models the modal's animated open/close and its awaited content load. The tray has
53
+ * neither, and folding it in would force every `state !== 'visible'` guard in this file to be
54
+ * re-reasoned for a surface those guards were never about.
55
+ */
56
+ private trayOpen;
47
57
  private readonly onKeyDown;
48
58
  private readonly onViewportChange;
59
+ /**
60
+ * Registered on `document` only while the tray is open, in the capture phase.
61
+ *
62
+ * <p>`event.target` is useless here: a click inside a shadow root retargets to the host by the
63
+ * time it reaches `document`. `composedPath()` is the only reliable cross-boundary test.
64
+ */
65
+ private readonly onDocumentPointerDown;
66
+ /** The tray is positioned from the bell's box, so it has to follow the bell. */
67
+ private readonly onTrayReflow;
49
68
  private readonly onPageHide;
50
69
  constructor(callbacks: PopupViewerCallbacks);
51
70
  setItems(items: WebPopupItem[]): void;
@@ -66,10 +85,21 @@ export declare class PopupViewer {
66
85
  */
67
86
  private ensureLauncherHost;
68
87
  /**
69
- * @returns the integrator's chosen mount point, or null for the floating fallback.
88
+ * @returns the integrator's chosen mount point, or null when they have not marked one.
70
89
  */
71
90
  private resolveAnchor;
72
- /** Places the launcher host under the current anchor, or under `body` when there is none. */
91
+ /**
92
+ * Places the launcher host inside the integrator's anchor, or detaches it when there is none.
93
+ *
94
+ * <p>There is no floating fallback. Parking a bell in the corner of someone else's page is a
95
+ * decision only they can make: it lands on their layout, competes with their own widgets, and
96
+ * appears without them having asked for it. So the launcher exists exactly where a tenant marked
97
+ * a slot for it, and nowhere else.
98
+ *
99
+ * <p>Popups still arrive and still auto-open without an anchor — only the persistent bell and its
100
+ * tray are withheld. The cost is that a popup the visitor closes has no way back until the next
101
+ * page load, unless the host app calls {@code openViewer} itself.
102
+ */
73
103
  private mountLauncher;
74
104
  /**
75
105
  * Follows the anchor for the life of the page. A one-shot query at init would almost always miss
@@ -81,33 +111,73 @@ export declare class PopupViewer {
81
111
  */
82
112
  private observeDom;
83
113
  /**
84
- * Whether the launcher shows at all depends on where it lives — the two placements have opposite
85
- * defaults, and that is deliberate.
114
+ * Draws the bell, but only where the tenant asked for one.
86
115
  *
87
- * <p><b>Floating</b> shows only while something is unread. A permanent button parked over
88
- * someone else's page with nothing behind it is clutter, so once the visitor has seen everything
89
- * it disappears. The cost is real: a read-but-undismissed popup then has no way back for the rest
90
- * of the session, short of the host app calling {@link PopupInbox.openViewer}.
116
+ * <p>With no anchor there is no launcher at all see {@link mountLauncher} for why there is no
117
+ * corner fallback.
91
118
  *
92
- * <p><b>Anchored</b> always shows. The tenant deliberately reserved a slot in their own header,
93
- * so vacating it leaves a hole their layout collapses around — a flex or grid {@code gap} still
94
- * applies to a zero-width item — and a header bell that vanishes reads as broken chrome rather
95
- * than as tidiness. Persisting also restores the way back, so a popup closed by accident can be
96
- * reopened.
119
+ * <p>Where there is an anchor the bell is permanent, including once everything has been read. The
120
+ * tenant reserved that slot, so vacating it leaves a hole their layout collapses around — a flex
121
+ * or grid {@code gap} still applies to a zero-width item — and chrome that disappears reads as
122
+ * broken rather than as tidy. Persisting is also what keeps a way back to a popup closed by
123
+ * accident.
97
124
  */
98
125
  private renderLauncher;
99
126
  /**
100
- * Hiding is per page session and deliberately weaker than dismissing: it silences the launcher
101
- * for a visitor who does not want it in the corner right now, but a genuinely new popup clears
102
- * it again (see {@link notifyArrival}) because that is a new reason to be shown.
127
+ * The list of what is waiting, and the only way to move between popups.
128
+ *
129
+ * <p>It lives in the launcher's shadow root rather than the modal's because it has to track the
130
+ * bell, and {@link observeDom} re-parents that host into and out of the tenant's header on SPA
131
+ * route changes. In the modal's root it would need a permanent coordinate sync to follow.
132
+ *
133
+ * <p>Opening it is emphatically <em>not</em> opening a popup: no row here calls
134
+ * {@code POST /view}, and nothing marks a popup `VIEWED`. Seeing a title in a list is not reading
135
+ * the message, and conflating the two would make every campaign report a 100% open rate.
136
+ */
137
+ private toggleTray;
138
+ private openTray;
139
+ private closeTray;
140
+ /** Kept off {@link renderLauncher} so toggling the tray does not rebuild the bell. */
141
+ private syncLauncherExpanded;
142
+ private attachTrayListeners;
143
+ private detachTrayListeners;
144
+ private renderTray;
145
+ /**
146
+ * One row.
147
+ *
148
+ * <p>Everything interpolated here is tenant-authored — `previewText` is derived from their own
149
+ * popup body and routinely contains quotes and apostrophes, and `thumbnailUrl` is a free-text
150
+ * column — so the title, preview and time go through {@link escapeHtml} and the thumbnail through
151
+ * {@link sanitizeUrl}.
152
+ *
153
+ * <p>Each of the three optional parts is omitted rather than rendered blank when its data is
154
+ * missing. That covers both a new SDK talking to a backend without the fields and the tail of
155
+ * popups delivered before they existed.
103
156
  */
104
- private launcherHidden;
105
- private setLauncherHidden;
157
+ private rowMarkup;
158
+ /**
159
+ * Places the panel against the bell.
160
+ *
161
+ * <p>`position: fixed` with coordinates written here, rather than `absolute` inside the wrap:
162
+ * fixed descendants are not clipped by an ancestor's `overflow: hidden`, which is what a tenant's
163
+ * sticky header almost always has. It does not escape a `transform`ed ancestor — the same
164
+ * documented limit the modal already carries — so the anchor element must not sit inside one.
165
+ *
166
+ * <h3>Why a default decides and geometry only refines</h3>
167
+ * jsdom has no layout: every `getBoundingClientRect()` is zeroes. Geometry-first logic would read
168
+ * that as "there is room below" and be silently right in tests while being wrong for a bell in a
169
+ * footer or a bottom bar. Defaulting first means the untestable path is the *refinement*, never
170
+ * the rule.
171
+ */
172
+ private positionTray;
106
173
  /**
107
174
  * A popup arrived while the visitor was already on the page. Without this the only signal is a
108
- * small badge appearing in a corner nobody is looking at, so shake the launcher and play a short
109
- * chime. Callers suppress it for first load, cache restore and the auto-open path — see
175
+ * small badge appearing among header icons nobody is looking at, so shake the launcher and play a
176
+ * short chime. Callers suppress it for first load, cache restore and the auto-open path — see
110
177
  * `PopupInbox.refresh`.
178
+ *
179
+ * <p>Silent with no anchor: there is no bell to shake. The chime still plays, since it is the one
180
+ * signal that does not need a button to land on.
111
181
  */
112
182
  notifyArrival(): void;
113
183
  /**
@@ -132,7 +202,6 @@ export declare class PopupViewer {
132
202
  private applyVariantCss;
133
203
  private shell;
134
204
  private ctaMarkup;
135
- private dotsMarkup;
136
205
  private isMobileViewport;
137
206
  /**
138
207
  * One delegated listener covers the chrome and the authored body alike, which is what lets an
@@ -152,29 +221,13 @@ export declare class PopupViewer {
152
221
  */
153
222
  private closeAfterFollowing;
154
223
  /**
155
- * Moves the carousel by one, keeping the current popup on screen until the next one is ready.
156
- *
157
- * <p>This used to re-render the whole modal through {@link renderCurrent}, which tore the shell
158
- * down to a loading placeholder before awaiting the content. Content is cached after its first
159
- * fetch, so the await almost always resolved on the next microtask — but "almost always" still
160
- * paints one frame of collapsed spinner, which is what read as a flicker. Loading first and
161
- * swapping second means the visitor never sees an intermediate state.
162
- */
163
- private move;
164
- /**
165
- * Cross-slides the authored body, leaving the chrome untouched.
166
- *
167
- * <p>Only `.np-stage`'s children change, so the underbar, the chips and the dialog itself never
168
- * re-render — the frame stays put while the content moves through it.
224
+ * The tray branch runs before the modal's `visible` guard, because the two surfaces are never open
225
+ * at once and Escape has to mean "close what is in front of me" for both.
169
226
  */
170
- private swapBody;
171
- /** Repoints the dots without rebuilding them, so the underbar never repaints mid-swipe. */
172
- private syncDots;
173
- private prefersReducedMotion;
174
227
  private handleKeyDown;
228
+ /** Roving focus between rows — the muscle memory the removed carousel arrows used to serve. */
229
+ private moveTrayFocus;
175
230
  /** Keeps keyboard focus inside the dialog while it is open. */
176
231
  private trapFocus;
177
232
  private focusDialog;
178
- private handleTouchStart;
179
- private handleTouchEnd;
180
233
  }