screenci 0.0.89 → 0.0.91

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 (130) hide show
  1. package/dist/cli.d.ts +39 -1
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +357 -75
  4. package/dist/cli.js.map +1 -1
  5. package/dist/docs/manifest.d.ts +29 -29
  6. package/dist/docs/manifest.js +9 -9
  7. package/dist/docs/manifest.js.map +1 -1
  8. package/dist/docs/video-sources/assets/StyleCard.d.ts +4 -0
  9. package/dist/docs/video-sources/assets/StyleCard.d.ts.map +1 -0
  10. package/dist/docs/video-sources/assets/StyleCard.js +27 -0
  11. package/dist/docs/video-sources/assets/StyleCard.js.map +1 -0
  12. package/dist/docs/video-sources/camera-and-zooming.screenci.js +2 -9
  13. package/dist/docs/video-sources/camera-and-zooming.screenci.js.map +1 -1
  14. package/dist/docs/video-sources/editor.screenci.d.ts +2 -0
  15. package/dist/docs/video-sources/editor.screenci.d.ts.map +1 -0
  16. package/dist/docs/video-sources/{studio.screenci.js → editor.screenci.js} +18 -19
  17. package/dist/docs/video-sources/editor.screenci.js.map +1 -0
  18. package/dist/docs/video-sources/languages.screenci.js +12 -12
  19. package/dist/docs/video-sources/languages.screenci.js.map +1 -1
  20. package/dist/docs/video-sources/locator-highlight-animated.screenci.js +2 -15
  21. package/dist/docs/video-sources/locator-highlight-animated.screenci.js.map +1 -1
  22. package/dist/docs/video-sources/locator-highlight-still.screenci.js +2 -1
  23. package/dist/docs/video-sources/locator-highlight-still.screenci.js.map +1 -1
  24. package/dist/docs/video-sources/narration.screenci.js +11 -11
  25. package/dist/docs/video-sources/narration.screenci.js.map +1 -1
  26. package/dist/docs/video-sources/public-urls-and-embeds.screenci.js +2 -2
  27. package/dist/docs/video-sources/public-urls-and-embeds.screenci.js.map +1 -1
  28. package/dist/docs/video-sources/speaking-style.screenci.js +4 -28
  29. package/dist/docs/video-sources/speaking-style.screenci.js.map +1 -1
  30. package/dist/docs/videos.d.ts +2 -2
  31. package/dist/docs/videos.js +2 -2
  32. package/dist/e2e/fixtures/ClientCounter.d.ts +5 -0
  33. package/dist/e2e/fixtures/ClientCounter.d.ts.map +1 -0
  34. package/dist/e2e/fixtures/ClientCounter.js +29 -0
  35. package/dist/e2e/fixtures/ClientCounter.js.map +1 -0
  36. package/dist/e2e/htmlRasterizer.e2e.js +104 -23
  37. package/dist/e2e/htmlRasterizer.e2e.js.map +1 -1
  38. package/dist/index.d.ts +4 -5
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +4 -5
  41. package/dist/index.js.map +1 -1
  42. package/dist/src/anonSession.d.ts +20 -6
  43. package/dist/src/anonSession.d.ts.map +1 -1
  44. package/dist/src/anonSession.js +60 -13
  45. package/dist/src/anonSession.js.map +1 -1
  46. package/dist/src/asset.d.ts +68 -100
  47. package/dist/src/asset.d.ts.map +1 -1
  48. package/dist/src/asset.js +134 -289
  49. package/dist/src/asset.js.map +1 -1
  50. package/dist/src/audio.d.ts +1 -1
  51. package/dist/src/audio.js +1 -1
  52. package/dist/src/builder.d.ts +25 -25
  53. package/dist/src/builder.d.ts.map +1 -1
  54. package/dist/src/builder.js +8 -8
  55. package/dist/src/builder.js.map +1 -1
  56. package/dist/src/clientOverlay.d.ts +29 -0
  57. package/dist/src/clientOverlay.d.ts.map +1 -0
  58. package/dist/src/clientOverlay.js +83 -0
  59. package/dist/src/clientOverlay.js.map +1 -0
  60. package/dist/src/cue.d.ts +9 -9
  61. package/dist/src/cue.d.ts.map +1 -1
  62. package/dist/src/cue.js +6 -6
  63. package/dist/src/cue.js.map +1 -1
  64. package/dist/src/declare.d.ts +6 -6
  65. package/dist/src/declare.d.ts.map +1 -1
  66. package/dist/src/declare.js +9 -9
  67. package/dist/src/declare.js.map +1 -1
  68. package/dist/src/events.d.ts +14 -46
  69. package/dist/src/events.d.ts.map +1 -1
  70. package/dist/src/events.js +14 -24
  71. package/dist/src/events.js.map +1 -1
  72. package/dist/src/htmlRasterizer.d.ts +21 -42
  73. package/dist/src/htmlRasterizer.d.ts.map +1 -1
  74. package/dist/src/htmlRasterizer.js +47 -66
  75. package/dist/src/htmlRasterizer.js.map +1 -1
  76. package/dist/src/init.d.ts +2 -1
  77. package/dist/src/init.d.ts.map +1 -1
  78. package/dist/src/init.js +131 -137
  79. package/dist/src/init.js.map +1 -1
  80. package/dist/src/instrument.d.ts.map +1 -1
  81. package/dist/src/instrument.js +146 -0
  82. package/dist/src/instrument.js.map +1 -1
  83. package/dist/src/localize.d.ts +17 -11
  84. package/dist/src/localize.d.ts.map +1 -1
  85. package/dist/src/localize.js +1 -1
  86. package/dist/src/localize.js.map +1 -1
  87. package/dist/src/localizeRuntime.d.ts +8 -8
  88. package/dist/src/localizeRuntime.d.ts.map +1 -1
  89. package/dist/src/localizeRuntime.js +4 -4
  90. package/dist/src/localizeRuntime.js.map +1 -1
  91. package/dist/src/manualZoom.d.ts.map +1 -1
  92. package/dist/src/manualZoom.js +8 -3
  93. package/dist/src/manualZoom.js.map +1 -1
  94. package/dist/src/overlayFlush.js +6 -6
  95. package/dist/src/overlayFlush.js.map +1 -1
  96. package/dist/src/recordingData.d.ts +2 -2
  97. package/dist/src/runtimeContext.d.ts +0 -11
  98. package/dist/src/runtimeContext.d.ts.map +1 -1
  99. package/dist/src/runtimeContext.js +0 -7
  100. package/dist/src/runtimeContext.js.map +1 -1
  101. package/dist/src/screenshot.d.ts +7 -7
  102. package/dist/src/screenshot.d.ts.map +1 -1
  103. package/dist/src/studio.d.ts +41 -38
  104. package/dist/src/studio.d.ts.map +1 -1
  105. package/dist/src/studio.js +9 -9
  106. package/dist/src/studio.js.map +1 -1
  107. package/dist/src/types.d.ts +19 -10
  108. package/dist/src/types.d.ts.map +1 -1
  109. package/dist/src/video.d.ts +15 -15
  110. package/dist/src/video.d.ts.map +1 -1
  111. package/dist/src/video.js +10 -10
  112. package/dist/src/video.js.map +1 -1
  113. package/dist/src/voiceConfig.d.ts +26 -7
  114. package/dist/src/voiceConfig.d.ts.map +1 -1
  115. package/dist/src/voices.d.ts +22 -2
  116. package/dist/src/voices.d.ts.map +1 -1
  117. package/dist/src/voices.js +18 -0
  118. package/dist/src/voices.js.map +1 -1
  119. package/dist/tsconfig.tsbuildinfo +1 -1
  120. package/package.json +6 -1
  121. package/skills/screenci/SKILL.md +1 -1
  122. package/skills/screenci/references/init.md +8 -1
  123. package/skills/screenci/references/record.md +1 -1
  124. package/dist/docs/video-sources/studio.screenci.d.ts +0 -2
  125. package/dist/docs/video-sources/studio.screenci.d.ts.map +0 -1
  126. package/dist/docs/video-sources/studio.screenci.js.map +0 -1
  127. package/dist/src/recordingSize.d.ts +0 -32
  128. package/dist/src/recordingSize.d.ts.map +0 -1
  129. package/dist/src/recordingSize.js +0 -54
  130. package/dist/src/recordingSize.js.map +0 -1
