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.
- package/dist/cli.d.ts +58 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +584 -200
- package/dist/cli.js.map +1 -1
- package/dist/docs/manifest.d.ts +253 -98
- package/dist/docs/manifest.d.ts.map +1 -1
- package/dist/docs/manifest.js +92 -32
- package/dist/docs/manifest.js.map +1 -1
- package/dist/docs/video-sources/camera-and-zooming.screenci.d.ts +2 -0
- package/dist/docs/video-sources/camera-and-zooming.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/camera-and-zooming.screenci.js +57 -0
- package/dist/docs/video-sources/camera-and-zooming.screenci.js.map +1 -0
- package/dist/docs/video-sources/installation.screenci.js +9 -6
- package/dist/docs/video-sources/installation.screenci.js.map +1 -1
- package/dist/docs/video-sources/languages.screenci.d.ts +2 -0
- package/dist/docs/video-sources/languages.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/languages.screenci.js +68 -0
- package/dist/docs/video-sources/languages.screenci.js.map +1 -0
- package/dist/docs/video-sources/locator-highlight-animated.screenci.js +1 -1
- package/dist/docs/video-sources/locator-highlight-animated.screenci.js.map +1 -1
- package/dist/docs/video-sources/narration.screenci.d.ts +2 -0
- package/dist/docs/video-sources/narration.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/narration.screenci.js +71 -0
- package/dist/docs/video-sources/narration.screenci.js.map +1 -0
- package/dist/docs/video-sources/public-urls-and-embeds.screenci.d.ts +2 -0
- package/dist/docs/video-sources/public-urls-and-embeds.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/public-urls-and-embeds.screenci.js +60 -0
- package/dist/docs/video-sources/public-urls-and-embeds.screenci.js.map +1 -0
- package/dist/docs/video-sources/speaking-style.screenci.d.ts +2 -0
- package/dist/docs/video-sources/speaking-style.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/speaking-style.screenci.js +76 -0
- package/dist/docs/video-sources/speaking-style.screenci.js.map +1 -0
- package/dist/docs/video-sources/vertical-video.screenci.d.ts +2 -0
- package/dist/docs/video-sources/vertical-video.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/vertical-video.screenci.js +58 -0
- package/dist/docs/video-sources/vertical-video.screenci.js.map +1 -0
- package/dist/docs/videos.d.ts +20 -0
- package/dist/docs/videos.d.ts.map +1 -1
- package/dist/docs/videos.js +25 -0
- package/dist/docs/videos.js.map +1 -1
- package/dist/e2e/instrument.e2e.js +8 -0
- package/dist/e2e/instrument.e2e.js.map +1 -1
- package/dist/e2e/redact.e2e.d.ts +2 -0
- package/dist/e2e/redact.e2e.d.ts.map +1 -0
- package/dist/e2e/redact.e2e.js +161 -0
- package/dist/e2e/redact.e2e.js.map +1 -0
- package/dist/index.d.ts +10 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/src/asset.d.ts +154 -13
- package/dist/src/asset.d.ts.map +1 -1
- package/dist/src/asset.js +262 -32
- package/dist/src/asset.js.map +1 -1
- package/dist/src/assetHash.d.ts +27 -0
- package/dist/src/assetHash.d.ts.map +1 -0
- package/dist/src/assetHash.js +0 -0
- package/dist/src/assetHash.js.map +1 -0
- package/dist/src/audio.d.ts +8 -5
- package/dist/src/audio.d.ts.map +1 -1
- package/dist/src/audio.js +56 -31
- package/dist/src/audio.js.map +1 -1
- package/dist/src/builder.d.ts +132 -32
- package/dist/src/builder.d.ts.map +1 -1
- package/dist/src/builder.js +66 -20
- package/dist/src/builder.js.map +1 -1
- package/dist/src/changeFocus.d.ts.map +1 -1
- package/dist/src/changeFocus.js +103 -34
- package/dist/src/changeFocus.js.map +1 -1
- package/dist/src/cue.d.ts +29 -17
- package/dist/src/cue.d.ts.map +1 -1
- package/dist/src/cue.js +138 -61
- package/dist/src/cue.js.map +1 -1
- package/dist/src/declare.d.ts +8 -4
- package/dist/src/declare.d.ts.map +1 -1
- package/dist/src/declare.js +28 -10
- package/dist/src/declare.js.map +1 -1
- package/dist/src/defaults.d.ts +23 -0
- package/dist/src/defaults.d.ts.map +1 -1
- package/dist/src/defaults.js +23 -0
- package/dist/src/defaults.js.map +1 -1
- package/dist/src/events.d.ts +289 -25
- package/dist/src/events.d.ts.map +1 -1
- package/dist/src/events.js +145 -13
- package/dist/src/events.js.map +1 -1
- package/dist/src/htmlRasterizer.d.ts +10 -0
- package/dist/src/htmlRasterizer.d.ts.map +1 -1
- package/dist/src/htmlRasterizer.js +12 -2
- package/dist/src/htmlRasterizer.js.map +1 -1
- package/dist/src/init.d.ts +2 -0
- package/dist/src/init.d.ts.map +1 -1
- package/dist/src/init.js +60 -28
- package/dist/src/init.js.map +1 -1
- package/dist/src/instrument.d.ts.map +1 -1
- package/dist/src/instrument.js +25 -7
- package/dist/src/instrument.js.map +1 -1
- package/dist/src/locales.d.ts.map +1 -1
- package/dist/src/locales.js +1 -0
- package/dist/src/locales.js.map +1 -1
- package/dist/src/localize.d.ts +25 -17
- package/dist/src/localize.d.ts.map +1 -1
- package/dist/src/localize.js +18 -10
- package/dist/src/localize.js.map +1 -1
- package/dist/src/localizeRuntime.d.ts +18 -13
- package/dist/src/localizeRuntime.d.ts.map +1 -1
- package/dist/src/localizeRuntime.js +28 -18
- package/dist/src/localizeRuntime.js.map +1 -1
- package/dist/src/logger.d.ts +5 -0
- package/dist/src/logger.d.ts.map +1 -1
- package/dist/src/logger.js +7 -0
- package/dist/src/logger.js.map +1 -1
- package/dist/src/narrationVisibility.d.ts +19 -0
- package/dist/src/narrationVisibility.d.ts.map +1 -0
- package/dist/src/narrationVisibility.js +26 -0
- package/dist/src/narrationVisibility.js.map +1 -0
- package/dist/src/recordingData.d.ts +7 -0
- package/dist/src/recordingData.d.ts.map +1 -1
- package/dist/src/recordingSize.d.ts +32 -0
- package/dist/src/recordingSize.d.ts.map +1 -0
- package/dist/src/recordingSize.js +54 -0
- package/dist/src/recordingSize.js.map +1 -0
- package/dist/src/redact.d.ts +68 -0
- package/dist/src/redact.d.ts.map +1 -0
- package/dist/src/redact.js +138 -0
- package/dist/src/redact.js.map +1 -0
- package/dist/src/redactController.d.ts +61 -0
- package/dist/src/redactController.d.ts.map +1 -0
- package/dist/src/redactController.js +232 -0
- package/dist/src/redactController.js.map +1 -0
- package/dist/src/runtimeContext.d.ts +32 -0
- package/dist/src/runtimeContext.d.ts.map +1 -1
- package/dist/src/runtimeContext.js +21 -0
- package/dist/src/runtimeContext.js.map +1 -1
- package/dist/src/runtimeMode.d.ts +15 -7
- package/dist/src/runtimeMode.d.ts.map +1 -1
- package/dist/src/runtimeMode.js +17 -6
- package/dist/src/runtimeMode.js.map +1 -1
- package/dist/src/screenAudio.d.ts +34 -4
- package/dist/src/screenAudio.d.ts.map +1 -1
- package/dist/src/screenAudio.js +0 -0
- package/dist/src/screenAudio.js.map +1 -1
- package/dist/src/screenAudioSink.d.ts +12 -0
- package/dist/src/screenAudioSink.d.ts.map +1 -1
- package/dist/src/screenAudioSink.js +30 -0
- package/dist/src/screenAudioSink.js.map +1 -1
- package/dist/src/screenshot.d.ts +16 -14
- package/dist/src/screenshot.d.ts.map +1 -1
- package/dist/src/screenshot.js +11 -11
- package/dist/src/screenshot.js.map +1 -1
- package/dist/src/sourceTrim.d.ts +29 -0
- package/dist/src/sourceTrim.d.ts.map +1 -0
- package/dist/src/sourceTrim.js +76 -0
- package/dist/src/sourceTrim.js.map +1 -0
- package/dist/src/studio.d.ts +71 -3
- package/dist/src/studio.d.ts.map +1 -1
- package/dist/src/studio.js +19 -1
- package/dist/src/studio.js.map +1 -1
- package/dist/src/timelineOffset.d.ts +46 -0
- package/dist/src/timelineOffset.d.ts.map +1 -0
- package/dist/src/timelineOffset.js +66 -0
- package/dist/src/timelineOffset.js.map +1 -0
- package/dist/src/titleValidation.d.ts +38 -0
- package/dist/src/titleValidation.d.ts.map +1 -1
- package/dist/src/titleValidation.js +42 -0
- package/dist/src/titleValidation.js.map +1 -1
- package/dist/src/types.d.ts +85 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/video.d.ts +37 -34
- package/dist/src/video.d.ts.map +1 -1
- package/dist/src/video.js +99 -48
- package/dist/src/video.js.map +1 -1
- package/dist/src/voiceSampleAudio.d.ts +34 -0
- package/dist/src/voiceSampleAudio.d.ts.map +1 -0
- package/dist/src/voiceSampleAudio.js +105 -0
- package/dist/src/voiceSampleAudio.js.map +1 -0
- package/dist/src/voices.d.ts +2 -2
- package/dist/src/voices.d.ts.map +1 -1
- package/dist/src/voices.js +8 -3
- package/dist/src/voices.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -2
- package/templates/recordings/assets/logo.png +0 -0
package/dist/src/builder.js
CHANGED
|
@@ -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
|
|
8
|
-
|
|
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.
|
|
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(
|
|
33
|
-
*
|
|
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
|
-
|
|
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
|
-
['
|
|
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
|
-
|
|
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:
|
|
178
|
-
? resolveLocaleForLanguage(
|
|
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
|
|
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
|
-
[
|
|
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
|
-
|
|
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
|
-
'
|
|
339
|
+
'values',
|
|
294
340
|
'overlays',
|
|
295
341
|
'audio',
|
|
296
342
|
]);
|
|
297
|
-
/** Stills are silent: only
|
|
343
|
+
/** Stills are silent: only values + overlays. */
|
|
298
344
|
export const SCREENSHOT_FEATURES = new Set([
|
|
299
|
-
'
|
|
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
|
|
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.
|
|
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, {
|
package/dist/src/builder.js.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"changeFocus.d.ts","sourceRoot":"","sources":["../../src/changeFocus.ts"],"names":[],"mappings":"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"}
|
package/dist/src/changeFocus.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { evaluateEasingAtT } from './easing.js';
|
|
2
|
-
import { DEFAULT_CLICK_MOUSE_MOVE_DURATION,
|
|
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
|
|
315
|
-
|
|
316
|
-
|
|
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:
|
|
319
|
-
max:
|
|
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
|
-
//
|
|
534
|
-
|
|
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:
|
|
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
|
-
|
|
598
|
+
band: band.x,
|
|
550
599
|
}),
|
|
551
|
-
projectedRectRangeY:
|
|
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
|
-
|
|
605
|
+
band: band.y,
|
|
557
606
|
}),
|
|
558
607
|
});
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
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
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
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
|
-
|
|
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,
|