mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-04-25 16:56:22 +02:00
38 lines
948 B
TypeScript
38 lines
948 B
TypeScript
"use client";
|
|
|
|
import { DndPlugin } from "@platejs/dnd";
|
|
import { useBlockSelected } from "@platejs/selection/react";
|
|
import { cva } from "class-variance-authority";
|
|
import { type PlateElementProps, usePluginOption } from "platejs/react";
|
|
import * as React from "react";
|
|
|
|
export const blockSelectionVariants = cva(
|
|
"pointer-events-none absolute inset-0 z-1 bg-brand/[.13] transition-opacity",
|
|
{
|
|
defaultVariants: {
|
|
active: true,
|
|
},
|
|
variants: {
|
|
active: {
|
|
false: "opacity-0",
|
|
true: "opacity-100",
|
|
},
|
|
},
|
|
}
|
|
);
|
|
|
|
export function BlockSelection(props: PlateElementProps) {
|
|
const isBlockSelected = useBlockSelected();
|
|
const isDragging = usePluginOption(DndPlugin, "isDragging");
|
|
|
|
if (!isBlockSelected || props.plugin.key === "tr" || props.plugin.key === "table") return null;
|
|
|
|
return (
|
|
<div
|
|
className={blockSelectionVariants({
|
|
active: isBlockSelected && !isDragging,
|
|
})}
|
|
data-slot="block-selection"
|
|
/>
|
|
);
|
|
}
|