clipwise 0.6.0 → 0.7.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.ko.md +31 -31
- package/README.md +72 -38
- package/dist/cli/index.js +480 -106
- package/dist/compose/frame-worker.js +85 -76
- package/dist/index.d.ts +477 -34
- package/dist/index.js +582 -129
- package/package.json +1 -1
- package/skills/clipwise.md +51 -13
package/dist/index.d.ts
CHANGED
|
@@ -169,6 +169,28 @@ declare const StepActionSchema: z.ZodDiscriminatedUnion<"action", [z.ZodObject<{
|
|
|
169
169
|
url: string;
|
|
170
170
|
status?: number | undefined;
|
|
171
171
|
timeout?: number | undefined;
|
|
172
|
+
}>, z.ZodObject<{
|
|
173
|
+
action: z.ZodLiteral<"smartWait">;
|
|
174
|
+
/** Condition to wait for */
|
|
175
|
+
until: z.ZodDefault<z.ZodEnum<["networkIdle", "selector", "domStable"]>>;
|
|
176
|
+
/** CSS selector (required when until="selector") */
|
|
177
|
+
selector: z.ZodOptional<z.ZodString>;
|
|
178
|
+
/** Maximum wait in ms */
|
|
179
|
+
timeout: z.ZodDefault<z.ZodNumber>;
|
|
180
|
+
/** Speed multiplier for the wait period in the output video (default: 8×) */
|
|
181
|
+
displaySpeed: z.ZodDefault<z.ZodNumber>;
|
|
182
|
+
}, "strip", z.ZodTypeAny, {
|
|
183
|
+
action: "smartWait";
|
|
184
|
+
timeout: number;
|
|
185
|
+
until: "selector" | "networkIdle" | "domStable";
|
|
186
|
+
displaySpeed: number;
|
|
187
|
+
selector?: string | undefined;
|
|
188
|
+
}, {
|
|
189
|
+
action: "smartWait";
|
|
190
|
+
selector?: string | undefined;
|
|
191
|
+
timeout?: number | undefined;
|
|
192
|
+
until?: "selector" | "networkIdle" | "domStable" | undefined;
|
|
193
|
+
displaySpeed?: number | undefined;
|
|
172
194
|
}>]>;
|
|
173
195
|
type StepAction = z.infer<typeof StepActionSchema>;
|
|
174
196
|
declare const EffectsConfigSchema: z.ZodObject<{
|
|
@@ -186,7 +208,7 @@ declare const EffectsConfigSchema: z.ZodObject<{
|
|
|
186
208
|
*/
|
|
187
209
|
intensity: z.ZodDefault<z.ZodEnum<["subtle", "light", "moderate", "strong", "dramatic"]>>;
|
|
188
210
|
duration: z.ZodDefault<z.ZodNumber>;
|
|
189
|
-
easing: z.ZodDefault<z.ZodEnum<["ease-in-out", "ease-in", "ease-out", "linear"]>>;
|
|
211
|
+
easing: z.ZodDefault<z.ZodEnum<["ease-in-out", "ease-in", "ease-out", "linear", "spring"]>>;
|
|
190
212
|
autoZoom: z.ZodDefault<z.ZodObject<{
|
|
191
213
|
followCursor: z.ZodDefault<z.ZodBoolean>;
|
|
192
214
|
/** @deprecated Use `intensity` on the parent zoom config instead. */
|
|
@@ -209,7 +231,7 @@ declare const EffectsConfigSchema: z.ZodObject<{
|
|
|
209
231
|
enabled: boolean;
|
|
210
232
|
scale: number;
|
|
211
233
|
intensity: "subtle" | "light" | "moderate" | "strong" | "dramatic";
|
|
212
|
-
easing: "ease-in-out" | "ease-in" | "ease-out" | "linear";
|
|
234
|
+
easing: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring";
|
|
213
235
|
autoZoom: {
|
|
214
236
|
followCursor: boolean;
|
|
215
237
|
maxScale: number;
|
|
@@ -221,7 +243,7 @@ declare const EffectsConfigSchema: z.ZodObject<{
|
|
|
221
243
|
enabled?: boolean | undefined;
|
|
222
244
|
scale?: number | undefined;
|
|
223
245
|
intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
|
|
224
|
-
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
|
|
246
|
+
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring" | undefined;
|
|
225
247
|
autoZoom?: {
|
|
226
248
|
followCursor?: boolean | undefined;
|
|
227
249
|
maxScale?: number | undefined;
|
|
@@ -323,6 +345,29 @@ declare const EffectsConfigSchema: z.ZodObject<{
|
|
|
323
345
|
actionSpeed?: number | undefined;
|
|
324
346
|
transitionFrames?: number | undefined;
|
|
325
347
|
}>>;
|
|
348
|
+
smartSpeed: z.ZodDefault<z.ZodObject<{
|
|
349
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
350
|
+
/** Speed multiplier for frames during smartWait (overridden by per-action displaySpeed) */
|
|
351
|
+
waitSpeed: z.ZodDefault<z.ZodNumber>;
|
|
352
|
+
/** Speed multiplier for idle frames (no DOM/network changes) */
|
|
353
|
+
idleSpeed: z.ZodDefault<z.ZodNumber>;
|
|
354
|
+
/** Duration (ms) to ease between speed changes (prevents jarring jumps) */
|
|
355
|
+
transitionDuration: z.ZodDefault<z.ZodNumber>;
|
|
356
|
+
/** Minimum segment duration (ms) — don't speed up very short segments */
|
|
357
|
+
minSegmentDuration: z.ZodDefault<z.ZodNumber>;
|
|
358
|
+
}, "strip", z.ZodTypeAny, {
|
|
359
|
+
transitionDuration: number;
|
|
360
|
+
enabled: boolean;
|
|
361
|
+
idleSpeed: number;
|
|
362
|
+
waitSpeed: number;
|
|
363
|
+
minSegmentDuration: number;
|
|
364
|
+
}, {
|
|
365
|
+
transitionDuration?: number | undefined;
|
|
366
|
+
enabled?: boolean | undefined;
|
|
367
|
+
idleSpeed?: number | undefined;
|
|
368
|
+
waitSpeed?: number | undefined;
|
|
369
|
+
minSegmentDuration?: number | undefined;
|
|
370
|
+
}>>;
|
|
326
371
|
keystroke: z.ZodDefault<z.ZodObject<{
|
|
327
372
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
328
373
|
/**
|
|
@@ -389,7 +434,7 @@ declare const EffectsConfigSchema: z.ZodObject<{
|
|
|
389
434
|
enabled: boolean;
|
|
390
435
|
scale: number;
|
|
391
436
|
intensity: "subtle" | "light" | "moderate" | "strong" | "dramatic";
|
|
392
|
-
easing: "ease-in-out" | "ease-in" | "ease-out" | "linear";
|
|
437
|
+
easing: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring";
|
|
393
438
|
autoZoom: {
|
|
394
439
|
followCursor: boolean;
|
|
395
440
|
maxScale: number;
|
|
@@ -431,6 +476,13 @@ declare const EffectsConfigSchema: z.ZodObject<{
|
|
|
431
476
|
actionSpeed: number;
|
|
432
477
|
transitionFrames: number;
|
|
433
478
|
};
|
|
479
|
+
smartSpeed: {
|
|
480
|
+
transitionDuration: number;
|
|
481
|
+
enabled: boolean;
|
|
482
|
+
idleSpeed: number;
|
|
483
|
+
waitSpeed: number;
|
|
484
|
+
minSegmentDuration: number;
|
|
485
|
+
};
|
|
434
486
|
keystroke: {
|
|
435
487
|
padding: number;
|
|
436
488
|
enabled: boolean;
|
|
@@ -455,7 +507,7 @@ declare const EffectsConfigSchema: z.ZodObject<{
|
|
|
455
507
|
enabled?: boolean | undefined;
|
|
456
508
|
scale?: number | undefined;
|
|
457
509
|
intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
|
|
458
|
-
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
|
|
510
|
+
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring" | undefined;
|
|
459
511
|
autoZoom?: {
|
|
460
512
|
followCursor?: boolean | undefined;
|
|
461
513
|
maxScale?: number | undefined;
|
|
@@ -497,6 +549,13 @@ declare const EffectsConfigSchema: z.ZodObject<{
|
|
|
497
549
|
actionSpeed?: number | undefined;
|
|
498
550
|
transitionFrames?: number | undefined;
|
|
499
551
|
} | undefined;
|
|
552
|
+
smartSpeed?: {
|
|
553
|
+
transitionDuration?: number | undefined;
|
|
554
|
+
enabled?: boolean | undefined;
|
|
555
|
+
idleSpeed?: number | undefined;
|
|
556
|
+
waitSpeed?: number | undefined;
|
|
557
|
+
minSegmentDuration?: number | undefined;
|
|
558
|
+
} | undefined;
|
|
500
559
|
keystroke?: {
|
|
501
560
|
padding?: number | undefined;
|
|
502
561
|
enabled?: boolean | undefined;
|
|
@@ -525,6 +584,8 @@ declare const OutputConfigSchema: z.ZodObject<{
|
|
|
525
584
|
/** @deprecated Use `preset` instead. Will be removed in v0.7. */
|
|
526
585
|
quality: z.ZodDefault<z.ZodNumber>;
|
|
527
586
|
preset: z.ZodOptional<z.ZodEnum<["social", "balanced", "archive"]>>;
|
|
587
|
+
/** Codec override: h264 (default), hevc (10-bit), av1 (smallest files, slow encode) */
|
|
588
|
+
codec: z.ZodDefault<z.ZodEnum<["auto", "h264", "hevc", "av1"]>>;
|
|
528
589
|
outputDir: z.ZodDefault<z.ZodString>;
|
|
529
590
|
filename: z.ZodDefault<z.ZodString>;
|
|
530
591
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -533,6 +594,7 @@ declare const OutputConfigSchema: z.ZodObject<{
|
|
|
533
594
|
height: number;
|
|
534
595
|
fps: number;
|
|
535
596
|
quality: number;
|
|
597
|
+
codec: "auto" | "h264" | "hevc" | "av1";
|
|
536
598
|
outputDir: string;
|
|
537
599
|
filename: string;
|
|
538
600
|
preset?: "social" | "balanced" | "archive" | undefined;
|
|
@@ -543,6 +605,7 @@ declare const OutputConfigSchema: z.ZodObject<{
|
|
|
543
605
|
fps?: number | undefined;
|
|
544
606
|
quality?: number | undefined;
|
|
545
607
|
preset?: "social" | "balanced" | "archive" | undefined;
|
|
608
|
+
codec?: "auto" | "h264" | "hevc" | "av1" | undefined;
|
|
546
609
|
outputDir?: string | undefined;
|
|
547
610
|
filename?: string | undefined;
|
|
548
611
|
}>;
|
|
@@ -558,7 +621,7 @@ declare const StepEffectsOverrideSchema: z.ZodOptional<z.ZodObject<{
|
|
|
558
621
|
scale: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
559
622
|
intensity: z.ZodOptional<z.ZodDefault<z.ZodEnum<["subtle", "light", "moderate", "strong", "dramatic"]>>>;
|
|
560
623
|
duration: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
561
|
-
easing: z.ZodOptional<z.ZodDefault<z.ZodEnum<["ease-in-out", "ease-in", "ease-out", "linear"]>>>;
|
|
624
|
+
easing: z.ZodOptional<z.ZodDefault<z.ZodEnum<["ease-in-out", "ease-in", "ease-out", "linear", "spring"]>>>;
|
|
562
625
|
autoZoom: z.ZodOptional<z.ZodDefault<z.ZodObject<{
|
|
563
626
|
followCursor: z.ZodDefault<z.ZodBoolean>;
|
|
564
627
|
/** @deprecated Use `intensity` on the parent zoom config instead. */
|
|
@@ -581,7 +644,7 @@ declare const StepEffectsOverrideSchema: z.ZodOptional<z.ZodObject<{
|
|
|
581
644
|
enabled?: boolean | undefined;
|
|
582
645
|
scale?: number | undefined;
|
|
583
646
|
intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
|
|
584
|
-
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
|
|
647
|
+
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring" | undefined;
|
|
585
648
|
autoZoom?: {
|
|
586
649
|
followCursor: boolean;
|
|
587
650
|
maxScale: number;
|
|
@@ -593,7 +656,7 @@ declare const StepEffectsOverrideSchema: z.ZodOptional<z.ZodObject<{
|
|
|
593
656
|
enabled?: boolean | undefined;
|
|
594
657
|
scale?: number | undefined;
|
|
595
658
|
intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
|
|
596
|
-
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
|
|
659
|
+
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring" | undefined;
|
|
597
660
|
autoZoom?: {
|
|
598
661
|
followCursor?: boolean | undefined;
|
|
599
662
|
maxScale?: number | undefined;
|
|
@@ -695,6 +758,25 @@ declare const StepEffectsOverrideSchema: z.ZodOptional<z.ZodObject<{
|
|
|
695
758
|
actionSpeed?: number | undefined;
|
|
696
759
|
transitionFrames?: number | undefined;
|
|
697
760
|
}>>;
|
|
761
|
+
smartSpeed: z.ZodOptional<z.ZodObject<{
|
|
762
|
+
enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
763
|
+
waitSpeed: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
764
|
+
idleSpeed: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
765
|
+
transitionDuration: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
766
|
+
minSegmentDuration: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
767
|
+
}, "strip", z.ZodTypeAny, {
|
|
768
|
+
transitionDuration?: number | undefined;
|
|
769
|
+
enabled?: boolean | undefined;
|
|
770
|
+
idleSpeed?: number | undefined;
|
|
771
|
+
waitSpeed?: number | undefined;
|
|
772
|
+
minSegmentDuration?: number | undefined;
|
|
773
|
+
}, {
|
|
774
|
+
transitionDuration?: number | undefined;
|
|
775
|
+
enabled?: boolean | undefined;
|
|
776
|
+
idleSpeed?: number | undefined;
|
|
777
|
+
waitSpeed?: number | undefined;
|
|
778
|
+
minSegmentDuration?: number | undefined;
|
|
779
|
+
}>>;
|
|
698
780
|
keystroke: z.ZodOptional<z.ZodObject<{
|
|
699
781
|
enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
700
782
|
showTyping: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
@@ -751,7 +833,7 @@ declare const StepEffectsOverrideSchema: z.ZodOptional<z.ZodObject<{
|
|
|
751
833
|
enabled?: boolean | undefined;
|
|
752
834
|
scale?: number | undefined;
|
|
753
835
|
intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
|
|
754
|
-
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
|
|
836
|
+
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring" | undefined;
|
|
755
837
|
autoZoom?: {
|
|
756
838
|
followCursor: boolean;
|
|
757
839
|
maxScale: number;
|
|
@@ -793,6 +875,13 @@ declare const StepEffectsOverrideSchema: z.ZodOptional<z.ZodObject<{
|
|
|
793
875
|
actionSpeed?: number | undefined;
|
|
794
876
|
transitionFrames?: number | undefined;
|
|
795
877
|
} | undefined;
|
|
878
|
+
smartSpeed?: {
|
|
879
|
+
transitionDuration?: number | undefined;
|
|
880
|
+
enabled?: boolean | undefined;
|
|
881
|
+
idleSpeed?: number | undefined;
|
|
882
|
+
waitSpeed?: number | undefined;
|
|
883
|
+
minSegmentDuration?: number | undefined;
|
|
884
|
+
} | undefined;
|
|
796
885
|
keystroke?: {
|
|
797
886
|
padding?: number | undefined;
|
|
798
887
|
enabled?: boolean | undefined;
|
|
@@ -817,7 +906,7 @@ declare const StepEffectsOverrideSchema: z.ZodOptional<z.ZodObject<{
|
|
|
817
906
|
enabled?: boolean | undefined;
|
|
818
907
|
scale?: number | undefined;
|
|
819
908
|
intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
|
|
820
|
-
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
|
|
909
|
+
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring" | undefined;
|
|
821
910
|
autoZoom?: {
|
|
822
911
|
followCursor?: boolean | undefined;
|
|
823
912
|
maxScale?: number | undefined;
|
|
@@ -859,6 +948,13 @@ declare const StepEffectsOverrideSchema: z.ZodOptional<z.ZodObject<{
|
|
|
859
948
|
actionSpeed?: number | undefined;
|
|
860
949
|
transitionFrames?: number | undefined;
|
|
861
950
|
} | undefined;
|
|
951
|
+
smartSpeed?: {
|
|
952
|
+
transitionDuration?: number | undefined;
|
|
953
|
+
enabled?: boolean | undefined;
|
|
954
|
+
idleSpeed?: number | undefined;
|
|
955
|
+
waitSpeed?: number | undefined;
|
|
956
|
+
minSegmentDuration?: number | undefined;
|
|
957
|
+
} | undefined;
|
|
862
958
|
keystroke?: {
|
|
863
959
|
padding?: number | undefined;
|
|
864
960
|
enabled?: boolean | undefined;
|
|
@@ -1051,6 +1147,28 @@ declare const StepSchema: z.ZodObject<{
|
|
|
1051
1147
|
url: string;
|
|
1052
1148
|
status?: number | undefined;
|
|
1053
1149
|
timeout?: number | undefined;
|
|
1150
|
+
}>, z.ZodObject<{
|
|
1151
|
+
action: z.ZodLiteral<"smartWait">;
|
|
1152
|
+
/** Condition to wait for */
|
|
1153
|
+
until: z.ZodDefault<z.ZodEnum<["networkIdle", "selector", "domStable"]>>;
|
|
1154
|
+
/** CSS selector (required when until="selector") */
|
|
1155
|
+
selector: z.ZodOptional<z.ZodString>;
|
|
1156
|
+
/** Maximum wait in ms */
|
|
1157
|
+
timeout: z.ZodDefault<z.ZodNumber>;
|
|
1158
|
+
/** Speed multiplier for the wait period in the output video (default: 8×) */
|
|
1159
|
+
displaySpeed: z.ZodDefault<z.ZodNumber>;
|
|
1160
|
+
}, "strip", z.ZodTypeAny, {
|
|
1161
|
+
action: "smartWait";
|
|
1162
|
+
timeout: number;
|
|
1163
|
+
until: "selector" | "networkIdle" | "domStable";
|
|
1164
|
+
displaySpeed: number;
|
|
1165
|
+
selector?: string | undefined;
|
|
1166
|
+
}, {
|
|
1167
|
+
action: "smartWait";
|
|
1168
|
+
selector?: string | undefined;
|
|
1169
|
+
timeout?: number | undefined;
|
|
1170
|
+
until?: "selector" | "networkIdle" | "domStable" | undefined;
|
|
1171
|
+
displaySpeed?: number | undefined;
|
|
1054
1172
|
}>]>, "many">;
|
|
1055
1173
|
captureDelay: z.ZodDefault<z.ZodNumber>;
|
|
1056
1174
|
holdDuration: z.ZodDefault<z.ZodNumber>;
|
|
@@ -1062,7 +1180,7 @@ declare const StepSchema: z.ZodObject<{
|
|
|
1062
1180
|
scale: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
1063
1181
|
intensity: z.ZodOptional<z.ZodDefault<z.ZodEnum<["subtle", "light", "moderate", "strong", "dramatic"]>>>;
|
|
1064
1182
|
duration: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
1065
|
-
easing: z.ZodOptional<z.ZodDefault<z.ZodEnum<["ease-in-out", "ease-in", "ease-out", "linear"]>>>;
|
|
1183
|
+
easing: z.ZodOptional<z.ZodDefault<z.ZodEnum<["ease-in-out", "ease-in", "ease-out", "linear", "spring"]>>>;
|
|
1066
1184
|
autoZoom: z.ZodOptional<z.ZodDefault<z.ZodObject<{
|
|
1067
1185
|
followCursor: z.ZodDefault<z.ZodBoolean>;
|
|
1068
1186
|
/** @deprecated Use `intensity` on the parent zoom config instead. */
|
|
@@ -1085,7 +1203,7 @@ declare const StepSchema: z.ZodObject<{
|
|
|
1085
1203
|
enabled?: boolean | undefined;
|
|
1086
1204
|
scale?: number | undefined;
|
|
1087
1205
|
intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
|
|
1088
|
-
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
|
|
1206
|
+
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring" | undefined;
|
|
1089
1207
|
autoZoom?: {
|
|
1090
1208
|
followCursor: boolean;
|
|
1091
1209
|
maxScale: number;
|
|
@@ -1097,7 +1215,7 @@ declare const StepSchema: z.ZodObject<{
|
|
|
1097
1215
|
enabled?: boolean | undefined;
|
|
1098
1216
|
scale?: number | undefined;
|
|
1099
1217
|
intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
|
|
1100
|
-
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
|
|
1218
|
+
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring" | undefined;
|
|
1101
1219
|
autoZoom?: {
|
|
1102
1220
|
followCursor?: boolean | undefined;
|
|
1103
1221
|
maxScale?: number | undefined;
|
|
@@ -1199,6 +1317,25 @@ declare const StepSchema: z.ZodObject<{
|
|
|
1199
1317
|
actionSpeed?: number | undefined;
|
|
1200
1318
|
transitionFrames?: number | undefined;
|
|
1201
1319
|
}>>;
|
|
1320
|
+
smartSpeed: z.ZodOptional<z.ZodObject<{
|
|
1321
|
+
enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
1322
|
+
waitSpeed: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
1323
|
+
idleSpeed: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
1324
|
+
transitionDuration: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
1325
|
+
minSegmentDuration: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
1326
|
+
}, "strip", z.ZodTypeAny, {
|
|
1327
|
+
transitionDuration?: number | undefined;
|
|
1328
|
+
enabled?: boolean | undefined;
|
|
1329
|
+
idleSpeed?: number | undefined;
|
|
1330
|
+
waitSpeed?: number | undefined;
|
|
1331
|
+
minSegmentDuration?: number | undefined;
|
|
1332
|
+
}, {
|
|
1333
|
+
transitionDuration?: number | undefined;
|
|
1334
|
+
enabled?: boolean | undefined;
|
|
1335
|
+
idleSpeed?: number | undefined;
|
|
1336
|
+
waitSpeed?: number | undefined;
|
|
1337
|
+
minSegmentDuration?: number | undefined;
|
|
1338
|
+
}>>;
|
|
1202
1339
|
keystroke: z.ZodOptional<z.ZodObject<{
|
|
1203
1340
|
enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
1204
1341
|
showTyping: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
@@ -1255,7 +1392,7 @@ declare const StepSchema: z.ZodObject<{
|
|
|
1255
1392
|
enabled?: boolean | undefined;
|
|
1256
1393
|
scale?: number | undefined;
|
|
1257
1394
|
intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
|
|
1258
|
-
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
|
|
1395
|
+
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring" | undefined;
|
|
1259
1396
|
autoZoom?: {
|
|
1260
1397
|
followCursor: boolean;
|
|
1261
1398
|
maxScale: number;
|
|
@@ -1297,6 +1434,13 @@ declare const StepSchema: z.ZodObject<{
|
|
|
1297
1434
|
actionSpeed?: number | undefined;
|
|
1298
1435
|
transitionFrames?: number | undefined;
|
|
1299
1436
|
} | undefined;
|
|
1437
|
+
smartSpeed?: {
|
|
1438
|
+
transitionDuration?: number | undefined;
|
|
1439
|
+
enabled?: boolean | undefined;
|
|
1440
|
+
idleSpeed?: number | undefined;
|
|
1441
|
+
waitSpeed?: number | undefined;
|
|
1442
|
+
minSegmentDuration?: number | undefined;
|
|
1443
|
+
} | undefined;
|
|
1300
1444
|
keystroke?: {
|
|
1301
1445
|
padding?: number | undefined;
|
|
1302
1446
|
enabled?: boolean | undefined;
|
|
@@ -1321,7 +1465,7 @@ declare const StepSchema: z.ZodObject<{
|
|
|
1321
1465
|
enabled?: boolean | undefined;
|
|
1322
1466
|
scale?: number | undefined;
|
|
1323
1467
|
intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
|
|
1324
|
-
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
|
|
1468
|
+
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring" | undefined;
|
|
1325
1469
|
autoZoom?: {
|
|
1326
1470
|
followCursor?: boolean | undefined;
|
|
1327
1471
|
maxScale?: number | undefined;
|
|
@@ -1363,6 +1507,13 @@ declare const StepSchema: z.ZodObject<{
|
|
|
1363
1507
|
actionSpeed?: number | undefined;
|
|
1364
1508
|
transitionFrames?: number | undefined;
|
|
1365
1509
|
} | undefined;
|
|
1510
|
+
smartSpeed?: {
|
|
1511
|
+
transitionDuration?: number | undefined;
|
|
1512
|
+
enabled?: boolean | undefined;
|
|
1513
|
+
idleSpeed?: number | undefined;
|
|
1514
|
+
waitSpeed?: number | undefined;
|
|
1515
|
+
minSegmentDuration?: number | undefined;
|
|
1516
|
+
} | undefined;
|
|
1366
1517
|
keystroke?: {
|
|
1367
1518
|
padding?: number | undefined;
|
|
1368
1519
|
enabled?: boolean | undefined;
|
|
@@ -1439,6 +1590,12 @@ declare const StepSchema: z.ZodObject<{
|
|
|
1439
1590
|
url: string;
|
|
1440
1591
|
timeout: number;
|
|
1441
1592
|
status?: number | undefined;
|
|
1593
|
+
} | {
|
|
1594
|
+
action: "smartWait";
|
|
1595
|
+
timeout: number;
|
|
1596
|
+
until: "selector" | "networkIdle" | "domStable";
|
|
1597
|
+
displaySpeed: number;
|
|
1598
|
+
selector?: string | undefined;
|
|
1442
1599
|
})[];
|
|
1443
1600
|
captureDelay: number;
|
|
1444
1601
|
holdDuration: number;
|
|
@@ -1450,7 +1607,7 @@ declare const StepSchema: z.ZodObject<{
|
|
|
1450
1607
|
enabled?: boolean | undefined;
|
|
1451
1608
|
scale?: number | undefined;
|
|
1452
1609
|
intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
|
|
1453
|
-
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
|
|
1610
|
+
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring" | undefined;
|
|
1454
1611
|
autoZoom?: {
|
|
1455
1612
|
followCursor: boolean;
|
|
1456
1613
|
maxScale: number;
|
|
@@ -1492,6 +1649,13 @@ declare const StepSchema: z.ZodObject<{
|
|
|
1492
1649
|
actionSpeed?: number | undefined;
|
|
1493
1650
|
transitionFrames?: number | undefined;
|
|
1494
1651
|
} | undefined;
|
|
1652
|
+
smartSpeed?: {
|
|
1653
|
+
transitionDuration?: number | undefined;
|
|
1654
|
+
enabled?: boolean | undefined;
|
|
1655
|
+
idleSpeed?: number | undefined;
|
|
1656
|
+
waitSpeed?: number | undefined;
|
|
1657
|
+
minSegmentDuration?: number | undefined;
|
|
1658
|
+
} | undefined;
|
|
1495
1659
|
keystroke?: {
|
|
1496
1660
|
padding?: number | undefined;
|
|
1497
1661
|
enabled?: boolean | undefined;
|
|
@@ -1568,6 +1732,12 @@ declare const StepSchema: z.ZodObject<{
|
|
|
1568
1732
|
url: string;
|
|
1569
1733
|
status?: number | undefined;
|
|
1570
1734
|
timeout?: number | undefined;
|
|
1735
|
+
} | {
|
|
1736
|
+
action: "smartWait";
|
|
1737
|
+
selector?: string | undefined;
|
|
1738
|
+
timeout?: number | undefined;
|
|
1739
|
+
until?: "selector" | "networkIdle" | "domStable" | undefined;
|
|
1740
|
+
displaySpeed?: number | undefined;
|
|
1571
1741
|
})[];
|
|
1572
1742
|
name?: string | undefined;
|
|
1573
1743
|
captureDelay?: number | undefined;
|
|
@@ -1579,7 +1749,7 @@ declare const StepSchema: z.ZodObject<{
|
|
|
1579
1749
|
enabled?: boolean | undefined;
|
|
1580
1750
|
scale?: number | undefined;
|
|
1581
1751
|
intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
|
|
1582
|
-
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
|
|
1752
|
+
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring" | undefined;
|
|
1583
1753
|
autoZoom?: {
|
|
1584
1754
|
followCursor?: boolean | undefined;
|
|
1585
1755
|
maxScale?: number | undefined;
|
|
@@ -1621,6 +1791,13 @@ declare const StepSchema: z.ZodObject<{
|
|
|
1621
1791
|
actionSpeed?: number | undefined;
|
|
1622
1792
|
transitionFrames?: number | undefined;
|
|
1623
1793
|
} | undefined;
|
|
1794
|
+
smartSpeed?: {
|
|
1795
|
+
transitionDuration?: number | undefined;
|
|
1796
|
+
enabled?: boolean | undefined;
|
|
1797
|
+
idleSpeed?: number | undefined;
|
|
1798
|
+
waitSpeed?: number | undefined;
|
|
1799
|
+
minSegmentDuration?: number | undefined;
|
|
1800
|
+
} | undefined;
|
|
1624
1801
|
keystroke?: {
|
|
1625
1802
|
padding?: number | undefined;
|
|
1626
1803
|
enabled?: boolean | undefined;
|
|
@@ -1694,7 +1871,7 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
1694
1871
|
*/
|
|
1695
1872
|
intensity: z.ZodDefault<z.ZodEnum<["subtle", "light", "moderate", "strong", "dramatic"]>>;
|
|
1696
1873
|
duration: z.ZodDefault<z.ZodNumber>;
|
|
1697
|
-
easing: z.ZodDefault<z.ZodEnum<["ease-in-out", "ease-in", "ease-out", "linear"]>>;
|
|
1874
|
+
easing: z.ZodDefault<z.ZodEnum<["ease-in-out", "ease-in", "ease-out", "linear", "spring"]>>;
|
|
1698
1875
|
autoZoom: z.ZodDefault<z.ZodObject<{
|
|
1699
1876
|
followCursor: z.ZodDefault<z.ZodBoolean>;
|
|
1700
1877
|
/** @deprecated Use `intensity` on the parent zoom config instead. */
|
|
@@ -1717,7 +1894,7 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
1717
1894
|
enabled: boolean;
|
|
1718
1895
|
scale: number;
|
|
1719
1896
|
intensity: "subtle" | "light" | "moderate" | "strong" | "dramatic";
|
|
1720
|
-
easing: "ease-in-out" | "ease-in" | "ease-out" | "linear";
|
|
1897
|
+
easing: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring";
|
|
1721
1898
|
autoZoom: {
|
|
1722
1899
|
followCursor: boolean;
|
|
1723
1900
|
maxScale: number;
|
|
@@ -1729,7 +1906,7 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
1729
1906
|
enabled?: boolean | undefined;
|
|
1730
1907
|
scale?: number | undefined;
|
|
1731
1908
|
intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
|
|
1732
|
-
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
|
|
1909
|
+
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring" | undefined;
|
|
1733
1910
|
autoZoom?: {
|
|
1734
1911
|
followCursor?: boolean | undefined;
|
|
1735
1912
|
maxScale?: number | undefined;
|
|
@@ -1831,6 +2008,29 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
1831
2008
|
actionSpeed?: number | undefined;
|
|
1832
2009
|
transitionFrames?: number | undefined;
|
|
1833
2010
|
}>>;
|
|
2011
|
+
smartSpeed: z.ZodDefault<z.ZodObject<{
|
|
2012
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
2013
|
+
/** Speed multiplier for frames during smartWait (overridden by per-action displaySpeed) */
|
|
2014
|
+
waitSpeed: z.ZodDefault<z.ZodNumber>;
|
|
2015
|
+
/** Speed multiplier for idle frames (no DOM/network changes) */
|
|
2016
|
+
idleSpeed: z.ZodDefault<z.ZodNumber>;
|
|
2017
|
+
/** Duration (ms) to ease between speed changes (prevents jarring jumps) */
|
|
2018
|
+
transitionDuration: z.ZodDefault<z.ZodNumber>;
|
|
2019
|
+
/** Minimum segment duration (ms) — don't speed up very short segments */
|
|
2020
|
+
minSegmentDuration: z.ZodDefault<z.ZodNumber>;
|
|
2021
|
+
}, "strip", z.ZodTypeAny, {
|
|
2022
|
+
transitionDuration: number;
|
|
2023
|
+
enabled: boolean;
|
|
2024
|
+
idleSpeed: number;
|
|
2025
|
+
waitSpeed: number;
|
|
2026
|
+
minSegmentDuration: number;
|
|
2027
|
+
}, {
|
|
2028
|
+
transitionDuration?: number | undefined;
|
|
2029
|
+
enabled?: boolean | undefined;
|
|
2030
|
+
idleSpeed?: number | undefined;
|
|
2031
|
+
waitSpeed?: number | undefined;
|
|
2032
|
+
minSegmentDuration?: number | undefined;
|
|
2033
|
+
}>>;
|
|
1834
2034
|
keystroke: z.ZodDefault<z.ZodObject<{
|
|
1835
2035
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
1836
2036
|
/**
|
|
@@ -1897,7 +2097,7 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
1897
2097
|
enabled: boolean;
|
|
1898
2098
|
scale: number;
|
|
1899
2099
|
intensity: "subtle" | "light" | "moderate" | "strong" | "dramatic";
|
|
1900
|
-
easing: "ease-in-out" | "ease-in" | "ease-out" | "linear";
|
|
2100
|
+
easing: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring";
|
|
1901
2101
|
autoZoom: {
|
|
1902
2102
|
followCursor: boolean;
|
|
1903
2103
|
maxScale: number;
|
|
@@ -1939,6 +2139,13 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
1939
2139
|
actionSpeed: number;
|
|
1940
2140
|
transitionFrames: number;
|
|
1941
2141
|
};
|
|
2142
|
+
smartSpeed: {
|
|
2143
|
+
transitionDuration: number;
|
|
2144
|
+
enabled: boolean;
|
|
2145
|
+
idleSpeed: number;
|
|
2146
|
+
waitSpeed: number;
|
|
2147
|
+
minSegmentDuration: number;
|
|
2148
|
+
};
|
|
1942
2149
|
keystroke: {
|
|
1943
2150
|
padding: number;
|
|
1944
2151
|
enabled: boolean;
|
|
@@ -1963,7 +2170,7 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
1963
2170
|
enabled?: boolean | undefined;
|
|
1964
2171
|
scale?: number | undefined;
|
|
1965
2172
|
intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
|
|
1966
|
-
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
|
|
2173
|
+
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring" | undefined;
|
|
1967
2174
|
autoZoom?: {
|
|
1968
2175
|
followCursor?: boolean | undefined;
|
|
1969
2176
|
maxScale?: number | undefined;
|
|
@@ -2005,6 +2212,13 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2005
2212
|
actionSpeed?: number | undefined;
|
|
2006
2213
|
transitionFrames?: number | undefined;
|
|
2007
2214
|
} | undefined;
|
|
2215
|
+
smartSpeed?: {
|
|
2216
|
+
transitionDuration?: number | undefined;
|
|
2217
|
+
enabled?: boolean | undefined;
|
|
2218
|
+
idleSpeed?: number | undefined;
|
|
2219
|
+
waitSpeed?: number | undefined;
|
|
2220
|
+
minSegmentDuration?: number | undefined;
|
|
2221
|
+
} | undefined;
|
|
2008
2222
|
keystroke?: {
|
|
2009
2223
|
padding?: number | undefined;
|
|
2010
2224
|
enabled?: boolean | undefined;
|
|
@@ -2032,6 +2246,8 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2032
2246
|
/** @deprecated Use `preset` instead. Will be removed in v0.7. */
|
|
2033
2247
|
quality: z.ZodDefault<z.ZodNumber>;
|
|
2034
2248
|
preset: z.ZodOptional<z.ZodEnum<["social", "balanced", "archive"]>>;
|
|
2249
|
+
/** Codec override: h264 (default), hevc (10-bit), av1 (smallest files, slow encode) */
|
|
2250
|
+
codec: z.ZodDefault<z.ZodEnum<["auto", "h264", "hevc", "av1"]>>;
|
|
2035
2251
|
outputDir: z.ZodDefault<z.ZodString>;
|
|
2036
2252
|
filename: z.ZodDefault<z.ZodString>;
|
|
2037
2253
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -2040,6 +2256,7 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2040
2256
|
height: number;
|
|
2041
2257
|
fps: number;
|
|
2042
2258
|
quality: number;
|
|
2259
|
+
codec: "auto" | "h264" | "hevc" | "av1";
|
|
2043
2260
|
outputDir: string;
|
|
2044
2261
|
filename: string;
|
|
2045
2262
|
preset?: "social" | "balanced" | "archive" | undefined;
|
|
@@ -2050,6 +2267,7 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2050
2267
|
fps?: number | undefined;
|
|
2051
2268
|
quality?: number | undefined;
|
|
2052
2269
|
preset?: "social" | "balanced" | "archive" | undefined;
|
|
2270
|
+
codec?: "auto" | "h264" | "hevc" | "av1" | undefined;
|
|
2053
2271
|
outputDir?: string | undefined;
|
|
2054
2272
|
filename?: string | undefined;
|
|
2055
2273
|
}>>;
|
|
@@ -2244,6 +2462,28 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2244
2462
|
url: string;
|
|
2245
2463
|
status?: number | undefined;
|
|
2246
2464
|
timeout?: number | undefined;
|
|
2465
|
+
}>, z.ZodObject<{
|
|
2466
|
+
action: z.ZodLiteral<"smartWait">;
|
|
2467
|
+
/** Condition to wait for */
|
|
2468
|
+
until: z.ZodDefault<z.ZodEnum<["networkIdle", "selector", "domStable"]>>;
|
|
2469
|
+
/** CSS selector (required when until="selector") */
|
|
2470
|
+
selector: z.ZodOptional<z.ZodString>;
|
|
2471
|
+
/** Maximum wait in ms */
|
|
2472
|
+
timeout: z.ZodDefault<z.ZodNumber>;
|
|
2473
|
+
/** Speed multiplier for the wait period in the output video (default: 8×) */
|
|
2474
|
+
displaySpeed: z.ZodDefault<z.ZodNumber>;
|
|
2475
|
+
}, "strip", z.ZodTypeAny, {
|
|
2476
|
+
action: "smartWait";
|
|
2477
|
+
timeout: number;
|
|
2478
|
+
until: "selector" | "networkIdle" | "domStable";
|
|
2479
|
+
displaySpeed: number;
|
|
2480
|
+
selector?: string | undefined;
|
|
2481
|
+
}, {
|
|
2482
|
+
action: "smartWait";
|
|
2483
|
+
selector?: string | undefined;
|
|
2484
|
+
timeout?: number | undefined;
|
|
2485
|
+
until?: "selector" | "networkIdle" | "domStable" | undefined;
|
|
2486
|
+
displaySpeed?: number | undefined;
|
|
2247
2487
|
}>]>, "many">;
|
|
2248
2488
|
captureDelay: z.ZodDefault<z.ZodNumber>;
|
|
2249
2489
|
holdDuration: z.ZodDefault<z.ZodNumber>;
|
|
@@ -2255,7 +2495,7 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2255
2495
|
scale: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
2256
2496
|
intensity: z.ZodOptional<z.ZodDefault<z.ZodEnum<["subtle", "light", "moderate", "strong", "dramatic"]>>>;
|
|
2257
2497
|
duration: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
2258
|
-
easing: z.ZodOptional<z.ZodDefault<z.ZodEnum<["ease-in-out", "ease-in", "ease-out", "linear"]>>>;
|
|
2498
|
+
easing: z.ZodOptional<z.ZodDefault<z.ZodEnum<["ease-in-out", "ease-in", "ease-out", "linear", "spring"]>>>;
|
|
2259
2499
|
autoZoom: z.ZodOptional<z.ZodDefault<z.ZodObject<{
|
|
2260
2500
|
followCursor: z.ZodDefault<z.ZodBoolean>;
|
|
2261
2501
|
/** @deprecated Use `intensity` on the parent zoom config instead. */
|
|
@@ -2278,7 +2518,7 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2278
2518
|
enabled?: boolean | undefined;
|
|
2279
2519
|
scale?: number | undefined;
|
|
2280
2520
|
intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
|
|
2281
|
-
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
|
|
2521
|
+
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring" | undefined;
|
|
2282
2522
|
autoZoom?: {
|
|
2283
2523
|
followCursor: boolean;
|
|
2284
2524
|
maxScale: number;
|
|
@@ -2290,7 +2530,7 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2290
2530
|
enabled?: boolean | undefined;
|
|
2291
2531
|
scale?: number | undefined;
|
|
2292
2532
|
intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
|
|
2293
|
-
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
|
|
2533
|
+
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring" | undefined;
|
|
2294
2534
|
autoZoom?: {
|
|
2295
2535
|
followCursor?: boolean | undefined;
|
|
2296
2536
|
maxScale?: number | undefined;
|
|
@@ -2392,6 +2632,25 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2392
2632
|
actionSpeed?: number | undefined;
|
|
2393
2633
|
transitionFrames?: number | undefined;
|
|
2394
2634
|
}>>;
|
|
2635
|
+
smartSpeed: z.ZodOptional<z.ZodObject<{
|
|
2636
|
+
enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
2637
|
+
waitSpeed: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
2638
|
+
idleSpeed: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
2639
|
+
transitionDuration: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
2640
|
+
minSegmentDuration: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
2641
|
+
}, "strip", z.ZodTypeAny, {
|
|
2642
|
+
transitionDuration?: number | undefined;
|
|
2643
|
+
enabled?: boolean | undefined;
|
|
2644
|
+
idleSpeed?: number | undefined;
|
|
2645
|
+
waitSpeed?: number | undefined;
|
|
2646
|
+
minSegmentDuration?: number | undefined;
|
|
2647
|
+
}, {
|
|
2648
|
+
transitionDuration?: number | undefined;
|
|
2649
|
+
enabled?: boolean | undefined;
|
|
2650
|
+
idleSpeed?: number | undefined;
|
|
2651
|
+
waitSpeed?: number | undefined;
|
|
2652
|
+
minSegmentDuration?: number | undefined;
|
|
2653
|
+
}>>;
|
|
2395
2654
|
keystroke: z.ZodOptional<z.ZodObject<{
|
|
2396
2655
|
enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
2397
2656
|
showTyping: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
@@ -2448,7 +2707,7 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2448
2707
|
enabled?: boolean | undefined;
|
|
2449
2708
|
scale?: number | undefined;
|
|
2450
2709
|
intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
|
|
2451
|
-
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
|
|
2710
|
+
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring" | undefined;
|
|
2452
2711
|
autoZoom?: {
|
|
2453
2712
|
followCursor: boolean;
|
|
2454
2713
|
maxScale: number;
|
|
@@ -2490,6 +2749,13 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2490
2749
|
actionSpeed?: number | undefined;
|
|
2491
2750
|
transitionFrames?: number | undefined;
|
|
2492
2751
|
} | undefined;
|
|
2752
|
+
smartSpeed?: {
|
|
2753
|
+
transitionDuration?: number | undefined;
|
|
2754
|
+
enabled?: boolean | undefined;
|
|
2755
|
+
idleSpeed?: number | undefined;
|
|
2756
|
+
waitSpeed?: number | undefined;
|
|
2757
|
+
minSegmentDuration?: number | undefined;
|
|
2758
|
+
} | undefined;
|
|
2493
2759
|
keystroke?: {
|
|
2494
2760
|
padding?: number | undefined;
|
|
2495
2761
|
enabled?: boolean | undefined;
|
|
@@ -2514,7 +2780,7 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2514
2780
|
enabled?: boolean | undefined;
|
|
2515
2781
|
scale?: number | undefined;
|
|
2516
2782
|
intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
|
|
2517
|
-
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
|
|
2783
|
+
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring" | undefined;
|
|
2518
2784
|
autoZoom?: {
|
|
2519
2785
|
followCursor?: boolean | undefined;
|
|
2520
2786
|
maxScale?: number | undefined;
|
|
@@ -2556,6 +2822,13 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2556
2822
|
actionSpeed?: number | undefined;
|
|
2557
2823
|
transitionFrames?: number | undefined;
|
|
2558
2824
|
} | undefined;
|
|
2825
|
+
smartSpeed?: {
|
|
2826
|
+
transitionDuration?: number | undefined;
|
|
2827
|
+
enabled?: boolean | undefined;
|
|
2828
|
+
idleSpeed?: number | undefined;
|
|
2829
|
+
waitSpeed?: number | undefined;
|
|
2830
|
+
minSegmentDuration?: number | undefined;
|
|
2831
|
+
} | undefined;
|
|
2559
2832
|
keystroke?: {
|
|
2560
2833
|
padding?: number | undefined;
|
|
2561
2834
|
enabled?: boolean | undefined;
|
|
@@ -2632,6 +2905,12 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2632
2905
|
url: string;
|
|
2633
2906
|
timeout: number;
|
|
2634
2907
|
status?: number | undefined;
|
|
2908
|
+
} | {
|
|
2909
|
+
action: "smartWait";
|
|
2910
|
+
timeout: number;
|
|
2911
|
+
until: "selector" | "networkIdle" | "domStable";
|
|
2912
|
+
displaySpeed: number;
|
|
2913
|
+
selector?: string | undefined;
|
|
2635
2914
|
})[];
|
|
2636
2915
|
captureDelay: number;
|
|
2637
2916
|
holdDuration: number;
|
|
@@ -2643,7 +2922,7 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2643
2922
|
enabled?: boolean | undefined;
|
|
2644
2923
|
scale?: number | undefined;
|
|
2645
2924
|
intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
|
|
2646
|
-
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
|
|
2925
|
+
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring" | undefined;
|
|
2647
2926
|
autoZoom?: {
|
|
2648
2927
|
followCursor: boolean;
|
|
2649
2928
|
maxScale: number;
|
|
@@ -2685,6 +2964,13 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2685
2964
|
actionSpeed?: number | undefined;
|
|
2686
2965
|
transitionFrames?: number | undefined;
|
|
2687
2966
|
} | undefined;
|
|
2967
|
+
smartSpeed?: {
|
|
2968
|
+
transitionDuration?: number | undefined;
|
|
2969
|
+
enabled?: boolean | undefined;
|
|
2970
|
+
idleSpeed?: number | undefined;
|
|
2971
|
+
waitSpeed?: number | undefined;
|
|
2972
|
+
minSegmentDuration?: number | undefined;
|
|
2973
|
+
} | undefined;
|
|
2688
2974
|
keystroke?: {
|
|
2689
2975
|
padding?: number | undefined;
|
|
2690
2976
|
enabled?: boolean | undefined;
|
|
@@ -2761,6 +3047,12 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2761
3047
|
url: string;
|
|
2762
3048
|
status?: number | undefined;
|
|
2763
3049
|
timeout?: number | undefined;
|
|
3050
|
+
} | {
|
|
3051
|
+
action: "smartWait";
|
|
3052
|
+
selector?: string | undefined;
|
|
3053
|
+
timeout?: number | undefined;
|
|
3054
|
+
until?: "selector" | "networkIdle" | "domStable" | undefined;
|
|
3055
|
+
displaySpeed?: number | undefined;
|
|
2764
3056
|
})[];
|
|
2765
3057
|
name?: string | undefined;
|
|
2766
3058
|
captureDelay?: number | undefined;
|
|
@@ -2772,7 +3064,7 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2772
3064
|
enabled?: boolean | undefined;
|
|
2773
3065
|
scale?: number | undefined;
|
|
2774
3066
|
intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
|
|
2775
|
-
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
|
|
3067
|
+
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring" | undefined;
|
|
2776
3068
|
autoZoom?: {
|
|
2777
3069
|
followCursor?: boolean | undefined;
|
|
2778
3070
|
maxScale?: number | undefined;
|
|
@@ -2814,6 +3106,13 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2814
3106
|
actionSpeed?: number | undefined;
|
|
2815
3107
|
transitionFrames?: number | undefined;
|
|
2816
3108
|
} | undefined;
|
|
3109
|
+
smartSpeed?: {
|
|
3110
|
+
transitionDuration?: number | undefined;
|
|
3111
|
+
enabled?: boolean | undefined;
|
|
3112
|
+
idleSpeed?: number | undefined;
|
|
3113
|
+
waitSpeed?: number | undefined;
|
|
3114
|
+
minSegmentDuration?: number | undefined;
|
|
3115
|
+
} | undefined;
|
|
2817
3116
|
keystroke?: {
|
|
2818
3117
|
padding?: number | undefined;
|
|
2819
3118
|
enabled?: boolean | undefined;
|
|
@@ -2842,7 +3141,7 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2842
3141
|
enabled: boolean;
|
|
2843
3142
|
scale: number;
|
|
2844
3143
|
intensity: "subtle" | "light" | "moderate" | "strong" | "dramatic";
|
|
2845
|
-
easing: "ease-in-out" | "ease-in" | "ease-out" | "linear";
|
|
3144
|
+
easing: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring";
|
|
2846
3145
|
autoZoom: {
|
|
2847
3146
|
followCursor: boolean;
|
|
2848
3147
|
maxScale: number;
|
|
@@ -2884,6 +3183,13 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2884
3183
|
actionSpeed: number;
|
|
2885
3184
|
transitionFrames: number;
|
|
2886
3185
|
};
|
|
3186
|
+
smartSpeed: {
|
|
3187
|
+
transitionDuration: number;
|
|
3188
|
+
enabled: boolean;
|
|
3189
|
+
idleSpeed: number;
|
|
3190
|
+
waitSpeed: number;
|
|
3191
|
+
minSegmentDuration: number;
|
|
3192
|
+
};
|
|
2887
3193
|
keystroke: {
|
|
2888
3194
|
padding: number;
|
|
2889
3195
|
enabled: boolean;
|
|
@@ -2913,6 +3219,7 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2913
3219
|
height: number;
|
|
2914
3220
|
fps: number;
|
|
2915
3221
|
quality: number;
|
|
3222
|
+
codec: "auto" | "h264" | "hevc" | "av1";
|
|
2916
3223
|
outputDir: string;
|
|
2917
3224
|
filename: string;
|
|
2918
3225
|
preset?: "social" | "balanced" | "archive" | undefined;
|
|
@@ -2974,6 +3281,12 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2974
3281
|
url: string;
|
|
2975
3282
|
timeout: number;
|
|
2976
3283
|
status?: number | undefined;
|
|
3284
|
+
} | {
|
|
3285
|
+
action: "smartWait";
|
|
3286
|
+
timeout: number;
|
|
3287
|
+
until: "selector" | "networkIdle" | "domStable";
|
|
3288
|
+
displaySpeed: number;
|
|
3289
|
+
selector?: string | undefined;
|
|
2977
3290
|
})[];
|
|
2978
3291
|
captureDelay: number;
|
|
2979
3292
|
holdDuration: number;
|
|
@@ -2985,7 +3298,7 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
2985
3298
|
enabled?: boolean | undefined;
|
|
2986
3299
|
scale?: number | undefined;
|
|
2987
3300
|
intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
|
|
2988
|
-
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
|
|
3301
|
+
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring" | undefined;
|
|
2989
3302
|
autoZoom?: {
|
|
2990
3303
|
followCursor: boolean;
|
|
2991
3304
|
maxScale: number;
|
|
@@ -3027,6 +3340,13 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
3027
3340
|
actionSpeed?: number | undefined;
|
|
3028
3341
|
transitionFrames?: number | undefined;
|
|
3029
3342
|
} | undefined;
|
|
3343
|
+
smartSpeed?: {
|
|
3344
|
+
transitionDuration?: number | undefined;
|
|
3345
|
+
enabled?: boolean | undefined;
|
|
3346
|
+
idleSpeed?: number | undefined;
|
|
3347
|
+
waitSpeed?: number | undefined;
|
|
3348
|
+
minSegmentDuration?: number | undefined;
|
|
3349
|
+
} | undefined;
|
|
3030
3350
|
keystroke?: {
|
|
3031
3351
|
padding?: number | undefined;
|
|
3032
3352
|
enabled?: boolean | undefined;
|
|
@@ -3113,6 +3433,12 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
3113
3433
|
url: string;
|
|
3114
3434
|
status?: number | undefined;
|
|
3115
3435
|
timeout?: number | undefined;
|
|
3436
|
+
} | {
|
|
3437
|
+
action: "smartWait";
|
|
3438
|
+
selector?: string | undefined;
|
|
3439
|
+
timeout?: number | undefined;
|
|
3440
|
+
until?: "selector" | "networkIdle" | "domStable" | undefined;
|
|
3441
|
+
displaySpeed?: number | undefined;
|
|
3116
3442
|
})[];
|
|
3117
3443
|
name?: string | undefined;
|
|
3118
3444
|
captureDelay?: number | undefined;
|
|
@@ -3124,7 +3450,7 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
3124
3450
|
enabled?: boolean | undefined;
|
|
3125
3451
|
scale?: number | undefined;
|
|
3126
3452
|
intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
|
|
3127
|
-
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
|
|
3453
|
+
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring" | undefined;
|
|
3128
3454
|
autoZoom?: {
|
|
3129
3455
|
followCursor?: boolean | undefined;
|
|
3130
3456
|
maxScale?: number | undefined;
|
|
@@ -3166,6 +3492,13 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
3166
3492
|
actionSpeed?: number | undefined;
|
|
3167
3493
|
transitionFrames?: number | undefined;
|
|
3168
3494
|
} | undefined;
|
|
3495
|
+
smartSpeed?: {
|
|
3496
|
+
transitionDuration?: number | undefined;
|
|
3497
|
+
enabled?: boolean | undefined;
|
|
3498
|
+
idleSpeed?: number | undefined;
|
|
3499
|
+
waitSpeed?: number | undefined;
|
|
3500
|
+
minSegmentDuration?: number | undefined;
|
|
3501
|
+
} | undefined;
|
|
3169
3502
|
keystroke?: {
|
|
3170
3503
|
padding?: number | undefined;
|
|
3171
3504
|
enabled?: boolean | undefined;
|
|
@@ -3192,7 +3525,7 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
3192
3525
|
enabled?: boolean | undefined;
|
|
3193
3526
|
scale?: number | undefined;
|
|
3194
3527
|
intensity?: "subtle" | "light" | "moderate" | "strong" | "dramatic" | undefined;
|
|
3195
|
-
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | undefined;
|
|
3528
|
+
easing?: "ease-in-out" | "ease-in" | "ease-out" | "linear" | "spring" | undefined;
|
|
3196
3529
|
autoZoom?: {
|
|
3197
3530
|
followCursor?: boolean | undefined;
|
|
3198
3531
|
maxScale?: number | undefined;
|
|
@@ -3234,6 +3567,13 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
3234
3567
|
actionSpeed?: number | undefined;
|
|
3235
3568
|
transitionFrames?: number | undefined;
|
|
3236
3569
|
} | undefined;
|
|
3570
|
+
smartSpeed?: {
|
|
3571
|
+
transitionDuration?: number | undefined;
|
|
3572
|
+
enabled?: boolean | undefined;
|
|
3573
|
+
idleSpeed?: number | undefined;
|
|
3574
|
+
waitSpeed?: number | undefined;
|
|
3575
|
+
minSegmentDuration?: number | undefined;
|
|
3576
|
+
} | undefined;
|
|
3237
3577
|
keystroke?: {
|
|
3238
3578
|
padding?: number | undefined;
|
|
3239
3579
|
enabled?: boolean | undefined;
|
|
@@ -3265,6 +3605,7 @@ declare const ScenarioSchema: z.ZodObject<{
|
|
|
3265
3605
|
fps?: number | undefined;
|
|
3266
3606
|
quality?: number | undefined;
|
|
3267
3607
|
preset?: "social" | "balanced" | "archive" | undefined;
|
|
3608
|
+
codec?: "auto" | "h264" | "hevc" | "av1" | undefined;
|
|
3268
3609
|
outputDir?: string | undefined;
|
|
3269
3610
|
filename?: string | undefined;
|
|
3270
3611
|
} | undefined;
|
|
@@ -3311,6 +3652,10 @@ interface CapturedFrame {
|
|
|
3311
3652
|
keystrokes?: KeystrokeEvent[];
|
|
3312
3653
|
/** True when the frame was captured during a scroll action. */
|
|
3313
3654
|
isScrolling?: boolean;
|
|
3655
|
+
/** True when the frame was captured during a smartWait period. */
|
|
3656
|
+
isWaitingPhase?: boolean;
|
|
3657
|
+
/** Speed multiplier for this frame when in a smartWait phase. */
|
|
3658
|
+
displaySpeed?: number;
|
|
3314
3659
|
}
|
|
3315
3660
|
interface ComposedFrame {
|
|
3316
3661
|
index: number;
|
|
@@ -3371,6 +3716,12 @@ declare class ClipwiseRecorder {
|
|
|
3371
3716
|
private keystrokeSessionId;
|
|
3372
3717
|
private currentStepIndex;
|
|
3373
3718
|
private isScrolling;
|
|
3719
|
+
private isWaitingPhase;
|
|
3720
|
+
private currentDisplaySpeed?;
|
|
3721
|
+
/** Tracks active infinite CSS animations (spinners/loaders). Count > 0 → loading state. */
|
|
3722
|
+
private activeLoaderAnimations;
|
|
3723
|
+
/** Whether auto-loader detection is active (derived from smartSpeed.enabled). */
|
|
3724
|
+
private loaderDetectionEnabled;
|
|
3374
3725
|
private cursorPosition;
|
|
3375
3726
|
private viewport;
|
|
3376
3727
|
private deviceScaleFactor;
|
|
@@ -3550,6 +3901,15 @@ interface FrameContext {
|
|
|
3550
3901
|
}>;
|
|
3551
3902
|
/** When present, skip redundant per-frame SVG generation for background/watermark/device-frame. */
|
|
3552
3903
|
staticLayers?: StaticLayers;
|
|
3904
|
+
/**
|
|
3905
|
+
* Interpolated focus point override (CSS viewport coordinates).
|
|
3906
|
+
* When set, zoom uses this instead of per-frame click/cursor position,
|
|
3907
|
+
* enabling smooth panning between adjacent click targets within a zone.
|
|
3908
|
+
*/
|
|
3909
|
+
focusOverride?: {
|
|
3910
|
+
x: number;
|
|
3911
|
+
y: number;
|
|
3912
|
+
};
|
|
3553
3913
|
}
|
|
3554
3914
|
|
|
3555
3915
|
declare class CanvasRenderer {
|
|
@@ -3581,10 +3941,33 @@ declare class CanvasRenderer {
|
|
|
3581
3941
|
* Calculate per-frame rendering context (zoom scale, click progress, cursor trail).
|
|
3582
3942
|
*/
|
|
3583
3943
|
private calculateFrameContexts;
|
|
3944
|
+
/**
|
|
3945
|
+
* Interpolate the zoom focus point between adjacent clicks within a zone.
|
|
3946
|
+
*
|
|
3947
|
+
* Without this, the camera jumps instantly from one click position to the
|
|
3948
|
+
* next when a merged zone contains multiple clicks. This method produces
|
|
3949
|
+
* a smooth pan by linearly interpolating between the previous and next
|
|
3950
|
+
* click positions relative to the current frame index.
|
|
3951
|
+
*
|
|
3952
|
+
* Falls back to the nearest click position when the frame is before the
|
|
3953
|
+
* first click or after the last click in the lookup.
|
|
3954
|
+
*/
|
|
3955
|
+
private interpolateFocusInZone;
|
|
3584
3956
|
/**
|
|
3585
3957
|
* Apply speed ramping: slow down near actions, speed up during idle.
|
|
3586
3958
|
*/
|
|
3587
3959
|
private applySpeedRamp;
|
|
3960
|
+
/**
|
|
3961
|
+
* Apply smart speed: compress smartWait periods based on per-frame metadata.
|
|
3962
|
+
*
|
|
3963
|
+
* Unlike applySpeedRamp (which uses click proximity heuristics), smartSpeed
|
|
3964
|
+
* reads the `isWaitingPhase` flag set by the recorder during smartWait actions.
|
|
3965
|
+
* Frames in a waiting phase are downsampled by their `displaySpeed` multiplier.
|
|
3966
|
+
*
|
|
3967
|
+
* Streaming-compatible: each frame is independently decidable (no lookahead
|
|
3968
|
+
* needed), so this can run inline during streaming composition.
|
|
3969
|
+
*/
|
|
3970
|
+
private applySmartSpeed;
|
|
3588
3971
|
/**
|
|
3589
3972
|
* Returns true when no effect requires the full frame array upfront.
|
|
3590
3973
|
*
|
|
@@ -3611,6 +3994,15 @@ declare class CanvasRenderer {
|
|
|
3611
3994
|
* using the same applyTransitionsToStream() logic as composeStream().
|
|
3612
3995
|
*/
|
|
3613
3996
|
composeStreamOnline(source: AsyncIterable<CapturedFrame>): AsyncGenerator<ComposedFrame>;
|
|
3997
|
+
/**
|
|
3998
|
+
* Inline async filter for smartSpeed in streaming pipelines.
|
|
3999
|
+
*
|
|
4000
|
+
* Applies ease-in at the start of a waiting phase: the first
|
|
4001
|
+
* `transitionMargin` frames are kept at normal speed so the loader
|
|
4002
|
+
* is visible, then frames are skipped at displaySpeed rate.
|
|
4003
|
+
* When waiting ends, frames immediately return to normal speed.
|
|
4004
|
+
*/
|
|
4005
|
+
private filterSmartSpeedInline;
|
|
3614
4006
|
/**
|
|
3615
4007
|
* Worker-pool online streaming: dispatches frame i to a worker as soon as
|
|
3616
4008
|
* frame i + transitionFrames has arrived from the source.
|
|
@@ -3871,6 +4263,57 @@ declare function calculatePanOffset(focusPoint: {
|
|
|
3871
4263
|
* Smoothly interpolate (lerp) between current and target zoom values.
|
|
3872
4264
|
*/
|
|
3873
4265
|
declare function lerpZoom(current: number, target: number, factor: number): number;
|
|
4266
|
+
type ZoomEasing = "cubic" | "spring";
|
|
4267
|
+
/**
|
|
4268
|
+
* Critically-damped spring easing — smoother than cubic for zoom transitions.
|
|
4269
|
+
*
|
|
4270
|
+
* Unlike cubic bezier which has a symmetric S-curve, spring easing has a
|
|
4271
|
+
* faster initial response and a more natural deceleration. This produces
|
|
4272
|
+
* the "Screen Studio feel" where zooms snap to their target fluidly.
|
|
4273
|
+
*
|
|
4274
|
+
* The function solves x(t) = 1 - (1 + ωt) · e^(-ωt) for a critically-damped
|
|
4275
|
+
* harmonic oscillator (no overshoot, no bounce).
|
|
4276
|
+
*
|
|
4277
|
+
* @param t - Progress in [0, 1]
|
|
4278
|
+
*/
|
|
4279
|
+
declare function springEasing(t: number): number;
|
|
4280
|
+
/**
|
|
4281
|
+
* Apply the selected easing function.
|
|
4282
|
+
*/
|
|
4283
|
+
declare function applyZoomEasing(t: number, easing?: ZoomEasing): number;
|
|
4284
|
+
interface ZoomZone {
|
|
4285
|
+
/** First click frame index in the zone */
|
|
4286
|
+
start: number;
|
|
4287
|
+
/** Last click frame index in the zone */
|
|
4288
|
+
end: number;
|
|
4289
|
+
}
|
|
4290
|
+
/**
|
|
4291
|
+
* Merge nearby clicks into continuous "zoom zones".
|
|
4292
|
+
*
|
|
4293
|
+
* When two clicks are fewer than `mergeGap` frames apart, they belong to the
|
|
4294
|
+
* same zone. Frames INSIDE a zone stay at full zoom (with smooth pan between
|
|
4295
|
+
* focus points), frames OUTSIDE ease in/out with transition curves.
|
|
4296
|
+
*
|
|
4297
|
+
* This eliminates the jarring zoom-out → zoom-in pattern that occurs when
|
|
4298
|
+
* multiple interactions happen in the same UI region.
|
|
4299
|
+
*
|
|
4300
|
+
* @param clickLookup Sorted click frame indices from buildZoomClickLookup()
|
|
4301
|
+
* @param mergeGap Maximum frame gap to merge (default: transitionFrames × 1.5)
|
|
4302
|
+
*/
|
|
4303
|
+
declare function mergeClickZones(clickLookup: readonly number[], mergeGap: number): ZoomZone[];
|
|
4304
|
+
/**
|
|
4305
|
+
* Calculate adaptive zoom scale using merged click zones + spring easing.
|
|
4306
|
+
*
|
|
4307
|
+
* - Inside a zone → full maxScale (smooth hold)
|
|
4308
|
+
* - Transition in/out → spring-eased interpolation
|
|
4309
|
+
* - Outside all zones → 1.0 (no zoom)
|
|
4310
|
+
*
|
|
4311
|
+
* This is the recommended API for Phase 2 and later — replaces
|
|
4312
|
+
* calculateAdaptiveZoomFromLookup() when zone-aware zoom is enabled.
|
|
4313
|
+
*
|
|
4314
|
+
* O(log z) per call via binary search on zones.
|
|
4315
|
+
*/
|
|
4316
|
+
declare function calculateAdaptiveZoomFromZones(zones: readonly ZoomZone[], currentIndex: number, maxScale: number, transitionFrames: number, easing?: ZoomEasing): number;
|
|
3874
4317
|
|
|
3875
4318
|
type CursorEffect = EffectsConfig["cursor"];
|
|
3876
4319
|
/**
|
|
@@ -3967,4 +4410,4 @@ interface ValidationResult {
|
|
|
3967
4410
|
*/
|
|
3968
4411
|
declare function validateScenario(scenario: Scenario): ValidationResult;
|
|
3969
4412
|
|
|
3970
|
-
export { type AudioConfig, CanvasRenderer, type CapturedFrame, ClipwiseRecorder, type ComposedFrame, type ConcurrentResult, ConcurrentSession, type EffectsConfig, type FrameContext, type KeystrokeEvent, type OutputConfig, type PipelineProgress, type RecordingHandle, type RecordingSession, type Scenario, type Step, type StepAction, type StepEffectsOverride, StreamingSession, type TransitionType, ZOOM_INTENSITY_SCALES, type ZoomIntensity, applyBlur, applyCrossfade, applySlide, applyTransition, buildZoomClickLookup, calculateAdaptiveZoom, calculateAdaptiveZoomFromLookup, calculateAdaptiveZoomInWindow, calculatePanOffset, encodeGif, encodeMp4, encodeMp4Stream, lerpZoom, loadScenario, parseScenario, renderCursorHighlight, renderCursorTrail, renderKeystrokeHud, renderWatermark, resolveZoomScale, savePngSequence, validateScenario };
|
|
4413
|
+
export { type AudioConfig, CanvasRenderer, type CapturedFrame, ClipwiseRecorder, type ComposedFrame, type ConcurrentResult, ConcurrentSession, type EffectsConfig, type FrameContext, type KeystrokeEvent, type OutputConfig, type PipelineProgress, type RecordingHandle, type RecordingSession, type Scenario, type Step, type StepAction, type StepEffectsOverride, StreamingSession, type TransitionType, ZOOM_INTENSITY_SCALES, type ZoomEasing, type ZoomIntensity, type ZoomZone, applyBlur, applyCrossfade, applySlide, applyTransition, applyZoomEasing, buildZoomClickLookup, calculateAdaptiveZoom, calculateAdaptiveZoomFromLookup, calculateAdaptiveZoomFromZones, calculateAdaptiveZoomInWindow, calculatePanOffset, encodeGif, encodeMp4, encodeMp4Stream, lerpZoom, loadScenario, mergeClickZones, parseScenario, renderCursorHighlight, renderCursorTrail, renderKeystrokeHud, renderWatermark, resolveZoomScale, savePngSequence, springEasing, validateScenario };
|