Disable copy paste removed in favor of class wrapping

This commit is contained in:
Lucas Oliveira 2023-07-20 17:07:54 -03:00
commit b2a7fe174c
5 changed files with 31 additions and 55 deletions

View file

@ -152,7 +152,7 @@ export default function ParameterComponent({
return ( return (
<div <div
ref={ref} ref={ref}
className="nopan nodrag noundo mt-1 flex w-full flex-wrap items-center justify-between bg-muted px-5 py-2" className="nopan nodrag noundo nocopy mt-1 flex w-full flex-wrap items-center justify-between bg-muted px-5 py-2"
> >
<> <>
<div <div

View file

@ -44,7 +44,7 @@ const DialogContent = React.forwardRef<
<DialogPrimitive.Content <DialogPrimitive.Content
ref={ref} ref={ref}
className={cn( className={cn(
"noundo fixed z-50 flex w-full flex-col gap-3 rounded-b-lg border bg-background p-6 shadow-lg animate-in data-[state=open]:fade-in-90 data-[state=open]:slide-in-from-bottom-10 sm:max-w-lg sm:rounded-lg sm:zoom-in-90 data-[state=open]:sm:slide-in-from-bottom-0", "noundo nocopy fixed z-50 flex w-full flex-col gap-3 rounded-b-lg border bg-background p-6 shadow-lg animate-in data-[state=open]:fade-in-90 data-[state=open]:slide-in-from-bottom-10 sm:max-w-lg sm:rounded-lg sm:zoom-in-90 data-[state=open]:sm:slide-in-from-bottom-0",
className className
)} )}
{...props} {...props}

View file

@ -42,8 +42,6 @@ const TabsContextInitialValue: TabsContextType = {
uploadFlow: () => {}, uploadFlow: () => {},
hardReset: () => {}, hardReset: () => {},
saveFlow: async (flow: FlowType) => {}, saveFlow: async (flow: FlowType) => {},
disableCopyPaste: false,
setDisableCopyPaste: (state: boolean) => {},
lastCopiedSelection: null, lastCopiedSelection: null,
setLastCopiedSelection: (selection: any) => {}, setLastCopiedSelection: (selection: any) => {},
tabsState: {}, tabsState: {},
@ -585,16 +583,12 @@ export function TabsProvider({ children }: { children: ReactNode }) {
} }
} }
const [disableCopyPaste, setDisableCopyPaste] = useState(false);
return ( return (
<TabsContext.Provider <TabsContext.Provider
value={{ value={{
saveFlow, saveFlow,
lastCopiedSelection, lastCopiedSelection,
setLastCopiedSelection, setLastCopiedSelection,
disableCopyPaste,
setDisableCopyPaste,
hardReset, hardReset,
tabId, tabId,
setTabId, setTabId,

View file

@ -27,6 +27,7 @@ import { undoRedoContext } from "../../../../contexts/undoRedoContext";
import { APIClassType } from "../../../../types/api"; import { APIClassType } from "../../../../types/api";
import { FlowType, NodeType } from "../../../../types/flow"; import { FlowType, NodeType } from "../../../../types/flow";
import { isValidConnection } from "../../../../utils/reactflowUtils"; import { isValidConnection } from "../../../../utils/reactflowUtils";
import { isWrappedWithClass } from "../../../../utils/utils";
import ConnectionLineComponent from "../ConnectionLineComponent"; import ConnectionLineComponent from "../ConnectionLineComponent";
import ExtraSidebar from "../extraSidebarComponent"; import ExtraSidebar from "../extraSidebarComponent";
@ -38,7 +39,6 @@ export default function Page({ flow }: { flow: FlowType }) {
let { let {
updateFlow, updateFlow,
uploadFlow, uploadFlow,
disableCopyPaste,
addFlow, addFlow,
getNodeId, getNodeId,
paste, paste,
@ -63,11 +63,11 @@ export default function Page({ flow }: { flow: FlowType }) {
// this effect is used to attach the global event handlers // this effect is used to attach the global event handlers
const onKeyDown = (event: KeyboardEvent) => { const onKeyDown = (event: KeyboardEvent) => {
if (!isWrappedWithClass(event, "nocopy")) {
if ( if (
(event.ctrlKey || event.metaKey) && (event.ctrlKey || event.metaKey) &&
event.key === "c" && event.key === "c" &&
lastSelection && lastSelection
!disableCopyPaste
) { ) {
event.preventDefault(); event.preventDefault();
setLastCopiedSelection(_.cloneDeep(lastSelection)); setLastCopiedSelection(_.cloneDeep(lastSelection));
@ -75,8 +75,7 @@ export default function Page({ flow }: { flow: FlowType }) {
if ( if (
(event.ctrlKey || event.metaKey) && (event.ctrlKey || event.metaKey) &&
event.key === "v" && event.key === "v" &&
lastCopiedSelection && lastCopiedSelection
!disableCopyPaste
) { ) {
event.preventDefault(); event.preventDefault();
let bounds = reactFlowWrapper.current.getBoundingClientRect(); let bounds = reactFlowWrapper.current.getBoundingClientRect();
@ -92,6 +91,7 @@ export default function Page({ flow }: { flow: FlowType }) {
) { ) {
event.preventDefault(); event.preventDefault();
} }
}
}; };
const handleMouseMove = (event) => { const handleMouseMove = (event) => {
setPosition({ x: event.clientX, y: event.clientY }); setPosition({ x: event.clientX, y: event.clientY });
@ -355,8 +355,6 @@ export default function Page({ flow }: { flow: FlowType }) {
setLastSelection(flow); setLastSelection(flow);
}, []); }, []);
const { setDisableCopyPaste } = useContext(TabsContext);
return ( return (
<div className="flex h-full overflow-hidden"> <div className="flex h-full overflow-hidden">
<ExtraSidebar /> <ExtraSidebar />
@ -378,18 +376,6 @@ export default function Page({ flow }: { flow: FlowType }) {
}); });
}} }}
edges={edges} edges={edges}
onPaneClick={() => {
console.log("enableCopyPastePaneClick");
setDisableCopyPaste(false);
}}
onPaneMouseLeave={() => {
console.log("enableCopyPastePaneLeave");
setDisableCopyPaste(true);
}}
onPaneMouseEnter={() => {
console.log("enableCopyPastePaneEnter");
setDisableCopyPaste(false);
}}
onNodesChange={onNodesChangeMod} onNodesChange={onNodesChangeMod}
onEdgesChange={onEdgesChangeMod} onEdgesChange={onEdgesChangeMod}
onConnect={onConnect} onConnect={onConnect}
@ -410,7 +396,6 @@ export default function Page({ flow }: { flow: FlowType }) {
onDrop={onDrop} onDrop={onDrop}
onNodesDelete={onDelete} onNodesDelete={onDelete}
onSelectionChange={onSelectionChange} onSelectionChange={onSelectionChange}
zoomOnDoubleClick={!disableCopyPaste}
className="theme-attribution" className="theme-attribution"
minZoom={0.01} minZoom={0.01}
maxZoom={8} maxZoom={8}

View file

@ -20,9 +20,6 @@ export type TabsContextType = {
uploadFlows: () => void; uploadFlows: () => void;
uploadFlow: (newFlow?: boolean, file?: File) => void; uploadFlow: (newFlow?: boolean, file?: File) => void;
hardReset: () => void; hardReset: () => void;
//disable CopyPaste
disableCopyPaste: boolean;
setDisableCopyPaste: (value: boolean) => void;
getNodeId: (nodeType: string) => string; getNodeId: (nodeType: string) => string;
tabsState: TabsState; tabsState: TabsState;
setTabsState: Dispatch<SetStateAction<TabsState>>; setTabsState: Dispatch<SetStateAction<TabsState>>;