'use client' import React, { useState, useEffect } from "react"; import { usePathname } from 'next/navigation' import s from './index.module.css' import { useEventEmitterContextContext } from '@/context/event-emitter' import classNames from '@/utils/classnames' type HeaderWrapperProps = { children: React.ReactNode } const useIframeHeader = () => { const [show, setShow] = useState(true); useEffect(() => { // 监听父级指定操作 const handler = (event: MessageEvent) => { // if (event.origin !== "https://gcgj.ngsk.tech:7001") return; if (event.data.type === "HIDDEN") setShow(() => false); }; // 初始化完成后提示iframe操作 window.parent.postMessage( { type: "HEADER", }, "*" ); window.addEventListener("message", handler); return () => window.removeEventListener("message", handler); }, []); return { show, }; }; const HeaderWrapper = ({ children, }: HeaderWrapperProps) => { const pathname = usePathname() const isBordered = ['/apps', '/datasets', '/datasets/create', '/tools'].includes(pathname) // Check if the current path is a workflow canvas & fullscreen const inWorkflowCanvas = pathname.endsWith('/workflow') const workflowCanvasMaximize = localStorage.getItem('workflow-canvas-maximize') === 'true' const [hideHeader, setHideHeader] = useState(workflowCanvasMaximize) const { eventEmitter } = useEventEmitterContextContext() const { show } = useIframeHeader(); eventEmitter?.useSubscription((v: any) => { if (v?.type === 'workflow-canvas-maximize') setHideHeader(v.payload) }) return ( <> {show ? (