@@ -2,17 +2,17 @@ import { hide, resetZoom, video, voices, zoomTo } from 'screenci';
2
2
  video.use({
3
3
  renderOptions: {
4
4
  narration: {
5
- voice: { name: voices.Sophie, style: 'Friendly product guide' },
5
+ voice: { name: voices.Ava, style: 'Friendly product guide' },
6
6
  },
7
7
  },
8
8
  });
9
9
  const appUrl = process.env.SCREENCI_APP_URL ?? 'https://app.screenci.com/';
10
10
  // Narration walkthrough recorded against the ScreenCI app (app.screenci.com) for
11
11
  // the Narration guide. It explains cue-based narration out loud, then shows the
12
- // Studio narration editor where teammates manage the spoken text without code.
13
- // Studio lives behind auth, so recording this needs a logged-in session: set
12
+ // web editor where teammates manage the spoken text without code. The Editor
13
+ // requires auth to record, so set
14
14
  // SCREENCI_APP_STORAGE_STATE to a Playwright storageState JSON (see
15
- // screenci.config.ts). The navigation mirrors studio.screenci.ts.
15
+ // screenci.config.ts). The navigation mirrors editor.screenci.ts.
16
16
  //
17
17
  // The logo intro (assets/logo.png) is gitignored: it is uploaded to the ScreenCI
18
18
  // backend on the first record and reused on later runs (CI included).
@@ -24,16 +24,16 @@ video
24
24
  en: {
25
25
  intro: 'Narration is cue based: you attach a script, then mark where speech starts.',
26
26
  overlap: 'A cue can start, run while the interface moves, and end on your mark.',
27
- studio: 'On the Business tier, teammates manage the same narration in Studio.',
27
+ editor: 'Teammates manage the same narration in the web editor.',
28
28
  outro: 'Change the words and re-render, with no re-recording required.',
29
29
  },
30
30
  })('Narration walkthrough', async ({ page, narration, overlays }) => {
31
- // Studio lives behind auth (SCREENCI_APP_STORAGE_STATE, see screenci.config.ts).
32
- // Skip rather than stall on the login page when the session is not configured.
31
+ // The Editor requires auth (SCREENCI_APP_STORAGE_STATE, see screenci.config.ts).
32
+ // Fail before stalling on the login page when the session is not configured.
33
33
  if (!process.env.SCREENCI_APP_STORAGE_STATE) {
34
34
  throw new Error('Not logged in. Record via `scripts/screenci.sh docs <env> record` (it signs in first), or set SCREENCI_APP_STORAGE_STATE to a Playwright storageState.');
35
35
  }
36
- // Open a finished video's Studio page without showing the navigation.
36
+ // Open a finished video's Editor page without showing the navigation.
37
37
  await hide(async () => {
38
38
  await page.goto(appUrl);
39
39
  await page.waitForLoadState('networkidle');
@@ -50,13 +50,13 @@ video
50
50
  .first()
51
51
  .click();
52
52
  await page
53
- .getByRole('heading', { name: /^studio$/i })
53
+ .getByRole('heading', { name: /^editor$/i })
54
54
  .waitFor({ timeout: 30000 });
55
55
  });
56
56
  // Brand intro, then explain the cue model out loud.
57
57
  await overlays.logo.for('2s');
58
58
  await narration.intro();
59
- // Frame the Studio narration section while explaining overlap and Studio editing.
59
+ // Frame the Editor narration section while explaining overlap and web editing.
60
60
  await narration.overlap.start();
61
61
  const narrationHeading = page
62
62
  .getByRole('heading', { name: /narration/i })
@@ -67,7 +67,7 @@ video
67
67
  await resetZoom();
68
68
  }
69
69
  await narration.overlap.end();
70
- await narration.studio();
70
+ await narration.editor();
71
71
  await narration.outro();
72
72
  });
73
73
  //# sourceMappingURL=narration.screenci.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"narration.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/narration.screenci.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"narration.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/narration.screenci.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { hide, resetZoom, video, voices, zoomTo } from 'screenci';
