This commit is contained in:
abearxiong 2025-02-15 19:51:43 +08:00
parent 9ce6dcf2dd
commit 2a6628ad25
3 changed files with 57 additions and 6 deletions

View File

@ -17,26 +17,26 @@
"license": "MIT", "license": "MIT",
"type": "module", "type": "module",
"dependencies": { "dependencies": {
"@floating-ui/dom": "^1.6.12", "@floating-ui/dom": "^1.6.13",
"@kevisual/query": "0.0.7-alpha.3", "@kevisual/query": "0.0.7-alpha.3",
"@kevisual/system-lib": "^0.0.10", "@kevisual/system-lib": "^0.0.10",
"@kevisual/system-ui": "^0.0.3", "@kevisual/system-ui": "^0.0.3",
"dayjs": "^1.11.13", "dayjs": "^1.11.13",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"react-dom": "^19.0.0", "react-dom": "^19.0.0",
"zustand": "^5.0.2" "zustand": "^5.0.3"
}, },
"devDependencies": { "devDependencies": {
"@kevisual/router": "0.0.6-alpha-5", "@kevisual/router": "0.0.6-alpha-5",
"@kevisual/store": "0.0.1-alpha.10", "@kevisual/store": "0.0.1-alpha.10",
"@kevisual/types": "^0.0.6", "@kevisual/types": "^0.0.6",
"@types/react": "^19.0.3", "@types/react": "^19.0.8",
"@types/react-dom": "^19.0.2", "@types/react-dom": "^19.0.3",
"@vitejs/plugin-basic-ssl": "^1.2.0", "@vitejs/plugin-basic-ssl": "^1.2.0",
"@vitejs/plugin-react": "^4.3.4", "@vitejs/plugin-react": "^4.3.4",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"esbuild": "^0.24.2", "esbuild": "^0.25.0",
"react": "^19.0.0", "react": "^19.0.0",
"vite": "^6.0.7" "vite": "^6.1.0"
} }
} }

View File

@ -0,0 +1,12 @@
import type { Page } from '@kevisual/store/page';
import type { QueryRouterServer } from '@kevisual/router';
export const page = useContextKey('page', () => {
return new window.Page({
basename: '',
}) as unknown as Page;
});
export const app = useContextKey('app', () => {
console.error('app not found');
return null as unknown as QueryRouterServer;
});

View File

@ -0,0 +1,39 @@
import { page, app } from './app.ts';
export const render = ({ renderRoot }) => {
renderRoot.innerHTML = `
<h1>Hello, World!</h1>
`;
};
if (page) {
page.addPage('/app-template', 'home');
page.subscribe('home', () => {
render({
renderRoot: document.getElementById('ai-root'),
});
});
}
if (app) {
app
.route({
path: 'app-template',
key: 'render',
})
.define(async (ctx) => {
let { renderRoot } = ctx.query;
if (!renderRoot) {
ctx.throw(404, 'renderRoot is required');
}
if (typeof renderRoot === 'string') {
renderRoot = document.querySelector(renderRoot);
}
if (!renderRoot) {
ctx.throw(404, 'renderRoot not found');
}
render({
renderRoot,
});
})
.addTo(app);
}