From 3556d4151cd18c08b2acf1e5ddc9a81620f7b140 Mon Sep 17 00:00:00 2001 From: bepyan Date: Thu, 15 Aug 2024 20:07:38 +0900 Subject: [PATCH 1/6] refactor: element-helper portal --- bun.lockb | Bin 297883 -> 298671 bytes package.json | 1 + src/components/editor/action.ts | 2 + .../editor/elements/element-helper.tsx | 90 ++++++++++++++++++ .../editor/elements/element-wrapper.tsx | 68 ++----------- src/components/editor/main.tsx | 4 +- src/components/editor/type.ts | 1 + 7 files changed, 105 insertions(+), 61 deletions(-) create mode 100644 src/components/editor/elements/element-helper.tsx diff --git a/bun.lockb b/bun.lockb index 6b3f15932ce85a217aea6186527d8a0104b2a220..c422350adbb4c92bf62b09f6ee41b58bb457f893 100755 GIT binary patch delta 57732 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 z
    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%0D0%Hbp28+*&7D9L;t5O!0)7s_mF0t$BexNN2 zRX=B!(_E%7psNcZInCtV>IASB^^fWKMW7(^KyPeTcCtOllJC5phIh+3KYku*D@Ofc z7W>?ZRVKiF+_2$X9%y`)F-D{*vY}bHKic|{a_FBql%!W_;~DNAb5 z8UFracr8zI0u{OAdz_=5Z<#X%n*5g9)sT9Q8(!)039jG2?>I&?RINmub&d`I+MKBh zCTj)_8E99Xr`}88Uv>f`tR5m@VGEzgEn5PM;1bgUKyd`^ScZ{@RLMrReMtA0m{T`T zs`D1!$nGQtHs4c~so6GCbg z-tlru82VCVy(s6nkQg43`Z?*6!&dS2j5lvPhV+_Ql2^X738*_XU| z&Ku?+f&BIZEcp3*?gr$tGT)?s;kl=hs2I9cWuSd0oxP zAGdC{-`IwHVLe)dzx)zGI2zNVmT5;H;F;(Sm&;RTF5JUDMHa^uT*IFK!I!6=UbTMP zuAKpCUup-L4PCgk+^im7pH0|#>TYH$3xPmaR^Y{4*kyXK0=^S@nOjrCO()+SLRVOo zi*p1Phu^zQ{`kxWb@zaksCLCyH^%5nUJ*>(*K>1lohjEH@%d3eXy-tGhjC)$n}W~_JSR^2f5hwSodwch63q)aM!77wAWdLXbg|FW-Z&LMhZO&N$4v3K) z$E`_Yp6@=>GIEw8S0QYEMRy5Xr^d-Il!Zr1{VFN}RfA6zuk|YzB=!p^xO~`x8(c+a z0AYMZK#Xhppk5ESQnTRJJsN_wXNtGY}33e=Z-6@1CF zxC^*82F0sa53VT-{A)K2zFX&jK!;k@qK%BJq@DyRWD4OQ{yKki6OaBsTW}XuQW_va z3WbdQ`xK9ou(2u@-9@J4E2Rf zKXj<>-}Z*m+XC!UMZF6l(_jJ7p>ew)-I6cYSs-fFl*Y-ZD#~TJX#)4yeUtax4Ket_ z7BbZ!YSolBQdC7%!1dZL^wGeh?~S$Frhja~JxYy=u+B;WkUVz%qtEj9;qypI{4Tvz zq(Uo!{K^5k^0Q;#WDq>A)_Opz#gE6+N{Q1C31@3i+tU2Xu}{lizHgq-$@6=}IxSD7 z-?P*}`ng#3_A=o(kX6^-%C*=b)z$202hh~WPB^rDRByD;U0uw?8XlFZMRN-m2c=l} z7Dv>>?c>@Xu}?Km{OU;bJ9KBY%6{r7Gj3w?jEO1n{YRc_TkW^=1^Exn=wVQw}@UuK(8a{Fh zzM6`Aw#6UqHs%lE^j?V?)NCYiknGTqle(D=ADZ4#F)89|ZpCjU>Q>cxT1G-rYU<>S zPMLIey=tg9T&f<{y<&Nq(WO(D8h4$vPXaqd3#?JVq q3m?s90=n``DCsIxLrZH&5VXPV6ikQH9b3`&>s6PEW$V?3H~tF}*X|ks delta 57353 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 diff --git a/package.json b/package.json index 81d9907..667f1ba 100644 --- a/package.json +++ b/package.json @@ -63,6 +63,7 @@ "sonner": "^1.5.0", "tailwind-merge": "^2.3.0", "tailwindcss-animate": "^1.0.7", + "usehooks-ts": "^3.1.0", "zod": "^3.23.8", "zustand": "^4.5.4" }, diff --git a/src/components/editor/action.ts b/src/components/editor/action.ts index b788bfa..6646653 100644 --- a/src/components/editor/action.ts +++ b/src/components/editor/action.ts @@ -24,6 +24,7 @@ type EditorActionMap = { elementDetails: EditorElement; }; CHANGE_CLICKED_ELEMENT: { + elementRef?: React.RefObject; elementDetails?: EditorElement; }; CHANGE_CURRENT_TAB_VALUE: { @@ -178,6 +179,7 @@ const actionHandlers: { return updateEditorHistory(editor, { ...editor.state, selectedElement: payload.elementDetails ?? emptyElement, + selectedElementRef: payload.elementRef, currentTabValue: newTabValue, }); }, diff --git a/src/components/editor/elements/element-helper.tsx b/src/components/editor/elements/element-helper.tsx new file mode 100644 index 0000000..6d967f1 --- /dev/null +++ b/src/components/editor/elements/element-helper.tsx @@ -0,0 +1,90 @@ +"use client"; + +import { + ArrowDownIcon, + ArrowUpIcon, + CopyPlusIcon, + GripVerticalIcon, + Trash2Icon, +} from "lucide-react"; +import { createPortal } from "react-dom"; +import { useEditor } from "~/components/editor/provider"; +import { Badge } from "~/components/ui/badge"; +import { Button } from "~/components/ui/button"; +import { cn } from "~/lib/utils"; + +import { useRef } from "react"; +import { useResizeObserver } from "usehooks-ts"; + +export default function ElementHelper() { + const { editor, dispatch } = useEditor(); + const element = editor.state.selectedElement; + const elementRef = editor.state.selectedElementRef; + + const emptyRef = useRef(null); + const { width, height } = useResizeObserver({ + ref: elementRef ?? emptyRef, + box: "border-box", + }); + + const handleDeleteElement = () => { + dispatch({ + type: "DELETE_ELEMENT", + payload: { + elementDetails: element, + }, + }); + }; + + return ( + document.body && + createPortal( + !editor.state.isPreviewMode && elementRef?.current && ( +
    + + {element.name} + +
    +
    + + + + + + + + + +
    +
    +
    +
    + + + + + + +
    +
    +
    + ), + document.body, + ) + ); +} + +function IconButton(props: React.ComponentProps<"button">) { + return