@remotion/promo-pages 4.0.340 → 4.0.344

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 (185) hide show
  1. package/.turbo/turbo-make.log +2 -2
  2. package/LICENSE.md +7 -7
  3. package/dist/Homepage.js +248 -223
  4. package/dist/tailwind.css +3 -0
  5. package/package.json +10 -10
  6. package/src/components/homepage/CommunityStatsItems.tsx +1 -1
  7. package/src/components/homepage/Demo/Cards.tsx +2 -2
  8. package/src/components/homepage/Demo/EmojiCard.tsx +4 -2
  9. package/src/components/homepage/Demo/icons.tsx +2 -2
  10. package/src/components/homepage/GitHubButton.tsx +1 -1
  11. package/src/components/homepage/VideoAppsShowcase.tsx +70 -90
  12. package/dist/cn.d.ts +0 -2
  13. package/dist/cn.js +0 -5
  14. package/dist/components/Homepage.d.ts +0 -6
  15. package/dist/components/Homepage.js +0 -20
  16. package/dist/components/homepage/BackgroundAnimation.d.ts +0 -2
  17. package/dist/components/homepage/BackgroundAnimation.js +0 -66
  18. package/dist/components/homepage/ChooseTemplate.d.ts +0 -2
  19. package/dist/components/homepage/ChooseTemplate.js +0 -27
  20. package/dist/components/homepage/CommunityStats.d.ts +0 -3
  21. package/dist/components/homepage/CommunityStats.js +0 -6
  22. package/dist/components/homepage/CommunityStatsItems.d.ts +0 -7
  23. package/dist/components/homepage/CommunityStatsItems.js +0 -58
  24. package/dist/components/homepage/Counter.d.ts +0 -9
  25. package/dist/components/homepage/Counter.js +0 -55
  26. package/dist/components/homepage/Demo/Card.d.ts +0 -15
  27. package/dist/components/homepage/Demo/Card.js +0 -174
  28. package/dist/components/homepage/Demo/Cards.d.ts +0 -15
  29. package/dist/components/homepage/Demo/Cards.js +0 -57
  30. package/dist/components/homepage/Demo/Comp.d.ts +0 -38
  31. package/dist/components/homepage/Demo/Comp.js +0 -71
  32. package/dist/components/homepage/Demo/CurrentCountry.d.ts +0 -9
  33. package/dist/components/homepage/Demo/CurrentCountry.js +0 -48
  34. package/dist/components/homepage/Demo/DemoError.d.ts +0 -2
  35. package/dist/components/homepage/Demo/DemoError.js +0 -10
  36. package/dist/components/homepage/Demo/DemoErrorIcon.d.ts +0 -2
  37. package/dist/components/homepage/Demo/DemoErrorIcon.js +0 -16
  38. package/dist/components/homepage/Demo/DemoRender.d.ts +0 -102
  39. package/dist/components/homepage/Demo/DemoRender.js +0 -95
  40. package/dist/components/homepage/Demo/DigitWheel.d.ts +0 -9
  41. package/dist/components/homepage/Demo/DigitWheel.js +0 -94
  42. package/dist/components/homepage/Demo/DisplayedEmoji.d.ts +0 -5
  43. package/dist/components/homepage/Demo/DisplayedEmoji.js +0 -63
  44. package/dist/components/homepage/Demo/DoneCheckmark.d.ts +0 -2
  45. package/dist/components/homepage/Demo/DoneCheckmark.js +0 -20
  46. package/dist/components/homepage/Demo/DownloadNudge.d.ts +0 -2
  47. package/dist/components/homepage/Demo/DownloadNudge.js +0 -27
  48. package/dist/components/homepage/Demo/DragAndDropNudge.d.ts +0 -3
  49. package/dist/components/homepage/Demo/DragAndDropNudge.js +0 -26
  50. package/dist/components/homepage/Demo/EmojiCard.d.ts +0 -10
  51. package/dist/components/homepage/Demo/EmojiCard.js +0 -119
  52. package/dist/components/homepage/Demo/Minus.d.ts +0 -5
  53. package/dist/components/homepage/Demo/Minus.js +0 -11
  54. package/dist/components/homepage/Demo/PlayPauseButton.d.ts +0 -5
  55. package/dist/components/homepage/Demo/PlayPauseButton.js +0 -47
  56. package/dist/components/homepage/Demo/PlayerControls.d.ts +0 -8
  57. package/dist/components/homepage/Demo/PlayerControls.js +0 -15
  58. package/dist/components/homepage/Demo/PlayerSeekBar.d.ts +0 -11
  59. package/dist/components/homepage/Demo/PlayerSeekBar.js +0 -216
  60. package/dist/components/homepage/Demo/PlayerVolume.d.ts +0 -5
  61. package/dist/components/homepage/Demo/PlayerVolume.js +0 -53
  62. package/dist/components/homepage/Demo/Progress.d.ts +0 -4
  63. package/dist/components/homepage/Demo/Progress.js +0 -14
  64. package/dist/components/homepage/Demo/Spinner.d.ts +0 -5
  65. package/dist/components/homepage/Demo/Spinner.js +0 -37
  66. package/dist/components/homepage/Demo/Switcher.d.ts +0 -6
  67. package/dist/components/homepage/Demo/Switcher.js +0 -25
  68. package/dist/components/homepage/Demo/Temperature.d.ts +0 -6
  69. package/dist/components/homepage/Demo/Temperature.js +0 -21
  70. package/dist/components/homepage/Demo/TemperatureNumber.d.ts +0 -5
  71. package/dist/components/homepage/Demo/TemperatureNumber.js +0 -36
  72. package/dist/components/homepage/Demo/ThemeNudge.d.ts +0 -3
  73. package/dist/components/homepage/Demo/ThemeNudge.js +0 -35
  74. package/dist/components/homepage/Demo/TimeDisplay.d.ts +0 -6
  75. package/dist/components/homepage/Demo/TimeDisplay.js +0 -27
  76. package/dist/components/homepage/Demo/TrendingRepos.d.ts +0 -6
  77. package/dist/components/homepage/Demo/TrendingRepos.js +0 -65
  78. package/dist/components/homepage/Demo/icons.d.ts +0 -10
  79. package/dist/components/homepage/Demo/icons.js +0 -22
  80. package/dist/components/homepage/Demo/index.d.ts +0 -2
  81. package/dist/components/homepage/Demo/index.js +0 -95
  82. package/dist/components/homepage/Demo/math.d.ts +0 -10
  83. package/dist/components/homepage/Demo/math.js +0 -29
  84. package/dist/components/homepage/Demo/types.d.ts +0 -6
  85. package/dist/components/homepage/Demo/types.js +0 -0
  86. package/dist/components/homepage/EvaluateRemotion.d.ts +0 -3
  87. package/dist/components/homepage/EvaluateRemotion.js +0 -39
  88. package/dist/components/homepage/FreePricing.d.ts +0 -4
  89. package/dist/components/homepage/FreePricing.js +0 -75
  90. package/dist/components/homepage/GetStartedStrip.d.ts +0 -2
  91. package/dist/components/homepage/GetStartedStrip.js +0 -14
  92. package/dist/components/homepage/GitHubButton.d.ts +0 -2
  93. package/dist/components/homepage/GitHubButton.js +0 -7
  94. package/dist/components/homepage/IconForTemplate.d.ts +0 -6
  95. package/dist/components/homepage/IconForTemplate.js +0 -98
  96. package/dist/components/homepage/IfYouKnowReact.d.ts +0 -3
  97. package/dist/components/homepage/IfYouKnowReact.js +0 -23
  98. package/dist/components/homepage/InfoTooltip.d.ts +0 -6
  99. package/dist/components/homepage/InfoTooltip.js +0 -6
  100. package/dist/components/homepage/MoreTemplatesButton.d.ts +0 -2
  101. package/dist/components/homepage/MoreTemplatesButton.js +0 -10
  102. package/dist/components/homepage/MoreVideoPowerSection.d.ts +0 -2
  103. package/dist/components/homepage/MoreVideoPowerSection.js +0 -16
  104. package/dist/components/homepage/MuxVideo.d.ts +0 -7
  105. package/dist/components/homepage/MuxVideo.js +0 -45
  106. package/dist/components/homepage/NewsletterButton.d.ts +0 -2
  107. package/dist/components/homepage/NewsletterButton.js +0 -39
  108. package/dist/components/homepage/ParameterizeAndEdit.d.ts +0 -2
  109. package/dist/components/homepage/ParameterizeAndEdit.js +0 -22
  110. package/dist/components/homepage/Pricing.d.ts +0 -2
  111. package/dist/components/homepage/Pricing.js +0 -15
  112. package/dist/components/homepage/PricingBulletPoint.d.ts +0 -6
  113. package/dist/components/homepage/PricingBulletPoint.js +0 -19
  114. package/dist/components/homepage/RealMp4Videos.d.ts +0 -2
  115. package/dist/components/homepage/RealMp4Videos.js +0 -41
  116. package/dist/components/homepage/Spacer.d.ts +0 -2
  117. package/dist/components/homepage/Spacer.js +0 -4
  118. package/dist/components/homepage/TemplateIcon.d.ts +0 -5
  119. package/dist/components/homepage/TemplateIcon.js +0 -24
  120. package/dist/components/homepage/TextInput.d.ts +0 -7
  121. package/dist/components/homepage/TextInput.js +0 -34
  122. package/dist/components/homepage/TrustedByBanner.d.ts +0 -2
  123. package/dist/components/homepage/TrustedByBanner.js +0 -32
  124. package/dist/components/homepage/VideoApps.d.ts +0 -4
  125. package/dist/components/homepage/VideoApps.js +0 -72
  126. package/dist/components/homepage/VideoAppsShowcase.d.ts +0 -3
  127. package/dist/components/homepage/VideoAppsShowcase.js +0 -163
  128. package/dist/components/homepage/VideoAppsTitle.d.ts +0 -4
  129. package/dist/components/homepage/VideoAppsTitle.js +0 -4
  130. package/dist/components/homepage/VideoPlayerWithControls.d.ts +0 -20
  131. package/dist/components/homepage/VideoPlayerWithControls.js +0 -104
  132. package/dist/components/homepage/WriteInReact.d.ts +0 -2
  133. package/dist/components/homepage/WriteInReact.js +0 -10
  134. package/dist/components/homepage/YouAreHere.d.ts +0 -2
  135. package/dist/components/homepage/YouAreHere.js +0 -23
  136. package/dist/components/homepage/layout/Button.d.ts +0 -19
  137. package/dist/components/homepage/layout/Button.js +0 -29
  138. package/dist/components/homepage/layout/colors.d.ts +0 -13
  139. package/dist/components/homepage/layout/colors.js +0 -14
  140. package/dist/components/homepage/layout/use-color-mode.d.ts +0 -21
  141. package/dist/components/homepage/layout/use-color-mode.js +0 -22
  142. package/dist/components/homepage/layout/use-el-size.d.ts +0 -5
  143. package/dist/components/homepage/layout/use-el-size.js +0 -40
  144. package/dist/components/homepage/layout/use-mobile-layout.d.ts +0 -1
  145. package/dist/components/homepage/layout/use-mobile-layout.js +0 -6
  146. package/dist/components/icons/blank.d.ts +0 -3
  147. package/dist/components/icons/blank.js +0 -4
  148. package/dist/components/icons/clone.d.ts +0 -2
  149. package/dist/components/icons/clone.js +0 -2
  150. package/dist/components/icons/code-hike.d.ts +0 -3
  151. package/dist/components/icons/code-hike.js +0 -4
  152. package/dist/components/icons/cubes.d.ts +0 -3
  153. package/dist/components/icons/cubes.js +0 -4
  154. package/dist/components/icons/js.d.ts +0 -3
  155. package/dist/components/icons/js.js +0 -4
  156. package/dist/components/icons/music.d.ts +0 -2
  157. package/dist/components/icons/music.js +0 -4
  158. package/dist/components/icons/next.d.ts +0 -4
  159. package/dist/components/icons/next.js +0 -4
  160. package/dist/components/icons/overlay.d.ts +0 -3
  161. package/dist/components/icons/overlay.js +0 -4
  162. package/dist/components/icons/recorder.d.ts +0 -3
  163. package/dist/components/icons/recorder.js +0 -4
  164. package/dist/components/icons/remix.d.ts +0 -3
  165. package/dist/components/icons/remix.js +0 -4
  166. package/dist/components/icons/skia.d.ts +0 -3
  167. package/dist/components/icons/skia.js +0 -4
  168. package/dist/components/icons/stargazer.d.ts +0 -3
  169. package/dist/components/icons/stargazer.js +0 -4
  170. package/dist/components/icons/still.d.ts +0 -3
  171. package/dist/components/icons/still.js +0 -4
  172. package/dist/components/icons/tailwind.d.ts +0 -3
  173. package/dist/components/icons/tailwind.js +0 -4
  174. package/dist/components/icons/tiktok.d.ts +0 -3
  175. package/dist/components/icons/tiktok.js +0 -4
  176. package/dist/components/icons/ts.d.ts +0 -3
  177. package/dist/components/icons/ts.js +0 -4
  178. package/dist/components/icons/tts.d.ts +0 -3
  179. package/dist/components/icons/tts.js +0 -4
  180. package/dist/components/icons/undo.d.ts +0 -3
  181. package/dist/components/icons/undo.js +0 -2
  182. package/dist/components/icons/waveform.d.ts +0 -3
  183. package/dist/components/icons/waveform.js +0 -4
  184. package/dist/main.d.ts +0 -1
  185. package/dist/main.js +0 -6
