PHP 8.2.31
Preview: Chat.jsx Size: 2.42 KB
/home/nshryvcy/radiantskinclinics.org/wp-content/plugins/extendify_old/src/Agent/Chat.jsx

import { DOMHighlighter } from '@agent/components/DOMHighlighter';
import { DragResizeLayout } from '@agent/components/layouts/DragResizeLayout';
import { MobileLayout } from '@agent/components/layouts/MobileLayout';
import { useGlobalStore } from '@agent/state/global';
import { useWorkflowStore } from '@agent/state/workflows';
import { useEffect } from '@wordpress/element';
import { SidebarLayout } from './components/layouts/SidebarLayout';

export const Chat = ({ busy, children }) => {
	const { setIsMobile, isMobile, mode } = useGlobalStore();
	const { domToolEnabled, block, setBlock, setDomToolEnabled } =
		useWorkflowStore();

	useEffect(() => {
		if (!isMobile || !block) return;
		// Remove the block if we switch to mobile
		setBlock(null);
	}, [isMobile, setIsMobile, block, setBlock]);

	useEffect(() => {
		let timeout;
		const onResize = () => {
			clearTimeout(timeout);
			timeout = window.setTimeout(() => {
				setIsMobile(window.innerWidth < 783);
			}, 10);
		};
		window.addEventListener('resize', onResize);
		return () => {
			clearTimeout(timeout);
			window.removeEventListener('resize', onResize);
		};
	}, [setIsMobile]);

	useEffect(() => {
		// Exit select mode when Escape is pressed
		const onKeyDown = (e) => {
			if (e.key !== 'Escape' || !domToolEnabled) return;

			// Cancel the workflow
			window.dispatchEvent(new CustomEvent('extendify-agent:cancel-workflow'));

			// If a block is selected, clear it
			if (block) return setBlock(null);

			// If no block is selected, exit select mode
			setDomToolEnabled(false);
		};
		window.addEventListener('keydown', onKeyDown);
		return () => {
			window.removeEventListener('keydown', onKeyDown);
		};
	}, [domToolEnabled, block, setBlock, setDomToolEnabled]);

	if (isMobile) {
		return (
			<MobileLayout>
				<div
					id="extendify-agent-chat"
					className="flex min-h-0 flex-1 grow flex-col font-sans"
				>
					{children}
				</div>
			</MobileLayout>
		);
	}

	if (mode === 'docked-left') {
		return (
			<SidebarLayout>
				<div
					id="extendify-agent-chat"
					className="flex min-h-0 flex-1 grow flex-col font-sans"
				>
					{children}
				</div>
				{domToolEnabled && <DOMHighlighter busy={busy} />}
			</SidebarLayout>
		);
	}

	return (
		<DragResizeLayout>
			<div
				id="extendify-agent-chat"
				className="flex min-h-0 flex-1 grow flex-col font-sans"
			>
				{children}
			</div>
			{domToolEnabled && <DOMHighlighter busy={busy} />}
		</DragResizeLayout>
	);
};

Directory Contents

Dirs: 6 × Files: 7

Name Size Perms Modified Actions
- drwxr-xr-x 2026-04-28 02:40:01
Edit Download
hooks DIR
- drwxr-xr-x 2026-04-28 02:40:01
Edit Download
lib DIR
- drwxr-xr-x 2026-04-28 02:40:01
Edit Download
state DIR
- drwxr-xr-x 2026-04-28 02:40:01
Edit Download
tours DIR
- drwxr-xr-x 2026-04-28 02:40:01
Edit Download
workflows DIR
- drwxr-xr-x 2026-04-28 02:40:01
Edit Download
3.80 KB lrw-r--r-- 2026-03-19 23:35:18
Edit Download
1.29 KB lrw-r--r-- 2026-03-19 23:35:18
Edit Download
17.40 KB lrw-r--r-- 2026-03-19 23:35:18
Edit Download
4.82 KB lrw-r--r-- 2026-03-05 22:57:38
Edit Download
2.29 KB lrw-r--r-- 2026-03-19 23:35:18
Edit Download
2.42 KB lrw-r--r-- 2026-03-05 22:57:38
Edit Download
6.92 KB lrw-r--r-- 2026-02-19 03:27:14
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).