@remotion/promo-pages 4.0.433 → 4.0.435
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Homepage.js +452 -25364
- package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/Homepage.js +452 -25364
- package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/design.js +1 -1
- package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/experts/experts-data.js +69 -18
- package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/experts.js +70 -19
- package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/homepage/Pricing.js +1 -1
- package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/prompts/PromptsGallery.js +1 -1
- package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/prompts/PromptsShow.js +1 -1
- package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/prompts/PromptsSubmit.js +1 -1
- package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/template-modal-content.js +1 -1
- package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/templates.js +3 -1
- package/dist/cn.d.ts +2 -0
- package/dist/cn.js +5 -0
- package/dist/components/3DEngine/ButtonDemo.d.ts +2 -0
- package/dist/components/3DEngine/ButtonDemo.js +43 -0
- package/dist/components/3DEngine/Faces.d.ts +5 -0
- package/dist/components/3DEngine/Faces.js +7 -0
- package/dist/components/3DEngine/Outer.d.ts +8 -0
- package/dist/components/3DEngine/Outer.js +56 -0
- package/dist/components/3DEngine/Switch.d.ts +4 -0
- package/dist/components/3DEngine/Switch.js +4 -0
- package/dist/components/3DEngine/get-child-node-from.d.ts +1 -0
- package/dist/components/3DEngine/get-child-node-from.js +14 -0
- package/dist/components/3DEngine/hover-transforms.d.ts +9 -0
- package/dist/components/3DEngine/hover-transforms.js +177 -0
- package/dist/components/BackButton.d.ts +6 -0
- package/dist/components/BackButton.js +9 -0
- package/dist/components/CommandCopyButton.d.ts +5 -0
- package/dist/components/CommandCopyButton.js +4 -0
- package/dist/components/Homepage.d.ts +6 -0
- package/dist/components/Homepage.js +20 -0
- package/dist/components/ManageTeamMembers.d.ts +2 -0
- package/dist/components/ManageTeamMembers.js +42 -0
- package/dist/components/Spinner.d.ts +3 -0
- package/dist/components/Spinner.js +4 -0
- package/dist/components/TeamPicture.d.ts +1 -0
- package/dist/components/TeamPicture.js +4 -0
- package/dist/components/design.d.ts +1 -0
- package/dist/components/design.js +33 -0
- package/dist/components/experts/ExpertsPage.d.ts +11 -0
- package/dist/components/experts/ExpertsPage.js +50 -0
- package/dist/components/experts/experts-data.d.ts +15 -0
- package/dist/components/experts/experts-data.js +263 -0
- package/dist/components/experts/experts-icons.d.ts +7 -0
- package/dist/components/experts/experts-icons.js +36 -0
- package/dist/components/experts.d.ts +3 -0
- package/dist/components/experts.js +2 -0
- package/dist/components/homepage/BackgroundAnimation.d.ts +2 -0
- package/dist/components/homepage/BackgroundAnimation.js +66 -0
- package/dist/components/homepage/ChooseTemplate.d.ts +2 -0
- package/dist/components/homepage/ChooseTemplate.js +25 -0
- package/dist/components/homepage/CommunityStats.d.ts +3 -0
- package/dist/components/homepage/CommunityStats.js +6 -0
- package/dist/components/homepage/CommunityStatsItems.d.ts +7 -0
- package/dist/components/homepage/CommunityStatsItems.js +58 -0
- package/dist/components/homepage/Demo/Card.d.ts +15 -0
- package/dist/components/homepage/Demo/Card.js +174 -0
- package/dist/components/homepage/Demo/Cards.d.ts +15 -0
- package/dist/components/homepage/Demo/Cards.js +57 -0
- package/dist/components/homepage/Demo/Comp.d.ts +38 -0
- package/dist/components/homepage/Demo/Comp.js +72 -0
- package/dist/components/homepage/Demo/CurrentCountry.d.ts +9 -0
- package/dist/components/homepage/Demo/CurrentCountry.js +48 -0
- package/dist/components/homepage/Demo/DemoError.d.ts +2 -0
- package/dist/components/homepage/Demo/DemoError.js +10 -0
- package/dist/components/homepage/Demo/DemoErrorIcon.d.ts +2 -0
- package/dist/components/homepage/Demo/DemoErrorIcon.js +16 -0
- package/dist/components/homepage/Demo/DemoRender.d.ts +33 -0
- package/dist/components/homepage/Demo/DemoRender.js +107 -0
- package/dist/components/homepage/Demo/DigitWheel.d.ts +9 -0
- package/dist/components/homepage/Demo/DigitWheel.js +94 -0
- package/dist/components/homepage/Demo/DisplayedEmoji.d.ts +5 -0
- package/dist/components/homepage/Demo/DisplayedEmoji.js +59 -0
- package/dist/components/homepage/Demo/DoneCheckmark.d.ts +2 -0
- package/dist/components/homepage/Demo/DoneCheckmark.js +20 -0
- package/dist/components/homepage/Demo/DownloadNudge.d.ts +2 -0
- package/dist/components/homepage/Demo/DownloadNudge.js +27 -0
- package/dist/components/homepage/Demo/DragAndDropNudge.d.ts +3 -0
- package/dist/components/homepage/Demo/DragAndDropNudge.js +26 -0
- package/dist/components/homepage/Demo/EmojiCard.d.ts +10 -0
- package/dist/components/homepage/Demo/EmojiCard.js +120 -0
- package/dist/components/homepage/Demo/Minus.d.ts +5 -0
- package/dist/components/homepage/Demo/Minus.js +11 -0
- package/dist/components/homepage/Demo/PlayPauseButton.d.ts +5 -0
- package/dist/components/homepage/Demo/PlayPauseButton.js +47 -0
- package/dist/components/homepage/Demo/PlayerControls.d.ts +8 -0
- package/dist/components/homepage/Demo/PlayerControls.js +15 -0
- package/dist/components/homepage/Demo/PlayerSeekBar.d.ts +11 -0
- package/dist/components/homepage/Demo/PlayerSeekBar.js +216 -0
- package/dist/components/homepage/Demo/PlayerVolume.d.ts +5 -0
- package/dist/components/homepage/Demo/PlayerVolume.js +53 -0
- package/dist/components/homepage/Demo/Progress.d.ts +4 -0
- package/dist/components/homepage/Demo/Progress.js +14 -0
- package/dist/components/homepage/Demo/Spinner.d.ts +5 -0
- package/dist/components/homepage/Demo/Spinner.js +37 -0
- package/dist/components/homepage/Demo/Switcher.d.ts +6 -0
- package/dist/components/homepage/Demo/Switcher.js +25 -0
- package/dist/components/homepage/Demo/Temperature.d.ts +6 -0
- package/dist/components/homepage/Demo/Temperature.js +21 -0
- package/dist/components/homepage/Demo/TemperatureNumber.d.ts +5 -0
- package/dist/components/homepage/Demo/TemperatureNumber.js +36 -0
- package/dist/components/homepage/Demo/ThemeNudge.d.ts +3 -0
- package/dist/components/homepage/Demo/ThemeNudge.js +35 -0
- package/dist/components/homepage/Demo/TimeDisplay.d.ts +6 -0
- package/dist/components/homepage/Demo/TimeDisplay.js +27 -0
- package/dist/components/homepage/Demo/TrendingRepos.d.ts +6 -0
- package/dist/components/homepage/Demo/TrendingRepos.js +65 -0
- package/dist/components/homepage/Demo/icons.d.ts +10 -0
- package/dist/components/homepage/Demo/icons.js +22 -0
- package/dist/components/homepage/Demo/index.d.ts +2 -0
- package/dist/components/homepage/Demo/index.js +95 -0
- package/dist/components/homepage/Demo/math.d.ts +10 -0
- package/dist/components/homepage/Demo/math.js +29 -0
- package/dist/components/homepage/Demo/types.d.ts +6 -0
- package/dist/components/homepage/Demo/types.js +0 -0
- package/dist/components/homepage/EditorStarterSection.d.ts +3 -0
- package/dist/components/homepage/EditorStarterSection.js +8 -0
- package/dist/components/homepage/EvaluateRemotion.d.ts +3 -0
- package/dist/components/homepage/EvaluateRemotion.js +21 -0
- package/dist/components/homepage/FreePricing.d.ts +4 -0
- package/dist/components/homepage/FreePricing.js +134 -0
- package/dist/components/homepage/GetStartedStrip.d.ts +2 -0
- package/dist/components/homepage/GetStartedStrip.js +14 -0
- package/dist/components/homepage/GitHubButton.d.ts +2 -0
- package/dist/components/homepage/GitHubButton.js +7 -0
- package/dist/components/homepage/IconForTemplate.d.ts +6 -0
- package/dist/components/homepage/IconForTemplate.js +101 -0
- package/dist/components/homepage/IfYouKnowReact.d.ts +3 -0
- package/dist/components/homepage/IfYouKnowReact.js +23 -0
- package/dist/components/homepage/InfoTooltip.d.ts +6 -0
- package/dist/components/homepage/InfoTooltip.js +6 -0
- package/dist/components/homepage/MoreTemplatesButton.d.ts +2 -0
- package/dist/components/homepage/MoreTemplatesButton.js +11 -0
- package/dist/components/homepage/MuxVideo.d.ts +7 -0
- package/dist/components/homepage/MuxVideo.js +45 -0
- package/dist/components/homepage/NewsletterButton.d.ts +2 -0
- package/dist/components/homepage/NewsletterButton.js +38 -0
- package/dist/components/homepage/ParameterizeAndEdit.d.ts +2 -0
- package/dist/components/homepage/ParameterizeAndEdit.js +22 -0
- package/dist/components/homepage/Pricing.d.ts +2 -0
- package/dist/components/homepage/Pricing.js +15 -0
- package/dist/components/homepage/PricingBulletPoint.d.ts +6 -0
- package/dist/components/homepage/PricingBulletPoint.js +19 -0
- package/dist/components/homepage/RealMp4Videos.d.ts +2 -0
- package/dist/components/homepage/RealMp4Videos.js +41 -0
- package/dist/components/homepage/Spacer.d.ts +2 -0
- package/dist/components/homepage/Spacer.js +4 -0
- package/dist/components/homepage/TemplateIcon.d.ts +5 -0
- package/dist/components/homepage/TemplateIcon.js +24 -0
- package/dist/components/homepage/TextInput.d.ts +7 -0
- package/dist/components/homepage/TextInput.js +34 -0
- package/dist/components/homepage/TrustedByBanner.d.ts +2 -0
- package/dist/components/homepage/TrustedByBanner.js +27 -0
- package/dist/components/homepage/VideoApps.d.ts +4 -0
- package/dist/components/homepage/VideoApps.js +72 -0
- package/dist/components/homepage/VideoAppsShowcase.d.ts +3 -0
- package/dist/components/homepage/VideoAppsShowcase.js +139 -0
- package/dist/components/homepage/VideoAppsTitle.d.ts +4 -0
- package/dist/components/homepage/VideoAppsTitle.js +4 -0
- package/dist/components/homepage/VideoPlayerWithControls.d.ts +20 -0
- package/dist/components/homepage/VideoPlayerWithControls.js +105 -0
- package/dist/components/homepage/WriteInReact.d.ts +2 -0
- package/dist/components/homepage/WriteInReact.js +10 -0
- package/dist/components/homepage/YouAreHere.d.ts +2 -0
- package/dist/components/homepage/YouAreHere.js +23 -0
- package/dist/components/homepage/layout/Button.d.ts +22 -0
- package/dist/components/homepage/layout/Button.js +30 -0
- package/dist/components/homepage/layout/colors.d.ts +13 -0
- package/dist/components/homepage/layout/colors.js +14 -0
- package/dist/components/homepage/layout/use-color-mode.d.ts +21 -0
- package/dist/components/homepage/layout/use-color-mode.js +22 -0
- package/dist/components/homepage/layout/use-el-size.d.ts +5 -0
- package/dist/components/homepage/layout/use-el-size.js +40 -0
- package/dist/components/homepage/layout/use-mobile-layout.d.ts +1 -0
- package/dist/components/homepage/layout/use-mobile-layout.js +6 -0
- package/dist/components/icons/blank.d.ts +3 -0
- package/dist/components/icons/blank.js +4 -0
- package/dist/components/icons/brain.d.ts +2 -0
- package/dist/components/icons/brain.js +4 -0
- package/dist/components/icons/clone.d.ts +2 -0
- package/dist/components/icons/clone.js +2 -0
- package/dist/components/icons/code-hike.d.ts +3 -0
- package/dist/components/icons/code-hike.js +4 -0
- package/dist/components/icons/cubes.d.ts +3 -0
- package/dist/components/icons/cubes.js +4 -0
- package/dist/components/icons/editor.d.ts +3 -0
- package/dist/components/icons/editor.js +4 -0
- package/dist/components/icons/js.d.ts +3 -0
- package/dist/components/icons/js.js +4 -0
- package/dist/components/icons/music.d.ts +2 -0
- package/dist/components/icons/music.js +4 -0
- package/dist/components/icons/next.d.ts +4 -0
- package/dist/components/icons/next.js +4 -0
- package/dist/components/icons/overlay.d.ts +3 -0
- package/dist/components/icons/overlay.js +4 -0
- package/dist/components/icons/prompt-to-video.d.ts +2 -0
- package/dist/components/icons/prompt-to-video.js +4 -0
- package/dist/components/icons/recorder.d.ts +3 -0
- package/dist/components/icons/recorder.js +4 -0
- package/dist/components/icons/remix.d.ts +3 -0
- package/dist/components/icons/remix.js +4 -0
- package/dist/components/icons/render-server.d.ts +3 -0
- package/dist/components/icons/render-server.js +4 -0
- package/dist/components/icons/skia.d.ts +3 -0
- package/dist/components/icons/skia.js +4 -0
- package/dist/components/icons/stargazer.d.ts +3 -0
- package/dist/components/icons/stargazer.js +4 -0
- package/dist/components/icons/still.d.ts +3 -0
- package/dist/components/icons/still.js +4 -0
- package/dist/components/icons/tailwind.d.ts +3 -0
- package/dist/components/icons/tailwind.js +4 -0
- package/dist/components/icons/tiktok.d.ts +3 -0
- package/dist/components/icons/tiktok.js +4 -0
- package/dist/components/icons/timeline.d.ts +3 -0
- package/dist/components/icons/timeline.js +4 -0
- package/dist/components/icons/ts.d.ts +3 -0
- package/dist/components/icons/ts.js +4 -0
- package/dist/components/icons/undo.d.ts +3 -0
- package/dist/components/icons/undo.js +2 -0
- package/dist/components/icons/vercel.d.ts +4 -0
- package/dist/components/icons/vercel.js +4 -0
- package/dist/components/icons/waveform.d.ts +3 -0
- package/dist/components/icons/waveform.js +4 -0
- package/dist/components/prompts/CardLikeButton.d.ts +5 -0
- package/dist/components/prompts/CardLikeButton.js +49 -0
- package/dist/components/prompts/ClipboardIcon.d.ts +5 -0
- package/dist/components/prompts/ClipboardIcon.js +4 -0
- package/dist/components/prompts/CopyPromptButton.d.ts +4 -0
- package/dist/components/prompts/CopyPromptButton.js +13 -0
- package/dist/components/prompts/LikeButton.d.ts +5 -0
- package/dist/components/prompts/LikeButton.js +49 -0
- package/dist/components/prompts/MuxPlayer.d.ts +8 -0
- package/dist/components/prompts/MuxPlayer.js +21 -0
- package/dist/components/prompts/NewBackButton.d.ts +5 -0
- package/dist/components/prompts/NewBackButton.js +8 -0
- package/dist/components/prompts/Page.d.ts +8 -0
- package/dist/components/prompts/Page.js +7 -0
- package/dist/components/prompts/PromptsGallery.d.ts +7 -0
- package/dist/components/prompts/PromptsGallery.js +60 -0
- package/dist/components/prompts/PromptsShow.d.ts +5 -0
- package/dist/components/prompts/PromptsShow.js +17 -0
- package/dist/components/prompts/PromptsSubmit.d.ts +2 -0
- package/dist/components/prompts/PromptsSubmit.js +173 -0
- package/dist/components/prompts/config.d.ts +1 -0
- package/dist/components/prompts/config.js +1 -0
- package/dist/components/prompts/prompt-helpers.d.ts +8 -0
- package/dist/components/prompts/prompt-helpers.js +76 -0
- package/dist/components/prompts/prompt-types.d.ts +14 -0
- package/dist/components/prompts/prompt-types.js +0 -0
- package/dist/components/prompts/use-heart-animation.d.ts +5 -0
- package/dist/components/prompts/use-heart-animation.js +29 -0
- package/dist/components/team/TeamCards.d.ts +6 -0
- package/dist/components/team/TeamCards.js +19 -0
- package/dist/components/team/TitleTeamCards.d.ts +2 -0
- package/dist/components/team/TitleTeamCards.js +6 -0
- package/dist/components/team.d.ts +3 -0
- package/dist/components/team.js +14 -0
- package/dist/components/template-modal-content.d.ts +5 -0
- package/dist/components/template-modal-content.js +73 -0
- package/dist/components/templates.d.ts +2 -0
- package/dist/components/templates.js +27 -0
- package/dist/design.js +1 -1
- package/dist/experts/experts-data.js +69 -18
- package/dist/experts.js +70 -19
- package/dist/helpers/mobile-layout.d.ts +1 -0
- package/dist/helpers/mobile-layout.js +6 -0
- package/dist/helpers/use-el-size.d.ts +5 -0
- package/dist/helpers/use-el-size.js +40 -0
- package/dist/homepage/Pricing.js +1 -1
- package/dist/main.d.ts +1 -0
- package/dist/main.js +6 -0
- package/dist/prompts/PromptsGallery.js +1 -1
- package/dist/prompts/PromptsShow.js +1 -1
- package/dist/prompts/PromptsSubmit.js +1 -1
- package/dist/prompts-show.d.ts +1 -0
- package/dist/prompts-show.js +20 -0
- package/dist/prompts-submit.d.ts +1 -0
- package/dist/prompts-submit.js +6 -0
- package/dist/prompts.d.ts +1 -0
- package/dist/prompts.js +6 -0
- package/dist/team.d.ts +1 -0
- package/dist/template-modal-content.js +1 -1
- package/dist/templates.js +3 -1
- package/package.json +13 -13
|
@@ -5977,7 +5977,7 @@ var useIsPlayer = () => {
|
|
|
5977
5977
|
function truthy2(value) {
|
|
5978
5978
|
return Boolean(value);
|
|
5979
5979
|
}
|
|
5980
|
-
var VERSION = "4.0.
|
|
5980
|
+
var VERSION = "4.0.435";
|
|
5981
5981
|
var checkMultipleRemotionVersions = () => {
|
|
5982
5982
|
if (typeof globalThis === "undefined") {
|
|
5983
5983
|
return;
|
package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/experts/experts-data.js
CHANGED
|
@@ -547,29 +547,80 @@ var experts = [
|
|
|
547
547
|
x: null,
|
|
548
548
|
github: "sambowenhughes",
|
|
549
549
|
linkedin: "in/sambowenhughes/",
|
|
550
|
-
email: "
|
|
551
|
-
videocall: "https://calendly.com/
|
|
550
|
+
email: "sam@reactvideoeditor.com",
|
|
551
|
+
videocall: "https://calendly.com/reactvideoeditor/30min",
|
|
552
552
|
since: new Date("2025-06-03").getTime(),
|
|
553
553
|
description: /* @__PURE__ */ jsxs("div", {
|
|
554
554
|
children: [
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
555
|
+
/* @__PURE__ */ jsxs("p", {
|
|
556
|
+
children: [
|
|
557
|
+
"Experienced engineer with 10+ years building advanced software products. Creator of",
|
|
558
|
+
" ",
|
|
559
|
+
/* @__PURE__ */ jsx("a", {
|
|
560
|
+
target: "_blank",
|
|
561
|
+
href: "https://reactvideoeditor.com",
|
|
562
|
+
children: "React Video Editor"
|
|
563
|
+
}),
|
|
564
|
+
"and",
|
|
565
|
+
" ",
|
|
566
|
+
/* @__PURE__ */ jsx("a", {
|
|
567
|
+
target: "_blank",
|
|
568
|
+
href: "https://clippkit.com",
|
|
569
|
+
children: "Clippkit"
|
|
570
|
+
}),
|
|
571
|
+
"."
|
|
572
|
+
]
|
|
561
573
|
}),
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
574
|
+
/* @__PURE__ */ jsxs("p", {
|
|
575
|
+
children: [
|
|
576
|
+
"I work with companies building products with",
|
|
577
|
+
" ",
|
|
578
|
+
/* @__PURE__ */ jsx("strong", {
|
|
579
|
+
children: "Remotion at their core"
|
|
580
|
+
}),
|
|
581
|
+
". Custom video editors, automated video generation tools, and scalable rendering pipelines."
|
|
582
|
+
]
|
|
569
583
|
}),
|
|
570
|
-
"
|
|
571
|
-
|
|
572
|
-
|
|
584
|
+
/* @__PURE__ */ jsxs("ul", {
|
|
585
|
+
children: [
|
|
586
|
+
/* @__PURE__ */ jsxs("li", {
|
|
587
|
+
children: [
|
|
588
|
+
/* @__PURE__ */ jsx("strong", {
|
|
589
|
+
children: "Custom video editors"
|
|
590
|
+
}),
|
|
591
|
+
" built with Remotion"
|
|
592
|
+
]
|
|
593
|
+
}),
|
|
594
|
+
/* @__PURE__ */ jsxs("li", {
|
|
595
|
+
children: [
|
|
596
|
+
/* @__PURE__ */ jsx("strong", {
|
|
597
|
+
children: "Automated video generation"
|
|
598
|
+
}),
|
|
599
|
+
" systems"
|
|
600
|
+
]
|
|
601
|
+
}),
|
|
602
|
+
/* @__PURE__ */ jsxs("li", {
|
|
603
|
+
children: [
|
|
604
|
+
/* @__PURE__ */ jsx("strong", {
|
|
605
|
+
children: "Rendering infrastructure"
|
|
606
|
+
}),
|
|
607
|
+
" and media pipelines"
|
|
608
|
+
]
|
|
609
|
+
}),
|
|
610
|
+
/* @__PURE__ */ jsx("li", {
|
|
611
|
+
children: /* @__PURE__ */ jsx("strong", {
|
|
612
|
+
children: "UI/UX and full-stack product development"
|
|
613
|
+
})
|
|
614
|
+
})
|
|
615
|
+
]
|
|
616
|
+
}),
|
|
617
|
+
/* @__PURE__ */ jsxs("p", {
|
|
618
|
+
children: [
|
|
619
|
+
"If you",
|
|
620
|
+
"'",
|
|
621
|
+
"re building software around video, or just need a reliable engineering partner who moves fast and builds things right, feel free to reach out."
|
|
622
|
+
]
|
|
623
|
+
})
|
|
573
624
|
]
|
|
574
625
|
})
|
|
575
626
|
},
|
|
@@ -547,29 +547,80 @@ var experts = [
|
|
|
547
547
|
x: null,
|
|
548
548
|
github: "sambowenhughes",
|
|
549
549
|
linkedin: "in/sambowenhughes/",
|
|
550
|
-
email: "
|
|
551
|
-
videocall: "https://calendly.com/
|
|
550
|
+
email: "sam@reactvideoeditor.com",
|
|
551
|
+
videocall: "https://calendly.com/reactvideoeditor/30min",
|
|
552
552
|
since: new Date("2025-06-03").getTime(),
|
|
553
553
|
description: /* @__PURE__ */ jsxs("div", {
|
|
554
554
|
children: [
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
555
|
+
/* @__PURE__ */ jsxs("p", {
|
|
556
|
+
children: [
|
|
557
|
+
"Experienced engineer with 10+ years building advanced software products. Creator of",
|
|
558
|
+
" ",
|
|
559
|
+
/* @__PURE__ */ jsx("a", {
|
|
560
|
+
target: "_blank",
|
|
561
|
+
href: "https://reactvideoeditor.com",
|
|
562
|
+
children: "React Video Editor"
|
|
563
|
+
}),
|
|
564
|
+
"and",
|
|
565
|
+
" ",
|
|
566
|
+
/* @__PURE__ */ jsx("a", {
|
|
567
|
+
target: "_blank",
|
|
568
|
+
href: "https://clippkit.com",
|
|
569
|
+
children: "Clippkit"
|
|
570
|
+
}),
|
|
571
|
+
"."
|
|
572
|
+
]
|
|
561
573
|
}),
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
574
|
+
/* @__PURE__ */ jsxs("p", {
|
|
575
|
+
children: [
|
|
576
|
+
"I work with companies building products with",
|
|
577
|
+
" ",
|
|
578
|
+
/* @__PURE__ */ jsx("strong", {
|
|
579
|
+
children: "Remotion at their core"
|
|
580
|
+
}),
|
|
581
|
+
". Custom video editors, automated video generation tools, and scalable rendering pipelines."
|
|
582
|
+
]
|
|
569
583
|
}),
|
|
570
|
-
"
|
|
571
|
-
|
|
572
|
-
|
|
584
|
+
/* @__PURE__ */ jsxs("ul", {
|
|
585
|
+
children: [
|
|
586
|
+
/* @__PURE__ */ jsxs("li", {
|
|
587
|
+
children: [
|
|
588
|
+
/* @__PURE__ */ jsx("strong", {
|
|
589
|
+
children: "Custom video editors"
|
|
590
|
+
}),
|
|
591
|
+
" built with Remotion"
|
|
592
|
+
]
|
|
593
|
+
}),
|
|
594
|
+
/* @__PURE__ */ jsxs("li", {
|
|
595
|
+
children: [
|
|
596
|
+
/* @__PURE__ */ jsx("strong", {
|
|
597
|
+
children: "Automated video generation"
|
|
598
|
+
}),
|
|
599
|
+
" systems"
|
|
600
|
+
]
|
|
601
|
+
}),
|
|
602
|
+
/* @__PURE__ */ jsxs("li", {
|
|
603
|
+
children: [
|
|
604
|
+
/* @__PURE__ */ jsx("strong", {
|
|
605
|
+
children: "Rendering infrastructure"
|
|
606
|
+
}),
|
|
607
|
+
" and media pipelines"
|
|
608
|
+
]
|
|
609
|
+
}),
|
|
610
|
+
/* @__PURE__ */ jsx("li", {
|
|
611
|
+
children: /* @__PURE__ */ jsx("strong", {
|
|
612
|
+
children: "UI/UX and full-stack product development"
|
|
613
|
+
})
|
|
614
|
+
})
|
|
615
|
+
]
|
|
616
|
+
}),
|
|
617
|
+
/* @__PURE__ */ jsxs("p", {
|
|
618
|
+
children: [
|
|
619
|
+
"If you",
|
|
620
|
+
"'",
|
|
621
|
+
"re building software around video, or just need a reliable engineering partner who moves fast and builds things right, feel free to reach out."
|
|
622
|
+
]
|
|
623
|
+
})
|
|
573
624
|
]
|
|
574
625
|
})
|
|
575
626
|
},
|
|
@@ -952,7 +1003,7 @@ var useIsPlayer = () => {
|
|
|
952
1003
|
function truthy(value) {
|
|
953
1004
|
return Boolean(value);
|
|
954
1005
|
}
|
|
955
|
-
var VERSION = "4.0.
|
|
1006
|
+
var VERSION = "4.0.435";
|
|
956
1007
|
var checkMultipleRemotionVersions = () => {
|
|
957
1008
|
if (typeof globalThis === "undefined") {
|
|
958
1009
|
return;
|
|
@@ -5977,7 +5977,7 @@ var useIsPlayer = () => {
|
|
|
5977
5977
|
function truthy2(value) {
|
|
5978
5978
|
return Boolean(value);
|
|
5979
5979
|
}
|
|
5980
|
-
var VERSION = "4.0.
|
|
5980
|
+
var VERSION = "4.0.435";
|
|
5981
5981
|
var checkMultipleRemotionVersions = () => {
|
|
5982
5982
|
if (typeof globalThis === "undefined") {
|
|
5983
5983
|
return;
|
package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/prompts/PromptsGallery.js
CHANGED
|
@@ -5977,7 +5977,7 @@ var useIsPlayer = () => {
|
|
|
5977
5977
|
function truthy2(value) {
|
|
5978
5978
|
return Boolean(value);
|
|
5979
5979
|
}
|
|
5980
|
-
var VERSION = "4.0.
|
|
5980
|
+
var VERSION = "4.0.435";
|
|
5981
5981
|
var checkMultipleRemotionVersions = () => {
|
|
5982
5982
|
if (typeof globalThis === "undefined") {
|
|
5983
5983
|
return;
|
|
@@ -23311,7 +23311,7 @@ var useIsPlayer = () => {
|
|
|
23311
23311
|
function truthy2(value) {
|
|
23312
23312
|
return Boolean(value);
|
|
23313
23313
|
}
|
|
23314
|
-
var VERSION = "4.0.
|
|
23314
|
+
var VERSION = "4.0.435";
|
|
23315
23315
|
var checkMultipleRemotionVersions = () => {
|
|
23316
23316
|
if (typeof globalThis === "undefined") {
|
|
23317
23317
|
return;
|
package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/prompts/PromptsSubmit.js
CHANGED
|
@@ -23311,7 +23311,7 @@ var useIsPlayer = () => {
|
|
|
23311
23311
|
function truthy2(value) {
|
|
23312
23312
|
return Boolean(value);
|
|
23313
23313
|
}
|
|
23314
|
-
var VERSION = "4.0.
|
|
23314
|
+
var VERSION = "4.0.435";
|
|
23315
23315
|
var checkMultipleRemotionVersions = () => {
|
|
23316
23316
|
if (typeof globalThis === "undefined") {
|
|
23317
23317
|
return;
|
package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/template-modal-content.js
CHANGED
|
@@ -5977,7 +5977,7 @@ var useIsPlayer = () => {
|
|
|
5977
5977
|
function truthy2(value) {
|
|
5978
5978
|
return Boolean(value);
|
|
5979
5979
|
}
|
|
5980
|
-
var VERSION = "4.0.
|
|
5980
|
+
var VERSION = "4.0.435";
|
|
5981
5981
|
var checkMultipleRemotionVersions = () => {
|
|
5982
5982
|
if (typeof globalThis === "undefined") {
|
|
5983
5983
|
return;
|
|
@@ -5977,7 +5977,7 @@ var useIsPlayer = () => {
|
|
|
5977
5977
|
function truthy2(value) {
|
|
5978
5978
|
return Boolean(value);
|
|
5979
5979
|
}
|
|
5980
|
-
var VERSION = "4.0.
|
|
5980
|
+
var VERSION = "4.0.435";
|
|
5981
5981
|
var checkMultipleRemotionVersions = () => {
|
|
5982
5982
|
if (typeof globalThis === "undefined") {
|
|
5983
5983
|
return;
|
|
@@ -19911,6 +19911,7 @@ var listOfRemotionPackages = [
|
|
|
19911
19911
|
"@remotion/astro-example",
|
|
19912
19912
|
"@remotion/babel-loader",
|
|
19913
19913
|
"@remotion/bugs",
|
|
19914
|
+
"@remotion/brand",
|
|
19914
19915
|
"@remotion/bundler",
|
|
19915
19916
|
"@remotion/cli",
|
|
19916
19917
|
"@remotion/cloudrun",
|
|
@@ -19989,6 +19990,7 @@ var listOfRemotionPackages = [
|
|
|
19989
19990
|
"@remotion/web-renderer",
|
|
19990
19991
|
"@remotion/design",
|
|
19991
19992
|
"@remotion/light-leaks",
|
|
19993
|
+
"@remotion/starburst",
|
|
19992
19994
|
"@remotion/vercel",
|
|
19993
19995
|
"@remotion/sfx"
|
|
19994
19996
|
];
|
package/dist/cn.d.ts
ADDED
package/dist/cn.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useRef, useState } from 'react';
|
|
3
|
+
import { cn } from '../../cn';
|
|
4
|
+
import { useHoverTransforms } from './hover-transforms';
|
|
5
|
+
import { Outer } from './Outer';
|
|
6
|
+
export const Button3D = ({ children, className, disabled, ...buttonProps }) => {
|
|
7
|
+
const [dimensions, setDimensions] = useState(null);
|
|
8
|
+
const ref = useRef(null);
|
|
9
|
+
const { isActive, progress } = useHoverTransforms(ref, Boolean(disabled));
|
|
10
|
+
const onPointerEnter = useCallback((e) => {
|
|
11
|
+
if (e.pointerType !== 'mouse') {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
setDimensions((prevDim) => {
|
|
15
|
+
if (prevDim) {
|
|
16
|
+
return prevDim;
|
|
17
|
+
}
|
|
18
|
+
if (!ref.current) {
|
|
19
|
+
throw new Error('Ref is not set');
|
|
20
|
+
}
|
|
21
|
+
const { childNodes } = ref.current;
|
|
22
|
+
if (childNodes.length === 0) {
|
|
23
|
+
throw new Error('No child nodes');
|
|
24
|
+
}
|
|
25
|
+
const childNode = childNodes[0];
|
|
26
|
+
if (!childNode) {
|
|
27
|
+
throw new Error('No child node');
|
|
28
|
+
}
|
|
29
|
+
const rect = childNode.getBoundingClientRect();
|
|
30
|
+
const { borderRadius } = getComputedStyle(childNode);
|
|
31
|
+
const cornerRadius = borderRadius.includes('e+0')
|
|
32
|
+
? Infinity
|
|
33
|
+
: parseInt(borderRadius !== null && borderRadius !== void 0 ? borderRadius : '0', 10);
|
|
34
|
+
return {
|
|
35
|
+
width: rect.width,
|
|
36
|
+
height: rect.height,
|
|
37
|
+
borderRadius: Math.min(cornerRadius, rect.width / 2, rect.height / 2),
|
|
38
|
+
};
|
|
39
|
+
});
|
|
40
|
+
}, []);
|
|
41
|
+
const content = (_jsx("button", { type: "button", disabled: disabled, className: cn('text-black', 'flex', 'justify-center', 'bg-white', 'items-center', 'font-brand', 'border-solid', 'text-[1em]', 'rounded-md', 'border-black', 'border-2', 'border-b-4', 'cursor-pointer', 'px-4', 'py-3', 'disabled:cursor-default', 'disabled:border-gray-500', 'disabled:text-gray-500', 'transition-colors', className), ...buttonProps, children: children }));
|
|
42
|
+
return (_jsx("div", { ref: ref, className: "contents", onPointerEnter: onPointerEnter, children: dimensions && (isActive || progress > 0) ? (_jsx(Outer, { parentRef: ref, width: dimensions.width, height: dimensions.height, cornerRadius: dimensions.borderRadius, hoverTransform: progress, children: content })) : (content) }));
|
|
43
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { threeDIntoSvgPath } from '@remotion/svg-3d-engine';
|
|
3
|
+
export const Faces = ({ elements, ...svgProps }) => {
|
|
4
|
+
return (_jsx(_Fragment, { children: elements.map(({ points, color, crispEdges }, idx) => {
|
|
5
|
+
return (_jsx("path", { d: threeDIntoSvgPath(points), fill: color, shapeRendering: crispEdges ? 'crispEdges' : undefined, ...svgProps }, idx));
|
|
6
|
+
}) }));
|
|
7
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { parsePath, PathInternals, reduceInstructions } from '@remotion/paths';
|
|
3
|
+
import { makeRect } from '@remotion/shapes';
|
|
4
|
+
import { extrudeAndTransformElement, interpolateMatrix4d, makeMatrix3dTransform, reduceMatrices, rotateX, rotateY, scaled, translateX, translateY, translateZ, } from '@remotion/svg-3d-engine';
|
|
5
|
+
import { interpolate } from 'remotion';
|
|
6
|
+
import { Faces } from './Faces';
|
|
7
|
+
import { useClickTransforms, useMousePosition } from './hover-transforms';
|
|
8
|
+
export const Outer = ({ children, width, height, cornerRadius, hoverTransform, parentRef }) => {
|
|
9
|
+
const clickTransform = useClickTransforms(parentRef);
|
|
10
|
+
const angle = useMousePosition(parentRef);
|
|
11
|
+
const appropriateScale = Math.min(1.1, (20 + width) / width);
|
|
12
|
+
const transformationUnhovered = reduceMatrices([
|
|
13
|
+
rotateX(-Math.PI / 20),
|
|
14
|
+
]);
|
|
15
|
+
const transformationHovered = reduceMatrices([
|
|
16
|
+
scaled(appropriateScale),
|
|
17
|
+
rotateX(-Math.PI / 16),
|
|
18
|
+
rotateX(Math.sin(angle) / 4),
|
|
19
|
+
rotateY(-Math.cos(angle) / 4),
|
|
20
|
+
]);
|
|
21
|
+
const transformation = interpolateMatrix4d(hoverTransform, transformationUnhovered, transformationHovered);
|
|
22
|
+
const depthFromClick = clickTransform * 15;
|
|
23
|
+
const depthFromHover = interpolate(hoverTransform, [0, 1], [10, 20]);
|
|
24
|
+
const depth = depthFromHover;
|
|
25
|
+
const frontFace = reduceMatrices([
|
|
26
|
+
translateZ(-depth / 2 + depthFromClick),
|
|
27
|
+
transformation,
|
|
28
|
+
]);
|
|
29
|
+
const centerOriented = reduceMatrices([
|
|
30
|
+
translateX(-width / 2),
|
|
31
|
+
translateY(-height / 2),
|
|
32
|
+
transformation,
|
|
33
|
+
translateX(width / 2),
|
|
34
|
+
translateY(height / 2),
|
|
35
|
+
]);
|
|
36
|
+
const { path, instructions } = makeRect({ height, width, cornerRadius });
|
|
37
|
+
const { viewBox } = PathInternals.getBoundingBoxFromInstructions(reduceInstructions(instructions));
|
|
38
|
+
const inbetween = extrudeAndTransformElement({
|
|
39
|
+
sideColor: 'black',
|
|
40
|
+
crispEdges: false,
|
|
41
|
+
depth,
|
|
42
|
+
pressInDepth: depthFromClick,
|
|
43
|
+
points: parsePath(path),
|
|
44
|
+
description: 'rect',
|
|
45
|
+
transformations: centerOriented,
|
|
46
|
+
});
|
|
47
|
+
return (_jsxs("div", { className: "relative", style: { width, height }, children: [_jsx("svg", { viewBox: viewBox, style: {
|
|
48
|
+
overflow: 'visible',
|
|
49
|
+
height,
|
|
50
|
+
width,
|
|
51
|
+
position: 'absolute',
|
|
52
|
+
top: 0,
|
|
53
|
+
}, pointerEvents: "none", children: _jsx(Faces, { elements: inbetween }) }), _jsx("div", { style: {
|
|
54
|
+
transform: makeMatrix3dTransform(frontFace),
|
|
55
|
+
}, children: children })] }));
|
|
56
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
export const Switch = ({ active, onToggle }) => {
|
|
3
|
+
return (_jsx("div", { "data-active": active, className: "h-6 transition-all rounded-full w-12 border-2 border-b-4 bg-gray-200 p-[2px] cursor-pointer data-[active=true]:bg-brand border-black relative", onClick: onToggle, children: _jsx("div", { "data-active": active, className: "h-4 w-4 left-[4px] top-[4px] transition-all rounded-full bg-white border-2 border-black absolute data-[active=true]:left-[calc(100%-24px)]" }) }));
|
|
4
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getChildNodeFrom: (htmlElement: HTMLDivElement | null) => HTMLElement | null;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const getChildNodeFrom = (htmlElement) => {
|
|
2
|
+
if (!htmlElement) {
|
|
3
|
+
return null;
|
|
4
|
+
}
|
|
5
|
+
const { childNodes } = htmlElement;
|
|
6
|
+
if (childNodes.length === 0) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
const childNode = childNodes[0];
|
|
10
|
+
if (!childNode) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
return childNode;
|
|
14
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
type State = {
|
|
3
|
+
progress: number;
|
|
4
|
+
isActive: boolean;
|
|
5
|
+
};
|
|
6
|
+
export declare const useHoverTransforms: (ref: React.RefObject<HTMLDivElement | null>, disabled: boolean) => State;
|
|
7
|
+
export declare const useClickTransforms: (ref: React.RefObject<HTMLDivElement | null>) => number;
|
|
8
|
+
export declare const useMousePosition: (ref: React.RefObject<HTMLDivElement | null>) => number;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import React, { useEffect, useMemo, useState } from 'react';
|
|
2
|
+
import { getChildNodeFrom } from './get-child-node-from';
|
|
3
|
+
export const useHoverTransforms = (ref, disabled) => {
|
|
4
|
+
const [state, setState] = React.useState({
|
|
5
|
+
progress: 0,
|
|
6
|
+
isActive: false,
|
|
7
|
+
});
|
|
8
|
+
const eventTarget = useMemo(() => new EventTarget(), []);
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
if (disabled) {
|
|
11
|
+
eventTarget.dispatchEvent(new Event('disabled'));
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
eventTarget.dispatchEvent(new Event('enabled'));
|
|
15
|
+
}
|
|
16
|
+
}, [disabled, eventTarget]);
|
|
17
|
+
React.useEffect(() => {
|
|
18
|
+
const element = ref.current;
|
|
19
|
+
if (!element)
|
|
20
|
+
return;
|
|
21
|
+
let animationFrame;
|
|
22
|
+
let start = null;
|
|
23
|
+
let isHovered = false;
|
|
24
|
+
let internalDisabled = disabled;
|
|
25
|
+
const getIsActive = () => {
|
|
26
|
+
return isHovered && !internalDisabled;
|
|
27
|
+
};
|
|
28
|
+
const animate = (timestamp) => {
|
|
29
|
+
if (start === null)
|
|
30
|
+
start = timestamp;
|
|
31
|
+
const progress = Math.min((timestamp - start) / 150, 1);
|
|
32
|
+
setState(() => ({
|
|
33
|
+
isActive: getIsActive(),
|
|
34
|
+
progress: getIsActive() ? progress : 1 - progress,
|
|
35
|
+
}));
|
|
36
|
+
if (progress < 1) {
|
|
37
|
+
animationFrame = requestAnimationFrame(animate);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const animateIn = () => {
|
|
41
|
+
start = null;
|
|
42
|
+
cancelAnimationFrame(animationFrame);
|
|
43
|
+
animationFrame = requestAnimationFrame(animate);
|
|
44
|
+
};
|
|
45
|
+
const handleMouseEnter = () => {
|
|
46
|
+
const prevIsActive = getIsActive();
|
|
47
|
+
isHovered = true;
|
|
48
|
+
if (prevIsActive === getIsActive()) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
animateIn();
|
|
52
|
+
};
|
|
53
|
+
const handleMouseLeave = () => {
|
|
54
|
+
const prevIsActive = getIsActive();
|
|
55
|
+
isHovered = false;
|
|
56
|
+
if (prevIsActive === getIsActive()) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
animateIn();
|
|
60
|
+
};
|
|
61
|
+
const handleDisabled = () => {
|
|
62
|
+
const prevIsActive = getIsActive();
|
|
63
|
+
internalDisabled = true;
|
|
64
|
+
if (prevIsActive === getIsActive()) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
animateIn();
|
|
68
|
+
};
|
|
69
|
+
const handleEnabled = () => {
|
|
70
|
+
const prevIsActive = getIsActive();
|
|
71
|
+
internalDisabled = false;
|
|
72
|
+
if (prevIsActive === getIsActive()) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
animateIn();
|
|
76
|
+
};
|
|
77
|
+
element.addEventListener('mouseenter', handleMouseEnter);
|
|
78
|
+
element.addEventListener('mouseleave', handleMouseLeave);
|
|
79
|
+
eventTarget.addEventListener('disabled', handleDisabled);
|
|
80
|
+
eventTarget.addEventListener('enabled', handleEnabled);
|
|
81
|
+
return () => {
|
|
82
|
+
element.removeEventListener('mouseenter', handleMouseEnter);
|
|
83
|
+
element.removeEventListener('mouseleave', handleMouseLeave);
|
|
84
|
+
eventTarget.removeEventListener('disabled', handleDisabled);
|
|
85
|
+
eventTarget.removeEventListener('enabled', handleEnabled);
|
|
86
|
+
cancelAnimationFrame(animationFrame);
|
|
87
|
+
};
|
|
88
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
89
|
+
}, [ref, eventTarget]);
|
|
90
|
+
return state;
|
|
91
|
+
};
|
|
92
|
+
export const useClickTransforms = (ref) => {
|
|
93
|
+
const [hoverProgress, setHoverProgress] = React.useState(0);
|
|
94
|
+
React.useEffect(() => {
|
|
95
|
+
const element = getChildNodeFrom(ref.current);
|
|
96
|
+
if (!element) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
let animationFrame;
|
|
100
|
+
let start = null;
|
|
101
|
+
let isHovered = false;
|
|
102
|
+
const animate = (timestamp) => {
|
|
103
|
+
if (start === null)
|
|
104
|
+
start = timestamp;
|
|
105
|
+
const progress = Math.min((timestamp - start) / 150, 1);
|
|
106
|
+
setHoverProgress(isHovered ? progress : 1 - progress);
|
|
107
|
+
if (progress < 1) {
|
|
108
|
+
animationFrame = requestAnimationFrame(animate);
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
const handleMouseEnter = () => {
|
|
112
|
+
isHovered = true;
|
|
113
|
+
start = null;
|
|
114
|
+
cancelAnimationFrame(animationFrame);
|
|
115
|
+
animationFrame = requestAnimationFrame(animate);
|
|
116
|
+
};
|
|
117
|
+
const handleMouseLeave = () => {
|
|
118
|
+
isHovered = false;
|
|
119
|
+
start = null;
|
|
120
|
+
cancelAnimationFrame(animationFrame);
|
|
121
|
+
animationFrame = requestAnimationFrame(animate);
|
|
122
|
+
};
|
|
123
|
+
element.addEventListener('pointerdown', handleMouseEnter);
|
|
124
|
+
element.addEventListener('pointerup', handleMouseLeave);
|
|
125
|
+
return () => {
|
|
126
|
+
element.removeEventListener('pointerdown', handleMouseEnter);
|
|
127
|
+
element.removeEventListener('pointerup', handleMouseLeave);
|
|
128
|
+
cancelAnimationFrame(animationFrame);
|
|
129
|
+
};
|
|
130
|
+
}, [ref]);
|
|
131
|
+
return hoverProgress;
|
|
132
|
+
};
|
|
133
|
+
const getAngle = (ref, coordinates) => {
|
|
134
|
+
const element = getChildNodeFrom(ref);
|
|
135
|
+
if (!element) {
|
|
136
|
+
return 0;
|
|
137
|
+
}
|
|
138
|
+
if (coordinates === null) {
|
|
139
|
+
return 0;
|
|
140
|
+
}
|
|
141
|
+
const clientRect = element.getClientRects();
|
|
142
|
+
if (!clientRect) {
|
|
143
|
+
return 0;
|
|
144
|
+
}
|
|
145
|
+
if (clientRect.length === 0) {
|
|
146
|
+
return 0;
|
|
147
|
+
}
|
|
148
|
+
const center = {
|
|
149
|
+
x: clientRect[0].x + clientRect[0].width / 2,
|
|
150
|
+
y: clientRect[0].y + clientRect[0].height / 2,
|
|
151
|
+
};
|
|
152
|
+
const angle = Math.atan2(coordinates.y - center.y, coordinates.x - center.x);
|
|
153
|
+
return angle;
|
|
154
|
+
};
|
|
155
|
+
let lastCoordinates = null;
|
|
156
|
+
export const useMousePosition = (ref) => {
|
|
157
|
+
const [angle, setAngle] = useState(getAngle(ref.current, lastCoordinates));
|
|
158
|
+
useEffect(() => {
|
|
159
|
+
const element = ref.current;
|
|
160
|
+
if (!element) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
const onMouseMove = (e) => {
|
|
164
|
+
const clientRect = element.getClientRects();
|
|
165
|
+
if (!clientRect) {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
lastCoordinates = { y: e.clientY, x: e.clientX };
|
|
169
|
+
setAngle(getAngle(element, { y: e.clientY, x: e.clientX }));
|
|
170
|
+
};
|
|
171
|
+
window.addEventListener('mousemove', onMouseMove);
|
|
172
|
+
return () => {
|
|
173
|
+
window.removeEventListener('mousemove', onMouseMove);
|
|
174
|
+
};
|
|
175
|
+
}, [ref]);
|
|
176
|
+
return angle;
|
|
177
|
+
};
|