@@ -1,55 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { cn } from '../../cn';
3
- const Triangle = ({ rotated }) => (_jsx("svg", { width: "12px", height: "7px", viewBox: "0 0 12 7", fill: "none", style: {
4
- transform: rotated ? 'rotate(180deg)' : 'rotate(0deg)',
5
- }, children: _jsx("path", { className: "fill-text", d: "M7.17096 0.475588C6.73198 0.0764969 6.01906 0.0764969 5.58007 0.475588L1.08483 4.56228C0.761737 4.85601 0.666915 5.29341 0.84251 5.67654C1.01811 6.05966 1.42549 6.3087 1.88203 6.3087H10.8725C11.3255 6.3087 11.7364 6.05966 11.912 5.67654C12.0876 5.29341 11.9893 4.85601 11.6697 4.56228L7.17448 0.475588H7.17096Z" }) }));
6
- const container = {
7
- display: 'flex',
8
- flexDirection: 'row',
9
- justifyContent: 'flex-end',
10
- alignItems: 'center',
11
- borderRadius: 4,
12
- height: 42,
13
- overflow: 'hidden',
14
- flexShrink: 0,
15
- };
16
- const buttonContainer = {
17
- display: 'flex',
18
- width: 30,
19
- padding: 2,
20
- height: 20,
21
- justifyContent: 'center',
22
- alignItems: 'center',
23
- backgroundColor: 'inherit',
24
- cursor: 'pointer',
25
- };
26
- export const Counter = ({ count, setCount, minCount = 0, step = 1, }) => {
27
- const decrement = () => {
28
- if (count > minCount) {
29
- setCount(Math.max(minCount, count - step));
30
- }
31
- };
32
- const increment = () => {
33
- setCount(count + step);
34
- };
35
- return (_jsxs("div", { style: container, className: cn('border-effect w-[140px] text-text'), children: [_jsx("input", { className: 'fontbrand text-2xl font-medium min-w-[80px] border-0 text-end bg-transparent outline-0 text-text', type: "number", onClick: (e) => e.currentTarget.select(), value: count, onChange: (e) => {
36
- if (e.target.value.trim() === '') {
37
- setCount(step === 1 ? 1 : minCount);
38
- return;
39
- }
40
- const inputValue = parseInt(e.target.value, 10);
41
- const validValue = Math.max(inputValue, minCount);
42
- // For steps > 1, round to the nearest valid step
43
- if (step > 1) {
44
- const roundedValue = Math.round(validValue / step) * step;
45
- setCount(Math.max(roundedValue, minCount));
46
- }
47
- else {
48
- setCount(validValue);
49
- }
50
- } }), _jsxs("div", { className: "flex flex-col ml-3 h-full", children: [_jsx("button", { type: "button", className: "border-0 border-l-2 border-l-solid border-b-2 flex-1 border-text border-b-[var(--box-stroke)] border-l-[var(--box-stroke)]", style: {
51
- ...buttonContainer,
52
- }, onClick: increment, children: _jsx(Triangle, { rotated: false }) }), _jsx("button", { type: "button", className: "border-0 border-l-2 border-l-solid flex-1 border-text border-l-[var(--box-stroke)]", style: {
53
- ...buttonContainer,
54
- }, onClick: decrement, children: _jsx(Triangle, { rotated: true }) })] })] }));
55
- };
@@ -1,15 +0,0 @@
1
- import React from 'react';
2
- import { type Position } from './math';
3
- export declare const Card: React.FC<{
4
- readonly index: number;
5
- readonly refsToUse: React.MutableRefObject<HTMLDivElement>[];
6
- readonly onUpdate: (newIndices: number[]) => void;
7
- readonly content: React.ReactNode;
8
- readonly positions: React.MutableRefObject<Position[]>;
9
- readonly shouldBePositions: React.MutableRefObject<Position[]>;
10
- readonly indices: number[];
11
- readonly theme: 'dark' | 'light';
12
- readonly withSwitcher: boolean;
13
- readonly onClickLeft: () => void;
14
- readonly onClickRight: () => void;
15
- }>;
@@ -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: "light" | "dark";
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: "light" | "dark";
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 {};