From a2a609aadfbde1ecd9b8d2c1b03d8b86d1f0189b Mon Sep 17 00:00:00 2001 From: boyongjiong Date: Mon, 6 May 2024 14:20:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20update=20=E3=80=8Csites/docs=E3=80=8D?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AE=98=E6=96=B9=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pnpm-lock.yaml | 34 +++- sites/docs/.dumi/favicon.png | Bin 0 -> 32540 bytes .../enUS/components/Introduction/index.tsx | 6 +- sites/docs/.dumi/pages/enUS/index.tsx | 20 ++- .../index/components/Introduction/index.tsx | 4 +- .../pages/index/components/demo/index.less | 42 +++-- .../pages/index/components/demo/index.tsx | 94 +++++++++--- .../components/{demo-old => demo2}/index.less | 0 .../components/{demo-old => demo2}/index.tsx | 5 +- .../{demo-old => demo2}/node/colorNode.ts | 0 .../{demo-old => demo2}/node/levelNode.ts | 0 .../{demo-old => demo2}/node/outputNode.ts | 0 .../{demo-old => demo2}/node/typeNode.ts | 0 sites/docs/.dumi/pages/index/index.tsx | 54 ++----- sites/docs/.dumi/pages/index/inner.tsx | 69 +++++++++ sites/docs/.dumi/theme/plugin.ts | 24 +++ .../.dumi/theme/slots/HeaderExtra/index.tsx | 9 +- sites/docs/.dumirc.ts | 36 +++-- sites/docs/docs/api/detail/index.en-US.md | 6 + sites/docs/docs/api/detail/index.md | 6 + sites/docs/docs/api/edgeModelApi.en-US.md | 1 + sites/docs/docs/api/edgeModelApi.md | 1 + .../docs/docs/api/editConfigModelApi.en-US.md | 7 + sites/docs/docs/api/editConfigModelApi.md | 7 + sites/docs/docs/api/eventCenterApi.en-US.md | 7 + sites/docs/docs/api/eventCenterApi.md | 7 + sites/docs/docs/api/graphModelApi.en-US.md | 22 ++- sites/docs/docs/api/graphModelApi.md | 21 ++- sites/docs/docs/api/index.en-US.md | 7 + sites/docs/docs/api/index.md | 145 +++++++++--------- sites/docs/docs/api/nodeModelApi.en-US.md | 7 + sites/docs/docs/api/nodeModelApi.md | 7 + sites/docs/docs/api/themeApi.en-US.md | 8 + sites/docs/docs/api/themeApi.md | 8 + .../docs/docs/api/transformModelApi.en-US.md | 1 + sites/docs/docs/api/transformModelApi.md | 1 + sites/docs/docs/examples/index.en-US.md | 19 ++- sites/docs/docs/examples/index.md | 20 ++- sites/docs/docs/tutorial/basic-class.md | 2 +- sites/docs/docs/tutorial/basic-node.md | 8 +- .../docs/tutorial/extension-adapter.en-US.md | 4 +- sites/docs/docs/tutorial/extension-adapter.md | 4 +- .../tutorial/extension-bpmn-element.en-US.md | 4 +- .../docs/tutorial/extension-bpmn-element.md | 4 +- .../extension-component-menu.en-US.md | 6 + .../docs/tutorial/extension-component-menu.md | 7 + .../extension-component-selection.en-US.md | 6 + .../tutorial/extension-component-selection.md | 6 + ...extension-insert-node-in-polyline.en-US.md | 4 +- .../extension-insert-node-in-polyline.md | 4 +- .../docs/tutorial/getting-started.en-US.md | 4 +- sites/docs/docs/tutorial/getting-started.md | 4 +- sites/docs/docs/tutorial/index.en-US.md | 4 +- sites/docs/docs/tutorial/index.md | 4 +- sites/docs/package.json | 4 +- .../src/tutorial/basic/edge/custom/data.ts | 12 +- .../src/tutorial/basic/edge/custom/index.tsx | 3 +- .../src/tutorial/basic/edge/shapes/data.ts | 10 +- .../src/tutorial/basic/edge/shapes/index.tsx | 3 +- .../basic/edge/textPosition/index.tsx | 3 +- .../tutorial/basic/node/custom-view/index.tsx | 7 +- .../src/tutorial/basic/node/custom/index.tsx | 3 +- .../src/tutorial/basic/node/shapes/index.tsx | 3 +- .../getting-started/helloworld/index.tsx | 3 +- .../getting-started/use-plugin/index.tsx | 6 +- .../getting-started/use-react/index.tsx | 3 +- .../intermediate/edge/animation/index.tsx | 5 +- .../intermediate/node/connect/index.tsx | 3 +- .../intermediate/node/htmlNode/index.tsx | 3 +- .../intermediate/node/movable/index.tsx | 3 +- .../tutorial/intermediate/node/sql/index.tsx | 3 +- .../tutorial/intermediate/node/sql/sqlEdge.ts | 2 +- 72 files changed, 608 insertions(+), 251 deletions(-) create mode 100644 sites/docs/.dumi/favicon.png rename sites/docs/.dumi/pages/index/components/{demo-old => demo2}/index.less (100%) rename sites/docs/.dumi/pages/index/components/{demo-old => demo2}/index.tsx (97%) rename sites/docs/.dumi/pages/index/components/{demo-old => demo2}/node/colorNode.ts (100%) rename sites/docs/.dumi/pages/index/components/{demo-old => demo2}/node/levelNode.ts (100%) rename sites/docs/.dumi/pages/index/components/{demo-old => demo2}/node/outputNode.ts (100%) rename sites/docs/.dumi/pages/index/components/{demo-old => demo2}/node/typeNode.ts (100%) create mode 100644 sites/docs/.dumi/pages/index/inner.tsx create mode 100644 sites/docs/.dumi/theme/plugin.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 96790e02e8..923479193a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -472,11 +472,11 @@ importers: version: 18.2.0(react@18.2.0) devDependencies: '@logicflow/core': - specifier: workspace:* - version: link:../../packages/core + specifier: 1.2.18 + version: 1.2.18 '@logicflow/extension': - specifier: workspace:* - version: link:../../packages/extension + specifier: 1.2.19 + version: 1.2.19(ts-node@10.9.2(@swc/core@1.3.72)(@types/node@20.10.6)(typescript@5.3.3)) '@types/react': specifier: ^18.2.17 version: 18.2.46 @@ -2240,6 +2240,12 @@ packages: peerDependencies: react: '>=16.3.0' + '@logicflow/core@1.2.18': + resolution: {integrity: sha512-TjN+gPfoSBmdgTE7FL5k5jgzkNTM0EyEuZOuLfSrBeglnT+Wm2g1GOdxcXtV7zzvtAnLV5wXf5k505i9XhyxyA==} + + '@logicflow/extension@1.2.19': + resolution: {integrity: sha512-7cP5RRCyCoiy7cJThugS/z6vQzezcZdEClmb0FNjlAt9v4xyQZtuanRakGfJ/oojbO7tl5voRTzuYhmVGSmBfg==} + '@makotot/ghostui@2.0.0': resolution: {integrity: sha512-LD6OeMv+yGjpYZNjh34yDTCIE1NegqOtJq5gm4wX6op3QL7K5psTVzMjkWzseBoYj0XOD4g+UJVIZTprfoOPGg==} engines: {node: '>=10'} @@ -15315,6 +15321,26 @@ snapshots: react: 18.2.0 react-is: 16.13.1 + '@logicflow/core@1.2.18': + dependencies: + '@types/mousetrap': 1.6.15 + mousetrap: 1.6.5 + preact: 10.19.3 + + '@logicflow/extension@1.2.19(ts-node@10.9.2(@swc/core@1.3.72)(@types/node@20.10.6)(typescript@5.3.3))': + dependencies: + '@logicflow/core': 1.2.18 + jest: 27.5.1(ts-node@10.9.2(@swc/core@1.3.72)(@types/node@20.10.6)(typescript@5.3.3)) + lodash-es: 4.17.21 + preact: 10.19.3 + transitivePeerDependencies: + - bufferutil + - canvas + - node-notifier + - supports-color + - ts-node + - utf-8-validate + '@makotot/ghostui@2.0.0(react@18.2.0)': dependencies: react: 18.2.0 diff --git a/sites/docs/.dumi/favicon.png b/sites/docs/.dumi/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..200fa74086a5c3ce089cbb69e70998aaca3ea807 GIT binary patch literal 32540 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
-

Design language and development framework

-
- upporting ecology that allows you to quickly build web applications -
+

Design Process and Execution Engine

