💡
{
"name": "xybot-front-news",
"private": true,
"type": "module",
"scripts": {
"build": "xybot build",
"dev": "xybot dev",
"start": "react-router-serve ./build/server/index.js",
"typecheck": "react-router typegen && tsc",
"build:docker": "react-router build"
},
"dependencies": {
"@ant-design/cssinjs": "^1.24.0",
"@ant-design/icons": "^6.0.2",
"@ant-design/v5-patch-for-react-19": "^1.0.3",
"@react-router/node": "^7.7.1",
"@react-router/serve": "^7.7.1",
"@sentry/react": "8.42.0",
"@tanstack/react-query": "^5.90.1",
"@tanstack/react-query-devtools": "^5.90.1",
"@tiptap/core": "^3.4.4",
"@tiptap/extension-link": "^3.4.4",
"@tiptap/extension-placeholder": "^3.4.4",
"@tiptap/extension-text-style": "^3.4.4",
"@tiptap/pm": "^3.4.4",
"@tiptap/react": "^3.4.4",
"@tiptap/starter-kit": "^3.4.4",
"@types/classnames": "^2.3.4",
"@types/uuid": "^11.0.0",
"@xybot/bury": "0.1.5",
"@xybot/editor-extensions": "file:../../shadow-bot/xybot-front-editor-extensions/packages/editor-extensions",
"@xybot/editor-menu": "0.0.1-beta.12",
"@xybot/i18n": "0.1.3",
"antd": "^5.27.4",
"axios": "^1.6.2",
"classnames": "^2.5.1",
"dayjs": "^1.11.18",
"isbot": "^5.1.27",
"lodash.throttle": "4.1.1",
"markdown-it": "^14.1.0",
"msw": "2.4.13",
"openapi-fetch": "0.12.2",
"react": "^19.1.0",
"react-dom": "^19.1.0",
"react-router": "^7.7.1",
"ua-parser-js": "2.0.0",
"uuid": "^9.0.1",
"xhook": "1.6.2"
},
"devDependencies": {
"@ant-design/static-style-extract": "^1.0.3",
"@react-router/dev": "^7.7.1",
"@tailwindcss/vite": "^4.1.4",
"@types/node": "^20",
"@types/react": "^19.1.2",
"@types/react-dom": "^19.1.2",
"@types/xhook": "1.5.3",
"@xybot/cli": "1.5.7-beta.7",
"code-inspector-plugin": "0.5.2",
"cross-env": "^7.0.3",
"less": "^4.1.3",
"tailwindcss": "^4.1.4",
"ts-node": "^10.9.1",
"typescript": "^5.8.3",
"vite": "^6.3.3",
"vite-plugin-devtools-json": "^1.0.0",
"vite-plugin-svgr": "4.2.0",
"vite-tsconfig-paths": "^5.1.4"
}
}
2
import React, { useState, useEffect } from 'react';
import type { YDResponse } from '@/models';
import { userApi } from '@/api';
import { getUrlParams } from '@/utils';
export default () => {
const [iframeSrc, setIframeSrc] = useState('');
useEffect(() => {
getUserInfo();
}, []);
const getUserInfo = () => {
userApi.getUserInfo().then((res: YDResponse<any>) => {
if (res.code === 200) {
const access_token = getUrlParams('access_token');
const productCode = getUrlParams('productCode');
setIframeSrc(`${window.YD.DOC_URL}/${productCode}?from=boss&access_token=${access_token}`);
}
});
};
return (
<>
<iframe src={iframeSrc} frameBorder="0" style={{ width: '100%', minHeight: '100vh', display: 'block' }}></iframe>
</>
);
};
import React, { useState, useEffect } from 'react';
import type { YDResponse } from '@/models';
import { userApi } from '@/api';
import { getUrlParams } from '@/utils';
export default () => {
const [iframeSrc, setIframeSrc] = useState('');
useEffect(() => {
getUserInfo();
}, []);
const getUserInfo = () => {
userApi.getUserInfo().then((res: YDResponse<any>) => {
if (res.code === 200) {
const access_token = getUrlParams('access_token');
const productCode = getUrlParams('productCode');
setIframeSrc(`${window.YD.DOC_URL}/${productCode}?from=boss&access_token=${access_token}`);
}
});
};
return (
<>
<iframe src={iframeSrc} frameBorder="0" style={{ width: '100%', minHeight: '100vh', display: 'block' }}></ifr
