import { Dialog, Transition } from "@headlessui/react"; import { Fragment, useState } from "react"; import { FiShare } from "react-icons/fi"; import styled, { css } from "styled-components"; import { InferenceResult } from "../types"; interface ShareProps { inferenceResults: InferenceResult[]; nowPlayingResult: InferenceResult; } const ModalContainer = styled.div` position: absolute; top: 0; left: 0; width: 100vw; height: 100vh; background: rgba(0, 0, 0, 0.5); display: flex; align-items: center; justify-content: center; `; export default function Share({ inferenceResults, nowPlayingResult, }: ShareProps) { const [open, setOpen] = useState(false); var classNameCondition = "" if (open) { classNameCondition = "fixed z-90 top-28 right-8 bg-sky-400 w-14 h-14 rounded-full drop-shadow-lg flex justify-center items-center text-white text-2xl hover:bg-sky-500 hover:drop-shadow-2xl" } else { classNameCondition = "fixed z-90 top-28 right-8 bg-slate-100 w-14 h-14 rounded-full drop-shadow-lg flex justify-center items-center text-sky-900 text-2xl hover:text-white hover:bg-sky-600 hover:drop-shadow-2xl" } // function to copy link to moment in song to the clipboard function copyToClipboard(secondsAgo: number) { // use generateLink to generate the link const link = generateLink(secondsAgo); var copyText = window.location.href navigator.clipboard.writeText(link); } // function to generate a link to a the moment in the song based on the played clips, input variable is how many seconds ago function generateLink(secondsAgo: number) { //TODO: Seth, handle start case, and seconds into past case var prompt var seed var denoising var maskImageId var seedImageId var guidance var numInferenceSteps var alphaVelocity // if seconds is 0, set prompt to the currently playing prompt if (secondsAgo == 0) { prompt = nowPlayingResult.input.start.prompt seed = nowPlayingResult.input.start.seed denoising = nowPlayingResult.input.start.denoising maskImageId = nowPlayingResult.input.mask_image_id // TODO, selectively add these based on whether we give user option to change them // seedImageId = nowPlayingResult.input.seed_image_id // guidance = nowPlayingResult.input.guidance // numInferenceSteps = nowPlayingResult.input.num_inference_steps // alphaVelocity = nowPlayingResult.input.alpha_velocity } var baseUrl = "http://localhost:3000/?" if (prompt != null) { var promptString = "&prompt=" + prompt } else { promptString = "" } if (seed != null) { var seedString = "&seed=" + seed } else { seedString = "" } if (denoising != null) { var denoisingString = "&denoising=" + denoising } else { denoisingString = "" } if (maskImageId != null) { var maskImageIdString = "&maskImageId=" + maskImageId } else { maskImageIdString = "" } if (seedImageId != null) { var seedImageIdString = "&seedImageId=" + seedImageId } else { seedImageIdString = "" } if (guidance != null) { var guidanceString = "&guidance=" + guidance } else { guidanceString = "" } if (numInferenceSteps != null) { var numInferenceStepsString = "&numInferenceSteps=" + numInferenceSteps } else { numInferenceStepsString = "" } if (alphaVelocity != null) { var alphaVelocityString = "&alphaVelocity=" + alphaVelocity } else { alphaVelocityString = "" } // create url string with the variables above combined var shareUrl = baseUrl + promptString + seedString + denoisingString + maskImageIdString + seedImageIdString + guidanceString + numInferenceStepsString + alphaVelocityString return shareUrl; } return ( <> setOpen(false)} >
Riff with a friend

Chose a moment from your song to share.

); };