2
2
  video.use({
3
3
  renderOptions: {
4
4
  narration: {
5
- voice: { name: voices.Sophie, style: 'Friendly product guide' },
5
+ voice: { name: voices.Ava, style: 'Friendly product guide' },
6
6
  },
7
7
  },
8
8
  });
@@ -11,7 +11,7 @@ const appUrl = process.env.SCREENCI_APP_URL ?? 'https://app.screenci.com/';
11
11
  // the Public URLs and Embeds guide. It opens a finished video and highlights the
12
12
  // Enable public URL switch that mints stable, language-specific delivery URLs.
13
13
  // Recording needs a logged-in session: set SCREENCI_APP_STORAGE_STATE (see
14
- // screenci.config.ts). The navigation mirrors studio.screenci.ts up to the video
14
+ // screenci.config.ts). The navigation mirrors the Editor walkthrough up to the video
15
15
  // page.
16
16
  //
17
17
  // The logo intro (assets/logo.png) is gitignored: it is uploaded on the first
@@ -1 +1 @@
1
- {"version":3,"file":"public-urls-and-embeds.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/public-urls-and-embeds.screenci.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public-urls-and-embeds.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/public-urls-and-embeds.screenci.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjE,KAAK,CAAC,GAAG,CAAC;IACR,aAAa,EAAE;QACb,SAAS,EAAE;YACT,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,wBAAwB,EAAE;SAC7D;KACF;CACF,CAAC,CAAA;AAEF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,2BAA2B,CAAA;AAE1E,mFAAmF;AACnF,iFAAiF;AACjF,+EAA+E;AAC/E,2EAA2E;AAC3E,qFAAqF;AACrF,QAAQ;AACR,EAAE;AACF,8EAA8E;AAC9E,iDAAiD;AACjD,KAAK;KACF,QAAQ,CAAC;IACR,IAAI,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE;CACvE,CAAC;KACD,SAAS,CAAC;IACT,EAAE,EAAE;QACF,KAAK,EAAE,8DAA8D;QACrE,MAAM,EAAE,8DAA8D;QACtE,IAAI,EAAE,iEAAiE;QACvE,KAAK,EAAE,sDAAsD;KAC9D;CACF,CAAC,CAAC,wBAAwB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;IACrE,6EAA6E;IAC7E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,wJAAwJ,CACzJ,CAAA;IACH,CAAC;IAED,6DAA6D;IAC7D,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACvB,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAA;QAE1C,MAAM,IAAI;aACP,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;aAC1C,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;QAC9B,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAA;QACzE,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAA;QACxD,MAAM,IAAI;aACP,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC;aACpD,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC7B,MAAM,SAAS,CAAC,KAAK,EAAE,CAAA;IAEvB,mEAAmE;IACnE,MAAM,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAA;IAClE,IAAI,MAAM,aAAa,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;QAC3B,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;QAC9B,MAAM,SAAS,EAAE,CAAA;IACnB,CAAC;IACD,MAAM,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;IAE5B,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;IACtB,MAAM,SAAS,CAAC,KAAK,EAAE,CAAA;AACzB,CAAC,CAAC,CAAA"}
@@ -4,36 +4,12 @@ import { hide, modelTypes, video, voices } from 'screenci';
4
4
  // however far out you want to go: the expressive model takes styles from a
5
5
  // straight product guide all the way to a swashbuckling pirate. The style prompt
6
6
  // for each line is overlaid on screen as a text card (one named overlay per
