@remotion/promo-pages 4.0.321 → 4.0.323

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 (181) hide show
  1. package/.turbo/turbo-make.log +2 -2
  2. package/dist/Homepage.js +28 -23
  3. package/dist/homepage/Pricing.js +2 -2
  4. package/dist/tailwind.css +6 -0
  5. package/package.json +10 -10
  6. package/src/components/homepage/Counter.tsx +3 -3
  7. package/.turbo/turbo-lint.log +0 -5
  8. package/dist/cn.d.ts +0 -2
  9. package/dist/cn.js +0 -5
  10. package/dist/components/Homepage.d.ts +0 -6
  11. package/dist/components/Homepage.js +0 -20
  12. package/dist/components/homepage/BackgroundAnimation.d.ts +0 -2
  13. package/dist/components/homepage/BackgroundAnimation.js +0 -66
  14. package/dist/components/homepage/ChooseTemplate.d.ts +0 -2
  15. package/dist/components/homepage/ChooseTemplate.js +0 -27
  16. package/dist/components/homepage/CommunityStats.d.ts +0 -3
  17. package/dist/components/homepage/CommunityStats.js +0 -6
  18. package/dist/components/homepage/CommunityStatsItems.d.ts +0 -7
  19. package/dist/components/homepage/CommunityStatsItems.js +0 -58
  20. package/dist/components/homepage/Counter.d.ts +0 -9
  21. package/dist/components/homepage/Counter.js +0 -55
  22. package/dist/components/homepage/Demo/Card.d.ts +0 -15
  23. package/dist/components/homepage/Demo/Card.js +0 -174
  24. package/dist/components/homepage/Demo/Cards.d.ts +0 -15
  25. package/dist/components/homepage/Demo/Cards.js +0 -57
  26. package/dist/components/homepage/Demo/Comp.d.ts +0 -38
  27. package/dist/components/homepage/Demo/Comp.js +0 -71
  28. package/dist/components/homepage/Demo/CurrentCountry.d.ts +0 -9
  29. package/dist/components/homepage/Demo/CurrentCountry.js +0 -48
  30. package/dist/components/homepage/Demo/DemoError.d.ts +0 -2
  31. package/dist/components/homepage/Demo/DemoError.js +0 -10
  32. package/dist/components/homepage/Demo/DemoErrorIcon.d.ts +0 -2
  33. package/dist/components/homepage/Demo/DemoErrorIcon.js +0 -16
  34. package/dist/components/homepage/Demo/DemoRender.d.ts +0 -102
  35. package/dist/components/homepage/Demo/DemoRender.js +0 -95
  36. package/dist/components/homepage/Demo/DigitWheel.d.ts +0 -9
  37. package/dist/components/homepage/Demo/DigitWheel.js +0 -94
  38. package/dist/components/homepage/Demo/DisplayedEmoji.d.ts +0 -5
  39. package/dist/components/homepage/Demo/DisplayedEmoji.js +0 -63
  40. package/dist/components/homepage/Demo/DoneCheckmark.d.ts +0 -2
  41. package/dist/components/homepage/Demo/DoneCheckmark.js +0 -20
  42. package/dist/components/homepage/Demo/DownloadNudge.d.ts +0 -2
  43. package/dist/components/homepage/Demo/DownloadNudge.js +0 -27
  44. package/dist/components/homepage/Demo/DragAndDropNudge.d.ts +0 -3
  45. package/dist/components/homepage/Demo/DragAndDropNudge.js +0 -26
  46. package/dist/components/homepage/Demo/EmojiCard.d.ts +0 -10
  47. package/dist/components/homepage/Demo/EmojiCard.js +0 -119
  48. package/dist/components/homepage/Demo/Minus.d.ts +0 -5
  49. package/dist/components/homepage/Demo/Minus.js +0 -11
  50. package/dist/components/homepage/Demo/PlayPauseButton.d.ts +0 -5
  51. package/dist/components/homepage/Demo/PlayPauseButton.js +0 -47
  52. package/dist/components/homepage/Demo/PlayerControls.d.ts +0 -8
  53. package/dist/components/homepage/Demo/PlayerControls.js +0 -15
  54. package/dist/components/homepage/Demo/PlayerSeekBar.d.ts +0 -11
  55. package/dist/components/homepage/Demo/PlayerSeekBar.js +0 -216
  56. package/dist/components/homepage/Demo/PlayerVolume.d.ts +0 -5
  57. package/dist/components/homepage/Demo/PlayerVolume.js +0 -53
  58. package/dist/components/homepage/Demo/Progress.d.ts +0 -4
  59. package/dist/components/homepage/Demo/Progress.js +0 -14
  60. package/dist/components/homepage/Demo/Spinner.d.ts +0 -5
  61. package/dist/components/homepage/Demo/Spinner.js +0 -37
  62. package/dist/components/homepage/Demo/Switcher.d.ts +0 -6
  63. package/dist/components/homepage/Demo/Switcher.js +0 -25
  64. package/dist/components/homepage/Demo/Temperature.d.ts +0 -6
  65. package/dist/components/homepage/Demo/Temperature.js +0 -21
  66. package/dist/components/homepage/Demo/TemperatureNumber.d.ts +0 -5
  67. package/dist/components/homepage/Demo/TemperatureNumber.js +0 -36
  68. package/dist/components/homepage/Demo/ThemeNudge.d.ts +0 -3
  69. package/dist/components/homepage/Demo/ThemeNudge.js +0 -35
  70. package/dist/components/homepage/Demo/TimeDisplay.d.ts +0 -6
  71. package/dist/components/homepage/Demo/TimeDisplay.js +0 -27
  72. package/dist/components/homepage/Demo/TrendingRepos.d.ts +0 -6
  73. package/dist/components/homepage/Demo/TrendingRepos.js +0 -65
  74. package/dist/components/homepage/Demo/icons.d.ts +0 -10
  75. package/dist/components/homepage/Demo/icons.js +0 -22
  76. package/dist/components/homepage/Demo/index.d.ts +0 -2
  77. package/dist/components/homepage/Demo/index.js +0 -95
  78. package/dist/components/homepage/Demo/math.d.ts +0 -10
  79. package/dist/components/homepage/Demo/math.js +0 -29
  80. package/dist/components/homepage/Demo/types.d.ts +0 -6
  81. package/dist/components/homepage/Demo/types.js +0 -0
  82. package/dist/components/homepage/EvaluateRemotion.d.ts +0 -3
  83. package/dist/components/homepage/EvaluateRemotion.js +0 -39
  84. package/dist/components/homepage/FreePricing.d.ts +0 -4
  85. package/dist/components/homepage/FreePricing.js +0 -75
  86. package/dist/components/homepage/GetStartedStrip.d.ts +0 -2
  87. package/dist/components/homepage/GetStartedStrip.js +0 -14
  88. package/dist/components/homepage/GitHubButton.d.ts +0 -2
  89. package/dist/components/homepage/GitHubButton.js +0 -7
  90. package/dist/components/homepage/IconForTemplate.d.ts +0 -6
  91. package/dist/components/homepage/IconForTemplate.js +0 -98
  92. package/dist/components/homepage/IfYouKnowReact.d.ts +0 -3
  93. package/dist/components/homepage/IfYouKnowReact.js +0 -23
  94. package/dist/components/homepage/InfoTooltip.d.ts +0 -6
  95. package/dist/components/homepage/InfoTooltip.js +0 -6
  96. package/dist/components/homepage/MoreTemplatesButton.d.ts +0 -2
  97. package/dist/components/homepage/MoreTemplatesButton.js +0 -10
  98. package/dist/components/homepage/MoreVideoPowerSection.d.ts +0 -2
  99. package/dist/components/homepage/MoreVideoPowerSection.js +0 -16
  100. package/dist/components/homepage/MuxVideo.d.ts +0 -7
  101. package/dist/components/homepage/MuxVideo.js +0 -45
  102. package/dist/components/homepage/NewsletterButton.d.ts +0 -2
  103. package/dist/components/homepage/NewsletterButton.js +0 -39
  104. package/dist/components/homepage/ParameterizeAndEdit.d.ts +0 -2
  105. package/dist/components/homepage/ParameterizeAndEdit.js +0 -22
  106. package/dist/components/homepage/Pricing.d.ts +0 -2
  107. package/dist/components/homepage/Pricing.js +0 -15
  108. package/dist/components/homepage/PricingBulletPoint.d.ts +0 -6
  109. package/dist/components/homepage/PricingBulletPoint.js +0 -19
  110. package/dist/components/homepage/RealMp4Videos.d.ts +0 -2
  111. package/dist/components/homepage/RealMp4Videos.js +0 -41
  112. package/dist/components/homepage/Spacer.d.ts +0 -2
  113. package/dist/components/homepage/Spacer.js +0 -4
  114. package/dist/components/homepage/TemplateIcon.d.ts +0 -5
  115. package/dist/components/homepage/TemplateIcon.js +0 -24
  116. package/dist/components/homepage/TextInput.d.ts +0 -7
  117. package/dist/components/homepage/TextInput.js +0 -34
  118. package/dist/components/homepage/TrustedByBanner.d.ts +0 -2
  119. package/dist/components/homepage/TrustedByBanner.js +0 -32
  120. package/dist/components/homepage/VideoApps.d.ts +0 -4
  121. package/dist/components/homepage/VideoApps.js +0 -72
  122. package/dist/components/homepage/VideoAppsShowcase.d.ts +0 -3
  123. package/dist/components/homepage/VideoAppsShowcase.js +0 -163
  124. package/dist/components/homepage/VideoAppsTitle.d.ts +0 -4
  125. package/dist/components/homepage/VideoAppsTitle.js +0 -4
  126. package/dist/components/homepage/VideoPlayerWithControls.d.ts +0 -20
  127. package/dist/components/homepage/VideoPlayerWithControls.js +0 -104
  128. package/dist/components/homepage/WriteInReact.d.ts +0 -2
  129. package/dist/components/homepage/WriteInReact.js +0 -10
  130. package/dist/components/homepage/YouAreHere.d.ts +0 -2
  131. package/dist/components/homepage/YouAreHere.js +0 -23
  132. package/dist/components/homepage/layout/Button.d.ts +0 -19
  133. package/dist/components/homepage/layout/Button.js +0 -29
  134. package/dist/components/homepage/layout/colors.d.ts +0 -13
  135. package/dist/components/homepage/layout/colors.js +0 -14
  136. package/dist/components/homepage/layout/use-color-mode.d.ts +0 -21
  137. package/dist/components/homepage/layout/use-color-mode.js +0 -22
  138. package/dist/components/homepage/layout/use-el-size.d.ts +0 -5
  139. package/dist/components/homepage/layout/use-el-size.js +0 -40
  140. package/dist/components/homepage/layout/use-mobile-layout.d.ts +0 -1
  141. package/dist/components/homepage/layout/use-mobile-layout.js +0 -6
  142. package/dist/components/icons/blank.d.ts +0 -3
  143. package/dist/components/icons/blank.js +0 -4
  144. package/dist/components/icons/clone.d.ts +0 -2
  145. package/dist/components/icons/clone.js +0 -2
  146. package/dist/components/icons/code-hike.d.ts +0 -3
  147. package/dist/components/icons/code-hike.js +0 -4
  148. package/dist/components/icons/cubes.d.ts +0 -3
  149. package/dist/components/icons/cubes.js +0 -4
  150. package/dist/components/icons/js.d.ts +0 -3
  151. package/dist/components/icons/js.js +0 -4
  152. package/dist/components/icons/music.d.ts +0 -2
  153. package/dist/components/icons/music.js +0 -4
  154. package/dist/components/icons/next.d.ts +0 -4
  155. package/dist/components/icons/next.js +0 -4
  156. package/dist/components/icons/overlay.d.ts +0 -3
  157. package/dist/components/icons/overlay.js +0 -4
  158. package/dist/components/icons/recorder.d.ts +0 -3
  159. package/dist/components/icons/recorder.js +0 -4
  160. package/dist/components/icons/remix.d.ts +0 -3
  161. package/dist/components/icons/remix.js +0 -4
  162. package/dist/components/icons/skia.d.ts +0 -3
  163. package/dist/components/icons/skia.js +0 -4
  164. package/dist/components/icons/stargazer.d.ts +0 -3
  165. package/dist/components/icons/stargazer.js +0 -4
  166. package/dist/components/icons/still.d.ts +0 -3
  167. package/dist/components/icons/still.js +0 -4
  168. package/dist/components/icons/tailwind.d.ts +0 -3
  169. package/dist/components/icons/tailwind.js +0 -4
  170. package/dist/components/icons/tiktok.d.ts +0 -3
  171. package/dist/components/icons/tiktok.js +0 -4
  172. package/dist/components/icons/ts.d.ts +0 -3
  173. package/dist/components/icons/ts.js +0 -4
  174. package/dist/components/icons/tts.d.ts +0 -3
  175. package/dist/components/icons/tts.js +0 -4
  176. package/dist/components/icons/undo.d.ts +0 -3
  177. package/dist/components/icons/undo.js +0 -2
  178. package/dist/components/icons/waveform.d.ts +0 -3
  179. package/dist/components/icons/waveform.js +0 -4
  180. package/dist/main.d.ts +0 -1
  181. package/dist/main.js +0 -6
