screenci 0.0.76 → 0.0.79

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.
Files changed (184) hide show
  1. package/dist/cli.d.ts +58 -1
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +584 -200
  4. package/dist/cli.js.map +1 -1
  5. package/dist/docs/manifest.d.ts +253 -98
  6. package/dist/docs/manifest.d.ts.map +1 -1
  7. package/dist/docs/manifest.js +92 -32
  8. package/dist/docs/manifest.js.map +1 -1
  9. package/dist/docs/video-sources/camera-and-zooming.screenci.d.ts +2 -0
  10. package/dist/docs/video-sources/camera-and-zooming.screenci.d.ts.map +1 -0
  11. package/dist/docs/video-sources/camera-and-zooming.screenci.js +57 -0
  12. package/dist/docs/video-sources/camera-and-zooming.screenci.js.map +1 -0
  13. package/dist/docs/video-sources/installation.screenci.js +9 -6
  14. package/dist/docs/video-sources/installation.screenci.js.map +1 -1
  15. package/dist/docs/video-sources/languages.screenci.d.ts +2 -0
  16. package/dist/docs/video-sources/languages.screenci.d.ts.map +1 -0
  17. package/dist/docs/video-sources/languages.screenci.js +68 -0
  18. package/dist/docs/video-sources/languages.screenci.js.map +1 -0
  19. package/dist/docs/video-sources/locator-highlight-animated.screenci.js +1 -1
  20. package/dist/docs/video-sources/locator-highlight-animated.screenci.js.map +1 -1
  21. package/dist/docs/video-sources/narration.screenci.d.ts +2 -0
  22. package/dist/docs/video-sources/narration.screenci.d.ts.map +1 -0
  23. package/dist/docs/video-sources/narration.screenci.js +71 -0
  24. package/dist/docs/video-sources/narration.screenci.js.map +1 -0
  25. package/dist/docs/video-sources/public-urls-and-embeds.screenci.d.ts +2 -0
  26. package/dist/docs/video-sources/public-urls-and-embeds.screenci.d.ts.map +1 -0
  27. package/dist/docs/video-sources/public-urls-and-embeds.screenci.js +60 -0
  28. package/dist/docs/video-sources/public-urls-and-embeds.screenci.js.map +1 -0
  29. package/dist/docs/video-sources/speaking-style.screenci.d.ts +2 -0
  30. package/dist/docs/video-sources/speaking-style.screenci.d.ts.map +1 -0
  31. package/dist/docs/video-sources/speaking-style.screenci.js +76 -0
  32. package/dist/docs/video-sources/speaking-style.screenci.js.map +1 -0
  33. package/dist/docs/video-sources/vertical-video.screenci.d.ts +2 -0
  34. package/dist/docs/video-sources/vertical-video.screenci.d.ts.map +1 -0
  35. package/dist/docs/video-sources/vertical-video.screenci.js +58 -0
  36. package/dist/docs/video-sources/vertical-video.screenci.js.map +1 -0
  37. package/dist/docs/videos.d.ts +20 -0
  38. package/dist/docs/videos.d.ts.map +1 -1
  39. package/dist/docs/videos.js +25 -0
  40. package/dist/docs/videos.js.map +1 -1
  41. package/dist/e2e/instrument.e2e.js +8 -0
  42. package/dist/e2e/instrument.e2e.js.map +1 -1
  43. package/dist/e2e/redact.e2e.d.ts +2 -0
  44. package/dist/e2e/redact.e2e.d.ts.map +1 -0
  45. package/dist/e2e/redact.e2e.js +161 -0
  46. package/dist/e2e/redact.e2e.js.map +1 -0
  47. package/dist/index.d.ts +10 -3
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +8 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/src/asset.d.ts +154 -13
  52. package/dist/src/asset.d.ts.map +1 -1
  53. package/dist/src/asset.js +262 -32
  54. package/dist/src/asset.js.map +1 -1
  55. package/dist/src/assetHash.d.ts +27 -0
  56. package/dist/src/assetHash.d.ts.map +1 -0
  57. package/dist/src/assetHash.js +0 -0
  58. package/dist/src/assetHash.js.map +1 -0
  59. package/dist/src/audio.d.ts +8 -5
  60. package/dist/src/audio.d.ts.map +1 -1
  61. package/dist/src/audio.js +56 -31
  62. package/dist/src/audio.js.map +1 -1
  63. package/dist/src/builder.d.ts +132 -32
  64. package/dist/src/builder.d.ts.map +1 -1
  65. package/dist/src/builder.js +66 -20
  66. package/dist/src/builder.js.map +1 -1
  67. package/dist/src/changeFocus.d.ts.map +1 -1
  68. package/dist/src/changeFocus.js +103 -34
  69. package/dist/src/changeFocus.js.map +1 -1
  70. package/dist/src/cue.d.ts +29 -17
  71. package/dist/src/cue.d.ts.map +1 -1
  72. package/dist/src/cue.js +138 -61
  73. package/dist/src/cue.js.map +1 -1
  74. package/dist/src/declare.d.ts +8 -4
  75. package/dist/src/declare.d.ts.map +1 -1
  76. package/dist/src/declare.js +28 -10
  77. package/dist/src/declare.js.map +1 -1
  78. package/dist/src/defaults.d.ts +23 -0
  79. package/dist/src/defaults.d.ts.map +1 -1
  80. package/dist/src/defaults.js +23 -0
  81. package/dist/src/defaults.js.map +1 -1
  82. package/dist/src/events.d.ts +289 -25
  83. package/dist/src/events.d.ts.map +1 -1
  84. package/dist/src/events.js +145 -13
  85. package/dist/src/events.js.map +1 -1
  86. package/dist/src/htmlRasterizer.d.ts +10 -0
  87. package/dist/src/htmlRasterizer.d.ts.map +1 -1
  88. package/dist/src/htmlRasterizer.js +12 -2
  89. package/dist/src/htmlRasterizer.js.map +1 -1
  90. package/dist/src/init.d.ts +2 -0
  91. package/dist/src/init.d.ts.map +1 -1
  92. package/dist/src/init.js +60 -28
  93. package/dist/src/init.js.map +1 -1
  94. package/dist/src/instrument.d.ts.map +1 -1
  95. package/dist/src/instrument.js +25 -7
  96. package/dist/src/instrument.js.map +1 -1
  97. package/dist/src/locales.d.ts.map +1 -1
  98. package/dist/src/locales.js +1 -0
  99. package/dist/src/locales.js.map +1 -1
  100. package/dist/src/localize.d.ts +25 -17
  101. package/dist/src/localize.d.ts.map +1 -1
  102. package/dist/src/localize.js +18 -10
  103. package/dist/src/localize.js.map +1 -1
  104. package/dist/src/localizeRuntime.d.ts +18 -13
  105. package/dist/src/localizeRuntime.d.ts.map +1 -1
  106. package/dist/src/localizeRuntime.js +28 -18
  107. package/dist/src/localizeRuntime.js.map +1 -1
  108. package/dist/src/logger.d.ts +5 -0
  109. package/dist/src/logger.d.ts.map +1 -1
  110. package/dist/src/logger.js +7 -0
  111. package/dist/src/logger.js.map +1 -1
  112. package/dist/src/narrationVisibility.d.ts +19 -0
  113. package/dist/src/narrationVisibility.d.ts.map +1 -0
  114. package/dist/src/narrationVisibility.js +26 -0
  115. package/dist/src/narrationVisibility.js.map +1 -0
  116. package/dist/src/recordingData.d.ts +7 -0
  117. package/dist/src/recordingData.d.ts.map +1 -1
  118. package/dist/src/recordingSize.d.ts +32 -0
  119. package/dist/src/recordingSize.d.ts.map +1 -0
  120. package/dist/src/recordingSize.js +54 -0
  121. package/dist/src/recordingSize.js.map +1 -0
  122. package/dist/src/redact.d.ts +68 -0
  123. package/dist/src/redact.d.ts.map +1 -0
  124. package/dist/src/redact.js +138 -0
  125. package/dist/src/redact.js.map +1 -0
  126. package/dist/src/redactController.d.ts +61 -0
  127. package/dist/src/redactController.d.ts.map +1 -0
  128. package/dist/src/redactController.js +232 -0
  129. package/dist/src/redactController.js.map +1 -0
  130. package/dist/src/runtimeContext.d.ts +32 -0
  131. package/dist/src/runtimeContext.d.ts.map +1 -1
  132. package/dist/src/runtimeContext.js +21 -0
  133. package/dist/src/runtimeContext.js.map +1 -1
  134. package/dist/src/runtimeMode.d.ts +15 -7
  135. package/dist/src/runtimeMode.d.ts.map +1 -1
  136. package/dist/src/runtimeMode.js +17 -6
  137. package/dist/src/runtimeMode.js.map +1 -1
  138. package/dist/src/screenAudio.d.ts +34 -4
  139. package/dist/src/screenAudio.d.ts.map +1 -1
  140. package/dist/src/screenAudio.js +0 -0
  141. package/dist/src/screenAudio.js.map +1 -1
  142. package/dist/src/screenAudioSink.d.ts +12 -0
  143. package/dist/src/screenAudioSink.d.ts.map +1 -1
  144. package/dist/src/screenAudioSink.js +30 -0
  145. package/dist/src/screenAudioSink.js.map +1 -1
  146. package/dist/src/screenshot.d.ts +16 -14
  147. package/dist/src/screenshot.d.ts.map +1 -1
  148. package/dist/src/screenshot.js +11 -11
  149. package/dist/src/screenshot.js.map +1 -1
  150. package/dist/src/sourceTrim.d.ts +29 -0
  151. package/dist/src/sourceTrim.d.ts.map +1 -0
  152. package/dist/src/sourceTrim.js +76 -0
  153. package/dist/src/sourceTrim.js.map +1 -0
  154. package/dist/src/studio.d.ts +71 -3
  155. package/dist/src/studio.d.ts.map +1 -1
  156. package/dist/src/studio.js +19 -1
  157. package/dist/src/studio.js.map +1 -1
  158. package/dist/src/timelineOffset.d.ts +46 -0
  159. package/dist/src/timelineOffset.d.ts.map +1 -0
  160. package/dist/src/timelineOffset.js +66 -0
  161. package/dist/src/timelineOffset.js.map +1 -0
  162. package/dist/src/titleValidation.d.ts +38 -0
  163. package/dist/src/titleValidation.d.ts.map +1 -1
  164. package/dist/src/titleValidation.js +42 -0
  165. package/dist/src/titleValidation.js.map +1 -1
  166. package/dist/src/types.d.ts +85 -0
  167. package/dist/src/types.d.ts.map +1 -1
  168. package/dist/src/types.js +1 -1
  169. package/dist/src/types.js.map +1 -1
  170. package/dist/src/video.d.ts +37 -34
  171. package/dist/src/video.d.ts.map +1 -1
  172. package/dist/src/video.js +99 -48
  173. package/dist/src/video.js.map +1 -1
  174. package/dist/src/voiceSampleAudio.d.ts +34 -0
  175. package/dist/src/voiceSampleAudio.d.ts.map +1 -0
  176. package/dist/src/voiceSampleAudio.js +105 -0
  177. package/dist/src/voiceSampleAudio.js.map +1 -0
  178. package/dist/src/voices.d.ts +2 -2
  179. package/dist/src/voices.d.ts.map +1 -1
  180. package/dist/src/voices.js +8 -3
  181. package/dist/src/voices.js.map +1 -1
  182. package/dist/tsconfig.tsbuildinfo +1 -1
  183. package/package.json +3 -2
  184. package/templates/recordings/assets/logo.png +0 -0
