From 8cb9602c8726a24b6215ccd1114e85158dc187fa Mon Sep 17 00:00:00 2001 From: jerembdn Date: Mon, 20 May 2024 19:18:11 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A7=20start=20html=20to=20image?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 2 + .../product/previsualization/card/index.tsx | 12 +-- .../product/previsualization/index.tsx | 74 ++++++++++++++++--- 3 files changed, 71 insertions(+), 17 deletions(-) diff --git a/.env.development b/.env.development index 78f0acc..ee4f506 100644 --- a/.env.development +++ b/.env.development @@ -1 +1,3 @@ YOUTUBE_API_KEY=YOUR_API_KEY + +NEXT_PUBLIC_GA_MEASUREMENT_ID="UNKNOWN" diff --git a/src/components/product/previsualization/card/index.tsx b/src/components/product/previsualization/card/index.tsx index cad4e7b..041836f 100644 --- a/src/components/product/previsualization/card/index.tsx +++ b/src/components/product/previsualization/card/index.tsx @@ -1,5 +1,5 @@ import type { Video } from "@/types/video"; -import type React from "react"; +import React from "react"; import { isActiveWidgets, type Display, type Widget } from "../.."; import { css, cx } from "@styled-system/css"; import Image from "@/components/ui/image"; @@ -25,10 +25,10 @@ type PrevisualizationCardProps = { }; }; -const PrevisualizationCard: React.FC = ({ - video, - options, -}: PrevisualizationCardProps) => { +const PrevisualizationCard = React.forwardRef< + HTMLDivElement, + PrevisualizationCardProps +>(({ video, options }: PrevisualizationCardProps) => { const buildFooter = () => { const viewsCount = isActiveWidgets(options.activeWidgets, "videoViews") && video.viewsCount; @@ -177,6 +177,6 @@ const PrevisualizationCard: React.FC = ({ ); -}; +}); export default PrevisualizationCard; diff --git a/src/components/product/previsualization/index.tsx b/src/components/product/previsualization/index.tsx index 018465e..4df3777 100644 --- a/src/components/product/previsualization/index.tsx +++ b/src/components/product/previsualization/index.tsx @@ -5,16 +5,55 @@ import PrevisualizationCard from "./card"; import { defaultOptions, defaultVideo } from "@/constants/default-video"; import type { Widget } from ".."; import Select from "@/components/ui/select"; +import { useForm } from "react-hook-form"; +import React from "react"; type ProductPrevisualizationProps = { className?: string; activeWidgets: Widget[]; }; +type FormData = { + format: "png" | "jpg" | "webp"; + size: "0.5" | "0.75" | "1" | "1.5" | "2" | "3"; +}; + const ProductPrevisualization: React.FC = ({ className, activeWidgets, }: ProductPrevisualizationProps) => { + const ref = React.useRef(null); + + const { register, handleSubmit } = useForm({ + defaultValues: { + format: "png", + size: "1", + }, + }); + + // Un truc dans l'idée tu capte jsp j'pense bref azy + const onSubmit = handleSubmit(({ format, size }: FormData) => { + console.log("Data", format, size); + + //TODO: html to image and return image + + return "caca"; + }); + + const handleDownload = () => { + const image = onSubmit(); + console.log("Download image", image); + if (ref.current) { + } + }; + + const handleCopy = () => { + if (ref.current) { + const image = onSubmit(); + console.log("Copy image", image); + } + }; + return (
= ({ })} > = ({ />
-
= ({ })} > - - -
+ ); };