@@ -1,174 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useCallback, useRef } from 'react';
3
- import { AbsoluteFill, spring } from 'remotion';
4
- import { cardHeight, cardWidth, getIndexFromPosition, getInitialPositions, getPositionForIndex, } from './math';
5
- import { Switcher } from './Switcher';
6
- const arePositionsEqual = (a, b) => {
7
- return a.every((pos, i) => {
8
- return pos.x === b[i].x && pos.y === b[i].y;
9
- });
10
- };
11
- export const Card = ({ positions, shouldBePositions, index, refsToUse, onUpdate, content, indices, theme, withSwitcher, onClickLeft, onClickRight, }) => {
12
- const refToUse = refsToUse[index];
13
- const stopPrevious = useRef([]);
14
- // eslint-disable-next-line react-hooks/exhaustive-deps
15
- let newIndices = [...indices];
16
- const applyPositions = useCallback((except) => {
17
- let stopped = false;
18
- stopPrevious.current.forEach((s) => {
19
- s();
20
- });
21
- stopPrevious.current.push(() => {
22
- stopped = true;
23
- });
24
- positions.current.forEach((_, i) => {
25
- const shouldBe = shouldBePositions.current[i];
26
- const ref = refsToUse[i].current;
27
- if (!ref) {
28
- return;
29
- }
30
- if (except === null) {
31
- ref.style.pointerEvents = 'none';
32
- }
33
- if (i === except) {
34
- ref.style.left = getPositionForIndex(i).x + 'px';
35
- ref.style.top = getPositionForIndex(i).y + 'px';
36
- return;
37
- }
38
- let animationI = 1;
39
- const duration = 20;
40
- const releasePositionX = positions.current[i].x;
41
- const releasePositionY = positions.current[i].y;
42
- const finishAnimation = () => {
43
- refsToUse.forEach((r) => {
44
- r.current.style.zIndex = '1';
45
- r.current.style.scale = '1';
46
- r.current.style.opacity = '1';
47
- });
48
- if (i === 0) {
49
- setTimeout(() => {
50
- onUpdate([...newIndices]);
51
- }, 200);
52
- }
53
- };
54
- if (releasePositionX === shouldBe.x &&
55
- releasePositionY === shouldBe.y &&
56
- animationI === duration &&
57
- except === null) {
58
- finishAnimation();
59
- return;
60
- }
61
- const update = () => {
62
- if (stopped) {
63
- return;
64
- }
65
- const progress = spring({
66
- fps: 60,
67
- frame: animationI,
68
- config: {
69
- damping: 200,
70
- },
71
- durationInFrames: duration,
72
- durationRestThreshold: 0.001,
73
- });
74
- const newX = progress * (shouldBe.x - releasePositionX) + releasePositionX;
75
- const newY = progress * (shouldBe.y - releasePositionY) + releasePositionY;
76
- ref.style.left = `${newX}px`;
77
- ref.style.top = `${newY}px`;
78
- positions.current[i] = {
79
- x: newX,
80
- y: newY,
81
- };
82
- animationI++;
83
- if (animationI === duration && except === null) {
84
- finishAnimation();
85
- return;
86
- }
87
- requestAnimationFrame(update);
88
- };
89
- update();
90
- });
91
- }, [newIndices, onUpdate, positions, refsToUse, shouldBePositions]);
92
- const onPointerDown = useCallback((e) => {
93
- e.currentTarget.setPointerCapture(e.pointerId);
94
- const cardLeft = refToUse.current.offsetLeft;
95
- const cardTop = refToUse.current.offsetTop;
96
- const startX = e.clientX;
97
- const startY = e.clientY;
98
- if (e.button === 2) {
99
- return;
100
- }
101
- let translateX = 0;
102
- let translateY = 0;
103
- refToUse.current.style.scale = '1.05';
104
- refToUse.current.style.cursor = 'grabbing';
105
- const onMove = (evt) => {
106
- refsToUse.forEach((r) => {
107
- if (r !== refToUse) {
108
- r.current.style.opacity = '0';
109
- }
110
- });
111
- const scale = refToUse.current.getBoundingClientRect().width / cardWidth;
112
- translateX = (evt.clientX - startX) * (1 / scale);
113
- translateY = (evt.clientY - startY) * (1 / scale);
114
- const position = getIndexFromPosition(cardLeft + translateX, cardTop + translateY);
115
- if (position === undefined) {
116
- throw new Error('pos');
117
- }
118
- if (position === index) {
119
- if (!arePositionsEqual(getInitialPositions(), shouldBePositions.current)) {
120
- shouldBePositions.current = getInitialPositions();
121
- applyPositions(index);
122
- }
123
- }
124
- else {
125
- const newPos = getInitialPositions();
126
- newPos[position] = getPositionForIndex(index);
127
- newPos[index] = getPositionForIndex(position);
128
- // eslint-disable-next-line react-hooks/exhaustive-deps
129
- newIndices = [...indices];
130
- const prevIndexPosition = newIndices[position];
131
- newIndices[position] = newIndices[index];
132
- newIndices[index] = prevIndexPosition;
133
- if (!arePositionsEqual(newPos, shouldBePositions.current)) {
134
- shouldBePositions.current = newPos;
135
- applyPositions(index);
136
- }
137
- }
138
- refToUse.current.style.transform = `translateX(${translateX}px) translateY(${translateY}px)`;
139
- refToUse.current.style.zIndex = '2';
140
- };
141
- refToUse.current.addEventListener('pointerup', () => {
142
- positions.current[index] = {
143
- x: cardLeft + translateX,
144
- y: cardTop + translateY,
145
- };
146
- refToUse.current.style.left = `${cardLeft + translateX}px`;
147
- refToUse.current.style.top = `${cardTop + translateY}px`;
148
- refToUse.current.style.transform = `translateX(0px) translateY(0px)`;
149
- refToUse.current.style.cursor = 'grab';
150
- refToUse.current.removeEventListener('pointermove', onMove);
151
- applyPositions(null);
152
- }, { once: true });
153
- refToUse.current.addEventListener('pointermove', onMove);
154
- }, [applyPositions, index, positions, refToUse, shouldBePositions]);
155
- const onPointerUp = useCallback((e) => {
156
- e.currentTarget.releasePointerCapture(e.pointerId);
157
- }, []);
158
- const { x, y } = getPositionForIndex(index);
159
- const color = theme === 'light' ? ' #EAEAEA' : '#333';
160
- return (_jsx("div", { ref: refToUse, className: 'transition-opacity duration-200', onPointerDown: onPointerDown, onPointerUp: onPointerUp, style: {
161
- width: cardWidth,
162
- height: cardHeight,
163
- position: 'absolute',
164
- left: x,
165
- top: y,
166
- userSelect: 'none',
167
- border: `1px solid ${color}`,
168
- borderRadius: 13,
169
- cursor: 'grab',
170
- }, children: _jsxs(AbsoluteFill, { style: {
171
- backgroundColor: color,
172
- borderRadius: 12,
173
- }, className: 'transition-opacity duration-200', children: [content, withSwitcher ? (_jsxs(_Fragment, { children: [_jsx(Switcher, { onTap: onClickLeft, type: "left", theme: theme }), _jsx(Switcher, { onTap: onClickRight, type: "right", theme: theme })] })) : null] }) }));
174
- };
@@ -1,15 +0,0 @@
1
- import type { EmojiName } from '@remotion/animated-emoji';
2
- import React from 'react';
3
- import type { RemoteData } from './Comp';
4
- import type { Location } from './types';
5
- export declare const Cards: React.FC<{
6
- readonly onUpdate: (newIndices: number[]) => void;
7
- readonly indices: number[];
8
- readonly theme: 'dark' | 'light';
9
- readonly location: Location | null;
10
- readonly trending: RemoteData | null;
11
- readonly onToggle: () => void;
12
- readonly onLeft: () => void;
13
- readonly onRight: () => void;
14
- readonly emojiName: EmojiName;
15
- }>;
@@ -1,57 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { createRef, useCallback, useEffect, useRef, useState, } from 'react';
3
- import { AbsoluteFill, getRemotionEnvironment } from 'remotion';
4
- import { Card } from './Card';
5
- import { CurrentCountry } from './CurrentCountry';
6
- import { EmojiCard } from './EmojiCard';
7
- import { getInitialPositions } from './math';
8
- import { Temperature } from './Temperature';
9
- import { TrendingRepos } from './TrendingRepos';
10
- export const Cards = ({ onUpdate, indices, theme, onToggle, onLeft: onLeftPress, onRight: onRightPress, emojiName, location, trending, }) => {
11
- const container = useRef(null);
12
- const [refs] = useState(() => {
13
- return new Array(4).fill(true).map(() => {
14
- return createRef();
15
- });
16
- });
17
- const positions = useRef(getInitialPositions());
18
- const shouldBePositions = useRef(getInitialPositions());
19
- const { isRendering } = getRemotionEnvironment();
20
- useEffect(() => {
21
- const { current } = container;
22
- if (!current) {
23
- return;
24
- }
25
- const onClick = (e) => {
26
- if (e.target !== current) {
27
- return;
28
- }
29
- onToggle();
30
- };
31
- current.addEventListener('click', onClick);
32
- return () => {
33
- current.removeEventListener('click', onClick);
34
- };
35
- }, [onToggle]);
36
- const ref = useRef(null);
37
- const onLeft = useCallback(() => {
38
- var _a;
39
- (_a = ref.current) === null || _a === void 0 ? void 0 : _a.onRight();
40
- onRightPress();
41
- }, [onRightPress]);
42
- const onRight = useCallback(() => {
43
- var _a;
44
- (_a = ref.current) === null || _a === void 0 ? void 0 : _a.onLeft();
45
- onLeftPress();
46
- }, [onLeftPress]);
47
- return (_jsx(AbsoluteFill, { ref: container, children: new Array(4).fill(true).map((_, i) => {
48
- var _a, _b, _c;
49
- const index = indices[i];
50
- const content = index === 0 ? (_jsx(TrendingRepos, { trending: trending, theme: theme })) : index === 1 ? (_jsx(Temperature, { city: (location === null || location === void 0 ? void 0 : location.city) ? decodeURIComponent(location === null || location === void 0 ? void 0 : location.city) : null, theme: theme, temperatureInCelsius: (_a = trending === null || trending === void 0 ? void 0 : trending.temperatureInCelsius) !== null && _a !== void 0 ? _a : null })) : index === 2 ? (_jsx(CurrentCountry, { countryPaths: (_b = trending === null || trending === void 0 ? void 0 : trending.countryPaths) !== null && _b !== void 0 ? _b : null, countryLabel: (_c = trending === null || trending === void 0 ? void 0 : trending.countryLabel) !== null && _c !== void 0 ? _c : null, theme: theme })) : (_jsx(EmojiCard, { ref: ref, emojiIndex: emojiName }));
51
- return (_jsx(Card
52
- // eslint-disable-next-line react/no-array-index-key
53
- , { onUpdate: onUpdate,
54
- // @ts-expect-error
55
- refsToUse: refs, index: i, content: content, positions: positions, shouldBePositions: shouldBePositions, indices: indices, theme: theme, withSwitcher: index === 3 && !isRendering, onClickLeft: onLeft, onClickRight: onRight }, i));
56
- }) }));
57
- };
@@ -1,38 +0,0 @@
1
- import React from 'react';
2
- import { type CalculateMetadataFunction } from 'remotion';
3
- import type { Location } from './types';
4
- export type RemoteData = {
5
- repos: string[];
6
- date: string | number;
7
- temperatureInCelsius: number;
8
- countryLabel: string;
9
- countryPaths: {
10
- d: string;
11
- class: string;
12
- }[];
13
- };
14
- export type LocationAndTrending = {
15
- readonly location: Location | null;
16
- readonly trending: RemoteData | null;
17
- };
18
- export declare const getDataAndProps: () => Promise<{
19
- trending: {
20
- repos: any;
21
- date: any;
22
- temperatureInCelsius: number;
23
- countryLabel: any;
24
- countryPaths: any;
25
- };
26
- location: Location;
27
- }>;
28
- export declare const calculateMetadata: CalculateMetadataFunction<DemoPlayerProps>;
29
- export type DemoPlayerProps = {
30
- readonly onToggle: () => void;
31
- readonly cardOrder: number[];
32
- readonly updateCardOrder: (newCardOrder: number[]) => void;
33
- readonly theme: 'dark' | 'light';
34
- readonly onClickLeft: () => void;
35
- readonly onClickRight: () => void;
36
- readonly emojiIndex: number;
37
- } & LocationAndTrending;
38
- export declare const HomepageVideoComp: React.FC<DemoPlayerProps>;
@@ -1,71 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useCallback, useEffect, useMemo, useState } from 'react';
3
- import { AbsoluteFill, Audio, prefetch, staticFile, } from 'remotion';
4
- import { Cards } from './Cards';
5
- export const getDataAndProps = async () => {
6
- const location = (await fetch('https://bugs-git-homepage-player-remotion.vercel.app/api/location').then((res) => res.json()));
7
- const trending = await fetch(`https://bugs.remotion.dev/trending?lat=${location.latitude}&lng=${location.longitude}&country=${location.country}`)
8
- .then((res) => res.json())
9
- .then((data) => {
10
- return {
11
- repos: data.trending.repos.slice(0, 3),
12
- date: data.trending.dateFetched,
13
- temperatureInCelsius: Math.round(data.temperature),
14
- countryLabel: data.countryLabel,
15
- countryPaths: data.countryPaths,
16
- };
17
- });
18
- return { trending, location };
19
- };
20
- export const calculateMetadata = ({ props, }) => {
21
- return {
22
- durationInFrames: 120,
23
- fps: 30,
24
- height: 360,
25
- width: 640,
26
- props: {
27
- ...props,
28
- },
29
- };
30
- };
31
- const fireAudio = staticFile('fire.mp3');
32
- const partyHornAudio = staticFile('partyhorn.mp3');
33
- const sadAudio = staticFile('sad.mp3');
34
- export const HomepageVideoComp = ({ theme, onToggle, cardOrder, updateCardOrder, location, trending, emojiIndex, onClickLeft, onClickRight, }) => {
35
- const [rerenders, setRerenders] = useState(0);
36
- const onUpdate = useCallback((newIndices) => {
37
- setRerenders(rerenders + 1);
38
- updateCardOrder(newIndices);
39
- }, [rerenders, updateCardOrder]);
40
- const emoji = useMemo(() => {
41
- if ((emojiIndex + 10000 * 3) % 3 === 1) {
42
- return 'melting';
43
- }
44
- if ((emojiIndex + 10000 * 3) % 3 === 2) {
45
- return 'fire';
46
- }
47
- return 'partying-face';
48
- }, [emojiIndex]);
49
- const audioSrc = useMemo(() => {
50
- if (emoji === 'fire') {
51
- return fireAudio;
52
- }
53
- if (emoji === 'partying-face') {
54
- return partyHornAudio;
55
- }
56
- return sadAudio;
57
- }, [emoji]);
58
- useEffect(() => {
59
- const a = prefetch(fireAudio);
60
- const b = prefetch(partyHornAudio);
61
- const c = prefetch(sadAudio);
62
- return () => {
63
- a.free();
64
- b.free();
65
- c.free();
66
- };
67
- }, []);
68
- return (_jsxs(AbsoluteFill, { style: {
69
- backgroundColor: theme === 'dark' ? '#222' : '#fafafa',
70
- }, children: [_jsx(Cards, { onUpdate: onUpdate, indices: cardOrder, theme: theme, location: location, trending: trending, onToggle: onToggle, onLeft: onClickLeft, onRight: onClickRight, emojiName: emoji }, rerenders), audioSrc ? _jsx(Audio, { src: audioSrc }) : null] }));
71
- };
@@ -1,9 +0,0 @@
1
- import React from 'react';
2
- export declare const CurrentCountry: React.FC<{
3
- readonly theme: 'dark' | 'light';
4
- readonly countryPaths: {
5
- d: string;
6
- class: string;
7
- }[] | null;
8
- readonly countryLabel: string | null;
9
- }>;
@@ -1,48 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { getBoundingBox, resetPath } from '@remotion/paths';
3
- import { AbsoluteFill, interpolate, spring, useCurrentFrame, useVideoConfig, } from 'remotion';
4
- export const CurrentCountry = ({ theme, countryPaths, countryLabel }) => {
5
- const { fps } = useVideoConfig();
6
- const frame = useCurrentFrame();
7
- if (!countryPaths) {
8
- return null;
9
- }
10
- const joined = countryPaths.map((p) => p.d).join(' ');
11
- const reset = resetPath(joined);
12
- const boundingBox = getBoundingBox(reset);
13
- const progress = spring({
14
- fps,
15
- frame,
16
- delay: 10,
17
- });
18
- return (_jsxs(AbsoluteFill, { style: { overflow: 'hidden' }, children: [_jsx(AbsoluteFill, { style: {
19
- transform: `scale(${progress})`,
20
- }, children: _jsx("svg", { viewBox: boundingBox.viewBox, style: {
21
- scale: '0.8',
22
- }, children: _jsx("path", { fill: theme === 'light' ? '#bbb' : '#222', d: reset }) }) }), _jsxs(AbsoluteFill, { style: {
23
- alignItems: 'center',
24
- justifyContent: 'center',
25
- }, children: [_jsx("div", { style: {
26
- color: '#0b84f3',
27
- fontFamily: 'GTPlanar',
28
- fontWeight: '500',
29
- fontSize: 13,
30
- textAlign: 'center',
31
- marginTop: -10,
32
- width: '100%',
33
- paddingLeft: 20,
34
- paddingRight: 20,
35
- transform: 'translateX(' + interpolate(progress, [0, 1], [-100, 0]) + '%)',
36
- }, children: "Your country" }), _jsx("div", { style: {
37
- lineHeight: 1.1,
38
- fontFamily: 'GTPlanar',
39
- textAlign: 'center',
40
- fontWeight: '500',
41
- fontSize: 30,
42
- color: theme === 'dark' ? 'white' : 'black',
43
- width: '100%',
44
- paddingLeft: 20,
45
- paddingRight: 20,
46
- transform: 'translateX(' + interpolate(progress, [0, 1], [100, 0]) + '%)',
47
- }, children: countryLabel })] })] }));
48
- };
@@ -1,2 +0,0 @@
1
- import React from 'react';
2
- export declare const DemoError: React.FC;
@@ -1,10 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { FONTS, RED } from '../layout/colors';
3
- export const DemoError = () => {
4
- return (_jsx("div", { style: {
5
- color: RED,
6
- fontFamily: FONTS.GTPLANAR,
7
- position: 'absolute',
8
- paddingTop: 15,
9
- }, children: "Sorry, we limit the amount of renders possible per day on this page. Come back tomorrow!" }));
10
- };
@@ -1,2 +0,0 @@
1
- import React from 'react';
2
- export declare const DemoErrorIcon: React.FC;
@@ -1,16 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { RED } from '../layout/colors';
3
- export const DemoErrorIcon = () => {
4
- return (_jsx("div", { style: {
5
- height: 26,
6
- width: 26,
7
- borderRadius: 13,
8
- display: 'flex',
9
- alignItems: 'center',
10
- justifyContent: 'center',
11
- animation: 'jump 0.2s ease-out',
12
- }, children: _jsx("svg", { style: {
13
- flexShrink: 0,
14
- width: 26,
15
- }, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", children: _jsx("path", { fill: RED, d: "M17.1 292c-12.9-22.3-12.9-49.7 0-72L105.4 67.1c12.9-22.3 36.6-36 62.4-36l176.6 0c25.7 0 49.5 13.7 62.4 36L494.9 220c12.9 22.3 12.9 49.7 0 72L406.6 444.9c-12.9 22.3-36.6 36-62.4 36l-176.6 0c-25.7 0-49.5-13.7-62.4-36L17.1 292zM256 128c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z" }) }) }));
16
- };
@@ -1,102 +0,0 @@
1
- import React from 'react';
2
- import { z } from 'zod';
3
- declare const data: z.ZodObject<{
4
- trending: z.ZodObject<{
5
- repos: z.ZodArray<z.ZodString, "many">;
6
- date: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
7
- temperatureInCelsius: z.ZodNumber;
8
- countryLabel: z.ZodString;
9
- countryPaths: z.ZodArray<z.ZodObject<{
10
- d: z.ZodString;
11
- class: z.ZodString;
12
- }, "strip", z.ZodTypeAny, {
13
- d: string;
14
- class: string;
15
- }, {
16
- d: string;
17
- class: string;
18
- }>, "many">;
19
- }, "strip", z.ZodTypeAny, {
20
- countryPaths: {
21
- d: string;
22
- class: string;
23
- }[];
24
- countryLabel: string;
25
- temperatureInCelsius: number;
26
- date: string | number;
27
- repos: string[];
28
- }, {
29
- countryPaths: {
30
- d: string;
31
- class: string;
32
- }[];
33
- countryLabel: string;
34
- temperatureInCelsius: number;
35
- date: string | number;
36
- repos: string[];
37
- }>;
38
- location: z.ZodObject<{
39
- country: z.ZodString;
40
- city: z.ZodString;
41
- latitude: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
42
- longitude: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
43
- }, "strip", z.ZodTypeAny, {
44
- city: string;
45
- country: string;
46
- latitude: string | number;
47
- longitude: string | number;
48
- }, {
49
- city: string;
50
- country: string;
51
- latitude: string | number;
52
- longitude: string | number;
53
- }>;
54
- emojiIndex: z.ZodNumber;
55
- theme: z.ZodEnum<["light", "dark"]>;
56
- cardOrder: z.ZodArray<z.ZodNumber, "many">;
57
- }, "strip", z.ZodTypeAny, {
58
- theme: "dark" | "light";
59
- emojiIndex: number;
60
- trending: {
61
- countryPaths: {
62
- d: string;
63
- class: string;
64
- }[];
65
- countryLabel: string;
66
- temperatureInCelsius: number;
67
- date: string | number;
68
- repos: string[];
69
- };
70
- location: {
71
- city: string;
72
- country: string;
73
- latitude: string | number;
74
- longitude: string | number;
75
- };
76
- cardOrder: number[];
77
- }, {
78
- theme: "dark" | "light";
79
- emojiIndex: number;
80
- trending: {
81
- countryPaths: {
82
- d: string;
83
- class: string;
84
- }[];
85
- countryLabel: string;
86
- temperatureInCelsius: number;
87
- date: string | number;
88
- repos: string[];
89
- };
90
- location: {
91
- city: string;
92
- country: string;
93
- latitude: string | number;
94
- longitude: string | number;
95
- };
96
- cardOrder: number[];
97
- }>;
98
- export declare const RenderButton: React.FC<{
99
- readonly renderData: z.infer<typeof data> | null;
100
- readonly onError: () => void;
101
- }>;
102
- export {};
@@ -1,95 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import React, { useCallback } from 'react';
3
- import { z } from 'zod';
4
- import { PALETTE } from '../layout/colors';
5
- import { DemoErrorIcon } from './DemoErrorIcon';
6
- import { DoneCheckmark } from './DoneCheckmark';
7
- import { Progress } from './Progress';
8
- import { Spinner } from './Spinner';
9
- const countryPath = z.object({
10
- d: z.string(),
11
- class: z.string(),
12
- });
13
- const remoteData = z.object({
14
- repos: z.array(z.string()),
15
- date: z.string().or(z.number()),
16
- temperatureInCelsius: z.number(),
17
- countryLabel: z.string(),
18
- countryPaths: z.array(countryPath),
19
- });
20
- const location = z.object({
21
- country: z.string(),
22
- city: z.string(),
23
- latitude: z.number().or(z.string()),
24
- longitude: z.number().or(z.string()),
25
- });
26
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
27
- const data = z.object({
28
- trending: remoteData,
29
- location,
30
- emojiIndex: z.number(),
31
- theme: z.enum(['light', 'dark']),
32
- cardOrder: z.array(z.number()),
33
- });
34
- const style = {
35
- appearance: 'none',
36
- border: 'none',
37
- outline: 'none',
38
- backgroundColor: 'transparent',
39
- cursor: 'pointer',
40
- width: 55,
41
- height: 50,
42
- display: 'flex',
43
- alignItems: 'center',
44
- justifyContent: 'center',
45
- };
46
- export const RenderButton = ({ renderData, onError }) => {
47
- const [state, setState] = React.useState({
48
- type: 'idle',
49
- });
50
- const triggerRender = useCallback(async () => {
51
- if (renderData === null) {
52
- return;
53
- }
54
- try {
55
- setState({ type: 'invoking' });
56
- const { renderId, bucketName } = await (await fetch('https://bugs.remotion.dev/render', {
57
- method: 'post',
58
- headers: { 'content-type': 'application/json' },
59
- body: JSON.stringify(renderData),
60
- })).json();
61
- setState({ type: 'progress', progress: 0 });
62
- let done = false;
63
- while (!done) {
64
- const progress = (await (await fetch('https://bugs.remotion.dev/progress', {
65
- method: 'post',
66
- headers: { 'content-type': 'application/json' },
67
- body: JSON.stringify({ renderId, bucketName }),
68
- })).json());
69
- setState({
70
- type: 'progress',
71
- progress: progress.overallProgress,
72
- });
73
- if (progress.outputFile) {
74
- done = true;
75
- const a = document.createElement('a');
76
- a.href = progress.outputFile;
77
- a.download = 'remotion.dev.mp4';
78
- a.click();
79
- setState({ type: 'done' });
80
- }
81
- if (progress.fatalErrorEncountered) {
82
- done = true;
83
- }
84
- }
85
- }
86
- catch (_a) {
87
- setState({ type: 'error' });
88
- onError();
89
- }
90
- }, [onError, renderData]);
91
- return (_jsx("button", { type: "button", onClick: triggerRender, style: style, disabled: !renderData || state.type !== 'idle', children: state.type === 'error' ? (_jsx(DemoErrorIcon, {})) : state.type === 'done' ? (_jsx(DoneCheckmark, {})) : state.type === 'progress' ? (_jsx(Progress, { progress: state.progress })) : state.type === 'invoking' ? (_jsx(Spinner, { size: 20, duration: 1 })) : (_jsx("svg", { style: {
92
- width: 18,
93
- opacity: renderData ? 1 : 0.5,
94
- }, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 384 512", children: _jsx("path", { fill: PALETTE.TEXT_COLOR, d: "M214.6 342.6L192 365.3l-22.6-22.6-128-128L18.7 192 64 146.7l22.6 22.6L160 242.7 160 64l0-32 64 0 0 32 0 178.7 73.4-73.4L320 146.7 365.3 192l-22.6 22.6-128 128zM32 416l320 0 32 0 0 64-32 0L32 480 0 480l0-64 32 0z" }) })) }));
95
- };
@@ -1,9 +0,0 @@
1
- import React from 'react';
2
- export declare const NUM_WIDTH = 36;
3
- export declare const Wheel: React.FC<{
4
- readonly delay: number;
5
- readonly digits: number[];
6
- readonly renderDigit: (i: number) => React.ReactNode;
7
- readonly isLeadingDigit: boolean;
8
- readonly isNegative: boolean[];
9
- }>;