6ede33ccdb
Build and Push Docker Images / create_manifest (web, surfsense-web, , cpu) (push) Has been cancelled
Build and Push Docker Images / finalize_release (push) Has been cancelled
Obsidian Plugin Lint / lint (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_web, cpu, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-24.04-arm, linux/arm64, arm64, , runner, false, cpu) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_web, cpu, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-latest, linux/amd64, amd64, , runner, false, cpu) (push) Has been cancelled
Build and Push Docker Images / compute_version (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, cpu, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64, , production, false, cpu) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, cpu, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64, , production, false, cpu) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, cu126, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64, -cuda126, production, true, cuda126) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, cu126, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64, -cuda126, production, true, cuda126) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, cu128, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64, -cuda, production, true, cuda) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, cu128, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64, -cuda, production, true, cuda) (push) Has been cancelled
Build and Push Docker Images / verify_digests (push) Has been cancelled
Build and Push Docker Images / create_manifest (backend, surfsense-backend, , cpu) (push) Has been cancelled
Build and Push Docker Images / create_manifest (backend, surfsense-backend, -cuda, cuda) (push) Has been cancelled
Build and Push Docker Images / create_manifest (backend, surfsense-backend, -cuda126, cuda126) (push) Has been cancelled
79 lines
1.8 KiB
TypeScript
79 lines
1.8 KiB
TypeScript
"use client";
|
|
|
|
import {
|
|
type FloatingToolbarState,
|
|
flip,
|
|
offset,
|
|
useFloatingToolbar,
|
|
useFloatingToolbarState,
|
|
} from "@platejs/floating";
|
|
import { useComposedRef } from "@udecode/cn";
|
|
import { KEYS } from "platejs";
|
|
import { useEditorId, useEventEditorValue, usePluginOption } from "platejs/react";
|
|
import type * as React from "react";
|
|
import { useIsMobile } from "@/hooks/use-mobile";
|
|
import { cn } from "@/lib/utils";
|
|
|
|
import { Toolbar } from "./toolbar";
|
|
|
|
export function FloatingToolbar({
|
|
children,
|
|
className,
|
|
state,
|
|
...props
|
|
}: React.ComponentProps<typeof Toolbar> & {
|
|
state?: FloatingToolbarState;
|
|
}) {
|
|
const editorId = useEditorId();
|
|
const focusedEditorId = useEventEditorValue("focus");
|
|
const isFloatingLinkOpen = !!usePluginOption({ key: KEYS.link }, "mode");
|
|
const isMobile = useIsMobile();
|
|
|
|
const floatingToolbarState = useFloatingToolbarState({
|
|
editorId,
|
|
focusedEditorId,
|
|
hideToolbar: isFloatingLinkOpen,
|
|
...state,
|
|
floatingOptions: {
|
|
middleware: [
|
|
offset(12),
|
|
flip({
|
|
fallbackPlacements: ["top-start", "top-end", "bottom-start", "bottom-end"],
|
|
padding: 12,
|
|
}),
|
|
],
|
|
placement: "top",
|
|
...state?.floatingOptions,
|
|
},
|
|
});
|
|
|
|
const {
|
|
clickOutsideRef,
|
|
hidden,
|
|
props: rootProps,
|
|
ref: floatingRef,
|
|
} = useFloatingToolbar(floatingToolbarState);
|
|
|
|
const ref = useComposedRef<HTMLDivElement>(props.ref, floatingRef);
|
|
|
|
if (hidden || isMobile) return null;
|
|
|
|
return (
|
|
<div ref={clickOutsideRef}>
|
|
<Toolbar
|
|
{...props}
|
|
{...rootProps}
|
|
ref={ref}
|
|
className={cn(
|
|
"scrollbar-hide absolute z-50 overflow-x-auto whitespace-nowrap rounded-md bg-muted p-1 opacity-100 shadow-md print:hidden",
|
|
"max-w-[80vw]",
|
|
"[&_button:hover]:bg-neutral-200 dark:[&_button:hover]:bg-neutral-700",
|
|
className
|
|
)}
|
|
>
|
|
{children}
|
|
</Toolbar>
|
|
</div>
|
|
);
|
|
}
|