feat(frontend): host les fenêtres plugin et l'API publique windows.open
Ajoute la vue window host qui charge le layout plugin dans une fenêtre OS détachée, expose react/react-dom/jsx-runtime hébergés sous frontend/public/plugin-host pour que le runtime SDK y résolve React, et câble services.windows.open() côté runtime plugin (loader/services/registry). npm test -- --run src/adapters/window.test.ts src/app/ViewWindow.test.tsx src/plugins/runtime/loader.test.ts src/plugins/runtime/services.test.ts : 39/39 npm run typecheck : OK npm run build : OK Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
5
frontend/public/plugin-host/react-dom-client.js
vendored
Normal file
5
frontend/public/plugin-host/react-dom-client.js
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
const ReactDomClient = globalThis.__IDEA_PLUGIN_HOST_REACT_DOM_CLIENT__;
|
||||
|
||||
export const createRoot = ReactDomClient.createRoot;
|
||||
export const hydrateRoot = ReactDomClient.hydrateRoot;
|
||||
export const version = ReactDomClient.version;
|
||||
16
frontend/public/plugin-host/react-dom.js
vendored
Normal file
16
frontend/public/plugin-host/react-dom.js
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
const ReactDom = globalThis.__IDEA_PLUGIN_HOST_REACT_DOM__;
|
||||
|
||||
export default ReactDom;
|
||||
export const createPortal = ReactDom.createPortal;
|
||||
export const flushSync = ReactDom.flushSync;
|
||||
export const preconnect = ReactDom.preconnect;
|
||||
export const prefetchDNS = ReactDom.prefetchDNS;
|
||||
export const preinit = ReactDom.preinit;
|
||||
export const preinitModule = ReactDom.preinitModule;
|
||||
export const preload = ReactDom.preload;
|
||||
export const preloadModule = ReactDom.preloadModule;
|
||||
export const requestFormReset = ReactDom.requestFormReset;
|
||||
export const unstable_batchedUpdates = ReactDom.unstable_batchedUpdates;
|
||||
export const useFormState = ReactDom.useFormState;
|
||||
export const useFormStatus = ReactDom.useFormStatus;
|
||||
export const version = ReactDom.version;
|
||||
4
frontend/public/plugin-host/react-jsx-dev-runtime.js
vendored
Normal file
4
frontend/public/plugin-host/react-jsx-dev-runtime.js
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
const Runtime = globalThis.__IDEA_PLUGIN_HOST_REACT_JSX_DEV_RUNTIME__;
|
||||
|
||||
export const Fragment = Runtime.Fragment;
|
||||
export const jsxDEV = Runtime.jsxDEV;
|
||||
5
frontend/public/plugin-host/react-jsx-runtime.js
vendored
Normal file
5
frontend/public/plugin-host/react-jsx-runtime.js
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
const Runtime = globalThis.__IDEA_PLUGIN_HOST_REACT_JSX_RUNTIME__;
|
||||
|
||||
export const Fragment = Runtime.Fragment;
|
||||
export const jsx = Runtime.jsx;
|
||||
export const jsxs = Runtime.jsxs;
|
||||
35
frontend/public/plugin-host/react.js
vendored
Normal file
35
frontend/public/plugin-host/react.js
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
const React = globalThis.__IDEA_PLUGIN_HOST_REACT__;
|
||||
|
||||
export default React;
|
||||
export const Children = React.Children;
|
||||
export const Component = React.Component;
|
||||
export const Fragment = React.Fragment;
|
||||
export const Profiler = React.Profiler;
|
||||
export const PureComponent = React.PureComponent;
|
||||
export const StrictMode = React.StrictMode;
|
||||
export const Suspense = React.Suspense;
|
||||
export const cloneElement = React.cloneElement;
|
||||
export const createContext = React.createContext;
|
||||
export const createElement = React.createElement;
|
||||
export const createRef = React.createRef;
|
||||
export const forwardRef = React.forwardRef;
|
||||
export const isValidElement = React.isValidElement;
|
||||
export const lazy = React.lazy;
|
||||
export const memo = React.memo;
|
||||
export const startTransition = React.startTransition;
|
||||
export const useCallback = React.useCallback;
|
||||
export const useContext = React.useContext;
|
||||
export const useDebugValue = React.useDebugValue;
|
||||
export const useDeferredValue = React.useDeferredValue;
|
||||
export const useEffect = React.useEffect;
|
||||
export const useId = React.useId;
|
||||
export const useImperativeHandle = React.useImperativeHandle;
|
||||
export const useInsertionEffect = React.useInsertionEffect;
|
||||
export const useLayoutEffect = React.useLayoutEffect;
|
||||
export const useMemo = React.useMemo;
|
||||
export const useReducer = React.useReducer;
|
||||
export const useRef = React.useRef;
|
||||
export const useState = React.useState;
|
||||
export const useSyncExternalStore = React.useSyncExternalStore;
|
||||
export const useTransition = React.useTransition;
|
||||
export const version = React.version;
|
||||
Reference in New Issue
Block a user