From 2f0ff10d3f440ce4fb17b9552c12735f05bfdc54 Mon Sep 17 00:00:00 2001 From: haikdc Date: Sat, 18 Apr 2026 14:15:02 -0700 Subject: [PATCH] =?UTF-8?q?[Haik]:=20refactor:=20restructure=20Dashboard?= =?UTF-8?q?=20module=20boundaries=20=E2=80=94=20move=20ElementSelectionCon?= =?UTF-8?q?text=20(split=20into=20ElementSelectionProvider,=20SelectedElem?= =?UTF-8?q?ent,=20useElementSelection),=20SelectionOverlay,=20domSelectorH?= =?UTF-8?q?elpers,=20and=20useDomElementSelector=20from=20global=20compone?= =?UTF-8?q?nts/=20into=20Dashboard/=5Fshared/element=5Fselection=20and=20D?= =?UTF-8?q?ashboard/hooks/useDomElementSelector;=20relocate=20types.ts=20a?= =?UTF-8?q?nd=20formatRelativeTime.ts=20into=20Dashboard/=5Fshared;=20upda?= =?UTF-8?q?te=20imports=20in=20Dashboard.tsx,=20DashboardCanvas,=20CanvasC?= =?UTF-8?q?ontrols,=20DashboardHeader,=20ViewEditor,=20useIframeElementSel?= =?UTF-8?q?ector,=20dashboardClipboard,=20and=20all=20Dashboard=20hooks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/app/pages/Dashboard/Dashboard.tsx | 7 +-- .../DashboardCanvas/DashboardCanvas.tsx | 4 +- .../components/CanvasControls.tsx | 2 +- .../DashboardHeader/DashboardHeader.tsx | 2 +- .../Dashboard}/SelectionOverlay.tsx | 4 +- .../ElementSelectionProvider.tsx} | 43 +------------------ .../element_selection/SelectedElement.ts | 13 ++++++ .../element_selection/useElementSelection.tsx | 29 +++++++++++++ .../{utils => _shared}/formatRelativeTime.ts | 0 .../Dashboard/{types => _shared}/types.ts | 27 ++++++++++++ .../pages/Dashboard/hooks/useDashboardDrag.ts | 2 +- .../pages/Dashboard/hooks/useDashboardInit.ts | 2 +- .../Dashboard/hooks/useDashboardKeyboard.ts | 2 +- .../Dashboard/hooks/useDashboardSelection.ts | 2 +- .../domSelectorHelpers.ts | 30 +------------ .../useDomElementSelector.ts | 8 ++-- .../pages/Dashboard/hooks/useTetherPaths.ts | 2 +- .../Dashboard/hooks/useToolbarActions.ts | 2 +- frontend/src/app/pages/Views/ViewEditor.tsx | 3 +- .../pages/Views/useIframeElementSelector.ts | 3 +- frontend/src/shared/dashboardClipboard.ts | 2 +- 21 files changed, 97 insertions(+), 92 deletions(-) rename frontend/src/app/{components => pages/Dashboard}/SelectionOverlay.tsx (97%) rename frontend/src/app/{components/ElementSelectionContext.tsx => pages/Dashboard/_shared/element_selection/ElementSelectionProvider.tsx} (69%) create mode 100644 frontend/src/app/pages/Dashboard/_shared/element_selection/SelectedElement.ts create mode 100644 frontend/src/app/pages/Dashboard/_shared/element_selection/useElementSelection.tsx rename frontend/src/app/pages/Dashboard/{utils => _shared}/formatRelativeTime.ts (100%) rename frontend/src/app/pages/Dashboard/{types => _shared}/types.ts (52%) rename frontend/src/app/{components => pages/Dashboard/hooks/useDomElementSelector}/domSelectorHelpers.ts (91%) rename frontend/src/app/{components => pages/Dashboard/hooks/useDomElementSelector}/useDomElementSelector.ts (96%) diff --git a/frontend/src/app/pages/Dashboard/Dashboard.tsx b/frontend/src/app/pages/Dashboard/Dashboard.tsx index 7f81020e..a267197e 100644 --- a/frontend/src/app/pages/Dashboard/Dashboard.tsx +++ b/frontend/src/app/pages/Dashboard/Dashboard.tsx @@ -5,9 +5,10 @@ import { toggleExpandSession } from '@/shared/state/agentsSlice'; import { UPDATE_DASHBOARD } from '@/shared/backend-bridge/apps/dashboards'; import { useCanvasControls } from './hooks/useCanvasControls/useCanvasControls'; import { useDashboardSelection } from './hooks/useDashboardSelection'; -import { ElementSelectionProvider, useElementSelection } from '@/app/components/ElementSelectionContext'; -import { useDomElementSelector } from '@/app/components/useDomElementSelector'; -import SelectionOverlay from '@/app/components/SelectionOverlay'; +import { ElementSelectionProvider } from './_shared/element_selection/ElementSelectionProvider'; +import { useElementSelection } from './_shared/element_selection/useElementSelection'; +import { useDomElementSelector } from './hooks/useDomElementSelector/useDomElementSelector'; +import SelectionOverlay from './SelectionOverlay'; import { useDashboardDrag } from './hooks/useDashboardDrag'; import { useDashboardKeyboard } from './hooks/useDashboardKeyboard'; import { useDashboardThumbnail } from './hooks/useDashboardThumbnail/useDashboardThumbnail'; diff --git a/frontend/src/app/pages/Dashboard/DashboardCanvas/DashboardCanvas.tsx b/frontend/src/app/pages/Dashboard/DashboardCanvas/DashboardCanvas.tsx index b8e9de16..858f81b9 100644 --- a/frontend/src/app/pages/Dashboard/DashboardCanvas/DashboardCanvas.tsx +++ b/frontend/src/app/pages/Dashboard/DashboardCanvas/DashboardCanvas.tsx @@ -10,9 +10,7 @@ import DashboardToolbar from './components/DashboardToolbar/DashboardToolbar'; import DashboardHeader from './components/DashboardHeader/DashboardHeader'; import { useClaudeTokens } from '@/shared/styles/ThemeContext'; import { EXPANDED_CARD_MIN_H, DEFAULT_CARD_W, GRID_GAP } from '@/shared/state/dashboardLayoutSlice'; -import type { TetherInfo } from '@/app/pages/Dashboard/types/types'; -import type { CardType } from '@/app/pages/Dashboard/types/types'; -import type { CanvasActions } from '@/app/pages/Dashboard/types/types'; +import { type CardType, type CanvasActions, type TetherInfo } from '@/app/pages/Dashboard/_shared/types'; const TETHER_FADE_MS = 2500; diff --git a/frontend/src/app/pages/Dashboard/DashboardCanvas/components/CanvasControls.tsx b/frontend/src/app/pages/Dashboard/DashboardCanvas/components/CanvasControls.tsx index 48ef011b..c4f9b692 100644 --- a/frontend/src/app/pages/Dashboard/DashboardCanvas/components/CanvasControls.tsx +++ b/frontend/src/app/pages/Dashboard/DashboardCanvas/components/CanvasControls.tsx @@ -8,7 +8,7 @@ import AddIcon from '@mui/icons-material/Add'; import FitScreenIcon from '@mui/icons-material/FitScreen'; import AutoAwesomeIcon from '@mui/icons-material/AutoAwesome'; import { useClaudeTokens } from '@/shared/styles/ThemeContext'; -import type { CanvasActions } from '@/app/pages/Dashboard/types/types'; +import { type CanvasActions } from '@/app/pages/Dashboard/_shared/types'; interface Props { zoom: number; diff --git a/frontend/src/app/pages/Dashboard/DashboardCanvas/components/DashboardHeader/DashboardHeader.tsx b/frontend/src/app/pages/Dashboard/DashboardCanvas/components/DashboardHeader/DashboardHeader.tsx index ac91bf6f..b9a67559 100644 --- a/frontend/src/app/pages/Dashboard/DashboardCanvas/components/DashboardHeader/DashboardHeader.tsx +++ b/frontend/src/app/pages/Dashboard/DashboardCanvas/components/DashboardHeader/DashboardHeader.tsx @@ -10,7 +10,7 @@ import { useClaudeTokens } from '@/shared/styles/ThemeContext'; import type { AgentSession } from '@/shared/state/agentsSlice'; import type { CardPosition, ViewCardPosition, BrowserCardPosition } from '@/shared/state/dashboardLayoutSlice'; import type { App } from '@/shared/backend-bridge/apps/app_builder'; -import type { CanvasActions } from '@/app/pages/Dashboard/types/types'; +import { type CanvasActions } from '@/app/pages/Dashboard/_shared/types'; import { STATUS_DOT, cleanUrl, CategoryGroup, ItemRow } from './DashboardHeaderParts'; interface DashboardHeaderProps { diff --git a/frontend/src/app/components/SelectionOverlay.tsx b/frontend/src/app/pages/Dashboard/SelectionOverlay.tsx similarity index 97% rename from frontend/src/app/components/SelectionOverlay.tsx rename to frontend/src/app/pages/Dashboard/SelectionOverlay.tsx index 51e534e4..164236b5 100644 --- a/frontend/src/app/components/SelectionOverlay.tsx +++ b/frontend/src/app/pages/Dashboard/SelectionOverlay.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useState, useRef } from 'react'; import ReactDOM from 'react-dom'; -import { OverlayState, DragRect, DragPreviewElement } from './useDomElementSelector'; -import { useElementSelection } from './ElementSelectionContext'; +import { type OverlayState, type DragRect, type DragPreviewElement } from './_shared/types'; +import { useElementSelection } from './_shared/useElementSelection'; const HIGHLIGHT_COLOR = '#3b82f6'; const HIGHLIGHT_BG = 'rgba(59, 130, 246, 0.08)'; diff --git a/frontend/src/app/components/ElementSelectionContext.tsx b/frontend/src/app/pages/Dashboard/_shared/element_selection/ElementSelectionProvider.tsx similarity index 69% rename from frontend/src/app/components/ElementSelectionContext.tsx rename to frontend/src/app/pages/Dashboard/_shared/element_selection/ElementSelectionProvider.tsx index 5db25ba1..7bb138a3 100644 --- a/frontend/src/app/components/ElementSelectionContext.tsx +++ b/frontend/src/app/pages/Dashboard/_shared/element_selection/ElementSelectionProvider.tsx @@ -1,44 +1,5 @@ -import React, { createContext, useContext, useState, useRef, useCallback, useMemo, RefObject } from 'react'; - -export interface SelectedElement { - id: string; - selectorPath: string; - tagName: string; - className: string; - outerHTML: string; - computedStyles: Record; - screenshot?: string; - boundingRect: { x: number; y: number; width: number; height: number }; - semanticType?: 'agent-card' | 'message' | 'tool-call' | 'tool-group' | 'view-card' | 'browser-card' | 'dom-element'; - semanticLabel?: string; - semanticData?: Record; -} - -interface ElementSelectionContextValue { - selectMode: boolean; - toggleSelectMode: () => void; - setSelectMode: (active: boolean) => void; - excludeSelectId: string | null; - setExcludeSelectId: (id: string | null) => void; - activeOwnerId: string | null; - setActiveOwnerId: (id: string | null) => void; - selectedElements: SelectedElement[]; - addSelectedElement: (el: SelectedElement) => void; - updateSelectedElement: (id: string, patch: Partial) => void; - removeSelectedElement: (id: string) => void; - clearSelectedElements: () => void; - elementsByOwner: Record; - addElementForOwner: (ownerId: string, el: SelectedElement) => void; - removeOwnerElement: (ownerId: string, elementId: string) => void; - clearOwnerElements: (ownerId: string) => void; - iframeRef: RefObject; -} - -const ElementSelectionContext = createContext(null); - -export function useElementSelection() { - return useContext(ElementSelectionContext); -} +import React, { useState, useRef, useCallback, useMemo } from 'react'; +import { type SelectedElement } from './SelectedElement'; export const ElementSelectionProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { const [selectMode, setSelectMode] = useState(false); diff --git a/frontend/src/app/pages/Dashboard/_shared/element_selection/SelectedElement.ts b/frontend/src/app/pages/Dashboard/_shared/element_selection/SelectedElement.ts new file mode 100644 index 00000000..dacc76ac --- /dev/null +++ b/frontend/src/app/pages/Dashboard/_shared/element_selection/SelectedElement.ts @@ -0,0 +1,13 @@ +export interface SelectedElement { + id: string; + selectorPath: string; + tagName: string; + className: string; + outerHTML: string; + computedStyles: Record; + screenshot?: string; + boundingRect: { x: number; y: number; width: number; height: number }; + semanticType?: 'agent-card' | 'message' | 'tool-call' | 'tool-group' | 'view-card' | 'browser-card' | 'dom-element'; + semanticLabel?: string; + semanticData?: Record; +} \ No newline at end of file diff --git a/frontend/src/app/pages/Dashboard/_shared/element_selection/useElementSelection.tsx b/frontend/src/app/pages/Dashboard/_shared/element_selection/useElementSelection.tsx new file mode 100644 index 00000000..2f86c87e --- /dev/null +++ b/frontend/src/app/pages/Dashboard/_shared/element_selection/useElementSelection.tsx @@ -0,0 +1,29 @@ +import { createContext, useContext, RefObject } from 'react'; +import { type SelectedElement } from './SelectedElement'; + + +interface ElementSelectionContextValue { + selectMode: boolean; + toggleSelectMode: () => void; + setSelectMode: (active: boolean) => void; + excludeSelectId: string | null; + setExcludeSelectId: (id: string | null) => void; + activeOwnerId: string | null; + setActiveOwnerId: (id: string | null) => void; + selectedElements: SelectedElement[]; + addSelectedElement: (el: SelectedElement) => void; + updateSelectedElement: (id: string, patch: Partial) => void; + removeSelectedElement: (id: string) => void; + clearSelectedElements: () => void; + elementsByOwner: Record; + addElementForOwner: (ownerId: string, el: SelectedElement) => void; + removeOwnerElement: (ownerId: string, elementId: string) => void; + clearOwnerElements: (ownerId: string) => void; + iframeRef: RefObject; +} + +const ElementSelectionContext = createContext(null); + +export function useElementSelection() { + return useContext(ElementSelectionContext); +} \ No newline at end of file diff --git a/frontend/src/app/pages/Dashboard/utils/formatRelativeTime.ts b/frontend/src/app/pages/Dashboard/_shared/formatRelativeTime.ts similarity index 100% rename from frontend/src/app/pages/Dashboard/utils/formatRelativeTime.ts rename to frontend/src/app/pages/Dashboard/_shared/formatRelativeTime.ts diff --git a/frontend/src/app/pages/Dashboard/types/types.ts b/frontend/src/app/pages/Dashboard/_shared/types.ts similarity index 52% rename from frontend/src/app/pages/Dashboard/types/types.ts rename to frontend/src/app/pages/Dashboard/_shared/types.ts index 5145f600..6500ca82 100644 --- a/frontend/src/app/pages/Dashboard/types/types.ts +++ b/frontend/src/app/pages/Dashboard/_shared/types.ts @@ -19,4 +19,31 @@ export interface CanvasActions { maxZoom?: number, animate?: boolean, ) => void; +} + +export interface OverlayState { + visible: boolean; + top: number; + left: number; + width: number; + height: number; + label: string; +} + +export interface DragRect { + visible: boolean; + top: number; + left: number; + width: number; + height: number; +} + +export interface DragPreviewElement { + selectId: string; + top: number; + left: number; + width: number; + height: number; + label: string; + action: 'add' | 'remove'; } \ No newline at end of file diff --git a/frontend/src/app/pages/Dashboard/hooks/useDashboardDrag.ts b/frontend/src/app/pages/Dashboard/hooks/useDashboardDrag.ts index 4a4bf799..cdf79613 100644 --- a/frontend/src/app/pages/Dashboard/hooks/useDashboardDrag.ts +++ b/frontend/src/app/pages/Dashboard/hooks/useDashboardDrag.ts @@ -1,7 +1,7 @@ import { useState, useCallback, useRef } from 'react'; import { useAppDispatch } from '@/shared/hooks'; import { moveCards, bringToFront } from '@/shared/state/dashboardLayoutSlice'; -import type { CardType } from '@/app/pages/Dashboard/types/types'; +import { type CardType } from '@/app/pages/Dashboard/_shared/types'; interface DragSelection { isSelected: (id: string) => boolean; diff --git a/frontend/src/app/pages/Dashboard/hooks/useDashboardInit.ts b/frontend/src/app/pages/Dashboard/hooks/useDashboardInit.ts index 1a168ac1..ee2b8ced 100644 --- a/frontend/src/app/pages/Dashboard/hooks/useDashboardInit.ts +++ b/frontend/src/app/pages/Dashboard/hooks/useDashboardInit.ts @@ -14,7 +14,7 @@ import { LIST_APPS } from '@/shared/backend-bridge/apps/app_builder'; import { agentsWs } from '@/shared/ws/WebSocketManager'; import { initBrowserCommandHandler } from '@/shared/browserCommandHandler'; import { clearPendingBrowserUrl, clearPendingFocusAgentId } from '@/shared/state/tempStateSlice'; -import type { CanvasActions } from '@/app/pages/Dashboard/types/types'; +import { type CanvasActions } from '@/app/pages/Dashboard/_shared/types'; interface InitDeps { dashboardId: string | undefined; diff --git a/frontend/src/app/pages/Dashboard/hooks/useDashboardKeyboard.ts b/frontend/src/app/pages/Dashboard/hooks/useDashboardKeyboard.ts index cba959dd..fa6edcfb 100644 --- a/frontend/src/app/pages/Dashboard/hooks/useDashboardKeyboard.ts +++ b/frontend/src/app/pages/Dashboard/hooks/useDashboardKeyboard.ts @@ -13,7 +13,7 @@ import { placeCard, } from '@/shared/state/dashboardLayoutSlice'; import { setClipboardCards, getClipboardCards, type ClipboardCard } from '@/shared/dashboardClipboard'; -import type { CardType } from '@/app/pages/Dashboard/types/types'; +import { type CardType } from '@/app/pages/Dashboard/_shared/types'; interface KeyboardDeps { newAgentShortcut: string; diff --git a/frontend/src/app/pages/Dashboard/hooks/useDashboardSelection.ts b/frontend/src/app/pages/Dashboard/hooks/useDashboardSelection.ts index ce8fd9b6..2ea59385 100644 --- a/frontend/src/app/pages/Dashboard/hooks/useDashboardSelection.ts +++ b/frontend/src/app/pages/Dashboard/hooks/useDashboardSelection.ts @@ -1,6 +1,6 @@ import { useState, useCallback, useRef, useEffect, RefObject } from 'react'; import type { CardPosition, ViewCardPosition, BrowserCardPosition } from '@/shared/state/dashboardLayoutSlice'; -import type { CardType } from '@/app/pages/Dashboard/types/types'; +import { type CardType } from '@/app/pages/Dashboard/_shared/types'; interface SelectedCard { id: string; diff --git a/frontend/src/app/components/domSelectorHelpers.ts b/frontend/src/app/pages/Dashboard/hooks/useDomElementSelector/domSelectorHelpers.ts similarity index 91% rename from frontend/src/app/components/domSelectorHelpers.ts rename to frontend/src/app/pages/Dashboard/hooks/useDomElementSelector/domSelectorHelpers.ts index e43023e8..b0ad6483 100644 --- a/frontend/src/app/components/domSelectorHelpers.ts +++ b/frontend/src/app/pages/Dashboard/hooks/useDomElementSelector/domSelectorHelpers.ts @@ -1,4 +1,5 @@ -import { type SelectedElement } from './ElementSelectionContext'; +import { type SelectedElement } from '@/app/pages/Dashboard/_shared/element_selection/SelectedElement'; +import { type OverlayState, type DragRect, type DragPreviewElement } from '@/app/pages/Dashboard/_shared/types'; export const SELECT_ATTR = 'data-select-type'; export const SELECT_ID_ATTR = 'data-select-id'; @@ -7,23 +8,6 @@ export const SELECT_META_ATTR = 'data-select-meta'; const DRAG_SELECT_TYPES = ['agent-card', 'view-card', 'browser-card'] as const; const DRAG_SELECTOR = DRAG_SELECT_TYPES.map((t) => `[${SELECT_ATTR}="${t}"]`).join(','); -export interface OverlayState { - visible: boolean; - top: number; - left: number; - width: number; - height: number; - label: string; -} - -export interface DragRect { - visible: boolean; - top: number; - left: number; - width: number; - height: number; -} - export const EMPTY_OVERLAY: OverlayState = { visible: false, top: 0, left: 0, width: 0, height: 0, label: '' }; export const EMPTY_DRAG: DragRect = { visible: false, top: 0, left: 0, width: 0, height: 0 }; @@ -98,16 +82,6 @@ export function buildSelectedElement(el: Element): SelectedElement { }; } -export interface DragPreviewElement { - selectId: string; - top: number; - left: number; - width: number; - height: number; - label: string; - action: 'add' | 'remove'; -} - export const DRAG_THRESHOLD = 5; export interface DomSelectorState { diff --git a/frontend/src/app/components/useDomElementSelector.ts b/frontend/src/app/pages/Dashboard/hooks/useDomElementSelector/useDomElementSelector.ts similarity index 96% rename from frontend/src/app/components/useDomElementSelector.ts rename to frontend/src/app/pages/Dashboard/hooks/useDomElementSelector/useDomElementSelector.ts index 966eb665..d11ac4f5 100644 --- a/frontend/src/app/components/useDomElementSelector.ts +++ b/frontend/src/app/pages/Dashboard/hooks/useDomElementSelector/useDomElementSelector.ts @@ -1,14 +1,14 @@ import { useEffect, useRef, useState, useCallback } from 'react'; -import { useElementSelection } from './ElementSelectionContext'; +import { useElementSelection } from '@/app/pages/Dashboard/_shared/element_selection/useElementSelection'; import { - type OverlayState, type DragRect, type DragPreviewElement, type DomSelectorState, type SelectMeta, + type SelectMeta, + type DomSelectorState, EMPTY_OVERLAY, EMPTY_DRAG, DRAG_THRESHOLD, SELECT_ATTR, SELECT_ID_ATTR, SELECT_META_ATTR, findSelectableAncestor, buildSemanticLabel, buildSelectedElement, computeDragPreview, processDragSelection, } from './domSelectorHelpers'; - -export type { OverlayState, DragRect, DragPreviewElement } from './domSelectorHelpers'; +import { type OverlayState, type DragRect, type DragPreviewElement } from '@/app/pages/Dashboard/_shared/types'; export function useDomElementSelector(): DomSelectorState { const ctx = useElementSelection(); diff --git a/frontend/src/app/pages/Dashboard/hooks/useTetherPaths.ts b/frontend/src/app/pages/Dashboard/hooks/useTetherPaths.ts index 582ccb5d..e8d25605 100644 --- a/frontend/src/app/pages/Dashboard/hooks/useTetherPaths.ts +++ b/frontend/src/app/pages/Dashboard/hooks/useTetherPaths.ts @@ -1,7 +1,7 @@ import { useMemo } from 'react'; import type { RefObject } from 'react'; import { EXPANDED_CARD_MIN_H } from '@/shared/state/dashboardLayoutSlice'; -import type { TetherInfo } from '@/app/pages/Dashboard/types/types'; +import { type TetherInfo } from '@/app/pages/Dashboard/_shared/types'; interface TetherDeps { glowingAgentCards: Record; diff --git a/frontend/src/app/pages/Dashboard/hooks/useToolbarActions.ts b/frontend/src/app/pages/Dashboard/hooks/useToolbarActions.ts index 333cb317..f6f245f8 100644 --- a/frontend/src/app/pages/Dashboard/hooks/useToolbarActions.ts +++ b/frontend/src/app/pages/Dashboard/hooks/useToolbarActions.ts @@ -24,7 +24,7 @@ import { } from '@/shared/state/dashboardLayoutSlice'; import { GENERATE_DASHBOARD_NAME } from '@/shared/backend-bridge/apps/dashboards'; import type { ContextPath } from '@/shared/state/agentsTypes'; -import type { CanvasActions } from '@/app/pages/Dashboard/types/types'; +import { type CanvasActions } from '@/app/pages/Dashboard/_shared/types'; interface ToolbarDeps { cards: Record; diff --git a/frontend/src/app/pages/Views/ViewEditor.tsx b/frontend/src/app/pages/Views/ViewEditor.tsx index cfea1e54..aa253b46 100644 --- a/frontend/src/app/pages/Views/ViewEditor.tsx +++ b/frontend/src/app/pages/Views/ViewEditor.tsx @@ -7,7 +7,8 @@ import AgentChat from '../AgentChat/AgentChat'; import ViewPreview, { ViewPreviewHandle } from './ViewPreview'; import InputSchemaForm, { getDefault, getStubbed } from './InputSchemaForm'; import CodeEditor from './CodeEditor'; -import { ElementSelectionProvider } from '@/app/components/ElementSelectionContext'; +// TODO: Fix this import, also the the element selection in this component doesnt seem to work so for now its chillin +import { ElementSelectionProvider } from '@/app/pages/Dashboard/_shared/element_selection/ElementSelectionProvider'; import { FileTreeItem, getEditorLanguage } from './FileTree'; import { ConsolePanel } from './ConsolePanel'; import { useViewWorkspace } from './hooks/useViewWorkspace'; diff --git a/frontend/src/app/pages/Views/useIframeElementSelector.ts b/frontend/src/app/pages/Views/useIframeElementSelector.ts index 84dc2bed..af106c49 100644 --- a/frontend/src/app/pages/Views/useIframeElementSelector.ts +++ b/frontend/src/app/pages/Views/useIframeElementSelector.ts @@ -1,5 +1,6 @@ import { useEffect, useRef, useCallback, RefObject } from 'react'; -import { SelectedElement, useElementSelection } from '@/app/components/ElementSelectionContext'; +import { useElementSelection } from '@/app/pages/Dashboard/_shared/element_selection/useElementSelection'; +import { type SelectedElement } from '@/app/pages/Dashboard/_shared/element_selection/SelectedElement'; import { OVERLAY_ID, LABEL_ID, STYLE_ID, HIGHLIGHT_COLOR, HIGHLIGHT_BG, FLASH_COLOR, SELECTED_CLASS, diff --git a/frontend/src/shared/dashboardClipboard.ts b/frontend/src/shared/dashboardClipboard.ts index f3f85cca..1869b07e 100644 --- a/frontend/src/shared/dashboardClipboard.ts +++ b/frontend/src/shared/dashboardClipboard.ts @@ -1,4 +1,4 @@ -import type { CardType } from '@/app/pages/Dashboard/types/types'; +import { type CardType } from '@/app/pages/Dashboard/_shared/types'; export interface ClipboardCard { type: CardType;