7
- // style, so each renders its own asset).
7
+ // style, so each renders its own asset). Each card is the same .tsx page overlay
8
+ // (assets/StyleCard.tsx) with a different `text` prop.
8
9
  function styleCard(text) {
9
10
  return {
10
- html: '<div class="ss-card">' +
11
- '<span class="ss-kicker">Speaking style</span>' +
12
- `<span class="ss-text">${text}</span>` +
13
- '</div>',
14
- css: `
15
- .ss-card {
16
- display: inline-flex;
17
- flex-direction: column;
18
- gap: 6px;
19
- box-sizing: border-box;
20
- padding: 18px 28px;
21
- border-radius: 18px;
22
- font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif;
23
- color: #ffffff;
24
- background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 55%, #ec4899 100%);
25
- border: 1px solid rgba(255, 255, 255, 0.28);
26
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.35);
27
- }
28
- .ss-kicker {
29
- font-size: 13px;
30
- font-weight: 600;
31
- letter-spacing: 0.18em;
32
- text-transform: uppercase;
33
- opacity: 0.85;
34
- }
35
- .ss-text { font-size: 30px; font-weight: 700; letter-spacing: -0.01em; }
36
- `,
11
+ path: './assets/StyleCard.tsx',
12
+ props: { text },
37
13
  x: 96,
38
14
  y: 880,
39
15
  width: 1000,
@@ -1 +1 @@
1
- {"version":3,"file":"speaking-style.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/speaking-style.screenci.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"speaking-style.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/speaking-style.screenci.ts"],"names":[],"mappings":"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"}
@@ -46,8 +46,8 @@ export declare const docsVideoRegistry: {
46
46
  readonly sourcePath: "screenci/docs/video-sources/languages.screenci.ts";
47
47
  readonly showSource: false;
48
48
  };
49
- readonly 'docs/guides/studio': {
50
- readonly sourcePath: "screenci/docs/video-sources/studio.screenci.ts";
49
+ readonly 'docs/guides/editor': {
50
+ readonly sourcePath: "screenci/docs/video-sources/editor.screenci.ts";
51
51
  readonly showSource: false;
52
52
  };
53
53
  readonly 'docs/guides/public-urls-and-embeds': {
@@ -34,8 +34,8 @@ export const docsVideoRegistry = {
34
34
  sourcePath: 'screenci/docs/video-sources/languages.screenci.ts',
35
35
  showSource: false,
36
36
  },
37
- 'docs/guides/studio': {
38
- sourcePath: 'screenci/docs/video-sources/studio.screenci.ts',
37
+ 'docs/guides/editor': {
38
+ sourcePath: 'screenci/docs/video-sources/editor.screenci.ts',
39
39
  showSource: false,
40
40
  },
41
41
  'docs/guides/public-urls-and-embeds': {
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export default function ClientCounter({ to }: {
3
+ to?: number;
4
+ }): React.JSX.Element;
5
+ //# sourceMappingURL=ClientCounter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientCounter.d.ts","sourceRoot":"","sources":["../../../e2e/fixtures/ClientCounter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAMlD,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,EAAQ,EAAE,EAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,qBA4BlE"}
@@ -0,0 +1,29 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useState, useEffect } from 'react';
3
+ // Fixture for the client-rendered overlay e2e test: a normal React component with
4
+ // a hook and an effect. When bundled and mounted in the overlay page under the
5
+ // capture clock, the effect's requestAnimationFrame animates the value, proving
6
+ // hooks/effects run during capture.
7
+ export default function ClientCounter({ to = 100 }) {
8
+ const [n, setN] = useState(0);
9
+ useEffect(() => {
10
+ const start = Date.now();
11
+ let raf = 0;
12
+ const tick = () => {
13
+ const t = Math.min(1, (Date.now() - start) / 500);
14
+ setN(Math.round(t * to));
15
+ if (t < 1)
16
+ raf = requestAnimationFrame(tick);
17
+ };
18
+ tick();
19
+ return () => cancelAnimationFrame(raf);
20
+ }, [to]);
21
+ return (_jsx("div", { id: "counter", "data-n": n, style: {
22
+ width: 200,
23
+ height: 80,
24
+ color: '#fff',
25
+ background: '#111',
26
+ font: '700 40px system-ui',
27
+ }, children: n }));
28
+ }
29
+ //# sourceMappingURL=ClientCounter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientCounter.js","sourceRoot":"","sources":["../../../e2e/fixtures/ClientCounter.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAElD,kFAAkF;AAClF,+EAA+E;AAC/E,gFAAgF;AAChF,oCAAoC;AACpC,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,EAAE,GAAG,GAAG,EAAmB;IACjE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC7B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACxB,IAAI,GAAG,GAAG,CAAC,CAAA;QACX,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAA;YACjD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YACxB,IAAI,CAAC,GAAG,CAAC;gBAAE,GAAG,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;QAC9C,CAAC,CAAA;QACD,IAAI,EAAE,CAAA;QACN,OAAO,GAAG,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAA;IACxC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACR,OAAO,CACL,cACE,EAAE,EAAC,SAAS,YACJ,CAAC,EACT,KAAK,EAAE;YACL,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,MAAM;YACb,UAAU,EAAE,MAAM;YAClB,IAAI,EAAE,oBAAoB;SAC3B,YAEA,CAAC,GACE,CACP,CAAA;AACH,CAAC"}
@@ -1,20 +1,31 @@
1
1
  import { test, expect } from '@playwright/test';
2
2
  import { mkdtemp, rm, readFile } from 'fs/promises';
3
3
  import { tmpdir } from 'os';
4
- import { join } from 'path';
4
+ import { dirname, join } from 'path';
5
+ import { fileURLToPath } from 'url';
5
6
  import { spawnSync } from 'child_process';
6
7
  import ffmpegStatic from 'ffmpeg-static';
7
8
  import { rasterizeAnimatedHtmlOverlay, rasterizeHtmlOverlay, } from '../src/htmlRasterizer.js';
9
+ import { buildClientOverlayDocument } from '../src/clientOverlay.js';
8
10
  import { createScreenCIRuntimeContext, runWithScreenCIRuntimeContext, } from '../src/runtimeContext.js';
11
+ const clientCounterEntry = join(dirname(fileURLToPath(import.meta.url)), 'fixtures', 'ClientCounter.tsx');
9
12
  const PNG_SIGNATURE = Buffer.from([
10
13
  0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a,
11
14
  ]);
12
- test('rasterizes HTML to a transparent PNG sized to its content', async ({ page, }) => {
15
+ // A complete overlay document with the content wrapped in the capture root, the
16
+ // shape the rasterizer expects for a `.html` page overlay.
17
+ function doc(inner) {
18
+ return ('<!doctype html><html><head><meta charset="utf-8"><style>' +
19
+ 'html,body{margin:0;padding:0;background:transparent}' +
20
+ '#screenci-overlay-root{display:inline-block}' +
21
+ `</style></head><body><div id="screenci-overlay-root">${inner}</div></body></html>`);
22
+ }
23
+ test('rasterizes a full HTML document to a transparent PNG sized to the overlay root', async ({ page, }) => {
13
24
  const dir = await mkdtemp(join(tmpdir(), 'screenci-html-e2e-'));
14
25
  try {
15
26
  const result = await runWithScreenCIRuntimeContext(createScreenCIRuntimeContext({ page, recordingDir: dir }), () => rasterizeHtmlOverlay({
16
27
  name: 'badge',
17
- html: '<div style="width:200px;height:80px;background:#f00">hi</div>',
28
+ html: doc('<div style="width:200px;height:80px;background:#f00">hi</div>'),
18
29
  }));
19
30
  // boundingBox is reported in CSS pixels (the underlying PNG is rendered at
20
31
  // the device scale factor for crispness).
@@ -28,12 +39,30 @@ test('rasterizes HTML to a transparent PNG sized to its content', async ({ page,
28
39
  await rm(dir, { recursive: true, force: true });
29
40
  }
30
41
  });
42
+ test('captures the document body when the page has no overlay root', async ({ page, }) => {
43
+ const dir = await mkdtemp(join(tmpdir(), 'screenci-html-body-e2e-'));
44
+ try {
45
+ const result = await runWithScreenCIRuntimeContext(createScreenCIRuntimeContext({ page, recordingDir: dir }), () => rasterizeHtmlOverlay({
46
+ name: 'no-root',
47
+ html: '<!doctype html><html><head><meta charset="utf-8">' +
48
+ '<style>html,body{margin:0;background:transparent}' +
49
+ 'body{width:320px;height:90px}</style></head>' +
50
+ '<body><div style="width:100%;height:100%;background:#08f"></div></body></html>',
51
+ }));
52
+ // Falls back to the body's box (sized by the page's own CSS).
53
+ expect(result.width).toBe(320);
54
+ expect(result.height).toBe(90);
55
+ }
56
+ finally {
57
+ await rm(dir, { recursive: true, force: true });
58
+ }
59
+ });
31
60
  test('does not require a fixed viewport: content larger than the default viewport still renders', async ({ page, }) => {
32
61
  const dir = await mkdtemp(join(tmpdir(), 'screenci-html-e2e-'));
33
62
  try {
34
63
  const result = await runWithScreenCIRuntimeContext(createScreenCIRuntimeContext({ page, recordingDir: dir }), () => rasterizeHtmlOverlay({
35
64
  name: 'wide',
36
- html: '<div style="width:640px;height:120px;background:#0a0"></div>',
65
+ html: doc('<div style="width:640px;height:120px;background:#0a0"></div>'),
37
66
  }));
38
67
  expect(result.width).toBe(640);
39
68
  expect(result.height).toBe(120);
@@ -47,9 +76,9 @@ test('rasterizes an animated overlay to a two-stream transparent clip', async ({
47
76
  try {
48
77
  const result = await runWithScreenCIRuntimeContext(createScreenCIRuntimeContext({ page, recordingDir: dir }), () => rasterizeAnimatedHtmlOverlay({
49
78
  name: 'intro',
50
- html: '<div style="width:200px;height:80px;background:#f00;' +
79
+ html: doc('<div style="width:200px;height:80px;background:#f00;' +
51
80
  'animation:fade 1s linear">hi' +
52
- '<style>@keyframes fade{from{opacity:0}to{opacity:1}}</style></div>',
81
+ '<style>@keyframes fade{from{opacity:0}to{opacity:1}}</style></div>'),
53
82
  durationMs: 500,
54
83
  fps: 30,
55
84
  }));
@@ -72,33 +101,85 @@ test('rasterizes an animated overlay to a two-stream transparent clip', async ({
72
101
  await rm(dir, { recursive: true, force: true });
73
102
  }
74
103
  });
75
- test('applies injected css so overlays can be styled with className', async ({ page, }) => {
76
- const dir = await mkdtemp(join(tmpdir(), 'screenci-css-e2e-'));
104
+ test('captures a JS-driven (requestAnimationFrame) animated overlay from a full document', async ({ page, }) => {
105
+ const dir = await mkdtemp(join(tmpdir(), 'screenci-script-anim-e2e-'));
77
106
  try {
78
- const result = await runWithScreenCIRuntimeContext(createScreenCIRuntimeContext({ page, recordingDir: dir }), () => rasterizeHtmlOverlay({
79
- name: 'card',
80
- html: '<div class="box"></div>',
81
- css: '.box{width:120px;height:60px;background:#f00}',
107
+ // A full document whose own <script> widens a bar from 0 to 300px over 1s via
108
+ // requestAnimationFrame, reading the virtual clock the capture advances. A
109
+ // reserved 300x40 root keeps the captured box constant while the bar animates.
110
+ const html = doc('<div style="width:300px;height:40px">' +
111
+ '<div id="bar" style="width:0px;height:40px;background:#0a0"></div></div>' +
112
+ '<script>var bar=document.getElementById("bar");' +
113
+ 'function f(){bar.style.width=Math.min(300,Date.now()/1000*300)+"px";' +
114
+ 'requestAnimationFrame(f);}f();</script>');
115
+ const result = await runWithScreenCIRuntimeContext(createScreenCIRuntimeContext({ page, recordingDir: dir }), () => rasterizeAnimatedHtmlOverlay({
116
+ name: 'scripted-anim',
117
+ html,
118
+ durationMs: 1000,
119
+ fps: 30,
82
120
  }));
83
- // Without injected CSS the bare <div> would collapse; the className sizes it.
84
- expect(result.width).toBe(120);
85
- expect(result.height).toBe(60);
121
+ expect(result.width).toBe(300);
122
+ expect(result.height).toBe(40);
123
+ expect(result.durationMs).toBe(1000);
124
+ expect(result.path.endsWith('.mp4')).toBe(true);
125
+ const ffmpegPath = ffmpegStatic;
126
+ const probe = spawnSync(ffmpegPath, ['-hide_banner', '-i', result.path], {
127
+ encoding: 'utf8',
128
+ });
129
+ const info = `${probe.stdout ?? ''}${probe.stderr ?? ''}`;
130
+ const videoStreams = (info.match(/Stream #0:\d+.*Video:/g) ?? []).length;
131
+ expect(videoStreams).toBe(2);
86
132
  }
87
133
  finally {
88
134
  await rm(dir, { recursive: true, force: true });
89
135
  }
90
136
  });
91
- test('capturePadding grows the captured box around the content', async ({ page, }) => {
92
- const dir = await mkdtemp(join(tmpdir(), 'screenci-pad-e2e-'));
137
+ test('mounts a client-rendered (.tsx) React overlay (still) and sizes to it', async ({ page, }) => {
138
+ const dir = await mkdtemp(join(tmpdir(), 'screenci-client-still-e2e-'));
93
139
  try {
140
+ // Bundle a real React component into a full host document and mount it
141
+ // client-side; awaitMount waits for React to commit before the box is
142
+ // measured, so an empty root is not captured.
143
+ const html = await buildClientOverlayDocument(clientCounterEntry, {
144
+ to: 100,
145
+ });
94
146
  const result = await runWithScreenCIRuntimeContext(createScreenCIRuntimeContext({ page, recordingDir: dir }), () => rasterizeHtmlOverlay({
95
- name: 'padded',
96
- html: '<div style="width:200px;height:80px;background:#0a0"></div>',
97
- capturePadding: 40,
147
+ name: 'client-still',
148
+ html,
149
+ awaitMount: true,
150
+ }));
151
+ // The mounted component is 200x80; without awaitMount the empty root is 0x0.
152
+ expect(result.width).toBe(200);
153
+ expect(result.height).toBe(80);
154
+ }
155
+ finally {
156
+ await rm(dir, { recursive: true, force: true });
157
+ }
158
+ });
159
+ test('captures a client-rendered (.tsx) React overlay with hooks + effects (animated)', async ({ page, }) => {
160
+ const dir = await mkdtemp(join(tmpdir(), 'screenci-client-anim-e2e-'));
161
+ try {
162
+ const html = await buildClientOverlayDocument(clientCounterEntry, {
163
+ to: 100,
164
+ });
165
+ const result = await runWithScreenCIRuntimeContext(createScreenCIRuntimeContext({ page, recordingDir: dir }), () => rasterizeAnimatedHtmlOverlay({
166
+ name: 'client-anim',
167
+ html,
168
+ awaitMount: true,
169
+ durationMs: 600,
170
+ fps: 30,
98
171
  }));
99
- // 40px of transparent padding on every side: 200+80 x 80+80.
100
- expect(result.width).toBe(280);
101
- expect(result.height).toBe(160);
172
+ expect(result.width).toBe(200);
173
+ expect(result.height).toBe(80);
174
+ expect(result.durationMs).toBe(600);
175
+ expect(result.path.endsWith('.mp4')).toBe(true);
176
+ const ffmpegPath = ffmpegStatic;
177
+ const probe = spawnSync(ffmpegPath, ['-hide_banner', '-i', result.path], {
178
+ encoding: 'utf8',
179
+ });
180
+ const info = `${probe.stdout ?? ''}${probe.stderr ?? ''}`;
181
+ const videoStreams = (info.match(/Stream #0:\d+.*Video:/g) ?? []).length;
182
+ expect(videoStreams).toBe(2);
102
183
  }
103
184
  finally {
104
185
  await rm(dir, { recursive: true, force: true });
@@ -1 +1 @@
1
- {"version":3,"file":"htmlRasterizer.e2e.js","sourceRoot":"","sources":["../../e2e/htmlRasterizer.e2e.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"htmlRasterizer.e2e.js","sourceRoot":"","sources":["../../e2e/htmlRasterizer.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,0BAA0B,CAAA;AAEjC,MAAM,kBAAkB,GAAG,IAAI,CAC7B,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACvC,UAAU,EACV,mBAAmB,CACpB,CAAA;AAED,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC;IAChC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;CAC/C,CAAC,CAAA;AAEF,gFAAgF;AAChF,2DAA2D;AAC3D,SAAS,GAAG,CAAC,KAAa;IACxB,OAAO,CACL,0DAA0D;QAC1D,sDAAsD;QACtD,8CAA8C;QAC9C,wDAAwD,KAAK,sBAAsB,CACpF,CAAA;AACH,CAAC;AAED,IAAI,CAAC,gFAAgF,EAAE,KAAK,EAAE,EAC5F,IAAI,GACL,EAAE,EAAE;IACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAA;IAC/D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAChD,4BAA4B,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,EACzD,GAAG,EAAE,CACH,oBAAoB,CAAC;YACnB,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,GAAG,CACP,+DAA+D,CAChE;SACF,CAAC,CACL,CAAA;QAED,2EAA2E;QAC3E,0CAA0C;QAC1C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC9B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAE9B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC1C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QACpD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACjD,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,8DAA8D,EAAE,KAAK,EAAE,EAC1E,IAAI,GACL,EAAE,EAAE;IACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,yBAAyB,CAAC,CAAC,CAAA;IACpE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAChD,4BAA4B,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,EACzD,GAAG,EAAE,CACH,oBAAoB,CAAC;YACnB,IAAI,EAAE,SAAS;YACf,IAAI,EACF,mDAAmD;gBACnD,mDAAmD;gBACnD,8CAA8C;gBAC9C,gFAAgF;SACnF,CAAC,CACL,CAAA;QACD,8DAA8D;QAC9D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC9B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChC,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACjD,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,2FAA2F,EAAE,KAAK,EAAE,EACvG,IAAI,GACL,EAAE,EAAE;IACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAA;IAC/D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAChD,4BAA4B,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,EACzD,GAAG,EAAE,CACH,oBAAoB,CAAC;YACnB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,GAAG,CACP,8DAA8D,CAC/D;SACF,CAAC,CACL,CAAA;QAED,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC9B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACjC,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACjD,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,iEAAiE,EAAE,KAAK,EAAE,EAC7E,IAAI,GACL,EAAE,EAAE;IACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAA;IAC/D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAChD,4BAA4B,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,EACzD,GAAG,EAAE,CACH,4BAA4B,CAAC;YAC3B,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,GAAG,CACP,sDAAsD;gBACpD,8BAA8B;gBAC9B,oEAAoE,CACvE;YACD,UAAU,EAAE,GAAG;YACf,GAAG,EAAE,EAAE;SACR,CAAC,CACL,CAAA;QAED,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC9B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC9B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACnC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE/C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC1C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAExC,8DAA8D;QAC9D,MAAM,UAAU,GAAG,YAAiC,CAAA;QACpD,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;YACvE,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAA;QACF,MAAM,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,CAAA;QACzD,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAA;QACxE,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC9B,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACjD,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,oFAAoF,EAAE,KAAK,EAAE,EAChG,IAAI,GACL,EAAE,EAAE;IACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,2BAA2B,CAAC,CAAC,CAAA;IACtE,IAAI,CAAC;QACH,8EAA8E;QAC9E,2EAA2E;QAC3E,+EAA+E;QAC/E,MAAM,IAAI,GAAG,GAAG,CACd,uCAAuC;YACrC,0EAA0E;YAC1E,iDAAiD;YACjD,sEAAsE;YACtE,yCAAyC,CAC5C,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAChD,4BAA4B,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,EACzD,GAAG,EAAE,CACH,4BAA4B,CAAC;YAC3B,IAAI,EAAE,eAAe;YACrB,IAAI;YACJ,UAAU,EAAE,IAAI;YAChB,GAAG,EAAE,EAAE;SACR,CAAC,CACL,CAAA;QAED,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC9B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC9B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE/C,MAAM,UAAU,GAAG,YAAiC,CAAA;QACpD,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;YACvE,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAA;QACF,MAAM,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,CAAA;QACzD,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAA;QACxE,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC9B,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACjD,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,uEAAuE,EAAE,KAAK,EAAE,EACnF,IAAI,GACL,EAAE,EAAE;IACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,4BAA4B,CAAC,CAAC,CAAA;IACvE,IAAI,CAAC;QACH,uEAAuE;QACvE,sEAAsE;QACtE,8CAA8C;QAC9C,MAAM,IAAI,GAAG,MAAM,0BAA0B,CAAC,kBAAkB,EAAE;YAChE,EAAE,EAAE,GAAG;SACR,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAChD,4BAA4B,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,EACzD,GAAG,EAAE,CACH,oBAAoB,CAAC;YACnB,IAAI,EAAE,cAAc;YACpB,IAAI;YACJ,UAAU,EAAE,IAAI;SACjB,CAAC,CACL,CAAA;QACD,6EAA6E;QAC7E,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC9B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChC,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACjD,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,iFAAiF,EAAE,KAAK,EAAE,EAC7F,IAAI,GACL,EAAE,EAAE;IACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,2BAA2B,CAAC,CAAC,CAAA;IACtE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,0BAA0B,CAAC,kBAAkB,EAAE;YAChE,EAAE,EAAE,GAAG;SACR,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAChD,4BAA4B,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,EACzD,GAAG,EAAE,CACH,4BAA4B,CAAC;YAC3B,IAAI,EAAE,aAAa;YACnB,IAAI;YACJ,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,GAAG;YACf,GAAG,EAAE,EAAE;SACR,CAAC,CACL,CAAA;QAED,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC9B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC9B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACnC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE/C,MAAM,UAAU,GAAG,YAAiC,CAAA;QACpD,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;YACvE,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAA;QACF,MAAM,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,CAAA;QACzD,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAA;QACxE,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC9B,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACjD,CAAC;AACH,CAAC,CAAC,CAAA"}
package/dist/index.d.ts CHANGED
@@ -7,8 +7,8 @@ export { screenshot } from './src/screenshot.js';
7
7
  export type { CropTarget, CropRegion, CropOptions, ScreenshotCrop, ScreenshotCropRecord, ResolvedCropPadding, } from './src/crop.js';
8
8
  export type { ScreenCIPage, ScreenCILocator, ScreenCILocatorClickOptions, ScreenCILocatorPostClickMoveOptions, ScreenCILocatorFillOptions, ScreenCILocatorPressSequentiallyOptions, ScreenCILocatorCheckOptions, ScreenCILocatorHoverOptions, ScreenCILocatorSelectTextOptions, ScreenCILocatorDragToOptions, ScreenCILocatorSelectOptionOptions, } from './src/types.js';
9
9
  export type { NarrationCue, Cues, TopLevelVoiceConfig } from './src/cue.js';
10
- export { studio } from './src/studio.js';
11
- export type { StudioMarker, StudioPending } from './src/studio.js';
10
+ export { editable } from './src/studio.js';
11
+ export type { EditableMarker, EditablePending } from './src/studio.js';
12
12
  export type { TimelineOffset } from './src/timelineOffset.js';
13
13
  export type { LangNarrationOverride } from './src/voiceConfig.js';
14
14
  export type { EachVariant, MediaBuilder, VideoBuilder, LocalizeMode, LanguagesArg, LanguagesConfig, RecordingLocalize, } from './src/builder.js';
@@ -22,10 +22,9 @@ export { speed } from './src/speed.js';
22
22
  export { time } from './src/time.js';
23
23
  export { autoZoom } from './src/autoZoom.js';
24
24
  export { zoomTo, resetZoom } from './src/manualZoom.js';
25
- export { resizeRecording, resetRecordingSize, type ResizeRecordingOptions, } from './src/recordingSize.js';
26
25
  export { hideNarration, showNarration } from './src/narrationVisibility.js';
27
- export { setOverlayCss, MAX_AUDIO_LEVEL, selected } from './src/asset.js';
28
- export type { OverlayController, OverlayConfig, OverlayConfigFactory, OverlayInput, OverlayInputOrFactory, Overlays, OverlayControllerFor, ReactElementLike, OverlayPlacement, OverlayCrop, DependencyOverlayInput, DependencyOverlayOptions, } from './src/asset.js';
26
+ export { MAX_AUDIO_LEVEL, selected } from './src/asset.js';
27
+ export type { OverlayController, OverlayConfig, OverlayDuration, TsxOverlayConfig, HtmlPageOverlayConfig, MediaOverlayConfig, OverlayConfigFactory, OverlayInput, OverlayInputOrFactory, Overlays, OverlayControllerFor, OverlayPlacement, OverlayCrop, DependencyOverlayInput, DependencyOverlayOptions, } from './src/asset.js';
29
28
  export { overlayRect } from './src/overlayRect.js';
30
29
  export type { OverlayRect, OverlayRectOptions } from './src/overlayRect.js';
31
30
  export type { AudioController, AudioConfig, AudioInput, AudioTracks, } from './src/audio.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -5,10 +5,10 @@ export { defineConfig } from './src/config.js';
5
5
  // Re-export video fixture and narration cue
6
6
  export { video } from './src/video.js';
7
7
  export { screenshot } from './src/screenshot.js';
8
- // `studio(...)` defers a feature/language declaration to the ScreenCI web app:
9
- // `studio(['name'])` blank names, `studio({ name: value })` seeded, `studio()`
8
+ // `editable(...)` defers a feature/language declaration to the ScreenCI web app:
9
+ // `editable(['name'])` blank names, `editable({ name: value })` seeded, `editable()`
10
10
  // keyless (languages only).
11
- export { studio } from './src/studio.js';
11
+ export { editable } from './src/studio.js';
12
12
  export { resolveLocaleForLanguage, DEFAULT_LANGUAGE_LOCALES, } from './src/locales.js';
13
13
  export { hide } from './src/hide.js';
14
14
  export { redact, unredactAll } from './src/redact.js';
@@ -16,8 +16,7 @@ export { speed } from './src/speed.js';
16
16
  export { time } from './src/time.js';
17
17
  export { autoZoom } from './src/autoZoom.js';
18
18
  export { zoomTo, resetZoom } from './src/manualZoom.js';
19
- export { resizeRecording, resetRecordingSize, } from './src/recordingSize.js';
20
19
  export { hideNarration, showNarration } from './src/narrationVisibility.js';
21
- export { setOverlayCss, MAX_AUDIO_LEVEL, selected } from './src/asset.js';
20
+ export { MAX_AUDIO_LEVEL, selected } from './src/asset.js';
22
21
  export { overlayRect } from './src/overlayRect.js';
23
22
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAiBA,mBAAmB;AACnB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AASpD,4BAA4B;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,4CAA4C;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AA0BhD,+EAA+E;AAC/E,+EAA+E;AAC/E,4BAA4B;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAexC,OAAO,EACL,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAErD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EACL,eAAe,EACf,kBAAkB,GAEnB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC3E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAezE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAiBA,mBAAmB;AACnB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AASpD,4BAA4B;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,4CAA4C;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AA0BhD,iFAAiF;AACjF,qFAAqF;AACrF,4BAA4B;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAe1C,OAAO,EACL,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAErD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC3E,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAkB1D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA"}
@@ -1,6 +1,7 @@
1
1
  export declare const ANON_SESSION_FILE = "anon-session.json";
2
2
  export declare const ANON_TOKEN_HEADER = "X-ScreenCI-Anon-Token";
3
3
  export declare const SECRET_HEADER = "X-ScreenCI-Secret";
4
+ export declare const ANON_MAX_VIDEOS_PER_RECORDING = 3;
4
5
  export declare const SCREENCI_TERMS_URL = "https://screenci.com/legal/tos";
5
6
  /**
6
7
  * Single-line browsewrap notice shown on the anonymous trial path. Kept pure
@@ -24,6 +25,18 @@ export declare function deleteAnonSessionFile(screenciDir: string): Promise<void
24
25
  * `record` so multiple videos land under the same anonymous trial.
25
26
  */
26
27
  export declare function getOrCreateAnonToken(screenciDir: string): Promise<string>;
28
+ /**
29
+ * Remembers the successful anonymous recording URL locally so a second
30
+ * anonymous `record` attempt can point back to the trial recording instead of
31
+ * only showing the sign-up URL.
32
+ */
33
+ export declare function saveAnonSessionRecordUrl(screenciDir: string, token: string, recordUrl: string): Promise<void>;
34
+ export declare function readAnonSessionRecordUrl(screenciDir: string): Promise<string | null>;
35
+ export declare const ANON_MAX_RECORDINGS = 3;
36
+ /** A short "N recordings left" phrase for the anonymous trial. */
37
+ export declare function formatAnonRecordingsLeft(remaining: number): string;
38
+ /** A single-line notice shown after an anonymous recording succeeds. */
39
+ export declare function formatAnonPostRecordNotice(remaining: number): string;
27
40
  export type AnonSessionStatus = {
28
41
  status: 'not_found';
29
42
  } | {
@@ -31,6 +44,7 @@ export type AnonSessionStatus = {
31
44
  } | {
32
45
  status: 'pending';
33
46
  used: boolean;
47
+ remaining: number;
34
48
  } | {
35
49
  status: 'claimed';
36
50
  secret: string;
@@ -54,13 +68,13 @@ export type AnonRecordingGate = {
54
68
  };
55
69
  /**
56
70
  * Decides whether a fresh anonymous `record` is allowed to START, given the
57
- * session's current status. An anonymous trial gets exactly one recording:
58
- * once it is used (a pending session that already spent its trial) or the
59
- * session has expired, a second recording is refused up front so the user is
60
- * told to sign up before anything renders, rather than silently minting a new
71
+ * session's current status. An anonymous trial gets up to ANON_MAX_RECORDINGS
72
+ * recordings: once all are used (a pending session that has spent its trial) or
73
+ * the session has expired, a further recording is refused up front so the user
74
+ * is told to sign up before anything renders, rather than silently minting a new
61
75
  * trial or only failing after the whole recording ran. A first-run token the
62
- * server has not seen yet (`not_found`), a pending-but-unused session, and a
63
- * `claimed` session (the upload path self-upgrades to the real secret) all
76
+ * server has not seen yet (`not_found`), a pending session with recordings left,
77
+ * and a `claimed` session (the upload path self-upgrades to the real secret) all
64
78
  * proceed.
65
79
  */
66
80
  export declare function evaluateAnonRecordingGate(status: AnonSessionStatus): AnonRecordingGate;
@@ -1 +1 @@
1
- {"version":3,"file":"anonSession.d.ts","sourceRoot":"","sources":["../../src/anonSession.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,iBAAiB,sBAAsB,CAAA;AAEpD,eAAO,MAAM,iBAAiB,0BAA0B,CAAA;AACxD,eAAO,MAAM,aAAa,sBAAsB,CAAA;AAOhD,eAAO,MAAM,kBAAkB,mCAAmC,CAAA;AAElE;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,OAAO,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,MAAM,EAAE,OAAO,iBAAiB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEvD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAE9D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAE3D;AA+BD,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GAErB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GACpC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAEzC;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CAAO,GAC9D,OAAO,CAAC,iBAAiB,CAAC,CAyB5B;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GACjB;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAA;AAElD;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,iBAAiB,GACxB,iBAAiB,CAMnB"}
1
+ {"version":3,"file":"anonSession.d.ts","sourceRoot":"","sources":["../../src/anonSession.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,iBAAiB,sBAAsB,CAAA;AAEpD,eAAO,MAAM,iBAAiB,0BAA0B,CAAA;AACxD,eAAO,MAAM,aAAa,sBAAsB,CAAA;AAChD,eAAO,MAAM,6BAA6B,IAAI,CAAA;AAO9C,eAAO,MAAM,kBAAkB,mCAAmC,CAAA;AAElE;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,OAAO,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,MAAM,EAAE,OAAO,iBAAiB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEvD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAE9D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAE3D;AAqCD,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB;AAID,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAEpC,kEAAkE;AAClE,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAOlE;AAED,wEAAwE;AACxE,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAOpE;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GAErB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAEzC;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CAAO,GAC9D,OAAO,CAAC,iBAAiB,CAAC,CAgC5B;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GACjB;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAA;AAElD;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,iBAAiB,GACxB,iBAAiB,CAMnB"}