@contractspec/lib.video-gen 2.7.17 → 2.7.19

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 (127) hide show
  1. package/dist/browser/compositions/api-overview.js +1 -645
  2. package/dist/browser/compositions/index.js +1 -1133
  3. package/dist/browser/compositions/primitives/animated-text.js +1 -144
  4. package/dist/browser/compositions/primitives/brand-frame.js +1 -181
  5. package/dist/browser/compositions/primitives/code-block.js +1 -226
  6. package/dist/browser/compositions/primitives/index.js +1 -656
  7. package/dist/browser/compositions/primitives/progress-bar.js +1 -59
  8. package/dist/browser/compositions/primitives/terminal.js +1 -265
  9. package/dist/browser/compositions/primitives/transition.js +1 -98
  10. package/dist/browser/compositions/social-clip.js +1 -500
  11. package/dist/browser/compositions/terminal-demo.js +1 -558
  12. package/dist/browser/design/index.js +1 -155
  13. package/dist/browser/design/layouts.js +1 -50
  14. package/dist/browser/design/motion.js +1 -43
  15. package/dist/browser/design/tokens.js +1 -28
  16. package/dist/browser/design/typography.js +1 -61
  17. package/dist/browser/docs/compositions.docblock.js +1 -182
  18. package/dist/browser/docs/design.docblock.js +2 -17
  19. package/dist/browser/docs/generators.docblock.js +2 -24
  20. package/dist/browser/docs/rendering.docblock.js +2 -24
  21. package/dist/browser/docs/video-gen.docblock.js +2 -17
  22. package/dist/browser/generators/index.js +7 -769
  23. package/dist/browser/generators/scene-planner.js +7 -651
  24. package/dist/browser/generators/script-generator.js +7 -599
  25. package/dist/browser/generators/video-generator.js +7 -768
  26. package/dist/browser/i18n/catalogs/en.js +3 -135
  27. package/dist/browser/i18n/catalogs/es.js +3 -135
  28. package/dist/browser/i18n/catalogs/fr.js +3 -135
  29. package/dist/browser/i18n/catalogs/index.js +7 -387
  30. package/dist/browser/i18n/index.js +7 -459
  31. package/dist/browser/i18n/keys.js +1 -54
  32. package/dist/browser/i18n/locale.js +1 -21
  33. package/dist/browser/i18n/messages.js +7 -399
  34. package/dist/browser/index.js +7 -1903
  35. package/dist/browser/player/demo-player.js +1 -1136
  36. package/dist/browser/player/index.js +1 -1136
  37. package/dist/browser/remotion/Root.js +2 -1172
  38. package/dist/browser/remotion/index.js +2 -1173
  39. package/dist/browser/renderers/config.js +1 -40
  40. package/dist/browser/renderers/index.js +1 -160
  41. package/dist/browser/renderers/local.js +1 -156
  42. package/dist/browser/types.js +1 -13
  43. package/dist/compositions/api-overview.js +1 -639
  44. package/dist/compositions/index.js +1 -1127
  45. package/dist/compositions/primitives/animated-text.js +1 -138
  46. package/dist/compositions/primitives/brand-frame.js +1 -175
  47. package/dist/compositions/primitives/code-block.js +1 -220
  48. package/dist/compositions/primitives/index.js +1 -650
  49. package/dist/compositions/primitives/progress-bar.js +1 -53
  50. package/dist/compositions/primitives/terminal.js +1 -259
  51. package/dist/compositions/primitives/transition.js +1 -92
  52. package/dist/compositions/social-clip.js +1 -494
  53. package/dist/compositions/terminal-demo.js +1 -552
  54. package/dist/design/index.js +1 -149
  55. package/dist/design/layouts.js +1 -44
  56. package/dist/design/motion.js +1 -37
  57. package/dist/design/tokens.js +1 -22
  58. package/dist/design/typography.js +1 -55
  59. package/dist/docs/compositions.docblock.js +1 -182
  60. package/dist/docs/design.docblock.js +2 -17
  61. package/dist/docs/generators.docblock.js +2 -24
  62. package/dist/docs/rendering.docblock.js +2 -24
  63. package/dist/docs/video-gen.docblock.js +2 -17
  64. package/dist/generators/index.js +7 -763
  65. package/dist/generators/scene-planner.js +7 -645
  66. package/dist/generators/script-generator.js +7 -593
  67. package/dist/generators/video-generator.js +7 -762
  68. package/dist/i18n/catalogs/en.js +3 -129
  69. package/dist/i18n/catalogs/es.js +3 -129
  70. package/dist/i18n/catalogs/fr.js +3 -129
  71. package/dist/i18n/catalogs/index.js +7 -381
  72. package/dist/i18n/index.js +7 -453
  73. package/dist/i18n/keys.js +1 -48
  74. package/dist/i18n/locale.js +1 -15
  75. package/dist/i18n/messages.js +7 -393
  76. package/dist/index.js +7 -1897
  77. package/dist/node/compositions/api-overview.js +1 -640
  78. package/dist/node/compositions/index.js +1 -1128
  79. package/dist/node/compositions/primitives/animated-text.js +1 -139
  80. package/dist/node/compositions/primitives/brand-frame.js +1 -176
  81. package/dist/node/compositions/primitives/code-block.js +1 -221
  82. package/dist/node/compositions/primitives/index.js +1 -651
  83. package/dist/node/compositions/primitives/progress-bar.js +1 -54
  84. package/dist/node/compositions/primitives/terminal.js +1 -260
  85. package/dist/node/compositions/primitives/transition.js +1 -93
  86. package/dist/node/compositions/social-clip.js +1 -495
  87. package/dist/node/compositions/terminal-demo.js +1 -553
  88. package/dist/node/design/index.js +1 -150
  89. package/dist/node/design/layouts.js +1 -45
  90. package/dist/node/design/motion.js +1 -38
  91. package/dist/node/design/tokens.js +1 -23
  92. package/dist/node/design/typography.js +1 -56
  93. package/dist/node/docs/compositions.docblock.js +1 -182
  94. package/dist/node/docs/design.docblock.js +2 -17
  95. package/dist/node/docs/generators.docblock.js +2 -24
  96. package/dist/node/docs/rendering.docblock.js +2 -24
  97. package/dist/node/docs/video-gen.docblock.js +2 -17
  98. package/dist/node/generators/index.js +7 -764
  99. package/dist/node/generators/scene-planner.js +7 -646
  100. package/dist/node/generators/script-generator.js +7 -594
  101. package/dist/node/generators/video-generator.js +7 -763
  102. package/dist/node/i18n/catalogs/en.js +3 -130
  103. package/dist/node/i18n/catalogs/es.js +3 -130
  104. package/dist/node/i18n/catalogs/fr.js +3 -130
  105. package/dist/node/i18n/catalogs/index.js +7 -382
  106. package/dist/node/i18n/index.js +7 -454
  107. package/dist/node/i18n/keys.js +1 -49
  108. package/dist/node/i18n/locale.js +1 -16
  109. package/dist/node/i18n/messages.js +7 -394
  110. package/dist/node/index.js +7 -1898
  111. package/dist/node/player/demo-player.js +1 -1131
  112. package/dist/node/player/index.js +1 -1131
  113. package/dist/node/remotion/Root.js +2 -1167
  114. package/dist/node/remotion/index.js +2 -1168
  115. package/dist/node/renderers/config.js +1 -35
  116. package/dist/node/renderers/index.js +1 -155
  117. package/dist/node/renderers/local.js +1 -151
  118. package/dist/node/types.js +1 -8
  119. package/dist/player/demo-player.js +1 -1130
  120. package/dist/player/index.js +1 -1130
  121. package/dist/remotion/Root.js +2 -1166
  122. package/dist/remotion/index.js +2 -1167
  123. package/dist/renderers/config.js +1 -34
  124. package/dist/renderers/index.js +1 -154
  125. package/dist/renderers/local.js +1 -150
  126. package/dist/types.js +1 -7
  127. package/package.json +16 -16