+
Supporting community to get your process built quickly
{inner.map((domItem, domIdx) => { diff --git a/sites/docs/.dumi/pages/enUS/index.tsx b/sites/docs/.dumi/pages/enUS/index.tsx index a2391fd7b3..02f6810b0f 100644 --- a/sites/docs/.dumi/pages/enUS/index.tsx +++ b/sites/docs/.dumi/pages/enUS/index.tsx @@ -1,9 +1,19 @@ import React from 'react'; import Introduction from './components/Introduction'; import Demo from '../index/components/demo'; +import MobileDemo from '../index/components/demo2/index'; import Animation from '../index/components/animation'; +import '../index/index.less'; const Homepage: React.FC = () => { + const isMobile = () => { + let flag = + /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( + navigator.userAgent, + ); + return flag; + }; + return (
@@ -18,9 +28,13 @@ const Homepage: React.FC = () => { LogicFlow -

Visualize your logic and enhance your workflow

+

+ Low-cost implementation for simpler, +
+ more efficient logic management +

- Start + Get Started Github @@ -29,7 +43,7 @@ const Homepage: React.FC = () => {
{/* 首页 demo */} - + {isMobile() ? : } {/* 介绍 */}
diff --git a/sites/docs/.dumi/pages/index/components/Introduction/index.tsx b/sites/docs/.dumi/pages/index/components/Introduction/index.tsx index fccaa9ac48..6b9cf4b85d 100644 --- a/sites/docs/.dumi/pages/index/components/Introduction/index.tsx +++ b/sites/docs/.dumi/pages/index/components/Introduction/index.tsx @@ -32,8 +32,8 @@ export default function Introduction() { return (
-

设计语言与研发框架

-
配套生态,让你快速搭建网站应用
+

设计流程与执行引擎

+
配套社区,让你快速完成流程搭建
{/* TODO: 增加 Star 数、weekly Installs 以及 License,参考 [ReactFlow](https://reactflow.dev/) 官网样式 */} diff --git a/sites/docs/.dumi/pages/index/components/demo/index.less b/sites/docs/.dumi/pages/index/components/demo/index.less index 9b9740c7a7..d7ea9d784f 100644 --- a/sites/docs/.dumi/pages/index/components/demo/index.less +++ b/sites/docs/.dumi/pages/index/components/demo/index.less @@ -8,7 +8,7 @@ margin-bottom: 90px; overflow: hidden; border-radius: 12px; - box-shadow: -5px 5px 15px #0000001a; + // box-shadow: -5px 5px 15px #0000001a; .app-content { height: 440px; @@ -21,26 +21,37 @@ font-weight: bolder; font-size: 15px; - span { + button { padding: 5px 20px; - color: #fff; + color: #3487fc; text-align: center; - background: #3487fc; + background: #fff; border: 1px solid #3487fc; border-radius: 26px; cursor: pointer; + user-select: none; } - span:last-child { + button:last-child { margin-left: 20px; - padding: 5px 15px; - color: #3487fc; - background: #fff; } - } - .run-btn > span:hover { - opacity: 0.8; + button:hover { + opacity: 0.8; + } + + button.is-disabled { + color: #c0c4cc; + border-color: #ebeef5; + cursor: not-allowed; + opacity: 1; + } + + button.active { + color: #fff; + background: #a0cfff; + border-color: #a0cfff; + } } // 元素 @@ -48,11 +59,12 @@ position: relative; width: calc(100% - 4px); height: calc(100% - 4px); - background: #fafafa; + color: #747e92; + background: #f9f9f9; // background: rgb(255 255 255 / 70%); - border-radius: 1rem; + border-radius: 8px; - box-shadow: inset 0 0 0 2px rgb(229 231 235); + box-shadow: inset 0 0 0 2px #d4d5d6; .text { width: 100%; @@ -65,7 +77,7 @@ box-sizing: inherit; width: calc(100% - 4px); height: calc(100% - 4px); - border-radius: 1rem; + border-radius: 8px; content: ''; } } diff --git a/sites/docs/.dumi/pages/index/components/demo/index.tsx b/sites/docs/.dumi/pages/index/components/demo/index.tsx index a3cd1b97fb..d512914b9d 100644 --- a/sites/docs/.dumi/pages/index/components/demo/index.tsx +++ b/sites/docs/.dumi/pages/index/components/demo/index.tsx @@ -1,6 +1,7 @@ import React from 'react'; import LogicFlow from '@logicflow/core'; -import '@logicflow/core/es/index.css'; +// import '@logicflow/core/es/index.css'; +import '@logicflow/core/dist/style/index.css'; import './index.less'; import StepNode from './node/stepNode'; @@ -95,7 +96,7 @@ const data = { targetNodeId: '2', type: 'polyline', startPoint: { - x: 140, + x: 135, y: 200, }, endPoint: { @@ -125,7 +126,7 @@ const data = { targetNodeId: '5', type: 'polyline', startPoint: { - x: 540, + x: 535, y: 100, }, endPoint: { @@ -141,7 +142,7 @@ const data = { type: 'polyline', startPoint: { x: 280, - y: 225, + y: 220, }, endPoint: { x: 420, @@ -155,7 +156,7 @@ const data = { targetNodeId: '6', type: 'polyline', startPoint: { - x: 540, + x: 535, y: 300, }, endPoint: { @@ -164,7 +165,7 @@ const data = { }, pointsList: [ { - x: 540, + x: 535, y: 300, }, { @@ -211,7 +212,7 @@ const data = { targetNodeId: '7', type: 'polyline', startPoint: { - x: 540, + x: 535, y: 300, }, endPoint: { @@ -220,7 +221,7 @@ const data = { }, pointsList: [ { - x: 540, + x: 535, y: 300, }, { @@ -246,7 +247,6 @@ const data = { ], properties: { level: 3 }, }, - { id: 'edges-8', sourceNodeId: '7', @@ -254,11 +254,11 @@ const data = { type: 'polyline', startPoint: { x: 720, - y: 365, + y: 360, }, endPoint: { x: 940, - y: 365, + y: 360, }, properties: { level: 4, @@ -268,11 +268,12 @@ const data = { }; const SilentConfig = { isSilentMode: true, - stopScrollGraph: true, - // stopMoveGraph: true, + // stopScrollGraph: true, + stopMoveGraph: 'vertical', stopZoomGraph: true, adjustNodePosition: true, allowRotation: false, + hoverOutline: false, }; const styleConfig: Partial = { style: { @@ -289,7 +290,12 @@ const styleConfig: Partial = { stroke: '#3487fc', }, polyline: { - stroke: '#d2d2d2', + stroke: '#A7AEBC', + }, + outline: { + hover: { + stroke: 'none', + }, }, }, }; @@ -297,7 +303,12 @@ const styleConfig: Partial = { export default class Example extends React.Component { private container!: HTMLDivElement; lf!: LogicFlow; - timer: NodeJS.Timer | undefined; + state = { + start: false, + isActiveLeft: false, + isActiveRight: false, + }; + isEnglish = window.location.href.includes('en'); componentDidMount() { const lf = new LogicFlow({ @@ -305,7 +316,7 @@ export default class Example extends React.Component { grid: true, ...SilentConfig, ...styleConfig, - }); + } as any); this.lf = lf; lf.register(StepNode); @@ -408,6 +419,30 @@ export default class Example extends React.Component { }); }; + handleAnimation = (type: string) => { + if (this.state.start) return; + if (type === '1') { + this.setState({ isActiveLeft: true }); + this.setState({ isActiveRight: false }); + this.edgeAnimation(); + setTimeout(() => { + this.setState({ start: false }); + this.setState({ isActiveLeft: false }); + this.setState({ isActiveRight: false }); + }, 2000); + } else { + this.setState({ isActiveLeft: false }); + this.setState({ isActiveRight: true }); + this.edgeAnimationSingle(); + setTimeout(() => { + this.setState({ start: false }); + this.setState({ isActiveLeft: false }); + this.setState({ isActiveRight: false }); + }, 5500); + } + this.setState({ start: true }); + }; + stopEdgeAnimation = () => { const lf = this.lf; const { edges, nodes } = lf.getGraphRawData(); @@ -426,20 +461,31 @@ export default class Example extends React.Component { this.container = container; }; - componentWillUnmount() { - if (this.timer) { - clearInterval(this.timer); - this.timer = undefined; - } - } + componentWillUnmount() {} render() { return (
- Run Multiple - Run Single + + {/* stop */}
diff --git a/sites/docs/.dumi/pages/index/components/demo-old/index.less b/sites/docs/.dumi/pages/index/components/demo2/index.less similarity index 100% rename from sites/docs/.dumi/pages/index/components/demo-old/index.less rename to sites/docs/.dumi/pages/index/components/demo2/index.less diff --git a/sites/docs/.dumi/pages/index/components/demo-old/index.tsx b/sites/docs/.dumi/pages/index/components/demo2/index.tsx similarity index 97% rename from sites/docs/.dumi/pages/index/components/demo-old/index.tsx rename to sites/docs/.dumi/pages/index/components/demo2/index.tsx index c891bf14a2..cf21fbe5cf 100644 --- a/sites/docs/.dumi/pages/index/components/demo-old/index.tsx +++ b/sites/docs/.dumi/pages/index/components/demo2/index.tsx @@ -1,6 +1,7 @@ import React from 'react'; import LogicFlow from '@logicflow/core'; -import '@logicflow/core/es/index.css'; +// import '@logicflow/core/es/index.css'; +import '@logicflow/core/dist/style/index.css'; import './index.less'; import ColorNode from './node/colorNode'; @@ -124,8 +125,6 @@ export default class Example extends React.Component { this.edgeAnimation(); this.handleAnimation(); - lf.translateCenter(); - lf.on( 'color:color-change,level:level-change,type:type-change', (data: any) => { diff --git a/sites/docs/.dumi/pages/index/components/demo-old/node/colorNode.ts b/sites/docs/.dumi/pages/index/components/demo2/node/colorNode.ts similarity index 100% rename from sites/docs/.dumi/pages/index/components/demo-old/node/colorNode.ts rename to sites/docs/.dumi/pages/index/components/demo2/node/colorNode.ts diff --git a/sites/docs/.dumi/pages/index/components/demo-old/node/levelNode.ts b/sites/docs/.dumi/pages/index/components/demo2/node/levelNode.ts similarity index 100% rename from sites/docs/.dumi/pages/index/components/demo-old/node/levelNode.ts rename to sites/docs/.dumi/pages/index/components/demo2/node/levelNode.ts diff --git a/sites/docs/.dumi/pages/index/components/demo-old/node/outputNode.ts b/sites/docs/.dumi/pages/index/components/demo2/node/outputNode.ts similarity index 100% rename from sites/docs/.dumi/pages/index/components/demo-old/node/outputNode.ts rename to sites/docs/.dumi/pages/index/components/demo2/node/outputNode.ts diff --git a/sites/docs/.dumi/pages/index/components/demo-old/node/typeNode.ts b/sites/docs/.dumi/pages/index/components/demo2/node/typeNode.ts similarity index 100% rename from sites/docs/.dumi/pages/index/components/demo-old/node/typeNode.ts rename to sites/docs/.dumi/pages/index/components/demo2/node/typeNode.ts diff --git a/sites/docs/.dumi/pages/index/index.tsx b/sites/docs/.dumi/pages/index/index.tsx index c2456e7911..b92d60d9ad 100644 --- a/sites/docs/.dumi/pages/index/index.tsx +++ b/sites/docs/.dumi/pages/index/index.tsx @@ -1,46 +1,20 @@ -import React from 'react'; -import Introduction from './components/Introduction'; -import ShowRoom from './components/demo/index'; -import Animation from './components/animation'; -import './index.less'; +/** + * title: LogicFlow + */ +import React, { Suspense, lazy } from 'react'; -const Homepage: React.FC = () => { - // const scrollDown = () => { - // window.scrollTo(0, 650); - // }; +const Inner = lazy(() => import('./inner')); +const Indexpage: React.FC = () => { return ( -
-
- {/* 名称 */} -
-

- - LogicFlow - -

-

可视化您的逻辑,增强您的工作流程

- - {/* */} -
- -
- {/* 首页 demo */} - - {/* 介绍 */} - -
+ Loading...
+ } + > + + ); }; -export default Homepage; +export default Indexpage; diff --git a/sites/docs/.dumi/pages/index/inner.tsx b/sites/docs/.dumi/pages/index/inner.tsx new file mode 100644 index 0000000000..8c54295d31 --- /dev/null +++ b/sites/docs/.dumi/pages/index/inner.tsx @@ -0,0 +1,69 @@ +/** + * title: LogicFlow + */ +import React, { Suspense, lazy } from 'react'; +import Introduction from './components/Introduction'; +// import Demo from './components/demo/index'; +// import MobileDemo from './components/demo2/index'; +import Animation from './components/animation'; +import './index.less'; + +const Demo = lazy(() => import('./components/demo/index')); +const MobileDemo = lazy(() => import('./components/demo2/index')); + +const Homepage: React.FC = () => { + // const scrollDown = () => { + // window.scrollTo(0, 650); + // }; + + const isMobile = () => { + let flag = + /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( + navigator.userAgent, + ); + return flag; + }; + + return ( +
+
+ {/* 名称 */} +
+

+ + LogicFlow + +

+

低成本实现,让逻辑管理更简单、更高效

+ + {/* */} +
+ +
+ {/* 首页 demo */} + {isMobile() ? ( +
}> + + + ) : ( +
}> + + + )} + {/* 介绍 */} + + + ); +}; + +export default Homepage; diff --git a/sites/docs/.dumi/theme/plugin.ts b/sites/docs/.dumi/theme/plugin.ts new file mode 100644 index 0000000000..3e3f0a5cc5 --- /dev/null +++ b/sites/docs/.dumi/theme/plugin.ts @@ -0,0 +1,24 @@ +import { IApi } from 'dumi'; + +export default (api: IApi) => { + api.addHTMLScripts( + () => ` + window.onload = function() { + const endTime = Math.ceil(new Date().getTime() / 1000); + const loadingTime = endTime - startTime; + console.log('startTime', startTime, 'endTime', endTime); + const en = window.location.href.includes("en"); + const language = en ? "en" : "zh"; + const userAgent = window.navigator.userAgent; + const platform = window.navigator.platform; + Omega.trackEvent('tech_user_info', 'tech_urser_info', { + language, + userAgent, + platform, + loadingTime, + }) + console.warn('I', language, userAgent, platform, loadingTime) + } + `, + ); +}; diff --git a/sites/docs/.dumi/theme/slots/HeaderExtra/index.tsx b/sites/docs/.dumi/theme/slots/HeaderExtra/index.tsx index e1f3f9e46d..2d986421d8 100644 --- a/sites/docs/.dumi/theme/slots/HeaderExtra/index.tsx +++ b/sites/docs/.dumi/theme/slots/HeaderExtra/index.tsx @@ -8,6 +8,8 @@ const historyVersion = { }; const HeaderExtra: FC = () => { + const isVersionPage = window.location.href.includes('release'); + const version = isVersionPage ? historyVersion.ONE : process.env.DUMI_VERSION; const isEnglish = window.location.href.includes('en-US'); const changeVersion = (e: React.ChangeEvent) => { if (e.target.value === historyVersion.ZERO) { @@ -20,15 +22,12 @@ const HeaderExtra: FC = () => { : '/release/one-point-two'; return; } - window.location.href = isEnglish ? '/en-US/tutoria' : '/tutorial'; + window.location.href = isEnglish ? '/en-US/tutorial' : '/tutorial'; }; return (
- changeVersion(e)}> diff --git a/sites/docs/.dumirc.ts b/sites/docs/.dumirc.ts index 6e71caa295..eb638960ee 100644 --- a/sites/docs/.dumirc.ts +++ b/sites/docs/.dumirc.ts @@ -8,26 +8,21 @@ export default defineConfig({ themeConfig: { name: 'LogicFlow', logo: '/logo.png', - footer: `Copyright © 2023 | Powered by LogicFlow Team`, + footer: `Copyright © 2024 | Powered by LogicFlow Team`, rtl: true, // 导航栏会展示 RTL 按钮 nprogress: true, // 切换页面时是否在页面顶部展示进度条 + // prefersColor: false, nav: { 'zh-CN': [ { title: '文档', link: '/tutorial' }, { title: 'API', link: '/api' }, - { - title: '示例', - link: 'https://site.logic-flow.cn/examples/#/gallery', - }, + { title: '示例', link: '/examples' }, { title: '文章', link: '/article/article01' }, ], 'en-US': [ { title: 'Tutorial', link: '/en-US/tutorial' }, { title: 'API', link: '/en-US/api' }, - { - title: 'Examples', - link: 'https://site.logic-flow.cn/examples/#/gallery', - }, + { title: 'Examples', link: '/en-US/examples' }, { title: 'Article', link: '/en-US/article/article01' }, ], }, @@ -42,4 +37,27 @@ export default defineConfig({ theme: { '@c-primary': '#2d71fa', }, + headScripts: [ + `var config = { + appKey: "omega32096b582a", + autoPerformance: true, + autoWhiteScreenMonitor: { + container: "body", + childrenDepth: 2, + durationSeconds: 3000, + }, + }; + var Omega = Omega || config; + var startTime = Math.ceil(new Date().getTime() / 1000); + `, + `//tracker.didistatic.com/static/tracker/latest2x/omega.min.js`, + ], + codeSplitting: { jsStrategy: 'granularChunks' }, + // chainWebpack: (config) => { + // // 打开 bundle 分析器 + // config + // .plugin('webpack-bundle-analyzer') + // .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin); + // return config; + // }, }); diff --git a/sites/docs/docs/api/detail/index.en-US.md b/sites/docs/docs/api/detail/index.en-US.md index fd5a345384..3bea73d37c 100644 --- a/sites/docs/docs/api/detail/index.en-US.md +++ b/sites/docs/docs/api/detail/index.en-US.md @@ -1,4 +1,10 @@ + + ## register Register nodes, edges. diff --git a/sites/docs/docs/api/detail/index.md b/sites/docs/docs/api/detail/index.md index 3ec65c0ff9..a396761703 100644 --- a/sites/docs/docs/api/detail/index.md +++ b/sites/docs/docs/api/detail/index.md @@ -1,4 +1,10 @@ + + ## register 注册节点、边 diff --git a/sites/docs/docs/api/edgeModelApi.en-US.md b/sites/docs/docs/api/edgeModelApi.en-US.md index e46462c599..b08998b1a5 100644 --- a/sites/docs/docs/api/edgeModelApi.en-US.md +++ b/sites/docs/docs/api/edgeModelApi.en-US.md @@ -4,6 +4,7 @@ group: title: model order: 3 title: edgeModel +toc: content order: 2 --- diff --git a/sites/docs/docs/api/edgeModelApi.md b/sites/docs/docs/api/edgeModelApi.md index fdaba03a18..23d3729d56 100644 --- a/sites/docs/docs/api/edgeModelApi.md +++ b/sites/docs/docs/api/edgeModelApi.md @@ -4,6 +4,7 @@ group: title: model order: 3 title: edgeModel +toc: content order: 2 --- diff --git a/sites/docs/docs/api/editConfigModelApi.en-US.md b/sites/docs/docs/api/editConfigModelApi.en-US.md index 4185c90367..f09eefb115 100644 --- a/sites/docs/docs/api/editConfigModelApi.en-US.md +++ b/sites/docs/docs/api/editConfigModelApi.en-US.md @@ -4,9 +4,16 @@ group: title: model order: 3 title: editConfigModel +toc: content order: 4 --- + + # editConfigModel EditConfigModel is to control the page editing status. See [set diagram edit mode](/en-US/tutorial/intermediate-silent-mode) for detailed usage diff --git a/sites/docs/docs/api/editConfigModelApi.md b/sites/docs/docs/api/editConfigModelApi.md index c81a366bba..9e62072f22 100644 --- a/sites/docs/docs/api/editConfigModelApi.md +++ b/sites/docs/docs/api/editConfigModelApi.md @@ -4,9 +4,16 @@ group: title: model order: 3 title: editConfigModel +toc: content order: 4 --- + + # editConfigModel editConfigModel是控制页面编辑状态。详细用法见[设置图编辑方式](/tutorial/intermediate-silent-mode) diff --git a/sites/docs/docs/api/eventCenterApi.en-US.md b/sites/docs/docs/api/eventCenterApi.en-US.md index beb5c146c8..424345df33 100644 --- a/sites/docs/docs/api/eventCenterApi.en-US.md +++ b/sites/docs/docs/api/eventCenterApi.en-US.md @@ -1,9 +1,16 @@ --- nav: API title: Event +toc: content order: 1 --- + + # Event LogicFlow provides an event system to inform the developer of events that occur in the current flowchart. The detailed usage of events is described in [events](/en-US/tutorial/basic-event)。 diff --git a/sites/docs/docs/api/eventCenterApi.md b/sites/docs/docs/api/eventCenterApi.md index 2cbc5143c4..513cb1fc4d 100644 --- a/sites/docs/docs/api/eventCenterApi.md +++ b/sites/docs/docs/api/eventCenterApi.md @@ -1,9 +1,16 @@ --- nav: API title: 事件 +toc: content order: 1 --- + + # 事件 LogicFlow 提供了事件系统用于告知开发者当前流程图发生的事件。事件的详细用法见[事件](/tutorial/basic-event)。 diff --git a/sites/docs/docs/api/graphModelApi.en-US.md b/sites/docs/docs/api/graphModelApi.en-US.md index a3af5c041b..7f32bff808 100644 --- a/sites/docs/docs/api/graphModelApi.en-US.md +++ b/sites/docs/docs/api/graphModelApi.en-US.md @@ -4,9 +4,17 @@ group: title: model order: 3 title: graphModel +toc: content order: 0 --- + + + # graphModel The graphModel is the `model` that corresponds to the entire canvas in LogicFlow. @@ -289,7 +297,7 @@ graphModel.graphDataToModel(graphData); return: `GraphConfigData` ```jsx | pure -cosnt graphData = graphModel.modelToGraphData(); +const graphData = graphModel.modelToGraphData(); console.log(graphData) ``` @@ -298,7 +306,7 @@ console.log(graphData) return:false | HistoryData ```jsx | pure -cosnt historyData = graphModel.modelToHistoryData(); +const historyData = graphModel.modelToHistoryData(); console.log(historyData) ``` @@ -313,7 +321,7 @@ Parameters: return: [EdgeModel](/en-US/api/edge-model-api) ```jsx | pure -cosnt edgeModel = graphModel.getEdgeModelById('edge_id'); +const edgeModel = graphModel.getEdgeModelById('edge_id'); console.log(edgeModel) ``` @@ -330,7 +338,7 @@ Parameters: return: [EdgeModel](/en-US/api/edge-model-api) or [NodeModel](/en-US/api/node-model-api) ```jsx | pure -cosnt edgeModel = graphModel.getElement('edge_id'); +const edgeModel = graphModel.getElement('edge_id'); console.log(edgeModel) ``` @@ -345,7 +353,7 @@ Parameters: return: [EdgeModel](/en-US/api/edge-model-api) ```jsx | pure -cosnt edgeModels = graphModel.getNodeEdges('node_id_1'); +const edgeModels = graphModel.getNodeEdges('node_id_1'); console.log(edgeModels) ``` @@ -358,7 +366,7 @@ Parameters: | isIgnoreCheck | boolean | true | Include or exclude edges where sourceNode and targetNode are not selected, by default. Such edges cannot be included when copying, because copying does not allow dangling edges. | ```jsx | pure -cosnt elements = graphModel.getSelectElements(true); +const elements = graphModel.getSelectElements(true); console.log(elements) ``` @@ -921,4 +929,4 @@ Parameters ```jsx | pure graphModel.fitView(); -``` \ No newline at end of file +``` diff --git a/sites/docs/docs/api/graphModelApi.md b/sites/docs/docs/api/graphModelApi.md index e79656fea8..958bbeeb28 100644 --- a/sites/docs/docs/api/graphModelApi.md +++ b/sites/docs/docs/api/graphModelApi.md @@ -4,9 +4,16 @@ group: title: model order: 3 title: graphModel +toc: content order: 0 --- + + # graphModel graphModel 是 LogicFlow 中整个画布对应的 `model`。 @@ -296,7 +303,7 @@ graphModel.graphDataToModel(graphData); 返回值: `GraphConfigData` ```jsx | pure -cosnt graphData = graphModel.modelToGraphData(); +const graphData = graphModel.modelToGraphData(); console.log(graphData) ``` @@ -307,7 +314,7 @@ console.log(graphData) 返回值:false | HistoryData ```jsx | pure -cosnt historyData = graphModel.modelToHistoryData(); +const historyData = graphModel.modelToHistoryData(); console.log(historyData) ``` @@ -324,7 +331,7 @@ console.log(historyData) 返回值: [EdgeModel](/api/edge-model-api) ```jsx | pure -cosnt edgeModel = graphModel.getEdgeModelById('edge_id'); +const edgeModel = graphModel.getEdgeModelById('edge_id'); console.log(edgeModel) ``` @@ -341,7 +348,7 @@ console.log(edgeModel) 返回值: [EdgeModel](/api/edge-model-api) 或者 [NodeModel](/api/node-model-api) ```jsx | pure -cosnt edgeModel = graphModel.getElement('edge_id'); +const edgeModel = graphModel.getElement('edge_id'); console.log(edgeModel) ``` @@ -358,7 +365,7 @@ console.log(edgeModel) 返回值: [EdgeModel](/api/edge-model-api) ```jsx | pure -cosnt edgeModels = graphModel.getNodeEdges('node_id_1'); +const edgeModels = graphModel.getNodeEdges('node_id_1'); console.log(edgeModels) ``` @@ -373,7 +380,7 @@ console.log(edgeModels) | isIgnoreCheck | boolean | true | 是否包括 sourceNode 和 targetNode 没有被选中的边,默认包括。 复制的时候不能包括此类边, 因为复制的时候不允许悬空的边 | ```jsx | pure -cosnt elements = graphModel.getSelectElements(true); +const elements = graphModel.getSelectElements(true); console.log(elements) ``` @@ -988,4 +995,4 @@ graphModel.translateCenter(); ```jsx | pure graphModel.fitView(); -``` \ No newline at end of file +``` diff --git a/sites/docs/docs/api/index.en-US.md b/sites/docs/docs/api/index.en-US.md index 850fc0d94b..d14208627b 100644 --- a/sites/docs/docs/api/index.en-US.md +++ b/sites/docs/docs/api/index.en-US.md @@ -1,9 +1,16 @@ --- nav: API title: LogicFlow +toc: content order: 0 --- + + # LogicFlow Usage diff --git a/sites/docs/docs/api/index.md b/sites/docs/docs/api/index.md index f51bb1ce92..9e9f7b6c42 100644 --- a/sites/docs/docs/api/index.md +++ b/sites/docs/docs/api/index.md @@ -1,13 +1,20 @@ --- nav: API title: LogicFlow +toc: content order: 0 --- + + # LogicFlow 使用方式 -```tsx | pure +```jsx | pure // create container
; @@ -56,73 +63,73 @@ lf.render(data); `LogicFlow`配置项: [constructor](detail/constructor) ## 方法 -| 选项 | 描述 | +| 选项 | 描述 | |:--------------------------------------------------|------------------------------------------------------------| -| [register](detail#register) | 注册节点、边。 | -| [batchRegister](detail#batchregister) | 批量注册。 | -| [render](detail#render) | 渲染图数据。 | -| [renderRawData](detail#renderrawdata) | 渲染图原始数据,在使用`adapter`后,还想渲染 logicflow 格式的数据。 | -| [setTheme](api/theme-api) | 设置主题。 | -| [changeNodeType](detail#changenodetype) | 修改节点类型。 | -| [getNodeEdges](detail#getnodeedges) | 获取节点连接的所有边的`model`。 | -| [addNode](detail#addnode) | 在图上添加节点。 | -| [deleteNode](detail#deletenode) | 删除图上的节点, 如果这个节点上有连接线,则同时删除线。 | -| [cloneNode](detail#clonenode) | 克隆节点。 | -| [changeNodeId](detail#changenodeid) | 修改节点的`id`, 如果不传新的`id`,会内部自动创建一个。 | -| [getNodeModelById](detail#getnodemodelbyid) | 获取节点的`model`。 | -| [getNodeDataById](detail#getnodedatabyid) | 获取节点的`model`数据。 | -| [getNodeIncomingNode](detail#getnodeincomingnode) | 获取节点所有的上一级节点。 | -| [getNodeOutgoingNode](detail#getnodeoutgoingnode) | 获取节点所有的下一级节点。 | -| [getNodeIncomingEdge](detail#getnodeincomingedge) | 获取所有以此节点为终点的边。 | -| [getNodeOutgoingEdge](detail#getnodeoutgoingedge) | 获取所有以此节点为起点的边。 | -| [addEdge](detail#addedge) | 创建连接两个节点的边。 | -| [deleteEdge](detail#deleteedge) | 基于边`id`删除边。 | -| [deleteEdgeByNodeId](detail#deleteedgebynodeid) | 删除与指定节点相连的边, 基于边起点和终点。 | -| [getEdgeModelById](detail#getedgemodelbyid) | 基于边 `id` 获取边的`model`。 | -| [getEdgeModels](detail#getedgemodels) | 获取满足条件边的`model`。 | -| [changeEdgeId](detail#changeedgeid) | 修改边的 `id`, 如果不传新的 `id`,会内部自动创建一个。 | -| [changeEdgeType](detail#changeedgetype) | 切换边的类型。 | -| [getEdgeDataById](detail#getedgedatabyid) | 通过`id`获取边的数据。 | -| [setDefaultEdgeType](detail#setdefaultedgetype) | 设置边的类型, 也就是设置在节点直接由用户手动绘制的连线类型。 | -| editText | 同[graphModel.editText](api/graph-model-api#edittext)。 | -| [updateText](detail#updatetext) | 更新节点或者边的文案。 | -| [deleteElement](detail#deleteelement) | 删除元素。 | -| [selectElementById](detail#selectelementbyid) | 将图形选中。 | -| [getGraphData](detail#getgraphdata) | 获取流程绘图数据。 | +| [register](detail#register) | 注册节点、边。 | +| [batchRegister](detail#batchregister) | 批量注册。 | +| [render](detail#render) | 渲染图数据。 | +| [renderRawData](detail#renderrawdata) | 渲染图原始数据,在使用`adapter`后,还想渲染 logicflow 格式的数据。 | +| [setTheme](api/theme-api) | 设置主题。 | +| [changeNodeType](detail#changenodetype) | 修改节点类型。 | +| [getNodeEdges](detail#getnodeedges) | 获取节点连接的所有边的`model`。 | +| [addNode](detail#addnode) | 在图上添加节点。 | +| [deleteNode](detail#deletenode) | 删除图上的节点, 如果这个节点上有连接线,则同时删除线。 | +| [cloneNode](detail#clonenode) | 克隆节点。 | +| [changeNodeId](detail#changenodeid) | 修改节点的`id`, 如果不传新的`id`,会内部自动创建一个。 | +| [getNodeModelById](detail#getnodemodelbyid) | 获取节点的`model`。| +| [getNodeDataById](detail#getnodedatabyid) | 获取节点的`model`数据。| +| [getNodeIncomingNode](detail#getnodeincomingnode) | 获取节点所有的上一级节点。| +| [getNodeOutgoingNode](detail#getnodeoutgoingnode) | 获取节点所有的下一级节点。| +| [getNodeIncomingEdge](detail#getnodeincomingedge) | 获取所有以此节点为终点的边。 | +| [getNodeOutgoingEdge](detail#getnodeoutgoingedge) | 获取所有以此节点为起点的边。 | +| [addEdge](detail#addedge) | 创建连接两个节点的边。 | +| [deleteEdge](detail#deleteedge) | 基于边`id`删除边。 | +| [deleteEdgeByNodeId](detail#deleteedgebynodeid) | 删除与指定节点相连的边, 基于边起点和终点。 | +| [getEdgeModelById](detail#getedgemodelbyid) | 基于边 `id` 获取边的`model`。 | +| [getEdgeModels](detail#getedgemodels) | 获取满足条件边的`model`。 | +| [changeEdgeId](detail#changeedgeid) | 修改边的 `id`, 如果不传新的 `id`,会内部自动创建一个。 | +| [changeEdgeType](detail#changeedgetype) | 切换边的类型。 | +| [getEdgeDataById](detail#getedgedatabyid) | 通过`id`获取边的数据。| +| [setDefaultEdgeType](detail#setdefaultedgetype) | 设置边的类型, 也就是设置在节点直接由用户手动绘制的连线类型。| +| editText | 同[graphModel.editText](api/graph-model-api#edittext)。 | +| [updateText](detail#updatetext) | 更新节点或者边的文案。 | +| [deleteElement](detail#deleteelement) | 删除元素。 | +| [selectElementById](detail#selectelementbyid) | 将图形选中。 | +| [getGraphData](detail#getgraphdata) | 获取流程绘图数据。 | | [getGraphRawData](detail#getgraphrawdata) | 获取流程绘图原始数据, 与 `getGraphData` 区别是该方法获取的数据不会受到 `adapter` 影响。 | -| [setProperties](detail#setproperties) | 设置节点或者边的自定义属性。 | -| [deleteProperty](detail#deleteproperty) | 删除节点属性。 | -| [getProperties](detail#getproperties) | 获取节点或者边的自定义属性。 | -| [updateAttributes](detail#updateattributes) | 修改对应元素 `model` 中的属性。 | -| [toFront](detail#tofront) | 将某个元素放置到顶部。 | -| [setElementZIndex](detail#setelementzindex) | 设置元素的 `zIndex`。 | -| [addElements](detail#addelements) | 批量添加节点和边。 | -| [getAreaElement](detail#getareaelement) | 获取指定区域内的所有元素(此区域必须是 DOM 层)。 | -| [getSelectElements](detail#getselectelements) | 获取选中的所有元素。 | -| [clearSelectElements](detail#clearselectelements) | 取消所有元素的选中状态。 | -| [getModelById](detail#getmodelbyid) | 基于节点或边 `id` 获取其 `model`。 | -| [getDataById](detail#getdatabyid) | 基于节点或边 `id` 获取其 `data`。 | -| [clearData](detail#cleardata) | 清空画布。 | -| [updateEditConfig](detail#updateeditconfig) | 更新流程编辑基本配置。 | -| [getEditConfig](detail#geteditconfig) | 获取流程编辑基本配置。 | -| [getPointByClient](detail#getpointbyclient) | 获取事件位置相对于画布左上角的坐标。 | -| [focusOn](detail#focuson) | 定位到画布视口中心。 | -| [resize](detail#resize) | 调整画布宽高, 如果`width` 或者`height`不传会自动计算画布宽高。 | -| [zoom](detail#zoom) | 放大缩小画布。 | -| [resetZoom](detail#resetzoom) | 重置图形的缩放比例为默认,默认是 1。 | -| [setZoomMiniSize](detail#setzoomminisize) | 设置图形缩小时,能缩放到的最小倍数。参数一般为 0-1 之间,默认 0.2。 | -| [setZoomMaxSize](detail#setzoommaxsize) | 设置图形放大时,能放大到的最大倍数,默认 16。 | -| [getTransform](detail#gettransform) | 获取当前画布的放大缩小值。 | -| [translate](detail#translate) | 平移图。 | -| [translateCenter](detail#translatecenter) | 图形画布居中显示。 | -| [resetTranslate](detail#resettranslate) | 还原图形为初始位置。 | -| [fitView](detail#fitview) | 将整个流程图缩小到画布能全部显示。 | -| [openEdgeAnimation](detail#openedgeanimation) | 开启边的动画。 | -| [closeEdgeAnimation](detail#closeedgeanimation) | 关闭边的动画。 | -| [on](detail#on) | 图的监听事件,更多事件请查看[事件](api/event-center-api)。 | -| [off](detail#off) | 删除事件监听。 | -| [once](detail#once) | 事件监听一次。 | -| [emit](detail#emit) | 触发事件。 | -| [undo](detail#undo) | 历史记录操作-返回上一步。 | -| [redo](detail#redo) | 历史记录操作-恢复下一步。 | -| +| [setProperties](detail#setproperties) | 设置节点或者边的自定义属性。 | +| [deleteProperty](detail#deleteproperty) | 删除节点属性。 | +| [getProperties](detail#getproperties) | 获取节点或者边的自定义属性。 | +| [updateAttributes](detail#updateattributes) | 修改对应元素 `model` 中的属性。 | +| [toFront](detail#tofront) | 将某个元素放置到顶部。 | +| [setElementZIndex](detail#setelementzindex) | 设置元素的 `zIndex`。| +| [addElements](detail#addelements) | 批量添加节点和边。 | +| [getAreaElement](detail#getareaelement) | 获取指定区域内的所有元素(此区域必须是 DOM 层)。 | +| [getSelectElements](detail#getselectelements) | 获取选中的所有元素。 | +| [clearSelectElements](detail#clearselectelements) | 取消所有元素的选中状态。 | +| [getModelById](detail#getmodelbyid) | 基于节点或边 `id` 获取其 `model`。 | +| [getDataById](detail#getdatabyid) | 基于节点或边 `id` 获取其 `data`。 | +| [clearData](detail#cleardata) | 清空画布。 | +| [updateEditConfig](detail#updateeditconfig) | 更新流程编辑基本配置。 | +| [getEditConfig](detail#geteditconfig) | 获取流程编辑基本配置。 | +| [getPointByClient](detail#getpointbyclient) | 获取事件位置相对于画布左上角的坐标。 | +| [focusOn](detail#focuson) | 定位到画布视口中心。 | +| [resize](detail#resize) | 调整画布宽高, 如果`width` 或者`height`不传会自动计算画布宽高。 | +| [zoom](detail#zoom) | 放大缩小画布。 | +| [resetZoom](detail#resetzoom) | 重置图形的缩放比例为默认,默认是 1。 | +| [setZoomMiniSize](detail#setzoomminisize) | 设置图形缩小时,能缩放到的最小倍数。参数一般为 0-1 之间,默认 0.2。 | +| [setZoomMaxSize](detail#setzoommaxsize) | 设置图形放大时,能放大到的最大倍数,默认 16。 | +| [getTransform](detail#gettransform) | 获取当前画布的放大缩小值。| +| [translate](detail#translate) | 平移图。 | +| [translateCenter](detail#translatecenter) | 图形画布居中显示。 | +| [resetTranslate](detail#resettranslate) | 还原图形为初始位置。 | +| [fitView](detail#fitview) | 将整个流程图缩小到画布能全部显示。 | +| [openEdgeAnimation](detail#openedgeanimation) | 开启边的动画。 | +| [closeEdgeAnimation](detail#closeedgeanimation) | 关闭边的动画。 | +| [on](detail#on) | 图的监听事件,更多事件请查看[事件](api/event-center-api)。 | +| [off](detail#off) | 删除事件监听。 | +| [once](detail#once) | 事件监听一次。 | +| [emit](detail#emit) | 触发事件。 | +| [undo](detail#undo) | 历史记录操作-返回上一步。| +| [redo](detail#redo) | 历史记录操作-恢复下一步。| + diff --git a/sites/docs/docs/api/nodeModelApi.en-US.md b/sites/docs/docs/api/nodeModelApi.en-US.md index 52b0491220..7a4b896549 100644 --- a/sites/docs/docs/api/nodeModelApi.en-US.md +++ b/sites/docs/docs/api/nodeModelApi.en-US.md @@ -4,9 +4,16 @@ group: title: model order: 3 title: nodeModel +toc: content order: 1 --- + + # nodeModel All nodes in LogicFlow have a nodeModel associated with them. Due to the data-driven view mechanism, all operations on a node are in fact operations on the model. In most cases, it is not recommended to assign values to the properties of the nodeModel directly, but rather to call the methods provided on the model or [graphModel](graph-model-api). diff --git a/sites/docs/docs/api/nodeModelApi.md b/sites/docs/docs/api/nodeModelApi.md index 0416a5ac7d..aa1dd90d8d 100644 --- a/sites/docs/docs/api/nodeModelApi.md +++ b/sites/docs/docs/api/nodeModelApi.md @@ -4,9 +4,16 @@ group: title: model order: 3 title: nodeModel +toc: content order: 1 --- + + # nodeModel LogicFlow 中所有的节点都会有一个 nodeModel 与其对应。由于数据驱动视图的机制,我们对节点的所有操作事实上就是对 model 的操作。大多数情况下,我们不建议直接对 nodeModel 的属性进行赋值操作,而是调用 model 或者 [graphModel](graph-model-api) 上提供的方法。 diff --git a/sites/docs/docs/api/themeApi.en-US.md b/sites/docs/docs/api/themeApi.en-US.md index fb18c48a7b..fe02c1d062 100644 --- a/sites/docs/docs/api/themeApi.en-US.md +++ b/sites/docs/docs/api/themeApi.en-US.md @@ -1,8 +1,16 @@ --- nav: API title: Theme +toc: content order: 2 --- + + + # Theme Themes allow you to set the appearance of LogicFlow base graphics in a uniform way. Its properties are consistent with [svg properties](https://developer.mozilla.org/zh-CN/docs/Web/SVG/Attribute) diff --git a/sites/docs/docs/api/themeApi.md b/sites/docs/docs/api/themeApi.md index ae32d75f6a..8a05b122c7 100644 --- a/sites/docs/docs/api/themeApi.md +++ b/sites/docs/docs/api/themeApi.md @@ -1,8 +1,16 @@ --- nav: API title: 主题 +toc: content order: 2 --- + + + # 主题 主题可以对 LogicFlow 基础图形的外观进行统一设置。其属性与[svg 属性](https://developer.mozilla.org/zh-CN/docs/Web/SVG/Attribute)保持一致。 diff --git a/sites/docs/docs/api/transformModelApi.en-US.md b/sites/docs/docs/api/transformModelApi.en-US.md index 581878cd53..9b43faff1e 100644 --- a/sites/docs/docs/api/transformModelApi.en-US.md +++ b/sites/docs/docs/api/transformModelApi.en-US.md @@ -4,6 +4,7 @@ group: title: model order: 3 title: transformModel +toc: content order: 3 --- diff --git a/sites/docs/docs/api/transformModelApi.md b/sites/docs/docs/api/transformModelApi.md index 47606495d6..b1028dac1c 100644 --- a/sites/docs/docs/api/transformModelApi.md +++ b/sites/docs/docs/api/transformModelApi.md @@ -4,6 +4,7 @@ group: title: model order: 3 title: transformModel +toc: content order: 3 --- diff --git a/sites/docs/docs/examples/index.en-US.md b/sites/docs/docs/examples/index.en-US.md index a1d71216d1..99010a0ac6 100644 --- a/sites/docs/docs/examples/index.en-US.md +++ b/sites/docs/docs/examples/index.en-US.md @@ -1 +1,18 @@ -This is a example. + + + + + \ No newline at end of file diff --git a/sites/docs/docs/examples/index.md b/sites/docs/docs/examples/index.md index 1b88c7e851..ab1b96baa1 100644 --- a/sites/docs/docs/examples/index.md +++ b/sites/docs/docs/examples/index.md @@ -1 +1,19 @@ -这是 example. +--- +nav: 示例 +title: 案例 +order: 0 +--- + + + + \ No newline at end of file diff --git a/sites/docs/docs/tutorial/basic-class.md b/sites/docs/docs/tutorial/basic-class.md index d3329185c0..c190188e9c 100644 --- a/sites/docs/docs/tutorial/basic-class.md +++ b/sites/docs/docs/tutorial/basic-class.md @@ -84,7 +84,7 @@ const graphData = { - `properties`是用来做什么的? - `properties`的LogicFlow保留给具体业务场景使用的数据。 + `properties`是LogicFlow保留给具体业务场景使用的数据。 例如:在审批流场景,我们定义某个节点,这个节点通过了,节点为绿色,不通过节点为红色。那么节点的数据描述可以为: ```jsx | pure { diff --git a/sites/docs/docs/tutorial/basic-node.md b/sites/docs/docs/tutorial/basic-node.md index 5610555003..f63b9bc456 100644 --- a/sites/docs/docs/tutorial/basic-node.md +++ b/sites/docs/docs/tutorial/basic-node.md @@ -9,7 +9,7 @@ order: 1 # 节点 Node -LogicFlow 的内置了一些基础节点,开发者在实际应用场景中,可以基于这些基础节点,定义符合自己业务逻辑的节点。 +LogicFlow 内置了一些基础节点,开发者在实际应用场景中,可以基于这些基础节点,定义符合自己业务逻辑的节点。 ## 认识基础节点 @@ -18,10 +18,10 @@ LogicFlow是基于svg做的流程图编辑框架,所以我们的节点和连 1. 矩形 --- [rect](https://developer.mozilla.org/zh-CN/docs/Web/SVG/Element/rect) 1. 圆形 --- [circle](https://developer.mozilla.org/zh-CN/docs/Web/SVG/Element/circle) 1. 椭圆 --- [ellipse](https://developer.mozilla.org/zh-CN/docs/Web/SVG/Element/ellipse) -1. 多边形 - [polygon](https://developer.mozilla.org/zh-CN/docs/Web/SVG/Element/polygon) -1. 菱形 -- `diamond` +1. 多边形 --- [polygon](https://developer.mozilla.org/zh-CN/docs/Web/SVG/Element/polygon) +1. 菱形 --- `diamond` 1. 文本 --- [text](https://developer.mozilla.org/zh-CN/docs/Web/SVG/Element/text) -1. HTML -- `html` +1. HTML --- `html` diff --git a/sites/docs/docs/tutorial/extension-adapter.en-US.md b/sites/docs/docs/tutorial/extension-adapter.en-US.md index 4eb2c07989..92f16e7438 100644 --- a/sites/docs/docs/tutorial/extension-adapter.en-US.md +++ b/sites/docs/docs/tutorial/extension-adapter.en-US.md @@ -115,8 +115,8 @@ lf.getGraphData(); ### Example of conversion results -TODO - Go to CodeSandbox for examples + + Go to CodeSandbox for examples ## New BPMNAdapter ### what's the difference? diff --git a/sites/docs/docs/tutorial/extension-adapter.md b/sites/docs/docs/tutorial/extension-adapter.md index cfe29c100a..8fc0a08c25 100644 --- a/sites/docs/docs/tutorial/extension-adapter.md +++ b/sites/docs/docs/tutorial/extension-adapter.md @@ -116,8 +116,8 @@ lf.getGraphData(); ### 转换结果示例 -TODO - 去 CodeSandbox 查看示例 + + 去 CodeSandbox 查看示例 ## 新的BPMNAdapter ### what's the difference? diff --git a/sites/docs/docs/tutorial/extension-bpmn-element.en-US.md b/sites/docs/docs/tutorial/extension-bpmn-element.en-US.md index 3d17ecadd9..c9c5bb0e37 100644 --- a/sites/docs/docs/tutorial/extension-bpmn-element.en-US.md +++ b/sites/docs/docs/tutorial/extension-bpmn-element.en-US.md @@ -28,8 +28,8 @@ In real projects, we recommend developers to fully customize the project's nodes LogicFlow.use(BpmnAdapter); ``` -TODO - Go to CodeSandbox for examples + + Go to CodeSandbox for examples ## Conversion to XML diff --git a/sites/docs/docs/tutorial/extension-bpmn-element.md b/sites/docs/docs/tutorial/extension-bpmn-element.md index 77ff925f8c..c07d532abd 100644 --- a/sites/docs/docs/tutorial/extension-bpmn-element.md +++ b/sites/docs/docs/tutorial/extension-bpmn-element.md @@ -28,8 +28,8 @@ LogicFlow 提供了[自定义节点](basic-node)和[自定义边](basic-edge), LogicFlow.use(BpmnAdapter); ``` -TODO - 去 CodeSandbox 查看示例 + + 去 CodeSandbox 查看示例 ## 转换为 XML diff --git a/sites/docs/docs/tutorial/extension-component-menu.en-US.md b/sites/docs/docs/tutorial/extension-component-menu.en-US.md index 611b4c6815..83602effaa 100644 --- a/sites/docs/docs/tutorial/extension-component-menu.en-US.md +++ b/sites/docs/docs/tutorial/extension-component-menu.en-US.md @@ -7,6 +7,12 @@ title: Menu order: 1 --- + + # Menu > Menu refers to the right-click menu diff --git a/sites/docs/docs/tutorial/extension-component-menu.md b/sites/docs/docs/tutorial/extension-component-menu.md index 3a206a8366..70d10fedb3 100644 --- a/sites/docs/docs/tutorial/extension-component-menu.md +++ b/sites/docs/docs/tutorial/extension-component-menu.md @@ -7,6 +7,13 @@ title: 菜单 Menu order: 1 --- + + + # 菜单 Menu > 菜单指的是右键菜单 diff --git a/sites/docs/docs/tutorial/extension-component-selection.en-US.md b/sites/docs/docs/tutorial/extension-component-selection.en-US.md index bb0ff7ff92..c7637da044 100644 --- a/sites/docs/docs/tutorial/extension-component-selection.en-US.md +++ b/sites/docs/docs/tutorial/extension-component-selection.en-US.md @@ -7,6 +7,12 @@ title: SelectionSelect order: 5 --- + + # SelectionSelect ```jsx | purex | pure diff --git a/sites/docs/docs/tutorial/extension-component-selection.md b/sites/docs/docs/tutorial/extension-component-selection.md index 4bd7ad4c7b..c9881a26f8 100644 --- a/sites/docs/docs/tutorial/extension-component-selection.md +++ b/sites/docs/docs/tutorial/extension-component-selection.md @@ -7,6 +7,12 @@ title: 框选 SelectionSelect order: 5 --- + + # 框选 SelectionSelect ```jsx | purex | pure diff --git a/sites/docs/docs/tutorial/extension-insert-node-in-polyline.en-US.md b/sites/docs/docs/tutorial/extension-insert-node-in-polyline.en-US.md index 9b061c16e8..a14dffc312 100644 --- a/sites/docs/docs/tutorial/extension-insert-node-in-polyline.en-US.md +++ b/sites/docs/docs/tutorial/extension-insert-node-in-polyline.en-US.md @@ -14,8 +14,8 @@ order: 9 Drag a node to the center of an edge, it will automatically become the point in the center of the edge. Example: There is a line E from node A to node B, drag a node N to the line E, release the mouse when the center of node N is exactly on the path of the line E, then node N becomes the middle node between A and B, the original edge E is deleted, and two new lines are generated, respectively A to N and N to B. The examples are as follows. -TODO - Go to CodeSandbox for examples + + Go to CodeSandbox for examples ## Support diff --git a/sites/docs/docs/tutorial/extension-insert-node-in-polyline.md b/sites/docs/docs/tutorial/extension-insert-node-in-polyline.md index cfd6f24d7f..b919ee7832 100644 --- a/sites/docs/docs/tutorial/extension-insert-node-in-polyline.md +++ b/sites/docs/docs/tutorial/extension-insert-node-in-polyline.md @@ -14,8 +14,8 @@ order: 9 拖动节点到边中间,自动成为边中间的点。 举例:存在一条节点 A 到节点 B 的折线 E,拖拽一个节点 N 到折线 E 上,当节点 N 的中心点恰好在折线 E 的路径上时松开鼠标,这时节点 N 就成为 A 与 B 的中间节点,原来的边 E 被删除,生成两条新的折线,分别是 A 到 N,N 到 B。示例如下。 -TODO - 去 CodeSandbox 查看示例 + + 去 CodeSandbox 查看示例 ## 支持 diff --git a/sites/docs/docs/tutorial/getting-started.en-US.md b/sites/docs/docs/tutorial/getting-started.en-US.md index 9d0b65ce76..00923a763b 100644 --- a/sites/docs/docs/tutorial/getting-started.en-US.md +++ b/sites/docs/docs/tutorial/getting-started.en-US.md @@ -34,7 +34,7 @@ $ yarn add @logicflow/core Since LogicFlow itself will have some preset styles, you need to bring in js, but also css. - TODO - 需要核对路径 + ```html @@ -178,5 +178,5 @@ lf.adapterOut = function (logicFlowData) { The custom data conversion tool essentially takes the data passed in by the user and converts it to a format that LogicFlow recognizes via an `lf.adapterIn` method. Then when generating the data, the `lf.adapterOut` method converts the data from LogicFlow to the data passed in by the user. So to customize the data conversion tool we just need to override these two methods again. -That's it for our demo demo, to continue learning about some of X6's capabilities, +That's it for our demo demo, to continue learning about some of Logicflow's capabilities, you can start reading from [Basic Tutorial](basic-class). \ No newline at end of file diff --git a/sites/docs/docs/tutorial/getting-started.md b/sites/docs/docs/tutorial/getting-started.md index 16e3ba64e9..11d175911c 100644 --- a/sites/docs/docs/tutorial/getting-started.md +++ b/sites/docs/docs/tutorial/getting-started.md @@ -34,7 +34,7 @@ $ yarn add @logicflow/core 由于LogicFlow本身会有一些预置样式,所以除了需要引入js, 还需要引入css。 - TODO - 需要核对路径 + ```html @@ -178,5 +178,5 @@ lf.adapterOut = function (logicFlowData) { 自定义数据转换工具本质上是将用户传入的数据,通过一个`lf.adapterIn`方法,将其转换为 LogicFlow 可以识别的格式。然后在生成数据的时候,又通过`lf.adapterOut`方法将 LogicFlow 的数据转换为用户传入的数据。所以自定义数据转换工具我们只需要重新覆盖这两个方法即可。 -我们的演示 demo 就到这里了,想继续了解 X6 的一些能力,可以从[基础教程](basic-class)开始阅读。 +我们的演示 demo 就到这里了,想继续了解 Logicflow 的一些能力,可以从[基础教程](basic-class)开始阅读。 diff --git a/sites/docs/docs/tutorial/index.en-US.md b/sites/docs/docs/tutorial/index.en-US.md index b5bc1dc666..e9bb0cee6d 100644 --- a/sites/docs/docs/tutorial/index.en-US.md +++ b/sites/docs/docs/tutorial/index.en-US.md @@ -35,6 +35,6 @@ If you have any questions, suggestions, feedback, or willingness to communicate, ### Bugs If you're having trouble with something, start by checking out [issues](https://github.com/didi/LogicFlow/issues) to see if there are any similar bugs or suggestions. Before you report a bug, make sure you've searched for existing issues and read our [FAQ](https://github.com/didi/LogicFlow/discussions). -### Code of Conduct + diff --git a/sites/docs/docs/tutorial/index.md b/sites/docs/docs/tutorial/index.md index 222f2b4303..a60fb77496 100644 --- a/sites/docs/docs/tutorial/index.md +++ b/sites/docs/docs/tutorial/index.md @@ -36,6 +36,6 @@ LogicFlow 是一款流程图编辑框架,提供了一系列流程图交互、 如果您在使用的过程中碰到问题,可以先通过 [issues](https://github.com/didi/LogicFlow/issues) 看看有没有类似的 bug 或者建议。在你报告一个 bug 之前,请先确保已经搜索过已有的 issue 和阅读了我们的[常见问题](https://github.com/didi/LogicFlow/discussions)。 -### 行为准则 + diff --git a/sites/docs/package.json b/sites/docs/package.json index 5036e1cee2..c2d14bf2b9 100644 --- a/sites/docs/package.json +++ b/sites/docs/package.json @@ -16,8 +16,8 @@ "react-dom": ">=16.8" }, "devDependencies": { - "@logicflow/core": "workspace:*", - "@logicflow/extension": "workspace:*", + "@logicflow/core": "1.2.18", + "@logicflow/extension": "1.2.19", "@types/react": "^18.2.17", "@types/react-copy-to-clipboard": "^5.0.4", "dumi": "2.2.13", diff --git a/sites/docs/src/tutorial/basic/edge/custom/data.ts b/sites/docs/src/tutorial/basic/edge/custom/data.ts index 10ea49b96e..7344c37e2e 100644 --- a/sites/docs/src/tutorial/basic/edge/custom/data.ts +++ b/sites/docs/src/tutorial/basic/edge/custom/data.ts @@ -63,12 +63,12 @@ const data = { targetNodeId: '4', type: 'line', }, - // Todo - // { - // sourceNodeId: "3", - // targetNodeId: "5", - // type: "bezier" - // } + // TODO + { + sourceNodeId: '3', + targetNodeId: '5', + type: 'bezier', + }, ], }; diff --git a/sites/docs/src/tutorial/basic/edge/custom/index.tsx b/sites/docs/src/tutorial/basic/edge/custom/index.tsx index 799d111700..b3d849494b 100644 --- a/sites/docs/src/tutorial/basic/edge/custom/index.tsx +++ b/sites/docs/src/tutorial/basic/edge/custom/index.tsx @@ -1,6 +1,7 @@ import React from 'react'; import LogicFlow from '@logicflow/core'; -import '@logicflow/core/es/index.css'; +// import '@logicflow/core/es/index.css'; +import '@logicflow/core/dist/style/index.css'; import sequence from './sequence'; import data from './data'; diff --git a/sites/docs/src/tutorial/basic/edge/shapes/data.ts b/sites/docs/src/tutorial/basic/edge/shapes/data.ts index 814c893e7c..d3222c525a 100644 --- a/sites/docs/src/tutorial/basic/edge/shapes/data.ts +++ b/sites/docs/src/tutorial/basic/edge/shapes/data.ts @@ -49,11 +49,11 @@ const data = { type: 'line', }, // TODO - // { - // sourceNodeId: '2', - // targetNodeId: '4', - // type: 'bezier', - // }, + { + sourceNodeId: '2', + targetNodeId: '4', + type: 'bezier', + }, ], }; diff --git a/sites/docs/src/tutorial/basic/edge/shapes/index.tsx b/sites/docs/src/tutorial/basic/edge/shapes/index.tsx index e03080ce77..4e28823773 100644 --- a/sites/docs/src/tutorial/basic/edge/shapes/index.tsx +++ b/sites/docs/src/tutorial/basic/edge/shapes/index.tsx @@ -1,6 +1,7 @@ import React from 'react'; import LogicFlow from '@logicflow/core'; -import '@logicflow/core/es/index.css'; +// import '@logicflow/core/es/index.css'; +import '@logicflow/core/dist/style/index.css'; import data from './data'; import '../../../index.less'; diff --git a/sites/docs/src/tutorial/basic/edge/textPosition/index.tsx b/sites/docs/src/tutorial/basic/edge/textPosition/index.tsx index 376a021013..4e5b31d547 100644 --- a/sites/docs/src/tutorial/basic/edge/textPosition/index.tsx +++ b/sites/docs/src/tutorial/basic/edge/textPosition/index.tsx @@ -1,6 +1,7 @@ import React from 'react'; import LogicFlow from '@logicflow/core'; -import '@logicflow/core/es/index.css'; +// import '@logicflow/core/es/index.css'; +import '@logicflow/core/dist/style/index.css'; import customEdge from './customEdge'; import data from './data'; diff --git a/sites/docs/src/tutorial/basic/node/custom-view/index.tsx b/sites/docs/src/tutorial/basic/node/custom-view/index.tsx index 0335f7fd15..79c608c5cf 100644 --- a/sites/docs/src/tutorial/basic/node/custom-view/index.tsx +++ b/sites/docs/src/tutorial/basic/node/custom-view/index.tsx @@ -1,6 +1,7 @@ import React from 'react'; import LogicFlow from '@logicflow/core'; -import '@logicflow/core/es/index.css'; +// import '@logicflow/core/es/index.css'; +import '@logicflow/core/dist/style/index.css'; import UserTask from './userTask'; import data from './viewData'; @@ -13,7 +14,7 @@ const SilentConfig = { }; export default class Example extends React.Component { - private container: HTMLDivElement; + private container!: HTMLDivElement; componentDidMount() { const lf = new LogicFlow({ @@ -27,7 +28,7 @@ export default class Example extends React.Component { lf.render(data); lf.translateCenter(); - lf.on('node:click', ({ data }) => { + lf.on('node:click', ({ data }: any) => { lf.setProperties(data.id, { disabled: !data.properties.disabled, scale: 1.5, diff --git a/sites/docs/src/tutorial/basic/node/custom/index.tsx b/sites/docs/src/tutorial/basic/node/custom/index.tsx index 41777df45f..4d7839635c 100644 --- a/sites/docs/src/tutorial/basic/node/custom/index.tsx +++ b/sites/docs/src/tutorial/basic/node/custom/index.tsx @@ -1,6 +1,7 @@ import React from 'react'; import LogicFlow from '@logicflow/core'; -import '@logicflow/core/es/index.css'; +// import '@logicflow/core/es/index.css'; +import '@logicflow/core/dist/style/index.css'; import CustomCircle from './customCircle'; import CustomEllipse from './customEllipse'; diff --git a/sites/docs/src/tutorial/basic/node/shapes/index.tsx b/sites/docs/src/tutorial/basic/node/shapes/index.tsx index a77ac72404..ae68ea4e2c 100644 --- a/sites/docs/src/tutorial/basic/node/shapes/index.tsx +++ b/sites/docs/src/tutorial/basic/node/shapes/index.tsx @@ -1,6 +1,7 @@ import React from 'react'; import LogicFlow from '@logicflow/core'; -import '@logicflow/core/es/index.css'; +// import '@logicflow/core/es/index.css'; +import '@logicflow/core/dist/style/index.css'; import data from './shapesData'; import '../../../index.less'; diff --git a/sites/docs/src/tutorial/getting-started/helloworld/index.tsx b/sites/docs/src/tutorial/getting-started/helloworld/index.tsx index d8a4725544..776a29df02 100644 --- a/sites/docs/src/tutorial/getting-started/helloworld/index.tsx +++ b/sites/docs/src/tutorial/getting-started/helloworld/index.tsx @@ -1,6 +1,7 @@ import React from 'react'; import LogicFlow from '@logicflow/core'; -import '@logicflow/core/es/index.css'; +// import '@logicflow/core/es/index.css'; +import '@logicflow/core/dist/style/index.css'; import data from './data'; import '../index.less'; diff --git a/sites/docs/src/tutorial/getting-started/use-plugin/index.tsx b/sites/docs/src/tutorial/getting-started/use-plugin/index.tsx index 3d7e52d662..bc0a33d8cb 100644 --- a/sites/docs/src/tutorial/getting-started/use-plugin/index.tsx +++ b/sites/docs/src/tutorial/getting-started/use-plugin/index.tsx @@ -1,8 +1,10 @@ import React from 'react'; import LogicFlow from '@logicflow/core'; import { Control } from '@logicflow/extension'; -import '@logicflow/core/es/index.css'; -import '@logicflow/extension/es/index.css'; +// import '@logicflow/core/es/index.css'; +import '@logicflow/core/dist/style/index.css'; +// import '@logicflow/extension/es/index.css'; +import '@logicflow/extension/lib/style/index.css'; import { data, SilentConfig, styleConfig } from './pluginData'; import '../index.less'; diff --git a/sites/docs/src/tutorial/getting-started/use-react/index.tsx b/sites/docs/src/tutorial/getting-started/use-react/index.tsx index a284db54d0..17545064f4 100644 --- a/sites/docs/src/tutorial/getting-started/use-react/index.tsx +++ b/sites/docs/src/tutorial/getting-started/use-react/index.tsx @@ -1,6 +1,7 @@ import React from 'react'; import LogicFlow from '@logicflow/core'; -import '@logicflow/core/es/index.css'; +// import '@logicflow/core/es/index.css'; +import '@logicflow/core/dist/style/index.css'; import { data, SilentConfig, styleConfig } from './reactData'; import CustomEdge from './customEdge'; import '../index.less'; diff --git a/sites/docs/src/tutorial/intermediate/edge/animation/index.tsx b/sites/docs/src/tutorial/intermediate/edge/animation/index.tsx index b861ed2334..a37507f85a 100644 --- a/sites/docs/src/tutorial/intermediate/edge/animation/index.tsx +++ b/sites/docs/src/tutorial/intermediate/edge/animation/index.tsx @@ -1,6 +1,7 @@ import React from 'react'; import LogicFlow from '@logicflow/core'; -import '@logicflow/core/es/index.css'; +// import '@logicflow/core/es/index.css'; +import '@logicflow/core/dist/style/index.css'; import customEdge from './customEdge'; import data from './data'; @@ -21,7 +22,7 @@ export default class Example extends React.Component { container: this.container, grid: true, ...SilentConfig, - adjustEdgeStartAndEnd: true, // 开启两端的调整连线功能 + // adjustEdgeStartAndEnd: true, // 开启两端的调整连线功能 edgeGenerator: (sourceNode) => { if (sourceNode.type === 'circle') { return 'line'; diff --git a/sites/docs/src/tutorial/intermediate/node/connect/index.tsx b/sites/docs/src/tutorial/intermediate/node/connect/index.tsx index ecd8348258..6d632e004d 100644 --- a/sites/docs/src/tutorial/intermediate/node/connect/index.tsx +++ b/sites/docs/src/tutorial/intermediate/node/connect/index.tsx @@ -1,6 +1,7 @@ import React from 'react'; import LogicFlow from '@logicflow/core'; -import '@logicflow/core/es/index.css'; +// import '@logicflow/core/es/index.css'; +import '@logicflow/core/dist/style/index.css'; import CustomHexagon from './customHexagon'; import data from './connectData'; diff --git a/sites/docs/src/tutorial/intermediate/node/htmlNode/index.tsx b/sites/docs/src/tutorial/intermediate/node/htmlNode/index.tsx index 5eae2d85ba..b1af4231ad 100644 --- a/sites/docs/src/tutorial/intermediate/node/htmlNode/index.tsx +++ b/sites/docs/src/tutorial/intermediate/node/htmlNode/index.tsx @@ -1,6 +1,7 @@ import React from 'react'; import LogicFlow from '@logicflow/core'; -import '@logicflow/core/es/index.css'; +// import '@logicflow/core/es/index.css'; +import '@logicflow/core/dist/style/index.css'; import customNode from './htmlNode'; import data from './htmlData'; diff --git a/sites/docs/src/tutorial/intermediate/node/movable/index.tsx b/sites/docs/src/tutorial/intermediate/node/movable/index.tsx index 6ed03d8c7e..fdacd5068b 100644 --- a/sites/docs/src/tutorial/intermediate/node/movable/index.tsx +++ b/sites/docs/src/tutorial/intermediate/node/movable/index.tsx @@ -1,6 +1,7 @@ import React from 'react'; import LogicFlow from '@logicflow/core'; -import '@logicflow/core/es/index.css'; +// import '@logicflow/core/es/index.css'; +import '@logicflow/core/dist/style/index.css'; import customNode from './customNode'; import movableNode from './movableNode'; diff --git a/sites/docs/src/tutorial/intermediate/node/sql/index.tsx b/sites/docs/src/tutorial/intermediate/node/sql/index.tsx index 0d3747d7d8..43beb39ebf 100644 --- a/sites/docs/src/tutorial/intermediate/node/sql/index.tsx +++ b/sites/docs/src/tutorial/intermediate/node/sql/index.tsx @@ -1,6 +1,7 @@ import React from 'react'; import LogicFlow from '@logicflow/core'; -import '@logicflow/core/es/index.css'; +// import '@logicflow/core/es/index.css'; +import '@logicflow/core/dist/style/index.css'; import sqlNode from './sqlNode'; import sqlEdge from './sqlEdge'; diff --git a/sites/docs/src/tutorial/intermediate/node/sql/sqlEdge.ts b/sites/docs/src/tutorial/intermediate/node/sql/sqlEdge.ts index 189f6a211e..531ec0b49b 100644 --- a/sites/docs/src/tutorial/intermediate/node/sql/sqlEdge.ts +++ b/sites/docs/src/tutorial/intermediate/node/sql/sqlEdge.ts @@ -23,7 +23,7 @@ class CustomEdgeModel2 extends BezierEdgeModel { * 给边自定义方案,使其支持基于锚点的位置更新边的路径 */ updatePathByAnchor() { - // Todo + // TODO const sourceNodeModel = this.graphModel.getNodeModelById(this.sourceNodeId); const sourceAnchor = sourceNodeModel .getDefaultAnchor()