makethisbetter 1.9.2 → 1.11.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/README.md +49 -4
- package/dist/annotate/toolbar.d.ts +7 -0
- package/dist/annotate/toolbar.d.ts.map +1 -1
- package/dist/api/client.d.ts +9 -1
- package/dist/api/client.d.ts.map +1 -1
- package/dist/context/breadcrumbs.d.ts +1 -7
- package/dist/context/breadcrumbs.d.ts.map +1 -1
- package/dist/context/frustration-state.d.ts +12 -0
- package/dist/context/frustration-state.d.ts.map +1 -0
- package/dist/context/frustration-state.test.d.ts +2 -0
- package/dist/context/frustration-state.test.d.ts.map +1 -0
- package/dist/context/frustration.d.ts +5 -5
- package/dist/context/frustration.d.ts.map +1 -1
- package/dist/context/history-patch.d.ts +4 -0
- package/dist/context/history-patch.d.ts.map +1 -0
- package/dist/context/history-patch.test.d.ts +2 -0
- package/dist/context/history-patch.test.d.ts.map +1 -0
- package/dist/i18n/de.d.ts +2 -0
- package/dist/i18n/de.d.ts.map +1 -1
- package/dist/i18n/en.d.ts +2 -0
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/es.d.ts +2 -0
- package/dist/i18n/es.d.ts.map +1 -1
- package/dist/i18n/fr.d.ts +2 -0
- package/dist/i18n/fr.d.ts.map +1 -1
- package/dist/i18n/ja.d.ts +2 -0
- package/dist/i18n/ja.d.ts.map +1 -1
- package/dist/i18n/ko.d.ts +2 -0
- package/dist/i18n/ko.d.ts.map +1 -1
- package/dist/i18n/zh-CN.d.ts +2 -0
- package/dist/i18n/zh-CN.d.ts.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/makethisbetter.cjs +52 -43
- package/dist/makethisbetter.cjs.map +1 -1
- package/dist/makethisbetter.esm.js +929 -635
- package/dist/makethisbetter.esm.js.map +1 -1
- package/dist/makethisbetter.js +52 -43
- package/dist/makethisbetter.js.map +1 -1
- package/dist/popup/clarify.d.ts +12 -1
- package/dist/popup/clarify.d.ts.map +1 -1
- package/dist/popup/comment.d.ts +1 -0
- package/dist/popup/comment.d.ts.map +1 -1
- package/dist/record/session.d.ts +6 -1
- package/dist/record/session.d.ts.map +1 -1
- package/dist/record/session.destroy-during-load.test.d.ts +2 -0
- package/dist/record/session.destroy-during-load.test.d.ts.map +1 -0
- package/dist/screenshot/capture.d.ts.map +1 -1
- package/dist/screenshot/crop.d.ts +19 -0
- package/dist/screenshot/crop.d.ts.map +1 -0
- package/dist/screenshot/crop.test.d.ts +2 -0
- package/dist/screenshot/crop.test.d.ts.map +1 -0
- package/dist/styles.d.ts +2 -1
- package/dist/styles.d.ts.map +1 -1
- package/dist/types.d.ts +6 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/widget/controller.d.ts +1 -1
- package/dist/widget/controller.d.ts.map +1 -1
- package/dist/widget/frustration-prompt.d.ts +7 -4
- package/dist/widget/frustration-prompt.d.ts.map +1 -1
- package/dist/widget/recording-manager.d.ts +2 -1
- package/dist/widget/recording-manager.d.ts.map +1 -1
- package/dist/widget/tab.d.ts +3 -0
- package/dist/widget/tab.d.ts.map +1 -1
- package/package.json +5 -3
- package/src/annotate/toolbar.ts +48 -0
- package/src/api/client.ts +43 -3
- package/src/context/breadcrumbs.ts +5 -48
- package/src/context/frustration-state.ts +83 -0
- package/src/context/frustration.ts +49 -44
- package/src/context/history-patch.ts +86 -0
- package/src/i18n/de.ts +2 -0
- package/src/i18n/en.ts +2 -0
- package/src/i18n/es.ts +2 -0
- package/src/i18n/fr.ts +2 -0
- package/src/i18n/ja.ts +2 -0
- package/src/i18n/ko.ts +2 -0
- package/src/i18n/zh-CN.ts +2 -0
- package/src/index.ts +8 -1
- package/src/popup/clarify.ts +170 -52
- package/src/popup/comment.ts +15 -11
- package/src/record/session.ts +32 -2
- package/src/screenshot/capture.ts +73 -12
- package/src/screenshot/crop.ts +131 -0
- package/src/styles/widget.css +29 -9
- package/src/styles.ts +8 -1
- package/src/types.ts +20 -1
- package/src/widget/controller.ts +38 -7
- package/src/widget/frustration-prompt.ts +19 -2
- package/src/widget/recording-manager.ts +3 -1
- package/src/widget/tab.ts +10 -0
- package/src/annotate/draw-note-bar.test.ts +0 -90
- package/src/annotate/draw.test.ts +0 -158
- package/src/annotate/highlighter.test.ts +0 -70
- package/src/annotate/overlay.test.ts +0 -91
- package/src/annotate/pin.test.ts +0 -83
- package/src/annotate/session.test.ts +0 -344
- package/src/annotate/toolbar.test.ts +0 -132
- package/src/api/client.test.ts +0 -285
- package/src/context/breadcrumbs.test.ts +0 -154
- package/src/context/collector.test.ts +0 -14
- package/src/context/console.test.ts +0 -44
- package/src/context/error-source.test.ts +0 -128
- package/src/context/frustration.test.ts +0 -485
- package/src/i18n/index.test.ts +0 -36
- package/src/popup/clarify.test.ts +0 -725
- package/src/popup/comment.test.ts +0 -168
- package/src/popup/success.test.ts +0 -190
- package/src/record/control-bar.test.ts +0 -110
- package/src/record/session.cdn.test.ts +0 -89
- package/src/record/session.test.ts +0 -160
- package/src/screenshot/capture.test.ts +0 -98
- package/src/widget/anon-id.test.ts +0 -42
- package/src/widget/controller.test.ts +0 -1054
- package/src/widget/dim-overlay.test.ts +0 -27
- package/src/widget/frustration-prompt.test.ts +0 -86
- package/src/widget/payload.test.ts +0 -222
- package/src/widget/pet.test.ts +0 -65
- package/src/widget/recording-manager.test.ts +0 -136
- package/src/widget/shadow.test.ts +0 -44
- package/src/widget/tab.test.ts +0 -107
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@ No more "can you describe what happened?" No more lost screenshots in Slack. The
|
|
|
31
31
|
### CDN (2 lines)
|
|
32
32
|
|
|
33
33
|
```html
|
|
34
|
-
<script src="https://unpkg.com/makethisbetter@
|
|
34
|
+
<script src="https://unpkg.com/makethisbetter@1"></script>
|
|
35
35
|
<script>
|
|
36
36
|
MakeThisBetter.init({ projectKey: 'mtb_proj_YOUR_KEY' })
|
|
37
37
|
</script>
|
|
@@ -136,7 +136,7 @@ export default defineNuxtPlugin(() => {
|
|
|
136
136
|
```erb
|
|
137
137
|
<%# app/views/layouts/application.html.erb %>
|
|
138
138
|
<% if current_user&.admin? %>
|
|
139
|
-
<script src="https://unpkg.com/makethisbetter@
|
|
139
|
+
<script src="https://unpkg.com/makethisbetter@1"></script>
|
|
140
140
|
<script>
|
|
141
141
|
MakeThisBetter.init({
|
|
142
142
|
projectKey: '<%= Rails.application.credentials.mtb_project_key %>',
|
|
@@ -152,7 +152,7 @@ export default defineNuxtPlugin(() => {
|
|
|
152
152
|
<summary><strong>Plain HTML / Static Sites</strong></summary>
|
|
153
153
|
|
|
154
154
|
```html
|
|
155
|
-
<script src="https://unpkg.com/makethisbetter@
|
|
155
|
+
<script src="https://unpkg.com/makethisbetter@1"></script>
|
|
156
156
|
<script>
|
|
157
157
|
MakeThisBetter.init({ projectKey: 'mtb_proj_YOUR_KEY' })
|
|
158
158
|
</script>
|
|
@@ -168,7 +168,35 @@ Click any element to pin it, or drag to draw a freeform highlight. The SDK captu
|
|
|
168
168
|
|
|
169
169
|
### Interaction Replay
|
|
170
170
|
|
|
171
|
-
Switch to **Replay** mode in the toolbar to capture an Interaction Replay (up to 60 seconds). It records rrweb DOM and interaction events
|
|
171
|
+
Switch to **Replay** mode in the toolbar to capture an Interaction Replay (up to 60 seconds). It records rrweb DOM mutations and interaction events. It does not capture screen video or audio and does not request browser media permissions. The recorder loads lazily, so there is zero cost until the reporter starts a replay.
|
|
172
|
+
|
|
173
|
+
**What a replay contains**
|
|
174
|
+
|
|
175
|
+
| Captured | Not captured |
|
|
176
|
+
|----------|--------------|
|
|
177
|
+
| The page's DOM structure and every mutation to it | Values typed into any `input`, `textarea` or `select` — masked by default, including values already filled in when the replay starts |
|
|
178
|
+
| Visible text content | Anything inside an element you mark `rr-block` or `rr-mask` |
|
|
179
|
+
| Mouse positions, clicks, scrolls, viewport size | Screen video, audio, camera, microphone |
|
|
180
|
+
| Stylesheets needed to render the replay | Cookies, `localStorage`, HTTP request or response bodies |
|
|
181
|
+
|
|
182
|
+
**Excluding an element.** Add rrweb's own escape-hatch classes to anything a replay must not see:
|
|
183
|
+
|
|
184
|
+
- `class="rr-block"` — the element is recorded as an empty placeholder of the same size; nothing inside it is serialized.
|
|
185
|
+
- `class="rr-mask"` — the element's text is replaced with asterisks.
|
|
186
|
+
|
|
187
|
+
```html
|
|
188
|
+
<div class="rr-block"><!-- never appears in a replay --></div>
|
|
189
|
+
<span class="rr-mask">Account balance: $12,400</span>
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
**Opting out of input masking.** Input masking is on by default, so a replay taken on a checkout or sign-in page carries no card numbers, passwords, 2FA codes or email addresses. If you need real typed values — for example on an internal tool where no input is sensitive — turn it off explicitly:
|
|
193
|
+
|
|
194
|
+
```js
|
|
195
|
+
MakeThisBetter.init({
|
|
196
|
+
projectKey: 'mtb_proj_xxx',
|
|
197
|
+
recording: { maskAllInputs: false }, // records typed values verbatim
|
|
198
|
+
})
|
|
199
|
+
```
|
|
172
200
|
|
|
173
201
|
### Frustration Detection
|
|
174
202
|
|
|
@@ -227,6 +255,11 @@ MakeThisBetter.init({
|
|
|
227
255
|
frustrationDetection: true, // Proactive frustration prompts
|
|
228
256
|
apiUrl: 'https://...', // Self-hosted API endpoint
|
|
229
257
|
|
|
258
|
+
// Interaction Replay
|
|
259
|
+
recording: {
|
|
260
|
+
maskAllInputs: true, // Default. false records typed input values verbatim
|
|
261
|
+
},
|
|
262
|
+
|
|
230
263
|
// User identification (recommended)
|
|
231
264
|
user: {
|
|
232
265
|
id: 'usr_123',
|
|
@@ -236,6 +269,18 @@ MakeThisBetter.init({
|
|
|
236
269
|
})
|
|
237
270
|
```
|
|
238
271
|
|
|
272
|
+
### Changing the language at runtime
|
|
273
|
+
|
|
274
|
+
`MakeThisBetter.setLocale('zh-CN')` switches the language for the tab and for
|
|
275
|
+
anything opened afterwards. A popup that is already on screen keeps the language it
|
|
276
|
+
was opened in, so a reporter is never re-rendered mid-sentence. Call it before the
|
|
277
|
+
reporter opens the widget — for example, in the same place your app applies a
|
|
278
|
+
language change.
|
|
279
|
+
|
|
280
|
+
```js
|
|
281
|
+
MakeThisBetter.setLocale('zh-CN')
|
|
282
|
+
```
|
|
283
|
+
|
|
239
284
|
### Identity Verification
|
|
240
285
|
|
|
241
286
|
Identity verification links feedback to authenticated users and lets them view their own submissions on the feedback board.
|
|
@@ -8,7 +8,14 @@ export declare class AnnotationToolbar {
|
|
|
8
8
|
private recordBtn;
|
|
9
9
|
private messages;
|
|
10
10
|
private currentMode;
|
|
11
|
+
private fadeTimer;
|
|
12
|
+
private faded;
|
|
13
|
+
private pointerInside;
|
|
14
|
+
private handleDocMouseMove;
|
|
11
15
|
constructor(shadow: ShadowContainer, messages: I18nMessages, onExit: () => void, onModeChange?: (mode: ToolbarMode) => void);
|
|
16
|
+
private startFadeTimer;
|
|
17
|
+
private clearFadeTimer;
|
|
18
|
+
private restoreToolbar;
|
|
12
19
|
private buildHTML;
|
|
13
20
|
setMode(mode: ToolbarMode): void;
|
|
14
21
|
getMode(): ToolbarMode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["../../src/annotate/toolbar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["../../src/annotate/toolbar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAI7C,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,EAAE,CAAgB;IAC1B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,WAAW,CAAwB;IAE3C,OAAO,CAAC,SAAS,CAA6C;IAC9D,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,kBAAkB,CAezB;gBAGC,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,MAAM,IAAI,EAClB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI;IA0B5C,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,SAAS;IAoBjB,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAahC,OAAO,IAAI,WAAW;IAItB,OAAO,IAAI,IAAI;CAKhB"}
|
package/dist/api/client.d.ts
CHANGED
|
@@ -2,7 +2,13 @@ import type { FeedbackPayload, FeedbackResponse, SubmissionSessionResponse, Clar
|
|
|
2
2
|
export interface ClarifyStreamResult {
|
|
3
3
|
messages: ClarifyMessage[];
|
|
4
4
|
done: boolean;
|
|
5
|
+
failed?: boolean;
|
|
5
6
|
}
|
|
7
|
+
export declare class ApiError extends Error {
|
|
8
|
+
readonly status: number;
|
|
9
|
+
constructor(status: number);
|
|
10
|
+
}
|
|
11
|
+
export declare function isTerminalConflict(error: unknown): boolean;
|
|
6
12
|
export declare class ApiClient {
|
|
7
13
|
private apiUrl;
|
|
8
14
|
private projectKey;
|
|
@@ -20,8 +26,10 @@ export declare class ApiClient {
|
|
|
20
26
|
} | null>;
|
|
21
27
|
updateReporter(feedbackId: string, email: string, identityToken: string): Promise<boolean>;
|
|
22
28
|
startClarification(submissionSessionId: string, token: string, message?: string): Promise<ClarifyResponse>;
|
|
29
|
+
retryClarification(submissionSessionId: string, token: string): Promise<ClarifyResponse>;
|
|
30
|
+
private requestClarification;
|
|
23
31
|
getClarification(submissionSessionId: string, token: string): Promise<ClarifyResponse>;
|
|
24
|
-
streamClarification(submissionSessionId: string, token: string, onDelta: (text: string) => void): Promise<ClarifyStreamResult>;
|
|
32
|
+
streamClarification(submissionSessionId: string, token: string, onDelta: (text: string) => void, signal?: AbortSignal): Promise<ClarifyStreamResult>;
|
|
25
33
|
finalizeSubmissionSession(submissionSessionId: string, token: string): Promise<FeedbackResponse>;
|
|
26
34
|
abandonSubmissionSession(submissionSessionId: string, token: string): Promise<void>;
|
|
27
35
|
private fetchWithRetry;
|
package/dist/api/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,eAAe,EACf,cAAc,EACf,MAAM,UAAU,CAAA;AAEjB,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,IAAI,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,eAAe,EACf,cAAc,EACf,MAAM,UAAU,CAAA;AAEjB,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAKD,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;gBAEX,MAAM,EAAE,MAAM;CAK3B;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE1D;AAID,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,SAAS,CAAC,CAAQ;IAC1B,OAAO,CAAC,WAAW,CAAC,CAAuB;gBAE/B,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,YAAY,SAAO,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC;IAQvH,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;YAKvC,WAAW;YAQX,iBAAiB;IAMzB,uBAAuB,CAAC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAuD9G,mBAAmB,CAAC,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAc9G,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAe1F,kBAAkB,CAAC,mBAAmB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAM1G,kBAAkB,CAAC,mBAAmB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;YAIhF,oBAAoB;IAe5B,gBAAgB,CAAC,mBAAmB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAatF,mBAAmB,CACvB,mBAAmB,EAAE,MAAM,EAC3B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC/B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,mBAAmB,CAAC;IAmBzB,yBAAyB,CAAC,mBAAmB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAUhG,wBAAwB,CAAC,mBAAmB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAQ3E,cAAc;CAmB7B"}
|
|
@@ -5,11 +5,7 @@ export declare class BreadcrumbCollector {
|
|
|
5
5
|
private unsubscribeErrors;
|
|
6
6
|
private boundClickHandler;
|
|
7
7
|
private boundChangeHandler;
|
|
8
|
-
private
|
|
9
|
-
private originalPushState;
|
|
10
|
-
private originalReplaceState;
|
|
11
|
-
private installedPushState;
|
|
12
|
-
private installedReplaceState;
|
|
8
|
+
private unsubscribeNavigation;
|
|
13
9
|
private lastUrl;
|
|
14
10
|
constructor();
|
|
15
11
|
start(): void;
|
|
@@ -19,8 +15,6 @@ export declare class BreadcrumbCollector {
|
|
|
19
15
|
private handleClick;
|
|
20
16
|
private handleChange;
|
|
21
17
|
private recordError;
|
|
22
|
-
private startNavigationTracking;
|
|
23
|
-
private stopNavigationTracking;
|
|
24
18
|
private handleNavigation;
|
|
25
19
|
}
|
|
26
20
|
//# sourceMappingURL=breadcrumbs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"breadcrumbs.d.ts","sourceRoot":"","sources":["../../src/context/breadcrumbs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"breadcrumbs.d.ts","sourceRoot":"","sources":["../../src/context/breadcrumbs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAI1C,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,iBAAiB,CAAyB;IAClD,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,qBAAqB,CAA4B;IACzD,OAAO,CAAC,OAAO,CAAK;;IAOpB,KAAK,IAAI,IAAI;IAUb,IAAI,IAAI,IAAI;IAWZ,cAAc,IAAI,UAAU,EAAE;IAI9B,OAAO,CAAC,GAAG;IAOX,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,gBAAgB;CAezB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface FrustrationState {
|
|
2
|
+
navTimestamps: number[];
|
|
3
|
+
cooldownUntil: number;
|
|
4
|
+
errorPageUrls: string[];
|
|
5
|
+
dismissedByUser: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function loadFrustrationState(): FrustrationState;
|
|
8
|
+
export declare function saveFrustrationState(state: FrustrationState): void;
|
|
9
|
+
export declare function isFrustrationDismissed(): boolean;
|
|
10
|
+
export declare function markFrustrationDismissed(): void;
|
|
11
|
+
export declare function clearFrustrationState(): void;
|
|
12
|
+
//# sourceMappingURL=frustration-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frustration-state.d.ts","sourceRoot":"","sources":["../../src/context/frustration-state.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,eAAe,EAAE,OAAO,CAAA;CACzB;AAOD,wBAAgB,oBAAoB,IAAI,gBAAgB,CAQvD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAQlE;AAED,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAKD,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAO5C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frustration-state.test.d.ts","sourceRoot":"","sources":["../../src/context/frustration-state.test.ts"],"names":[],"mappings":""}
|
|
@@ -16,11 +16,7 @@ export declare class FrustrationDetector {
|
|
|
16
16
|
private cooldownUntil;
|
|
17
17
|
private static readonly COOLDOWN_MS;
|
|
18
18
|
private navTimestamps;
|
|
19
|
-
private
|
|
20
|
-
private originalPushState;
|
|
21
|
-
private originalReplaceState;
|
|
22
|
-
private installedPushState;
|
|
23
|
-
private installedReplaceState;
|
|
19
|
+
private unsubscribeNavigation;
|
|
24
20
|
private boundSubmitHandler;
|
|
25
21
|
private boundInvalidHandler;
|
|
26
22
|
private recentSubmitForms;
|
|
@@ -33,11 +29,15 @@ export declare class FrustrationDetector {
|
|
|
33
29
|
stop(): void;
|
|
34
30
|
private startNavigationTracking;
|
|
35
31
|
private stopNavigationTracking;
|
|
32
|
+
private restoreState;
|
|
33
|
+
private persistState;
|
|
36
34
|
private startFormTracking;
|
|
37
35
|
private stopFormTracking;
|
|
38
36
|
private handleClick;
|
|
39
37
|
private handleNavigation;
|
|
40
38
|
private handleFormSubmit;
|
|
39
|
+
private trackFormSubmitIntent;
|
|
40
|
+
private rememberSubmitAttempt;
|
|
41
41
|
private handleFormInvalid;
|
|
42
42
|
private checkErrorPage;
|
|
43
43
|
private checkDeadClickDom;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frustration.d.ts","sourceRoot":"","sources":["../../src/context/frustration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"frustration.d.ts","sourceRoot":"","sources":["../../src/context/frustration.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,iBAAiB,GACzB,YAAY,GACZ,YAAY,GACZ,kBAAkB,GAClB,cAAc,GACd,YAAY,GACZ,gBAAgB,CAAA;AAEpB,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,iBAAiB,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AA6BD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,iBAAiB,CAAyB;IAClD,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,cAAc,CAAI;IAC1B,OAAO,CAAC,aAAa,CAAI;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAS;IAE5C,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,qBAAqB,CAA4B;IACzD,OAAO,CAAC,kBAAkB,CAAoC;IAC9D,OAAO,CAAC,mBAAmB,CAAoC;IAC/D,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,gBAAgB,CAAI;IAC5B,OAAO,CAAC,cAAc,CAAK;gBAEf,aAAa,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI;IAK5D,KAAK,IAAI,IAAI;IAcb,IAAI,IAAI,IAAI;IAeZ,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,WAAW;IAwCnB,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,cAAc;IAmCtB,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,gBAAgB;CAKzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-patch.d.ts","sourceRoot":"","sources":["../../src/context/history-patch.ts"],"names":[],"mappings":"AAUA,KAAK,WAAW,GAAG,MAAM,IAAI,CAAA;AAY7B,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,IAAI,CAWrE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-patch.test.d.ts","sourceRoot":"","sources":["../../src/context/history-patch.test.ts"],"names":[],"mappings":""}
|
package/dist/i18n/de.d.ts
CHANGED
package/dist/i18n/de.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"de.d.ts","sourceRoot":"","sources":["../../src/i18n/de.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"de.d.ts","sourceRoot":"","sources":["../../src/i18n/de.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBA6EC"}
|
package/dist/i18n/en.d.ts
CHANGED
package/dist/i18n/en.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBA6EC"}
|
package/dist/i18n/es.d.ts
CHANGED
package/dist/i18n/es.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"es.d.ts","sourceRoot":"","sources":["../../src/i18n/es.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"es.d.ts","sourceRoot":"","sources":["../../src/i18n/es.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBA6EC"}
|
package/dist/i18n/fr.d.ts
CHANGED
package/dist/i18n/fr.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fr.d.ts","sourceRoot":"","sources":["../../src/i18n/fr.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fr.d.ts","sourceRoot":"","sources":["../../src/i18n/fr.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBA6EC"}
|
package/dist/i18n/ja.d.ts
CHANGED
package/dist/i18n/ja.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ja.d.ts","sourceRoot":"","sources":["../../src/i18n/ja.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ja.d.ts","sourceRoot":"","sources":["../../src/i18n/ja.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBA6EC"}
|
package/dist/i18n/ko.d.ts
CHANGED
package/dist/i18n/ko.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ko.d.ts","sourceRoot":"","sources":["../../src/i18n/ko.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ko.d.ts","sourceRoot":"","sources":["../../src/i18n/ko.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBA6EC"}
|
package/dist/i18n/zh-CN.d.ts
CHANGED
package/dist/i18n/zh-CN.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zh-CN.d.ts","sourceRoot":"","sources":["../../src/i18n/zh-CN.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"zh-CN.d.ts","sourceRoot":"","sources":["../../src/i18n/zh-CN.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBA6EC"}
|
package/dist/index.d.cts
CHANGED
package/dist/index.d.mts
CHANGED
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAKnD,QAAA,MAAM,cAAc;iBACL,oBAAoB,GAAG,IAAI;eAe7B,IAAI;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAKnD,QAAA,MAAM,cAAc;iBACL,oBAAoB,GAAG,IAAI;eAe7B,IAAI;sBAMG,MAAM,GAAG,IAAI;CAIhC,CAAA;AAED,OAAO,EAAE,cAAc,EAAE,CAAA;AACzB,YAAY,EAAE,oBAAoB,EAAE,CAAA"}
|