@@ -1,54 +1 @@
1
- import { createRequire } from "node:module";
2
- var __require = /* @__PURE__ */ createRequire(import.meta.url);
3
-
4
- // src/design/tokens.ts
5
- import { defaultTokens } from "@contractspec/lib.design-system";
6
- var defaultVideoColors = {
7
- canvasBackground: defaultTokens.colors.background,
8
- codeBackground: "#1e1e2e",
9
- terminalBackground: "#0d1117",
10
- terminalForeground: "#c9d1d9",
11
- highlight: defaultTokens.colors.accent,
12
- gradientStart: defaultTokens.colors.primary,
13
- gradientEnd: defaultTokens.colors.accent
14
- };
15
- var defaultVideoTheme = {
16
- ...defaultTokens,
17
- video: defaultVideoColors
18
- };
19
-
20
- // src/compositions/primitives/progress-bar.tsx
21
- import { useCurrentFrame, useVideoConfig } from "remotion";
22
- import { jsxDEV } from "react/jsx-dev-runtime";
23
- var ProgressBar = ({
24
- height = 4,
25
- color = defaultVideoTheme.colors.primary,
26
- backgroundColor = "rgba(255,255,255,0.1)",
27
- position = "bottom"
28
- }) => {
29
- const frame = useCurrentFrame();
30
- const { durationInFrames, width } = useVideoConfig();
31
- const progress = frame / durationInFrames;
32
- return /* @__PURE__ */ jsxDEV("div", {
33
- style: {
34
- position: "absolute",
35
- [position]: 0,
36
- left: 0,
37
- width,
38
- height,
39
- backgroundColor,
40
- zIndex: 100
41
- },
42
- children: /* @__PURE__ */ jsxDEV("div", {
43
- style: {
44
- width: `${progress * 100}%`,
45
- height: "100%",
46
- backgroundColor: color,
47
- transition: "none"
48
- }
49
- }, undefined, false, undefined, this)
50
- }, undefined, false, undefined, this);
51
- };
52
- export {
53
- ProgressBar
54
- };
1
+ import{createRequire as N}from"node:module";var U=N(import.meta.url);import{defaultTokens as q}from"@contractspec/lib.design-system";var O={canvasBackground:q.colors.background,codeBackground:"#1e1e2e",terminalBackground:"#0d1117",terminalForeground:"#c9d1d9",highlight:q.colors.accent,gradientStart:q.colors.primary,gradientEnd:q.colors.accent},z={...q,video:O};import{useCurrentFrame as Q,useVideoConfig as R}from"remotion";import{jsx as A}from"react/jsx-runtime";var $=({height:D=4,color:E=z.colors.primary,backgroundColor:G="rgba(255,255,255,0.1)",position:H="bottom"})=>{let J=Q(),{durationInFrames:K,width:L}=R(),M=J/K;return A("div",{style:{position:"absolute",[H]:0,left:0,width:L,height:D,backgroundColor:G,zIndex:100},children:A("div",{style:{width:`${M*100}%`,height:"100%",backgroundColor:E,transition:"none"}})})};export{$ as ProgressBar};
@@ -1,260 +1 @@
1
- import { createRequire } from "node:module";
2
- var __require = /* @__PURE__ */ createRequire(import.meta.url);
3
-
4
- // src/design/motion.ts
5
- import { Easing } from "remotion";
6
- var videoEasing = {
7
- entrance: Easing.out(Easing.exp),
8
- exit: Easing.in(Easing.exp),
9
- emphasis: Easing.out(Easing.back(1.4)),
10
- linear: Easing.linear,
11
- gentle: Easing.bezier(0.25, 0.1, 0.25, 1),
12
- spring: Easing.out(Easing.back(1.7))
13
- };
14
- var videoDurations = {
15
- sceneTransition: 20,
16
- textEntrance: 15,
17
- textExit: 12,
18
- codeTypingPerChar: 2,
19
- sectionPause: 30,
20
- emphasisPause: 15,
21
- brandReveal: 25,
22
- minScene: 60,
23
- shortScene: 60,
24
- mediumScene: 120,
25
- longScene: 240
26
- };
27
- var videoTransitions = {
28
- fade: { type: "fade", durationInFrames: 20 },
29
- slideLeft: { type: "slide-left", durationInFrames: 20 },
30
- slideRight: { type: "slide-right", durationInFrames: 20 },
31
- wipe: { type: "wipe", durationInFrames: 15 },
32
- none: { type: "none", durationInFrames: 0 }
33
- };
34
-
35
- // src/design/tokens.ts
36
- import { defaultTokens } from "@contractspec/lib.design-system";
37
- var defaultVideoColors = {
38
- canvasBackground: defaultTokens.colors.background,
39
- codeBackground: "#1e1e2e",
40
- terminalBackground: "#0d1117",
41
- terminalForeground: "#c9d1d9",
42
- highlight: defaultTokens.colors.accent,
43
- gradientStart: defaultTokens.colors.primary,
44
- gradientEnd: defaultTokens.colors.accent
45
- };
46
- var defaultVideoTheme = {
47
- ...defaultTokens,
48
- video: defaultVideoColors
49
- };
50
-
51
- // src/design/typography.ts
52
- var videoTypography = {
53
- title: {
54
- fontSize: 72,
55
- lineHeight: 1.1,
56
- fontWeight: 700,
57
- letterSpacing: -1
58
- },
59
- heading: {
60
- fontSize: 56,
61
- lineHeight: 1.2,
62
- fontWeight: 600,
63
- letterSpacing: -0.5
64
- },
65
- subheading: {
66
- fontSize: 40,
67
- lineHeight: 1.25,
68
- fontWeight: 500
69
- },
70
- body: {
71
- fontSize: 32,
72
- lineHeight: 1.5,
73
- fontWeight: 400
74
- },
75
- code: {
76
- fontSize: 28,
77
- lineHeight: 1.6,
78
- fontWeight: 400
79
- },
80
- caption: {
81
- fontSize: 24,
82
- lineHeight: 1.4,
83
- fontWeight: 400
84
- },
85
- label: {
86
- fontSize: 20,
87
- lineHeight: 1.3,
88
- fontWeight: 600,
89
- letterSpacing: 1
90
- }
91
- };
92
- function scaleTypography(style, targetWidth) {
93
- const scale = targetWidth / 1920;
94
- return {
95
- ...style,
96
- fontSize: Math.round(style.fontSize * scale),
97
- letterSpacing: style.letterSpacing ? Math.round(style.letterSpacing * scale * 10) / 10 : undefined
98
- };
99
- }
100
-
101
- // src/compositions/primitives/terminal.tsx
102
- import { interpolate, useCurrentFrame, useVideoConfig } from "remotion";
103
- import { jsxDEV } from "react/jsx-dev-runtime";
104
- var LINE_TYPE_COLORS = {
105
- command: "#c9d1d9",
106
- output: "#8b949e",
107
- error: "#f85149",
108
- success: "#3fb950",
109
- comment: "#6e7681"
110
- };
111
- var Terminal = ({
112
- lines,
113
- startAt = 0,
114
- prompt = "$ ",
115
- title = "Terminal",
116
- backgroundColor = defaultVideoColors.terminalBackground,
117
- typingSpeed = videoDurations.codeTypingPerChar
118
- }) => {
119
- const frame = useCurrentFrame();
120
- const { width } = useVideoConfig();
121
- const codeStyle = scaleTypography(videoTypography.code, width);
122
- const lineTimings = [];
123
- let currentFrame = startAt;
124
- for (const line of lines) {
125
- const delay = line.delay ?? 10;
126
- const lineStart = currentFrame + delay;
127
- if (line.type === "command") {
128
- const typeDuration = line.text.length * typingSpeed;
129
- lineTimings.push({
130
- startFrame: lineStart,
131
- endFrame: lineStart + typeDuration
132
- });
133
- currentFrame = lineStart + typeDuration;
134
- } else {
135
- lineTimings.push({ startFrame: lineStart, endFrame: lineStart + 5 });
136
- currentFrame = lineStart + 5;
137
- }
138
- }
139
- const opacity = interpolate(frame, [startAt, startAt + 10], [0, 1], {
140
- extrapolateLeft: "clamp",
141
- extrapolateRight: "clamp",
142
- easing: videoEasing.entrance
143
- });
144
- return /* @__PURE__ */ jsxDEV("div", {
145
- style: {
146
- backgroundColor,
147
- borderRadius: 16,
148
- overflow: "hidden",
149
- opacity,
150
- boxShadow: "0 8px 32px rgba(0,0,0,0.3)"
151
- },
152
- children: [
153
- /* @__PURE__ */ jsxDEV("div", {
154
- style: {
155
- display: "flex",
156
- alignItems: "center",
157
- padding: "12px 20px",
158
- backgroundColor: "rgba(255,255,255,0.05)",
159
- gap: 8
160
- },
161
- children: [
162
- /* @__PURE__ */ jsxDEV("div", {
163
- style: { display: "flex", gap: 8 },
164
- children: [
165
- /* @__PURE__ */ jsxDEV("div", {
166
- style: {
167
- width: 12,
168
- height: 12,
169
- borderRadius: "50%",
170
- backgroundColor: "#ff5f57"
171
- }
172
- }, undefined, false, undefined, this),
173
- /* @__PURE__ */ jsxDEV("div", {
174
- style: {
175
- width: 12,
176
- height: 12,
177
- borderRadius: "50%",
178
- backgroundColor: "#febc2e"
179
- }
180
- }, undefined, false, undefined, this),
181
- /* @__PURE__ */ jsxDEV("div", {
182
- style: {
183
- width: 12,
184
- height: 12,
185
- borderRadius: "50%",
186
- backgroundColor: "#28c840"
187
- }
188
- }, undefined, false, undefined, this)
189
- ]
190
- }, undefined, true, undefined, this),
191
- /* @__PURE__ */ jsxDEV("div", {
192
- style: {
193
- flex: 1,
194
- textAlign: "center",
195
- color: "#484f58",
196
- fontSize: codeStyle.fontSize * 0.7,
197
- fontFamily: "monospace"
198
- },
199
- children: title
200
- }, undefined, false, undefined, this)
201
- ]
202
- }, undefined, true, undefined, this),
203
- /* @__PURE__ */ jsxDEV("div", {
204
- style: { padding: "24px 32px", minHeight: 200 },
205
- children: lines.map((line, i) => {
206
- const timing = lineTimings[i];
207
- if (!timing || frame < timing.startFrame)
208
- return null;
209
- const isCommand = line.type === "command";
210
- const lineColor = LINE_TYPE_COLORS[line.type];
211
- let visibleText = line.text;
212
- if (isCommand) {
213
- const typingProgress = interpolate(frame, [timing.startFrame, timing.endFrame], [0, line.text.length], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
214
- visibleText = line.text.slice(0, Math.floor(typingProgress));
215
- }
216
- const lineOpacity = isCommand ? 1 : interpolate(frame, [timing.startFrame, timing.startFrame + 5], [0, 1], {
217
- extrapolateLeft: "clamp",
218
- extrapolateRight: "clamp"
219
- });
220
- const isTyping = isCommand && frame >= timing.startFrame && frame <= timing.endFrame;
221
- const showCursor = isTyping && frame % 16 < 10;
222
- return /* @__PURE__ */ jsxDEV("div", {
223
- style: {
224
- fontFamily: "'SF Mono', 'Fira Code', 'JetBrains Mono', monospace",
225
- fontSize: codeStyle.fontSize,
226
- lineHeight: 1.8,
227
- color: lineColor,
228
- opacity: lineOpacity,
229
- whiteSpace: "pre-wrap"
230
- },
231
- children: [
232
- isCommand && /* @__PURE__ */ jsxDEV("span", {
233
- style: { color: "#3fb950" },
234
- children: prompt
235
- }, undefined, false, undefined, this),
236
- line.type === "comment" && /* @__PURE__ */ jsxDEV("span", {
237
- style: { color: LINE_TYPE_COLORS.comment },
238
- children: "# "
239
- }, undefined, false, undefined, this),
240
- visibleText,
241
- showCursor && /* @__PURE__ */ jsxDEV("span", {
242
- style: {
243
- backgroundColor: "#c9d1d9",
244
- width: "2px",
245
- display: "inline-block",
246
- height: "1.2em",
247
- verticalAlign: "text-bottom"
248
- },
249
- children: " "
250
- }, undefined, false, undefined, this)
251
- ]
252
- }, `${i}-${line.text.slice(0, 20)}`, true, undefined, this);
253
- })
254
- }, undefined, false, undefined, this)
255
- ]
256
- }, undefined, true, undefined, this);
257
- };
258
- export {
259
- Terminal
260
- };
1
+ import{createRequire as S}from"node:module";var f=S(import.meta.url);import{Easing as B}from"remotion";var D={entrance:B.out(B.exp),exit:B.in(B.exp),emphasis:B.out(B.back(1.4)),linear:B.linear,gentle:B.bezier(0.25,0.1,0.25,1),spring:B.out(B.back(1.7))},V={sceneTransition:20,textEntrance:15,textExit:12,codeTypingPerChar:2,sectionPause:30,emphasisPause:15,brandReveal:25,minScene:60,shortScene:60,mediumScene:120,longScene:240},y={fade:{type:"fade",durationInFrames:20},slideLeft:{type:"slide-left",durationInFrames:20},slideRight:{type:"slide-right",durationInFrames:20},wipe:{type:"wipe",durationInFrames:15},none:{type:"none",durationInFrames:0}};import{defaultTokens as Q}from"@contractspec/lib.design-system";var N={canvasBackground:Q.colors.background,codeBackground:"#1e1e2e",terminalBackground:"#0d1117",terminalForeground:"#c9d1d9",highlight:Q.colors.accent,gradientStart:Q.colors.primary,gradientEnd:Q.colors.accent},g={...Q,video:N};var w={title:{fontSize:72,lineHeight:1.1,fontWeight:700,letterSpacing:-1},heading:{fontSize:56,lineHeight:1.2,fontWeight:600,letterSpacing:-0.5},subheading:{fontSize:40,lineHeight:1.25,fontWeight:500},body:{fontSize:32,lineHeight:1.5,fontWeight:400},code:{fontSize:28,lineHeight:1.6,fontWeight:400},caption:{fontSize:24,lineHeight:1.4,fontWeight:400},label:{fontSize:20,lineHeight:1.3,fontWeight:600,letterSpacing:1}};function L(H,M){let U=M/1920;return{...H,fontSize:Math.round(H.fontSize*U),letterSpacing:H.letterSpacing?Math.round(H.letterSpacing*U*10)/10:void 0}}import{interpolate as R,useCurrentFrame as E,useVideoConfig as T}from"remotion";import{jsx as G,jsxs as Z}from"react/jsx-runtime";var P={command:"#c9d1d9",output:"#8b949e",error:"#f85149",success:"#3fb950",comment:"#6e7681"},n=({lines:H,startAt:M=0,prompt:U="$ ",title:_="Terminal",backgroundColor:O=N.terminalBackground,typingSpeed:A=V.codeTypingPerChar})=>{let J=E(),{width:F}=T(),W=L(w.code,F),$=[],I=M;for(let z of H){let X=z.delay??10,q=I+X;if(z.type==="command"){let K=z.text.length*A;$.push({startFrame:q,endFrame:q+K}),I=q+K}else $.push({startFrame:q,endFrame:q+5}),I=q+5}let b=R(J,[M,M+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:D.entrance});return Z("div",{style:{backgroundColor:O,borderRadius:16,overflow:"hidden",opacity:b,boxShadow:"0 8px 32px rgba(0,0,0,0.3)"},children:[Z("div",{style:{display:"flex",alignItems:"center",padding:"12px 20px",backgroundColor:"rgba(255,255,255,0.05)",gap:8},children:[Z("div",{style:{display:"flex",gap:8},children:[G("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#ff5f57"}}),G("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#febc2e"}}),G("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#28c840"}})]}),G("div",{style:{flex:1,textAlign:"center",color:"#484f58",fontSize:W.fontSize*0.7,fontFamily:"monospace"},children:_})]}),G("div",{style:{padding:"24px 32px",minHeight:200},children:H.map((z,X)=>{let q=$[X];if(!q||J<q.startFrame)return null;let K=z.type==="command",v=P[z.type],Y=z.text;if(K){let j=R(J,[q.startFrame,q.endFrame],[0,z.text.length],{extrapolateLeft:"clamp",extrapolateRight:"clamp"});Y=z.text.slice(0,Math.floor(j))}let k=K?1:R(J,[q.startFrame,q.startFrame+5],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),h=K&&J>=q.startFrame&&J<=q.endFrame&&J%16<10;return Z("div",{style:{fontFamily:"'SF Mono', 'Fira Code', 'JetBrains Mono', monospace",fontSize:W.fontSize,lineHeight:1.8,color:v,opacity:k,whiteSpace:"pre-wrap"},children:[K&&G("span",{style:{color:"#3fb950"},children:U}),z.type==="comment"&&G("span",{style:{color:P.comment},children:"# "}),Y,h&&G("span",{style:{backgroundColor:"#c9d1d9",width:"2px",display:"inline-block",height:"1.2em",verticalAlign:"text-bottom"},children:" "})]},`${X}-${z.text.slice(0,20)}`)})})]})};export{n as Terminal};
@@ -1,93 +1 @@
1
- import { createRequire } from "node:module";
2
- var __require = /* @__PURE__ */ createRequire(import.meta.url);
3
-
4
- // src/design/motion.ts
5
- import { Easing } from "remotion";
6
- var videoEasing = {
7
- entrance: Easing.out(Easing.exp),
8
- exit: Easing.in(Easing.exp),
9
- emphasis: Easing.out(Easing.back(1.4)),
10
- linear: Easing.linear,
11
- gentle: Easing.bezier(0.25, 0.1, 0.25, 1),
12
- spring: Easing.out(Easing.back(1.7))
13
- };
14
- var videoDurations = {
15
- sceneTransition: 20,
16
- textEntrance: 15,
17
- textExit: 12,
18
- codeTypingPerChar: 2,
19
- sectionPause: 30,
20
- emphasisPause: 15,
21
- brandReveal: 25,
22
- minScene: 60,
23
- shortScene: 60,
24
- mediumScene: 120,
25
- longScene: 240
26
- };
27
- var videoTransitions = {
28
- fade: { type: "fade", durationInFrames: 20 },
29
- slideLeft: { type: "slide-left", durationInFrames: 20 },
30
- slideRight: { type: "slide-right", durationInFrames: 20 },
31
- wipe: { type: "wipe", durationInFrames: 15 },
32
- none: { type: "none", durationInFrames: 0 }
33
- };
34
-
35
- // src/compositions/primitives/transition.tsx
36
- import { interpolate, useCurrentFrame } from "remotion";
37
- import { jsxDEV, Fragment } from "react/jsx-dev-runtime";
38
- var SceneTransitionWrapper = ({
39
- type,
40
- durationInFrames,
41
- direction,
42
- startAt = 0,
43
- children
44
- }) => {
45
- const frame = useCurrentFrame();
46
- if (type === "none" || durationInFrames === 0) {
47
- return /* @__PURE__ */ jsxDEV(Fragment, {
48
- children
49
- }, undefined, false, undefined, this);
50
- }
51
- const progress = interpolate(frame, [startAt, startAt + durationInFrames], direction === "in" ? [0, 1] : [1, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
52
- const styles = getTransitionStyles(type, progress);
53
- return /* @__PURE__ */ jsxDEV("div", {
54
- style: styles,
55
- children
56
- }, undefined, false, undefined, this);
57
- };
58
- function getTransitionStyles(type, progress) {
59
- const eased = videoEasing.entrance(progress);
60
- switch (type) {
61
- case "fade":
62
- return {
63
- opacity: eased,
64
- width: "100%",
65
- height: "100%"
66
- };
67
- case "slide-left":
68
- return {
69
- opacity: eased,
70
- transform: `translateX(${(1 - eased) * 100}%)`,
71
- width: "100%",
72
- height: "100%"
73
- };
74
- case "slide-right":
75
- return {
76
- opacity: eased,
77
- transform: `translateX(${(1 - eased) * -100}%)`,
78
- width: "100%",
79
- height: "100%"
80
- };
81
- case "wipe":
82
- return {
83
- clipPath: `inset(0 ${(1 - eased) * 100}% 0 0)`,
84
- width: "100%",
85
- height: "100%"
86
- };
87
- default:
88
- return { width: "100%", height: "100%" };
89
- }
90
- }
91
- export {
92
- SceneTransitionWrapper
93
- };
1
+ import{createRequire as O}from"node:module";var X=O(import.meta.url);import{Easing as k}from"remotion";var J={entrance:k.out(k.exp),exit:k.in(k.exp),emphasis:k.out(k.back(1.4)),linear:k.linear,gentle:k.bezier(0.25,0.1,0.25,1),spring:k.out(k.back(1.7))},_={sceneTransition:20,textEntrance:15,textExit:12,codeTypingPerChar:2,sectionPause:30,emphasisPause:15,brandReveal:25,minScene:60,shortScene:60,mediumScene:120,longScene:240},$={fade:{type:"fade",durationInFrames:20},slideLeft:{type:"slide-left",durationInFrames:20},slideRight:{type:"slide-right",durationInFrames:20},wipe:{type:"wipe",durationInFrames:15},none:{type:"none",durationInFrames:0}};import{interpolate as Q,useCurrentFrame as R}from"remotion";import{jsx as K,Fragment as V}from"react/jsx-runtime";var C=({type:B,durationInFrames:D,direction:z,startAt:G=0,children:H})=>{let L=R();if(B==="none"||D===0)return K(V,{children:H});let M=Q(L,[G,G+D],z==="in"?[0,1]:[1,0],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),N=U(B,M);return K("div",{style:N,children:H})};function U(B,D){let z=J.entrance(D);switch(B){case"fade":return{opacity:z,width:"100%",height:"100%"};case"slide-left":return{opacity:z,transform:`translateX(${(1-z)*100}%)`,width:"100%",height:"100%"};case"slide-right":return{opacity:z,transform:`translateX(${(1-z)*-100}%)`,width:"100%",height:"100%"};case"wipe":return{clipPath:`inset(0 ${(1-z)*100}% 0 0)`,width:"100%",height:"100%"};default:return{width:"100%",height:"100%"}}}export{C as SceneTransitionWrapper};