@pageloop/client 0.5.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.
- package/LICENSE +94 -0
- package/README.md +97 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/.tsbuildinfo.preact +1 -0
- package/dist/.tsbuildinfo.react +1 -0
- package/dist/.tsbuildinfo.solid +1 -0
- package/dist/ApiClient.d.ts +121 -0
- package/dist/ApiClient.d.ts.map +1 -0
- package/dist/ApiClient.js +512 -0
- package/dist/ApiClient.js.map +1 -0
- package/dist/CommentEngine.d.ts +111 -0
- package/dist/CommentEngine.d.ts.map +1 -0
- package/dist/CommentEngine.js +277 -0
- package/dist/CommentEngine.js.map +1 -0
- package/dist/EventBus.d.ts +122 -0
- package/dist/EventBus.d.ts.map +1 -0
- package/dist/EventBus.js +34 -0
- package/dist/EventBus.js.map +1 -0
- package/dist/IdbCache.d.ts +22 -0
- package/dist/IdbCache.d.ts.map +1 -0
- package/dist/IdbCache.js +79 -0
- package/dist/IdbCache.js.map +1 -0
- package/dist/PageLoop.d.ts +424 -0
- package/dist/PageLoop.d.ts.map +1 -0
- package/dist/PageLoop.js +1092 -0
- package/dist/PageLoop.js.map +1 -0
- package/dist/PageTracker.d.ts +32 -0
- package/dist/PageTracker.d.ts.map +1 -0
- package/dist/PageTracker.js +105 -0
- package/dist/PageTracker.js.map +1 -0
- package/dist/UIRenderer.d.ts +218 -0
- package/dist/UIRenderer.d.ts.map +1 -0
- package/dist/UIRenderer.js +2 -0
- package/dist/UIRenderer.js.map +1 -0
- package/dist/auth/resolveInitialToken.d.ts +49 -0
- package/dist/auth/resolveInitialToken.d.ts.map +1 -0
- package/dist/auth/resolveInitialToken.js +97 -0
- package/dist/auth/resolveInitialToken.js.map +1 -0
- package/dist/errorCode.d.ts +12 -0
- package/dist/errorCode.d.ts.map +1 -0
- package/dist/errorCode.js +21 -0
- package/dist/errorCode.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/notifications/BrowserNotifications.d.ts +68 -0
- package/dist/notifications/BrowserNotifications.d.ts.map +1 -0
- package/dist/notifications/BrowserNotifications.js +147 -0
- package/dist/notifications/BrowserNotifications.js.map +1 -0
- package/dist/preact/index.d.ts +37 -0
- package/dist/preact/index.d.ts.map +1 -0
- package/dist/preact/index.js +150 -0
- package/dist/preact/index.js.map +1 -0
- package/dist/preact/style.css +12 -0
- package/dist/react/index.d.ts +52 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +165 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/style.css +12 -0
- package/dist/safeStorage.d.ts +26 -0
- package/dist/safeStorage.d.ts.map +1 -0
- package/dist/safeStorage.js +78 -0
- package/dist/safeStorage.js.map +1 -0
- package/dist/solid/index.d.ts +40 -0
- package/dist/solid/index.d.ts.map +1 -0
- package/dist/solid/index.jsx +134 -0
- package/dist/solid/index.jsx.map +1 -0
- package/dist/solid/style.css +12 -0
- package/package.json +85 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageLoop.js","sourceRoot":"","sources":["../src/PageLoop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { EventBus } from './EventBus.js';
|
|
2
|
+
/**
|
|
3
|
+
* Watches the browser's URL — across hashchange, pushState, popstate, and
|
|
4
|
+
* link clicks — and emits `page:change` whenever the canonical URL changes.
|
|
5
|
+
* Normalization (trailing slash, lowercase host, drop tracking params) is
|
|
6
|
+
* mirrored from the server's expected page-key format.
|
|
7
|
+
*/
|
|
8
|
+
export declare class PageTracker {
|
|
9
|
+
private readonly bus;
|
|
10
|
+
private currentUrl;
|
|
11
|
+
private offHandlers;
|
|
12
|
+
constructor(bus: EventBus);
|
|
13
|
+
start(): void;
|
|
14
|
+
stop(): void;
|
|
15
|
+
/**
|
|
16
|
+
* Stable identity for the page being commented on. Order:
|
|
17
|
+
*
|
|
18
|
+
* 1. `<meta name="pageloop:page-key" content="…">` — preferred. Lets a
|
|
19
|
+
* file keep the same key whether served from `file://`, localhost,
|
|
20
|
+
* or a public domain, and across machines that have the same docs
|
|
21
|
+
* repo checked out at different paths. `pageloop setup --inject`
|
|
22
|
+
* stamps each .html with one (the relative path under --root).
|
|
23
|
+
* 2. The user-supplied `PageLoopConfig.pageKey` override (rare —
|
|
24
|
+
* intended for SPA hosts that compute their own identity).
|
|
25
|
+
* 3. The normalised current URL — original behaviour, kept as the
|
|
26
|
+
* last-resort fallback for pages without a meta tag.
|
|
27
|
+
*/
|
|
28
|
+
pageKey(): string;
|
|
29
|
+
private maybeEmit;
|
|
30
|
+
}
|
|
31
|
+
export declare function normalizeUrl(href: string): string;
|
|
32
|
+
//# sourceMappingURL=PageTracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageTracker.d.ts","sourceRoot":"","sources":["../src/PageTracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;;;;GAKG;AACH,qBAAa,WAAW;IAIX,OAAO,CAAC,QAAQ,CAAC,GAAG;IAHhC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,WAAW,CAAyB;gBAEf,GAAG,EAAE,QAAQ;IAE1C,KAAK,IAAI,IAAI;IA4Bb,IAAI,IAAI,IAAI;IAKZ;;;;;;;;;;;;OAYG;IACH,OAAO,IAAI,MAAM;IAOjB,OAAO,CAAC,SAAS;CAMjB;AAiBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAejD"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { EventBus } from './EventBus.js';
|
|
2
|
+
/**
|
|
3
|
+
* Watches the browser's URL — across hashchange, pushState, popstate, and
|
|
4
|
+
* link clicks — and emits `page:change` whenever the canonical URL changes.
|
|
5
|
+
* Normalization (trailing slash, lowercase host, drop tracking params) is
|
|
6
|
+
* mirrored from the server's expected page-key format.
|
|
7
|
+
*/
|
|
8
|
+
export class PageTracker {
|
|
9
|
+
bus;
|
|
10
|
+
currentUrl = null;
|
|
11
|
+
offHandlers = [];
|
|
12
|
+
constructor(bus) {
|
|
13
|
+
this.bus = bus;
|
|
14
|
+
}
|
|
15
|
+
start() {
|
|
16
|
+
this.maybeEmit();
|
|
17
|
+
const onChange = () => this.maybeEmit();
|
|
18
|
+
window.addEventListener('popstate', onChange);
|
|
19
|
+
window.addEventListener('hashchange', onChange);
|
|
20
|
+
// Patch pushState/replaceState so SPA route changes notify us.
|
|
21
|
+
const origPush = history.pushState;
|
|
22
|
+
const origReplace = history.replaceState;
|
|
23
|
+
history.pushState = function (...args) {
|
|
24
|
+
origPush.apply(this, args);
|
|
25
|
+
onChange();
|
|
26
|
+
};
|
|
27
|
+
history.replaceState = function (...args) {
|
|
28
|
+
origReplace.apply(this, args);
|
|
29
|
+
onChange();
|
|
30
|
+
};
|
|
31
|
+
this.offHandlers = [
|
|
32
|
+
() => window.removeEventListener('popstate', onChange),
|
|
33
|
+
() => window.removeEventListener('hashchange', onChange),
|
|
34
|
+
() => {
|
|
35
|
+
history.pushState = origPush;
|
|
36
|
+
history.replaceState = origReplace;
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
}
|
|
40
|
+
stop() {
|
|
41
|
+
for (const off of this.offHandlers)
|
|
42
|
+
off();
|
|
43
|
+
this.offHandlers = [];
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Stable identity for the page being commented on. Order:
|
|
47
|
+
*
|
|
48
|
+
* 1. `<meta name="pageloop:page-key" content="…">` — preferred. Lets a
|
|
49
|
+
* file keep the same key whether served from `file://`, localhost,
|
|
50
|
+
* or a public domain, and across machines that have the same docs
|
|
51
|
+
* repo checked out at different paths. `pageloop setup --inject`
|
|
52
|
+
* stamps each .html with one (the relative path under --root).
|
|
53
|
+
* 2. The user-supplied `PageLoopConfig.pageKey` override (rare —
|
|
54
|
+
* intended for SPA hosts that compute their own identity).
|
|
55
|
+
* 3. The normalised current URL — original behaviour, kept as the
|
|
56
|
+
* last-resort fallback for pages without a meta tag.
|
|
57
|
+
*/
|
|
58
|
+
pageKey() {
|
|
59
|
+
const meta = document.querySelector('meta[name="pageloop:page-key"]');
|
|
60
|
+
const explicit = meta?.getAttribute('content')?.trim();
|
|
61
|
+
if (explicit)
|
|
62
|
+
return explicit;
|
|
63
|
+
return normalizeUrl(window.location.href);
|
|
64
|
+
}
|
|
65
|
+
maybeEmit() {
|
|
66
|
+
const next = this.pageKey();
|
|
67
|
+
if (next === this.currentUrl)
|
|
68
|
+
return;
|
|
69
|
+
this.currentUrl = next;
|
|
70
|
+
this.bus.emit('page:change', { url: window.location.href, key: next });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const TRACKING_PARAMS = new Set([
|
|
74
|
+
'utm_source',
|
|
75
|
+
'utm_medium',
|
|
76
|
+
'utm_campaign',
|
|
77
|
+
'utm_term',
|
|
78
|
+
'utm_content',
|
|
79
|
+
'gclid',
|
|
80
|
+
'fbclid',
|
|
81
|
+
'mc_cid',
|
|
82
|
+
'mc_eid',
|
|
83
|
+
// PageLoop-internal toggles. Stripping these keeps reload-with-?pageloop-debug=1
|
|
84
|
+
// from fragmenting page identity into separate tracked-page rows.
|
|
85
|
+
'pageloop-debug',
|
|
86
|
+
]);
|
|
87
|
+
export function normalizeUrl(href) {
|
|
88
|
+
try {
|
|
89
|
+
const u = new URL(href);
|
|
90
|
+
u.host = u.host.toLowerCase();
|
|
91
|
+
u.hash = '';
|
|
92
|
+
if (u.pathname !== '/' && u.pathname.endsWith('/')) {
|
|
93
|
+
u.pathname = u.pathname.slice(0, -1);
|
|
94
|
+
}
|
|
95
|
+
for (const k of Array.from(u.searchParams.keys())) {
|
|
96
|
+
if (TRACKING_PARAMS.has(k))
|
|
97
|
+
u.searchParams.delete(k);
|
|
98
|
+
}
|
|
99
|
+
return u.toString();
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return href;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=PageTracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageTracker.js","sourceRoot":"","sources":["../src/PageTracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import type { Comment, TrackedPage, Project, User, Anchor, ProjectThemeId } from '@pageloop/shared';
|
|
2
|
+
import type { ApiClient } from './ApiClient.js';
|
|
3
|
+
import type { CommentEngine } from './CommentEngine.js';
|
|
4
|
+
import type { EventBus } from './EventBus.js';
|
|
5
|
+
/**
|
|
6
|
+
* Abstract surface every framework wrapper implements. The Vanilla, React,
|
|
7
|
+
* Preact, and Solid wrappers each provide one. Replacing the renderer is
|
|
8
|
+
* the only required change to retarget the SDK to a different framework.
|
|
9
|
+
*/
|
|
10
|
+
export interface UIRenderer {
|
|
11
|
+
mount(deps: UIRendererDeps): Promise<{
|
|
12
|
+
toolbar: ToolbarHandle;
|
|
13
|
+
sidebar: SidebarHandle;
|
|
14
|
+
}>;
|
|
15
|
+
unmount(): Promise<void>;
|
|
16
|
+
/** Re-render bubble overlays for the given comments. */
|
|
17
|
+
renderBubbles(comments: Comment[]): void;
|
|
18
|
+
/** Update sidebar with the canonical comment list. */
|
|
19
|
+
renderSidebar(state: SidebarState): void;
|
|
20
|
+
/**
|
|
21
|
+
* Reposition existing bubbles against their anchors without
|
|
22
|
+
* rebuilding the list. Optional hook for renderers that paint
|
|
23
|
+
* bubbles over host content; renderers without a positioned
|
|
24
|
+
* overlay can no-op. Called by `PageLoop.reflowBubbles()` so a
|
|
25
|
+
* host can request a recalculation after a layout change it
|
|
26
|
+
* caused (route swap, accordion expand, narrow/full toggle).
|
|
27
|
+
*/
|
|
28
|
+
reflowBubbles?(): void;
|
|
29
|
+
/**
|
|
30
|
+
* Hide or show the bubble overlay programmatically — orthogonal to
|
|
31
|
+
* the user's toolbar toggle. Hosts call this while the page is in
|
|
32
|
+
* a transient non-anchorable state (raw editor textarea, lazy
|
|
33
|
+
* viewer hydrating) and again to restore. Renderers without an
|
|
34
|
+
* overlay layer can no-op.
|
|
35
|
+
*
|
|
36
|
+
* `animationMs` overrides the fade duration for this transition
|
|
37
|
+
* (default 150ms). Pass `0` for instant hide/show — useful when
|
|
38
|
+
* the host page itself is mid-animation and the bubbles would
|
|
39
|
+
* otherwise visibly cross-fade through unrelated motion.
|
|
40
|
+
*/
|
|
41
|
+
setBubblesHidden?(hidden: boolean, animationMs?: number): void;
|
|
42
|
+
}
|
|
43
|
+
export interface UIRendererDeps {
|
|
44
|
+
bus: EventBus;
|
|
45
|
+
api: ApiClient;
|
|
46
|
+
comments: CommentEngine;
|
|
47
|
+
/** Browser OS-notifications surface. Renderers expose a "Grant
|
|
48
|
+
* permission" toggle in their settings UI that calls
|
|
49
|
+
* `notifications.requestPermission()`; the grant auto-wires the
|
|
50
|
+
* bus subscription so subsequent `notification.show` events
|
|
51
|
+
* surface real OS notifications. Optional — pre-mount or
|
|
52
|
+
* environments without `window.Notification` won't surface it. */
|
|
53
|
+
notifications?: import('./notifications/BrowserNotifications.js').BrowserNotifications;
|
|
54
|
+
/** Current page (or null until resolved). */
|
|
55
|
+
page: () => TrackedPage | null;
|
|
56
|
+
project: () => Project;
|
|
57
|
+
/**
|
|
58
|
+
* Currently authenticated user, or null when anonymous. Renderers use this
|
|
59
|
+
* to gate per-comment action menus (author can edit/delete own; otherwise
|
|
60
|
+
* editor+ moderation is required — the renderer asks `role()` for that).
|
|
61
|
+
*/
|
|
62
|
+
user: () => User | null;
|
|
63
|
+
/**
|
|
64
|
+
* Current user's role in the project: 'owner' / 'editor' / 'commenter' /
|
|
65
|
+
* 'viewer' / 'anonymous'. Renderers use this to show or hide moderation
|
|
66
|
+
* affordances; the server is still the source of truth on enforcement.
|
|
67
|
+
*/
|
|
68
|
+
role: () => 'owner' | 'editor' | 'commenter' | 'viewer' | 'anonymous';
|
|
69
|
+
/**
|
|
70
|
+
* The signed-in user's preferred bubble colour (`#rrggbb`), as resolved
|
|
71
|
+
* by the server at bootstrap from their account `appearance` settings —
|
|
72
|
+
* or null when anonymous or unset. Renderers tint their bubble surface
|
|
73
|
+
* to this on mount and expose a colour picker (signed-in only) that
|
|
74
|
+
* persists changes back via `me.settings.update`. Kept fresh by PageLoop
|
|
75
|
+
* when the user recolours mid-session (see `bubbles:recolor`).
|
|
76
|
+
*/
|
|
77
|
+
bubbleColor: () => string | null;
|
|
78
|
+
/**
|
|
79
|
+
* Apply a freshly-obtained session token (e.g. from the sign-in modal's
|
|
80
|
+
* email/password login) without a host-page reload: sets the bearer,
|
|
81
|
+
* persists it, and re-resolves identity + page state via bootstrap, then
|
|
82
|
+
* emits `auth:changed` so the toolbar/mini repaint. Pass null to sign out.
|
|
83
|
+
*/
|
|
84
|
+
applyToken: (token: string | null) => Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* Remove ALL PageLoop UI from the page — toolbar/mini, sidebar, bubbles,
|
|
87
|
+
* tooltips, chat, toasts — until the next page load. Nothing is persisted;
|
|
88
|
+
* a refresh re-initializes the widget normally. Intended for screenshots
|
|
89
|
+
* or temporarily clearing the page. The toolbar + mini both expose an "X"
|
|
90
|
+
* that calls this.
|
|
91
|
+
*/
|
|
92
|
+
dismiss: () => void;
|
|
93
|
+
/**
|
|
94
|
+
* Static UI options the host passed to `PageLoop.init({ ui: ... })`.
|
|
95
|
+
* Renderers read positioning, theming, etc. from here.
|
|
96
|
+
*/
|
|
97
|
+
ui: () => {
|
|
98
|
+
/** Widget display mode. `'docked'` (default) renders the full
|
|
99
|
+
* toolbar pinned to the top/bottom edge; `'mini'` renders a
|
|
100
|
+
* corner bubble that expands on click into an action row. */
|
|
101
|
+
widgetMode?: 'docked' | 'mini';
|
|
102
|
+
/** Which corner the mini widget docks to. Ignored when
|
|
103
|
+
* `widgetMode !== 'mini'`. */
|
|
104
|
+
widgetCorner?: 'lower-right' | 'lower-left' | 'upper-right' | 'upper-left';
|
|
105
|
+
toolbarPosition?: 'top' | 'bottom';
|
|
106
|
+
/** Where the sidebar mounts. New code reads this; `sidebarSide` is
|
|
107
|
+
* the deprecated legacy alias, preserved for one or two more
|
|
108
|
+
* releases. */
|
|
109
|
+
sidebarPosition?: 'left' | 'right' | 'top' | 'bottom';
|
|
110
|
+
/** @deprecated — use `sidebarPosition`. */
|
|
111
|
+
sidebarSide?: 'left' | 'right';
|
|
112
|
+
sidebarDisplayMode?: 'flyout' | 'in-page';
|
|
113
|
+
/** Project's default theme (built-in or recipe). The widget's own
|
|
114
|
+
* per-user override still wins over this. */
|
|
115
|
+
theme?: ProjectThemeId;
|
|
116
|
+
/** Comment-tooltip inline-reply switch (project ui config). */
|
|
117
|
+
allowInlineCommenting?: boolean;
|
|
118
|
+
/** Hover delay for comment-tooltip in ms. */
|
|
119
|
+
tooltipDelayMs?: number;
|
|
120
|
+
/** When true, bubbles continuously track their anchor
|
|
121
|
+
* elements through animations + layout shifts. Default false. */
|
|
122
|
+
bubbleFollowAnimations?: boolean;
|
|
123
|
+
/** Base CSS z-index for the bubble layer. Renderers apply this
|
|
124
|
+
* to `--pl-z-bubbles` so host-page modals can be layered above
|
|
125
|
+
* or below the bubbles. Floating (hovered) bubbles derive from
|
|
126
|
+
* `value + 1`. */
|
|
127
|
+
bubbleZIndex?: number;
|
|
128
|
+
/** OAuth sign-in transport.
|
|
129
|
+
* - `'auto'` (default) — full-page redirect when the PageLoop
|
|
130
|
+
* endpoint is same-origin with the host page, popup +
|
|
131
|
+
* postMessage when cross-origin. Matches the admin SPA's
|
|
132
|
+
* flow for same-origin embedders.
|
|
133
|
+
* - `'redirect'` — force redirect. Only works same-origin.
|
|
134
|
+
* - `'popup'` — force popup. Required for `file://` hosts and
|
|
135
|
+
* cross-origin embedders. */
|
|
136
|
+
signInMode?: 'auto' | 'popup' | 'redirect';
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Register the current URL as a tracked page if it isn't already.
|
|
140
|
+
* Returns the page (existing or newly-created), or null if registration
|
|
141
|
+
* failed (insufficient permissions, network error). Renderers call this
|
|
142
|
+
* before creating a comment when `page()` returns null.
|
|
143
|
+
*/
|
|
144
|
+
registerCurrentPage: () => Promise<TrackedPage | null>;
|
|
145
|
+
/**
|
|
146
|
+
* Canonical key for the current URL — same value the PageTracker
|
|
147
|
+
* would use when registering. Always defined (synthesised from
|
|
148
|
+
* `window.location` for hosts that haven't called register yet),
|
|
149
|
+
* so renderers can pass it to `pages.trackCurrent` without first
|
|
150
|
+
* round-tripping a register call.
|
|
151
|
+
*/
|
|
152
|
+
pageKey: () => string;
|
|
153
|
+
/** Optional debug logger; no-op when debug is off. */
|
|
154
|
+
debug: (...args: unknown[]) => void;
|
|
155
|
+
/**
|
|
156
|
+
* Booted-bundle release info (CR-7), threaded from `PageLoopConfig`.
|
|
157
|
+
* `version` is the running bundle's version (from the auto-update
|
|
158
|
+
* loader's manifest); `notesUrl` links the release notes. Both may be
|
|
159
|
+
* undefined when the embedder doesn't supply them — the renderer's
|
|
160
|
+
* "What's new" pill stays silent in that case.
|
|
161
|
+
*/
|
|
162
|
+
release: () => {
|
|
163
|
+
version?: string;
|
|
164
|
+
notesUrl?: string;
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
export interface SidebarState {
|
|
168
|
+
page: TrackedPage | null;
|
|
169
|
+
comments: Comment[];
|
|
170
|
+
/** Currently focused comment id (sidebar selection / scroll target). */
|
|
171
|
+
focusedCommentId?: string | null;
|
|
172
|
+
/** Set of comment ids to highlight simultaneously. Used when the
|
|
173
|
+
* bubble layer routes a click on a stacked bubble — every comment
|
|
174
|
+
* at that anchor highlights together so the viewer can see the
|
|
175
|
+
* full group at a glance. Always a superset (or equal) of the
|
|
176
|
+
* scroll target in `focusedCommentId`. */
|
|
177
|
+
focusedCommentIds?: ReadonlySet<string>;
|
|
178
|
+
/** Comment ids whose anchor couldn't be resolved against the
|
|
179
|
+
* CURRENT page DOM. Distinct from `Comment.status === 'misaligned'`
|
|
180
|
+
* (which is a server-side permanent flag stamped on publish): this
|
|
181
|
+
* is the live "we re-tried to find your text and didn't" set,
|
|
182
|
+
* recomputed on every bubble repaint. The renderer surfaces it
|
|
183
|
+
* as a subtle "no anchor" indicator on the matching sidebar row. */
|
|
184
|
+
danglingCommentIds?: ReadonlySet<string>;
|
|
185
|
+
}
|
|
186
|
+
export interface ToolbarHandle {
|
|
187
|
+
setUnreadCount(n: number): void;
|
|
188
|
+
setBubblesVisible(visible: boolean): void;
|
|
189
|
+
}
|
|
190
|
+
export interface SidebarHandle {
|
|
191
|
+
open(): void;
|
|
192
|
+
close(): void;
|
|
193
|
+
toggle(): void;
|
|
194
|
+
focusComment(id: string): void;
|
|
195
|
+
/**
|
|
196
|
+
* Open the sidebar, scroll to `commentId`, expand its replies
|
|
197
|
+
* thread (fetching if needed), then scroll to + flash the
|
|
198
|
+
* specific reply. The reply id is searched inside the comment's
|
|
199
|
+
* `.pl-replies` block.
|
|
200
|
+
*
|
|
201
|
+
* Renderers without nested replies UI can fall back to
|
|
202
|
+
* `focusComment(commentId)` and ignore the reply id.
|
|
203
|
+
*/
|
|
204
|
+
focusReply(commentId: string, replyId: string): void;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Helper for a renderer to ask the user to confirm an anchor + write a comment.
|
|
208
|
+
* Renderers can ignore this and implement their own UI; provided as a helper
|
|
209
|
+
* for the simplest implementations.
|
|
210
|
+
*/
|
|
211
|
+
export interface CommentComposeRequest {
|
|
212
|
+
anchor: Anchor;
|
|
213
|
+
/** Resolved DOM range, when available, for visual confirmation. */
|
|
214
|
+
range: Range | null;
|
|
215
|
+
/** Element-picker mode? Affects the affordance label ("Comment on element" vs "Comment"). */
|
|
216
|
+
elementPicker?: boolean;
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=UIRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UIRenderer.d.ts","sourceRoot":"","sources":["../src/UIRenderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UIRenderer.js","sourceRoot":"","sources":["../src/UIRenderer.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bearer-token resolution for a freshly-constructed PageLoop widget.
|
|
3
|
+
* Extracted from PageLoop.ts so unit tests can exercise the priority
|
|
4
|
+
* chain directly without booting a full instance.
|
|
5
|
+
*
|
|
6
|
+
* Three sources, in priority order:
|
|
7
|
+
*
|
|
8
|
+
* 1. URL fragment `#pl_token=...&pl_project=...` — set by the server's
|
|
9
|
+
* OAuth callback when the user just completed sign-in. We pull it
|
|
10
|
+
* out, persist it under SESSION_TOKEN_KEY, and clean the URL so a
|
|
11
|
+
* refresh doesn't keep the token visible in the address bar (and
|
|
12
|
+
* so the user can copy the URL without leaking credentials).
|
|
13
|
+
* 2. `localStorage[SESSION_TOKEN_KEY]` — a token from a prior session
|
|
14
|
+
* in this browser. Survives page reloads + tab close/reopen.
|
|
15
|
+
* 3. The explicit `config.token` an embedder may pass in (e.g. when
|
|
16
|
+
* the host app has its own session and wants to forward it).
|
|
17
|
+
*
|
|
18
|
+
* SSR-safe: returns the config token when `window` is undefined.
|
|
19
|
+
* Private-mode-safe: catches localStorage exceptions, returns the
|
|
20
|
+
* captured token for the current tab even when it can't be persisted.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* localStorage key for the widget's bearer JWT.
|
|
24
|
+
*
|
|
25
|
+
* **Renamed from `pl_token` to `pl_widget_session`** after a
|
|
26
|
+
* reproducible bug on Chrome where the literal key `pl_token` was
|
|
27
|
+
* being cleared across page refresh by something outside our code —
|
|
28
|
+
* almost certainly an anti-tracking extension or a Chrome heuristic
|
|
29
|
+
* that pattern-matches on OAuth-token-shaped storage entries. A
|
|
30
|
+
* localStorage-prototype tap proved no code path on the page called
|
|
31
|
+
* `removeItem('pl_token')`; manual `localStorage.setItem('pl_token',
|
|
32
|
+
* 'eyJ…')` in DevTools also vanished across refresh, while a sibling
|
|
33
|
+
* `xx_token` key survived. The rename defeats key-specific targeting.
|
|
34
|
+
*
|
|
35
|
+
* The URL fragment name the server emits is still `pl_token` —
|
|
36
|
+
* that's part of the server's contract and doesn't need renaming
|
|
37
|
+
* (the fragment is transient, history.replaceState'd off the URL
|
|
38
|
+
* before the page renders to the user). Only the persisted-storage
|
|
39
|
+
* key changes here.
|
|
40
|
+
*
|
|
41
|
+
* Per-origin (not per-project) so a user signed into one project
|
|
42
|
+
* stays signed in across widgets on the same host. Independent from
|
|
43
|
+
* the admin SPA's session — admin uses `pl_admin_session`. To bridge
|
|
44
|
+
* the two surfaces, an embedder passes the token explicitly via
|
|
45
|
+
* `PageLoop.init({ token })`.
|
|
46
|
+
*/
|
|
47
|
+
export declare const SESSION_TOKEN_KEY = "pl_widget_session";
|
|
48
|
+
export declare function resolveInitialToken(configToken: string | null | undefined): string | null;
|
|
49
|
+
//# sourceMappingURL=resolveInitialToken.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveInitialToken.d.ts","sourceRoot":"","sources":["../../src/auth/resolveInitialToken.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAErD,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CA6CzF"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bearer-token resolution for a freshly-constructed PageLoop widget.
|
|
3
|
+
* Extracted from PageLoop.ts so unit tests can exercise the priority
|
|
4
|
+
* chain directly without booting a full instance.
|
|
5
|
+
*
|
|
6
|
+
* Three sources, in priority order:
|
|
7
|
+
*
|
|
8
|
+
* 1. URL fragment `#pl_token=...&pl_project=...` — set by the server's
|
|
9
|
+
* OAuth callback when the user just completed sign-in. We pull it
|
|
10
|
+
* out, persist it under SESSION_TOKEN_KEY, and clean the URL so a
|
|
11
|
+
* refresh doesn't keep the token visible in the address bar (and
|
|
12
|
+
* so the user can copy the URL without leaking credentials).
|
|
13
|
+
* 2. `localStorage[SESSION_TOKEN_KEY]` — a token from a prior session
|
|
14
|
+
* in this browser. Survives page reloads + tab close/reopen.
|
|
15
|
+
* 3. The explicit `config.token` an embedder may pass in (e.g. when
|
|
16
|
+
* the host app has its own session and wants to forward it).
|
|
17
|
+
*
|
|
18
|
+
* SSR-safe: returns the config token when `window` is undefined.
|
|
19
|
+
* Private-mode-safe: catches localStorage exceptions, returns the
|
|
20
|
+
* captured token for the current tab even when it can't be persisted.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* localStorage key for the widget's bearer JWT.
|
|
24
|
+
*
|
|
25
|
+
* **Renamed from `pl_token` to `pl_widget_session`** after a
|
|
26
|
+
* reproducible bug on Chrome where the literal key `pl_token` was
|
|
27
|
+
* being cleared across page refresh by something outside our code —
|
|
28
|
+
* almost certainly an anti-tracking extension or a Chrome heuristic
|
|
29
|
+
* that pattern-matches on OAuth-token-shaped storage entries. A
|
|
30
|
+
* localStorage-prototype tap proved no code path on the page called
|
|
31
|
+
* `removeItem('pl_token')`; manual `localStorage.setItem('pl_token',
|
|
32
|
+
* 'eyJ…')` in DevTools also vanished across refresh, while a sibling
|
|
33
|
+
* `xx_token` key survived. The rename defeats key-specific targeting.
|
|
34
|
+
*
|
|
35
|
+
* The URL fragment name the server emits is still `pl_token` —
|
|
36
|
+
* that's part of the server's contract and doesn't need renaming
|
|
37
|
+
* (the fragment is transient, history.replaceState'd off the URL
|
|
38
|
+
* before the page renders to the user). Only the persisted-storage
|
|
39
|
+
* key changes here.
|
|
40
|
+
*
|
|
41
|
+
* Per-origin (not per-project) so a user signed into one project
|
|
42
|
+
* stays signed in across widgets on the same host. Independent from
|
|
43
|
+
* the admin SPA's session — admin uses `pl_admin_session`. To bridge
|
|
44
|
+
* the two surfaces, an embedder passes the token explicitly via
|
|
45
|
+
* `PageLoop.init({ token })`.
|
|
46
|
+
*/
|
|
47
|
+
export const SESSION_TOKEN_KEY = 'pl_widget_session';
|
|
48
|
+
export function resolveInitialToken(configToken) {
|
|
49
|
+
if (typeof window === 'undefined')
|
|
50
|
+
return configToken ?? null;
|
|
51
|
+
// 1. URL fragment from OAuth callback. The server sets pl_token +
|
|
52
|
+
// pl_project; only pl_token is load-bearing here (the project comes
|
|
53
|
+
// from the embedder's config). Match on hash to avoid colliding with
|
|
54
|
+
// any querystring keys the embedder's app might use.
|
|
55
|
+
try {
|
|
56
|
+
const hash = window.location.hash || '';
|
|
57
|
+
const params = new URLSearchParams(hash.startsWith('#') ? hash.slice(1) : hash);
|
|
58
|
+
const fromHash = params.get('pl_token');
|
|
59
|
+
if (fromHash) {
|
|
60
|
+
// Persist for refresh + cross-tab visibility, then strip the
|
|
61
|
+
// token from the visible URL via history.replaceState.
|
|
62
|
+
try {
|
|
63
|
+
localStorage.setItem(SESSION_TOKEN_KEY, fromHash);
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
/* private mode — token still works for this tab */
|
|
67
|
+
}
|
|
68
|
+
params.delete('pl_token');
|
|
69
|
+
params.delete('pl_project');
|
|
70
|
+
const remaining = params.toString();
|
|
71
|
+
const cleanedHash = remaining ? `#${remaining}` : '';
|
|
72
|
+
const url = window.location.pathname + window.location.search + cleanedHash;
|
|
73
|
+
try {
|
|
74
|
+
window.history.replaceState(null, '', url);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
/* file:// or sandboxed iframe — ignore */
|
|
78
|
+
}
|
|
79
|
+
return fromHash;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
/* malformed URLSearchParams etc — fall through */
|
|
84
|
+
}
|
|
85
|
+
// 2. Previously-persisted token from a prior session.
|
|
86
|
+
try {
|
|
87
|
+
const saved = localStorage.getItem(SESSION_TOKEN_KEY);
|
|
88
|
+
if (saved)
|
|
89
|
+
return saved;
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
/* private mode — skip */
|
|
93
|
+
}
|
|
94
|
+
// 3. Explicit embedder-supplied token (fall back).
|
|
95
|
+
return configToken ?? null;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=resolveInitialToken.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveInitialToken.js","sourceRoot":"","sources":["../../src/auth/resolveInitialToken.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAErD,MAAM,UAAU,mBAAmB,CAAC,WAAsC;IACzE,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,WAAW,IAAI,IAAI,CAAC;IAE9D,kEAAkE;IAClE,oEAAoE;IACpE,qEAAqE;IACrE,qDAAqD;IACrD,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChF,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxC,IAAI,QAAQ,EAAE,CAAC;YACd,6DAA6D;YAC7D,uDAAuD;YACvD,IAAI,CAAC;gBACJ,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;YACnD,CAAC;YAAC,MAAM,CAAC;gBACR,mDAAmD;YACpD,CAAC;YACD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC1B,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC;YAC5E,IAAI,CAAC;gBACJ,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC5C,CAAC;YAAC,MAAM,CAAC;gBACR,0CAA0C;YAC3C,CAAC;YACD,OAAO,QAAQ,CAAC;QACjB,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,kDAAkD;IACnD,CAAC;IAED,sDAAsD;IACtD,IAAI,CAAC;QACJ,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACtD,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACR,yBAAyB;IAC1B,CAAC;IAED,mDAAmD;IACnD,OAAO,WAAW,IAAI,IAAI,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract the machine-readable error code from an unknown thrown value.
|
|
3
|
+
*
|
|
4
|
+
* Prefers the structured `code` carried by `RpcError`/`PageLoopError` (what
|
|
5
|
+
* `ApiClient` now throws). Falls back to the legacy `"CODE: message"` string
|
|
6
|
+
* form so any path that still throws a plain `Error` keeps working — but new
|
|
7
|
+
* code should rely on the structured field, not the message text.
|
|
8
|
+
*
|
|
9
|
+
* Returns `null` when no code can be determined.
|
|
10
|
+
*/
|
|
11
|
+
export declare function errorCode(err: unknown): string | null;
|
|
12
|
+
//# sourceMappingURL=errorCode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorCode.d.ts","sourceRoot":"","sources":["../src/errorCode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAQrD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract the machine-readable error code from an unknown thrown value.
|
|
3
|
+
*
|
|
4
|
+
* Prefers the structured `code` carried by `RpcError`/`PageLoopError` (what
|
|
5
|
+
* `ApiClient` now throws). Falls back to the legacy `"CODE: message"` string
|
|
6
|
+
* form so any path that still throws a plain `Error` keeps working — but new
|
|
7
|
+
* code should rely on the structured field, not the message text.
|
|
8
|
+
*
|
|
9
|
+
* Returns `null` when no code can be determined.
|
|
10
|
+
*/
|
|
11
|
+
export function errorCode(err) {
|
|
12
|
+
if (err && typeof err === 'object') {
|
|
13
|
+
const code = err.code;
|
|
14
|
+
if (typeof code === 'string' && code.length > 0)
|
|
15
|
+
return code;
|
|
16
|
+
}
|
|
17
|
+
const msg = err instanceof Error ? err.message : typeof err === 'string' ? err : '';
|
|
18
|
+
const m = /^([A-Z][A-Z0-9_]+):/.exec(msg);
|
|
19
|
+
return m ? m[1] : null;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=errorCode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorCode.js","sourceRoot":"","sources":["../src/errorCode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,GAAY;IACrC,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,GAAI,GAA0B,CAAC,IAAI,CAAC;QAC9C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IAC9D,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACpF,MAAM,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzB,CAAC"}
|