@@ -3,9 +3,26 @@ import { resolveLocaleForLanguage } from './locales.js';
3
3
  import { parseRequestedLanguages } from './runtimeMode.js';
4
4
  import { logger } from './logger.js';
5
5
  import { normalizeFeature, } from './declare.js';
6
+ import { STUDIO, isStudioMarker, } from './studio.js';
6
7
  function normalizeLanguagesArg(arg) {
7
- if (arg === 'studio')
8
- return { languages: 'studio' };
8
+ if (isStudioMarker(arg)) {
9
+ // `studio({ languages, mode, ... })`: the seed is a whole config the web app
10
+ // starts from and owns. `studio()` / `studio(['en', ...])`: the names are the
11
+ // seed languages (empty => pending until the web selects a set).
12
+ const cfg = arg.seed ?? {
13
+ languages: arg.names,
14
+ };
15
+ return {
16
+ languages: 'studio',
17
+ ...(cfg.languages !== undefined &&
18
+ cfg.languages.length > 0 && { studioSeed: cfg.languages }),
19
+ ...(cfg.mode !== undefined && { mode: cfg.mode }),
20
+ ...(cfg.locales !== undefined && { locales: cfg.locales }),
21
+ ...(cfg.browserLocale !== undefined && {
22
+ browserLocale: cfg.browserLocale,
23
+ }),
24
+ };
25
+ }
9
26
  if (Array.isArray(arg))
10
27
  return { languages: arg };
11
28
  return arg;
@@ -18,7 +35,7 @@ function featureLanguages(state) {
18
35
  const set = new Set();
19
36
  for (const feature of [
20
37
  state.narration,
21
- state.text,
38
+ state.values,
22
39
  state.overlays,
23
40
  state.audio,
24
41
  ]) {
@@ -29,12 +46,15 @@ function featureLanguages(state) {
29
46
  }
30
47
  /**
31
48
  * Resolve the recorded language set at registration time. Priority:
32
- * 1. `video.languages('studio')` -> the web-owned set, injected via the
33
- * `--languages` channel (`requestedLanguages`); empty => pending.
49
+ * 1. `video.languages(studio())` -> web-owned: the UNION of the web's current
50
+ * selection (`requestedLanguages`, injected at record time), the `studioSeed`
51
+ * (`studio(['en', ...])`), and the per-feature language keys defined in code.
52
+ * Empty (none anywhere) => pending.
34
53
  * 2. explicit `video.languages([...])`.
35
54
  * 3. union of per-feature language keys (e.g. `narration({ fr })` -> French).
36
55
  * 4. default `['en']`.
37
- * The `requestedLanguages` filter (CLI / studio injection) intersects 2-4.
56
+ * The `requestedLanguages` filter (CLI / studio injection) intersects 2-4; for the
57
+ * web-owned set (1) it is unioned in instead, since the web only adds languages.
38
58
  */
39
59
  export function resolveRecordingLocalize(state, requestedLanguages) {
40
60
  const rl = state.recordingLocalize;
@@ -42,9 +62,24 @@ export function resolveRecordingLocalize(state, requestedLanguages) {
42
62
  const browserLocale = rl?.browserLocale ?? true;
43
63
  const localesPatch = rl?.locales !== undefined ? { locales: rl.locales } : {};
44
64
  if (rl?.languages === 'studio') {
45
- const languages = requestedLanguages ?? [];
65
+ // The web app owns the set, but the recorded languages are the union of:
66
+ // the web's current selection (`requestedLanguages`, fetched/injected at
67
+ // record time), the code seed (`studio(['en', ...])`), and the per-feature
68
+ // languages defined in code (e.g. `narration({ en, fi })`). So a studio-owned
69
+ // video still records every language its code defines, plus whatever the web
70
+ // added, even on the first run before anything is configured in the web.
71
+ const languages = [
72
+ ...new Set([
73
+ ...(requestedLanguages ?? []),
74
+ ...(rl.studioSeed ?? []),
75
+ ...featureLanguages(state),
76
+ ]),
77
+ ];
46
78
  return {
47
79
  languages,
80
+ // Studio-owned sets render every language they record, so the available
81
+ // set is the recorded set (the union above).
82
+ availableLanguages: languages,
48
83
  mode,
49
84
  browserLocale,
50
85
  ...localesPatch,
@@ -75,6 +110,10 @@ export function resolveRecordingLocalize(state, requestedLanguages) {
75
110
  : declared.filter((lang) => requestedLanguages.includes(lang));
76
111
  return {
77
112
  languages,
113
+ // The full declared set, regardless of the `--languages` render filter. The
114
+ // app reads this so a code-defined language that simply was not rendered this
115
+ // run is not mistaken for one removed from code.
116
+ availableLanguages: declared,
78
117
  mode,
79
118
  browserLocale,
80
119
  ...localesPatch,
@@ -93,7 +132,7 @@ function warnUnusedLanguages(state, resolved) {
93
132
  const langList = resolved.languages.join(', ') || '(none)';
94
133
  const features = [
95
134
  ['Narration', state.narration],
96
- ['Text', state.text],
135
+ ['Values', state.values],
97
136
  ['Overlay', state.overlays],
98
137
  ['Audio', state.audio],
99
138
  ];
@@ -146,7 +185,7 @@ export function expandRegistrations(params) {
146
185
  recordOptions,
147
186
  use,
148
187
  narration: state.narration,
149
- text: state.text,
188
+ values: state.values,
150
189
  overlays: state.overlays,
151
190
  audio: state.audio,
152
191
  recordingLocalize: resolved,
@@ -158,12 +197,19 @@ export function expandRegistrations(params) {
158
197
  resolved.languages.length <= 1;
159
198
  if (singlePass) {
160
199
  // A single explicitly-declared language is tagged `[lang]`; the implicit
161
- // `['en']` default (a plain video) stays language-agnostic.
200
+ // `['en']` default (a plain video) stays language-agnostic (no `[en]` tag).
162
201
  const onlyLang = resolved.explicit &&
163
202
  resolved.mode === 'per-language' &&
164
203
  resolved.languages.length === 1
165
204
  ? resolved.languages[0]
166
205
  : null;
206
+ // Locale: an explicitly tagged single language uses its locale; the implicit
207
+ // default records one round pinned to en-US (the `['en']` default) while
208
+ // staying language-agnostic. Shared / pending passes leave the locale unset.
209
+ const localeLang = onlyLang ??
210
+ (!resolved.explicit && resolved.languages.length === 1
211
+ ? resolved.languages[0]
212
+ : null);
167
213
  const describeTitle = onlyLang
168
214
  ? `${variantLabel}${onlyLang}`.trim()
169
215
  : resolved.mode === 'shared' || resolved.pending
@@ -174,8 +220,8 @@ export function expandRegistrations(params) {
174
220
  describeTitle,
175
221
  leafTitle: onlyLang ? `${videoName} [${onlyLang}]` : videoName,
176
222
  language: onlyLang,
177
- locale: onlyLang && resolved.browserLocale
178
- ? resolveLocaleForLanguage(onlyLang, resolved.locales)
223
+ locale: localeLang && resolved.browserLocale
224
+ ? resolveLocaleForLanguage(localeLang, resolved.locales)
179
225
  : null,
180
226
  });
181
227
  continue;
@@ -198,7 +244,7 @@ export function expandRegistrations(params) {
198
244
  const SCREENCI_LANGUAGE_OPTION = '_screenciLanguage';
199
245
  const SCREENCI_VIDEO_NAME_OPTION = '_screenciVideoName';
200
246
  const SCREENCI_NARRATION_OPTION = '_screenciNarration';
201
- const SCREENCI_TEXT_OPTION = '_screenciText';
247
+ const SCREENCI_VALUES_OPTION = '_screenciValues';
202
248
  const SCREENCI_OVERLAYS_OPTION = '_screenciOverlays';
203
249
  const SCREENCI_AUDIO_OPTION = '_screenciAudio';
204
250
  const SCREENCI_RECORDING_LOCALIZE_OPTION = '_screenciRecordingLocalize';
@@ -248,7 +294,7 @@ function registerOne(test, reg, details, body, modifier, sourceFile) {
248
294
  [SCREENCI_LANGUAGE_OPTION]: reg.language ?? undefined,
249
295
  [SCREENCI_VIDEO_NAME_OPTION]: reg.videoName,
250
296
  [SCREENCI_NARRATION_OPTION]: reg.narration ?? undefined,
251
- [SCREENCI_TEXT_OPTION]: reg.text ?? undefined,
297
+ [SCREENCI_VALUES_OPTION]: reg.values ?? undefined,
252
298
  [SCREENCI_OVERLAYS_OPTION]: reg.overlays ?? undefined,
253
299
  [SCREENCI_AUDIO_OPTION]: reg.audio ?? undefined,
254
300
  [SCREENCI_RECORDING_LOCALIZE_OPTION]: reg.recordingLocalize,
@@ -280,7 +326,7 @@ function normalizeVariants(variants) {
280
326
  }
281
327
  const EMPTY_STATE = (features) => ({
282
328
  narration: null,
283
- text: null,
329
+ values: null,
284
330
  overlays: null,
285
331
  audio: null,
286
332
  recordingLocalize: null,
@@ -290,13 +336,13 @@ const EMPTY_STATE = (features) => ({
290
336
  /** The full set of feature fixtures for videos. */
291
337
  export const VIDEO_FEATURES = new Set([
292
338
  'narration',
293
- 'text',
339
+ 'values',
294
340
  'overlays',
295
341
  'audio',
296
342
  ]);
297
- /** Stills are silent: only text + overlays. */
343
+ /** Stills are silent: only values + overlays. */
298
344
  export const SCREENSHOT_FEATURES = new Set([
299
- 'text',
345
+ 'values',
300
346
  'overlays',
301
347
  ]);
302
348
  /**
@@ -329,7 +375,7 @@ export function createVideoBuilder(test, features = VIDEO_FEATURES, state = EMPT
329
375
  }
330
376
  const withFeature = (key, arg) => {
331
377
  if (!features.has(key)) {
332
- throw new Error(`[screenci] ${key}() is not available for this medium (a screenshot is silent: only text and overlays apply).`);
378
+ throw new Error(`[screenci] ${key}() is not available for this medium (a screenshot is silent: only values and overlays apply).`);
333
379
  }
334
380
  return createVideoBuilder(test, features, {
335
381
  ...state,
@@ -337,7 +383,7 @@ export function createVideoBuilder(test, features = VIDEO_FEATURES, state = EMPT
337
383
  });
338
384
  };
339
385
  callable.narration = ((arg) => withFeature('narration', arg));
340
- callable.text = ((arg) => withFeature('text', arg));
386
+ callable.values = ((arg) => withFeature('values', arg));
341
387
  callable.overlays = ((arg) => withFeature('overlays', arg));
342
388
  callable.audio = ((arg) => withFeature('audio', arg));
343
389
  callable.languages = ((arg) => createVideoBuilder(test, features, {
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/builder.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"changeFocus.d.ts","sourceRoot":"","sources":["../../src/changeFocus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAMhE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAoBzD,KAAK,cAAc,GAAG;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAoBD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,kBAAkB,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAA;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,KAAK,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AACrD,KAAK,KAAK,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAIrC,KAAK,aAAa,GAAG;IACnB,WAAW,EAAE,WAAW,CAAA;IACxB,eAAe,EAAE,OAAO,CAAA;IACxB,YAAY,EAAE,YAAY,CAAA;IAC1B,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;QACf,YAAY,EAAE,MAAM,CAAA;QACpB,WAAW,EAAE,MAAM,CAAA;KACpB,CAAA;IACD,SAAS,EAAE,KAAK,CAAC;QACf,YAAY,EAAE,MAAM,CAAA;QACpB,WAAW,EAAE,MAAM,CAAA;QACnB,YAAY,EAAE,MAAM,CAAA;QACpB,WAAW,EAAE,MAAM,CAAA;QACnB,SAAS,EAAE,MAAM,CAAA;QACjB,UAAU,EAAE,MAAM,CAAA;QAClB,IAAI,EAAE,cAAc,CAAA;KACrB,CAAC,CAAA;CACH,CAAA;AAED,KAAK,UAAU,GAAG;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,KAAK,cAAc,GAAG;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,KAAK,SAAS,GAAG;IACf,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,KAAK,gBAAgB,GAAG;IACtB,gBAAgB,EAAE,WAAW,CAAA;IAC7B,mBAAmB,EAAE,UAAU,EAAE,CAAA;IACjC,cAAc,EAAE,cAAc,CAAA;IAC9B,YAAY,EAAE,OAAO,CAAA;IACrB,UAAU,EAAE,OAAO,CAAA;IACnB,eAAe,EAAE,KAAK,CAAA;IACtB,aAAa,EAAE,KAAK,CAAA;IACpB,cAAc,EAAE,YAAY,CAAA;IAC5B,gCAAgC,EAAE,KAAK,CAAA;CACxC,CAAA;AAED,KAAK,uBAAuB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAqCD,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,MAAM,GACb,YAAY,CAKd;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE;IAClD,QAAQ,EAAE,YAAY,CAAA;IACtB,IAAI,EAAE,WAAW,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB,GAAG,YAAY,CAgBf;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE;IACrD,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,MAAM,CAST;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,WAAW,EACjB,aAAa,EAAE,YAAY,EAC3B,SAAS,EAAE,MAAM,GAChB,KAAK,CAeP;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,KAAK,CAKvE;AAyDD,wBAAgB,8BAA8B,CAAC,MAAM,EAAE;IACrD,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,KAAK,CAAA;IACb,gBAAgB,EAAE,KAAK,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,0BAA0B,EAAE,MAAM,CAAA;IAClC,wBAAwB,EAAE,MAAM,CAAA;CACjC,GAAG,uBAAuB,CA2D1B;AAqBD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,aAAa,EAAE,YAAY,CAAA;IAC3B,IAAI,EAAE,WAAW,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,KAAK,CAUR;AAED,wBAAgB,oCAAoC,CAAC,MAAM,EAAE;IAC3D,aAAa,EAAE,YAAY,CAAA;IAC3B,IAAI,EAAE,WAAW,CAAA;IACjB,aAAa,EAAE,YAAY,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,KAAK,CAiBR;AAyUD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAC/C,QAAQ,EAAE,aAAa,CAAA;IACvB,mBAAmB,EAAE,SAAS,CAAA;IAC9B,mBAAmB,EAAE,SAAS,CAAA;CAC/B,GAAG;IACF,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,gBAAgB,EAAE,KAAK,CAAA;IACvB,aAAa,EAAE,WAAW,CAAA;CAC3B,CAsEA;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,aAAa,EACvB,kBAAkB,EAAE;IAAE,gBAAgB,EAAE,KAAK,CAAC;IAAC,aAAa,EAAE,WAAW,CAAA;CAAE,EAC3E,OAAO,EAAE;IACP,4BAA4B,EAAE,KAAK,CAAA;IACnC,YAAY,CAAC,EAAE;QACb,CAAC,EAAE,MAAM,CAAA;QACT,CAAC,EAAE,MAAM,CAAA;KACV,CAAA;CACF,GACA;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,gBAAgB,EAAE,WAAW,CAAA;CAAE,CA4CzD;AAoGD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACvC,QAAQ,EAAE,aAAa,CAAA;IACvB,cAAc,EAAE,YAAY,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;CAC7D,GAAG,gBAAgB,CAqGnB;AAuRD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,eAAoB,EAC7B,SAAS,CAAC,EAAE,gBAAgB,EAC5B,mBAAmB,UAAQ,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CA0P3B"}
1
+ {"version":3,"file":"changeFocus.d.ts","sourceRoot":"","sources":["../../src/changeFocus.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { evaluateEasingAtT } from './easing.js';
2
- import { DEFAULT_CLICK_MOUSE_MOVE_DURATION, DEFAULT_ZOOM_OPTIONS, } from './defaults.js';
2
+ import { DEFAULT_AUTO_ZOOM_CENTERING, DEFAULT_CLICK_MOUSE_MOVE_DURATION, DEFAULT_SCROLL_CENTERING, } from './defaults.js';
3
3
  import { getMousePosition, getScrollDispatchIntervalMs, performMouseMove, resolveMouseMoveDuration, } from './mouse.js';
4
4
  import { getAutoZoomState, setCurrentZoomViewport } from './autoZoom.js';
5
5
  import { logger } from './logger.js';
@@ -159,6 +159,44 @@ function resolveTargetRectStartForAxis(params) {
159
159
  }
160
160
  return focusWindowStart + focusSize / 2 - rectSize / 2;
161
161
  }
162
+ function resolveTargetRectBandForAxis(params) {
163
+ const { containerSize, rectSize, focusSize, centering } = params;
164
+ const focusWindowStart = Math.max(0, (containerSize - focusSize) / 2);
165
+ if (rectSize >= focusSize) {
166
+ // Target taller/wider than the focus window: fall back to the centered
167
+ // placement (a degenerate band whose min and max both center the rect).
168
+ const centered = focusWindowStart + focusSize / 2 - rectSize / 2;
169
+ return { min: centered, max: centered };
170
+ }
171
+ const slack = focusSize - rectSize;
172
+ // Treat `centering` as a symmetric comfort-band inset. The band's top edge
173
+ // lines up with the fixed-target placement (`resolveTargetRectStartForAxis`),
174
+ // and the bottom edge extends the acceptable landing zone toward the far edge
175
+ // the target enters from, so the eventual clamp is a direction-aware minimal
176
+ // reveal. `centering = 0` accepts the whole slack (pure minimal reveal);
177
+ // `centering = 1` collapses the band to the centered position.
178
+ return {
179
+ min: focusWindowStart + (slack * centering) / 2,
180
+ max: focusWindowStart + slack * (1 - centering / 2),
181
+ };
182
+ }
183
+ function resolveTargetRectBandForViewport(params) {
184
+ const { containerSize, rect, focusViewport, centering } = params;
185
+ return {
186
+ x: resolveTargetRectBandForAxis({
187
+ containerSize: containerSize.width,
188
+ rectSize: rect.width,
189
+ focusSize: focusViewport.width,
190
+ centering,
191
+ }),
192
+ y: resolveTargetRectBandForAxis({
193
+ containerSize: containerSize.height,
194
+ rectSize: rect.height,
195
+ focusSize: focusViewport.height,
196
+ centering,
197
+ }),
198
+ };
199
+ }
162
200
  export function resolveTargetRectPosition(params) {
163
201
  return resolveTargetRectPositionForViewport({
164
202
  containerSize: params.containerSize,
@@ -311,14 +349,18 @@ function projectRectFromAncestorPlans(snapshot, plans) {
311
349
  }), { x: 0, y: 0 });
312
350
  return shiftRect(snapshot.locatorRect, -accumulatedDelta.x, -accumulatedDelta.y);
313
351
  }
314
- function resolveProjectedRectAcceptableRangeForAxis(params) {
315
- const { pageScrollStart, pageScrollMax, viewportSize, targetViewportSize, targetRectStartInViewport, } = params;
316
- const maxZoomOrigin = Math.max(0, viewportSize - targetViewportSize);
352
+ function resolveAcceptableRangeForAxis(params) {
353
+ // Acceptable projected-rect positions are those that page scroll AND zoom
354
+ // framing can bring INTO the comfort band. Below the band scrolls up toward
355
+ // `bandMax`, above it scrolls down toward `bandMin`, and anything already
356
+ // reachable inside stays put. The zoom viewport can additionally shift framing
357
+ // by up to `maxZoomOrigin`, widening the range on both ends for a zoom.
358
+ const maxZoomOrigin = Math.max(0, params.viewportSize - params.targetViewportSize);
317
359
  return {
318
- min: targetRectStartInViewport - pageScrollStart,
319
- max: targetRectStartInViewport +
360
+ min: params.band.min - params.pageScrollStart - maxZoomOrigin,
361
+ max: params.band.max +
320
362
  maxZoomOrigin +
321
- (pageScrollMax - pageScrollStart),
363
+ (params.pageScrollMax - params.pageScrollStart),
322
364
  };
323
365
  }
324
366
  function refineAncestorPlansForProjectedRectRange(params) {
@@ -530,8 +572,15 @@ function resolvePagePlan(params) {
530
572
  };
531
573
  }
532
574
  export function combineFocusPlan(params) {
533
- // Resolve the desired zoom viewport and where the visible locator rect should sit inside it.
534
- const initialTargetRectPositionInViewport = resolveTargetRectPositionForViewport({
575
+ // Unified placement: treat `centering` as a symmetric comfort-band inset and
576
+ // move the target the MINIMUM needed to bring it into that band. The band is
577
+ // computed against the focus window (`targetViewport`): the full viewport for
578
+ // a plain no-zoom scroll, or the zoom viewport for a zoom (where the slack is
579
+ // small, so the band is naturally tight). Targets entering from below rest
580
+ // near the bottom, from above near the top, already-comfortable ones do not
581
+ // move, and `centering === 1` (or an oversized target) collapses the band to
582
+ // dead center.
583
+ const band = resolveTargetRectBandForViewport({
535
584
  containerSize: params.snapshot.viewportSize,
536
585
  rect: params.snapshot.locatorRect,
537
586
  focusViewport: params.targetViewport,
@@ -541,34 +590,41 @@ export function combineFocusPlan(params) {
541
590
  // plus only the extra needed when page scroll and zoom would otherwise be unable to frame it.
542
591
  const ancestorResult = buildAncestorScrollPlans({
543
592
  snapshot: params.snapshot,
544
- projectedRectRangeX: resolveProjectedRectAcceptableRangeForAxis({
593
+ projectedRectRangeX: resolveAcceptableRangeForAxis({
545
594
  pageScrollStart: params.snapshot.page.scrollX,
546
595
  pageScrollMax: Math.max(0, params.snapshot.page.scrollWidth - params.snapshot.viewportSize.width),
547
596
  viewportSize: params.snapshot.viewportSize.width,
548
597
  targetViewportSize: params.targetViewport.width,
549
- targetRectStartInViewport: initialTargetRectPositionInViewport.x,
598
+ band: band.x,
550
599
  }),
551
- projectedRectRangeY: resolveProjectedRectAcceptableRangeForAxis({
600
+ projectedRectRangeY: resolveAcceptableRangeForAxis({
552
601
  pageScrollStart: params.snapshot.page.scrollY,
553
602
  pageScrollMax: Math.max(0, params.snapshot.page.scrollHeight - params.snapshot.viewportSize.height),
554
603
  viewportSize: params.snapshot.viewportSize.height,
555
604
  targetViewportSize: params.targetViewport.height,
556
- targetRectStartInViewport: initialTargetRectPositionInViewport.y,
605
+ band: band.y,
557
606
  }),
558
607
  });
559
- const targetRectPositionInViewport = resolveTargetRectPositionForViewport({
560
- containerSize: params.snapshot.viewportSize,
561
- rect: ancestorResult.projectedRect,
562
- focusViewport: params.targetViewport,
563
- centering: params.centering,
564
- });
608
+ // Land the projected rect at the clamp of its CURRENT position into the band,
609
+ // so page scroll (and zoom framing) is a minimal direction-aware reveal.
610
+ const targetRectPositionInViewport = {
611
+ x: clampToRange(ancestorResult.projectedRect.x, band.x),
612
+ y: clampToRange(ancestorResult.projectedRect.y, band.y),
613
+ };
565
614
  // Resolve where the locator rect should sit inside the zoom viewport itself.
566
- const targetRectPositionInZoomViewport = resolveTargetRectPositionForViewport({
567
- containerSize: params.targetViewport,
568
- rect: ancestorResult.projectedRect,
569
- focusViewport: params.targetViewport,
570
- centering: params.centering,
571
- });
615
+ // The zoom viewport is the focus window, centered inside the full viewport at
616
+ // `focusWindowStart`, so the zoom-local band position is the viewport-space
617
+ // band position minus that offset. When there is no zoom the offset is 0 and
618
+ // this coincides with the viewport-space band; when zooming, the smaller zoom
619
+ // window makes the band tight (centering 1 stays exactly centered).
620
+ const focusWindowStart = {
621
+ x: Math.max(0, (params.snapshot.viewportSize.width - params.targetViewport.width) / 2),
622
+ y: Math.max(0, (params.snapshot.viewportSize.height - params.targetViewport.height) / 2),
623
+ };
624
+ const targetRectPositionInZoomViewport = {
625
+ x: targetRectPositionInViewport.x - focusWindowStart.x,
626
+ y: targetRectPositionInViewport.y - focusWindowStart.y,
627
+ };
572
628
  // Use page scroll only for the framing residual that zoom cannot absorb.
573
629
  const resolvedPageResult = resolvePagePlan({
574
630
  snapshot: params.snapshot,
@@ -763,8 +819,21 @@ function resolveMouseMovePlan(params) {
763
819
  function resolveFocusOptions(params) {
764
820
  const resolvedAutoZoomOptions = resolveAutoZoomOptions(params.state, params.options);
765
821
  const currentZoomViewport = params.state.currentZoomViewport;
822
+ // Placement is a single unified model: every focus operation resolves the
823
+ // target into a direction-aware comfort band (see combineFocusPlan). Only the
824
+ // centering VALUE fed to the band varies by operation:
825
+ // - autoZoom framing: DEFAULT_AUTO_ZOOM_CENTERING (0.6), a tight band.
826
+ // - zoomTo / standalone or active manual zoom: 1 (center).
827
+ // - plain no-zoom interaction: the configured scroll-centering (0.2).
828
+ // An explicit per-call (or per-autoZoom) `centering` always overrides the
829
+ // default and is itself run through the band.
830
+ const hasExplicitCentering = params.options.centering !== undefined ||
831
+ params.state.options.centering !== undefined;
832
+ const autoZoomCentering = hasExplicitCentering
833
+ ? resolvedAutoZoomOptions.centering
834
+ : DEFAULT_AUTO_ZOOM_CENTERING;
766
835
  const focusOptions = params.state.insideAutoZoom
767
- ? resolvedAutoZoomOptions
836
+ ? { ...resolvedAutoZoomOptions, centering: autoZoomCentering }
768
837
  : params.state.mode === 'manual' &&
769
838
  currentZoomViewport !== null &&
770
839
  !params.allowStandaloneZoom
@@ -777,7 +846,14 @@ function resolveFocusOptions(params) {
777
846
  : {
778
847
  ...resolvedAutoZoomOptions,
779
848
  amount: 1,
780
- centering: DEFAULT_ZOOM_OPTIONS.centering,
849
+ // Not a zoom: just scroll the target into view. Honor an explicitly
850
+ // requested centering so the caller can place the target; otherwise
851
+ // use the gentle configured scroll-centering (default
852
+ // DEFAULT_SCROLL_CENTERING) as the direction-aware comfort-band inset
853
+ // so an already-visible element is not yanked around on every click.
854
+ centering: params.options.centering ??
855
+ params.state.scrollCentering ??
856
+ DEFAULT_SCROLL_CENTERING,
781
857
  };
782
858
  const currentZoomEnd = currentZoomViewport?.end ?? {
783
859
  pointPx: { x: 0, y: 0 },
@@ -786,13 +862,6 @@ function resolveFocusOptions(params) {
786
862
  heightPx: params.viewportSize.height,
787
863
  },
788
864
  };
789
- if (currentZoomViewport !== undefined &&
790
- currentZoomEnd.pointPx.x === 0 &&
791
- currentZoomEnd.pointPx.y === 0 &&
792
- currentZoomEnd.size.widthPx === params.viewportSize.width &&
793
- currentZoomEnd.size.heightPx === params.viewportSize.height) {
794
- focusOptions.centering = 1;
795
- }
796
865
  return {
797
866
  focusOptions,
798
867
  currentZoomEnd,