PluginProbe
Extendify / 3.2.1
Extendify v3.2.1
3.2.1 3.2.0 3.1.6 3.1.5 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 3.0.6 3.0.5 3.0.4 trunk 0.1.0 0.10.0 0.10.1 0.10.2 0.11.0 0.11.1 0.2.0 0.3.0 0.3.1 0.4.0 0.5.0 0.6.0 All 127 releases
← All changes | src/Agent/Chat.jsx +30 -28 3.0.63.2.1 View file →
@@ -1,16 +1,21 @@
1 +import { useCanvasSeat } from '@agent/components/Canvas';
1 2 import { DOMHighlighter } from '@agent/components/DOMHighlighter';
3 +import { CanvasModalLayout } from '@agent/components/layouts/CanvasModalLayout';
2 4 import { DragResizeLayout } from '@agent/components/layouts/DragResizeLayout';
3 5 import { MobileLayout } from '@agent/components/layouts/MobileLayout';
4 -import { useGlobalStore } from '@agent/state/global';
5 -import { useWorkflowStore } from '@agent/state/workflows';
6 +import { DESKTOP_MIN_WIDTH, useGlobalStore } from '@agent/state/global';
7 +import { useEditModeStore } from '@quick-edit/state/edit-mode';
8 +import { useQuickEditStore } from '@quick-edit/state/store';
6 9 import { useEffect } from '@wordpress/element';
7 10 import { SidebarLayout } from './components/layouts/SidebarLayout';
8 11
9 -export const Chat = ({ busy, children }) => {
12 +export const Chat = ({ busy, working, children }) => {
10 13 const { setIsMobile, isMobile, mode } = useGlobalStore();
11 - const { domToolEnabled, block, setBlock, setDomToolEnabled } =
12 - useWorkflowStore();
14 + const canvasModal = useCanvasSeat() === 'modal';
15 + const editModeOn = useEditModeStore((s) => s.on);
16 + const block = useQuickEditStore((s) => s.agentBlock);
17 + const setBlock = useQuickEditStore((s) => s.setAgentBlock);
13 18
14 19 useEffect(() => {
15 20 if (!isMobile || !block) return;
16 21 // Remove the block if we switch to mobile
@@ -21,9 +26,9 @@
21 26 let timeout;
22 27 const onResize = () => {
23 28 clearTimeout(timeout);
24 29 timeout = window.setTimeout(() => {
25 - setIsMobile(window.innerWidth < 783);
30 + setIsMobile(window.innerWidth < DESKTOP_MIN_WIDTH);
26 31 }, 10);
27 32 };
28 33 window.addEventListener('resize', onResize);
29 34 return () => {
@@ -31,28 +36,8 @@
31 36 window.removeEventListener('resize', onResize);
32 37 };
33 38 }, [setIsMobile]);
34 39
35 - useEffect(() => {
36 - // Exit select mode when Escape is pressed
37 - const onKeyDown = (e) => {
38 - if (e.key !== 'Escape' || !domToolEnabled) return;
39 -
40 - // Cancel the workflow
41 - window.dispatchEvent(new CustomEvent('extendify-agent:cancel-workflow'));
42 -
43 - // If a block is selected, clear it
44 - if (block) return setBlock(null);
45 -
46 - // If no block is selected, exit select mode
47 - setDomToolEnabled(false);
48 - };
49 - window.addEventListener('keydown', onKeyDown);
50 - return () => {
51 - window.removeEventListener('keydown', onKeyDown);
52 - };
53 - }, [domToolEnabled, block, setBlock, setDomToolEnabled]);
54 -
55 40 if (isMobile) {
56 41 return (
57 42 <MobileLayout>
58 43 <div
@@ -64,8 +49,25 @@
64 49 </MobileLayout>
65 50 );
66 51 }
67 52
53 + if (canvasModal) {
54 + return (
55 + <>
56 + {/* The docked panel holds the page's offset, so it stays behind. */}
57 + {mode === 'docked-left' ? <SidebarLayout /> : null}
58 + <CanvasModalLayout>
59 + <div
60 + id="extendify-agent-chat"
61 + className="flex min-h-0 flex-1 grow flex-col font-sans"
62 + >
63 + {children}
64 + </div>
65 + </CanvasModalLayout>
66 + </>
67 + );
68 + }
69 +
68 70 if (mode === 'docked-left') {
69 71 return (
70 72 <SidebarLayout>
71 73 <div
@@ -73,9 +75,9 @@
73 75 className="flex min-h-0 flex-1 grow flex-col font-sans"
74 76 >
75 77 {children}
76 78 </div>
77 - {domToolEnabled && <DOMHighlighter busy={busy} />}
79 + {editModeOn && <DOMHighlighter busy={busy} working={working} />}
78 80 </SidebarLayout>
79 81 );
80 82 }
81 83
@@ -86,8 +88,8 @@
86 88 className="flex min-h-0 flex-1 grow flex-col font-sans"
87 89 >
88 90 {children}
89 91 </div>
90 - {domToolEnabled && <DOMHighlighter busy={busy} />}
92 + {editModeOn && <DOMHighlighter busy={busy} working={working} />}
91 93 </DragResizeLayout>
92 94 );
93 95 };