import { useContextMenuRequest, useEditor } from "@layerhub-io/react"
import { useStyletron } from "baseui"
import BringToFront from "~/components/Icons/BringToFront"
import Delete from "~/components/Icons/Delete"
import Duplicate from "~/components/Icons/Duplicate"
import Elements from "~/components/Icons/Elements"
import Templates from "~/components/Icons/Templates"
import Locked from "~/components/Icons/Locked"
import Paste from "~/components/Icons/Paste"
import SendToBack from "~/components/Icons/SendToBack"
import Unlocked from "~/components/Icons/Unlocked"
import useAppContext from "~/hooks/useAppContext"
import { getBase64 } from "../../utils/helper"
import { Box, Spinner, FixedZIndex } from 'gestalt'
import { HeaderText } from 'geru-components'
//import { backgroundRemove } from "../../utils/services"
function ContextMenu() {
const { backgroundRemove, setBackgroundRemove } = useAppContext()
const contextMenuRequest = useContextMenuRequest()
// const [isBackgroundRemove, setIsBackgroundRemove] = useState(false)
const editor = useEditor()
const handleAsComponentHandler = async () => {
if (editor) {
const component: any = await editor.scene.exportAsComponent()
if (component) {
console.log({ component })
}
}
}
const backgroundRemove1 = async () => {
//setIsBackgroundRemove(true)
setBackgroundRemove(true)
// console.log("1. -- true",backgroundRemove)
if (editor) {
const component: any = await editor.scene.exportAsComponent()
if (component) {
//setTimeout(() => {
// setBackgroundRemove(false)
//}, 3000);
//setBackgroundRemove(true)
//console.log( component.src)
let imageSrc = component.src
let user_id = "62837571527f65326bb4fec4"
getBase64(imageSrc, user_id)
.then(async function (rs) {
let result = await rs
console.log("result",result)
//setBackgroundRemove(false)
}).catch((err)=>{
console.log(err)
setBackgroundRemove(false)
}).then(()=> {
setBackgroundRemove(false)
})
}
//setIsBackgroundRemove(false)
//setBackgroundRemove(true)
// console.log("2. -- false",backgroundRemove)
}
}
if (!contextMenuRequest || !contextMenuRequest.target) {
return <>>
}
if (contextMenuRequest.target.type === "Background") {
return (
<>
e.preventDefault()}
style={{
position: "absolute",
top: `${contextMenuRequest.top}px`,
left: `${contextMenuRequest.left}px`,
zIndex: 129,
width: "240px",
backgroundColor: "#ffffff",
borderRadius: "10px",
boxShadow: "0.5px 2px 7px rgba(0, 0, 0, 0.1)",
padding: "0.5rem 0",
}}
>
{
editor.objects.copy()
}}
icon="Duplicate"
label="copy"
>
{
editor.objects.paste()
}}
icon="Paste"
label="paste"
>
{
editor.objects.remove()
}}
icon="Delete"
label="delete"
>
>
)
}
// console.log("2",backgroundRemove);
const zIndex = new FixedZIndex(99)
return (
<>
{!contextMenuRequest.target.locked ? (
e.preventDefault()}
style={{
position: "absolute",
top: `${contextMenuRequest.top}px`,
left: `${contextMenuRequest.left}px`,
zIndex: 129,
width: "240px",
backgroundColor: "#ffffff",
borderRadius: "10px",
boxShadow: "0.5px 2px 7px rgba(0, 0, 0, 0.1)",
padding: "0.5rem 0",
}}
>
{
editor.objects.copy()
//editor.cancelContextMenu()
}}
icon="Duplicate"
label="copy"
>
{
editor.objects.paste()
//editor.cancelContextMenu()
}}
icon="Paste"
label="paste"
>
{
editor.objects.remove()
//editor.cancelContextMenu()
}}
icon="Delete"
label="delete"
>
{
editor.objects.bringForward()
//editor.cancelContextMenu()
}}
icon="Forward"
label="bring forward"
>
{
editor.objects.sendBackwards()
//editor.cancelContextMenu()
}}
icon="Backward"
label="send backward"
>
{
handleAsComponentHandler()
//editor.cancelContextMenu()
}}
icon="Elements"
label="Save as component"
>
{
backgroundRemove1()
// editor.cancelContextMenu()
// handleAsComponentHandler()
//// editor.cancelContextMenu()
// alert("removing ... ")
}}
icon="Templates"
label="Background remove"
>
{
editor.objects.lock()
//editor.cancelContextMenu()
}}
icon="Locked"
label="lock"
>
) : (
e.preventDefault()}
style={{
position: "absolute",
top: `${contextMenuRequest.top}px`,
left: `${contextMenuRequest.left}px`,
zIndex: 129,
width: "240px",
backgroundColor: "#ffffff",
borderRadius: "10px",
boxShadow: "0.5px 2px 7px rgba(0, 0, 0, 0.1)",
padding: "0.5rem 0",
}}
>
{
editor.objects.unlock()
//editor.cancelContextMenu()
}}
icon="Unlocked"
label="unlock"
>
)}
>
)
}
function ContextMenuItem({
label,
onClick,
children,
disabled = false,
}: {
icon: string
label: string
onClick: () => void
disabled?: boolean
children: React.ReactNode
}) {
const [css] = useStyletron()
return (
{children} {label}
)
}
export default ContextMenu