Copy disabled (too large)
Download .txt
Showing preview only (17,870K chars total). Download the full file to get everything.
Repository: antvis/F6
Branch: master
Commit: f632a34ab2bb
Files: 2383
Total size: 16.2 MB
Directory structure:
gitextract_n32t9dq7/
├── .browserslistrc
├── .gitattributes
├── .gitignore
├── .npmignore
├── .prettierrc
├── .stylelintrc.json
├── .travis.yml
├── LICENSE
├── README-zh-CN.md
├── README.md
├── SECURITY.md
├── binding.gyp
├── common/
│ ├── autoinstallers/
│ │ └── rush-prettier/
│ │ └── package.json
│ ├── config/
│ │ └── rush/
│ │ ├── .npmrc
│ │ ├── .npmrc-publish
│ │ ├── .pnpmfile.cjs
│ │ ├── artifactory.json
│ │ ├── build-cache.json
│ │ ├── cobuild.json
│ │ ├── command-line.json
│ │ ├── common-versions.json
│ │ ├── custom-tips.json
│ │ ├── experiments.json
│ │ ├── pnpm-config.json
│ │ ├── repo-state.json
│ │ ├── rush-plugins.json
│ │ ├── subspaces.json
│ │ └── version-policies.json
│ ├── git-hooks/
│ │ ├── commit-msg.sample
│ │ └── pre-commit
│ └── scripts/
│ ├── install-run-rush-pnpm.js
│ ├── install-run-rush.js
│ ├── install-run-rushx.js
│ └── install-run.js
├── eslint.config.js
├── package.json
├── packages/
│ ├── core/
│ │ ├── jest.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── behavior/
│ │ │ │ ├── behavior.ts
│ │ │ │ ├── behaviorOption.ts
│ │ │ │ └── index.ts
│ │ │ ├── element/
│ │ │ │ ├── arrow.ts
│ │ │ │ ├── combo.ts
│ │ │ │ ├── combos/
│ │ │ │ │ ├── circle.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── rect.ts
│ │ │ │ ├── edge.ts
│ │ │ │ ├── hull/
│ │ │ │ │ ├── bubbleset.ts
│ │ │ │ │ └── convexHull.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── marker.ts
│ │ │ │ ├── node.ts
│ │ │ │ ├── nodes/
│ │ │ │ │ ├── image.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── simple-circle.ts
│ │ │ │ │ └── simple-rect.ts
│ │ │ │ ├── shape.ts
│ │ │ │ ├── shapeBase.ts
│ │ │ │ └── xml.ts
│ │ │ ├── global.ts
│ │ │ ├── graph/
│ │ │ │ ├── controller/
│ │ │ │ │ ├── event.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── item.ts
│ │ │ │ │ ├── layout.ts
│ │ │ │ │ ├── mode.ts
│ │ │ │ │ ├── state.ts
│ │ │ │ │ └── view.ts
│ │ │ │ └── graph.ts
│ │ │ ├── index.ts
│ │ │ ├── interface/
│ │ │ │ ├── behavior.ts
│ │ │ │ ├── graph.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── item.ts
│ │ │ │ └── shape.ts
│ │ │ ├── item/
│ │ │ │ ├── combo.ts
│ │ │ │ ├── edge.ts
│ │ │ │ ├── hull.ts
│ │ │ │ ├── item.ts
│ │ │ │ └── node.ts
│ │ │ ├── types/
│ │ │ │ └── index.ts
│ │ │ └── util/
│ │ │ ├── base.ts
│ │ │ ├── color.ts
│ │ │ ├── graphic.ts
│ │ │ ├── index.ts
│ │ │ ├── letterAspectRatio.ts
│ │ │ ├── math.ts
│ │ │ ├── path.ts
│ │ │ └── validation.ts
│ │ ├── tests/
│ │ │ └── unit/
│ │ │ └── index-spec.ts
│ │ ├── tsconfig.json
│ │ └── vite.config.ts
│ ├── element/
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── edges/
│ │ │ │ ├── index.ts
│ │ │ │ ├── polyline-util.ts
│ │ │ │ ├── polyline.ts
│ │ │ │ └── router.ts
│ │ │ ├── index.ts
│ │ │ └── nodes/
│ │ │ ├── circle.ts
│ │ │ ├── diamond.ts
│ │ │ ├── donut.ts
│ │ │ ├── ellipse.ts
│ │ │ ├── image.ts
│ │ │ ├── index.ts
│ │ │ ├── modelRect.ts
│ │ │ ├── rect.ts
│ │ │ ├── star.ts
│ │ │ └── triangle.ts
│ │ ├── tests/
│ │ │ └── unit/
│ │ │ ├── issues-spec.ts
│ │ │ └── template-spec.ts
│ │ └── vite.config.ts
│ ├── examples-alipay/
│ │ ├── app.acss
│ │ ├── app.js
│ │ ├── app.json
│ │ ├── common/
│ │ │ ├── components/
│ │ │ │ ├── block-list/
│ │ │ │ │ ├── block-list.acss
│ │ │ │ │ ├── block-list.axml
│ │ │ │ │ ├── block-list.js
│ │ │ │ │ └── block-list.json
│ │ │ │ └── search/
│ │ │ │ ├── search.acss
│ │ │ │ ├── search.axml
│ │ │ │ ├── search.js
│ │ │ │ └── search.json
│ │ │ └── utils/
│ │ │ ├── common.js
│ │ │ ├── context.js
│ │ │ ├── data.js
│ │ │ ├── debounce.js
│ │ │ └── process.js
│ │ ├── mini.project.json
│ │ ├── package.json
│ │ └── pages/
│ │ ├── animation/
│ │ │ ├── change-position-default/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── custom-animate-position/
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── edge-edge/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── edge-line-growth/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── node-node/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── point-in-line/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ └── state-change-hover/
│ │ │ ├── data.js
│ │ │ ├── index.acss
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ ├── elements/
│ │ │ ├── arc/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── area-chart/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── bar-chart/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── built-in-arrows/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── c-circle/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── c-rect/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── card/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── card-node/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── circle/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── circle-with-combo/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── cubic1/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── cubic2/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── custom-arrows/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── custom-polyline/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── custom-polyline2/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── diamond/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── donut/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── edge-bg/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── edge-mul-label/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── ellipse/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── extra-shape/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── image/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── label-len/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── label-len1/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── line-chart/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── list/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── loop/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── mode-rect/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── multi-edges/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── node-bg/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── pie-chart/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── point-chart/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── polyline1/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── polyline2/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── polyline3/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── rect/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── rect-with-combo/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── stack-chart/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── star/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ └── triangle/
│ │ │ ├── data.js
│ │ │ ├── index.acss
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ ├── general-graph/
│ │ │ ├── basic-FA2/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── basic-MDS/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── basic-arc-diagram/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── basic-circular/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── basic-combo-force/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── basic-concentric/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── basic-dagre/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── basic-force-directed/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── basic-force-directed-drag-fix/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── basic-grid/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── basic-radial/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── circular-arc-diagram/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── circular-configuration-translate/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── cluster-grid/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── custom-bi-graph/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── dagre/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── dagre-UL/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── dagre-combo/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── dagre-configuration-translate/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── data-change/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── degree-circular/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── division-circular/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── force-bubbles/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── force-constrained-in-rect/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── force-directed-configuration-translate/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── force-directed-force-clustering/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── force-directed-functional-params/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── force-directed-prevent-overlap/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── fruchterman/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── fruchterman-clustering/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── fruchterman-configuration-translate/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── fruchterman-worker/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── interact-radial/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── layout-timing/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── layout-translate/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── prevent-overlap-radial/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── prevent-overlap-unstrict-radial/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── radial-configuration-translate/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── sort-radial/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── spiral-circular/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── subgraph-layout/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ └── sublayout-pipes/
│ │ │ ├── data.js
│ │ │ ├── index.acss
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ ├── index/
│ │ │ ├── index.acss
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ ├── interactive/
│ │ │ ├── activate-relations/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── add-child/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── canvas-two-fingers/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── change-data/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── change-members/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── collapse-slibing/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── combo-circle/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── combo-rect/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── drag-subtree/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── fix-item/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── hide-item/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── highlight-dark/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── hull/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── move/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── move-animate/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── partial-node/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ └── set-mode/
│ │ │ ├── data.js
│ │ │ ├── index.acss
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ ├── plugins/
│ │ │ ├── bundling/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── donut-transfer/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── edge-filter/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── fisheye/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── menu/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── mini-map/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── snap-line/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── timebar/
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ └── index.tsx
│ │ │ ├── tool-tip/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ └── zoom-slider/
│ │ │ ├── data.js
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ ├── scene-case/
│ │ │ ├── custom-flow/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── decision-tree/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── donut-transfer/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── knowledge-tree-graph/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── metro-lines/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── mind-map/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ └── sankey/
│ │ │ ├── data.js
│ │ │ ├── index.acss
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ ├── search/
│ │ │ ├── search.acss
│ │ │ ├── search.axml
│ │ │ ├── search.js
│ │ │ └── search.json
│ │ └── tree-graph/
│ │ ├── basic-dendrogram/
│ │ │ ├── data.js
│ │ │ ├── index.acss
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ ├── compact-box/
│ │ │ ├── data.js
│ │ │ ├── index.acss
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ ├── compact-box-left-align/
│ │ │ ├── data.js
│ │ │ ├── index.acss
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ ├── custom-edge-tree/
│ │ │ ├── data.js
│ │ │ ├── index.acss
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ ├── custom-side-mind-map/
│ │ │ ├── data.js
│ │ │ ├── index.acss
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ ├── custom-tree/
│ │ │ ├── data.js
│ │ │ ├── index.acss
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ ├── file-system/
│ │ │ ├── data.js
│ │ │ ├── index.acss
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ ├── intend-align-top/
│ │ │ ├── data.js
│ │ │ ├── index.acss
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ ├── intended/
│ │ │ ├── data.js
│ │ │ ├── index.acss
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ ├── left-mind-map/
│ │ │ ├── data.js
│ │ │ ├── index.acss
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ ├── mind-map/
│ │ │ ├── data.js
│ │ │ ├── index.acss
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ ├── radial-compact-box/
│ │ │ ├── data.js
│ │ │ ├── index.acss
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ ├── radial-dendrogram/
│ │ │ ├── data.js
│ │ │ ├── index.acss
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ ├── right-mind-map/
│ │ │ ├── data.js
│ │ │ ├── index.acss
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ ├── tb-compact-box/
│ │ │ ├── data.js
│ │ │ ├── index.acss
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ ├── tb-dendrogram/
│ │ │ ├── data.js
│ │ │ ├── index.acss
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ └── tree-edge-label/
│ │ ├── data.js
│ │ ├── index.acss
│ │ ├── index.axml
│ │ ├── index.js
│ │ └── index.json
│ ├── examples-uniapp/
│ │ ├── .hbuilderx/
│ │ │ └── launch.json
│ │ ├── App.vue
│ │ ├── components/
│ │ │ └── canvas/
│ │ │ └── canvas.vue
│ │ ├── f6/
│ │ │ ├── extends/
│ │ │ │ ├── graph/
│ │ │ │ │ └── treeGraph.js
│ │ │ │ └── layout/
│ │ │ │ ├── circularLayout.js
│ │ │ │ ├── comboForceLayout.js
│ │ │ │ ├── concentricLayout.js
│ │ │ │ ├── dagreLayout.js
│ │ │ │ ├── forceAtlas2Layout.js
│ │ │ │ ├── forceLayout.js
│ │ │ │ ├── fruchtermanLayout.js
│ │ │ │ ├── gForceLayout.js
│ │ │ │ ├── gridLayout.js
│ │ │ │ ├── mdsLayout.js
│ │ │ │ ├── radialLayout.js
│ │ │ │ └── randomLayout.js
│ │ │ └── index.js
│ │ ├── index.html
│ │ ├── main.js
│ │ ├── manifest.json
│ │ ├── pages/
│ │ │ └── index/
│ │ │ └── index.vue
│ │ ├── pages.json
│ │ └── uni.scss
│ ├── examples-wx/
│ │ ├── app.js
│ │ ├── app.json
│ │ ├── app.wxss
│ │ ├── components/
│ │ │ ├── wx.js
│ │ │ ├── wx.json
│ │ │ ├── wx.wxml
│ │ │ └── wx.wxss
│ │ ├── miniprogram_npm/
│ │ │ └── @antv/
│ │ │ ├── f6-plugin/
│ │ │ │ └── f6Plugin.js
│ │ │ └── f6-wx/
│ │ │ ├── canvas/
│ │ │ │ ├── canvas.js
│ │ │ │ ├── canvas.json
│ │ │ │ └── canvas.wxml
│ │ │ ├── container/
│ │ │ │ ├── container.js
│ │ │ │ ├── container.json
│ │ │ │ └── container.wxml
│ │ │ ├── extends/
│ │ │ │ ├── graph/
│ │ │ │ │ └── treeGraph.js
│ │ │ │ └── layout/
│ │ │ │ ├── circularLayout.js
│ │ │ │ ├── comboForceLayout.js
│ │ │ │ ├── concentricLayout.js
│ │ │ │ ├── dagreLayout.js
│ │ │ │ ├── forceAtlas2Layout.js
│ │ │ │ ├── forceLayout.js
│ │ │ │ ├── fruchtermanLayout.js
│ │ │ │ ├── gForceLayout.js
│ │ │ │ ├── gridLayout.js
│ │ │ │ ├── mdsLayout.js
│ │ │ │ ├── radialLayout.js
│ │ │ │ └── randomLayout.js
│ │ │ └── index.js
│ │ ├── package-animation/
│ │ │ └── pages/
│ │ │ └── animation/
│ │ │ ├── change-position-default/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── custom-animate-position/
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── edge-edge/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── edge-line-growth/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── node-node/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── point-in-line/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ └── state-change-hover/
│ │ │ ├── data.js
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ ├── index.wxml
│ │ │ └── index.wxss
│ │ ├── package-elements/
│ │ │ └── pages/
│ │ │ └── elements/
│ │ │ ├── arc/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── area-chart/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── bar-chart/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── built-in-arrows/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── c-circle/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── c-rect/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── card/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── card-node/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── circle/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── circle-with-combo/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── cubic1/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── cubic2/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── custom-arrows/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── custom-polyline/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── custom-polyline2/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── diamond/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── donut/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── edge-bg/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── edge-mul-label/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── ellipse/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── extra-shape/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── image/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── label-len/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── label-len1/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── line-chart/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── list/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── loop/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── mode-rect/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── multi-edges/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── node-bg/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── pie-chart/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── point-chart/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── polyline1/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── polyline2/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── polyline3/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── rect/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── rect-with-combo/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── stack-chart/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── star/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ └── triangle/
│ │ │ ├── data.js
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ ├── index.wxml
│ │ │ └── index.wxss
│ │ ├── package-general-graph/
│ │ │ └── pages/
│ │ │ └── general-graph/
│ │ │ ├── basic-FA2/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── basic-MDS/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── basic-arc-diagram/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── basic-circular/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── basic-combo-force/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── basic-concentric/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── basic-dagre/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── basic-force-directed/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── basic-force-directed-drag-fix/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── basic-grid/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── basic-radial/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── circular-arc-diagram/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── circular-configuration-translate/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── cluster-grid/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── custom-bi-graph/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── dagre/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── dagre-UL/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── dagre-combo/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── dagre-configuration-translate/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── data-change/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── degree-circular/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── division-circular/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── force-bubbles/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── force-constrained-in-rect/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── force-directed-configuration-translate/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── force-directed-force-clustering/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── force-directed-functional-params/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── force-directed-prevent-overlap/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── fruchterman/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── fruchterman-clustering/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── fruchterman-configuration-translate/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── interact-radial/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── layout-timing/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── layoutTranslate/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── prevent-overlap-radial/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── prevent-overlap-unstrict-radial/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── radial-configuration-translate/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── sort-radial/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── spiral-circular/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── subgraph-layout/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ └── sublayout-pipes/
│ │ │ ├── data.js
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ ├── index.wxml
│ │ │ └── index.wxss
│ │ ├── package-interactive/
│ │ │ └── pages/
│ │ │ └── interactive/
│ │ │ ├── activate-relations/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── add-child/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── canvas-two-fingers/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── change-data/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── change-members/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── collapse-slibing/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── combo-circle/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── combo-rect/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── drag-subtree/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── fix-item/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── hide-item/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── highlight-dark/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── hull/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── move/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── move-animate/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── partial-node/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ └── set-mode/
│ │ │ ├── data.js
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ ├── index.wxml
│ │ │ └── index.wxss
│ │ ├── package-plugin/
│ │ │ └── pages/
│ │ │ └── plugin/
│ │ │ ├── bundling/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── edge-filter/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── fish-eye/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── legend/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── menu/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── mini-map/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── snap-line/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── time-bar/
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── tool-tip/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ └── zoom-slider/
│ │ │ ├── data.js
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ ├── index.wxml
│ │ │ └── index.wxss
│ │ ├── package-scene-case/
│ │ │ └── pages/
│ │ │ └── scene-case/
│ │ │ ├── custom-flow/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── decision-tree/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── donut-transfer/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── knowledge-tree-graph/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── metro-lines/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── mind-map/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ └── sankey/
│ │ │ ├── data.js
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ ├── index.wxml
│ │ │ └── index.wxss
│ │ ├── package-tree-graph/
│ │ │ └── pages/
│ │ │ └── tree-graph/
│ │ │ ├── basic-dendrogram/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── compact-box/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── compact-box-left-align/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── custom-edge-tree/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── custom-side-mind-map/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── custom-tree/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── file-system/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── h-intended/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── intend-align-top/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── left-mind-map/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── mind-map/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── radial-compact-box/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── radial-dendrogram/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── right-mind-map/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── tb-compact-box/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ ├── tb-dendrogram/
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ └── tree-edge-label/
│ │ │ ├── data.js
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ ├── index.wxml
│ │ │ └── index.wxss
│ │ ├── package.json
│ │ ├── pages/
│ │ │ └── index/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ ├── index.wxml
│ │ │ └── index.wxss
│ │ ├── project.config.json
│ │ ├── project.private.config.json
│ │ ├── sitemap.json
│ │ └── utils/
│ │ ├── common.js
│ │ ├── data.js
│ │ ├── index.js
│ │ └── util.js
│ ├── f6/
│ │ ├── .storybook/
│ │ │ ├── main.ts
│ │ │ └── preview.ts
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── behavior/
│ │ │ │ ├── activate-relations.ts
│ │ │ │ ├── click-select.ts
│ │ │ │ ├── collapse-expand-combo.ts
│ │ │ │ ├── collapse-expand.ts
│ │ │ │ ├── create-edge.ts
│ │ │ │ ├── drag-canvas.ts
│ │ │ │ ├── drag-combo.ts
│ │ │ │ ├── drag-node.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── mobile-behavior.ts
│ │ │ │ ├── tooltip.ts
│ │ │ │ └── zoom-canvas.ts
│ │ │ ├── element/
│ │ │ │ └── index.ts
│ │ │ ├── extends/
│ │ │ │ ├── graph/
│ │ │ │ │ └── treeGraph/
│ │ │ │ │ └── index.ts
│ │ │ │ └── layout/
│ │ │ │ ├── circularLayout/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── comboForceLayout/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── concentricLayout/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── dagreLayout/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── forceAtlas2Layout/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── forceLayout/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── fruchtermanLayout/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── gForceLayout/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── gridLayout/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── mdsLayout/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── radialLayout/
│ │ │ │ │ └── index.ts
│ │ │ │ └── randomLayout/
│ │ │ │ └── index.ts
│ │ │ ├── global.ts
│ │ │ ├── graph/
│ │ │ │ ├── controller/
│ │ │ │ │ ├── event.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── layout.ts
│ │ │ │ └── graph.ts
│ │ │ ├── index.ts
│ │ │ ├── index.umd.ts
│ │ │ ├── interface/
│ │ │ │ └── graph.ts
│ │ │ ├── layout/
│ │ │ │ └── index.ts
│ │ │ ├── plugin/
│ │ │ │ ├── base.ts
│ │ │ │ └── index.ts
│ │ │ ├── types/
│ │ │ │ └── index.ts
│ │ │ └── util/
│ │ │ ├── color.ts
│ │ │ ├── index.ts
│ │ │ └── layout.ts
│ │ ├── stories/
│ │ │ ├── algorithm/
│ │ │ │ ├── dfs/
│ │ │ │ │ ├── data.ts
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── index.stories.tsx
│ │ │ │ └── shortestPath/
│ │ │ │ ├── data.ts
│ │ │ │ └── index.tsx
│ │ │ ├── fruchterman/
│ │ │ │ └── index.tsx
│ │ │ ├── g-force/
│ │ │ │ └── index.tsx
│ │ │ ├── generalGraph/
│ │ │ │ └── dagreConfigurationTranslate/
│ │ │ │ ├── data.ts
│ │ │ │ └── index.tsx
│ │ │ ├── index.stories.tsx
│ │ │ ├── interactive/
│ │ │ │ └── collapseSlibing/
│ │ │ │ ├── data.ts
│ │ │ │ └── index.tsx
│ │ │ ├── nodeDemo/
│ │ │ │ ├── data.ts
│ │ │ │ ├── index.tsx
│ │ │ │ ├── node.ts
│ │ │ │ └── uiNode.ts
│ │ │ ├── pluginBundling/
│ │ │ │ ├── data.ts
│ │ │ │ └── index.tsx
│ │ │ ├── pluginEdgeFilter/
│ │ │ │ ├── data.ts
│ │ │ │ └── index.tsx
│ │ │ ├── pluginFisheye/
│ │ │ │ ├── data.ts
│ │ │ │ └── index.tsx
│ │ │ ├── pluginLegend/
│ │ │ │ ├── data.ts
│ │ │ │ └── index.tsx
│ │ │ ├── pluginMenu/
│ │ │ │ ├── data.ts
│ │ │ │ └── index.tsx
│ │ │ ├── pluginMiniMap/
│ │ │ │ ├── data.ts
│ │ │ │ └── index.tsx
│ │ │ ├── pluginTooltip/
│ │ │ │ ├── data.ts
│ │ │ │ └── index.tsx
│ │ │ ├── pluginZoomSlider/
│ │ │ │ ├── data.ts
│ │ │ │ └── index.tsx
│ │ │ ├── sceneCase/
│ │ │ │ └── mindMap/
│ │ │ │ ├── data.ts
│ │ │ │ └── index.tsx
│ │ │ ├── snapLine/
│ │ │ │ ├── data.ts
│ │ │ │ └── index.tsx
│ │ │ └── uiTest/
│ │ │ ├── data.ts
│ │ │ └── index.tsx
│ │ └── vite.config.ts
│ ├── f6-alipay/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── babel.config.js
│ │ ├── demo/
│ │ │ ├── app.acss
│ │ │ ├── app.js
│ │ │ ├── app.json
│ │ │ ├── mini.project.json
│ │ │ ├── package.json
│ │ │ └── pages/
│ │ │ ├── g6/
│ │ │ │ ├── g6.acss
│ │ │ │ ├── g6.axml
│ │ │ │ ├── g6.js
│ │ │ │ └── g6.json
│ │ │ ├── image/
│ │ │ │ ├── image.acss
│ │ │ │ ├── image.axml
│ │ │ │ ├── image.js
│ │ │ │ └── image.json
│ │ │ ├── native-canvas/
│ │ │ │ ├── index.acss
│ │ │ │ ├── index.axml
│ │ │ │ ├── index.js
│ │ │ │ └── index.json
│ │ │ ├── native-test/
│ │ │ │ ├── native-test.acss
│ │ │ │ ├── native-test.axml
│ │ │ │ ├── native-test.js
│ │ │ │ └── native-test.json
│ │ │ └── native-test-fullpage/
│ │ │ ├── index.acss
│ │ │ ├── index.axml
│ │ │ ├── index.js
│ │ │ └── index.json
│ │ ├── package.json
│ │ ├── scripts/
│ │ │ ├── compiler.js
│ │ │ └── pub.js
│ │ └── src/
│ │ └── container/
│ │ ├── container.axml
│ │ ├── container.json
│ │ └── container.ts
│ ├── f6-rax/
│ │ ├── README.md
│ │ ├── build.json
│ │ ├── demo/
│ │ │ └── basic.md
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── index.ali.tsx
│ │ │ ├── index.css
│ │ │ └── index.tsx
│ │ └── tsconfig.json
│ ├── f6-ui/
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── index.ts
│ │ │ ├── om/
│ │ │ │ ├── css.ts
│ │ │ │ ├── dom.ts
│ │ │ │ └── style.ts
│ │ │ ├── parser/
│ │ │ │ └── attr-parser.ts
│ │ │ ├── ui-node/
│ │ │ │ ├── UIDivNode.ts
│ │ │ │ ├── UIImageNode.ts
│ │ │ │ ├── UIRootNode.ts
│ │ │ │ ├── UIShapeNode.ts
│ │ │ │ ├── UITextNode.ts
│ │ │ │ ├── base.ts
│ │ │ │ ├── factory.ts
│ │ │ │ └── index.ts
│ │ │ └── utils/
│ │ │ ├── index.ts
│ │ │ ├── parser.ts
│ │ │ └── ui.ts
│ │ └── vite.config.ts
│ ├── f6-wx/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── package.json
│ │ └── src/
│ │ ├── canvas/
│ │ │ ├── canvas.js
│ │ │ ├── canvas.json
│ │ │ └── canvas.wxml
│ │ ├── container/
│ │ │ ├── container.js
│ │ │ ├── container.json
│ │ │ └── container.wxml
│ │ ├── extends/
│ │ │ ├── graph/
│ │ │ │ └── treeGraph.js
│ │ │ └── layout/
│ │ │ ├── circularLayout.js
│ │ │ ├── comboForceLayout.js
│ │ │ ├── concentricLayout.js
│ │ │ ├── dagreLayout.js
│ │ │ ├── forceAtlas2Layout.js
│ │ │ ├── forceLayout.js
│ │ │ ├── fruchtermanLayout.js
│ │ │ ├── gForceLayout.js
│ │ │ ├── gridLayout.js
│ │ │ ├── mdsLayout.js
│ │ │ ├── radialLayout.js
│ │ │ └── randomLayout.js
│ │ └── index.js
│ ├── hammer/
│ │ ├── CONTRIBUTING.md
│ │ ├── LICENSE.md
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── hammer.js
│ │ │ ├── index.js
│ │ │ ├── input/
│ │ │ │ ├── pointerevent.js
│ │ │ │ └── touch.js
│ │ │ ├── inputjs/
│ │ │ │ ├── compute-delta-xy.js
│ │ │ │ ├── compute-input-data.js
│ │ │ │ ├── compute-interval-input-data.js
│ │ │ │ ├── create-input-instance.js
│ │ │ │ ├── get-angle.js
│ │ │ │ ├── get-center.js
│ │ │ │ ├── get-direction.js
│ │ │ │ ├── get-distance.js
│ │ │ │ ├── get-rotation.js
│ │ │ │ ├── get-scale.js
│ │ │ │ ├── get-velocity.js
│ │ │ │ ├── input-constructor.js
│ │ │ │ ├── input-consts.js
│ │ │ │ ├── input-handler.js
│ │ │ │ └── simple-clone-input-data.js
│ │ │ ├── manager.js
│ │ │ ├── recognizerjs/
│ │ │ │ ├── direction-str.js
│ │ │ │ ├── get-recognizer-by-name-if-manager.js
│ │ │ │ ├── recognizer-constructor.js
│ │ │ │ ├── recognizer-consts.js
│ │ │ │ └── state-str.js
│ │ │ ├── recognizers/
│ │ │ │ ├── attribute.js
│ │ │ │ ├── pan.js
│ │ │ │ ├── pinch.js
│ │ │ │ ├── press.js
│ │ │ │ ├── rotate.js
│ │ │ │ ├── swipe.js
│ │ │ │ └── tap.js
│ │ │ ├── touchactionjs/
│ │ │ │ ├── clean-touch-actions.js
│ │ │ │ ├── get-touchaction-props.js
│ │ │ │ ├── touchaction-Consts.js
│ │ │ │ └── touchaction-constructor.js
│ │ │ └── utils/
│ │ │ ├── add-event-listeners.js
│ │ │ ├── assign.js
│ │ │ ├── bind-fn.js
│ │ │ ├── bool-or-fn.js
│ │ │ ├── deprecate.js
│ │ │ ├── each.js
│ │ │ ├── extend.js
│ │ │ ├── has-parent.js
│ │ │ ├── if-undefined.js
│ │ │ ├── in-array.js
│ │ │ ├── in-str.js
│ │ │ ├── inherit.js
│ │ │ ├── invoke-array-arg.js
│ │ │ ├── merge.js
│ │ │ ├── remove-event-listeners.js
│ │ │ ├── set-timeout-context.js
│ │ │ ├── split-str.js
│ │ │ ├── to-array.js
│ │ │ ├── unique-array.js
│ │ │ ├── unique-id.js
│ │ │ └── utils-consts.js
│ │ └── vite.config.ts
│ ├── plugin/
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── base.ts
│ │ │ ├── bundling/
│ │ │ │ └── index.ts
│ │ │ ├── edge-filter-lens/
│ │ │ │ └── index.ts
│ │ │ ├── fisheye/
│ │ │ │ └── index.ts
│ │ │ ├── index.ts
│ │ │ ├── legend/
│ │ │ │ ├── index.ts
│ │ │ │ └── item.ts
│ │ │ ├── menu/
│ │ │ │ └── index.ts
│ │ │ ├── minimap/
│ │ │ │ └── index.ts
│ │ │ ├── snap-line/
│ │ │ │ └── index.ts
│ │ │ ├── time-bar/
│ │ │ │ ├── dispatcher.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── type/
│ │ │ │ │ ├── control-bar.ts
│ │ │ │ │ ├── slider.ts
│ │ │ │ │ ├── tick.ts
│ │ │ │ │ └── time-bar.ts
│ │ │ │ ├── ui/
│ │ │ │ │ ├── control-bar/
│ │ │ │ │ │ ├── control-btn.ts
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── play-btn.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── progress-bar/
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── tick.ts
│ │ │ │ │ │ └── trend.ts
│ │ │ │ │ └── slider/
│ │ │ │ │ ├── simple-slider.ts
│ │ │ │ │ ├── slide-ticker.ts
│ │ │ │ │ ├── slider-logic.ts
│ │ │ │ │ └── trend-slider.ts
│ │ │ │ └── utils/
│ │ │ │ ├── const.ts
│ │ │ │ ├── path.ts
│ │ │ │ └── player.ts
│ │ │ ├── tooltip/
│ │ │ │ ├── css.ts
│ │ │ │ ├── html.ts
│ │ │ │ └── index.ts
│ │ │ └── zoom-slider/
│ │ │ └── index.ts
│ │ └── vite.config.ts
│ └── site/
│ ├── CNAME
│ ├── api-extractor.json
│ ├── circle-dragging-i/
│ │ ├── 989198863e10b38a@125.js
│ │ ├── LICENSE.txt
│ │ ├── index.html
│ │ ├── index.js
│ │ ├── inspector.css
│ │ ├── package.json
│ │ └── runtime.js
│ ├── docs/
│ │ ├── api/
│ │ │ ├── Algorithm.zh.md
│ │ │ ├── Behavior.zh.md
│ │ │ ├── Event.zh.md
│ │ │ ├── Graph.zh.md
│ │ │ ├── Group.zh.md
│ │ │ ├── Items/
│ │ │ │ ├── comboMethods.zh.md
│ │ │ │ ├── comboProperties.zh.md
│ │ │ │ ├── edgeMethods.zh.md
│ │ │ │ ├── edgeProperties.zh.md
│ │ │ │ ├── itemMethods.zh.md
│ │ │ │ ├── itemProperties.zh.md
│ │ │ │ ├── nodeMethods.zh.md
│ │ │ │ └── nodeProperties.zh.md
│ │ │ ├── Plugins.zh.md
│ │ │ ├── TreeGraph.zh.md
│ │ │ ├── Util.zh.md
│ │ │ ├── graphFunc/
│ │ │ │ ├── animation.zh.md
│ │ │ │ ├── behaviors.zh.md
│ │ │ │ ├── calculation.zh.md
│ │ │ │ ├── combo.zh.md
│ │ │ │ ├── coordinate.zh.md
│ │ │ │ ├── data.zh.md
│ │ │ │ ├── destroy.zh.md
│ │ │ │ ├── download.zh.md
│ │ │ │ ├── find.zh.md
│ │ │ │ ├── get_set.zh.md
│ │ │ │ ├── hull.zh.md
│ │ │ │ ├── item.zh.md
│ │ │ │ ├── layout.zh.md
│ │ │ │ ├── mode.zh.md
│ │ │ │ ├── on_off.zh.md
│ │ │ │ ├── render.zh.md
│ │ │ │ ├── stack.zh.md
│ │ │ │ ├── state.zh.md
│ │ │ │ ├── transform.zh.md
│ │ │ │ └── watermarker.zh.md
│ │ │ ├── graphLayout/
│ │ │ │ ├── circular.zh.md
│ │ │ │ ├── comboForce.zh.md
│ │ │ │ ├── concentric.zh.md
│ │ │ │ ├── dagre.zh.md
│ │ │ │ ├── force.zh.md
│ │ │ │ ├── forceAtlas2.zh.md
│ │ │ │ ├── fruchterman.zh.md
│ │ │ │ ├── gforce.zh.md
│ │ │ │ ├── grid.zh.md
│ │ │ │ ├── guide.zh.md
│ │ │ │ ├── mds.zh.md
│ │ │ │ ├── radial.zh.md
│ │ │ │ └── random.zh.md
│ │ │ ├── registerItem.zh.md
│ │ │ ├── registerLayout.zh.md
│ │ │ ├── shapeMethods.zh.md
│ │ │ ├── shapeProperties.zh.md
│ │ │ ├── treeGraphLayout/
│ │ │ │ ├── compactBox.zh.md
│ │ │ │ ├── dendrogram.zh.md
│ │ │ │ ├── guide.zh.md
│ │ │ │ ├── indented.zh.md
│ │ │ │ └── mindmap.zh.md
│ │ │ └── treeMethods.zh.md
│ │ ├── examples/
│ │ │ ├── algorithm/
│ │ │ │ └── algoDemos/
│ │ │ │ └── index.zh.md
│ │ │ ├── case/
│ │ │ │ ├── customTree/
│ │ │ │ │ ├── decisiontree.zh.md
│ │ │ │ │ └── knowledgetreegraph.zh.md
│ │ │ │ ├── newsDemo/
│ │ │ │ │ ├── index.zh.md
│ │ │ │ │ └── metroline.zh.md
│ │ │ │ └── simpleCase/
│ │ │ │ ├── customflow.zh.md
│ │ │ │ ├── donuttransfer.zh.md
│ │ │ │ ├── mindmap.zh.md
│ │ │ │ └── sankey.zh.md
│ │ │ ├── gallery/
│ │ │ │ └── gallery.zh.md
│ │ │ ├── interaction/
│ │ │ │ ├── combo/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── createEdge/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── customBehavior/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── dragCanvasHideItem/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── fitView/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── highlight/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── hull/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── label/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── pagination/
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── partialResponse/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── position/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── select/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── setMode/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── treeBehavior/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ └── zoomCanvasFixItem/
│ │ │ │ ├── API.zh.md
│ │ │ │ └── index.zh.md
│ │ │ ├── item/
│ │ │ │ ├── arrows/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── customCombo/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── customEdge/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── customNode/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── defaultCombos/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── defaultEdges/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── defaultNodes/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── label/
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── labelBg/
│ │ │ │ │ └── index.zh.md
│ │ │ │ └── multiEdge/
│ │ │ │ └── index.zh.md
│ │ │ ├── net/
│ │ │ │ ├── arcDiagram/
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── circular/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── comboForce/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── concentricLayout/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── dagreFlow/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── forceDirected/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── furchtermanLayout/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── gridLayout/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── layoutMechanism/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── mdsLayout/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ └── radialLayout/
│ │ │ │ ├── API.zh.md
│ │ │ │ └── index.zh.md
│ │ │ ├── scatter/
│ │ │ │ ├── changePosition/
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── customAnimate/
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── edge/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ ├── node/
│ │ │ │ │ ├── API.zh.md
│ │ │ │ │ └── index.zh.md
│ │ │ │ └── stateChange/
│ │ │ │ ├── API.zh.md
│ │ │ │ └── index.zh.md
│ │ │ └── tree/
│ │ │ ├── compactBox/
│ │ │ │ ├── API.zh.md
│ │ │ │ └── index.zh.md
│ │ │ ├── customItemTree/
│ │ │ │ ├── API.zh.md
│ │ │ │ └── index.zh.md
│ │ │ ├── dendrogram/
│ │ │ │ ├── API.zh.md
│ │ │ │ └── index.zh.md
│ │ │ ├── indented/
│ │ │ │ ├── API.zh.md
│ │ │ │ └── index.zh.md
│ │ │ ├── mindmap/
│ │ │ │ ├── API.zh.md
│ │ │ │ └── index.zh.md
│ │ │ └── radialtree/
│ │ │ ├── API.zh.md
│ │ │ └── index.zh.md
│ │ └── manual/
│ │ ├── FAQ/
│ │ │ └── faq.zh.md
│ │ ├── advanced/
│ │ │ ├── comboTheory.zh.md
│ │ │ ├── coordinate-system.zh.md
│ │ │ ├── iconfont.zh.md
│ │ │ ├── mode-and-custom-behavior.zh.md
│ │ │ └── state-new.zh.md
│ │ ├── cases/
│ │ │ ├── edgeBundling.zh.md
│ │ │ ├── relations.zh.md
│ │ │ └── sequenceTime.zh.md
│ │ ├── getting-started.zh.md
│ │ ├── introduction.zh.md
│ │ ├── middle/
│ │ │ ├── animation.zh.md
│ │ │ ├── elements/
│ │ │ │ ├── advanced-style/
│ │ │ │ │ ├── gradient.zh.md
│ │ │ │ │ ├── set-label-bg.zh.md
│ │ │ │ │ ├── texture.zh.md
│ │ │ │ │ └── updateText.zh.md
│ │ │ │ ├── combos/
│ │ │ │ │ ├── built-in/
│ │ │ │ │ │ ├── circle.zh.md
│ │ │ │ │ │ └── rect.zh.md
│ │ │ │ │ ├── custom-combo.zh.md
│ │ │ │ │ └── defaultCombo.zh.md
│ │ │ │ ├── edges/
│ │ │ │ │ ├── arrow.zh.md
│ │ │ │ │ ├── built-in/
│ │ │ │ │ │ ├── arc.zh.md
│ │ │ │ │ │ ├── cubic.zh.md
│ │ │ │ │ │ ├── line.zh.md
│ │ │ │ │ │ ├── loop.zh.md
│ │ │ │ │ │ ├── polyline.zh.md
│ │ │ │ │ │ └── quadratic.zh.md
│ │ │ │ │ ├── custom-edge.zh.md
│ │ │ │ │ └── defaultEdge.zh.md
│ │ │ │ ├── methods/
│ │ │ │ │ ├── edgeVisible.zh.md
│ │ │ │ │ ├── elementIndex.zh.md
│ │ │ │ │ ├── lock-node.zh.md
│ │ │ │ │ ├── multi-line.zh.md
│ │ │ │ │ └── updateElement.zh.md
│ │ │ │ ├── nodes/
│ │ │ │ │ ├── anchorpoint.zh.md
│ │ │ │ │ ├── built-in/
│ │ │ │ │ │ ├── circle.zh.md
│ │ │ │ │ │ ├── diamond.zh.md
│ │ │ │ │ │ ├── donut.zh.md
│ │ │ │ │ │ ├── ellipse.zh.md
│ │ │ │ │ │ ├── image.zh.md
│ │ │ │ │ │ ├── modelRect.zh.md
│ │ │ │ │ │ ├── rect.zh.md
│ │ │ │ │ │ ├── star.zh.md
│ │ │ │ │ │ └── triangle.zh.md
│ │ │ │ │ ├── custom-node.zh.md
│ │ │ │ │ ├── defaultNode.zh.md
│ │ │ │ │ └── jsx-node.zh.md
│ │ │ │ ├── overview.zh.md
│ │ │ │ └── shape/
│ │ │ │ ├── graphics-group.zh.md
│ │ │ │ ├── shape-and-properties.zh.md
│ │ │ │ ├── shape-keyshape.zh.md
│ │ │ │ └── transform.zh.md
│ │ │ ├── graph.zh.md
│ │ │ ├── layout/
│ │ │ │ ├── ai-layout.zh.md
│ │ │ │ ├── custom-layout.zh.md
│ │ │ │ ├── graph-layout.zh.md
│ │ │ │ ├── layout-mechanism.zh.md
│ │ │ │ ├── sub-layout-pipe.zh.md
│ │ │ │ ├── sub-layout.zh.md
│ │ │ │ ├── tree-graph-layout.zh.md
│ │ │ │ └── webworker.zh.md
│ │ │ ├── overview.zh.md
│ │ │ ├── plugins/
│ │ │ │ └── Plugins.zh.md
│ │ │ └── states/
│ │ │ ├── bindEvent.zh.md
│ │ │ ├── custom-behavior.zh.md
│ │ │ ├── defaultBehavior.zh.md
│ │ │ ├── mode.zh.md
│ │ │ └── state.zh.md
│ │ └── tutorial/
│ │ ├── h5/
│ │ │ └── preface.zh.md
│ │ ├── mini/
│ │ │ ├── animation.zh.md
│ │ │ ├── behavior.zh.md
│ │ │ ├── elements.zh.md
│ │ │ ├── epilog.zh.md
│ │ │ ├── example.zh.md
│ │ │ ├── layout.zh.md
│ │ │ ├── preface.zh.md
│ │ │ └── wechat.zh.md
│ │ ├── native/
│ │ │ └── preface.zh.md
│ │ └── tutorial.zh.md
│ ├── examples/
│ │ └── demo/
│ │ ├── animation/
│ │ │ ├── change-position-default/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── custom-animate-position/
│ │ │ │ └── index.js
│ │ │ ├── edge-edge/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── edge-line-growth/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── node-node/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ └── point-in-line/
│ │ │ ├── data.js
│ │ │ └── index.js
│ │ ├── elements/
│ │ │ ├── area-chart/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── built-in-arrows/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── c-circle/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── c-rect/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── card/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── card-node/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── circle/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── circle-with-combo/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── cubic1/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── cubic2/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── custom-arrows/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── custom-polyline/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── custom-polyline2/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── diamond/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── donut/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── edge-bg/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── edge-mul-label/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── ellipse/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── extra-shape/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── image/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── label-len/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── label-len1/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── line-chart/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── list/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── loop/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── mode-rect/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── multi-edges/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── node-bg/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── pie-chart/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── point-chart/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── polyline1/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── polyline2/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── polyline3/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── rect/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── rect-with-combo/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── stack-chart/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── star/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ └── triangle/
│ │ │ ├── data.js
│ │ │ └── index.js
│ │ ├── general-graph/
│ │ │ ├── basic-FA2/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── basic-MDS/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── basic-arc-diagram/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── basic-circular/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── basic-combo-force/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── basic-concentric/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── basic-dagre/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── basic-force-directed/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── basic-force-directed-drag-fix/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── basic-grid/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── basic-radial/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── circular-arc-diagram/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── circular-configuration-translate/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── cluster-grid/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── custom-bi-graph/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── dagre/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── dagre-UL/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── dagre-combo/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── dagre-configuration-translate/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── data-change/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── degree-circular/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── division-circular/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── force-bubbles/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── force-constrained-in-rect/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── force-directed-configuration-translate/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── force-directed-force-clustering/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── force-directed-functional-params/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── force-directed-prevent-overlap/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── fruchterman/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── fruchterman-clustering/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── fruchterman-configuration-translate/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── fruchterman-worker/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── interact-radial/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── layout-timing/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── layout-translate/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── prevent-overlap-radial/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── prevent-overlap-unstrict-radial/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── radial-configuration-translate/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── sort-radial/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── spiral-circular/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── subgraph-layout/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ └── sublayout-pipes/
│ │ │ ├── data.js
│ │ │ └── index.js
│ │ ├── interactive/
│ │ │ ├── activate-relations/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── add-child/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── canvas-two-fingers/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── change-data/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── change-members/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── collapse-slibing/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── combo-circle/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── combo-rect/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── drag-subtree/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── hide-item/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── highlight-dark/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── hull/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── move/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── move-animate/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ └── partial-node/
│ │ │ ├── data.js
│ │ │ └── index.js
│ │ ├── plugins/
│ │ │ ├── bundling/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── donut-transfer/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── edge-filter/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── fisheye/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── menu/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── mini-map/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── snap-line/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── timebar/
│ │ │ │ └── index.js
│ │ │ ├── tool-tip/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ └── zoom-slider/
│ │ │ ├── data.js
│ │ │ └── index.js
│ │ ├── scene-case/
│ │ │ ├── custom-flow/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── decision-tree/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── donut-transfer/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── knowledge-tree-graph/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── metro-lines/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ ├── mind-map/
│ │ │ │ ├── data.js
│ │ │ │ └── index.js
│ │ │ └── sankey/
│ │ │ ├── data.js
│ │ │ └── index.js
│ │ └── tree-graph/
│ │ ├── basic-dendrogram/
│ │ │ ├── data.js
│ │ │ └── index.js
│ │ ├── compact-box/
│ │ │ ├── data.js
│ │ │ └── index.js
│ │ ├── compact-box-left-align/
│ │ │ ├── data.js
│ │ │ └── index.js
│ │ ├── custom-edge-tree/
│ │ │ ├── data.js
│ │ │ └── index.js
│ │ ├── custom-side-mind-map/
│ │ │ ├── data.js
│ │ │ └── index.js
│ │ ├── custom-tree/
│ │ │ ├── data.js
│ │ │ └── index.js
│ │ ├── file-system/
│ │ │ ├── data.js
│ │ │ └── index.js
│ │ ├── intend-align-top/
│ │ │ ├── data.js
│ │ │ └── index.js
│ │ ├── intended/
│ │ │ ├── data.js
│ │ │ └── index.js
│ │ ├── left-mind-map/
│ │ │ ├── data.js
│ │ │ └── index.js
│ │ ├── mind-map/
│ │ │ ├── data.js
│ │ │ └── index.js
│ │ ├── radial-compact-box/
│ │ │ ├── data.js
│ │ │ └── index.js
│ │ ├── radial-dendrogram/
│ │ │ ├── data.js
│ │ │ └── index.js
│ │ ├── right-mind-map/
│ │ │ ├── data.js
│ │ │ └── index.js
│ │ ├── tb-compact-box/
│ │ │ ├── data.js
│ │ │ └── index.js
│ │ ├── tb-dendrogram/
│ │ │ ├── data.js
│ │ │ └── index.js
│ │ └── tree-edge-label/
│ │ ├── data.js
│ │ └── index.js
│ ├── gatsby-browser.js
│ ├── gatsby-config.js
│ ├── gatsby-node.js
│ ├── package.json
│ └── site/
│ ├── global.less
│ ├── locale.json
│ └── pages/
│ ├── canvas-menu.tsx
│ ├── index.en.tsx
│ ├── index.less
│ ├── index.zh.tsx
│ ├── large-graph-register.tsx
│ ├── largegraph.en.tsx
│ ├── largegraph.zh.tsx
│ └── legend-panel.tsx
├── rush.json
└── tsconfig.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .browserslistrc
================================================
# Browsers that we support
[production staging]
> 1%
last 2 version
ie 11
[development]
> 1%
last 2 version
================================================
FILE: .gitattributes
================================================
# Don't allow people to merge changes to these generated files, because the result
# may be invalid. You need to run "rush update" again.
pnpm-lock.yaml merge=text
shrinkwrap.yaml merge=binary
npm-shrinkwrap.json merge=binary
yarn.lock merge=binary
# Rush's JSON config files use JavaScript-style code comments. The rule below prevents pedantic
# syntax highlighters such as GitHub's from highlighting these comments as errors. Your text editor
# may also require a special configuration to allow comments in JSON.
#
# For more information, see this issue: https://github.com/microsoft/rushstack/issues/1088
#
*.json linguist-language=JSON-with-Comments
================================================
FILE: .gitignore
================================================
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
yarn.lock
es
.mini-ide/
# lock
package-lock.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Typescript v1 declaration files
typings/
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
build
dist
temp
.DS_Store
.idea
demos
lib
*.sw*
*.un~
# cache
*.cache
public
esm
es
.github
# .storybook
.vscode/
stats.json
.nx/cache
.nx/workspace-data
# Logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov/
# Coverage directory used by tools like istanbul
coverage/
# nyc test coverage
.nyc_output/
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt/
# Bower dependency directory (https://bower.io/)
bower_components/
# node-waf configuration
.lock-wscript/
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release/
# Dependency directories
node_modules/
jspm_packages/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm/
# Optional eslint cache
.eslintcache/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
# next.js build output
.next/
# Docusaurus cache and generated files
.docusaurus/
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# yarn v2
.yarn/cache/
.yarn/unplugged/
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
# OS X temporary files
.DS_Store/
# IntelliJ IDEA project files; if you want to commit IntelliJ settings, this recipe may be helpful:
# https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
.idea/
*.iml
# Visual Studio Code
.vscode/
!.vscode/tasks.json
!.vscode/launch.json
# Rush temporary files
common/deploy/
common/temp/
common/autoinstallers/*/.npmrc
**/.rush/temp/
*.lock
# Common toolchain intermediate files
temp/
lib/
lib-amd/
lib-es6/
lib-esnext/
lib-commonjs/
lib-shim/
dist/
dist-storybook/
*.tsbuildinfo
# Heft temporary files
.cache/
.heft/
pnpm-lock.yaml
================================================
FILE: .npmignore
================================================
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# lock
package-lock.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Typescript v1 declaration files
typings/
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.DS_Store
# npmignore - content above this line is automatically generated and modifications may be omitted
# see npmjs.com/npmignore for more details.
test
*.sw*
*.un~
.idea
bin
demos
docs
temp
webpack-dev.config.js
webpack.config.js
public
.cache
site
examples
gatsby-browser.js
gatsby-config.js
================================================
FILE: .prettierrc
================================================
{}
================================================
FILE: .stylelintrc.json
================================================
{
"extends": ["stylelint-prettier/recommended", "stylelint-config-standard"],
"customSyntax": "postcss-lit"
}
================================================
FILE: .travis.yml
================================================
language: node_js
node_js:
- '12'
env:
- NODE_ENV=test
addons:
apt:
packages:
- xvfb
- libgconf-2-4
install:
- export DISPLAY=':99.0'
- Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- yarn
script:
- |
if [ "$TEST_TYPE" = test ]; then
yarn ci && bash <(curl -s https://codecov.io/bash)
else
yarn $TEST_TYPE
fi
env:
matrix:
- TEST_TYPE=lint
- TEST_TYPE=test
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2018 Alipay.inc
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README-zh-CN.md
================================================
# F6:移动端图可视化引擎
 [](https://travis-ci.org/antvis/f6) [](https://codecov.io/gh/antvis/f6)   [](https://www.npmjs.com/package/@antv/f6) [](https://npmjs.org/package/@antv/f6) [](http://isitmaintained.com/project/antvis/f6 "Percentage of issues still open")
[English](./README-en-US.md) | 简体中文
## 欢迎扫码体验
<img src='https://gw.alipayobjects.com/mdn/rms_5c3b4a/afts/img/A*-VctS49Qe6QAAAAAAAAAAAAAARQnAQ' width=550 alt='img'/>
## 什么是 F6
<a href='https://github.com/antvis/f6' target='_blank'>F6</a> 是一款可以快速、流畅运行于移动设备中的图可视化引擎,通过丰富的布局、组件及分析能力,帮助用户落地跨平台的图可视化应用解决方案。在 H5、小程序等移动端平台上,对包体积、性能有更高的要求,也需要定义一套合适的交互模式。针对以上问题,我们在 G6 的基础上重新设计并构建了 F6。F6 不仅具有基础的关联图绘制、事件、动画,同时内置了常用的移动端交互模式、丰富的布局和分析组件,通过简单的配置即可使用。
<img src='https://raw.githubusercontent.com/antvis/F6/master/examples.gif' width='100%' alt='img'/>
如果您还没有使用过 F6, 建议通过 [快速上手](https://f6.antv.vision/zh/docs/manual/getting-started) 抢先体验 F6 的魅力。
## F6 文档
- [F6 入门教程](https://f6.antv.vision/zh/docs/manual/introduction)
- [F6 核心概念](https://f6.antv.vision/zh/docs/manual/middle/overview)
- [F6 扩展阅读](https://f6.antv.vision/zh/docs/manual/advanced/coordinate-system)
- [API](https://f6.antv.vision/zh/docs/api/Graph)
- [示例](https://f6.antv.vision/zh/docs/examples/tree/compactBox)
## 安装
```bash
$ npm install @antv/f6
```
## 使用
<img src="https://gw.alipayobjects.com/mdn/rms_5c3b4a/afts/img/A*g8A8T6urwOEAAAAAAAAAAAAAARQnAQ" width=500 alt='' />
- <a href='https://herbox-embed.alipay.com/p/f6/demo' target='_blank'>demo</a>
```js
import F6 from "@antv/f6";
import graphData from "./data";
import dagreLayout from "@antv/f6/dist/extends/layout/dagreLayout";
import TreeGraph from "@antv/f6/dist/extends/graph/treeGraph";
F6.registerLayout("dagreLayout", dagreLayout);
F6.registerGraph("TreeGraph", TreeGraph);
Page({
data: {
width: 300,
height: 400,
pixelRatio: 1,
},
onLoad() {
const { windowWidth, windowHeight, pixelRatio } = my.getSystemInfoSync();
this.setData({
width: windowWidth,
height: windowHeight,
pixelRatio: pixelRatio,
});
},
onCanvasInit(ctx, rect, canvas, renderer) {
this.graph = new F6.TreeGraph({
context: ctx,
renderer,
width: this.data.width,
height: this.data.height,
linkCenter: true,
modes: {
default: ["drag-canvas", "zoom-canvas"],
},
defaultNode: {
size: 40,
},
layout: {
type: "compactBox",
direction: "RL",
getId: function getId(d) {
return d.id;
},
getHeight: () => {
return 26;
},
getWidth: () => {
return 26;
},
getVGap: () => {
return 20;
},
getHGap: () => {
return 30;
},
radial: false,
},
});
this.graph.node(function (node) {
return {
label: node.id,
};
});
this.graph.data(graphData);
this.graph.render();
this.graph.fitView();
},
onTouch(e) {
this.graph.emitEvent(e);
},
onUnload() {
this.graph?.destroy();
},
});
```
## 如何开发
```bash
$ npm install -g @microsoft/rush
# update dependencies
$ rush update
# build the packages
$ rush build
# demo
$ cd packages/f6 && rushx storybook
```
更详细的内容请参考 [快速上手](https://f6.antv.vision/zh/docs/manual/getting-started) 文档。
## 如何贡献
请让我们知道您要解决或贡献什么,所以在贡献之前请先提交 <a href='https://github.com/antvis/f6/issues' target='_blank'>issues</a> 描述 bug 或建议。
成为一个贡献者前请阅读 <a href='https://github.com/antvis/F6/blob/master/packages/f6/CONTRIBUTING.zh-CN.md' target='_blank'>代码贡献规范</a>。
## License
<a href='https://github.com/antvis/f6/blob/master/LICENSE' target='_blank'>MIT license</a>。
================================================
FILE: README.md
================================================
# F6: A Mobile Graph Visualization Framework in TypeScript.



[](https://www.npmjs.com/package/@antv/f6)
[](https://npmjs.org/package/@antv/f6)
[](http://isitmaintained.com/project/antvis/f6 "Percentage of issues still open")
English | [简体中文](./README-zh-CN.md)
## What is F6
[F6](https://github.com/antvis/f6) is a mobile graph visualization engine, which provides a set of basic mechanisms, including rendering, layout, analysis, interaction, animation, and other auxiliary tools. F6 aims to simplify the relationships, and help people to obtain the insight of relational data.
<img src='https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*zTjwQaXokeQAAAAAAAAAAABkARQnAQ' width=550 alt='' />
Developers are able to build graph visualization **analysis** applications or graph visualization **modeling** applications easily.

> Powerful Animation and Interactions
<!-- <img src="https://user-images.githubusercontent.com/6113694/44995293-02858600-afd5-11e8-840c-349e4730d63d.gif" height=150 alt='' /><img src="https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*I9OdTbXJIi0AAAAAAAAAAABkARQnAQ" height=150 alt='' /><img src="https://user-images.githubusercontent.com/6113694/44995332-2ba61680-afd5-11e8-8cab-db0e9d08ceb7.gif" height=150 alt='' />
<img src="https://gw.alipayobjects.com/zos/rmsportal/HQxYguinFOMIXrGQOABY.gif" height=150 alt='' /><img src="https://gw.alipayobjects.com/zos/rmsportal/nAugyFgrbrUWPmDIDiQm.gif" height=150 alt='' /><img src="https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*xoufSYcjK2AAAAAAAAAAAABkARQnAQ" height=150 alt='' />
> Powerful Layouts -->
## Features
- Abundant Built-in Items: Nodes and edges with free configurations;
- Steerable Interactions: More than 10 basic interaction behaviors ;
- Powerful Layout: More than 10 layout algorithms;
- Convenient Components: Outstanding ability and performance;
- Friendly User Experience: Complete documents for different levels of user requirements. TypeScript supported.
F6 concentrates on the principle of 'good by default'. In addition, the custom mechanism of the item, interation behavior, and layout satisfies the customazation requirements.
<img src='https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*Y0c6S7cxjVkAAAAAAAAAAABkARQnAQ' width=800 height=200 alt='' />
> Abundant Built-in Items
## Installation
```bash
$ npm install @antv/f6
```
## Usage
<img src="https://gw.alipayobjects.com/mdn/rms_5c3b4a/afts/img/A*g8A8T6urwOEAAAAAAAAAAAAAARQnAQ" width=500 alt='' />
- <a href='https://herbox-embed.alipay.com/p/f6/demo' target='_blank'>demo</a>
```js
import F6 from "@antv/f6";
import graphData from "./data";
import dagreLayout from "@antv/f6/dist/extends/layout/dagreLayout";
import TreeGraph from "@antv/f6/dist/extends/graph/treeGraph";
F6.registerLayout("dagreLayout", dagreLayout);
F6.registerGraph("TreeGraph", TreeGraph);
Page({
data: {
width: 300,
height: 400,
pixelRatio: 1,
},
onLoad() {
const { windowWidth, windowHeight, pixelRatio } = my.getSystemInfoSync();
this.setData({
width: windowWidth,
height: windowHeight,
pixelRatio: pixelRatio,
});
},
onCanvasInit(ctx, rect, canvas, renderer) {
this.graph = new F6.TreeGraph({
context: ctx,
renderer,
width: this.data.width,
height: this.data.height,
linkCenter: true,
modes: {
default: ["drag-canvas", "zoom-canvas"],
},
defaultNode: {
size: 40,
},
layout: {
type: "compactBox",
direction: "RL",
getId: function getId(d) {
return d.id;
},
getHeight: () => {
return 26;
},
getWidth: () => {
return 26;
},
getVGap: () => {
return 20;
},
getHGap: () => {
return 30;
},
radial: false,
},
});
this.graph.node(function (node) {
return {
label: node.id,
};
});
this.graph.data(graphData);
this.graph.render();
this.graph.fitView();
},
onTouch(e) {
this.graph.emitEvent(e);
},
onUnload() {
this.graph?.destroy();
},
});
```
For more information of the usage, please refer to [Getting Started](https://antv-f6.gitee.io/en/docs/manual/getting-started).
## Development
```bash
$ npm install -g @microsoft/rush
# update dependencies
$ rush update
# build the packages
$ rush build
# demo
$ cd packages/f6 && rushx storybook
```
## Documents
- <a href='https://f6.antv.vision/zh/docs/manual/introduction' target='_blank'>Tutorial</a>
- <a href='https://f6.antv.vision/zh/docs/manual/middle/overview' target='_blank'>Middle Guides</a>
- <a href='https://f6.antv.vision/zh/docs/manual/advanced/coordinate-system' target='_blank'>Further Reading</a>
- <a href='https://f6.antv.vision/zh/docs/api/Graph' target='_blank'>API Reference</a>
## How to Contribute
Please let us know what you are you going to help. Do check out [issues](https://github.com/antvis/f6/issues) for bug reports or suggestions first.
To become a contributor, please follow our [contributing guide](https://github.com/antvis/f6/blob/master/packages/f6/CONTRIBUTING.md).
## License
[MIT license](./LICENSE).
================================================
FILE: SECURITY.md
================================================
# Security Policy
## Introduction
This security policy outlines how to report and handle security vulnerabilities in our project.
## Reporting a Vulnerability
If you discover a potential security vulnerability, please email us at [openwayne@gmail.com](mailto:openwayne@gmail.com) with the details. To protect our users, we request that you do not publicly disclose the vulnerability until it has been addressed.
When reporting a vulnerability, please include as much of the following information as possible:
- A detailed description of the vulnerability
- Steps to reproduce the issue
- Any relevant logs or screenshots
- Your contact information (optional)
We will acknowledge your report within 7 days and provide a preliminary response.
## Response Process
Upon receiving a vulnerability report, we will:
1. Acknowledge receipt of the report within 7 days.
2. Assess the severity and impact of the vulnerability.
3. Develop and test a fix.
4. Release a security update once the vulnerability is fixed.
5. If necessary, issue a security advisory to inform users.
We aim to address all critical vulnerabilities within 30 days. If a fix takes longer, we will provide updates on the progress to the reporter.
## Security Advisories
We will publish all security advisories on the [project's releases page](https://github.com/antvis/F6/releases). Please check this page regularly to ensure your version is up-to-date and secure.
## Responsible Disclosure
We ask that all reporters practice responsible disclosure by not publicly disclosing vulnerability details until a fix has been made. We believe responsible disclosure helps ensure the safety of our users while giving the development team adequate time to address the issue.
================================================
FILE: binding.gyp
================================================
{
"targets": [
{
"target_name": "binding",
"sources": [ "src/binding.cc" ]
}
]
}
================================================
FILE: common/autoinstallers/rush-prettier/package.json
================================================
{
"name": "rush-prettier",
"version": "1.0.0",
"private": true,
"dependencies": {},
"repository": "git@github.com:antvis/F6.git",
"dependencies": {
"prettier": "^3.3.2",
"pretty-quick": "^4.0.0"
}
}
================================================
FILE: common/config/rush/.npmrc
================================================
# Rush uses this file to configure the NPM package registry during installation. It is applicable
# to PNPM, NPM, and Yarn package managers. It is used by operations such as "rush install",
# "rush update", and the "install-run.js" scripts.
#
# NOTE: The "rush publish" command uses .npmrc-publish instead.
#
# Before invoking the package manager, Rush will generate an .npmrc in the folder where installation
# is performed. This generated file will omit any config lines that reference environment variables
# that are undefined in that session; this avoids problems that would otherwise result due to
# a missing variable being replaced by an empty string.
#
# If "subspacesEnabled" is true in subspaces.json, the generated file will merge settings from
# "common/config/rush/.npmrc" and "common/config/subspaces/<name>/.npmrc", with the latter taking
# precedence.
#
# * * * SECURITY WARNING * * *
#
# It is NOT recommended to store authentication tokens in a text file on a lab machine, because
# other unrelated processes may be able to read that file. Also, the file may persist indefinitely,
# for example if the machine loses power. A safer practice is to pass the token via an
# environment variable, which can be referenced from .npmrc using ${} expansion. For example:
#
# //registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN}
#
registry=https://registry.npmjs.org/
always-auth=false
================================================
FILE: common/config/rush/.npmrc-publish
================================================
# This config file is very similar to common/config/rush/.npmrc, except that .npmrc-publish
# is used by the "rush publish" command, as publishing often involves different credentials
# and registries than other operations.
#
# Before invoking the package manager, Rush will copy this file to "common/temp/publish-home/.npmrc"
# and then temporarily map that folder as the "home directory" for the current user account.
# This enables the same settings to apply for each project folder that gets published. The copied file
# will omit any config lines that reference environment variables that are undefined in that session;
# this avoids problems that would otherwise result due to a missing variable being replaced by
# an empty string.
#
# * * * SECURITY WARNING * * *
#
# It is NOT recommended to store authentication tokens in a text file on a lab machine, because
# other unrelated processes may be able to read the file. Also, the file may persist indefinitely,
# for example if the machine loses power. A safer practice is to pass the token via an
# environment variable, which can be referenced from .npmrc using ${} expansion. For example:
#
# //registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN}
#
================================================
FILE: common/config/rush/.pnpmfile.cjs
================================================
"use strict";
/**
* When using the PNPM package manager, you can use pnpmfile.js to workaround
* dependencies that have mistakes in their package.json file. (This feature is
* functionally similar to Yarn's "resolutions".)
*
* For details, see the PNPM documentation:
* https://pnpm.js.org/docs/en/hooks.html
*
* IMPORTANT: SINCE THIS FILE CONTAINS EXECUTABLE CODE, MODIFYING IT IS LIKELY TO INVALIDATE
* ANY CACHED DEPENDENCY ANALYSIS. After any modification to pnpmfile.js, it's recommended to run
* "rush update --full" so that PNPM will recalculate all version selections.
*/
module.exports = {
hooks: {
readPackage,
},
};
/**
* This hook is invoked during installation before a package's dependencies
* are selected.
* The `packageJson` parameter is the deserialized package.json
* contents for the package that is about to be installed.
* The `context` parameter provides a log() function.
* The return value is the updated object.
*/
function readPackage(packageJson, context) {
// // The karma types have a missing dependency on typings from the log4js package.
// if (packageJson.name === '@types/karma') {
// context.log('Fixed up dependencies for @types/karma');
// packageJson.dependencies['log4js'] = '0.6.38';
// }
return packageJson;
}
================================================
FILE: common/config/rush/artifactory.json
================================================
/**
* This configuration file manages Rush integration with JFrog Artifactory services.
* More documentation is available on the Rush website: https://rushjs.io
*/
{
"$schema": "https://developer.microsoft.com/json-schemas/rush/v5/artifactory.schema.json",
"packageRegistry": {
/**
* (Required) Set this to "true" to enable Rush to manage tokens for an Artifactory NPM registry.
* When enabled, "rush install" will automatically detect when the user's ~/.npmrc
* authentication token is missing or expired. And "rush setup" will prompt the user to
* renew their token.
*
* The default value is false.
*/
"enabled": false,
/**
* (Required) Specify the URL of your NPM registry. This is the same URL that appears in
* your .npmrc file. It should look something like this example:
*
* https://your-company.jfrog.io/your-project/api/npm/npm-private/
*/
"registryUrl": "",
/**
* A list of custom strings that "rush setup" should add to the user's ~/.npmrc file at the time
* when the token is updated. This could be used for example to configure the company registry
* to be used whenever NPM is invoked as a standalone command (but it's not needed for Rush
* operations like "rush add" and "rush install", which get their mappings from the monorepo's
* common/config/rush/.npmrc file).
*
* NOTE: The ~/.npmrc settings are global for the user account on a given machine, so be careful
* about adding settings that may interfere with other work outside the monorepo.
*/
"userNpmrcLinesToAdd": [
// "@example:registry=https://your-company.jfrog.io/your-project/api/npm/npm-private/"
],
/**
* (Required) Specifies the URL of the Artifactory control panel where the user can generate
* an API key. This URL is printed after the "visitWebsite" message.
* It should look something like this example: https://your-company.jfrog.io/
* Specify an empty string to suppress this line entirely.
*/
"artifactoryWebsiteUrl": "",
/**
* Uncomment this line to specify the type of credential to save in the user's ~/.npmrc file.
* The default is "password", which means the user's API token will be traded in for an
* npm password specific to that registry. Optionally you can specify "authToken", which
* will save the user's API token as credentials instead.
*/
// "credentialType": "password",
/**
* These settings allow the "rush setup" interactive prompts to be customized, for
* example with messages specific to your team or configuration. Specify an empty string
* to suppress that message entirely.
*/
"messageOverrides": {
/**
* Overrides the message that normally says:
* "This monorepo consumes packages from an Artifactory private NPM registry."
*/
// "introduction": "",
/**
* Overrides the message that normally says:
* "Please contact the repository maintainers for help with setting up an Artifactory user account."
*/
// "obtainAnAccount": "",
/**
* Overrides the message that normally says:
* "Please open this URL in your web browser:"
*
* The "artifactoryWebsiteUrl" string is printed after this message.
*/
// "visitWebsite": "",
/**
* Overrides the message that normally says:
* "Your user name appears in the upper-right corner of the JFrog website."
*/
// "locateUserName": "",
/**
* Overrides the message that normally says:
* "Click 'Edit Profile' on the JFrog website. Click the 'Generate API Key'
* button if you haven't already done so previously."
*/
// "locateApiKey": ""
/**
* Overrides the message that normally prompts:
* "What is your Artifactory user name?"
*/
// "userNamePrompt": ""
/**
* Overrides the message that normally prompts:
* "What is your Artifactory API key?"
*/
// "apiKeyPrompt": ""
}
}
}
================================================
FILE: common/config/rush/build-cache.json
================================================
/**
* This configuration file manages Rush's build cache feature.
* More documentation is available on the Rush website: https://rushjs.io
*/
{
"$schema": "https://developer.microsoft.com/json-schemas/rush/v5/build-cache.schema.json",
/**
* (Required) EXPERIMENTAL - Set this to true to enable the build cache feature.
*
* See https://rushjs.io/pages/maintainer/build_cache/ for details about this experimental feature.
*/
"buildCacheEnabled": false,
/**
* (Required) Choose where project build outputs will be cached.
*
* Possible values: "local-only", "azure-blob-storage", "amazon-s3"
*/
"cacheProvider": "local-only",
/**
* Setting this property overrides the cache entry ID. If this property is set, it must contain
* a [hash] token.
*
* Other available tokens:
* - [projectName] Example: "@my-scope/my-project"
* - [projectName:normalize] Example: "my-scope+my-project"
* - [phaseName] Example: "_phase:test/api"
* - [phaseName:normalize] Example: "_phase:test+api"
* - [phaseName:trimPrefix] Example: "test/api"
* - [os] Example: "win32"
* - [arch] Example: "x64"
*/
// "cacheEntryNamePattern": "[projectName:normalize]-[phaseName:normalize]-[hash]"
/**
* Use this configuration with "cacheProvider"="azure-blob-storage"
*/
"azureBlobStorageConfiguration": {
/**
* (Required) The name of the the Azure storage account to use for build cache.
*/
// "storageAccountName": "example",
/**
* (Required) The name of the container in the Azure storage account to use for build cache.
*/
// "storageContainerName": "my-container",
/**
* The Azure environment the storage account exists in. Defaults to AzurePublicCloud.
*
* Possible values: "AzurePublicCloud", "AzureChina", "AzureGermany", "AzureGovernment"
*/
// "azureEnvironment": "AzurePublicCloud",
/**
* An optional prefix for cache item blob names.
*/
// "blobPrefix": "my-prefix",
/**
* If set to true, allow writing to the cache. Defaults to false.
*/
// "isCacheWriteAllowed": true
},
/**
* Use this configuration with "cacheProvider"="amazon-s3"
*/
"amazonS3Configuration": {
/**
* (Required unless s3Endpoint is specified) The name of the bucket to use for build cache.
* Example: "my-bucket"
*/
// "s3Bucket": "my-bucket",
/**
* (Required unless s3Bucket is specified) The Amazon S3 endpoint of the bucket to use for build cache.
* This should not include any path; use the s3Prefix to set the path.
* Examples: "my-bucket.s3.us-east-2.amazonaws.com" or "http://localhost:9000"
*/
// "s3Endpoint": "https://my-bucket.s3.us-east-2.amazonaws.com",
/**
* (Required) The Amazon S3 region of the bucket to use for build cache.
* Example: "us-east-1"
*/
// "s3Region": "us-east-1",
/**
* An optional prefix ("folder") for cache items. It should not start with "/".
*/
// "s3Prefix": "my-prefix",
/**
* If set to true, allow writing to the cache. Defaults to false.
*/
// "isCacheWriteAllowed": true
},
/**
* Use this configuration with "cacheProvider"="http"
*/
"httpConfiguration": {
/**
* (Required) The URL of the server that stores the caches.
* Example: "https://build-cacches.example.com/"
*/
// "url": "https://build-cacches.example.com/",
/**
* (Optional) The HTTP method to use when writing to the cache (defaults to PUT).
* Should be one of PUT, POST, or PATCH.
* Example: "PUT"
*/
// "uploadMethod": "PUT",
/**
* (Optional) HTTP headers to pass to the cache server.
* Example: { "X-HTTP-Company-Id": "109283" }
*/
// "headers": {},
/**
* (Optional) Shell command that prints the authorization token needed to communicate with the
* cache server, and exits with exit code 0. This command will be executed from the root of
* the monorepo.
* Example: { "exec": "node", "args": ["common/scripts/auth.js"] }
*/
// "tokenHandler": { "exec": "node", "args": ["common/scripts/auth.js"] },
/**
* (Optional) Prefix for cache keys.
* Example: "my-company-"
*/
// "cacheKeyPrefix": "",
/**
* (Optional) If set to true, allow writing to the cache. Defaults to false.
*/
// "isCacheWriteAllowed": true
}
}
================================================
FILE: common/config/rush/cobuild.json
================================================
/**
* This configuration file manages Rush's cobuild feature.
* More documentation is available on the Rush website: https://rushjs.io
*/
{
"$schema": "https://developer.microsoft.com/json-schemas/rush/v5/cobuild.schema.json",
/**
* (Required) EXPERIMENTAL - Set this to true to enable the cobuild feature.
* RUSH_COBUILD_CONTEXT_ID should always be specified as an environment variable with an non-empty string,
* otherwise the cobuild feature will be disabled.
*/
"cobuildFeatureEnabled": false,
/**
* (Required) Choose where cobuild lock will be acquired.
*
* The lock provider is registered by the rush plugins.
* For example, @rushstack/rush-redis-cobuild-plugin registers the "redis" lock provider.
*/
"cobuildLockProvider": "redis"
}
================================================
FILE: common/config/rush/command-line.json
================================================
/**
* This configuration file defines custom commands for the "rush" command-line.
* More documentation is available on the Rush website: https://rushjs.io
*/
{
"$schema": "https://developer.microsoft.com/json-schemas/rush/v5/command-line.schema.json",
/**
* Custom "commands" introduce new verbs for the command-line. To see the help for these
* example commands, try "rush --help", "rush my-bulk-command --help", or
* "rush my-global-command --help".
*/
"commands": [
// {
// /**
// * (Required) Determines the type of custom command.
// * Rush's "bulk" commands are invoked separately for each project. By default, the command will run for
// * every project in the repo, according to the dependency graph (similar to how "rush build" works).
// * The set of projects can be restricted e.g. using the "--to" or "--from" parameters.
// */
// "commandKind": "bulk",
//
// /**
// * (Required) The name that will be typed as part of the command line. This is also the name
// * of the "scripts" hook in the project's package.json file (if "shellCommand" is not specified).
// *
// * The name should be comprised of lower case words separated by hyphens or colons. The name should include an
// * English verb (e.g. "deploy"). Use a hyphen to separate words (e.g. "upload-docs"). A group of related commands
// * can be prefixed with a colon (e.g. "docs:generate", "docs:deploy", "docs:serve", etc).
// *
// * Note that if the "rebuild" command is overridden here, it becomes separated from the "build" command
// * and will call the "rebuild" script instead of the "build" script.
// */
// "name": "my-bulk-command",
//
// /**
// * (Required) A short summary of the custom command to be shown when printing command line
// * help, e.g. "rush --help".
// */
// "summary": "Example bulk custom command",
//
// /**
// * A detailed description of the command to be shown when printing command line
// * help (e.g. "rush --help my-command").
// * If omitted, the "summary" text will be shown instead.
// *
// * Whenever you introduce commands/parameters, taking a little time to write meaningful
// * documentation can make a big difference for the developer experience in your repo.
// */
// "description": "This is an example custom command that runs separately for each project",
//
// /**
// * By default, Rush operations acquire a lock file which prevents multiple commands from executing simultaneously
// * in the same repo folder. (For example, it would be a mistake to run "rush install" and "rush build" at the
// * same time.) If your command makes sense to run concurrently with other operations,
// * set "safeForSimultaneousRushProcesses" to true to disable this protection.
// *
// * In particular, this is needed for custom scripts that invoke other Rush commands.
// */
// "safeForSimultaneousRushProcesses": false,
//
// /**
// * (Optional) If the `shellCommand` field is set for a bulk command, Rush will invoke it for each
// * selected project; otherwise, Rush will invoke the package.json `"scripts"` entry matching Rush command name.
// *
// * The string is the path to a script that will be invoked using the OS shell. The working directory will be
// * the folder that contains rush.json. If custom parameters are associated with this command, their
// * values will be appended to the end of this string.
// */
// // "shellCommand": "node common/scripts/my-bulk-command.js",
//
// /**
// * (Required) If true, then this command is safe to be run in parallel, i.e. executed
// * simultaneously for multiple projects. Similar to "rush build", regardless of parallelism
// * projects will not start processing until their dependencies have completed processing.
// */
// "enableParallelism": false,
//
// /**
// * Normally projects will be processed according to their dependency order: a given project will not start
// * processing the command until all of its dependencies have completed. This restriction doesn't apply for
// * certain operations, for example a "clean" task that deletes output files. In this case
// * you can set "ignoreDependencyOrder" to true to increase parallelism.
// */
// "ignoreDependencyOrder": false,
//
// /**
// * Normally Rush requires that each project's package.json has a "scripts" entry matching
// * the custom command name. To disable this check, set "ignoreMissingScript" to true;
// * projects with a missing definition will be skipped.
// */
// "ignoreMissingScript": false,
//
// /**
// * When invoking shell scripts, Rush uses a heuristic to distinguish errors from warnings:
// * - If the shell script returns a nonzero process exit code, Rush interprets this as "one or more errors".
// * Error output is displayed in red, and it prevents Rush from attempting to process any downstream projects.
// * - If the shell script returns a zero process exit code but writes something to its stderr stream,
// * Rush interprets this as "one or more warnings". Warning output is printed in yellow, but does NOT prevent
// * Rush from processing downstream projects.
// *
// * Thus, warnings do not interfere with local development, but they will cause a CI job to fail, because
// * the Rush process itself returns a nonzero exit code if there are any warnings or errors. This is by design.
// * In an active monorepo, we've found that if you allow any warnings in your main branch, it inadvertently
// * teaches developers to ignore warnings, which quickly leads to a situation where so many "expected" warnings
// * have accumulated that warnings no longer serve any useful purpose.
// *
// * Sometimes a poorly behaved task will write output to stderr even though its operation was successful.
// * In that case, it's strongly recommended to fix the task. However, as a workaround you can set
// * allowWarningsInSuccessfulBuild=true, which causes Rush to return a nonzero exit code for errors only.
// *
// * Note: The default value is false. In Rush 5.7.x and earlier, the default value was true.
// */
// "allowWarningsInSuccessfulBuild": false,
//
// /**
// * If true then this command will be incremental like the built-in "build" command
// */
// "incremental": false,
//
// /**
// * (EXPERIMENTAL) Normally Rush terminates after the command finishes. If this option is set to "true" Rush
// * will instead enter a loop where it watches the file system for changes to the selected projects. Whenever a
// * change is detected, the command will be invoked again for the changed project and any selected projects that
// * directly or indirectly depend on it.
// *
// * For details, refer to the website article "Using watch mode".
// */
// "watchForChanges": false,
//
// /**
// * (EXPERIMENTAL) Disable cache for this action. This may be useful if this command affects state outside of
// * projects' own folders.
// */
// "disableBuildCache": false
// },
//
// {
// /**
// * (Required) Determines the type of custom command.
// * Rush's "global" commands are invoked once for the entire repo.
// */
// "commandKind": "global",
//
// "name": "my-global-command",
// "summary": "Example global custom command",
// "description": "This is an example custom command that runs once for the entire repo",
//
// "safeForSimultaneousRushProcesses": false,
//
// /**
// * (Required) A script that will be invoked using the OS shell. The working directory will be
// * the folder that contains rush.json. If custom parameters are associated with this command, their
// * values will be appended to the end of this string.
// */
// "shellCommand": "node common/scripts/my-global-command.js",
//
// /**
// * If your "shellCommand" script depends on NPM packages, the recommended best practice is
// * to make it into a regular Rush project that builds using your normal toolchain. In cases where
// * the command needs to work without first having to run "rush build", the recommended practice
// * is to publish the project to an NPM registry and use common/scripts/install-run.js to launch it.
// *
// * Autoinstallers offer another possibility: They are folders under "common/autoinstallers" with
// * a package.json file and shrinkwrap file. Rush will automatically invoke the package manager to
// * install these dependencies before an associated command is invoked. Autoinstallers have the
// * advantage that they work even in a branch where "rush install" is broken, which makes them a
// * good solution for Git hook scripts. But they have the disadvantages of not being buildable
// * projects, and of increasing the overall installation footprint for your monorepo.
// *
// * The "autoinstallerName" setting must not contain a path and must be a valid NPM package name.
// * For example, the name "my-task" would map to "common/autoinstallers/my-task/package.json", and
// * the "common/autoinstallers/my-task/node_modules/.bin" folder would be added to the shell PATH when
// * invoking the "shellCommand".
// */
// // "autoinstallerName": "my-task"
// }
{
"name": "prettier",
"commandKind": "global",
"summary": "Used by the pre-commit Git hook. This command invokes Prettier to reformat staged changes.",
"safeForSimultaneousRushProcesses": true,
"autoinstallerName": "rush-prettier",
// This will invoke common/autoinstallers/rush-prettier/node_modules/.bin/pretty-quick
"shellCommand": "pretty-quick --staged"
},
{
"commandKind": "bulk",
"name": "storybook",
"summary": "Run Storybook for all projects",
"description": "Run Storybook for all projects",
"enableParallelism": true,
"ignoreDependencyOrder": true,
"safeForSimultaneousRushProcesses": true,
"shellCommand": "npm run storybook"
}
],
/**
* Custom "parameters" introduce new parameters for specified Rush command-line commands.
* For example, you might define a "--production" parameter for the "rush build" command.
*/
"parameters": [
// {
// /**
// * (Required) Determines the type of custom parameter.
// * A "flag" is a custom command-line parameter whose presence acts as an on/off switch.
// */
// "parameterKind": "flag",
//
// /**
// * (Required) The long name of the parameter. It must be lower-case and use dash delimiters.
// */
// "longName": "--my-flag",
//
// /**
// * An optional alternative short name for the parameter. It must be a dash followed by a single
// * lower-case or upper-case letter, which is case-sensitive.
// *
// * NOTE: The Rush developers recommend that automation scripts should always use the long name
// * to improve readability. The short name is only intended as a convenience for humans.
// * The alphabet letters run out quickly, and are difficult to memorize, so *only* use
// * a short name if you expect the parameter to be needed very often in everyday operations.
// */
// "shortName": "-m",
//
// /**
// * (Required) A long description to be shown in the command-line help.
// *
// * Whenever you introduce commands/parameters, taking a little time to write meaningful
// * documentation can make a big difference for the developer experience in your repo.
// */
// "description": "A custom flag parameter that is passed to the scripts that are invoked when building projects",
//
// /**
// * (Required) A list of custom commands and/or built-in Rush commands that this parameter may
// * be used with. The parameter will be appended to the shell command that Rush invokes.
// */
// "associatedCommands": ["build", "rebuild"]
// },
//
// {
// /**
// * (Required) Determines the type of custom parameter.
// * A "string" is a custom command-line parameter whose argument is a single text string.
// */
// "parameterKind": "string",
// "longName": "--my-string",
// "description": "A custom string parameter for the \"my-global-command\" custom command",
//
// "associatedCommands": ["my-global-command"],
//
// "argumentName": "SOME_TEXT",
//
// /**
// * If true, this parameter must be included with the command. The default is false.
// */
// "required": false
// },
//
// {
// /**
// * (Required) Determines the type of custom parameter.
// * A "choice" is a custom command-line parameter whose argument must be chosen from a list of
// * allowable alternatives (similar to an enum).
// */
// "parameterKind": "choice",
// "longName": "--my-choice",
// "description": "A custom choice parameter for the \"my-global-command\" custom command",
//
// "associatedCommands": ["my-global-command"],
// "required": false,
//
// /**
// * If a "defaultValue" is specified, then if the Rush command line is invoked without
// * this parameter, it will be automatically added with the "defaultValue" as the argument.
// * The value must be one of the defined alternatives.
// */
// "defaultValue": "vanilla",
//
// /**
// * (Required) A list of alternative argument values that can be chosen for this parameter.
// */
// "alternatives": [
// {
// /**
// * A token that is one of the alternatives that can be used with the choice parameter,
// * e.g. "vanilla" in "--flavor vanilla".
// */
// "name": "vanilla",
//
// /**
// * A detailed description for the alternative that can be shown in the command-line help.
// *
// * Whenever you introduce commands/parameters, taking a little time to write meaningful
// * documentation can make a big difference for the developer experience in your repo.
// */
// "description": "Use the vanilla flavor"
// },
//
// {
// "name": "chocolate",
// "description": "Use the chocolate flavor"
// },
//
// {
// "name": "strawberry",
// "description": "Use the strawberry flavor"
// }
// ]
// },
//
// {
// /**
// * (Required) Determines the type of custom parameter.
// * An "integer" is a custom command-line parameter whose value is an integer number.
// */
// "parameterKind": "integer",
// "longName": "--my-integer",
// "description": "A custom integer parameter for the \"my-global-command\" custom command",
//
// "associatedCommands": ["my-global-command"],
// "argumentName": "SOME_NUMBER",
// "required": false
// },
//
// {
// /**
// * (Required) Determines the type of custom parameter.
// * An "integerList" is a custom command-line parameter whose argument is an integer.
// * The parameter can be specified multiple times to build a list.
// *
// * For example, if the parameter name is "--my-integer-list", then the custom command
// * might be invoked as
// * `rush my-global-command --my-integer-list 1 --my-integer-list 2 --my-integer-list 3`
// * and the parsed array would be [1,2,3].
// */
// "parameterKind": "integerList",
// "longName": "--my-integer-list",
// "description": "A custom integer list parameter for the \"my-global-command\" custom command",
//
// "associatedCommands": ["my-global-command"],
// "argumentName": "SOME_NUMBER",
// "required": false
// },
//
// {
// /**
// * (Required) Determines the type of custom parameter.
// * An "stringList" is a custom command-line parameter whose argument is a text string.
// * The parameter can be specified multiple times to build a list.
// *
// * For example, if the parameter name is "--my-string-list", then the custom command
// * might be invoked as
// * `rush my-global-command --my-string-list A --my-string-list B --my-string-list C`
// * and the parsed array would be [A,B,C].
// */
// "parameterKind": "stringList",
// "longName": "--my-string-list",
// "description": "A custom string list parameter for the \"my-global-command\" custom command",
//
// "associatedCommands": ["my-global-command"],
// "argumentName": "SOME_TEXT",
// "required": false
// },
//
// {
// /**
// * (Required) Determines the type of custom parameter.
// * A "choice" is a custom command-line parameter whose argument must be chosen from a list of
// * allowable alternatives (similar to an enum).
// * The parameter can be specified multiple times to build a list.
// *
// * For example, if the parameter name is "--my-choice-list", then the custom command
// * might be invoked as
// * `rush my-global-command --my-string-list vanilla --my-string-list chocolate`
// * and the parsed array would be [vanilla,chocolate].
// */
// "parameterKind": "choiceList",
// "longName": "--my-choice-list",
// "description": "A custom choice list parameter for the \"my-global-command\" custom command",
//
// "associatedCommands": ["my-global-command"],
// "required": false,
//
// /**
// * (Required) A list of alternative argument values that can be chosen for this parameter.
// */
// "alternatives": [
// {
// /**
// * A token that is one of the alternatives that can be used with the choice parameter,
// * e.g. "vanilla" in "--flavor vanilla".
// */
// "name": "vanilla",
//
// /**
// * A detailed description for the alternative that can be shown in the command-line help.
// *
// * Whenever you introduce commands/parameters, taking a little time to write meaningful
// * documentation can make a big difference for the developer experience in your repo.
// */
// "description": "Use the vanilla flavor"
// },
//
// {
// "name": "chocolate",
// "description": "Use the chocolate flavor"
// },
//
// {
// "name": "strawberry",
// "description": "Use the strawberry flavor"
// }
// ]
// }
]
}
================================================
FILE: common/config/rush/common-versions.json
================================================
/**
* This configuration file specifies NPM dependency version selections that affect all projects
* in a Rush repo. More documentation is available on the Rush website: https://rushjs.io
*/
{
"$schema": "https://developer.microsoft.com/json-schemas/rush/v5/common-versions.schema.json",
/**
* A table that specifies a "preferred version" for a given NPM package. This feature is typically used
* to hold back an indirect dependency to a specific older version, or to reduce duplication of indirect dependencies.
*
* The "preferredVersions" value can be any SemVer range specifier (e.g. "~1.2.3"). Rush injects these values into
* the "dependencies" field of the top-level common/temp/package.json, which influences how the package manager
* will calculate versions. The specific effect depends on your package manager. Generally it will have no
* effect on an incompatible or already constrained SemVer range. If you are using PNPM, similar effects can be
* achieved using the pnpmfile.js hook. See the Rush documentation for more details.
*
* After modifying this field, it's recommended to run "rush update --full" so that the package manager
* will recalculate all version selections.
*/
"preferredVersions": {
/**
* When someone asks for "^1.0.0" make sure they get "1.2.3" when working in this repo,
* instead of the latest version.
*/
// "some-library": "1.2.3"
},
/**
* When set to true, for all projects in the repo, all dependencies will be automatically added as preferredVersions,
* except in cases where different projects specify different version ranges for a given dependency. For older
* package managers, this tended to reduce duplication of indirect dependencies. However, it can sometimes cause
* trouble for indirect dependencies with incompatible peerDependencies ranges.
*
* The default value is true. If you're encountering installation errors related to peer dependencies,
* it's recommended to set this to false.
*
* After modifying this field, it's recommended to run "rush update --full" so that the package manager
* will recalculate all version selections.
*/
// "implicitlyPreferredVersions": false,
/**
* If you would like the version specifiers for your dependencies to be consistent, then
* uncomment this line. This is effectively similar to running "rush check" before any
* of the following commands:
*
* rush install, rush update, rush link, rush version, rush publish
*
* In some cases you may want this turned on, but need to allow certain packages to use a different
* version. In those cases, you will need to add an entry to the "allowedAlternativeVersions"
* section of the common-versions.json.
*
* In the case that subspaces is enabled, this setting will take effect at a subspace level.
*/
// "ensureConsistentVersions": true,
/**
* The "rush check" command can be used to enforce that every project in the repo must specify
* the same SemVer range for a given dependency. However, sometimes exceptions are needed.
* The allowedAlternativeVersions table allows you to list other SemVer ranges that will be
* accepted by "rush check" for a given dependency.
*
* IMPORTANT: THIS TABLE IS FOR *ADDITIONAL* VERSION RANGES THAT ARE ALTERNATIVES TO THE
* USUAL VERSION (WHICH IS INFERRED BY LOOKING AT ALL PROJECTS IN THE REPO).
* This design avoids unnecessary churn in this file.
*/
"allowedAlternativeVersions": {
/**
* For example, allow some projects to use an older TypeScript compiler
* (in addition to whatever "usual" version is being used by other projects in the repo):
*/
// "typescript": [
// "~2.4.0"
// ]
}
}
================================================
FILE: common/config/rush/custom-tips.json
================================================
/**
* This configuration file allows repo maintainers to configure extra details to be
* printed alongside certain Rush messages. More documentation is available on the
* Rush website: https://rushjs.io
*/
{
"$schema": "https://developer.microsoft.com/json-schemas/rush/v5/custom-tips.schema.json",
/**
* Custom tips allow you to annotate Rush's console messages with advice tailored for
* your specific monorepo.
*/
"customTips": [
// {
// /**
// * (REQUIRED) An identifier indicating a message that may be printed by Rush.
// * If that message is printed, then this custom tip will be shown.
// * The list of available tip identifiers can be found on this page:
// * https://rushjs.io/pages/maintainer/custom_tips/
// */
// "tipId": "TIP_RUSH_INCONSISTENT_VERSIONS",
//
// /**
// * (REQUIRED) The message text to be displayed for this tip.
// */
// "message": "For additional troubleshooting information, refer this wiki article:\n\nhttps://intranet.contoso.com/docs/pnpm-mismatch"
// }
]
}
================================================
FILE: common/config/rush/experiments.json
================================================
/**
* This configuration file allows repo maintainers to enable and disable experimental
* Rush features. More documentation is available on the Rush website: https://rushjs.io
*/
{
"$schema": "https://developer.microsoft.com/json-schemas/rush/v5/experiments.schema.json"
/**
* By default, 'rush install' passes --no-prefer-frozen-lockfile to 'pnpm install'.
* Set this option to true to pass '--frozen-lockfile' instead for faster installs.
*/
// "usePnpmFrozenLockfileForRushInstall": true,
/**
* By default, 'rush update' passes --no-prefer-frozen-lockfile to 'pnpm install'.
* Set this option to true to pass '--prefer-frozen-lockfile' instead to minimize shrinkwrap changes.
*/
// "usePnpmPreferFrozenLockfileForRushUpdate": true,
/**
* By default, 'rush update' runs as a single operation.
* Set this option to true to instead update the lockfile with `--lockfile-only`, then perform a `--frozen-lockfile` install.
* Necessary when using the `afterAllResolved` hook in .pnpmfile.cjs.
*/
// "usePnpmLockfileOnlyThenFrozenLockfileForRushUpdate": true,
/**
* If using the 'preventManualShrinkwrapChanges' option, restricts the hash to only include the layout of external dependencies.
* Used to allow links between workspace projects or the addition/removal of references to existing dependency versions to not
* cause hash changes.
*/
// "omitImportersFromPreventManualShrinkwrapChanges": true,
/**
* If true, the chmod field in temporary project tar headers will not be normalized.
* This normalization can help ensure consistent tarball integrity across platforms.
*/
// "noChmodFieldInTarHeaderNormalization": true,
/**
* If true, build caching will respect the allowWarningsInSuccessfulBuild flag and cache builds with warnings.
* This will not replay warnings from the cached build.
*/
// "buildCacheWithAllowWarningsInSuccessfulBuild": true,
/**
* If true, build skipping will respect the allowWarningsInSuccessfulBuild flag and skip builds with warnings.
* This will not replay warnings from the skipped build.
*/
// "buildSkipWithAllowWarningsInSuccessfulBuild": true,
/**
* If true, perform a clean install after when running `rush install` or `rush update` if the
* `.npmrc` file has changed since the last install.
*/
// "cleanInstallAfterNpmrcChanges": true,
/**
* If true, print the outputs of shell commands defined in event hooks to the console.
*/
// "printEventHooksOutputToConsole": true,
/**
* If true, Rush will not allow node_modules in the repo folder or in parent folders.
*/
// "forbidPhantomResolvableNodeModulesFolders": true,
/**
* (UNDER DEVELOPMENT) For certain installation problems involving peer dependencies, PNPM cannot
* correctly satisfy versioning requirements without installing duplicate copies of a package inside the
* node_modules folder. This poses a problem for "workspace:*" dependencies, as they are normally
* installed by making a symlink to the local project source folder. PNPM's "injected dependencies"
* feature provides a model for copying the local project folder into node_modules, however copying
* must occur AFTER the dependency project is built and BEFORE the consuming project starts to build.
* The "pnpm-sync" tool manages this operation; see its documentation for details.
* Enable this experiment if you want "rush" and "rushx" commands to resync injected dependencies
* by invoking "pnpm-sync" during the build.
*/
// "usePnpmSyncForInjectedDependencies": true,
/**
* If set to true, Rush will generate a `project-impact-graph.yaml` file in the repository root during `rush update`.
*/
// "generateProjectImpactGraphDuringRushUpdate": true,
/**
* If true, when running in watch mode, Rush will check for phase scripts named `_phase:<name>:ipc` and run them instead
* of `_phase:<name>` if they exist. The created child process will be provided with an IPC channel and expected to persist
* across invocations.
*/
// "useIPCScriptsInWatchMode": true
}
================================================
FILE: common/config/rush/pnpm-config.json
================================================
/**
* This configuration file provides settings specific to the PNPM package manager.
* More documentation is available on the Rush website: https://rushjs.io
*/
{
"$schema": "https://developer.microsoft.com/json-schemas/rush/v5/pnpm-config.schema.json",
/**
* If true, then `rush install` and `rush update` will use the PNPM workspaces feature
* to perform the install, instead of the old model where Rush generated the symlinks
* for each projects's node_modules folder.
*
* When using workspaces, Rush will generate a `common/temp/pnpm-workspace.yaml` file referencing
* all local projects to install. Rush will also generate a `.pnpmfile.cjs` shim which implements
* Rush-specific features such as preferred versions. The user's `common/config/rush/.pnpmfile.cjs`
* is invoked by the shim.
*
* This option is strongly recommended. The default value is false.
*/
"useWorkspaces": true,
/**
* This setting determines how PNPM chooses version numbers during `rush update`.
* For example, suppose `lib-x@3.0.0` depends on `"lib-y": "^1.2.3"` whose latest major
* releases are `1.8.9` and `2.3.4`. The resolution mode `lowest-direct` might choose
* `lib-y@1.2.3`, wheres `highest` will choose 1.8.9, and `time-based` will pick the
* highest compatible version at the time when `lib-x@3.0.0` itself was published (ensuring
* that the version could have been tested by the maintainer of "lib-x"). For local workspace
* projects, `time-based` instead works like `lowest-direct`, avoiding upgrades unless
* they are explicitly requested. Although `time-based` is the most robust option, it may be
* slightly slower with registries such as npmjs.com that have not implemented an optimization.
*
* IMPORTANT: Be aware that PNPM 8.0.0 initially defaulted to `lowest-direct` instead of
* `highest`, but PNPM reverted this decision in 8.6.12 because it caused confusion for users.
* Rush version 5.106.0 and newer avoids this confusion by consistently defaulting to
* `highest` when `resolutionMode` is not explicitly set in pnpm-config.json or .npmrc,
* regardless of your PNPM version.
*
* PNPM documentation: https://pnpm.io/npmrc#resolution-mode
*
* Possible values are: `highest`, `time-based`, and `lowest-direct`.
* The default is `highest`.
*/
// "resolutionMode": "time-based",
/**
* This setting determines whether PNPM will automatically install (non-optional)
* missing peer dependencies instead of reporting an error. Doing so conveniently
* avoids the need to specify peer versions in package.json, but in a large monorepo
* this often creates worse problems. The reason is that peer dependency behavior
* is inherently complicated, and it is easier to troubleshoot consequences of an explicit
* version than an invisible heuristic. The original NPM RFC discussion pointed out
* some other problems with this feature: https://github.com/npm/rfcs/pull/43
* IMPORTANT: Without Rush, the setting defaults to true for PNPM 8 and newer; however,
* as of Rush version 5.109.0 the default is always false unless `autoInstallPeers`
* is specified in pnpm-config.json or .npmrc, regardless of your PNPM version.
* PNPM documentation: https://pnpm.io/npmrc#auto-install-peers
* The default value is false.
*/
// "autoInstallPeers": false,
/**
* If true, then Rush will add the `--strict-peer-dependencies` command-line parameter when
* invoking PNPM. This causes `rush update` to fail if there are unsatisfied peer dependencies,
* which is an invalid state that can cause build failures or incompatible dependency versions.
* (For historical reasons, JavaScript package managers generally do not treat this invalid
* state as an error.)
*
* PNPM documentation: https://pnpm.io/npmrc#strict-peer-dependencies
*
* The default value is false to avoid legacy compatibility issues.
* It is strongly recommended to set `strictPeerDependencies=true`.
*/
// "strictPeerDependencies": true,
/**
* Environment variables that will be provided to PNPM.
*/
// "environmentVariables": {
// "NODE_OPTIONS": {
// "value": "--max-old-space-size=4096",
// "override": false
// }
// },
/**
* Specifies the location of the PNPM store. There are two possible values:
*
* - `local` - use the `pnpm-store` folder in the current configured temp folder:
* `common/temp/pnpm-store` by default.
* - `global` - use PNPM's global store, which has the benefit of being shared
* across multiple repo folders, but the disadvantage of less isolation for builds
* (for example, bugs or incompatibilities when two repos use different releases of PNPM)
*
* In both cases, the store path can be overridden by the environment variable `RUSH_PNPM_STORE_PATH`.
*
* The default value is `local`.
*/
// "pnpmStore": "global",
/**
* If true, then `rush install` will report an error if manual modifications
* were made to the PNPM shrinkwrap file without running `rush update` afterwards.
*
* This feature protects against accidental inconsistencies that may be introduced
* if the PNPM shrinkwrap file (`pnpm-lock.yaml`) is manually edited. When this
* feature is enabled, `rush update` will append a hash to the file as a YAML comment,
* and then `rush update` and `rush install` will validate the hash. Note that this
* does not prohibit manual modifications, but merely requires `rush update` be run
* afterwards, ensuring that PNPM can report or repair any potential inconsistencies.
*
* To temporarily disable this validation when invoking `rush install`, use the
* `--bypass-policy` command-line parameter.
*
* The default value is false.
*/
// "preventManualShrinkwrapChanges": true,
/**
* When a project uses `workspace:` to depend on another Rush project, PNPM normally installs
* it by creating a symlink under `node_modules`. This generally works well, but in certain
* cases such as differing `peerDependencies` versions, symlinking may cause trouble
* such as incorrectly satisfied versions. For such cases, the dependency can be declared
* as "injected", causing PNPM to copy its built output into `node_modules` like a real
* install from a registry. Details here: https://rushjs.io/pages/advanced/injected_deps/
*
* When using Rush subspaces, these sorts of versioning problems are much more likely if
* `workspace:` refers to a project from a different subspace. This is because the symlink
* would point to a separate `node_modules` tree installed by a different PNPM lockfile.
* A comprehensive solution is to enable `alwaysInjectDependenciesFromOtherSubspaces`,
* which automatically treats all projects from other subspaces as injected dependencies
* without having to manually configure them.
*
* NOTE: Use carefully -- excessive file copying can slow down the `rush install` and
* `pnpm-sync` operations if too many dependencies become injected.
*
* The default value is false.
*/
// "alwaysInjectDependenciesFromOtherSubspaces": false,
/**
* Defines the policies to be checked for the `pnpm-lock.yaml` file.
*/
"pnpmLockfilePolicies": {
/**
* This policy will cause "rush update" to report an error if `pnpm-lock.yaml` contains
* any SHA1 integrity hashes.
*
* For each NPM dependency, `pnpm-lock.yaml` normally stores an `integrity` hash. Although
* its main purpose is to detect corrupted or truncated network requests, this hash can also
* serve as a security fingerprint to protect against attacks that would substitute a
* malicious tarball, for example if a misconfigured .npmrc caused a machine to accidentally
* download a matching package name+version from npmjs.com instead of the private NPM registry.
* NPM originally used a SHA1 hash; this was insecure because an attacker can too easily craft
* a tarball with a matching fingerprint. For this reason, NPM later deprecated SHA1 and
* instead adopted a cryptographically strong SHA512 hash. Nonetheless, SHA1 hashes can
* occasionally reappear during "rush update", for example due to missing metadata fallbacks
* (https://github.com/orgs/pnpm/discussions/6194) or an incompletely migrated private registry.
* The `disallowInsecureSha1` policy prevents this, avoiding potential security/compliance alerts.
*/
// "disallowInsecureSha1": {
// /**
// * Enables the "disallowInsecureSha1" policy. The default value is false.
// */
// "enabled": true,
//
// /**
// * In rare cases, a private NPM registry may continue to serve SHA1 hashes for very old
// * package versions, perhaps due to a caching issue or database migration glitch. To avoid
// * having to disable the "disallowInsecureSha1" policy for the entire monorepo, the problematic
// * package versions can be individually ignored. The "exemptPackageVersions" key is the
// * package name, and the array value lists exact version numbers to be ignored.
// */
// "exemptPackageVersions": {
// "example1": ["1.0.0"],
// "example2": ["2.0.0", "2.0.1"]
// }
// }
},
/**
* The "globalOverrides" setting provides a simple mechanism for overriding version selections
* for all dependencies of all projects in the monorepo workspace. The settings are copied
* into the `pnpm.overrides` field of the `common/temp/package.json` file that is generated
* by Rush during installation.
*
* Order of precedence: `.pnpmfile.cjs` has the highest precedence, followed by
* `unsupportedPackageJsonSettings`, `globalPeerDependencyRules`, `globalPackageExtensions`,
* and `globalOverrides` has lowest precedence.
*
* PNPM documentation: https://pnpm.io/package_json#pnpmoverrides
*/
"globalOverrides": {
"@antv/f6-hammerjs": "^0.0.2"
// "example1": "^1.0.0",
// "example2": "npm:@company/example2@^1.0.0"
},
/**
* The `globalPeerDependencyRules` setting provides various settings for suppressing validation errors
* that are reported during installation with `strictPeerDependencies=true`. The settings are copied
* into the `pnpm.peerDependencyRules` field of the `common/temp/package.json` file that is generated
* by Rush during installation.
*
* Order of precedence: `.pnpmfile.cjs` has the highest precedence, followed by
* `unsupportedPackageJsonSettings`, `globalPeerDependencyRules`, `globalPackageExtensions`,
* and `globalOverrides` has lowest precedence.
*
* https://pnpm.io/package_json#pnpmpeerdependencyrules
*/
"globalPeerDependencyRules": {
// "ignoreMissing": ["@eslint/*"],
// "allowedVersions": { "react": "17" },
// "allowAny": ["@babel/*"]
},
/**
* The `globalPackageExtension` setting provides a way to patch arbitrary package.json fields
* for any PNPM dependency of the monorepo. The settings are copied into the `pnpm.packageExtensions`
* field of the `common/temp/package.json` file that is generated by Rush during installation.
* The `globalPackageExtension` setting has similar capabilities as `.pnpmfile.cjs` but without
* the downsides of an executable script (nondeterminism, unreliable caching, performance concerns).
*
* Order of precedence: `.pnpmfile.cjs` has the highest precedence, followed by
* `unsupportedPackageJsonSettings`, `globalPeerDependencyRules`, `globalPackageExtensions`,
* and `globalOverrides` has lowest precedence.
*
* PNPM documentation: https://pnpm.io/package_json#pnpmpackageextensions
*/
"globalPackageExtensions": {
// "fork-ts-checker-webpack-plugin": {
// "dependencies": {
// "@babel/core": "1"
// },
// "peerDependencies": {
// "eslint": ">= 6"
// },
// "peerDependenciesMeta": {
// "eslint": {
// "optional": true
// }
// }
// }
},
/**
* The `globalNeverBuiltDependencies` setting suppresses the `preinstall`, `install`, and `postinstall`
* lifecycle events for the specified NPM dependencies. This is useful for scripts with poor practices
* such as downloading large binaries without retries or attempting to invoke OS tools such as
* a C++ compiler. (PNPM's terminology refers to these lifecycle events as "building" a package;
* it has nothing to do with build system operations such as `rush build` or `rushx build`.)
* The settings are copied into the `pnpm.neverBuiltDependencies` field of the `common/temp/package.json`
* file that is generated by Rush during installation.
*
* PNPM documentation: https://pnpm.io/package_json#pnpmneverbuiltdependencies
*/
"globalNeverBuiltDependencies": [
// "fsevents"
],
/**
* The `globalAllowedDeprecatedVersions` setting suppresses installation warnings for package
* versions that the NPM registry reports as being deprecated. This is useful if the
* deprecated package is an indirect dependency of an external package that has not released a fix.
* The settings are copied into the `pnpm.allowedDeprecatedVersions` field of the `common/temp/package.json`
* file that is generated by Rush during installation.
*
* PNPM documentation: https://pnpm.io/package_json#pnpmalloweddeprecatedversions
*
* If you are working to eliminate a deprecated version, it's better to specify `allowedDeprecatedVersions`
* in the package.json file for individual Rush projects.
*/
"globalAllowedDeprecatedVersions": {
// "request": "*"
},
/**
* (THIS FIELD IS MACHINE GENERATED) The "globalPatchedDependencies" field is updated automatically
* by the `rush-pnpm patch-commit` command. It is a dictionary, where the key is an NPM package name
* and exact version, and the value is a relative path to the associated patch file.
*
* PNPM documentation: https://pnpm.io/package_json#pnpmpatcheddependencies
*/
"globalPatchedDependencies": {},
/**
* (USE AT YOUR OWN RISK) This is a free-form property bag that will be copied into
* the `common/temp/package.json` file that is generated by Rush during installation.
* This provides a way to experiment with new PNPM features. These settings will override
* any other Rush configuration associated with a given JSON field except for `.pnpmfile.cjs`.
*
* USAGE OF THIS SETTING IS NOT SUPPORTED BY THE RUSH MAINTAINERS AND MAY CAUSE RUSH
* TO MALFUNCTION. If you encounter a missing PNPM setting that you believe should
* be supported, please create a GitHub issue or PR. Note that Rush does not aim to
* support every possible PNPM setting, but rather to promote a battle-tested installation
* strategy that is known to provide a good experience for large teams with lots of projects.
*/
"unsupportedPackageJsonSettings": {
// "dependencies": {
// "not-a-good-practice": "*"
// },
// "scripts": {
// "do-something": "echo Also not a good practice"
// },
// "pnpm": { "futurePnpmFeature": true }
}
}
================================================
FILE: common/config/rush/repo-state.json
================================================
// DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush.
{
"preferredVersionsHash": "bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f"
}
================================================
FILE: common/config/rush/rush-plugins.json
================================================
/**
* This configuration file manages Rush's plugin feature.
*/
{
"$schema": "https://developer.microsoft.com/json-schemas/rush/v5/rush-plugins.schema.json",
"plugins": [
/**
* Each item configures a plugin to be loaded by Rush.
*/
// {
// /**
// * The name of the NPM package that provides the plugin.
// */
// "packageName": "@scope/my-rush-plugin",
// /**
// * The name of the plugin. This can be found in the "pluginName"
// * field of the "rush-plugin-manifest.json" file in the NPM package folder.
// */
// "pluginName": "my-plugin-name",
// /**
// * The name of a Rush autoinstaller that will be used for installation, which
// * can be created using "rush init-autoinstaller". Add the plugin's NPM package
// * to the package.json "dependencies" of your autoinstaller, then run
// * "rush update-autoinstaller".
// */
// "autoinstallerName": "rush-plugins"
// }
]
}
================================================
FILE: common/config/rush/subspaces.json
================================================
/**
* This configuration file manages the experimental "subspaces" feature for Rush,
* which allows multiple PNPM lockfiles to be used in a single Rush workspace.
* For full documentation, please see https://rushjs.io
*/
{
"$schema": "https://developer.microsoft.com/json-schemas/rush/v5/subspaces.schema.json",
/**
* Set this flag to "true" to enable usage of subspaces.
*/
"subspacesEnabled": false,
/**
* (DEPRECATED) This is a temporary workaround for migrating from an earlier prototype
* of this feature: https://github.com/microsoft/rushstack/pull/3481
* It allows subspaces with only one project to store their config files in the project folder.
*/
"splitWorkspaceCompatibility": false,
/**
* When a command such as "rush update" is invoked without the "--subspace" or "--to"
* parameters, Rush will install all subspaces. In a huge monorepo with numerous subspaces,
* this would be extremely slow. Set "preventSelectingAllSubspaces" to true to avoid this
* mistake by always requiring selection parameters for commands such as "rush update".
*/
"preventSelectingAllSubspaces": false,
/**
* The list of subspace names, which should be lowercase alphanumeric words separated by
* hyphens, for example "my-subspace". The corresponding config files will have paths
* such as "common/config/subspaces/my-subspace/package-lock.yaml".
*/
"subspaceNames": []
}
================================================
FILE: common/config/rush/version-policies.json
================================================
/**
* This is configuration file is used for advanced publishing configurations with Rush.
* More documentation is available on the Rush website: https://rushjs.io
*/
/**
* A list of version policy definitions. A "version policy" is a custom package versioning
* strategy that affects "rush change", "rush version", and "rush publish". The strategy applies
* to a set of projects that are specified using the "versionPolicyName" field in rush.json.
*/
[
// {
// /**
// * (Required) Indicates the kind of version policy being defined ("lockStepVersion" or "individualVersion").
// *
// * The "lockStepVersion" mode specifies that the projects will use "lock-step versioning". This
// * strategy is appropriate for a set of packages that act as selectable components of a
// * unified product. The entire set of packages are always published together, and always share
// * the same NPM version number. When the packages depend on other packages in the set, the
// * SemVer range is usually restricted to a single version.
// */
// "definitionName": "lockStepVersion",
//
// /**
// * (Required) The name that will be used for the "versionPolicyName" field in rush.json.
// * This name is also used command-line parameters such as "--version-policy"
// * and "--to-version-policy".
// */
// "policyName": "MyBigFramework",
//
// /**
// * (Required) The current version. All packages belonging to the set should have this version
// * in the current branch. When bumping versions, Rush uses this to determine the next version.
// * (The "version" field in package.json is NOT considered.)
// */
// "version": "1.0.0",
//
// /**
// * (Required) The type of bump that will be performed when publishing the next release.
// * When creating a release branch in Git, this field should be updated according to the
// * type of release.
// *
// * Valid values are: "prerelease", "preminor", "minor", "patch", "major"
// */
// "nextBump": "prerelease",
//
// /**
// * (Optional) If specified, all packages in the set share a common CHANGELOG.md file.
// * This file is stored with the specified "main" project, which must be a member of the set.
// *
// * If this field is omitted, then a separate CHANGELOG.md file will be maintained for each
// * package in the set.
// */
// "mainProject": "my-app",
//
// /**
// * (Optional) If enabled, the "rush change" command will prompt the user for their email address
// * and include it in the JSON change files. If an organization maintains multiple repos, tracking
// * this contact information may be useful for a service that automatically upgrades packages and
// * needs to notify engineers whose change may be responsible for a downstream build break. It might
// * also be useful for crediting contributors. Rush itself does not do anything with the collected
// * email addresses. The default value is "false".
// */
// // "includeEmailInChangeFile": true
// },
//
// {
// /**
// * (Required) Indicates the kind of version policy being defined ("lockStepVersion" or "individualVersion").
// *
// * The "individualVersion" mode specifies that the projects will use "individual versioning".
// * This is the typical NPM model where each package has an independent version number
// * and CHANGELOG.md file. Although a single CI definition is responsible for publishing the
// * packages, they otherwise don't have any special relationship. The version bumping will
// * depend on how developers answer the "rush change" questions for each package that
// * is changed.
// */
// "definitionName": "individualVersion",
//
// "policyName": "MyRandomLibraries",
//
// /**
// * (Optional) This can be used to enforce that all packages in the set must share a common
// * major version number, e.g. because they are from the same major release branch.
// * It can also be used to discourage people from accidentally making "MAJOR" SemVer changes
// * inappropriately. The minor/patch version parts will be bumped independently according
// * to the types of changes made to each project, according to the "rush change" command.
// */
// "lockedMajor": 3,
//
// /**
// * (Optional) When publishing is managed by Rush, by default the "rush change" command will
// * request changes for any projects that are modified by a pull request. These change entries
// * will produce a CHANGELOG.md file. If you author your CHANGELOG.md manually or announce updates
// * in some other way, set "exemptFromRushChange" to true to tell "rush change" to ignore the projects
// * belonging to this version policy.
// */
// "exemptFromRushChange": false,
//
// // "includeEmailInChangeFile": true
// }
]
================================================
FILE: common/git-hooks/commit-msg.sample
================================================
#!/bin/sh
#
# This is an example Git hook for use with Rush. To enable this hook, rename this file
# to "commit-msg" and then run "rush install", which will copy it from common/git-hooks
# to the .git/hooks folder.
#
# TO LEARN MORE ABOUT GIT HOOKS
#
# The Git documentation is here: https://git-scm.com/docs/githooks
# Some helpful resources: https://githooks.com
#
# ABOUT THIS EXAMPLE
#
# The commit-msg hook is called by "git commit" with one argument, the name of the file
# that has the commit message. The hook should exit with non-zero status after issuing
# an appropriate message if it wants to stop the commit. The hook is allowed to edit
# the commit message file.
# This example enforces that commit message should contain a minimum amount of
# description text.
if [ `cat $1 | wc -w` -lt 3 ]; then
echo ""
echo "Invalid commit message: The message must contain at least 3 words."
exit 1
fi
================================================
FILE: common/git-hooks/pre-commit
================================================
#!/bin/sh
# Called by "git commit" with no arguments. The hook should
# exit with non-zero status after issuing an appropriate message if
# it wants to stop the commit.
# Invoke the "rush prettier" custom command to reformat files whenever they
# are committed. The command is defined in common/config/rush/command-line.json
# and uses the "rush-prettier" autoinstaller.
node common/scripts/install-run-rush.js prettier || exit $?
================================================
FILE: common/scripts/install-run-rush-pnpm.js
================================================
// THIS FILE WAS GENERATED BY A TOOL. ANY MANUAL MODIFICATIONS WILL GET OVERWRITTEN WHENEVER RUSH IS UPGRADED.
//
// This script is intended for usage in an automated build environment where the Rush command may not have
// been preinstalled, or may have an unpredictable version. This script will automatically install the version of Rush
// specified in the rush.json configuration file (if not already installed), and then pass a command-line to the
// rush-pnpm command.
//
// An example usage would be:
//
// node common/scripts/install-run-rush-pnpm.js pnpm-command
//
// For more information, see: https://rushjs.io/pages/maintainer/setup_new_repo/
//
// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
// See the @microsoft/rush package's LICENSE file for details.
/******/ (() => { // webpackBootstrap
/******/ "use strict";
var __webpack_exports__ = {};
/*!*****************************************************!*\
!*** ./lib-esnext/scripts/install-run-rush-pnpm.js ***!
\*****************************************************/
// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
// See LICENSE in the project root for license information.
require('./install-run-rush');
//# sourceMappingURL=install-run-rush-pnpm.js.map
module.exports = __webpack_exports__;
/******/ })()
;
//# sourceMappingURL=install-run-rush-pnpm.js.map
================================================
FILE: common/scripts/install-run-rush.js
================================================
// THIS FILE WAS GENERATED BY A TOOL. ANY MANUAL MODIFICATIONS WILL GET OVERWRITTEN WHENEVER RUSH IS UPGRADED.
//
// This script is intended for usage in an automated build environment where the Rush command may not have
// been preinstalled, or may have an unpredictable version. This script will automatically install the version of Rush
// specified in the rush.json configuration file (if not already installed), and then pass a command-line to it.
// An example usage would be:
//
// node common/scripts/install-run-rush.js install
//
// For more information, see: https://rushjs.io/pages/maintainer/setup_new_repo/
//
// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
// See the @microsoft/rush package's LICENSE file for details.
/******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({
/***/ 657147:
/*!*********************!*\
!*** external "fs" ***!
\*********************/
/***/ ((module) => {
module.exports = require("fs");
/***/ }),
/***/ 371017:
/*!***********************!*\
!*** external "path" ***!
\***********************/
/***/ ((module) => {
module.exports = require("path");
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/compat get default export */
/******/ (() => {
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = (module) => {
/******/ var getter = module && module.__esModule ?
/******/ () => (module['default']) :
/******/ () => (module);
/******/ __webpack_require__.d(getter, { a: getter });
/******/ return getter;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = (exports) => {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
/******/
/************************************************************************/
var __webpack_exports__ = {};
// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
(() => {
/*!************************************************!*\
!*** ./lib-esnext/scripts/install-run-rush.js ***!
\************************************************/
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! path */ 371017);
/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! fs */ 657147);
/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_1__);
// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
// See LICENSE in the project root for license information.
/* eslint-disable no-console */
const { installAndRun, findRushJsonFolder, RUSH_JSON_FILENAME, runWithErrorAndStatusCode } = require('./install-run');
const PACKAGE_NAME = '@microsoft/rush';
const RUSH_PREVIEW_VERSION = 'RUSH_PREVIEW_VERSION';
const INSTALL_RUN_RUSH_LOCKFILE_PATH_VARIABLE = 'INSTALL_RUN_RUSH_LOCKFILE_PATH';
function _getRushVersion(logger) {
const rushPreviewVersion = process.env[RUSH_PREVIEW_VERSION];
if (rushPreviewVersion !== undefined) {
logger.info(`Using Rush version from environment variable ${RUSH_PREVIEW_VERSION}=${rushPreviewVersion}`);
return rushPreviewVersion;
}
const rushJsonFolder = findRushJsonFolder();
const rushJsonPath = path__WEBPACK_IMPORTED_MODULE_0__.join(rushJsonFolder, RUSH_JSON_FILENAME);
try {
const rushJsonContents = fs__WEBPACK_IMPORTED_MODULE_1__.readFileSync(rushJsonPath, 'utf-8');
// Use a regular expression to parse out the rushVersion value because rush.json supports comments,
// but JSON.parse does not and we don't want to pull in more dependencies than we need to in this script.
const rushJsonMatches = rushJsonContents.match(/\"rushVersion\"\s*\:\s*\"([0-9a-zA-Z.+\-]+)\"/);
return rushJsonMatches[1];
}
catch (e) {
throw new Error(`Unable to determine the required version of Rush from ${RUSH_JSON_FILENAME} (${rushJsonFolder}). ` +
`The 'rushVersion' field is either not assigned in ${RUSH_JSON_FILENAME} or was specified ` +
'using an unexpected syntax.');
}
}
function _getBin(scriptName) {
switch (scriptName.toLowerCase()) {
case 'install-run-rush-pnpm.js':
return 'rush-pnpm';
case 'install-run-rushx.js':
return 'rushx';
default:
return 'rush';
}
}
function _run() {
const [nodePath /* Ex: /bin/node */, scriptPath /* /repo/common/scripts/install-run-rush.js */, ...packageBinArgs /* [build, --to, myproject] */] = process.argv;
// Detect if this script was directly invoked, or if the install-run-rushx script was invokved to select the
// appropriate binary inside the rush package to run
const scriptName = path__WEBPACK_IMPORTED_MODULE_0__.basename(scriptPath);
const bin = _getBin(scriptName);
if (!nodePath || !scriptPath) {
throw new Error('Unexpected exception: could not detect node path or script path');
}
let commandFound = false;
let logger = { info: console.log, error: console.error };
for (const arg of packageBinArgs) {
if (arg === '-q' || arg === '--quiet') {
// The -q/--quiet flag is supported by both `rush` and `rushx`, and will suppress
// any normal informational/diagnostic information printed during startup.
//
// To maintain the same user experience, the install-run* scripts pass along this
// flag but also use it to suppress any diagnostic information normally printed
// to stdout.
logger = {
info: () => { },
error: console.error
};
}
else if (!arg.startsWith('-') || arg === '-h' || arg === '--help') {
// We either found something that looks like a command (i.e. - doesn't start with a "-"),
// or we found the -h/--help flag, which can be run without a command
commandFound = true;
}
}
if (!commandFound) {
console.log(`Usage: ${scriptName} <command> [args...]`);
if (scriptName === 'install-run-rush-pnpm.js') {
console.log(`Example: ${scriptName} pnpm-command`);
}
else if (scriptName === 'install-run-rush.js') {
console.log(`Example: ${scriptName} build --to myproject`);
}
else {
console.log(`Example: ${scriptName} custom-command`);
}
process.exit(1);
}
runWithErrorAndStatusCode(logger, () => {
const version = _getRushVersion(logger);
logger.info(`The ${RUSH_JSON_FILENAME} configuration requests Rush version ${version}`);
const lockFilePath = process.env[INSTALL_RUN_RUSH_LOCKFILE_PATH_VARIABLE];
if (lockFilePath) {
logger.info(`Found ${INSTALL_RUN_RUSH_LOCKFILE_PATH_VARIABLE}="${lockFilePath}", installing with lockfile.`);
}
return installAndRun(logger, PACKAGE_NAME, version, bin, packageBinArgs, lockFilePath);
});
}
_run();
//# sourceMappingURL=install-run-rush.js.map
})();
module.exports = __webpack_exports__;
/******/ })()
;
//# sourceMappingURL=install-run-rush.js.map
================================================
FILE: common/scripts/install-run-rushx.js
================================================
// THIS FILE WAS GENERATED BY A TOOL. ANY MANUAL MODIFICATIONS WILL GET OVERWRITTEN WHENEVER RUSH IS UPGRADED.
//
// This script is intended for usage in an automated build environment where the Rush command may not have
// been preinstalled, or may have an unpredictable version. This script will automatically install the version of Rush
// specified in the rush.json configuration file (if not already installed), and then pass a command-line to the
// rushx command.
//
// An example usage would be:
//
// node common/scripts/install-run-rushx.js custom-command
//
// For more information, see: https://rushjs.io/pages/maintainer/setup_new_repo/
//
// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
// See the @microsoft/rush package's LICENSE file for details.
/******/ (() => { // webpackBootstrap
/******/ "use strict";
var __webpack_exports__ = {};
/*!*************************************************!*\
!*** ./lib-esnext/scripts/install-run-rushx.js ***!
\*************************************************/
// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
// See LICENSE in the project root for license information.
require('./install-run-rush');
//# sourceMappingURL=install-run-rushx.js.map
module.exports = __webpack_exports__;
/******/ })()
;
//# sourceMappingURL=install-run-rushx.js.map
================================================
FILE: common/scripts/install-run.js
================================================
// THIS FILE WAS GENERATED BY A TOOL. ANY MANUAL MODIFICATIONS WILL GET OVERWRITTEN WHENEVER RUSH IS UPGRADED.
//
// This script is intended for usage in an automated build environment where a Node tool may not have
// been preinstalled, or may have an unpredictable version. This script will automatically install the specified
// version of the specified tool (if not already installed), and then pass a command-line to it.
// An example usage would be:
//
// node common/scripts/install-run.js qrcode@1.2.2 qrcode https://rushjs.io
//
// For more information, see: https://rushjs.io/pages/maintainer/setup_new_repo/
//
// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
// See the @microsoft/rush package's LICENSE file for details.
/******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({
/***/ 679877:
/*!************************************************!*\
!*** ./lib-esnext/utilities/npmrcUtilities.js ***!
\************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "isVariableSetInNpmrcFile": () => (/* binding */ isVariableSetInNpmrcFile),
/* harmony export */ "syncNpmrc": () => (/* binding */ syncNpmrc)
/* harmony export */ });
/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ 657147);
/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path */ 371017);
/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__);
// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
// See LICENSE in the project root for license information.
// IMPORTANT - do not use any non-built-in libraries in this file
/**
* This function reads the content for given .npmrc file path, and also trims
* unusable lines from the .npmrc file.
*
* @returns
* The text of the the .npmrc.
*/
// create a global _combinedNpmrc for cache purpose
const _combinedNpmrcMap = new Map();
function _trimNpmrcFile(options) {
const { sourceNpmrcPath, linesToPrepend, linesToAppend } = options;
const combinedNpmrcFromCache = _combinedNpmrcMap.get(sourceNpmrcPath);
if (combinedNpmrcFromCache !== undefined) {
return combinedNpmrcFromCache;
}
let npmrcFileLines = [];
if (linesToPrepend) {
npmrcFileLines.push(...linesToPrepend);
}
if (fs__WEBPACK_IMPORTED_MODULE_0__.existsSync(sourceNpmrcPath)) {
npmrcFileLines.push(...fs__WEBPACK_IMPORTED_MODULE_0__.readFileSync(sourceNpmrcPath).toString().split('\n'));
}
if (linesToAppend) {
npmrcFileLines.push(...linesToAppend);
}
npmrcFileLines = npmrcFileLines.map((line) => (line || '').trim());
const resultLines = [];
// This finds environment variable tokens that look like "${VAR_NAME}"
const expansionRegExp = /\$\{([^\}]+)\}/g;
// Comment lines start with "#" or ";"
const commentRegExp = /^\s*[#;]/;
// Trim out lines that reference environment variables that aren't defined
for (let line of npmrcFileLines) {
let lineShouldBeTrimmed = false;
//remove spaces before or after key and value
line = line
.split('=')
.map((lineToTrim) => lineToTrim.trim())
.join('=');
// Ignore comment lines
if (!commentRegExp.test(line)) {
const environmentVariables = line.match(expansionRegExp);
if (environmentVariables) {
for (const token of environmentVariables) {
// Remove the leading "${" and the trailing "}" from the token
const environmentVariableName = token.substring(2, token.length - 1);
// Is the environment variable defined?
if (!process.env[environmentVariableName]) {
// No, so trim this line
lineShouldBeTrimmed = true;
break;
}
}
}
}
if (lineShouldBeTrimmed) {
// Example output:
// "; MISSING ENVIRONMENT VARIABLE: //my-registry.com/npm/:_authToken=${MY_AUTH_TOKEN}"
resultLines.push('; MISSING ENVIRONMENT VARIABLE: ' + line);
}
else {
resultLines.push(line);
}
}
const combinedNpmrc = resultLines.join('\n');
//save the cache
_combinedNpmrcMap.set(sourceNpmrcPath, combinedNpmrc);
return combinedNpmrc;
}
function _copyAndTrimNpmrcFile(options) {
const { logger, sourceNpmrcPath, targetNpmrcPath, linesToPrepend, linesToAppend } = options;
logger.info(`Transforming ${sourceNpmrcPath}`); // Verbose
logger.info(` --> "${targetNpmrcPath}"`);
const combinedNpmrc = _trimNpmrcFile({
sourceNpmrcPath,
linesToPrepend,
linesToAppend
});
fs__WEBPACK_IMPORTED_MODULE_0__.writeFileSync(targetNpmrcPath, combinedNpmrc);
return combinedNpmrc;
}
function syncNpmrc(options) {
const { sourceNpmrcFolder, targetNpmrcFolder, useNpmrcPublish, logger = {
// eslint-disable-next-line no-console
info: console.log,
// eslint-disable-next-line no-console
error: console.error
}, createIfMissing = false, linesToAppend, linesToPrepend } = options;
const sourceNpmrcPath = path__WEBPACK_IMPORTED_MODULE_1__.join(sourceNpmrcFolder, !useNpmrcPublish ? '.npmrc' : '.npmrc-publish');
const targetNpmrcPath = path__WEBPACK_IMPORTED_MODULE_1__.join(targetNpmrcFolder, '.npmrc');
try {
if (fs__WEBPACK_IMPORTED_MODULE_0__.existsSync(sourceNpmrcPath) || createIfMissing) {
// Ensure the target folder exists
if (!fs__WEBPACK_IMPORTED_MODULE_0__.existsSync(targetNpmrcFolder)) {
fs__WEBPACK_IMPORTED_MODULE_0__.mkdirSync(targetNpmrcFolder, { recursive: true });
}
return _copyAndTrimNpmrcFile({
sourceNpmrcPath,
targetNpmrcPath,
logger,
linesToAppend,
linesToPrepend
});
}
else if (fs__WEBPACK_IMPORTED_MODULE_0__.existsSync(targetNpmrcPath)) {
// If the source .npmrc doesn't exist and there is one in the target, delete the one in the target
logger.info(`Deleting ${targetNpmrcPath}`); // Verbose
fs__WEBPACK_IMPORTED_MODULE_0__.unlinkSync(targetNpmrcPath);
}
}
catch (e) {
throw new Error(`Error syncing .npmrc file: ${e}`);
}
}
function isVariableSetInNpmrcFile(sourceNpmrcFolder, variableKey) {
const sourceNpmrcPath = `${sourceNpmrcFolder}/.npmrc`;
//if .npmrc file does not exist, return false directly
if (!fs__WEBPACK_IMPORTED_MODULE_0__.existsSync(sourceNpmrcPath)) {
return false;
}
const trimmedNpmrcFile = _trimNpmrcFile({ sourceNpmrcPath });
const variableKeyRegExp = new RegExp(`^${variableKey}=`, 'm');
return trimmedNpmrcFile.match(variableKeyRegExp) !== null;
}
//# sourceMappingURL=npmrcUtilities.js.map
/***/ }),
/***/ 532081:
/*!********************************!*\
!*** external "child_process" ***!
\********************************/
/***/ ((module) => {
module.exports = require("child_process");
/***/ }),
/***/ 657147:
/*!*********************!*\
!*** external "fs" ***!
\*********************/
/***/ ((module) => {
module.exports = require("fs");
/***/ }),
/***/ 822037:
/*!*********************!*\
!*** external "os" ***!
\*********************/
/***/ ((module) => {
module.exports = require("os");
/***/ }),
/***/ 371017:
/*!***********************!*\
!*** external "path" ***!
\***********************/
/***/ ((module) => {
module.exports = require("path");
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/compat get default export */
/******/ (() => {
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = (module) => {
/******/ var getter = module && module.__esModule ?
/******/ () => (module['default']) :
/******/ () => (module);
/******/ __webpack_require__.d(getter, { a: getter });
/******/ return getter;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = (exports) => {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
/******/
/************************************************************************/
var __webpack_exports__ = {};
// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
(() => {
/*!*******************************************!*\
!*** ./lib-esnext/scripts/install-run.js ***!
\*******************************************/
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "RUSH_JSON_FILENAME": () => (/* binding */ RUSH_JSON_FILENAME),
/* harmony export */ "findRushJsonFolder": () => (/* binding */ findRushJsonFolder),
/* harmony export */ "getNpmPath": () => (/* binding */ getNpmPath),
/* harmony export */ "installAndRun": () => (/* binding */ installAndRun),
/* harmony export */ "runWithErrorAndStatusCode": () => (/* binding */ runWithErrorAndStatusCode)
/* harmony export */ });
/* harmony import */ var child_process__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! child_process */ 532081);
/* harmony import */ var child_process__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(child_process__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! fs */ 657147);
/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var os__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! os */ 822037);
/* harmony import */ var os__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(os__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! path */ 371017);
/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _utilities_npmrcUtilities__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utilities/npmrcUtilities */ 679877);
// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
// See LICENSE in the project root for license information.
/* eslint-disable no-console */
const RUSH_JSON_FILENAME = 'rush.json';
const RUSH_TEMP_FOLDER_ENV_VARIABLE_NAME = 'RUSH_TEMP_FOLDER';
const INSTALL_RUN_LOCKFILE_PATH_VARIABLE = 'INSTALL_RUN_LOCKFILE_PATH';
const INSTALLED_FLAG_FILENAME = 'installed.flag';
const NODE_MODULES_FOLDER_NAME = 'node_modules';
const PACKAGE_JSON_FILENAME = 'package.json';
/**
* Parse a package specifier (in the form of name\@version) into name and version parts.
*/
function _parsePackageSpecifier(rawPackageSpecifier) {
rawPackageSpecifier = (rawPackageSpecifier || '').trim();
const separatorIndex = rawPackageSpecifier.lastIndexOf('@');
let name;
let version = undefined;
if (separatorIndex === 0) {
// The specifier starts with a scope and doesn't have a version specified
name = rawPackageSpecifier;
}
else if (separatorIndex === -1) {
// The specifier doesn't have a version
name = rawPackageSpecifier;
}
else {
name = rawPackageSpecifier.substring(0, separatorIndex);
version = rawPackageSpecifier.substring(separatorIndex + 1);
}
if (!name) {
throw new Error(`Invalid package specifier: ${rawPackageSpecifier}`);
}
return { name, version };
}
let _npmPath = undefined;
/**
* Get the absolute path to the npm executable
*/
function getNpmPath() {
if (!_npmPath) {
try {
if (_isWindows()) {
// We're on Windows
const whereOutput = child_process__WEBPACK_IMPORTED_MODULE_0__.execSync('where npm', { stdio: [] }).toString();
const lines = whereOutput.split(os__WEBPACK_IMPORTED_MODULE_2__.EOL).filter((line) => !!line);
// take the last result, we are looking for a .cmd command
// see https://github.com/microsoft/rushstack/issues/759
_npmPath = lines[lines.length - 1];
}
else {
// We aren't on Windows - assume we're on *NIX or Darwin
_npmPath = child_process__WEBPACK_IMPORTED_MODULE_0__.execSync('command -v npm', { stdio: [] }).toString();
}
}
catch (e) {
throw new Error(`Unable to determine the path to the NPM tool: ${e}`);
}
_npmPath = _npmPath.trim();
if (!fs__WEBPACK_IMPORTED_MODULE_1__.existsSync(_npmPath)) {
throw new Error('The NPM executable does not exist');
}
}
return _npmPath;
}
function _ensureFolder(folderPath) {
if (!fs__WEBPACK_IMPORTED_MODULE_1__.existsSync(folderPath)) {
const parentDir = path__WEBPACK_IMPORTED_MODULE_3__.dirname(folderPath);
_ensureFolder(parentDir);
fs__WEBPACK_IMPORTED_MODULE_1__.mkdirSync(folderPath);
}
}
/**
* Create missing directories under the specified base directory, and return the resolved directory.
*
* Does not support "." or ".." path segments.
* Assumes the baseFolder exists.
*/
function _ensureAndJoinPath(baseFolder, ...pathSegments) {
let joinedPath = baseFolder;
try {
for (let pathSegment of pathSegments) {
pathSegment = pathSegment.replace(/[\\\/]/g, '+');
joinedPath = path__WEBPACK_IMPORTED_MODULE_3__.join(joinedPath, pathSegment);
if (!fs__WEBPACK_IMPORTED_MODULE_1__.existsSync(joinedPath)) {
fs__WEBPACK_IMPORTED_MODULE_1__.mkdirSync(joinedPath);
}
}
}
catch (e) {
throw new Error(`Error building local installation folder (${path__WEBPACK_IMPORTED_MODULE_3__.join(baseFolder, ...pathSegments)}): ${e}`);
}
return joinedPath;
}
function _getRushTempFolder(rushCommonFolder) {
const rushTempFolder = process.env[RUSH_TEMP_FOLDER_ENV_VARIABLE_NAME];
if (rushTempFolder !== undefined) {
_ensureFolder(rushTempFolder);
return rushTempFolder;
}
else {
return _ensureAndJoinPath(rushCommonFolder, 'temp');
}
}
/**
* Compare version strings according to semantic versioning.
* Returns a positive integer if "a" is a later version than "b",
* a negative integer if "b" is later than "a",
* and 0 otherwise.
*/
function _compareVersionStrings(a, b) {
const aParts = a.split(/[.-]/);
const bParts = b.split(/[.-]/);
const numberOfParts = Math.max(aParts.length, bParts.length);
for (let i = 0; i < numberOfParts; i++) {
if (aParts[i] !== bParts[i]) {
return (Number(aParts[i]) || 0) - (Number(bParts[i]) || 0);
}
}
return 0;
}
/**
* Resolve a package specifier to a static version
*/
function _resolvePackageVersion(logger, rushCommonFolder, { name, version }) {
if (!version) {
version = '*'; // If no version is specified, use the latest version
}
if (version.match(/^[a-zA-Z0-9\-\+\.]+$/)) {
// If the version contains only characters that we recognize to be used in static version specifiers,
// pass the version through
return version;
}
else {
// version resolves to
try {
const rushTempFolder = _getRushTempFolder(rushCommonFolder);
const sourceNpmrcFolder = path__WEBPACK_IMPORTED_MODULE_3__.join(rushCommonFolder, 'config', 'rush');
(0,_utilities_npmrcUtilities__WEBPACK_IMPORTED_MODULE_4__.syncNpmrc)({
sourceNpmrcFolder,
targetNpmrcFolder: rushTempFolder,
logger
});
const npmPath = getNpmPath();
// This returns something that looks like:
// ```
// [
// "3.0.0",
// "3.0.1",
// ...
// "3.0.20"
// ]
// ```
//
// if multiple versions match the selector, or
//
// ```
// "3.0.0"
// ```
//
// if only a single version matches.
const spawnSyncOptions = {
cwd: rushTempFolder,
stdio: [],
shell: _isWindows()
};
const platformNpmPath = _getPlatformPath(npmPath);
const npmVersionSpawnResult = child_process__WEBPACK_IMPORTED_MODULE_0__.spawnSync(platformNpmPath, ['view', `${name}@${version}`, 'version', '--no-update-notifier', '--json'], spawnSyncOptions);
if (npmVersionSpawnResult.status !== 0) {
throw new Error(`"npm view" returned error code ${npmVersionSpawnResult.status}`);
}
const npmViewVersionOutput = npmVersionSpawnResult.stdout.toString();
const parsedVersionOutput = JSON.parse(npmViewVersionOutput);
const versions = Array.isArray(parsedVersionOutput)
? parsedVersionOutput
: [parsedVersionOutput];
let latestVersion = versions[0];
for (let i = 1; i < versions.length; i++) {
const latestVersionCandidate = versions[i];
if (_compareVersionStrings(latestVersionCandidate, latestVersion) > 0) {
latestVersion = latestVersionCandidate;
}
}
if (!latestVersion) {
throw new Error('No versions found for the specified version range.');
}
return latestVersion;
}
catch (e) {
throw new Error(`Unable to resolve version ${version} of package ${name}: ${e}`);
}
}
}
let _rushJsonFolder;
/**
* Find the absolute path to the folder containing rush.json
*/
function findRushJsonFolder() {
if (!_rushJsonFolder) {
let basePath = __dirname;
let tempPath = __dirname;
do {
const testRushJsonPath = path__WEBPACK_IMPORTED_MODULE_3__.join(basePath, RUSH_JSON_FILENAME);
if (fs__WEBPACK_IMPORTED_MODULE_1__.existsSync(testRushJsonPath)) {
_rushJsonFolder = basePath;
break;
}
else {
basePath = tempPath;
}
} while (basePath !== (tempPath = path__WEBPACK_IMPORTED_MODULE_3__.dirname(basePath))); // Exit the loop when we hit the disk root
if (!_rushJsonFolder) {
throw new Error(`Unable to find ${RUSH_JSON_FILENAME}.`);
}
}
return _rushJsonFolder;
}
/**
* Detects if the package in the specified directory is installed
*/
function _isPackageAlreadyInstalled(packageInstallFolder) {
try {
const flagFilePath = path__WEBPACK_IMPORTED_MODULE_3__.join(packageInstallFolder, INSTALLED_FLAG_FILENAME);
if (!fs__WEBPACK_IMPORTED_MODULE_1__.existsSync(flagFilePath)) {
return false;
}
const fileContents = fs__WEBPACK_IMPORTED_MODULE_1__.readFileSync(flagFilePath).toString();
return fileContents.trim() === process.version;
}
catch (e) {
return false;
}
}
/**
* Delete a file. Fail silently if it does not exist.
*/
function _deleteFile(file) {
try {
fs__WEBPACK_IMPORTED_MODULE_1__.unlinkSync(file);
}
catch (err) {
if (err.code !== 'ENOENT' && err.code !== 'ENOTDIR') {
throw err;
}
}
}
/**
* Removes the following files and directories under the specified folder path:
* - installed.flag
* -
* - node_modules
*/
function _cleanInstallFolder(rushTempFolder, packageInstallFolder, lockFilePath) {
try {
const flagFile = path__WEBPACK_IMPORTED_MODULE_3__.resolve(packageInstallFolder, INSTALLED_FLAG_FILENAME);
_deleteFile(flagFile);
const packageLockFile = path__WEBPACK_IMPORTED_MODULE_3__.resolve(packageInstallFolder, 'package-lock.json');
if (lockFilePath) {
fs__WEBPACK_IMPORTED_MODULE_1__.copyFileSync(lockFilePath, packageLockFile);
}
else {
// Not running `npm ci`, so need to cleanup
_deleteFile(packageLockFile);
const nodeModulesFolder = path__WEBPACK_IMPORTED_MODULE_3__.resolve(packageInstallFolder, NODE_MODULES_FOLDER_NAME);
if (fs__WEBPACK_IMPORTED_MODULE_1__.existsSync(nodeModulesFolder)) {
const rushRecyclerFolder = _ensureAndJoinPath(rushTempFolder, 'rush-recycler');
fs__WEBPACK_IMPORTED_MODULE_1__.renameSync(nodeModulesFolder, path__WEBPACK_IMPORTED_MODULE_3__.join(rushRecyclerFolder, `install-run-${Date.now().toString()}`));
}
}
}
catch (e) {
throw new Error(`Error cleaning the package install folder (${packageInstallFolder}): ${e}`);
}
}
function _createPackageJson(packageInstallFolder, name, version) {
try {
const packageJsonContents = {
name: 'ci-rush',
version: '0.0.0',
dependencies: {
[name]: version
},
description: "DON'T WARN",
repository: "DON'T WARN",
license: 'MIT'
};
const packageJsonPath = path__WEBPACK_IMPORTED_MODULE_3__.join(packageInstallFolder, PACKAGE_JSON_FILENAME);
fs__WEBPACK_IMPORTED_MODULE_1__.writeFileSync(packageJsonPath, JSON.stringify(packageJsonContents, undefined, 2));
}
catch (e) {
throw new Error(`Unable to create package.json: ${e}`);
}
}
/**
* Run "npm install" in the package install folder.
*/
function _installPackage(logger, packageInstallFolder, name, version, command) {
try {
logger.info(`Installing ${name}...`);
const npmPath = getNpmPath();
const platformNpmPath = _getPlatformPath(npmPath);
const result = child_process__WEBPACK_IMPORTED_MODULE_0__.spawnSync(platformNpmPath, [command], {
stdio: 'inherit',
cwd: packageInstallFolder,
env: process.env,
shell: _isWindows()
});
if (result.status !== 0) {
throw new Error(`"npm ${command}" encountered an error`);
}
logger.info(`Successfully installed ${name}@${version}`);
}
catch (e) {
throw new Error(`Unable to install package: ${e}`);
}
}
/**
* Get the ".bin" path for the package.
*/
function _getBinPath(packageInstallFolder, binName) {
const binFolderPath = path__WEBPACK_IMPORTED_MODULE_3__.resolve(packageInstallFolder, NODE_MODULES_FOLDER_NAME, '.bin');
const resolvedBinName = _isWindows() ? `${binName}.cmd` : binName;
return path__WEBPACK_IMPORTED_MODULE_3__.resolve(binFolderPath, resolvedBinName);
}
/**
* Returns a cross-platform path - windows must enclose any path containing spaces within double quotes.
*/
function _getPlatformPath(platformPath) {
return _isWindows() && platformPath.includes(' ') ? `"${platformPath}"` : platformPath;
}
function _isWindows() {
return os__WEBPACK_IMPORTED_MODULE_2__.platform() === 'win32';
}
/**
* Write a flag file to the package's install directory, signifying that the install was successful.
*/
function _writeFlagFile(packageInstallFolder) {
try {
const flagFilePath = path__WEBPACK_IMPORTED_MODULE_3__.join(packageInstallFolder, INSTALLED_FLAG_FILENAME);
fs__WEBPACK_IMPORTED_MODULE_1__.writeFileSync(flagFilePath, process.version);
}
catch (e) {
throw new Error(`Unable to create installed.flag file in ${packageInstallFolder}`);
}
}
function installAndRun(logger, packageName, packageVersion, packageBinName, packageBinArgs, lockFilePath = process.env[INSTALL_RUN_LOCKFILE_PATH_VARIABLE]) {
const rushJsonFolder = findRushJsonFolder();
const rushCommonFolder = path__WEBPACK_IMPORTED_MODULE_3__.join(rushJsonFolder, 'common');
const rushTempFolder = _getRushTempFolder(rushCommonFolder);
const packageInstallFolder = _ensureAndJoinPath(rushTempFolder, 'install-run', `${packageName}@${packageVersion}`);
if (!_isPackageAlreadyInstalled(packageInstallFolder)) {
// The package isn't already installed
_cleanInstallFolder(rushTempFolder, packageInstallFolder, lockFilePath);
const sourceNpmrcFolder = path__WEBPACK_IMPORTED_MODULE_3__.join(rushCommonFolder, 'config', 'rush');
(0,_utilities_npmrcUtilities__WEBPACK_IMPORTED_MODULE_4__.syncNpmrc)({
sourceNpmrcFolder,
targetNpmrcFolder: packageInstallFolder,
logger
});
_createPackageJson(packageInstallFolder, packageName, packageVersion);
const command = lockFilePath ? 'ci' : 'install';
_installPackage(logger, packageInstallFolder, packageName, packageVersion, command);
_writeFlagFile(packageInstallFolder);
}
const statusMessage = `Invoking "${packageBinName} ${packageBinArgs.join(' ')}"`;
const statusMessageLine = new Array(statusMessage.length + 1).join('-');
logger.info('\n' + statusMessage + '\n' + statusMessageLine + '\n');
const binPath = _getBinPath(packageInstallFolder, packageBinName);
const binFolderPath = path__WEBPACK_IMPORTED_MODULE_3__.resolve(packageInstallFolder, NODE_MODULES_FOLDER_NAME, '.bin');
// Windows environment variables are case-insensitive. Instead of using SpawnSyncOptions.env, we need to
// assign via the process.env proxy to ensure that we append to the right PATH key.
const originalEnvPath = process.env.PATH || '';
let result;
try {
// `npm` bin stubs on Windows are `.cmd` files
// Node.js will not directly invoke a `.cmd` file unless `shell` is set to `true`
const platformBinPath = _getPlatformPath(binPath);
process.env.PATH = [binFolderPath, originalEnvPath].join(path__WEBPACK_IMPORTED_MODULE_3__.delimiter);
result = child_process__WEBPACK_IMPORTED_MODULE_0__.spawnSync(platformBinPath, packageBinArgs, {
stdio: 'inherit',
windowsVerbatimArguments: false,
shell: _isWindows(),
cwd: process.cwd(),
env: process.env
});
}
finally {
process.env.PATH = originalEnvPath;
}
if (result.status !== null) {
return result.status;
}
else {
throw result.error || new Error('An unknown error occurred.');
}
}
function runWithErrorAndStatusCode(logger, fn) {
process.exitCode = 1;
try {
const exitCode = fn();
process.exitCode = exitCode;
}
catch (e) {
logger.error('\n\n' + e.toString() + '\n\n');
}
}
function _run() {
const [nodePath /* Ex: /bin/node */, scriptPath /* /repo/common/scripts/install-run-rush.js */, rawPackageSpecifier /* qrcode@^1.2.0 */, packageBinName /* qrcode */, ...packageBinArgs /* [-f, myproject/lib] */] = process.argv;
if (!nodePath) {
throw new Error('Unexpected exception: could not detect node path');
}
if (path__WEBPACK_IMPORTED_MODULE_3__.basename(scriptPath).toLowerCase() !== 'install-run.js') {
// If install-run.js wasn't directly invoked, don't execute the rest of this function. Return control
// to the script that (presumably) imported this file
return;
}
if (process.argv.length < 4) {
console.log('Usage: install-run.js <package>@<version> <command> [args...]');
console.log('Example: install-run.js qrcode@1.2.2 qrcode https://rushjs.io');
process.exit(1);
}
const logger = { info: console.log, error: console.error };
runWithErrorAndStatusCode(logger, () => {
const rushJsonFolder = findRushJsonFolder();
const rushCommonFolder = _ensureAndJoinPath(rushJsonFolder, 'common');
const packageSpecifier = _parsePackageSpecifier(rawPackageSpecifier);
const name = packageSpecifier.name;
const version = _resolvePackageVersion(logger, rushCommonFolder, packageSpecifier);
if (packageSpecifier.version !== version) {
console.log(`Resolved to ${name}@${version}`);
}
return installAndRun(logger, name, version, packageBinName, packageBinArgs);
});
}
_run();
//# sourceMappingURL=install-run.js.map
})();
module.exports = __webpack_exports__;
/******/ })()
;
//# sourceMappingURL=install-run.js.map
================================================
FILE: eslint.config.js
================================================
import eslintConfigPrettier from "eslint-config-prettier";
import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended";
import typescriptEslint from "typescript-eslint";
export default [
eslintConfigPrettier,
{
//extends: ["eslint:recommended", "plugin:prettier/recommended"],
plugins: { eslintPluginPrettierRecommended },
rules: {},
files: ["**/*.jsx", "**/*.tsx", "**/*.js", "**/*.ts"],
settings: {
"import/resolver": {
node: {
extensions: [".js", ".jsx", ".ts", ".tsx", ".mjs"],
},
},
},
},
...typescriptEslint.configs.recommended,
{
ignores: ["**/es/", "**/dist/", "**/lib/", "**/node_modules/"],
},
];
================================================
FILE: package.json
================================================
{
"name": "f6",
"private": true,
"workspaces": [
"packages/core",
"packages/hammer",
"packages/element",
"packages/f6-ui",
"packages/plugin",
"packages/site",
"packages/f6",
"packages/f6-alipay",
"packages/f6-wx"
],
"scripts": {
"build:site": "cd ./packages/site && npm run start",
"prettier": "prettier --write '**/*.{js,jsx,tsx,ts,less,md,json}'",
"pretty-quick": "pretty-quick",
"clean:modules": "rimraf node_modules",
"prepare": "simple-git-hooks",
"update": "rush update",
"build": "rush build",
"dev": "cd packages/f6 && npm run storybook"
},
"lint-staged": {
"*.{js,jsx,tsx,ts,less,md,json}": [
"pretty-quick —-staged"
]
},
"devDependencies": {
"@eslint/compat": "^1.1.0",
"@eslint/js": "^9.5.0",
"eslint": "^9.5.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-react": "^7.34.3",
"install-peerdeps": "^3.0.3",
"jest": "^27.5.1",
"lint-staged": "^15.2.7",
"node-gyp": "^10.1.0",
"postcss-lit": "^1.1.1",
"pre-commit": "^1.2.2",
"prettier": "3.3.2",
"pretty-quick": "^4.0.0",
"react-scripts": "3.1.2",
"rimraf": "^5.0.7",
"simple-git-hooks": "^2.11.1",
"stylelint": "^16.6.1",
"stylelint-config-standard": "^36.0.1",
"stylelint-prettier": "^5.0.0",
"typescript-eslint": "^7.13.1"
},
"resolutions": {
"@types/react": "^16.9.35"
},
"repository": "https://github.com/antvis/F6.git",
"simple-git-hooks": {
"pre-commit": "pretty-quick --staged"
}
}
================================================
FILE: packages/core/jest.config.js
================================================
module.exports = {
preset: "ts-jest",
testEnvironment: "node",
transform: {
"^.+\\.(ts|tsx)$": [
"ts-jest",
{
tsconfig: "tsconfig.json",
},
],
},
testMatch: [
"**/tests/unit/**/*.ts", // Ensure this matches the path to your test files
],
// Other configurations...
};
================================================
FILE: packages/core/package.json
================================================
{
"name": "@antv/f6-core",
"version": "0.0.2",
"description": "A Graph Visualization Framework in JavaScript",
"keywords": [
"antv",
"g6",
"graph",
"graph analysis",
"graph editor",
"graph visualization",
"relational data"
],
"homepage": "https://g6.antv.vision",
"bugs": {
"url": "https://github.com/antvis/f6/issues"
},
"repository": {
"type": "git",
"url": "https://github.com/antvis/f6"
},
"license": "MIT",
"author": "https://github.com/orgs/antvis/people",
"main": "dist/cjs/index.cjs.js",
"module": "dist/esm/index.es.js",
"unpkg": "dist/umd/index.umd.js",
"types": "lib/index.d.ts",
"files": [
"package.json",
"es",
"lib",
"dist",
"LICENSE",
"README.md"
],
"scripts": {
"build": "vite build",
"clean": "rimraf dist",
"test": "jest"
},
"dependencies": {
"@antv/algorithm": "^0.1.8",
"@antv/dom-util": "^2.0.1",
"@antv/event-emitter": "~0.1.0",
"@antv/g-base": "^0.5.9",
"@antv/g-math": "^0.1.1",
"@antv/g-mobile": "^0.0.13",
"@antv/matrix-util": "^3.0.4",
"@antv/path-util": "^2.0.3",
"@antv/util": "~2.0.5",
"ml-matrix": "^6.5.0",
"tslib": "^2.1.0",
"@vitejs/plugin-react": "~4.3.1"
},
"devDependencies": {
"vite": "~5.3.1",
"@vitejs/plugin-react": "~4.3.1",
"jest": "~29.7.0",
"@types/jest": "~29.5.12",
"ts-jest": "~29.1.5",
"typescript": "4.3"
}
}
================================================
FILE: packages/core/src/behavior/behavior.ts
================================================
import { clone, each, wrapBehavior } from "@antv/util";
import { BehaviorOption } from "../types";
import behaviorOption from "./behaviorOption";
export default class Behavior {
// 所有自定义的 Behavior 的实例
private static types = {};
/**
* 自定义 Behavior
* @param type Behavior 名称
* @param behavior Behavior 定义的方法集合
*/
public static registerBehavior(type: string, behavior: BehaviorOption) {
if (!behavior) {
throw new Error(`please specify handler for this behavior: ${type}`);
}
const prototype = clone(behaviorOption);
Object.assign(prototype, behavior);
// eslint-disable-next-line func-names
const base = function (cfg: any) {
Object.assign(this, this.getDefaultCfg(), cfg);
const events = this.getEvents();
this.events = null;
const eventsToBind = {};
if (events) {
each(events, (handle, event) => {
eventsToBind[event] = wrapBehavior(this, handle);
});
this.events = eventsToBind;
}
};
base.prototype = prototype;
Behavior.types[type] = base;
}
public static hasBehavior(type: string) {
return !!Behavior.types[type];
}
public static getBehavior(type: string) {
return Behavior.types[type];
}
}
================================================
FILE: packages/core/src/behavior/behaviorOption.ts
================================================
import { each } from "@antv/util";
import { IAbstractGraph } from "../interface/graph";
import { G6Event } from "../types";
// 自定义 Behavior 时候共有的方法
export default {
getDefaultCfg() {
return {};
},
/**
* register event handler, behavior will auto bind events
* for example:
* return {
* click: 'onClick'
* }
*/
getEvents() {
return {};
},
updateCfg(cfg: object) {
Object.assign(this, cfg);
return true;
},
shouldBegin() {
return true;
},
shouldUpdate() {
return true;
},
shouldEnd() {
return true;
},
/**
* auto bind events when register behavior
* @param graph Graph instance
*/
bind(graph: IAbstractGraph) {
const { events } = this;
this.graph = graph;
if (
this.type === "drag-canvas" ||
this.type === "brush-select" ||
this.type === "lasso-select"
) {
graph.get("canvas").set("draggable", true);
}
each(events, (handler: () => void, event: G6Event) => {
graph.on(event, handler);
});
},
unbind(graph: IAbstractGraph) {
const { events } = this;
if (
this.type === "drag-canvas" ||
this.type === "brush-select" ||
this.type === "lasso-select"
) {
graph.get("canvas").set("draggable", false);
}
each(events, (handler: () => void, event: G6Event) => {
graph.off(event, handler);
});
},
get(val: string) {
return (this as any)[val];
},
set(key: string, val: any) {
(this as any)[key] = val;
return this;
},
};
================================================
FILE: packages/core/src/behavior/index.ts
================================================
import Behavior from "./behavior";
export default Behavior;
================================================
FILE: packages/core/src/element/arrow.ts
================================================
export default {
triangle: (width: number = 10, length: number = 15, d: number = 0) => {
const begin = d * 2;
const path = `M ${begin},0 L ${begin + length},-${width / 2} L ${
begin + length
},${width / 2} Z`;
return path;
},
vee: (width: number = 15, length: number = 20, d: number = 0) => {
const begin = d * 2;
const path = `M ${begin},0 L ${begin + length},-${width / 2}
L ${begin + (2 * length) / 3},0 L ${begin + length},${width / 2} Z`;
return path;
},
circle: (r: number = 5, d: number = 0) => {
const begin = d * 2;
const path = `M ${begin}, 0
a ${r},${r} 0 1,0 ${r * 2},0
a ${r},${r} 0 1,0 ${-r * 2},0`;
return path;
},
rect: (width: number = 10, length: number = 10, d: number = 0) => {
const begin = d * 2;
const path = `M ${begin},${-width / 2}
L ${begin + length},${-width / 2}
L ${begin + length},${width / 2}
L ${begin},${width / 2} Z`;
return path;
},
diamond: (width: number = 15, length: number = 15, d: number = 0) => {
const begin = d * 2;
const path = `M ${begin},0
L ${begin + length / 2},${-width / 2}
L ${begin + length},0
L ${begin + length / 2},${width / 2} Z`;
return path;
},
triangleRect: (
tWidth: number = 15,
tLength: number = 15,
rWidth: number = 15,
rLength: number = 3,
gap: number = 5,
d: number = 0,
) => {
const begin = d * 2;
const rectBegin = begin + tLength + gap;
const path = `M ${begin},0 L ${begin + tLength},-${tWidth / 2} L ${
begin + tLength
},${tWidth / 2} Z
M ${rectBegin}, -${rWidth / 2}
L ${rectBegin + rLength} -${rWidth / 2}
L ${rectBegin + rLength} ${rWidth / 2}
L ${rectBegin} ${rWidth / 2}
Z`;
return path;
},
};
================================================
FILE: packages/core/src/element/combo.ts
================================================
/**
* @fileOverview common combo shape
* @author shiwu.wyy@antfin.com
*/
import { IGroup, IShape } from "@antv/g-base";
import { isArray, isNil, clone } from "@antv/util";
import { ILabelConfig, ShapeOptions } from "../interface/shape";
import {
Item,
LabelStyle,
NodeConfig,
ModelConfig,
ShapeStyle,
} from "../types";
import Global from "../global";
import Shape from "./shape";
import { shapeBase } from "./shapeBase";
const singleCombo: ShapeOptions = {
itemType: "combo",
// 单个图形的类型
shapeType: "single-combo",
/**
* Combo 标题文本相对图形的位置,默认为 top
* 位置包括: top, bottom, left, right, center
* @type {String}
*/
labelPosition: "top",
/**
* 标题文本相对偏移,当 labelPosition 不为 center 时有效
* @type {Number}
*/
refX: Global.comboLabel.refX,
refY: Global.comboLabel.refY,
options: {
style: {
stroke: Global.defaultCombo.style.stroke,
fill: Global.defaultCombo.style.fill,
lineWidth: Global.defaultCombo.style.lineWidth,
},
labelCfg: {
style: {
fill: Global.comboLabel.style.fill,
fontSize: Global.comboLabel.style.fontSize,
},
},
stateStyles: {
...Global.comboStateStyles,
},
},
/**
* 获取 Combo 宽高
* @internal 返回 Combo 的大小,以 [width, height] 的方式维护
* @param {Object} cfg Combo 的配置项
* @return {Array} 宽高
*/
getSize(cfg: ModelConfig): number[] {
let size: number | number[] = clone(
cfg.size || this.options!.size || Global.defaultCombo.size,
);
// size 是数组,若长度为 1,则补长度为 2
if (isArray(size) && size.length === 1) {
size = [size[0], size[0]];
}
// size 为数字,则转换为数组
if (!isArray(size)) {
size = [size, size];
}
return size;
},
// 私有方法,不希望扩展的 Combo 复写这个方法
getLabelStyleByPosition(cfg: NodeConfig, labelCfg: ILabelConfig): LabelStyle {
const labelPosition = labelCfg.position || this.labelPosition;
const { style: cfgStyle } = cfg;
let padding: number | number[] = cfg.padding || this.options.padding;
if (isArray(padding)) padding = padding[0];
let { refX, refY } = labelCfg;
// 考虑 refX 和 refY = 0 的场景,不用用 labelCfg.refX || Global.nodeLabel.refX
if (isNil(refX)) {
refX = this.refX as number; // 不居中时的偏移量
}
if (isNil(refY)) {
refY = this.refY as number; // 不居中时的偏移量
}
const size = this.getSize!(cfg as ModelConfig);
const r = Math.max(cfgStyle.r, size[0] / 2) || size[0] / 2;
const dis = r + padding;
let style: any;
switch (labelPosition) {
case "top":
style = {
x: 0,
y: -dis - (refY as number),
textBaseline: "bottom", // 文本在图形的上方
textAlign: "center",
};
break;
case "bottom":
style = {
x: 0,
y: dis + (refY as number),
textBaseline: "bottom",
textAlign: "center",
};
break;
case "left":
style = {
x: -dis + (refX as number),
y: 0,
textAlign: "left",
};
break;
case "center":
style = {
x: 0,
y: 0,
text: cfg!.label,
textAlign: "center",
};
break;
default:
style = {
x: dis + (refX as number),
y: 0,
textAlign: "right",
};
break;
}
style.text = cfg.label;
return style;
},
drawShape(cfg: NodeConfig, group: IGroup): IShape {
const { shapeType } = this; // || this.type,都已经加了 shapeType
const style = this.getShapeStyle!(cfg);
const shape = group.addShape(shapeType, {
attrs: style,
draggable: true,
name: "combo-shape",
});
return shape;
},
updateShape(cfg: NodeConfig, item: Item, keyShapeStyle: ShapeStyle) {
const keyShape = item.get("keyShape");
const animate =
cfg.animate === undefined ? this.options.animate : cfg.animate;
if (animate && keyShape.animate) {
keyShape.animate(keyShapeStyle, {
duration: 200,
easing: "easeLinear",
});
} else {
keyShape.attr({
...keyShapeStyle,
});
}
(this as any).updateLabel(cfg, item);
// special for some types of nodes
},
};
const singleComboDef = { ...shapeBase, ...singleCombo };
Shape.registerCombo("single-combo", singleComboDef);
================================================
FILE: packages/core/src/element/combos/circle.ts
================================================
import { IGroup, IShape } from "@antv/g-base";
import { Item, ComboConfig, ShapeStyle } from "../../types";
import Global from "../../global";
import Shape from "../shape";
import { ShapeOptions } from "../../interface/shape";
import { isNumber, clone, mix, isArray } from "@antv/util";
// 圆形 Combo
Shape.registerCombo(
"circle",
{
// 自定义节点时的配置
options: {
size: [Global.defaultCombo.size[0], Global.defaultCombo.size[0]],
padding: Global.defaultCombo.padding[0],
animate: true,
style: {
stroke: Global.defaultCombo.style.stroke,
fill: Global.defaultCombo.style.fill,
lineWidth: Global.defaultCombo.style.lineWidth,
},
labelCfg: {
style: {
fill: Global.comboLabel.style.fill,
fontSize: Global.comboLabel.style.fontSize,
},
refX: 0,
refY: 0,
},
stateStyles: {
...Global.comboStateStyles,
},
},
shapeType: "circle",
// 文本位置
labelPosition: "top",
drawShape(cfg: ComboConfig, group: IGroup): IShape {
const style = this.getShapeStyle!(cfg);
delete style.height;
delete style.width;
const keyShape: IShape = group.addShape("circle", {
attrs: style,
className: "circle-combo",
name: "circle-combo",
draggable: true,
});
return keyShape;
},
/**
* 获取 Combo 的样式,供基于该 Combo 自定义时使用
* @param {Object} cfg Combo 数据模型
* @return {Object} Combo 的样式
*/
getShapeStyle(cfg: ComboConfig): ShapeStyle {
const { style: defaultStyle } = this.options as ComboConfig;
let padding: number | number[] = cfg.padding || this.options.padding;
if (isArray(padding)) padding = padding[0];
const strokeStyle: ShapeStyle = {
stroke: cfg.color,
};
// 如果设置了color,则覆盖默认的stroke属性
const style = mix({}, defaultStyle, strokeStyle, cfg.style);
let r: number;
if (cfg.fixSize) {
r = isNumber(cfg.fixSize) ? cfg.fixSize : cfg.fixSize[0];
} else {
const size = (this as ShapeOptions).getSize!(cfg);
if (!isNumber(style.r) || isNaN(style.r))
r = size[0] / 2 || Global.defaultCombo.style.r;
else r = Math.max(style.r, size[0] / 2) || size[0] / 2;
}
style.r = r + padding;
const styles = {
x: 0,
y: 0,
...style,
};
if (cfg.style) cfg.style.r = r;
else {
cfg.style = { r };
}
return styles;
},
update(cfg: ComboConfig, item: Item) {
const size = (this as ShapeOptions).getSize!(cfg);
let padding: number | number[] = cfg.padding || this.options.padding;
if (isArray(padding)) padding = padding[0];
const cfgStyle = clone(cfg.style);
let r;
if (cfg.fixSize) {
r = isNumber(cfg.fixSize) ? cfg.fixSize : cfg.fixSize[0];
} else {
r = Math.max(cfgStyle.r, size[0] / 2) || size[0] / 2;
}
cfgStyle.r = r + padding;
const itemCacheSize = item.get("sizeCache");
if (itemCacheSize) {
itemCacheSize.r = cfgStyle.r;
}
// 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。
const strokeStyle = {
stroke: cfg.color,
};
// 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。
const keyShape = item.get("keyShape");
const style = mix({}, keyShape.attr(), strokeStyle, cfgStyle);
if (cfg.style) cfg.style.r = r;
else {
cfg.style = { r };
}
(this as any).updateShape(cfg, item, style, true);
},
},
"single-combo",
);
================================================
FILE: packages/core/src/element/combos/index.ts
================================================
import "./circle";
import "./rect";
================================================
FILE: packages/core/src/element/combos/rect.ts
================================================
import { IGroup, IShape } from "@antv/g-base";
import { mix, isNumber, clone, isNil } from "@antv/util";
import { LabelStyle, Item, ComboConfig, ShapeStyle } from "../../types";
import Global from "../../global";
import Shape from "../shape";
import { ILabelConfig, ShapeOptions } from "../../interface/shape";
Shape.registerCombo(
"rect",
{
// 自定义 Combo 时的配置
options: {
size: [40, 5],
padding: [25, 20, 15, 20],
animate: true,
style: {
radius: 0,
stroke: Global.defaultCombo.style.stroke,
fill: Global.defaultCombo.style.fill,
lineWidth: Global.defaultCombo.style.lineWidth,
},
// 文本样式配置
labelCfg: {
style: {
fill: Global.comboLabel.style.fill,
fontSize: Global.comboLabel.style.fontSize,
},
},
// 连接点,默认为左右
anchorPoints: [
[0, 0.5],
[1, 0.5],
],
stateStyles: {
...Global.comboStateStyles,
},
},
shapeType: "rect",
labelPosition: "top",
drawShape(cfg: ComboConfig, group: IGroup): IShape {
const style = this.getShapeStyle!(cfg);
const keyShape = group.addShape("rect", {
attrs: style,
className: "rect-combo",
name: "rect-combo",
draggable: true,
});
return keyShape;
},
// 私有方法,不希望扩展的 Combo 复写这个方法
getLabelStyleByPosition(
cfg: ComboConfig,
labelCfg: ILabelConfig,
): LabelStyle {
const labelPosition = labelCfg.position || this.labelPosition;
const { style: cfgStyle } = cfg;
let padding = cfg.padding || this.options.padding;
if (isNumber(padding)) padding = [padding, padding, padding, padding];
let { refX, refY } = labelCfg;
// 考虑 refX 和 refY = 0 的场景,不用用 labelCfg.refX || Global.nodeLabel.refY
if (isNil(refX)) {
refX = this.refX as number; // 不居中时的偏移量
}
if (isNil(refY)) {
refY = this.refY as number; // 不居中时的偏移量
}
const leftDis = cfgStyle.width / 2 + padding[3];
const topDis = cfgStyle.height / 2 + padding[0];
let style: any;
switch (labelPosition) {
case "top":
style = {
x: 0 - leftDis + refX,
y: 0 - topDis + refY,
textBaseline: "top", // 文本在图形的上方
textAlign: "left",
};
break;
case "bottom":
style = {
x: 0,
y: topDis + refY,
textBaseline: "bottom",
textAlign: "center",
};
break;
case "left":
style = {
x: 0 - leftDis + refY,
y: 0,
textAlign: "left",
};
break;
case "center":
style = {
x: 0,
y: 0,
text: cfg!.label,
textAlign: "center",
};
break;
default:
style = {
x: leftDis + refX,
y: 0,
textAlign: "right",
};
break;
}
style.text = cfg.label;
return style;
},
/**
* 获取节点的样式,供基于该节点自定义时使用
* @param {Object} cfg 节点数据模型
* @return {Object} 节点的样式
*/
getShapeStyle(cfg: ComboConfig) {
const { style: defaultStyle } = this.options as ComboConfig;
let padding: number | number[] = cfg.padding || this.options.padding;
if (isNumber(padding)) padding = [padding, padding, padding, padding];
const strokeStyle: ShapeStyle = {
stroke: cfg.color,
};
// 如果设置了color,则覆盖默认的stroke属性
const style = mix({}, defaultStyle, strokeStyle, cfg.style);
const size = (this as ShapeOptions).getSize!(cfg);
let width: number;
let height: number;
const fixSize =
cfg.collapsed && cfg.fixCollapseSize
? cfg.fixCollapseSize
: cfg.fixSize;
if (fixSize) {
if (isNumber(fixSize)) {
width = fixSize;
height = fixSize;
} else {
width = fixSize[0];
height = fixSize[1];
}
} else {
if (!isNumber(style.width) || isNaN(style.width))
width = size[0] || Global.defaultCombo.style.width;
else width = Math.max(style.width, size[0]) || size[0];
if (!isNumber(style.height) || isNaN(style.height))
height = size[1] || Global.defaultCombo.style.height;
else height = Math.max(style.height, size[1]) || size[1];
}
const x = -width / 2 - padding[3];
const y = -height / 2 - padding[0];
style.width = width + padding[1] + padding[3];
style.height = height + padding[0] + padding[2];
const styles = {
x,
y,
...style,
};
if (!cfg.style) {
cfg.style = {
width,
height,
};
} else {
cfg.style.width = width;
cfg.style.height = height;
}
return styles;
},
update(cfg: ComboConfig, item: Item) {
const size = (this as ShapeOptions).getSize!(cfg);
let padding: number | number[] = cfg.padding || this.options.padding;
if (isNumber(padding)) padding = [padding, padding, padding, padding];
const cfgStyle = clone(cfg.style);
let width, height;
const fixSize =
cfg.collapsed && cfg.fixCollapseSize
? cfg.fixCollapseSize
: cfg.fixSize;
if (fixSize) {
if (isNumber(fixSize)) {
width = fixSize;
height = fixSize;
} else {
width = fixSize[0];
height = fixSize[1];
}
} else {
width = Math.max(cfgStyle.width, size[0]) || size[0];
height = Math.max(cfgStyle.height, size[1]) || size[1];
}
cfgStyle.width = width + padding[1] + padding[3];
cfgStyle.height = height + padding[0] + padding[2];
const itemCacheSize = item.get("sizeCache");
if (itemCacheSize) {
itemCacheSize.width = cfgStyle.width;
itemCacheSize.height = cfgStyle.height;
}
cfgStyle.x = -width / 2 - padding[3];
cfgStyle.y = -height / 2 - padding[0];
// 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。
const strokeStyle = {
stroke: cfg.color,
};
// 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。
const keyShape = item.get("keyShape");
const style = mix({}, keyShape.attr(), strokeStyle, cfgStyle);
if (cfg.style) {
cfg.style.width = width;
cfg.style.height = height;
} else {
cfg.style = { width, height };
}
(this as any).updateShape(cfg, item, style, false);
},
updateShape(cfg: ComboConfig, item: Item, keyShapeStyle: object) {
const keyShape = item.get("keyShape");
const animate =
cfg.animate === undefined ? this.options.animate : cfg.animate;
if (animate && keyShape.animate) {
keyShape.animate(keyShapeStyle, {
duration: 200,
easing: "easeLinear",
});
} else {
keyShape.attr({
...keyShapeStyle,
});
}
(this as any).updateLabel(cfg, item);
},
},
"single-combo",
);
================================================
FILE: packages/core/src/element/edge.ts
================================================
/**
* @fileOverview 自定义边
* @description 自定义边中有大量逻辑同自定义节点重复,虽然可以提取成为 mixin ,但是考虑到代码的可读性,还是单独实现。
*/
import { IGroup, IShape, IElement, Point } from "@antv/g-base";
import { deepMix, mix, each, isNil, isNumber, isArray } from "@antv/util";
import { ILabelConfig, ShapeOptions } from "../interface/shape";
import {
EdgeConfig,
EdgeData,
IPoint,
LabelStyle,
ShapeStyle,
Item,
ModelConfig,
} from "../types";
import { getLabelPosition, getLoopCfgs } from "../util/graphic";
import { distance, getCircleCenterByPoints } from "../util/math";
import { getControlPoint, getSpline } from "../util/path";
import Global from "../global";
import Shape from "./shape";
import { shapeBase, CLS_LABEL_BG_SUFFIX } from "./shapeBase";
const CLS_SHAPE = "edge-shape";
// start,end 倒置,center 不变
function revertAlign(labelPosition: string): string {
let textAlign = labelPosition;
if (labelPosition === "start") {
textAlign = "end";
} else if (labelPosition === "end") {
textAlign = "start";
}
return textAlign;
}
const singleEdge: ShapeOptions = {
itemType: "edge",
/**
* 文本的位置
* @type {String}
*/
labelPosition: "center", // start, end, center
/**
* 文本的 x 偏移
* @type {Number}
*/
refX: 0,
/**
* 文本的 y 偏移
* @type {Number}
*/
refY: 0,
/**
* 文本是否跟着线自动旋转,默认 false
* @type {Boolean}
*/
labelAutoRotate: false,
// 自定义边时的配置
options: {
size: Global.defaultEdge.size,
style: {
x: 0,
y: 0,
stroke: Global.defaultEdge.style.stroke,
lineAppendWidth: Global.defaultEdge.style.lineAppendWidth,
},
labelCfg: {
style: {
fill: Global.edgeLabel.style.fill,
fontSize: Global.edgeLabel.style.fontSize,
},
},
stateStyles: {
...Global.edgeStateStyles,
},
},
/**
* 获取边的 path
* @internal 供扩展的边覆盖
* @param {Array} points 构成边的点的集合
* @return {Array} 构成 path 的数组
*/
getPath(points: Point[]): Array<Array<string | number>> {
const path: Array<Array<string | number>> = [];
each(points, (point: Point, index: number) => {
if (index === 0) {
path.push(["M", point.x, point.y]);
} else {
path.push(["L", point.x, point.y]);
}
});
return path;
},
getShapeStyle(cfg: EdgeConfig): ShapeStyle {
const { style: defaultStyle } = this.options as ModelConfig;
const strokeStyle: ShapeStyle = {
stroke: cfg.color,
};
// 如果设置了color,则覆盖默认的stroke属性
const style: ShapeStyle = mix({}, defaultStyle, strokeStyle, cfg.style);
const size = cfg.size || Global.defaultEdge.size;
cfg = this.getPathPoints!(cfg);
const { startPoint, endPoint } = cfg;
const controlPoints = this.getControlPoints!(cfg);
let points = [startPoint]; // 添加起始点
// 添加控制点
if (controlPoints) {
points = points.concat(controlPoints);
}
// 添加结束点
points.push(endPoint);
const path = (this as any).getPath(points);
const styles = mix(
{},
Global.defaultEdge.style as ShapeStyle,
{
stroke: Global.defaultEdge.color,
lineWidth: size,
path,
} as ShapeStyle,
style,
);
return styles;
},
updateShapeStyle(cfg: EdgeConfig, item: Item) {
const group = item.getContainer();
const strokeStyle: ShapeStyle = {
stroke: cfg.color,
};
const shape =
group.find((element) => element.get("className") === "edge-shape") ||
item.getKeyShape();
const { size } = cfg;
cfg = this.getPathPoints!(cfg);
const { startPoint, endPoint } = cfg;
const controlPoints = this.getControlPoints!(cfg); // || cfg.controlPoints;
let points = [startPoint]; // 添加起始点
// 添加控制点
if (controlPoints) {
points = points.concat(controlPoints);
}
// 添加结束点
points.push(endPoint);
const currentAttr = shape.attr();
const previousStyle = mix({}, strokeStyle, currentAttr, cfg.style);
const source = cfg.sourceNode;
const target = cfg.targetNode;
let routeCfg: { [key: string]: unknown } = { radius: previousStyle.radius };
if (!controlPoints) {
routeCfg = {
source,
target,
offset: previousStyle.offset,
radius: previousStyle.radius,
};
}
if (currentAttr.endArrow && previousStyle.endArrow === false) {
cfg.style.endArrow = {
path: "",
};
}
if (currentAttr.startArrow && previousStyle.startArrow === false) {
cfg.style.startArrow = {
path: "",
};
}
const path = (this as any).getPath(points, routeCfg);
const style = mix(
strokeStyle,
shape.attr(),
{
lineWidth: size,
path,
},
cfg.style,
);
if (shape) {
shape.attr(style);
}
},
getLabelStyleByPosition(
cfg: EdgeConfig,
labelCfg: ILabelConfig,
group?: IGroup,
): LabelStyle {
const labelPosition = labelCfg.position || this.labelPosition; // 文本的位置用户可以传入
const style: LabelStyle = {};
const pathShape =
group && group.find((element) => element.get("className") === CLS_SHAPE);
// 不对 pathShape 进行判空,如果线不存在,说明有问题了
let pointPercent;
if (labelPosition === "start") {
pointPercent = 0;
} else if (labelPosition === "end") {
pointPercent = 1;
} else {
pointPercent = 0.5;
}
// 偏移量
const offsetX = labelCfg.refX || (this.refX as number);
const offsetY = labelCfg.refY || (this.refY as number);
// 如果两个节点重叠,线就变成了一个点,这时候label的位置,就是这个点 + 绝对偏移
if (
cfg.startPoint!.x === cfg.endPoint!.x &&
cfg.startPoint!.y === cfg.endPoint!.y
) {
style.x = cfg.startPoint!.x + offsetX;
style.y = cfg.startPoint!.y + offsetY;
style.text = cfg.label as string;
return style;
}
let autoRotate;
if (isNil(labelCfg.autoRotate)) autoRotate = this.labelAutoRotate;
else autoRotate = labelCfg.autoRotate;
const offsetStyle = getLabelPosition(
pathShape,
pointPercent,
offsetX,
offsetY,
autoRotate as boolean,
);
style.x = offsetStyle.x;
style.y = offsetStyle.y;
style.rotate = offsetStyle.rotate;
style.textAlign = this._getTextAlign!(
labelPosition as string,
offsetStyle.angle as number,
);
style.text = cfg.label as string;
return style;
},
getLabelBgStyleByPosition(
label: IElement,
cfg: EdgeConfig,
labelCfg?: ILabelConfig,
group?: IGroup,
) {
if (!label) {
return {};
}
const bbox = label.getBBox();
const backgroundStyle = labelCfg.style && labelCfg.style.background;
if (!backgroundStyle) {
return {};
}
const { padding } = backgroundStyle;
const backgroundWidth = bbox.width + padding[1] + padding[3];
const backgroundHeight = bbox.height + padding[0] + padding[2];
const labelPosition = labelCfg.position || this.labelPosition;
const style = {
...backgroundStyle,
width: backgroundWidth,
height: backgroundHeight,
x: bbox.minX - padding[2],
y: bbox.minY - padding[0],
rotate: 0,
};
let autoRotate;
if (isNil(labelCfg.autoRotate)) autoRotate = this.labelAutoRotate;
else autoRotate = labelCfg.autoRotate;
const pathShape =
group && group.find((element) => element.get("className") === CLS_SHAPE);
// 不对 pathShape 进行判空,如果线不存在,说明有问题了
let pointPercent;
if (labelPosition === "start") {
pointPercent = 0;
} else if (labelPosition === "end") {
pointPercent = 1;
} else {
pointPercent = 0.5;
}
// 偏移量
const offsetX = labelCfg.refX || (this.refX as number);
const offsetY = labelCfg.refY || (this.refY as number);
// // 如果两个节点重叠,线就变成了一个点,这时候label的位置,就是这个点 + 绝对偏移
if (
cfg.startPoint!.x === cfg.endPoint!.x &&
cfg.startPoint!.y === cfg.endPoint!.y
) {
style.x = cfg.startPoint!.x + offsetX - backgroundWidth / 2;
style.y = cfg.startPoint!.y + offsetY - backgroundHeight / 2;
return style;
}
let offsetStyle = getLabelPosition(
pathShape,
pointPercent,
offsetX - backgroundWidth / 2,
offsetY + backgroundHeight / 2,
autoRotate,
);
const rad = offsetStyle.angle;
if (rad > (1 / 2) * Math.PI && rad < ((3 * 1) / 2) * Math.PI) {
offsetStyle = getLabelPosition(
pathShape,
pointPercent,
offsetX + backgroundWidth / 2,
offsetY + backgroundHeight / 2,
autoRotate,
);
}
if (autoRotate) {
style.x = offsetStyle.x;
style.y = offsetStyle.y;
}
style.rotate = offsetStyle.rotate;
return style;
},
// 获取文本对齐方式
_getTextAlign(labelPosition: string, angle: number): string {
let textAlign = "center";
if (!angle) {
return labelPosition;
}
angle = angle % (Math.PI * 2); // 取模
if (labelPosition !== "center") {
if (
(angle >= 0 && angle <= Math.PI / 2) ||
(angle >= (3 / 2) * Math.PI && angle < 2 * Math.PI)
) {
textAlign = labelPosition;
} else {
textAlign = revertAlign(labelPosition);
}
}
return textAlign;
},
/**
* @internal 获取边的控制点
* @param {Object} cfg 边的配置项
* @return {Array} 控制点的数组
*/
getControlPoints(cfg: EdgeConfig): IPoint[] | undefined {
return cfg.controlPoints;
},
/**
* @internal 处理需要重计算点和边的情况
* @param {Object} cfg 边的配置项
* @return {Object} 边的配置项
*/
getPathPoints(cfg: EdgeConfig): EdgeConfig {
return cfg;
},
/**
* 绘制边
* @override
* @param {Object} cfg 边的配置项
* @param {G.Group} group 边的容器
* @return {IShape} 图形
*/
drawShape(cfg: EdgeConfig, group: IGroup): IShape {
const shapeStyle = this.getShapeStyle!(cfg);
const shape = group.addShape("path", {
className: CLS_SHAPE,
name: CLS_SHAPE,
attrs: shapeStyle,
});
return shape;
},
drawLabel(cfg: EdgeConfig, group: IGroup): IShape {
const { labelCfg: defaultLabelCfg } = this.options as ModelConfig;
let defaultFontFamily;
if (
typeof window !== "undefined" &&
typeof window.getComputedStyle !== "undefined"
)
defaultFontFamily =
window
.getComputedStyle(document.body, null)
.getPropertyValue("font-family") || "Arial, sans-serif";
else defaultFontFamily = "Arial, sans-serif";
const labelCfg = deepMix(
{
fontFamily: defaultFontFamily,
},
defaultLabelCfg,
cfg.labelCfg,
);
const labelStyle = this.getLabelStyle!(cfg, labelCfg, group);
const rotate = labelStyle.rotate;
delete labelStyle.rotate;
const label = group.addShape("text", {
attrs: labelStyle,
name: "text-shape",
});
if (rotate) {
label.rotateAtStart(rotate);
}
if (labelStyle.background) {
const rect = this.drawLabelBg(cfg, group, label);
const labelBgClassname = this.itemType + CLS_LABEL_BG_SUFFIX;
rect.set("classname", labelBgClassname);
label.toFront();
}
return label;
},
drawLabelBg(cfg: ModelConfig, group: IGroup, label: IElement) {
const { labelCfg: defaultLabelCfg } = this.options as ModelConfig;
const labelCfg = deepMix({}, defaultLabelCfg, cfg.labelCfg);
const labelStyle = this.getLabelStyle!(cfg, labelCfg, group);
const rotate = labelStyle.rotate;
const style = this.getLabelBgStyleByPosition(label, cfg, labelCfg, group);
delete style.rotate;
const rect = group.addShape("rect", {
name: "text-bg-shape",
attrs: style,
});
if (rotate) rect.rotateAtStart(rotate);
return rect;
},
};
const singleEdgeDef = { ...shapeBase, ...singleEdge };
Shape.registerEdge("single-edge", singleEdgeDef);
// 直线, 不支持控制点
Shape.registerEdge(
"line",
{
// 控制点不生效
getControlPoints() {
return undefined;
},
},
"single-edge",
);
// 直线
Shape.registerEdge(
"spline",
{
getPath(points: Point[]): Array<Array<string | number>> {
const path = getSpline(points);
return path;
},
},
"single-edge",
);
Shape.registerEdge(
"arc",
{
curveOffset: 20,
clockwise: 1,
getControlPoints(cfg: EdgeConfig): IPoint[] {
const { startPoint, endPoint } = cfg;
const midPoint = {
x: (startPoint.x + endPoint.x) / 2,
y: (startPoint.y + endPoint.y) / 2,
};
let center;
let arcPoint;
// 根据给定点计算圆弧
if (cfg.controlPoints !== undefined) {
arcPoint = cfg.controlPoints[0];
center = getCircleCenterByPoints(startPoint, arcPoint, endPoint);
// 根据控制点和直线关系决定 clockwise值
if (startPoint.x <= endPoint.x && startPoint.y > endPoint.y) {
this.clockwise = center.x > arcPoint.x ? 0 : 1;
} else if (startPoint.x <= endPoint.x && startPoint.y < endPoint.y) {
this.clockwise = center.x > arcPoint.x ? 1 : 0;
} else if (startPoint.x > endPoint.x && startPoint.y <= endPoint.y) {
this.clockwise = center.y < arcPoint.y ? 0 : 1;
} else {
this.clockwise = center.y < arcPoint.y ? 1 : 0;
}
// 若给定点和两端点共线,无法生成圆弧,绘制直线
if (
(arcPoint.x - startPoint.x) / (arcPoint.y - startPoint.y) ===
(endPoint.x - startPoint.x) / (endPoint.y - startPoint.y)
) {
return [];
}
} else {
// 根据直线连线中点的的偏移计算圆弧
// 若用户给定偏移量则根据其计算,否则按照默认偏移值计算
if (cfg.curveOffset === undefined) {
cfg.curveOffset = this.curveOffset;
}
if (isArray(cfg.curveOffset)) {
cfg.curveOffset = cfg.curveOffset[0];
}
if (cfg.curveOffset < 0) {
this.clockwise = 0;
} else {
this.clockwise = 1;
}
const vec = {
x: endPoint.x - startPoint.x,
y: endPoint.y - startPoint.y,
};
const edgeAngle = Math.atan2(vec.y, vec.x);
arcPoint = {
x: cfg.curveOffset * Math.cos(-Math.PI / 2 + edgeAngle) + midPoint.x,
y: cfg.curveOffset * Math.sin(-Math.PI / 2 + edgeAngle) + midPoint.y,
};
center = getCircleCenterByPoints(startPoint, arcPoint, endPoint);
}
const radius = distance(startPoint, center);
const controlPoints = [{ x: radius, y: radius }];
return controlPoints;
},
getPath(points: Point[]): Array<Array<string | number>> {
const path: Array<Array<string | number>> = [];
path.push(["M", points[0].x, points[0].y]);
// 控制点与端点共线
if (points.length === 2) {
path.push(["L", points[1].x, points[1].y]);
} else {
path.push([
"A",
points[1].x,
points[1].y,
0,
0,
this.clockwise as number,
points[2].x,
points[2].y,
]);
}
return path;
},
},
"single-edge",
);
Shape.registerEdge(
"quadratic",
{
curvePosition: 0.5, // 弯曲的默认位置
curveOffset: -20, // 弯曲度,沿着 startPoint, endPoint 的垂直向量(顺时针)方向,距离线的距离,距离越大越弯曲
getControlPoints(cfg: EdgeConfig): IPoint[] {
let { controlPoints } = cfg; // 指定controlPoints
if (!controlPoints || !controlPoints.length) {
const { startPoint, endPoint } = cfg;
if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;
if (cfg.curvePosition === undefined)
cfg.curvePosition = this.curvePosition;
if (isArray(this.curveOffset)) cfg.curveOffset = cfg.curveOffset[0];
if (isArray(this.curvePosition)) cfg.curvePosition = cfg.curveOffset[0];
const innerPoint = getControlPoint(
startPoint as Point,
endPoint as Point,
cfg.curvePosition as number,
cfg.curveOffset as number,
);
controlPoints = [innerPoint];
}
return controlPoints;
},
getPath(points: Point[]): Array<Array<string | number>> {
const path = [];
path.push(["M", points[0].x, points[0].y]);
path.push(["Q", points[1].x, points[1].y, points[2].x, points[2].y]);
return path;
},
},
"single-edge",
);
Shape.registerEdge(
"cubic",
{
curvePosition: [1 / 2, 1 / 2],
curveOffset: [-20, 20],
getControlPoints(cfg: EdgeConfig): IPoint[] {
let { controlPoints } = cfg; // 指定 controlPoints
if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;
if (cfg.curvePosition === undefined)
cfg.curvePosition = this.curvePosition;
if (isNumber(cfg.curveOffset))
cfg.curveOffset = [cfg.curveOffset, -cfg.curveOffset];
if (isNumber(cfg.curvePosition))
cfg.curvePosition = [cfg.curvePosition, 1 - cfg.curvePosition];
if (!controlPoints || !controlPoints.length || controlPoints.length < 2) {
const { startPoint, endPoint } = cfg;
const innerPoint1 = getControlPoint(
startPoint as Point,
endPoint as Point,
cfg.curvePosition[0],
cfg.curveOffset[0],
);
const innerPoint2 = getControlPoint(
startPoint as Point,
endPoint as Point,
cfg.curvePosition[1],
cfg.curveOffset[1],
);
controlPoints = [innerPoint1, innerPoint2];
}
return controlPoints;
},
getPath(points: Point[]): Array<Array<string | number>> {
const path = [];
path.push(["M", points[0].x, points[0].y]);
path.push([
"C",
points[1].x,
points[1].y,
points[2].x,
points[2].y,
points[3].x,
points[3].y,
]);
return path;
},
},
"single-edge",
);
// 垂直方向的三阶贝塞尔曲线,不再考虑用户外部传入的控制点
Shape.registerEdge(
"cubic-vertical",
{
curvePosition: [1 / 2, 1 / 2],
minCurveOffset: [0, 0],
curveOffset: undefined,
getControlPoints(cfg: EdgeConfig): IPoint[] {
const { startPoint, endPoint } = cfg;
if (cfg.curvePosition === undefined)
cfg.curvePosition = this.curvePosition;
if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;
if (cfg.minCurveOffset === undefined)
cfg.minCurveOffset = this.minCurveOffset;
if (isNumber(cfg.curveOffset))
cfg.curveOffset = [cfg.curveOffset, -cfg.curveOffset];
if (isNumber(cfg.minCurveOffset))
cfg.minCurveOffset = [cfg.minCurveOffset, -cfg.minCurveOffset];
if (isNumber(cfg.curvePosition))
cfg.curvePosition = [cfg.curvePosition, 1 - cfg.curvePosition];
const yDist = endPoint!.y - startPoint!.y;
let curveOffset: number[] = [0, 0];
if (cfg.curveOffset) {
curveOffset = cfg.curveOffset;
} else if (Math.abs(yDist) < Math.abs(cfg.minCurveOffset[0])) {
curveOffset = cfg.minCurveOffset;
}
const innerPoint1 = {
x: startPoint!.x,
y:
startPoint!.y +
yDist * (this as any).curvePosition[0] +
curveOffset[0],
};
const innerPoint2 = {
x: endPoint!.x,
y:
endPoint!.y - yDist * (this as any).curvePosition[1] + curveOffset[1],
};
return [innerPoint1, innerPoint2];
},
},
"cubic",
);
// 水平方向的三阶贝塞尔曲线,不再考虑用户外部传入的控制点
Shape.registerEdge(
"cubic-horizontal",
{
curvePosition: [1 / 2, 1 / 2],
minCurveOffset: [0, 0],
curveOffset: undefined,
getControlPoints(cfg: EdgeConfig): IPoint[] {
const { startPoint, endPoint } = cfg;
if (cfg.curvePosition === undefined)
cfg.curvePosition = this.curvePosition;
if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;
if (cfg.minCurveOffset === undefined)
cfg.minCurveOffset = this.minCurveOffset;
if (isNumber(cfg.curveOffset))
cfg.curveOffset = [cfg.curveOffset, -cfg.curveOffset];
if (isNumber(cfg.minCurveOffset))
cfg.minCurveOffset = [cfg.minCurveOffset, -cfg.minCurveOffset];
if (isNumber(cfg.curvePosition))
cfg.curvePosition = [cfg.curvePosition, 1 - cfg.curvePosition];
const xDist = endPoint!.x - startPoint!.x;
let curveOffset: number[] = [0, 0];
if (cfg.curveOffset) {
curveOffset = cfg.curveOffset;
} else if (Math.abs(xDist) < Math.abs(cfg.minCurveOffset[0])) {
curveOffset = cfg.minCurveOffset;
}
const innerPoint1 = {
x:
startPoint!.x +
xDist * (this as any).curvePosition[0] +
curveOffset[0],
y: startPoint!.y,
};
const innerPoint2 = {
x:
endPoint!.x - xDist * (this as any).curvePosition[1] + curveOffset[1],
y: endPoint!.y,
};
const controlPoints = [innerPoint1, innerPoint2];
return controlPoints;
},
},
"cubic",
);
Shape.registerEdge(
"loop",
{
getPathPoints(cfg: ModelConfig): EdgeData {
return getLoopCfgs(cfg as EdgeData);
},
getControlPoints(cfg: EdgeConfig): IPoint[] | undefined {
return cfg.controlPoints;
},
afterDraw(cfg: EdgeConfig) {
cfg.controlPoints = undefined;
},
afterUpdate(cfg: EdgeConfig) {
cfg.controlPoints = undefined;
},
},
"cubic",
);
================================================
FILE: packages/core/src/element/hull/bubbleset.ts
================================================
import { IPoint, IBBox, Item, BubblesetCfg } from "../../types";
import {
squareDist,
pointLineSquareDist,
itemIntersectByLine,
getPointsCenter,
fractionToLine,
isPointsOverlap,
pointRectSquareDist,
Line,
isPointInPolygon,
} from "../../util/math";
const defaultOps = {
maxRoutingIterations: 100, // number of times to run the algorithm to refine the path finding in difficult areas
maxMarchingIterations: 100, // number of times to refine the boundary
pixelGroupSize: 2, // the resolution of the algorithm in square pixels
edgeR0: 10, // the distance from edges at which energy is 1 (full influence)
edgeR1: 10, // the distance from edges at which energy is 0 (no influence)
nodeR0: 5, // the distance from nodes which energy is 1 (full influence)
nodeR1: 10, // the distance from nodes at which energy is 0 (no influence)
morphBuffer: 5, // DEFAULT_NODE_R0; the amount of space to move the virtual edge when wrapping around obstacles
threshold: 0.001,
skip: 16,
nodeInfluenceFactor: 1,
edgeInfluenceFactor: 1,
negativeNodeInfluenceFactor: -0.5,
};
/**
* Marching square algorithm for traching the contour of a pixel group
* https://www.emanueleferonato.com/2013/03/01/using-marching-squares-algorithm-to-trace-the-contour-of-an-image/
* @param potentialArea
* @param threshold
*/
function MarchingSquares(contour, potentialArea, threshold) {
let marched = false;
const getVal = (x: number, y: number) => {
return potentialArea.cells[x + y * potentialArea.width];
};
const getState = (x: number, y: number) => {
let squareVal = 0;
if (getVal(x - 1, y - 1) >= threshold) {
squareVal += 1;
}
if (getVal(x, y - 1) > threshold) {
squareVal += 2;
}
if (getVal(x - 1, y) > threshold) {
squareVal += 4;
}
if (getVal(x, y) > threshold) {
squareVal += 8;
}
return squareVal;
};
const doMarch = (xPos: number, yPos: number) => {
let x = xPos;
let y = yPos;
let prevX;
let prevY;
for (let i = 0; i < potentialArea.width * potentialArea.height; i++) {
prevX = x;
prevY = y;
if (contour.findIndex((item) => item.x === x && item.y === y) > -1) {
if (contour[0].x !== x || contour[0].y !== y) {
// encountered a loop but haven't returned to start: change direction using conditionals and continue back to start
} else {
return true;
}
} else {
contour.push({ x, y });
}
const state = getState(x, y);
// assign the move direction according to state of the square
switch (state) {
case -1:
console.warn("Marched out of bounds");
return true;
case 0:
case 3:
case 2:
case 7:
x++; // go right
break;
case 12:
case 14:
case 4:
x--; // go left
break;
case 6: // go left if come from up else go right
if (prevX === 0) {
if (prevY === -1) {
x -= 1;
} else {
x += 1;
}
}
break;
case 1:
case 13:
case 5:
y--; // go up
break;
case 9: // go up if come from right else go down
if (prevX === 1) {
if (prevY === 0) {
y -= 1;
} else {
y += 1;
}
}
break;
case 10:
case 8:
case 11:
y++; // go down
break;
default:
console.warn(`Marching squares invalid state: ${state}`);
return true;
}
}
};
this.march = () => {
for (let x = 0; x < potentialArea.width && !marched; x += 1) {
for (let y = 0; y < potentialArea.height && !marched; y += 1) {
if (getVal(x, y) > threshold && getState(x, y) !== 15) {
marched = doMarch(x, y);
}
}
}
return marched;
};
}
/**
* Space partition & assign value to each cell
* @param points
*/
const initGridCells = (
width: number,
height: number,
pixelGroupSize: number,
) => {
const scaleWidth = Math.ceil(width / pixelGroupSize);
const scaleHeight = Math.ceil(height / pixelGroupSize);
const gridCells = new Float32Array(
Math.max(0, scaleWidth * scaleHeight),
).fill(0);
return {
cells: gridCells,
width: scaleWidth,
height: scaleHeight,
};
};
/**
* Find the optimal already visited member to item;
Optimal: minimize cost(j) = distance(i,j) ∗ countObstacles(i,j)
* @param item
* @param visited
*/
const pickBestNeighbor = (
item: Item,
visited: Item[],
nonMembers: Item[],
): Item | null => {
let closestNeighbour = null;
let minCost = Number.POSITIVE_INFINITY;
visited.forEach((neighbourItem) => {
const itemP = { x: item.getModel().x, y: item.getModel().y };
const neighbourItemP = {
x: neighbourItem.getModel().x,
y: neighbourItem.getModel().y,
};
const dist = squareDist(itemP, neighbourItemP);
const directLine = new Line(
itemP.x,
itemP.y,
neighbourItemP.x,
neighbourItemP.y,
);
const numberObstacles = nonMembers.reduce((count, _item) => {
if (fractionToLine(_item, directLine) > 0) {
return count + 1;
}
return count;
}, 0);
if (dist * (numberObstacles + 1) ** 2 < minCost) {
closestNeighbour = neighbourItem;
minCost = dist * (numberObstacles + 1) ** 2;
}
});
return closestNeighbour;
};
/**
* 返回和线相交的item中,离边的起点最近的item
* @param items
* @param line
*/
const getIntersectItem = (items: Item[], line: Line): Item | null => {
let minDistance = Number.POSITIVE_INFINITY;
let closestItem = null;
items.forEach((item) => {
const distance = fractionToLine(item, line);
// find closest intersection
if (distance >= 0 && distance < minDistance) {
closestItem = item;
minDistance = distance;
}
});
return closestItem;
};
/**
* Modify the directLine and Route virtual edges around obstacles
*/
const computeRoute = (
directLine: Line,
nonMembers: Item[],
maxRoutingIterations: number,
morphBuffer: number,
): Line[] => {
const checkedLines: Line[] = [];
const linesToCheck: Line[] = [];
linesToCheck.push(directLine);
let hasIntersection = true;
let iterations = 0;
const pointExists = (point: IPoint, lines: Line[]) => {
let flag = false;
lines.forEach((line) => {
if (flag) return;
if (
isPointsOverlap(point, { x: line.x1, y: line.y1 }) ||
isPointsOverlap(point, { x: line.x2, y: line.y2 })
) {
flag = true;
}
});
return flag;
};
const isPointInNonMembers = (point: IPoint, _nonMembers: Item[]) => {
for (const item of _nonMembers) {
const bbox = item.getBBox();
const itemContour = [
[bbox.x, bbox.y],
[bbox.x + bbox.width, bbox.y],
[bbox.x, bbox.y + bbox.height],
[bbox.x + bbox.width, bbox.y + bbox.height],
];
if (isPointInPolygon(itemContour, point.x, point.y)) {
return true;
}
}
return false;
};
// outer loop end when no more intersections or out of iterations
while (hasIntersection && iterations < maxRoutingIterations) {
hasIntersection = false;
// inner loop end when out of lines or found an intersection
while (!hasIntersection && linesToCheck.length) {
const line = linesToCheck.pop();
const closestItem = getIntersectItem(nonMembers, line);
if (closestItem) {
const [intersections, countIntersections] = itemIntersectByLine(
closestItem,
line,
);
// if line passes through item
if (countIntersections === 2) {
const testReroute = (isFirst: boolean) => {
let tempMorphBuffer = morphBuffer;
let virtualNode = rerouteLine(
closestItem,
tempMorphBuffer,
intersections,
isFirst,
);
// test the virtualNode already exists
let exist =
pointExists(virtualNode, linesToCheck) ||
pointExists(virtualNode, checkedLines);
let pointInside = isPointInNonMembers(virtualNode, nonMembers);
while (!exist && pointInside && tempMorphBuffer >= 1) {
// try a smaller buffer
tempMorphBuffer /= 1.5;
virtualNode = rerouteLine(
closestItem,
tempMorphBuffer,
intersections,
isFirst,
);
exist =
pointExists(virtualNode, linesToCheck) ||
pointExists(virtualNode, checkedLines);
pointInside = isPointInNonMembers(virtualNode, nonMembers);
}
// 第二次route时不要求pointInside
if (virtualNode && !exist && (!isFirst || !pointInside)) {
// add 2 rerouted lines to check
linesToCheck.push(
new Line(line.x1, line.y1, virtualNode.x, virtualNode.y),
);
linesToCheck.push(
new Line(virtualNode.x, virtualNode.y, line.x2, line.y2),
);
hasIntersection = true;
}
};
testReroute(true);
if (!hasIntersection) {
// if we didn't find a valid point around the first corner, try the second
testReroute(false);
}
}
}
// no intersection found, mark this line as completed
if (!hasIntersection) {
checkedLines.push(line);
}
iterations += 1;
}
}
// 加入剩余的线
while (linesToCheck.length) {
checkedLines.push(linesToCheck.pop());
}
return checkedLines;
};
/**
* Connect item with visited members using direct line or virtual edges
*/
function getRoute(
item: Item,
nonMembers: Item[],
visited: Item[],
maxRoutingIterations: number,
morphBuffer: number,
) {
const optimalNeighbor = pickBestNeighbor(item, visited, nonMembers);
if (optimalNeighbor === null) {
return [];
}
// merge the consecutive lines
const mergeLines = (checkedLines: Line[]): Line[] => {
const finalRoute: Line[] = [];
while (checkedLines.length > 0) {
const line1 = checkedLines.pop()!;
if (checkedLines.length === 0) {
finalRoute.push(line1);
break;
}
const line2 = checkedLines.pop()!;
const mergeLine = new Line(line1.x1, line1.y1, line2.x2, line2.y2);
const closestItem = getIntersectItem(nonMembers, mergeLine);
// merge most recent line and previous line
if (!closestItem) {
checkedLines.push(mergeLine);
} else {
finalRoute.push(line1);
checkedLines.push(line2);
}
}
return finalRoute;
};
const directLine = new Line(
item.getModel().x,
item.getModel().y,
optimalNeighbor.getModel().x,
optimalNeighbor.getModel().y,
);
const checkedLines = computeRoute(
directLine,
nonMembers,
maxRoutingIterations,
morphBuffer,
);
const finalRoute = mergeLines(checkedLines);
return finalRoute;
}
/**
* Calculate the countor that includes the selected items and exclues the non-selected items
* @param graph
* @param members
* @param nonMembers
* @param options
*/
export const genBubbleSet = (
members: Item[],
nonMembers: Item[],
ops?: BubblesetCfg,
) => {
// eslint-disable-next-line no-redeclare
const options = Object.assign(defaultOps, ops);
const centroid = getPointsCenter(
members.map((item) => ({ x: item.getModel().x, y: item.getModel().y })),
);
// 按照到中心距离远近排序
members = members.sort(
(a, b) =>
squareDist({ x: a.getModel().x, y: a.getModel().y }, centroid) -
squareDist({ x: b.getModel().x, y: b.getModel().y }, centroid),
);
const visited: Item[] = [];
const virtualEdges: Line[] = [];
members.forEach((item) => {
const lines = getRoute(
item,
nonMembers,
visited,
options.maxRoutingIterations,
options.morphBuffer,
);
lines.forEach((l) => {
virtualEdges.push(l);
});
visited.push(item);
});
// 由于edge也可以作为member和nonMember传入,暂时不考虑把edges作为参数传入genBubbleSet
// edges && edges.forEach(e => {
// virtualEdges.push(new Line(e.getSource().getModel().x, e.getSource().getModel().y, e.getTarget().getModel().x, e.getTarget().getModel().y));
// });
const activeRegion = getActiveRregion(members, virtualEdges, options.nodeR0);
const potentialArea = initGridCells(
activeRegion.width,
activeRegion.height,
options.pixelGroupSize,
);
// Use march squares to generate contour
let contour = [];
let hull = [];
for (
let iterations = 0;
iterations < options.maxMarchingIterations;
iterations++
) {
fillPotentialArea(
members,
nonMembers,
virtualEdges,
activeRegion,
potentialArea,
options,
);
contour = [];
hull = [];
if (!new MarchingSquares(contour, potentialArea, options.threshold).march())
continue;
const marchedPath = contour.map((point) => ({
x: Math.round(point.x * options.pixelGroupSize + activeRegion.minX),
y: Math.round(point.y * options.pixelGroupSize + activeRegion.minY),
}));
// const marchedPath = marchingSquares(potentialArea, options.threshold).map(point => ({ x: Math.round(point.x * options.pixelGroupSize + activeRegion.minX), y: Math.round(point.y * options.pixelGroupSize + activeRegion.minY) }))
if (marchedPath) {
let size = marchedPath.length;
if (options.skip > 1) {
size = Math.floor(marchedPath.length / options.skip);
// if we reduced too much (fewer than three points in reduced surface) reduce skip and try again
while (size < 3 && options.skip > 1) {
options.skip -= 1;
size = Math.floor(marchedPath.length / options.skip);
}
}
// copy hull values
for (let i = 0, j = 0; j < size; j += 1, i += options.skip) {
hull.push({ x: marchedPath[i].x, y: marchedPath[i].y });
}
}
const isContourValid = () => {
for (const item of members) {
const hullPoints = hull.map((point) => [point.x, point.y]);
if (
!isPointInPolygon(
hullPoints,
item.getBBox().centerX,
item.getBBox().centerY,
)
)
return false;
}
// 不强制要求所有nonMembers都没有包含在内
// for (const item of nonMembers) {
// if (isPointInPolygon({ x: item.getBBox().centerX, y: item.getBBox().centerY }, contour)) return false
// }
return true;
};
if (hull && isContourValid()) {
return hull;
}
// update parameters for next iteraction
options.threshold *= 0.9;
if (iterations <= options.maxMarchingIterations * 0.5) {
options.memberInfluenceFactor *= 1.2;
options.edgeInfluenceFactor *= 1.2;
} else if (
options.nonMemberInfluenceFactor !== 0 &&
nonMembers.length > 0
) {
// after half the iterations, start increasing positive energy and lowering the threshold
options.nonMemberInfluenceFactor *= 0.8;
} else {
break;
}
}
return hull;
};
/**
* unionboundingbox
* @param members
* @param edges
*/
function getActiveRregion(
members: Item[],
edges: Line[],
offset: number,
): IBBox {
const activeRegion = {
minX: Number.POSITIVE_INFINITY,
minY: Number.POSITIVE_INFINITY,
maxX: Number.NEGATIVE_INFINITY,
maxY: Number.NEGATIVE_INFINITY,
width: 0,
height: 0,
x: 0,
y: 0,
};
const bboxes = [];
members.forEach((item) => {
bboxes.push(item.getBBox());
});
edges.forEach((l) => {
bboxes.push(l.getBBox());
});
for (const bbox of bboxes) {
activeRegion.minX =
(bbox.minX < activeRegion.minX ? bbox.minX : activeRegion.minX) - offset;
activeRegion.minY =
(bbox.minY < activeRegion.minY ? bbox.minY : activeRegion.minY) - offset;
activeRegion.maxX =
(bbox.maxX > activeRegion.maxX ? bbox.maxX : activeRegion.maxX) + offset;
activeRegion.maxY =
(bbox.maxY > activeRegion.maxY ? bbox.maxY : activeRegion.maxY) + offset;
}
activeRegion.width = activeRegion.maxX - activeRegion.minX;
activeRegion.height = activeRegion.maxY - activeRegion.minY;
activeRegion.x = activeRegion.minX;
activeRegion.y = activeRegion.minY;
return activeRegion;
}
function fillPotentialArea(
members: Item[],
nonMembers: Item[],
edges: Line[],
activeRegion: IBBox,
potentialArea,
options: BubblesetCfg,
) {
function pos2GridIx(x, offset) {
const gridIx = Math.floor((x - offset) / options.pixelGroupSize);
return gridIx < 0 ? 0 : gridIx;
}
function gridIx2Pos(x, offset) {
return x * options.pixelGroupSize + offset;
}
// using inverse a for numerical stability
const nodeInfA =
(options.nodeR0 - options.nodeR1) * (options.nodeR0 - options.nodeR1);
const edgeInfA =
(options.edgeR0 - options.edgeR1) * (options.edgeR0 - options.edgeR1);
const getAffectedRegion = (bbox, thresholdR) => {
const startX = Math.min(
pos2GridIx(bbox.minX, thresholdR + activeRegion.minX),
potentialArea.width,
);
const startY = Math.min(
pos2GridIx(bbox.minY, thresholdR + activeRegion.minY),
potentialArea.height,
);
const endX = Math.min(
pos2GridIx(bbox.maxX, -thresholdR + activeRegion.minX),
potentialArea.width,
);
const endY = Math.min(
pos2GridIx(bbox.maxY, -thresholdR + activeRegion.minY),
potentialArea.height,
);
return [startX, startY, endX, endY];
};
const addItemInfluence = (item: Item, influenceFactor: number) => {
const bbox = item.getBBox();
const [startX, startY, endX, endY] = getAffectedRegion(
bbox,
options.nodeR1,
);
// calculate item influence for each cell
for (let y = startY; y < endY; y += 1) {
for (let x = startX; x < endX; x += 1) {
if (
influenceFactor < 0 &&
potentialArea[x + y * potentialArea.width] <= 0
) {
continue;
}
const tempX = gridIx2Pos(x, activeRegion.minX);
const tempY = gridIx2Pos(y, activeRegion.minY);
const distanceSq = pointRectSquareDist(
{ x: tempX, y: tempY },
{
x: bbox.minX,
y: bbox.minY,
width: bbox.width,
height: bbox.height,
},
);
if (distanceSq < options.nodeR1 ** 2) {
const dr = Math.sqrt(distanceSq) - options.nodeR1;
potentialArea.cells[x + y * potentialArea.width] +=
influenceFactor * dr * dr;
}
}
}
};
const addEdgeInfluence = (line: Line, influenceFactor: number) => {
const bbox = line.getBBox();
const [startX, startY, endX, endY] = getAffectedRegion(
bbox,
options.edgeR1,
);
// for every point in active part of potentialArea, calculate distance to nearest point on line and add influence
for (let y = startY; y < endY; y += 1) {
for (let x = startX; x < endX; x += 1) {
if (
influenceFactor < 0 &&
potentialArea.cells[x + y * potentialArea.width] <= 0
) {
continue;
}
const tempX = gridIx2Pos(x, activeRegion.minX);
const tempY = gridIx2Pos(y, activeRegion.minY);
const minDistanceSq = pointLineSquareDist({ x: tempX, y: tempY }, line);
// only influence if less than r1
if (minDistanceSq < options.edgeR1 ** 2) {
const mdr = Math.sqrt(minDistanceSq) - options.edgeR1;
potentialArea.cells[x + y * potentialArea.width] +=
influenceFactor * mdr * mdr;
}
}
}
};
if (options.nodeInfluenceFactor) {
members.forEach((item) => {
addItemInfluence(item, options.nodeInfluenceFactor / nodeInfA);
});
}
if (options.edgeInfluenceFactor) {
edg
gitextract_n32t9dq7/ ├── .browserslistrc ├── .gitattributes ├── .gitignore ├── .npmignore ├── .prettierrc ├── .stylelintrc.json ├── .travis.yml ├── LICENSE ├── README-zh-CN.md ├── README.md ├── SECURITY.md ├── binding.gyp ├── common/ │ ├── autoinstallers/ │ │ └── rush-prettier/ │ │ └── package.json │ ├── config/ │ │ └── rush/ │ │ ├── .npmrc │ │ ├── .npmrc-publish │ │ ├── .pnpmfile.cjs │ │ ├── artifactory.json │ │ ├── build-cache.json │ │ ├── cobuild.json │ │ ├── command-line.json │ │ ├── common-versions.json │ │ ├── custom-tips.json │ │ ├── experiments.json │ │ ├── pnpm-config.json │ │ ├── repo-state.json │ │ ├── rush-plugins.json │ │ ├── subspaces.json │ │ └── version-policies.json │ ├── git-hooks/ │ │ ├── commit-msg.sample │ │ └── pre-commit │ └── scripts/ │ ├── install-run-rush-pnpm.js │ ├── install-run-rush.js │ ├── install-run-rushx.js │ └── install-run.js ├── eslint.config.js ├── package.json ├── packages/ │ ├── core/ │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── behavior/ │ │ │ │ ├── behavior.ts │ │ │ │ ├── behaviorOption.ts │ │ │ │ └── index.ts │ │ │ ├── element/ │ │ │ │ ├── arrow.ts │ │ │ │ ├── combo.ts │ │ │ │ ├── combos/ │ │ │ │ │ ├── circle.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── rect.ts │ │ │ │ ├── edge.ts │ │ │ │ ├── hull/ │ │ │ │ │ ├── bubbleset.ts │ │ │ │ │ └── convexHull.ts │ │ │ │ ├── index.ts │ │ │ │ ├── marker.ts │ │ │ │ ├── node.ts │ │ │ │ ├── nodes/ │ │ │ │ │ ├── image.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── simple-circle.ts │ │ │ │ │ └── simple-rect.ts │ │ │ │ ├── shape.ts │ │ │ │ ├── shapeBase.ts │ │ │ │ └── xml.ts │ │ │ ├── global.ts │ │ │ ├── graph/ │ │ │ │ ├── controller/ │ │ │ │ │ ├── event.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── item.ts │ │ │ │ │ ├── layout.ts │ │ │ │ │ ├── mode.ts │ │ │ │ │ ├── state.ts │ │ │ │ │ └── view.ts │ │ │ │ └── graph.ts │ │ │ ├── index.ts │ │ │ ├── interface/ │ │ │ │ ├── behavior.ts │ │ │ │ ├── graph.ts │ │ │ │ ├── index.ts │ │ │ │ ├── item.ts │ │ │ │ └── shape.ts │ │ │ ├── item/ │ │ │ │ ├── combo.ts │ │ │ │ ├── edge.ts │ │ │ │ ├── hull.ts │ │ │ │ ├── item.ts │ │ │ │ └── node.ts │ │ │ ├── types/ │ │ │ │ └── index.ts │ │ │ └── util/ │ │ │ ├── base.ts │ │ │ ├── color.ts │ │ │ ├── graphic.ts │ │ │ ├── index.ts │ │ │ ├── letterAspectRatio.ts │ │ │ ├── math.ts │ │ │ ├── path.ts │ │ │ └── validation.ts │ │ ├── tests/ │ │ │ └── unit/ │ │ │ └── index-spec.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── element/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── edges/ │ │ │ │ ├── index.ts │ │ │ │ ├── polyline-util.ts │ │ │ │ ├── polyline.ts │ │ │ │ └── router.ts │ │ │ ├── index.ts │ │ │ └── nodes/ │ │ │ ├── circle.ts │ │ │ ├── diamond.ts │ │ │ ├── donut.ts │ │ │ ├── ellipse.ts │ │ │ ├── image.ts │ │ │ ├── index.ts │ │ │ ├── modelRect.ts │ │ │ ├── rect.ts │ │ │ ├── star.ts │ │ │ └── triangle.ts │ │ ├── tests/ │ │ │ └── unit/ │ │ │ ├── issues-spec.ts │ │ │ └── template-spec.ts │ │ └── vite.config.ts │ ├── examples-alipay/ │ │ ├── app.acss │ │ ├── app.js │ │ ├── app.json │ │ ├── common/ │ │ │ ├── components/ │ │ │ │ ├── block-list/ │ │ │ │ │ ├── block-list.acss │ │ │ │ │ ├── block-list.axml │ │ │ │ │ ├── block-list.js │ │ │ │ │ └── block-list.json │ │ │ │ └── search/ │ │ │ │ ├── search.acss │ │ │ │ ├── search.axml │ │ │ │ ├── search.js │ │ │ │ └── search.json │ │ │ └── utils/ │ │ │ ├── common.js │ │ │ ├── context.js │ │ │ ├── data.js │ │ │ ├── debounce.js │ │ │ └── process.js │ │ ├── mini.project.json │ │ ├── package.json │ │ └── pages/ │ │ ├── animation/ │ │ │ ├── change-position-default/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── custom-animate-position/ │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── edge-edge/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── edge-line-growth/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── node-node/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── point-in-line/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ └── state-change-hover/ │ │ │ ├── data.js │ │ │ ├── index.acss │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ ├── elements/ │ │ │ ├── arc/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── area-chart/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── bar-chart/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── built-in-arrows/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── c-circle/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── c-rect/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── card/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── card-node/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── circle/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── circle-with-combo/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── cubic1/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── cubic2/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── custom-arrows/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── custom-polyline/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── custom-polyline2/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── diamond/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── donut/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── edge-bg/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── edge-mul-label/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── ellipse/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── extra-shape/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── image/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── label-len/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── label-len1/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── line-chart/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── list/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── loop/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── mode-rect/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── multi-edges/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── node-bg/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── pie-chart/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── point-chart/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── polyline1/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── polyline2/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── polyline3/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── rect/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── rect-with-combo/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── stack-chart/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── star/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ └── triangle/ │ │ │ ├── data.js │ │ │ ├── index.acss │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ ├── general-graph/ │ │ │ ├── basic-FA2/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── basic-MDS/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── basic-arc-diagram/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── basic-circular/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── basic-combo-force/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── basic-concentric/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── basic-dagre/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── basic-force-directed/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── basic-force-directed-drag-fix/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── basic-grid/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── basic-radial/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── circular-arc-diagram/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── circular-configuration-translate/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── cluster-grid/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── custom-bi-graph/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── dagre/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── dagre-UL/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── dagre-combo/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── dagre-configuration-translate/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── data-change/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── degree-circular/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── division-circular/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── force-bubbles/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── force-constrained-in-rect/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── force-directed-configuration-translate/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── force-directed-force-clustering/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── force-directed-functional-params/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── force-directed-prevent-overlap/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── fruchterman/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── fruchterman-clustering/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── fruchterman-configuration-translate/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── fruchterman-worker/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── interact-radial/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── layout-timing/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── layout-translate/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── prevent-overlap-radial/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── prevent-overlap-unstrict-radial/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── radial-configuration-translate/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── sort-radial/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── spiral-circular/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── subgraph-layout/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ └── sublayout-pipes/ │ │ │ ├── data.js │ │ │ ├── index.acss │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ ├── index/ │ │ │ ├── index.acss │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ ├── interactive/ │ │ │ ├── activate-relations/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── add-child/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── canvas-two-fingers/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── change-data/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── change-members/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── collapse-slibing/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── combo-circle/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── combo-rect/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── drag-subtree/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── fix-item/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── hide-item/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── highlight-dark/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── hull/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── move/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── move-animate/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── partial-node/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ └── set-mode/ │ │ │ ├── data.js │ │ │ ├── index.acss │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ ├── plugins/ │ │ │ ├── bundling/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── donut-transfer/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── edge-filter/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── fisheye/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── menu/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── mini-map/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── snap-line/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── timebar/ │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ └── index.tsx │ │ │ ├── tool-tip/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ └── zoom-slider/ │ │ │ ├── data.js │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ ├── scene-case/ │ │ │ ├── custom-flow/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── decision-tree/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── donut-transfer/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── knowledge-tree-graph/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── metro-lines/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── mind-map/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ └── sankey/ │ │ │ ├── data.js │ │ │ ├── index.acss │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ ├── search/ │ │ │ ├── search.acss │ │ │ ├── search.axml │ │ │ ├── search.js │ │ │ └── search.json │ │ └── tree-graph/ │ │ ├── basic-dendrogram/ │ │ │ ├── data.js │ │ │ ├── index.acss │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ ├── compact-box/ │ │ │ ├── data.js │ │ │ ├── index.acss │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ ├── compact-box-left-align/ │ │ │ ├── data.js │ │ │ ├── index.acss │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ ├── custom-edge-tree/ │ │ │ ├── data.js │ │ │ ├── index.acss │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ ├── custom-side-mind-map/ │ │ │ ├── data.js │ │ │ ├── index.acss │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ ├── custom-tree/ │ │ │ ├── data.js │ │ │ ├── index.acss │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ ├── file-system/ │ │ │ ├── data.js │ │ │ ├── index.acss │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ ├── intend-align-top/ │ │ │ ├── data.js │ │ │ ├── index.acss │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ ├── intended/ │ │ │ ├── data.js │ │ │ ├── index.acss │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ ├── left-mind-map/ │ │ │ ├── data.js │ │ │ ├── index.acss │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ ├── mind-map/ │ │ │ ├── data.js │ │ │ ├── index.acss │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ ├── radial-compact-box/ │ │ │ ├── data.js │ │ │ ├── index.acss │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ ├── radial-dendrogram/ │ │ │ ├── data.js │ │ │ ├── index.acss │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ ├── right-mind-map/ │ │ │ ├── data.js │ │ │ ├── index.acss │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ ├── tb-compact-box/ │ │ │ ├── data.js │ │ │ ├── index.acss │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ ├── tb-dendrogram/ │ │ │ ├── data.js │ │ │ ├── index.acss │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ └── tree-edge-label/ │ │ ├── data.js │ │ ├── index.acss │ │ ├── index.axml │ │ ├── index.js │ │ └── index.json │ ├── examples-uniapp/ │ │ ├── .hbuilderx/ │ │ │ └── launch.json │ │ ├── App.vue │ │ ├── components/ │ │ │ └── canvas/ │ │ │ └── canvas.vue │ │ ├── f6/ │ │ │ ├── extends/ │ │ │ │ ├── graph/ │ │ │ │ │ └── treeGraph.js │ │ │ │ └── layout/ │ │ │ │ ├── circularLayout.js │ │ │ │ ├── comboForceLayout.js │ │ │ │ ├── concentricLayout.js │ │ │ │ ├── dagreLayout.js │ │ │ │ ├── forceAtlas2Layout.js │ │ │ │ ├── forceLayout.js │ │ │ │ ├── fruchtermanLayout.js │ │ │ │ ├── gForceLayout.js │ │ │ │ ├── gridLayout.js │ │ │ │ ├── mdsLayout.js │ │ │ │ ├── radialLayout.js │ │ │ │ └── randomLayout.js │ │ │ └── index.js │ │ ├── index.html │ │ ├── main.js │ │ ├── manifest.json │ │ ├── pages/ │ │ │ └── index/ │ │ │ └── index.vue │ │ ├── pages.json │ │ └── uni.scss │ ├── examples-wx/ │ │ ├── app.js │ │ ├── app.json │ │ ├── app.wxss │ │ ├── components/ │ │ │ ├── wx.js │ │ │ ├── wx.json │ │ │ ├── wx.wxml │ │ │ └── wx.wxss │ │ ├── miniprogram_npm/ │ │ │ └── @antv/ │ │ │ ├── f6-plugin/ │ │ │ │ └── f6Plugin.js │ │ │ └── f6-wx/ │ │ │ ├── canvas/ │ │ │ │ ├── canvas.js │ │ │ │ ├── canvas.json │ │ │ │ └── canvas.wxml │ │ │ ├── container/ │ │ │ │ ├── container.js │ │ │ │ ├── container.json │ │ │ │ └── container.wxml │ │ │ ├── extends/ │ │ │ │ ├── graph/ │ │ │ │ │ └── treeGraph.js │ │ │ │ └── layout/ │ │ │ │ ├── circularLayout.js │ │ │ │ ├── comboForceLayout.js │ │ │ │ ├── concentricLayout.js │ │ │ │ ├── dagreLayout.js │ │ │ │ ├── forceAtlas2Layout.js │ │ │ │ ├── forceLayout.js │ │ │ │ ├── fruchtermanLayout.js │ │ │ │ ├── gForceLayout.js │ │ │ │ ├── gridLayout.js │ │ │ │ ├── mdsLayout.js │ │ │ │ ├── radialLayout.js │ │ │ │ └── randomLayout.js │ │ │ └── index.js │ │ ├── package-animation/ │ │ │ └── pages/ │ │ │ └── animation/ │ │ │ ├── change-position-default/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── custom-animate-position/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── edge-edge/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── edge-line-growth/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── node-node/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── point-in-line/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ └── state-change-hover/ │ │ │ ├── data.js │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── package-elements/ │ │ │ └── pages/ │ │ │ └── elements/ │ │ │ ├── arc/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── area-chart/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── bar-chart/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── built-in-arrows/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── c-circle/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── c-rect/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── card/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── card-node/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── circle/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── circle-with-combo/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── cubic1/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── cubic2/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── custom-arrows/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── custom-polyline/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── custom-polyline2/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── diamond/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── donut/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── edge-bg/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── edge-mul-label/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── ellipse/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── extra-shape/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── image/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── label-len/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── label-len1/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── line-chart/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── list/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── loop/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── mode-rect/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── multi-edges/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── node-bg/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── pie-chart/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── point-chart/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── polyline1/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── polyline2/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── polyline3/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── rect/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── rect-with-combo/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── stack-chart/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── star/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ └── triangle/ │ │ │ ├── data.js │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── package-general-graph/ │ │ │ └── pages/ │ │ │ └── general-graph/ │ │ │ ├── basic-FA2/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── basic-MDS/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── basic-arc-diagram/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── basic-circular/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── basic-combo-force/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── basic-concentric/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── basic-dagre/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── basic-force-directed/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── basic-force-directed-drag-fix/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── basic-grid/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── basic-radial/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── circular-arc-diagram/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── circular-configuration-translate/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── cluster-grid/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── custom-bi-graph/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── dagre/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── dagre-UL/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── dagre-combo/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── dagre-configuration-translate/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── data-change/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── degree-circular/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── division-circular/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── force-bubbles/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── force-constrained-in-rect/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── force-directed-configuration-translate/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── force-directed-force-clustering/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── force-directed-functional-params/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── force-directed-prevent-overlap/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── fruchterman/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── fruchterman-clustering/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── fruchterman-configuration-translate/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── interact-radial/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── layout-timing/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── layoutTranslate/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── prevent-overlap-radial/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── prevent-overlap-unstrict-radial/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── radial-configuration-translate/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── sort-radial/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── spiral-circular/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── subgraph-layout/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ └── sublayout-pipes/ │ │ │ ├── data.js │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── package-interactive/ │ │ │ └── pages/ │ │ │ └── interactive/ │ │ │ ├── activate-relations/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── add-child/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── canvas-two-fingers/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── change-data/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── change-members/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── collapse-slibing/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── combo-circle/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── combo-rect/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── drag-subtree/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── fix-item/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── hide-item/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── highlight-dark/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── hull/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── move/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── move-animate/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── partial-node/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ └── set-mode/ │ │ │ ├── data.js │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── package-plugin/ │ │ │ └── pages/ │ │ │ └── plugin/ │ │ │ ├── bundling/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── edge-filter/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── fish-eye/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── legend/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── menu/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── mini-map/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── snap-line/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── time-bar/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── tool-tip/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ └── zoom-slider/ │ │ │ ├── data.js │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── package-scene-case/ │ │ │ └── pages/ │ │ │ └── scene-case/ │ │ │ ├── custom-flow/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── decision-tree/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── donut-transfer/ │ │ │ │ ├── data.js │ │ │ │ ├── index.acss │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── knowledge-tree-graph/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── metro-lines/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── mind-map/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ └── sankey/ │ │ │ ├── data.js │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── package-tree-graph/ │ │ │ └── pages/ │ │ │ └── tree-graph/ │ │ │ ├── basic-dendrogram/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── compact-box/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── compact-box-left-align/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── custom-edge-tree/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── custom-side-mind-map/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── custom-tree/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── file-system/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── h-intended/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── intend-align-top/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── left-mind-map/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── mind-map/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── radial-compact-box/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── radial-dendrogram/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── right-mind-map/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── tb-compact-box/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── tb-dendrogram/ │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ └── tree-edge-label/ │ │ │ ├── data.js │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── package.json │ │ ├── pages/ │ │ │ └── index/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── project.config.json │ │ ├── project.private.config.json │ │ ├── sitemap.json │ │ └── utils/ │ │ ├── common.js │ │ ├── data.js │ │ ├── index.js │ │ └── util.js │ ├── f6/ │ │ ├── .storybook/ │ │ │ ├── main.ts │ │ │ └── preview.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── behavior/ │ │ │ │ ├── activate-relations.ts │ │ │ │ ├── click-select.ts │ │ │ │ ├── collapse-expand-combo.ts │ │ │ │ ├── collapse-expand.ts │ │ │ │ ├── create-edge.ts │ │ │ │ ├── drag-canvas.ts │ │ │ │ ├── drag-combo.ts │ │ │ │ ├── drag-node.ts │ │ │ │ ├── index.ts │ │ │ │ ├── mobile-behavior.ts │ │ │ │ ├── tooltip.ts │ │ │ │ └── zoom-canvas.ts │ │ │ ├── element/ │ │ │ │ └── index.ts │ │ │ ├── extends/ │ │ │ │ ├── graph/ │ │ │ │ │ └── treeGraph/ │ │ │ │ │ └── index.ts │ │ │ │ └── layout/ │ │ │ │ ├── circularLayout/ │ │ │ │ │ └── index.ts │ │ │ │ ├── comboForceLayout/ │ │ │ │ │ └── index.ts │ │ │ │ ├── concentricLayout/ │ │ │ │ │ └── index.ts │ │ │ │ ├── dagreLayout/ │ │ │ │ │ └── index.ts │ │ │ │ ├── forceAtlas2Layout/ │ │ │ │ │ └── index.ts │ │ │ │ ├── forceLayout/ │ │ │ │ │ └── index.ts │ │ │ │ ├── fruchtermanLayout/ │ │ │ │ │ └── index.ts │ │ │ │ ├── gForceLayout/ │ │ │ │ │ └── index.ts │ │ │ │ ├── gridLayout/ │ │ │ │ │ └── index.ts │ │ │ │ ├── mdsLayout/ │ │ │ │ │ └── index.ts │ │ │ │ ├── radialLayout/ │ │ │ │ │ └── index.ts │ │ │ │ └── randomLayout/ │ │ │ │ └── index.ts │ │ │ ├── global.ts │ │ │ ├── graph/ │ │ │ │ ├── controller/ │ │ │ │ │ ├── event.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── layout.ts │ │ │ │ └── graph.ts │ │ │ ├── index.ts │ │ │ ├── index.umd.ts │ │ │ ├── interface/ │ │ │ │ └── graph.ts │ │ │ ├── layout/ │ │ │ │ └── index.ts │ │ │ ├── plugin/ │ │ │ │ ├── base.ts │ │ │ │ └── index.ts │ │ │ ├── types/ │ │ │ │ └── index.ts │ │ │ └── util/ │ │ │ ├── color.ts │ │ │ ├── index.ts │ │ │ └── layout.ts │ │ ├── stories/ │ │ │ ├── algorithm/ │ │ │ │ ├── dfs/ │ │ │ │ │ ├── data.ts │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.stories.tsx │ │ │ │ └── shortestPath/ │ │ │ │ ├── data.ts │ │ │ │ └── index.tsx │ │ │ ├── fruchterman/ │ │ │ │ └── index.tsx │ │ │ ├── g-force/ │ │ │ │ └── index.tsx │ │ │ ├── generalGraph/ │ │ │ │ └── dagreConfigurationTranslate/ │ │ │ │ ├── data.ts │ │ │ │ └── index.tsx │ │ │ ├── index.stories.tsx │ │ │ ├── interactive/ │ │ │ │ └── collapseSlibing/ │ │ │ │ ├── data.ts │ │ │ │ └── index.tsx │ │ │ ├── nodeDemo/ │ │ │ │ ├── data.ts │ │ │ │ ├── index.tsx │ │ │ │ ├── node.ts │ │ │ │ └── uiNode.ts │ │ │ ├── pluginBundling/ │ │ │ │ ├── data.ts │ │ │ │ └── index.tsx │ │ │ ├── pluginEdgeFilter/ │ │ │ │ ├── data.ts │ │ │ │ └── index.tsx │ │ │ ├── pluginFisheye/ │ │ │ │ ├── data.ts │ │ │ │ └── index.tsx │ │ │ ├── pluginLegend/ │ │ │ │ ├── data.ts │ │ │ │ └── index.tsx │ │ │ ├── pluginMenu/ │ │ │ │ ├── data.ts │ │ │ │ └── index.tsx │ │ │ ├── pluginMiniMap/ │ │ │ │ ├── data.ts │ │ │ │ └── index.tsx │ │ │ ├── pluginTooltip/ │ │ │ │ ├── data.ts │ │ │ │ └── index.tsx │ │ │ ├── pluginZoomSlider/ │ │ │ │ ├── data.ts │ │ │ │ └── index.tsx │ │ │ ├── sceneCase/ │ │ │ │ └── mindMap/ │ │ │ │ ├── data.ts │ │ │ │ └── index.tsx │ │ │ ├── snapLine/ │ │ │ │ ├── data.ts │ │ │ │ └── index.tsx │ │ │ └── uiTest/ │ │ │ ├── data.ts │ │ │ └── index.tsx │ │ └── vite.config.ts │ ├── f6-alipay/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── babel.config.js │ │ ├── demo/ │ │ │ ├── app.acss │ │ │ ├── app.js │ │ │ ├── app.json │ │ │ ├── mini.project.json │ │ │ ├── package.json │ │ │ └── pages/ │ │ │ ├── g6/ │ │ │ │ ├── g6.acss │ │ │ │ ├── g6.axml │ │ │ │ ├── g6.js │ │ │ │ └── g6.json │ │ │ ├── image/ │ │ │ │ ├── image.acss │ │ │ │ ├── image.axml │ │ │ │ ├── image.js │ │ │ │ └── image.json │ │ │ ├── native-canvas/ │ │ │ │ ├── index.acss │ │ │ │ ├── index.axml │ │ │ │ ├── index.js │ │ │ │ └── index.json │ │ │ ├── native-test/ │ │ │ │ ├── native-test.acss │ │ │ │ ├── native-test.axml │ │ │ │ ├── native-test.js │ │ │ │ └── native-test.json │ │ │ └── native-test-fullpage/ │ │ │ ├── index.acss │ │ │ ├── index.axml │ │ │ ├── index.js │ │ │ └── index.json │ │ ├── package.json │ │ ├── scripts/ │ │ │ ├── compiler.js │ │ │ └── pub.js │ │ └── src/ │ │ └── container/ │ │ ├── container.axml │ │ ├── container.json │ │ └── container.ts │ ├── f6-rax/ │ │ ├── README.md │ │ ├── build.json │ │ ├── demo/ │ │ │ └── basic.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ali.tsx │ │ │ ├── index.css │ │ │ └── index.tsx │ │ └── tsconfig.json │ ├── f6-ui/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── om/ │ │ │ │ ├── css.ts │ │ │ │ ├── dom.ts │ │ │ │ └── style.ts │ │ │ ├── parser/ │ │ │ │ └── attr-parser.ts │ │ │ ├── ui-node/ │ │ │ │ ├── UIDivNode.ts │ │ │ │ ├── UIImageNode.ts │ │ │ │ ├── UIRootNode.ts │ │ │ │ ├── UIShapeNode.ts │ │ │ │ ├── UITextNode.ts │ │ │ │ ├── base.ts │ │ │ │ ├── factory.ts │ │ │ │ └── index.ts │ │ │ └── utils/ │ │ │ ├── index.ts │ │ │ ├── parser.ts │ │ │ └── ui.ts │ │ └── vite.config.ts │ ├── f6-wx/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── package.json │ │ └── src/ │ │ ├── canvas/ │ │ │ ├── canvas.js │ │ │ ├── canvas.json │ │ │ └── canvas.wxml │ │ ├── container/ │ │ │ ├── container.js │ │ │ ├── container.json │ │ │ └── container.wxml │ │ ├── extends/ │ │ │ ├── graph/ │ │ │ │ └── treeGraph.js │ │ │ └── layout/ │ │ │ ├── circularLayout.js │ │ │ ├── comboForceLayout.js │ │ │ ├── concentricLayout.js │ │ │ ├── dagreLayout.js │ │ │ ├── forceAtlas2Layout.js │ │ │ ├── forceLayout.js │ │ │ ├── fruchtermanLayout.js │ │ │ ├── gForceLayout.js │ │ │ ├── gridLayout.js │ │ │ ├── mdsLayout.js │ │ │ ├── radialLayout.js │ │ │ └── randomLayout.js │ │ └── index.js │ ├── hammer/ │ │ ├── CONTRIBUTING.md │ │ ├── LICENSE.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── hammer.js │ │ │ ├── index.js │ │ │ ├── input/ │ │ │ │ ├── pointerevent.js │ │ │ │ └── touch.js │ │ │ ├── inputjs/ │ │ │ │ ├── compute-delta-xy.js │ │ │ │ ├── compute-input-data.js │ │ │ │ ├── compute-interval-input-data.js │ │ │ │ ├── create-input-instance.js │ │ │ │ ├── get-angle.js │ │ │ │ ├── get-center.js │ │ │ │ ├── get-direction.js │ │ │ │ ├── get-distance.js │ │ │ │ ├── get-rotation.js │ │ │ │ ├── get-scale.js │ │ │ │ ├── get-velocity.js │ │ │ │ ├── input-constructor.js │ │ │ │ ├── input-consts.js │ │ │ │ ├── input-handler.js │ │ │ │ └── simple-clone-input-data.js │ │ │ ├── manager.js │ │ │ ├── recognizerjs/ │ │ │ │ ├── direction-str.js │ │ │ │ ├── get-recognizer-by-name-if-manager.js │ │ │ │ ├── recognizer-constructor.js │ │ │ │ ├── recognizer-consts.js │ │ │ │ └── state-str.js │ │ │ ├── recognizers/ │ │ │ │ ├── attribute.js │ │ │ │ ├── pan.js │ │ │ │ ├── pinch.js │ │ │ │ ├── press.js │ │ │ │ ├── rotate.js │ │ │ │ ├── swipe.js │ │ │ │ └── tap.js │ │ │ ├── touchactionjs/ │ │ │ │ ├── clean-touch-actions.js │ │ │ │ ├── get-touchaction-props.js │ │ │ │ ├── touchaction-Consts.js │ │ │ │ └── touchaction-constructor.js │ │ │ └── utils/ │ │ │ ├── add-event-listeners.js │ │ │ ├── assign.js │ │ │ ├── bind-fn.js │ │ │ ├── bool-or-fn.js │ │ │ ├── deprecate.js │ │ │ ├── each.js │ │ │ ├── extend.js │ │ │ ├── has-parent.js │ │ │ ├── if-undefined.js │ │ │ ├── in-array.js │ │ │ ├── in-str.js │ │ │ ├── inherit.js │ │ │ ├── invoke-array-arg.js │ │ │ ├── merge.js │ │ │ ├── remove-event-listeners.js │ │ │ ├── set-timeout-context.js │ │ │ ├── split-str.js │ │ │ ├── to-array.js │ │ │ ├── unique-array.js │ │ │ ├── unique-id.js │ │ │ └── utils-consts.js │ │ └── vite.config.ts │ ├── plugin/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── base.ts │ │ │ ├── bundling/ │ │ │ │ └── index.ts │ │ │ ├── edge-filter-lens/ │ │ │ │ └── index.ts │ │ │ ├── fisheye/ │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── legend/ │ │ │ │ ├── index.ts │ │ │ │ └── item.ts │ │ │ ├── menu/ │ │ │ │ └── index.ts │ │ │ ├── minimap/ │ │ │ │ └── index.ts │ │ │ ├── snap-line/ │ │ │ │ └── index.ts │ │ │ ├── time-bar/ │ │ │ │ ├── dispatcher.ts │ │ │ │ ├── index.ts │ │ │ │ ├── type/ │ │ │ │ │ ├── control-bar.ts │ │ │ │ │ ├── slider.ts │ │ │ │ │ ├── tick.ts │ │ │ │ │ └── time-bar.ts │ │ │ │ ├── ui/ │ │ │ │ │ ├── control-bar/ │ │ │ │ │ │ ├── control-btn.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── play-btn.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── progress-bar/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── tick.ts │ │ │ │ │ │ └── trend.ts │ │ │ │ │ └── slider/ │ │ │ │ │ ├── simple-slider.ts │ │ │ │ │ ├── slide-ticker.ts │ │ │ │ │ ├── slider-logic.ts │ │ │ │ │ └── trend-slider.ts │ │ │ │ └── utils/ │ │ │ │ ├── const.ts │ │ │ │ ├── path.ts │ │ │ │ └── player.ts │ │ │ ├── tooltip/ │ │ │ │ ├── css.ts │ │ │ │ ├── html.ts │ │ │ │ └── index.ts │ │ │ └── zoom-slider/ │ │ │ └── index.ts │ │ └── vite.config.ts │ └── site/ │ ├── CNAME │ ├── api-extractor.json │ ├── circle-dragging-i/ │ │ ├── 989198863e10b38a@125.js │ │ ├── LICENSE.txt │ │ ├── index.html │ │ ├── index.js │ │ ├── inspector.css │ │ ├── package.json │ │ └── runtime.js │ ├── docs/ │ │ ├── api/ │ │ │ ├── Algorithm.zh.md │ │ │ ├── Behavior.zh.md │ │ │ ├── Event.zh.md │ │ │ ├── Graph.zh.md │ │ │ ├── Group.zh.md │ │ │ ├── Items/ │ │ │ │ ├── comboMethods.zh.md │ │ │ │ ├── comboProperties.zh.md │ │ │ │ ├── edgeMethods.zh.md │ │ │ │ ├── edgeProperties.zh.md │ │ │ │ ├── itemMethods.zh.md │ │ │ │ ├── itemProperties.zh.md │ │ │ │ ├── nodeMethods.zh.md │ │ │ │ └── nodeProperties.zh.md │ │ │ ├── Plugins.zh.md │ │ │ ├── TreeGraph.zh.md │ │ │ ├── Util.zh.md │ │ │ ├── graphFunc/ │ │ │ │ ├── animation.zh.md │ │ │ │ ├── behaviors.zh.md │ │ │ │ ├── calculation.zh.md │ │ │ │ ├── combo.zh.md │ │ │ │ ├── coordinate.zh.md │ │ │ │ ├── data.zh.md │ │ │ │ ├── destroy.zh.md │ │ │ │ ├── download.zh.md │ │ │ │ ├── find.zh.md │ │ │ │ ├── get_set.zh.md │ │ │ │ ├── hull.zh.md │ │ │ │ ├── item.zh.md │ │ │ │ ├── layout.zh.md │ │ │ │ ├── mode.zh.md │ │ │ │ ├── on_off.zh.md │ │ │ │ ├── render.zh.md │ │ │ │ ├── stack.zh.md │ │ │ │ ├── state.zh.md │ │ │ │ ├── transform.zh.md │ │ │ │ └── watermarker.zh.md │ │ │ ├── graphLayout/ │ │ │ │ ├── circular.zh.md │ │ │ │ ├── comboForce.zh.md │ │ │ │ ├── concentric.zh.md │ │ │ │ ├── dagre.zh.md │ │ │ │ ├── force.zh.md │ │ │ │ ├── forceAtlas2.zh.md │ │ │ │ ├── fruchterman.zh.md │ │ │ │ ├── gforce.zh.md │ │ │ │ ├── grid.zh.md │ │ │ │ ├── guide.zh.md │ │ │ │ ├── mds.zh.md │ │ │ │ ├── radial.zh.md │ │ │ │ └── random.zh.md │ │ │ ├── registerItem.zh.md │ │ │ ├── registerLayout.zh.md │ │ │ ├── shapeMethods.zh.md │ │ │ ├── shapeProperties.zh.md │ │ │ ├── treeGraphLayout/ │ │ │ │ ├── compactBox.zh.md │ │ │ │ ├── dendrogram.zh.md │ │ │ │ ├── guide.zh.md │ │ │ │ ├── indented.zh.md │ │ │ │ └── mindmap.zh.md │ │ │ └── treeMethods.zh.md │ │ ├── examples/ │ │ │ ├── algorithm/ │ │ │ │ └── algoDemos/ │ │ │ │ └── index.zh.md │ │ │ ├── case/ │ │ │ │ ├── customTree/ │ │ │ │ │ ├── decisiontree.zh.md │ │ │ │ │ └── knowledgetreegraph.zh.md │ │ │ │ ├── newsDemo/ │ │ │ │ │ ├── index.zh.md │ │ │ │ │ └── metroline.zh.md │ │ │ │ └── simpleCase/ │ │ │ │ ├── customflow.zh.md │ │ │ │ ├── donuttransfer.zh.md │ │ │ │ ├── mindmap.zh.md │ │ │ │ └── sankey.zh.md │ │ │ ├── gallery/ │ │ │ │ └── gallery.zh.md │ │ │ ├── interaction/ │ │ │ │ ├── combo/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── createEdge/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── customBehavior/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── dragCanvasHideItem/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── fitView/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── highlight/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── hull/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── label/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── pagination/ │ │ │ │ │ └── index.zh.md │ │ │ │ ├── partialResponse/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── position/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── select/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── setMode/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── treeBehavior/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ └── zoomCanvasFixItem/ │ │ │ │ ├── API.zh.md │ │ │ │ └── index.zh.md │ │ │ ├── item/ │ │ │ │ ├── arrows/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── customCombo/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── customEdge/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── customNode/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── defaultCombos/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── defaultEdges/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── defaultNodes/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── label/ │ │ │ │ │ └── index.zh.md │ │ │ │ ├── labelBg/ │ │ │ │ │ └── index.zh.md │ │ │ │ └── multiEdge/ │ │ │ │ └── index.zh.md │ │ │ ├── net/ │ │ │ │ ├── arcDiagram/ │ │ │ │ │ └── index.zh.md │ │ │ │ ├── circular/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── comboForce/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── concentricLayout/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── dagreFlow/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── forceDirected/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── furchtermanLayout/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── gridLayout/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── layoutMechanism/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── mdsLayout/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ └── radialLayout/ │ │ │ │ ├── API.zh.md │ │ │ │ └── index.zh.md │ │ │ ├── scatter/ │ │ │ │ ├── changePosition/ │ │ │ │ │ └── index.zh.md │ │ │ │ ├── customAnimate/ │ │ │ │ │ └── index.zh.md │ │ │ │ ├── edge/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ ├── node/ │ │ │ │ │ ├── API.zh.md │ │ │ │ │ └── index.zh.md │ │ │ │ └── stateChange/ │ │ │ │ ├── API.zh.md │ │ │ │ └── index.zh.md │ │ │ └── tree/ │ │ │ ├── compactBox/ │ │ │ │ ├── API.zh.md │ │ │ │ └── index.zh.md │ │ │ ├── customItemTree/ │ │ │ │ ├── API.zh.md │ │ │ │ └── index.zh.md │ │ │ ├── dendrogram/ │ │ │ │ ├── API.zh.md │ │ │ │ └── index.zh.md │ │ │ ├── indented/ │ │ │ │ ├── API.zh.md │ │ │ │ └── index.zh.md │ │ │ ├── mindmap/ │ │ │ │ ├── API.zh.md │ │ │ │ └── index.zh.md │ │ │ └── radialtree/ │ │ │ ├── API.zh.md │ │ │ └── index.zh.md │ │ └── manual/ │ │ ├── FAQ/ │ │ │ └── faq.zh.md │ │ ├── advanced/ │ │ │ ├── comboTheory.zh.md │ │ │ ├── coordinate-system.zh.md │ │ │ ├── iconfont.zh.md │ │ │ ├── mode-and-custom-behavior.zh.md │ │ │ └── state-new.zh.md │ │ ├── cases/ │ │ │ ├── edgeBundling.zh.md │ │ │ ├── relations.zh.md │ │ │ └── sequenceTime.zh.md │ │ ├── getting-started.zh.md │ │ ├── introduction.zh.md │ │ ├── middle/ │ │ │ ├── animation.zh.md │ │ │ ├── elements/ │ │ │ │ ├── advanced-style/ │ │ │ │ │ ├── gradient.zh.md │ │ │ │ │ ├── set-label-bg.zh.md │ │ │ │ │ ├── texture.zh.md │ │ │ │ │ └── updateText.zh.md │ │ │ │ ├── combos/ │ │ │ │ │ ├── built-in/ │ │ │ │ │ │ ├── circle.zh.md │ │ │ │ │ │ └── rect.zh.md │ │ │ │ │ ├── custom-combo.zh.md │ │ │ │ │ └── defaultCombo.zh.md │ │ │ │ ├── edges/ │ │ │ │ │ ├── arrow.zh.md │ │ │ │ │ ├── built-in/ │ │ │ │ │ │ ├── arc.zh.md │ │ │ │ │ │ ├── cubic.zh.md │ │ │ │ │ │ ├── line.zh.md │ │ │ │ │ │ ├── loop.zh.md │ │ │ │ │ │ ├── polyline.zh.md │ │ │ │ │ │ └── quadratic.zh.md │ │ │ │ │ ├── custom-edge.zh.md │ │ │ │ │ └── defaultEdge.zh.md │ │ │ │ ├── methods/ │ │ │ │ │ ├── edgeVisible.zh.md │ │ │ │ │ ├── elementIndex.zh.md │ │ │ │ │ ├── lock-node.zh.md │ │ │ │ │ ├── multi-line.zh.md │ │ │ │ │ └── updateElement.zh.md │ │ │ │ ├── nodes/ │ │ │ │ │ ├── anchorpoint.zh.md │ │ │ │ │ ├── built-in/ │ │ │ │ │ │ ├── circle.zh.md │ │ │ │ │ │ ├── diamond.zh.md │ │ │ │ │ │ ├── donut.zh.md │ │ │ │ │ │ ├── ellipse.zh.md │ │ │ │ │ │ ├── image.zh.md │ │ │ │ │ │ ├── modelRect.zh.md │ │ │ │ │ │ ├── rect.zh.md │ │ │ │ │ │ ├── star.zh.md │ │ │ │ │ │ └── triangle.zh.md │ │ │ │ │ ├── custom-node.zh.md │ │ │ │ │ ├── defaultNode.zh.md │ │ │ │ │ └── jsx-node.zh.md │ │ │ │ ├── overview.zh.md │ │ │ │ └── shape/ │ │ │ │ ├── graphics-group.zh.md │ │ │ │ ├── shape-and-properties.zh.md │ │ │ │ ├── shape-keyshape.zh.md │ │ │ │ └── transform.zh.md │ │ │ ├── graph.zh.md │ │ │ ├── layout/ │ │ │ │ ├── ai-layout.zh.md │ │ │ │ ├── custom-layout.zh.md │ │ │ │ ├── graph-layout.zh.md │ │ │ │ ├── layout-mechanism.zh.md │ │ │ │ ├── sub-layout-pipe.zh.md │ │ │ │ ├── sub-layout.zh.md │ │ │ │ ├── tree-graph-layout.zh.md │ │ │ │ └── webworker.zh.md │ │ │ ├── overview.zh.md │ │ │ ├── plugins/ │ │ │ │ └── Plugins.zh.md │ │ │ └── states/ │ │ │ ├── bindEvent.zh.md │ │ │ ├── custom-behavior.zh.md │ │ │ ├── defaultBehavior.zh.md │ │ │ ├── mode.zh.md │ │ │ └── state.zh.md │ │ └── tutorial/ │ │ ├── h5/ │ │ │ └── preface.zh.md │ │ ├── mini/ │ │ │ ├── animation.zh.md │ │ │ ├── behavior.zh.md │ │ │ ├── elements.zh.md │ │ │ ├── epilog.zh.md │ │ │ ├── example.zh.md │ │ │ ├── layout.zh.md │ │ │ ├── preface.zh.md │ │ │ └── wechat.zh.md │ │ ├── native/ │ │ │ └── preface.zh.md │ │ └── tutorial.zh.md │ ├── examples/ │ │ └── demo/ │ │ ├── animation/ │ │ │ ├── change-position-default/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── custom-animate-position/ │ │ │ │ └── index.js │ │ │ ├── edge-edge/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── edge-line-growth/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── node-node/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ └── point-in-line/ │ │ │ ├── data.js │ │ │ └── index.js │ │ ├── elements/ │ │ │ ├── area-chart/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── built-in-arrows/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── c-circle/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── c-rect/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── card/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── card-node/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── circle/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── circle-with-combo/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── cubic1/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── cubic2/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── custom-arrows/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── custom-polyline/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── custom-polyline2/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── diamond/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── donut/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── edge-bg/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── edge-mul-label/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── ellipse/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── extra-shape/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── image/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── label-len/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── label-len1/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── line-chart/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── list/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── loop/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── mode-rect/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── multi-edges/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── node-bg/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── pie-chart/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── point-chart/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── polyline1/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── polyline2/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── polyline3/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── rect/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── rect-with-combo/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── stack-chart/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── star/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ └── triangle/ │ │ │ ├── data.js │ │ │ └── index.js │ │ ├── general-graph/ │ │ │ ├── basic-FA2/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── basic-MDS/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── basic-arc-diagram/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── basic-circular/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── basic-combo-force/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── basic-concentric/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── basic-dagre/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── basic-force-directed/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── basic-force-directed-drag-fix/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── basic-grid/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── basic-radial/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── circular-arc-diagram/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── circular-configuration-translate/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── cluster-grid/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── custom-bi-graph/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── dagre/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── dagre-UL/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── dagre-combo/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── dagre-configuration-translate/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── data-change/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── degree-circular/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── division-circular/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── force-bubbles/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── force-constrained-in-rect/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── force-directed-configuration-translate/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── force-directed-force-clustering/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── force-directed-functional-params/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── force-directed-prevent-overlap/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── fruchterman/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── fruchterman-clustering/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── fruchterman-configuration-translate/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── fruchterman-worker/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── interact-radial/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── layout-timing/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── layout-translate/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── prevent-overlap-radial/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── prevent-overlap-unstrict-radial/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── radial-configuration-translate/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── sort-radial/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── spiral-circular/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── subgraph-layout/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ └── sublayout-pipes/ │ │ │ ├── data.js │ │ │ └── index.js │ │ ├── interactive/ │ │ │ ├── activate-relations/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── add-child/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── canvas-two-fingers/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── change-data/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── change-members/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── collapse-slibing/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── combo-circle/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── combo-rect/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── drag-subtree/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── hide-item/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── highlight-dark/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── hull/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── move/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── move-animate/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ └── partial-node/ │ │ │ ├── data.js │ │ │ └── index.js │ │ ├── plugins/ │ │ │ ├── bundling/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── donut-transfer/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── edge-filter/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── fisheye/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── menu/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── mini-map/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── snap-line/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── timebar/ │ │ │ │ └── index.js │ │ │ ├── tool-tip/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ └── zoom-slider/ │ │ │ ├── data.js │ │ │ └── index.js │ │ ├── scene-case/ │ │ │ ├── custom-flow/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── decision-tree/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── donut-transfer/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── knowledge-tree-graph/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── metro-lines/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ ├── mind-map/ │ │ │ │ ├── data.js │ │ │ │ └── index.js │ │ │ └── sankey/ │ │ │ ├── data.js │ │ │ └── index.js │ │ └── tree-graph/ │ │ ├── basic-dendrogram/ │ │ │ ├── data.js │ │ │ └── index.js │ │ ├── compact-box/ │ │ │ ├── data.js │ │ │ └── index.js │ │ ├── compact-box-left-align/ │ │ │ ├── data.js │ │ │ └── index.js │ │ ├── custom-edge-tree/ │ │ │ ├── data.js │ │ │ └── index.js │ │ ├── custom-side-mind-map/ │ │ │ ├── data.js │ │ │ └── index.js │ │ ├── custom-tree/ │ │ │ ├── data.js │ │ │ └── index.js │ │ ├── file-system/ │ │ │ ├── data.js │ │ │ └── index.js │ │ ├── intend-align-top/ │ │ │ ├── data.js │ │ │ └── index.js │ │ ├── intended/ │ │ │ ├── data.js │ │ │ └── index.js │ │ ├── left-mind-map/ │ │ │ ├── data.js │ │ │ └── index.js │ │ ├── mind-map/ │ │ │ ├── data.js │ │ │ └── index.js │ │ ├── radial-compact-box/ │ │ │ ├── data.js │ │ │ └── index.js │ │ ├── radial-dendrogram/ │ │ │ ├── data.js │ │ │ └── index.js │ │ ├── right-mind-map/ │ │ │ ├── data.js │ │ │ └── index.js │ │ ├── tb-compact-box/ │ │ │ ├── data.js │ │ │ └── index.js │ │ ├── tb-dendrogram/ │ │ │ ├── data.js │ │ │ └── index.js │ │ └── tree-edge-label/ │ │ ├── data.js │ │ └── index.js │ ├── gatsby-browser.js │ ├── gatsby-config.js │ ├── gatsby-node.js │ ├── package.json │ └── site/ │ ├── global.less │ ├── locale.json │ └── pages/ │ ├── canvas-menu.tsx │ ├── index.en.tsx │ ├── index.less │ ├── index.zh.tsx │ ├── large-graph-register.tsx │ ├── largegraph.en.tsx │ ├── largegraph.zh.tsx │ └── legend-panel.tsx ├── rush.json └── tsconfig.json
Showing preview only (385K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (6717 symbols across 571 files)
FILE: common/config/rush/.pnpmfile.cjs
function readPackage (line 29) | function readPackage(packageJson, context) {
FILE: common/scripts/install-run-rush.js
function __webpack_require__ (line 45) | function __webpack_require__(moduleId) {
function _getRushVersion (line 127) | function _getRushVersion(logger) {
function _getBin (line 148) | function _getBin(scriptName) {
function _run (line 158) | function _run() {
FILE: common/scripts/install-run.js
function _trimNpmrcFile (line 48) | function _trimNpmrcFile(options) {
function _copyAndTrimNpmrcFile (line 108) | function _copyAndTrimNpmrcFile(options) {
function syncNpmrc (line 120) | function syncNpmrc(options) {
function isVariableSetInNpmrcFile (line 153) | function isVariableSetInNpmrcFile(sourceNpmrcFolder, variableKey) {
function __webpack_require__ (line 213) | function __webpack_require__(moduleId) {
function _parsePackageSpecifier (line 315) | function _parsePackageSpecifier(rawPackageSpecifier) {
function getNpmPath (line 341) | function getNpmPath() {
function _ensureFolder (line 367) | function _ensureFolder(folderPath) {
function _ensureAndJoinPath (line 380) | function _ensureAndJoinPath(baseFolder, ...pathSegments) {
function _getRushTempFolder (line 396) | function _getRushTempFolder(rushCommonFolder) {
function _compareVersionStrings (line 412) | function _compareVersionStrings(a, b) {
function _resolvePackageVersion (line 426) | function _resolvePackageVersion(logger, rushCommonFolder, { name, versio...
function findRushJsonFolder (line 499) | function findRushJsonFolder() {
function _isPackageAlreadyInstalled (line 522) | function _isPackageAlreadyInstalled(packageInstallFolder) {
function _deleteFile (line 538) | function _deleteFile(file) {
function _cleanInstallFolder (line 554) | function _cleanInstallFolder(rushTempFolder, packageInstallFolder, lockF...
function _createPackageJson (line 576) | function _createPackageJson(packageInstallFolder, name, version) {
function _installPackage (line 598) | function _installPackage(logger, packageInstallFolder, name, version, co...
function _getBinPath (line 621) | function _getBinPath(packageInstallFolder, binName) {
function _getPlatformPath (line 629) | function _getPlatformPath(platformPath) {
function _isWindows (line 632) | function _isWindows() {
function _writeFlagFile (line 638) | function _writeFlagFile(packageInstallFolder) {
function installAndRun (line 647) | function installAndRun(logger, packageName, packageVersion, packageBinNa...
function runWithErrorAndStatusCode (line 698) | function runWithErrorAndStatusCode(logger, fn) {
function _run (line 708) | function _run() {
FILE: packages/core/src/behavior/behavior.ts
class Behavior (line 5) | class Behavior {
method registerBehavior (line 14) | public static registerBehavior(type: string, behavior: BehaviorOption) {
method hasBehavior (line 44) | public static hasBehavior(type: string) {
method getBehavior (line 48) | public static getBehavior(type: string) {
FILE: packages/core/src/behavior/behaviorOption.ts
method getDefaultCfg (line 7) | getDefaultCfg() {
method getEvents (line 18) | getEvents() {
method updateCfg (line 22) | updateCfg(cfg: object) {
method shouldBegin (line 27) | shouldBegin() {
method shouldUpdate (line 31) | shouldUpdate() {
method shouldEnd (line 35) | shouldEnd() {
method bind (line 43) | bind(graph: IAbstractGraph) {
method unbind (line 58) | unbind(graph: IAbstractGraph) {
method get (line 72) | get(val: string) {
method set (line 76) | set(key: string, val: any) {
FILE: packages/core/src/element/combo.ts
method getSize (line 58) | getSize(cfg: ModelConfig): number[] {
method getLabelStyleByPosition (line 75) | getLabelStyleByPosition(cfg: NodeConfig, labelCfg: ILabelConfig): LabelS...
method drawShape (line 140) | drawShape(cfg: NodeConfig, group: IGroup): IShape {
method updateShape (line 150) | updateShape(cfg: NodeConfig, item: Item, keyShapeStyle: ShapeStyle) {
FILE: packages/core/src/element/combos/circle.ts
method drawShape (line 37) | drawShape(cfg: ComboConfig, group: IGroup): IShape {
method getShapeStyle (line 55) | getShapeStyle(cfg: ComboConfig): ShapeStyle {
method update (line 87) | update(cfg: ComboConfig, item: Item) {
FILE: packages/core/src/element/combos/rect.ts
method drawShape (line 40) | drawShape(cfg: ComboConfig, group: IGroup): IShape {
method getLabelStyleByPosition (line 51) | getLabelStyleByPosition(
method getShapeStyle (line 121) | getShapeStyle(cfg: ComboConfig) {
method update (line 177) | update(cfg: ComboConfig, item: Item) {
method updateShape (line 228) | updateShape(cfg: ComboConfig, item: Item, keyShapeStyle: object) {
FILE: packages/core/src/element/edge.ts
constant CLS_SHAPE (line 25) | const CLS_SHAPE = "edge-shape";
function revertAlign (line 28) | function revertAlign(labelPosition: string): string {
method getPath (line 86) | getPath(points: Point[]): Array<Array<string | number>> {
method getShapeStyle (line 97) | getShapeStyle(cfg: EdgeConfig): ShapeStyle {
method updateShapeStyle (line 130) | updateShapeStyle(cfg: EdgeConfig, item: Item) {
method getLabelStyleByPosition (line 191) | getLabelStyleByPosition(
method getLabelBgStyleByPosition (line 245) | getLabelBgStyleByPosition(
method _getTextAlign (line 328) | _getTextAlign(labelPosition: string, angle: number): string {
method getControlPoints (line 351) | getControlPoints(cfg: EdgeConfig): IPoint[] | undefined {
method getPathPoints (line 359) | getPathPoints(cfg: EdgeConfig): EdgeConfig {
method drawShape (line 369) | drawShape(cfg: EdgeConfig, group: IGroup): IShape {
method drawLabel (line 378) | drawLabel(cfg: EdgeConfig, group: IGroup): IShape {
method drawLabelBg (line 417) | drawLabelBg(cfg: ModelConfig, group: IGroup, label: IElement) {
method getControlPoints (line 442) | getControlPoints() {
method getPath (line 453) | getPath(points: Point[]): Array<Array<string | number>> {
method getControlPoints (line 466) | getControlPoints(cfg: EdgeConfig): IPoint[] {
method getPath (line 526) | getPath(points: Point[]): Array<Array<string | number>> {
method getControlPoints (line 555) | getControlPoints(cfg: EdgeConfig): IPoint[] {
method getPath (line 574) | getPath(points: Point[]): Array<Array<string | number>> {
method getControlPoints (line 589) | getControlPoints(cfg: EdgeConfig): IPoint[] {
method getPath (line 616) | getPath(points: Point[]): Array<Array<string | number>> {
method getControlPoints (line 641) | getControlPoints(cfg: EdgeConfig): IPoint[] {
method getControlPoints (line 688) | getControlPoints(cfg: EdgeConfig): IPoint[] {
method getPathPoints (line 732) | getPathPoints(cfg: ModelConfig): EdgeData {
method getControlPoints (line 735) | getControlPoints(cfg: EdgeConfig): IPoint[] | undefined {
method afterDraw (line 738) | afterDraw(cfg: EdgeConfig) {
method afterUpdate (line 741) | afterUpdate(cfg: EdgeConfig) {
FILE: packages/core/src/element/hull/bubbleset.ts
function MarchingSquares (line 36) | function MarchingSquares(contour, potentialArea, threshold) {
function getRoute (line 351) | function getRoute(
function getActiveRregion (line 538) | function getActiveRregion(
function fillPotentialArea (line 579) | function fillPotentialArea(
function rerouteLine (line 702) | function rerouteLine(
FILE: packages/core/src/element/node.ts
method getSize (line 35) | getSize(cfg: ModelConfig): number[] {
method getLabelStyleByPosition (line 51) | getLabelStyleByPosition(cfg: NodeConfig, labelCfg: ILabelConfig): LabelS...
method getLabelBgStyleByPosition (line 104) | getLabelBgStyleByPosition(
method drawShape (line 144) | drawShape(cfg: NodeConfig, group: IGroup): IShape {
method updateLinkPoints (line 160) | updateLinkPoints(cfg: NodeConfig, group: IGroup) {
method updateShape (line 311) | updateShape(
method updateIcon (line 329) | updateIcon(cfg: NodeConfig, item: Item) {
FILE: packages/core/src/element/nodes/image.ts
method drawShape (line 52) | drawShape(cfg: NodeConfig, group: IGroup): IShape {
method drawClip (line 65) | drawClip(cfg: NodeConfig, shape: IShape) {
method getShapeStyle (line 130) | getShapeStyle(cfg: NodeConfig) {
method updateShapeStyle (line 150) | updateShapeStyle(cfg: NodeConfig, item: Item) {
FILE: packages/core/src/element/nodes/simple-circle.ts
method drawShape (line 35) | drawShape(cfg: NodeConfig, group: IGroup): IShape {
method getShapeStyle (line 50) | getShapeStyle(cfg: NodeConfig): ShapeStyle {
method update (line 67) | update(cfg: NodeConfig, item: Item) {
FILE: packages/core/src/element/nodes/simple-rect.ts
method drawShape (line 39) | drawShape(cfg: NodeConfig, group: IGroup): IShape {
method getShapeStyle (line 56) | getShapeStyle(cfg: NodeConfig) {
method update (line 75) | update(cfg: NodeConfig, item: Item) {
FILE: packages/core/src/element/shape.ts
function ucfirst (line 12) | function ucfirst(str: string) {
method getShape (line 39) | getShape(type?: string): ShapeOptions {
method draw (line 52) | draw(type: string, cfg: ModelConfig, group: IGroup): IShape {
method baseUpdate (line 66) | baseUpdate(type: string, cfg: ModelConfig, item: Item) {
method setState (line 84) | setState(type: string, name: string, value: string | boolean, item: Item) {
method shouldUpdate (line 95) | shouldUpdate(type: string): boolean {
method getControlPoints (line 99) | getControlPoints(type: string, cfg: ModelConfig): IPoint[] | undefined {
method getAnchorPoints (line 109) | getAnchorPoints(type: string, cfg: ModelConfig): number[][] | undefined {
method draw (line 124) | draw(cfg, group) {
method drawShape (line 130) | drawShape(/* cfg, group */) {}
method afterDraw (line 134) | afterDraw(/* cfg, group */) {}
method afterUpdate (line 136) | afterUpdate(/* cfg, item */) {}
method setState (line 140) | setState(/* name, value, item */) {}
method getControlPoints (line 146) | getControlPoints(cfg: NodeConfig | EdgeConfig) {
method getAnchorPoints (line 154) | getAnchorPoints(cfg: NodeConfig | EdgeConfig) {
class Shape (line 166) | class Shape {
method registerFactory (line 173) | public static registerFactory(factoryType: string, cfg: object): object {
method getFactory (line 182) | public static getFactory(factoryType: string) {
method registerNode (line 187) | public static registerNode(
method registerEdge (line 226) | public static registerEdge(
method registerCombo (line 242) | public static registerCombo(
FILE: packages/core/src/element/shapeBase.ts
constant CLS_SHAPE_SUFFIX (line 29) | const CLS_SHAPE_SUFFIX = "-shape";
constant CLS_LABEL_SUFFIX (line 30) | const CLS_LABEL_SUFFIX = "-label";
constant ARROWS (line 31) | const ARROWS = ["startArrow", "endArrow"];
constant SHAPE_DEFAULT_ATTRS (line 32) | const SHAPE_DEFAULT_ATTRS = {
constant PATH_SHAPE_DEFAULT_ATTRS (line 50) | const PATH_SHAPE_DEFAULT_ATTRS = {
constant SHAPES_DEFAULT_ATTRS (line 64) | const SHAPES_DEFAULT_ATTRS = {
constant CLS_LABEL_BG_SUFFIX (line 70) | const CLS_LABEL_BG_SUFFIX = "-label-bg";
method getCustomConfig (line 81) | getCustomConfig(cfg: ModelConfig): ModelConfig {
method getOptions (line 84) | getOptions(cfg: ModelConfig): ModelConfig {
method draw (line 121) | draw(cfg: ModelConfig, group: IGroup): IShape {
method afterDraw (line 136) | afterDraw(cfg?: ModelConfig, group?: IGroup, keyShape?: IShape) {}
method drawShape (line 137) | drawShape(cfg?: ModelConfig, group?: IGroup): IShape {
method drawLabel (line 140) | drawLabel(cfg: ModelConfig, group: IGroup): IShape {
method drawLabelBg (line 207) | drawLabelBg(cfg: ModelConfig, group: IGroup, label: IElement) {
method getLabelStyleByPosition (line 217) | getLabelStyleByPosition(
method getLabelBgStyleByPosition (line 224) | getLabelBgStyleByPosition(
method getLabelStyle (line 239) | getLabelStyle(
method getShapeStyle (line 261) | getShapeStyle(cfg: ModelConfig): ShapeStyle {
method update (line 270) | update(cfg: ModelConfig, item: Item) {
method updateShapeStyle (line 274) | updateShapeStyle(cfg: ModelConfig, item: Item) {
method updateLabel (line 294) | updateLabel(cfg: ModelConfig, item: Item) {
method afterUpdate (line 392) | afterUpdate(cfg?: ModelConfig, item?: Item) {}
method setState (line 401) | setState(name: string, value: string | boolean, item: Item) {
method getStateStyle (line 597) | getStateStyle(name: string, item: Item): ShapeStyle {
method getControlPoints (line 616) | getControlPoints(cfg: EdgeConfig): IPoint[] | undefined {
method getAnchorPoints (line 624) | getAnchorPoints(cfg: ModelConfig): number[][] | undefined {
FILE: packages/core/src/element/xml.ts
function looseJSONParse (line 13) | function looseJSONParse(text) {
type NodeInstructure (line 135) | interface NodeInstructure {
function parseXML (line 190) | function parseXML(xml: HTMLElement, cfg) {
function getBBox (line 258) | function getBBox(
function generateTarget (line 325) | function generateTarget(
function compareTwoTarget (line 382) | function compareTwoTarget(
function createNodeFromXML (line 471) | function createNodeFromXML(gen: string | ((node: any) => string)) {
FILE: packages/core/src/graph/controller/event.ts
method constructor (line 8) | constructor(graph: IAbstractGraph) {
FILE: packages/core/src/graph/controller/item.ts
constant NODE (line 33) | const NODE = "node";
constant EDGE (line 34) | const EDGE = "edge";
constant VEDGE (line 35) | const VEDGE = "vedge";
constant COMBO (line 36) | const COMBO = "combo";
constant CFG_PREFIX (line 37) | const CFG_PREFIX = "default";
constant MAPPER_SUFFIX (line 38) | const MAPPER_SUFFIX = "Mapper";
constant STATE_SUFFIX (line 39) | const STATE_SUFFIX = "stateStyles";
type Id (line 41) | type Id = string | Item | undefined;
class ItemController (line 43) | class ItemController {
method constructor (line 48) | constructor(graph: IAbstractGraph) {
method addItem (line 61) | public addItem<T extends Item>(type: ITEM_TYPE, model: ModelConfig) {
method updateItem (line 206) | public updateItem(
method updateCombo (line 319) | public updateCombo(combo: ICombo | string, children: ComboTree[]) {
method updateComboEdges (line 357) | private updateComboEdges(combo: ICombo) {
method collapseCombo (line 378) | public collapseCombo(combo: ICombo | string) {
method expandCombo (line 396) | public expandCombo(combo: ICombo | string) {
method removeItem (line 421) | public removeItem(item: Item | string): void {
method setItemState (line 520) | public setItemState(
method priorityState (line 562) | public priorityState(item: Item | string, state: string): void {
method clearItemStates (line 583) | public clearItemStates(
method refreshItem (line 606) | public refreshItem(item: Item | string): void {
method addCombos (line 628) | public addCombos(comboTrees: ComboTree[], comboModels: ComboConfig[]) {
method changeItemVisibility (line 657) | public changeItemVisibility(item: Item | string, visible: boolean): It...
method destroy (line 728) | public destroy() {
FILE: packages/core/src/graph/controller/layout.ts
method constructor (line 19) | constructor(graph: IAbstractGraph) {
method initLayout (line 28) | protected initLayout() {
method getLayoutType (line 32) | public getLayoutType(): string | string[] {
method getLayoutCfgType (line 36) | protected getLayoutCfgType(layoutCfg): string | string[] {
method isLayoutTypeSame (line 51) | protected isLayoutTypeSame(cfg): boolean {
method refreshLayout (line 68) | public refreshLayout() {
method changeLayout (line 82) | public changeLayout(cfg) {
method changeData (line 90) | public changeData() {
method destoryLayoutMethods (line 95) | public destoryLayoutMethods() {
method destroyLayout (line 104) | public destroyLayout() {
method setDataFromGraph (line 115) | public setDataFromGraph(): GraphData {
method reLayoutMethod (line 173) | protected reLayoutMethod(layoutMethod, layoutCfg): Promise<void> {
method relayout (line 198) | public relayout(reloadData?: boolean) {
method filterLayoutData (line 228) | protected filterLayoutData(data, cfg) {
method getLayoutBBox (line 261) | protected getLayoutBBox(nodes) {
method layoutAnimate (line 281) | public layoutAnimate() {}
method moveToZero (line 284) | public moveToZero() {
method initPositions (line 311) | public initPositions(center, nodes): boolean {
method destroy (line 346) | public destroy() {
method onTick (line 353) | public onTick(timestamp: number) {
FILE: packages/core/src/graph/controller/mode.ts
class ModeController (line 7) | class ModeController {
method constructor (line 38) | constructor(graph: IAbstractGraph) {
method formatModes (line 51) | private formatModes() {
method setBehaviors (line 62) | private setBehaviors(mode: string) {
method mergeBehaviors (line 82) | private static mergeBehaviors(
method filterBehaviors (line 97) | private static filterBehaviors(
method setMode (line 117) | public setMode(mode: string) {
method getMode (line 139) | public getMode(): string {
method manipulateBehaviors (line 152) | public manipulateBehaviors(
method updateBehavior (line 220) | public updateBehavior(
method destroy (line 276) | public destroy() {
FILE: packages/core/src/graph/controller/state.ts
type CachedStates (line 6) | interface CachedStates {
class StateController (line 13) | class StateController {
method constructor (line 20) | constructor(graph: IAbstractGraph) {
method checkCache (line 47) | private static checkCache(
method cacheState (line 70) | private static cacheState(item: Item, state: string, states: States) {
method updateState (line 85) | public updateState(item: Item, state: string, enabled: boolean) {
method updateStates (line 122) | public updateStates(item: Item, states: string | string[], enabled: bo...
method updateGraphStates (line 137) | public updateGraphStates() {
method destroy (line 178) | public destroy() {
FILE: packages/core/src/graph/controller/view.ts
class ViewController (line 10) | class ViewController {
method constructor (line 15) | constructor(graph: IAbstractGraph) {
method getViewCenter (line 21) | private getViewCenter(): Point {
method fitCenter (line 32) | public fitCenter() {
method fitView (line 48) | public fitView() {
method getFormatPadding (line 75) | public getFormatPadding(): number[] {
method focusPoint (line 80) | public focusPoint(
method getPointByCanvas (line 122) | public getPointByCanvas(canvasX: number, canvasY: number): Point {
method getPointByClient (line 136) | public getPointByClient(clientX: number, clientY: number): Point {
method getClientByPoint (line 147) | public getClientByPoint(x: number, y: number): Point {
method getCanvasByPoint (line 160) | public getCanvasByPoint(x: number, y: number): Point {
method focus (line 174) | public focus(
method changeSize (line 219) | public changeSize(width: number, height: number) {
method destroy (line 250) | public destroy() {
FILE: packages/core/src/graph/graph.ts
constant NODE (line 55) | const NODE = "node";
type PrivateGraphOption (line 57) | interface PrivateGraphOption extends GraphOptions {
method constructor (line 104) | constructor(cfg: GraphOptions) {
method init (line 119) | protected init() {
method initGroups (line 164) | protected initGroups(): void {
method getDefaultCfg (line 203) | public getDefaultCfg(): Partial<PrivateGraphOption> {
method set (line 369) | public set<T = any>(key: string | object, val?: T): AbstractGraph {
method get (line 382) | public get(key: string) {
method getGroup (line 390) | public getGroup(): IGroup {
method getContainer (line 398) | public getContainer(): HTMLElement {
method getMinZoom (line 406) | public getMinZoom(): number {
method setMinZoom (line 414) | public setMinZoom(ratio: number) {
method getMaxZoom (line 422) | public getMaxZoom(): number {
method setMaxZoom (line 430) | public setMaxZoom(ratio: number) {
method getWidth (line 438) | public getWidth(): number {
method getHeight (line 446) | public getHeight(): number {
method clearItemStates (line 455) | public clearItemStates(
method node (line 491) | public node(nodeFn: (config: NodeConfig) => Partial<NodeConfig>): void {
method edge (line 501) | public edge(edgeFn: (config: EdgeConfig) => Partial<EdgeConfig>): void {
method combo (line 511) | public combo(comboFn: (config: ComboConfig) => Partial<ComboConfig>): vo...
method findById (line 521) | public findById(id: string): Item {
method find (line 531) | public find<T extends Item>(
method findAll (line 555) | public findAll<T extends Item>(
method findAllByState (line 576) | public findAllByState<T extends Item>(type: ITEM_TYPE, state: string): T...
method translate (line 585) | public translate(dx: number, dy: number): void {
method moveTo (line 608) | public moveTo(x: number, y: number): void {
method fitView (line 618) | public fitView(padding?: Padding): void {
method fitCenter (line 632) | public fitCenter(): void {
method addBehaviors (line 644) | public addBehaviors(
method removeBehaviors (line 659) | public removeBehaviors(
method updateBehavior (line 674) | public updateBehavior(
method zoom (line 689) | public zoom(ratio: number, center?: Point): void {
method zoomTo (line 724) | public zoomTo(toRatio: number, center?: Point): void {
method focusItem (line 735) | public focusItem(
method autoPaint (line 757) | public autoPaint(): void {
method paint (line 766) | public paint(): void {
method getPointByClient (line 778) | public getPointByClient(clientX: number, clientY: number): Point {
method getClientByPoint (line 789) | public getClientByPoint(x: number, y: number): Point {
method getPointByCanvas (line 800) | public getPointByCanvas(canvasX: number, canvasY: number): Point {
method getCanvasByPoint (line 811) | public getCanvasByPoint(x: number, y: number): Point {
method getGraphCenterPoint (line 820) | public getGraphCenterPoint(): Point {
method getViewPortCenterPoint (line 832) | public getViewPortCenterPoint(): Point {
method showItem (line 841) | public showItem(item: Item | string, stack: boolean = true): void {
method hideItem (line 874) | public hideItem(item: Item | string, stack: boolean = true): void {
method refreshItem (line 906) | public refreshItem(item: Item | string) {
method setAutoPaint (line 915) | public setAutoPaint(auto: boolean): void {
method remove (line 927) | public remove(item: Item | string, stack: boolean = true): void {
method removeItem (line 936) | public removeItem(item: Item | string, stack: boolean = true): void {
method addItem (line 1006) | public addItem(
method add (line 1182) | public add(
method updateItem (line 1196) | public updateItem(
method update (line 1259) | public update(
method setItemState (line 1273) | public setItemState(
method priorityState (line 1299) | public priorityState(item: Item | string, state: string): void {
method data (line 1308) | public data(data?: GraphData | TreeGraphData): void {
method render (line 1316) | public render(): void {
method read (line 1422) | public read(data: GraphData) {
method diffItems (line 1428) | protected diffItems(
method changeData (line 1463) | public changeData(
method addCombos (line 1583) | protected addCombos(combos: ComboConfig[]) {
method createCombo (line 1595) | public createCombo(combo: string | ComboConfig, children: string[]): void {
method uncombo (line 1667) | public uncombo(combo: string | ICombo) {
method updateCombos (line 1755) | public updateCombos() {
method updateCombo (line 1788) | public updateCombo(combo: string | ICombo) {
method updateComboTree (line 1849) | public updateComboTree(
method save (line 1985) | public save(): GraphData | TreeGraphData {
method changeSize (line 2010) | public changeSize(width: number, height: number): AbstractGraph {
method refresh (line 2019) | public refresh(): void {
method getNodes (line 2052) | public getNodes(): INode[] {
method getEdges (line 2060) | public getEdges(): IEdge[] {
method getCombos (line 2067) | public getCombos(): ICombo[] {
method getComboChildren (line 2075) | public getComboChildren(combo: string | ICombo): {
method positionsAnimate (line 2092) | public positionsAnimate(): void {
method refreshPositions (line 2172) | public refreshPositions() {
method stopAnimate (line 2230) | public stopAnimate(): void {
method isAnimating (line 2234) | public isAnimating(): boolean {
method getZoom (line 2242) | public getZoom(): number {
method getCurrentMode (line 2251) | public getCurrentMode(): string {
method setMode (line 2261) | public setMode(mode: string): AbstractGraph {
method clear (line 2271) | public clear(avoidEmit: boolean = false): AbstractGraph {
method updateLayout (line 2296) | public updateLayout(cfg: any): void {
method destroyLayout (line 2325) | public destroyLayout(): void {
method layout (line 2333) | public layout(): void {
method collapseCombo (line 2354) | public collapseCombo(combo: string | ICombo): void {
method expandCombo (line 2502) | public expandCombo(combo: string | ICombo): void {
method collapseExpandCombo (line 2711) | public collapseExpandCombo(combo: string | ICombo) {
method sortCombos (line 2746) | protected sortCombos() {
method getNeighbors (line 2786) | public getNeighbors(
method getNodeDegree (line 2805) | public getNodeDegree(
method getUndoStack (line 2844) | public getUndoStack() {
method getRedoStack (line 2848) | public getRedoStack() {
method getStackData (line 2855) | public getStackData() {
method clearStack (line 2869) | public clearStack() {
method pushStack (line 2882) | public pushStack(
method getAdjMatrix (line 2927) | public getAdjMatrix(
method getShortestPathMatrix (line 2948) | public getShortestPathMatrix(
method on (line 2969) | public on<T = IG6GraphEvent>(
method destroy (line 2980) | public destroy() {
method createHull (line 3003) | public createHull(cfg: HullCfg) {
method getHulls (line 3041) | public getHulls(): { [key: string]: Hull } {
method getHullById (line 3049) | public getHullById(hullId: string): Hull {
method removeHull (line 3053) | public removeHull(hull: Hull | string) {
method removeHulls (line 3065) | public removeHulls() {
method onTick (line 3075) | public onTick(timestamp: number): void {
FILE: packages/core/src/interface/behavior.ts
type IBehavior (line 11) | interface IBehavior {
type IBehaviorOption (line 17) | interface IBehaviorOption {
class G6GraphEvent (line 31) | class G6GraphEvent extends GraphEvent implements IG6GraphEvent {
method constructor (line 48) | constructor(type: string, event: IG6GraphEvent) {
FILE: packages/core/src/interface/graph.ts
type IAbstractGraph (line 27) | interface IAbstractGraph extends EventEmitter {
FILE: packages/core/src/interface/item.ts
type IItemBaseConfig (line 20) | type IItemBaseConfig = Partial<{
type IItemBase (line 81) | interface IItemBase {
type IEdge (line 237) | interface IEdge extends IItemBase {
type INode (line 244) | interface INode extends IItemBase {
type ICombo (line 310) | interface ICombo extends INode {
FILE: packages/core/src/interface/shape.ts
type ILabelConfig (line 4) | type ILabelConfig = Partial<{
type ShapeDefine (line 13) | type ShapeDefine = string | ((cfg: ModelConfig) => string);
type ShapeOptions (line 15) | type ShapeOptions = Partial<{
FILE: packages/core/src/item/combo.ts
constant CACHE_BBOX (line 9) | const CACHE_BBOX = "bboxCache";
constant CACHE_CANVAS_BBOX (line 10) | const CACHE_CANVAS_BBOX = "bboxCanvasCache";
constant CACHE_SIZE (line 11) | const CACHE_SIZE = "sizeCache";
constant CACHE_ANCHOR_POINTS (line 12) | const CACHE_ANCHOR_POINTS = "anchorPointsCache";
class Combo (line 14) | class Combo extends Node implements ICombo {
method getDefaultCfg (line 15) | public getDefaultCfg() {
method getShapeCfg (line 24) | public getShapeCfg(model: ModelConfig): ModelConfig {
method calculateCanvasBBox (line 57) | public calculateCanvasBBox(): IBBox {
method getChildren (line 101) | public getChildren(): { nodes: INode[]; combos: ICombo[] } {
method getNodes (line 112) | getNodes(): INode[] {
method getCombos (line 120) | getCombos(): ICombo[] {
method addChild (line 130) | addChild(item: ICombo | INode): boolean {
method addCombo (line 154) | addCombo(combo: ICombo): boolean {
method addNode (line 165) | addNode(node: string | INode): boolean {
method removeChild (line 176) | removeChild(item: ICombo | INode): boolean {
method removeCombo (line 200) | removeCombo(combo: ICombo): boolean {
method removeNode (line 216) | removeNode(node: INode): boolean {
method isOnlyMove (line 227) | public isOnlyMove(cfg?: any): boolean {
method getBBox (line 235) | public getBBox(): IBBox {
method clearCache (line 241) | public clearCache() {
method destroy (line 247) | public destroy() {
FILE: packages/core/src/item/edge.ts
constant END_MAP (line 13) | const END_MAP: Indexable<string> = { source: "start", target: "end" };
constant ITEM_NAME_SUFFIX (line 14) | const ITEM_NAME_SUFFIX = "Node";
constant POINT_NAME_SUFFIX (line 15) | const POINT_NAME_SUFFIX = "Point";
constant ANCHOR_NAME_SUFFIX (line 16) | const ANCHOR_NAME_SUFFIX = "Anchor";
class Edge (line 18) | class Edge extends Item implements IEdge {
method getDefaultCfg (line 19) | protected getDefaultCfg() {
method setEnd (line 30) | private setEnd(name: SourceTarget, value: INode) {
method getLinkPoint (line 56) | private getLinkPoint(
method getPrePoint (line 87) | private getPrePoint(
method getEndPoint (line 103) | private getEndPoint(name: SourceTarget): NodeConfig | IPoint {
method getControlPointsByCenter (line 118) | private getControlPointsByCenter(model: EdgeConfig) {
method getEndCenter (line 129) | private getEndCenter(name: SourceTarget): IPoint {
method init (line 144) | protected init() {
method getShapeCfg (line 151) | public getShapeCfg(model: EdgeConfig): EdgeConfig {
method getModel (line 175) | public getModel(): EdgeConfig {
method setSource (line 202) | public setSource(source: INode | ICombo) {
method setTarget (line 207) | public setTarget(target: INode | ICombo) {
method getSource (line 212) | public getSource(): INode | ICombo {
method getTarget (line 216) | public getTarget(): INode | ICombo {
method updatePosition (line 220) | public updatePosition() {
method update (line 228) | public update(cfg: EdgeConfig, onlyMove: boolean = false) {
method destroy (line 249) | public destroy() {
FILE: packages/core/src/item/hull.ts
class Hull (line 24) | class Hull {
method constructor (line 45) | constructor(graph: IAbstractGraph, cfg: HullCfg) {
method getDefaultCfg (line 63) | public getDefaultCfg(): HullCfg {
method setPadding (line 78) | setPadding() {
method setType (line 91) | setType() {
method calcPath (line 108) | calcPath(members: Item[], nonMembers: Item[]) {
method render (line 144) | render() {
method addMember (line 161) | public addMember(item: Item | string): boolean {
method addNonMember (line 178) | public addNonMember(item: Item | string): boolean {
method removeMember (line 195) | public removeMember(item: Item | string): boolean {
method removeNonMember (line 211) | public removeNonMember(item: Item | string): boolean {
method updateData (line 223) | public updateData(members: Item[] | string[], nonMembers: string[] | I...
method updateStyle (line 237) | public updateStyle(cfg: HullCfg["style"]) {
method updateCfg (line 248) | public updateCfg(cfg: Partial<HullCfg>) {
method contain (line 273) | public contain(item: Item | string): boolean {
method destroy (line 300) | public destroy() {
FILE: packages/core/src/item/item.ts
constant CACHE_BBOX (line 30) | const CACHE_BBOX = "bboxCache";
constant CACHE_CANVAS_BBOX (line 31) | const CACHE_CANVAS_BBOX = "bboxCanvasCache";
constant ARROWS (line 32) | const ARROWS = ["startArrow", "endArrow"];
class ItemBase (line 34) | class ItemBase implements IItemBase {
method constructor (line 41) | constructor(cfg: IItemBaseConfig) {
method calculateBBox (line 142) | private calculateBBox(): IBBox {
method calculateCanvasBBox (line 159) | public calculateCanvasBBox(): IBBox {
method drawInner (line 176) | private drawInner() {
method setOriginStyle (line 212) | public setOriginStyle() {
method restoreStates (line 316) | private restoreStates(shapeFactory: any, shapeType: string) {
method init (line 324) | protected init() {
method get (line 335) | public get<T = any>(key: string): T {
method set (line 345) | public set(key: string | object, val?: unknown): void {
method getDefaultCfg (line 353) | protected getDefaultCfg() {
method clearCache (line 360) | protected clearCache() {
method beforeDraw (line 368) | protected beforeDraw() {}
method afterDraw (line 373) | protected afterDraw() {}
method afterUpdate (line 378) | protected afterUpdate() {}
method draw (line 383) | public draw() {
method getShapeStyleByName (line 389) | public getShapeStyleByName(name?: string): ShapeStyle {
method getShapeCfg (line 415) | public getShapeCfg(model: ModelConfig): ModelConfig {
method getStateStyle (line 430) | public getStateStyle(state: string) {
method getOriginStyle (line 439) | public getOriginStyle(): ShapeStyle {
method getCurrentStatesStyle (line 443) | public getCurrentStatesStyle(): ShapeStyle {
method setState (line 462) | public setState(state: string, value: string | boolean) {
method clearStates (line 512) | public clearStates(states?: string | string[]) {
method getContainer (line 540) | public getContainer(): IGroup {
method getKeyShape (line 548) | public getKeyShape(): IShapeBase {
method getModel (line 556) | public getModel(): NodeConfig | EdgeConfig | ComboConfig {
method getType (line 564) | public getType(): ITEM_TYPE {
method getID (line 571) | public getID(): string {
method isItem (line 578) | public isItem(): boolean {
method getStates (line 586) | public getStates(): string[] {
method hasState (line 595) | public hasState(state: string): boolean {
method refresh (line 607) | public refresh() {
method isOnlyMove (line 619) | public isOnlyMove(cfg?: ModelConfig): boolean {
method update (line 628) | public update(cfg: ModelConfig, onlyMove: boolean = false) {
method updateShape (line 669) | public updateShape() {
method updatePosition (line 698) | public updatePosition(cfg: ModelConfig): boolean {
method getBBox (line 726) | public getBBox(): IBBox {
method getCanvasBBox (line 740) | public getCanvasBBox(): IBBox {
method toFront (line 753) | public toFront() {
method toBack (line 761) | public toBack() {
method show (line 769) | public show() {
method hide (line 776) | public hide() {
method changeVisibility (line 784) | public changeVisibility(visible: boolean) {
method isVisible (line 798) | public isVisible(): boolean {
method enableCapture (line 806) | public enableCapture(enable: boolean) {
method destroy (line 813) | public destroy() {
FILE: packages/core/src/item/node.ts
constant CACHE_ANCHOR_POINTS (line 13) | const CACHE_ANCHOR_POINTS = "anchorPointsCache";
constant CACHE_BBOX (line 14) | const CACHE_BBOX = "bboxCache";
class Node (line 16) | class Node extends Item implements INode {
method getNearestPoint (line 17) | public getNearestPoint(points: IPoint[], curPoint: IPoint): IPoint {
method getDefaultCfg (line 34) | public getDefaultCfg() {
method getEdges (line 44) | public getEdges(): IEdge[] {
method getInEdges (line 51) | public getInEdges(): IEdge[] {
method getOutEdges (line 61) | public getOutEdges(): IEdge[] {
method getNeighbors (line 74) | public getNeighbors(type?: "target" | "source" | undefined): INode[] {
method getLinkPointByAnchor (line 103) | public getLinkPointByAnchor(index: number): IPoint {
method getLinkPoint (line 112) | public getLinkPoint(point: IPoint): IPoint | null {
method getAnchorPoints (line 173) | public getAnchorPoints(): IPoint[] {
method addEdge (line 201) | public addEdge(edge: IEdge) {
method lock (line 208) | public lock() {
method unlock (line 215) | public unlock() {
method hasLocked (line 219) | public hasLocked(): boolean {
method removeEdge (line 227) | public removeEdge(edge: IEdge) {
method clearCache (line 235) | public clearCache() {
method isOnlyMove (line 244) | public isOnlyMove(cfg: ModelConfig): boolean {
FILE: packages/core/src/types/index.ts
type Item (line 18) | type Item = INode | IEdge | ICombo;
type IG6GraphEvent (line 20) | interface IG6GraphEvent extends GraphEvent {
type IPoint (line 35) | interface IPoint {
type IPointTuple (line 43) | type IPointTuple = [number, number];
type Matrix (line 45) | type Matrix = number[];
type IBBox (line 47) | interface IBBox extends BBox {
type Padding (line 53) | type Padding = number | string | number[];
type ArrowConfig (line 55) | interface ArrowConfig {
type ShapeStyle (line 63) | type ShapeStyle = Partial<{
type IShapeBase (line 98) | interface IShapeBase extends IShape {
type IRect (line 102) | interface IRect extends IPoint {
type ICircle (line 107) | interface ICircle extends IPoint {
type IEllipse (line 111) | interface IEllipse extends IPoint {
type SourceTarget (line 116) | type SourceTarget = "source" | "target";
type LoopConfig (line 119) | type LoopConfig = Partial<{
type LayoutConfig (line 126) | interface LayoutConfig {
type ModeOption (line 136) | interface ModeOption {
type ModeType (line 182) | type ModeType = string | ModeOption;
type Modes (line 184) | interface Modes {
type States (line 190) | interface States {
type StateStyles (line 194) | interface StateStyles {
type ModelStyle (line 203) | type ModelStyle = Partial<{
type GraphOptions (line 209) | interface GraphOptions {
type LabelStyle (line 352) | type LabelStyle = Partial<{
type Easeing (line 389) | type Easeing =
type ModelConfig (line 400) | interface ModelConfig extends ModelStyle {
type TreeGraphData (line 421) | interface TreeGraphData {
type NodeConfig (line 440) | interface NodeConfig extends ModelConfig {
type ComboTree (line 509) | interface ComboTree {
type ComboConfig (line 520) | interface ComboConfig extends ModelConfig {
type EdgeConfig (line 538) | interface EdgeConfig extends ModelConfig {
type EdgeData (line 555) | type EdgeData = EdgeConfig & {
type NodeMap (line 562) | interface NodeMap {
type NodeConfigMap (line 566) | interface NodeConfigMap {
type GraphData (line 570) | interface GraphData {
type GraphAnimateConfig (line 577) | interface GraphAnimateConfig extends AnimateCfg {
type GroupNodeIds (line 589) | interface GroupNodeIds {
type G6Event (line 594) | enum G6Event {
type DefaultBehaviorType (line 738) | type DefaultBehaviorType = IG6GraphEvent | string | number | object;
type BehaviorOption (line 740) | interface BehaviorOption {
type IEvent (line 753) | type IEvent = Record<G6Event, string>;
type ITEM_TYPE (line 756) | type ITEM_TYPE = "node" | "edge" | "combo" | "vedge";
type NodeIdxMap (line 758) | type NodeIdxMap = {
type ViewPortEventParam (line 763) | interface ViewPortEventParam {
type Indexable (line 768) | interface Indexable<T> {
type IAlgorithmCallbacks (line 773) | interface IAlgorithmCallbacks {
type StackData (line 784) | interface StackData {
type BubblesetCfg (line 789) | interface BubblesetCfg {
type TimeBarType (line 805) | type TimeBarType = "trend" | "simple" | "tick";
type HullCfg (line 807) | interface HullCfg {
FILE: packages/core/src/util/graphic.ts
constant SELF_LINK_SIN (line 22) | const SELF_LINK_SIN: number = sin(PI / 8);
constant SELF_LINK_COS (line 23) | const SELF_LINK_COS: number = cos(PI / 8);
FILE: packages/core/src/util/math.ts
function onSegment (line 462) | function onSegment(p1, p2, q) {
function dcmp (line 486) | function dcmp(xValue) {
type BBox (line 546) | type BBox = Partial<IBBox>;
class Line (line 637) | class Line {
method constructor (line 646) | constructor(x1: number, y1: number, x2: number, y2: number) {
method getBBox (line 653) | public getBBox() {
FILE: packages/core/src/util/path.ts
function roundedHull (line 198) | function roundedHull(polyPoints: vec2[], padding: number) {
function paddedHull (line 269) | function paddedHull(polyPoints: vec2[], padding: number) {
FILE: packages/element/src/edges/polyline-util.ts
type PolyPoint (line 5) | interface PolyPoint {
type PBBox (line 11) | type PBBox = Partial<{
FILE: packages/element/src/edges/polyline.ts
method drawShape (line 53) | drawShape(cfg: EdgeConfig, group: IGroup) {
method getShapeStyle (line 63) | getShapeStyle(cfg: EdgeConfig): ShapeStyle {
method updateShapeStyle (line 125) | updateShapeStyle(cfg: EdgeConfig, item: Item) {
method getPath (line 202) | getPath(
FILE: packages/element/src/edges/router.ts
type RouterCfg (line 18) | interface RouterCfg {
method penalties (line 73) | get penalties() {
FILE: packages/element/src/nodes/circle.ts
method drawShape (line 60) | drawShape(cfg: NodeConfig, group: IGroup): IShape {
method drawLinkPoints (line 111) | drawLinkPoints(cfg: NodeConfig, group: IGroup) {
method getShapeStyle (line 190) | getShapeStyle(cfg: NodeConfig): ShapeStyle {
method update (line 207) | update(cfg: NodeConfig, item: Item) {
FILE: packages/element/src/nodes/diamond.ts
method drawShape (line 58) | drawShape(cfg: NodeConfig, group: IGroup): IShape {
method drawLinkPoints (line 110) | drawLinkPoints(cfg: NodeConfig, group: IGroup) {
method getPath (line 185) | getPath(cfg: NodeConfig): Array<Array<string | number>> {
method getShapeStyle (line 203) | getShapeStyle(cfg: NodeConfig): ShapeStyle {
method update (line 214) | update(cfg: NodeConfig, item: Item) {
FILE: packages/element/src/nodes/donut.ts
method drawShape (line 63) | drawShape(cfg: NodeConfig, group: IGroup): IShape {
FILE: packages/element/src/nodes/ellipse.ts
method drawShape (line 62) | drawShape(cfg: NodeConfig, group: IGroup): IShape {
method drawLinkPoints (line 114) | drawLinkPoints(cfg: NodeConfig, group: IGroup) {
method getShapeStyle (line 195) | getShapeStyle(cfg: NodeConfig): ShapeStyle {
method update (line 214) | update(cfg: NodeConfig, item: Item) {
FILE: packages/element/src/nodes/image.ts
method drawShape (line 51) | drawShape(cfg: NodeConfig, group: IGroup): IShape {
method drawClip (line 64) | drawClip(cfg: NodeConfig, shape: IShape) {
method getShapeStyle (line 129) | getShapeStyle(cfg: NodeConfig) {
method updateShapeStyle (line 149) | updateShapeStyle(cfg: NodeConfig, item: Item) {
FILE: packages/element/src/nodes/modelRect.ts
method drawShape (line 92) | drawShape(cfg: NodeConfig, group: IGroup): IShape {
method drawLogoIcon (line 133) | drawLogoIcon(cfg: NodeConfig, group: IGroup) {
method drawStateIcon (line 185) | drawStateIcon(cfg: NodeConfig, group: IGroup) {
method drawLinkPoints (line 237) | drawLinkPoints(cfg: NodeConfig, group: IGroup) {
method drawLabel (line 312) | drawLabel(cfg: NodeConfig, group: IGroup): IShape {
method getShapeStyle (line 378) | getShapeStyle(cfg: NodeConfig) {
method update (line 397) | update(cfg: NodeConfig, item: Item) {
FILE: packages/element/src/nodes/rect.ts
method drawShape (line 64) | drawShape(cfg: NodeConfig, group: IGroup): IShape {
method drawLinkPoints (line 82) | drawLinkPoints(cfg: NodeConfig, group: IGroup) {
method getShapeStyle (line 163) | getShapeStyle(cfg: NodeConfig) {
method update (line 182) | update(cfg: NodeConfig, item: Item) {
FILE: packages/element/src/nodes/star.ts
method drawShape (line 59) | drawShape(cfg: NodeConfig, group: IGroup): IShape {
method drawLinkPoints (line 111) | drawLinkPoints(cfg: NodeConfig, group: IGroup) {
method getPath (line 217) | getPath(cfg: NodeConfig) {
method getShapeStyle (line 246) | getShapeStyle(cfg: NodeConfig): ShapeStyle {
method update (line 257) | update(cfg: NodeConfig, item: Item) {
method updateLinkPoints (line 281) | updateLinkPoints(cfg: NodeConfig, group: IGroup) {
FILE: packages/element/src/nodes/triangle.ts
method drawShape (line 63) | drawShape(cfg: NodeConfig, group: IGroup): IShape {
method drawLinkPoints (line 126) | drawLinkPoints(cfg: NodeConfig, group: IGroup) {
method getPath (line 258) | getPath(cfg: ModelConfig) {
method getShapeStyle (line 305) | getShapeStyle(cfg: NodeConfig) {
method update (line 316) | update(cfg: NodeConfig, item: Item) {
method updateLinkPoints (line 339) | updateLinkPoints(cfg: NodeConfig, group: IGroup) {
FILE: packages/element/tests/unit/issues-spec.ts
method getEvents (line 10) | getEvents() {
method onEdgeSelect (line 18) | onEdgeSelect(evt) {
method onEdgeHover (line 26) | onEdgeHover(evt) {
method onEdgeLeave (line 33) | onEdgeLeave(evt) {
method clearSelectedEdge (line 37) | clearSelectedEdge(evt) {
method afterDraw (line 237) | afterDraw(cfg, group) {
FILE: packages/examples-alipay/app.js
method onLaunch (line 3) | async onLaunch() {
method onShow (line 20) | onShow() {
FILE: packages/examples-alipay/common/components/block-list/block-list.js
method onItemTap (line 3) | onItemTap(e) {
FILE: packages/examples-alipay/common/components/search/search.js
method onLoad (line 27) | onLoad() {
method clear (line 37) | clear() {
method onInput (line 50) | onInput(keyword) {
method onClear (line 85) | onClear() {
method onCancel (line 90) | onCancel() {
method onItemTap (line 98) | onItemTap({ name }) {
method onListItemTap (line 105) | onListItemTap(e) {
method addToHistory (line 111) | addToHistory(keyword) {
FILE: packages/examples-alipay/common/utils/common.js
function strLen (line 1) | function strLen(str = "") {
function measureText (line 14) | function measureText(text, font) {
function processSearchData (line 25) | function processSearchData(all_data) {
function debounce (line 46) | function debounce(fn, wait) {
FILE: packages/examples-alipay/common/utils/context.js
function wrapContext (line 5) | function wrapContext(ctx) {
FILE: packages/examples-alipay/common/utils/debounce.js
function debounce (line 1) | function debounce(fn, wait) {
FILE: packages/examples-alipay/pages/animation/change-position-default/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 41) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 52) | handleTouch(e) {
method updateChart (line 56) | updateChart() {
method onUnload (line 84) | onUnload() {
FILE: packages/examples-alipay/pages/animation/custom-animate-position/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 43) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 54) | handleTouch(e) {
method updateChart (line 58) | updateChart() {
method onUnload (line 120) | onUnload() {
FILE: packages/examples-alipay/pages/animation/edge-edge/index.js
method afterDraw (line 12) | afterDraw(cfg, group) {
method onLoad (line 54) | onLoad() {
method handleInit (line 72) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 83) | handleTouch(e) {
method updateChart (line 87) | updateChart() {
method onUnload (line 113) | onUnload() {
FILE: packages/examples-alipay/pages/animation/edge-line-growth/index.js
method afterDraw (line 12) | afterDraw(_, group) {
method onLoad (line 50) | onLoad() {
method handleInit (line 68) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 79) | handleTouch(e) {
method updateChart (line 83) | updateChart() {
method onUnload (line 109) | onUnload() {
FILE: packages/examples-alipay/pages/animation/node-node/index.js
method afterDraw (line 15) | afterDraw(cfg, group) {
method afterDraw (line 39) | afterDraw(cfg, group) {
method afterDraw (line 123) | afterDraw(cfg, group) {
method onLoad (line 172) | onLoad() {
method handleInit (line 190) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 201) | handleTouch(e) {
method updateChart (line 205) | updateChart() {
method onUnload (line 237) | onUnload() {
FILE: packages/examples-alipay/pages/animation/point-in-line/index.js
method afterDraw (line 12) | afterDraw(cfg, group) {
method onLoad (line 65) | onLoad() {
method handleInit (line 83) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 94) | handleTouch(e) {
method updateChart (line 98) | updateChart() {
method onUnload (line 124) | onUnload() {
FILE: packages/examples-alipay/pages/animation/state-change-hover/index.js
method afterDraw (line 12) | afterDraw(cfg, group) {
method getAnchorPoints (line 23) | getAnchorPoints() {
method afterDraw (line 36) | afterDraw(cfg, group) {
method getAnchorPoints (line 62) | getAnchorPoints() {
method setState (line 78) | setState(name, value, item) {
method onLoad (line 125) | onLoad() {
method handleInit (line 154) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 165) | handleTouch(e) {
method updateChart (line 169) | updateChart() {
method onUnload (line 211) | onUnload() {
FILE: packages/examples-alipay/pages/elements/arc/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 115) | onUnload() {
FILE: packages/examples-alipay/pages/elements/area-chart/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 166) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 177) | handleTouch(e) {
method updateChart (line 181) | updateChart() {
method onUnload (line 200) | onUnload() {
FILE: packages/examples-alipay/pages/elements/bar-chart/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 160) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 171) | handleTouch(e) {
method updateChart (line 175) | updateChart() {
method onUnload (line 194) | onUnload() {
FILE: packages/examples-alipay/pages/elements/built-in-arrows/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 88) | onUnload() {
FILE: packages/examples-alipay/pages/elements/c-circle/index.js
method onLoad (line 102) | onLoad() {
method handleInit (line 120) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 131) | handleTouch(e) {
method updateChart (line 135) | updateChart() {
method onUnload (line 179) | onUnload() {
FILE: packages/examples-alipay/pages/elements/c-rect/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 119) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 130) | handleTouch(e) {
method updateChart (line 134) | updateChart() {
method onUnload (line 176) | onUnload() {
FILE: packages/examples-alipay/pages/elements/card-node/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 192) | onUnload() {
FILE: packages/examples-alipay/pages/elements/card/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 503) | onUnload() {
FILE: packages/examples-alipay/pages/elements/circle-with-combo/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 123) | onUnload() {
FILE: packages/examples-alipay/pages/elements/circle/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 148) | onUnload() {
FILE: packages/examples-alipay/pages/elements/cubic1/index.js
method onLoad (line 35) | onLoad() {
method handleInit (line 53) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 64) | handleTouch(e) {
method updateChart (line 68) | updateChart() {
method onUnload (line 123) | onUnload() {
FILE: packages/examples-alipay/pages/elements/cubic2/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 110) | onUnload() {
FILE: packages/examples-alipay/pages/elements/custom-arrows/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 88) | onUnload() {
FILE: packages/examples-alipay/pages/elements/custom-polyline/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 82) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 93) | handleTouch(e) {
method updateChart (line 97) | updateChart() {
method onUnload (line 149) | onUnload() {
FILE: packages/examples-alipay/pages/elements/custom-polyline2/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 74) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 85) | handleTouch(e) {
method updateChart (line 89) | updateChart() {
method onUnload (line 141) | onUnload() {
FILE: packages/examples-alipay/pages/elements/diamond/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 148) | onUnload() {
FILE: packages/examples-alipay/pages/elements/donut/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 148) | onUnload() {
FILE: packages/examples-alipay/pages/elements/edge-bg/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 109) | onUnload() {
FILE: packages/examples-alipay/pages/elements/edge-mul-label/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 96) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 107) | handleTouch(e) {
method updateChart (line 111) | updateChart() {
method onUnload (line 158) | onUnload() {
FILE: packages/examples-alipay/pages/elements/ellipse/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 146) | onUnload() {
FILE: packages/examples-alipay/pages/elements/extra-shape/index.js
method afterDraw (line 11) | afterDraw(cfg, group) {
method onLoad (line 67) | onLoad() {
method handleInit (line 84) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 95) | handleTouch(e) {
method updateChart (line 99) | updateChart() {
method onUnload (line 129) | onUnload() {
FILE: packages/examples-alipay/pages/elements/image/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 94) | onUnload() {
FILE: packages/examples-alipay/pages/elements/label-len/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 89) | onUnload() {
FILE: packages/examples-alipay/pages/elements/label-len1/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 85) | onUnload() {
FILE: packages/examples-alipay/pages/elements/line-chart/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 163) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 174) | handleTouch(e) {
method updateChart (line 178) | updateChart() {
method onUnload (line 197) | onUnload() {
FILE: packages/examples-alipay/pages/elements/list/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 160) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 171) | handleTouch(e) {
method updateChart (line 175) | updateChart() {
method onUnload (line 225) | onUnload() {
FILE: packages/examples-alipay/pages/elements/loop/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 118) | onUnload() {
FILE: packages/examples-alipay/pages/elements/mode-rect/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 161) | onUnload() {
FILE: packages/examples-alipay/pages/elements/multi-edges/index.js
method onLoad (line 24) | onLoad() {
method handleInit (line 42) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 53) | handleTouch(e) {
method updateChart (line 57) | updateChart() {
method onUnload (line 113) | onUnload() {
FILE: packages/examples-alipay/pages/elements/node-bg/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 104) | onUnload() {
FILE: packages/examples-alipay/pages/elements/pie-chart/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 92) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 103) | handleTouch(e) {
method updateChart (line 107) | updateChart() {
method onUnload (line 129) | onUnload() {
FILE: packages/examples-alipay/pages/elements/point-chart/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 146) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 157) | handleTouch(e) {
method updateChart (line 161) | updateChart() {
method onUnload (line 180) | onUnload() {
FILE: packages/examples-alipay/pages/elements/polyline1/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 110) | onUnload() {
FILE: packages/examples-alipay/pages/elements/polyline2/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 114) | onUnload() {
FILE: packages/examples-alipay/pages/elements/polyline3/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 111) | onUnload() {
FILE: packages/examples-alipay/pages/elements/rect-with-combo/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 124) | onUnload() {
FILE: packages/examples-alipay/pages/elements/rect/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 146) | onUnload() {
FILE: packages/examples-alipay/pages/elements/stack-chart/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 165) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 176) | handleTouch(e) {
method updateChart (line 180) | updateChart() {
method onUnload (line 199) | onUnload() {
FILE: packages/examples-alipay/pages/elements/star/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 149) | onUnload() {
FILE: packages/examples-alipay/pages/elements/triangle/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 149) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/basic-FA2/index.js
method onLoad (line 24) | onLoad() {
method handleInit (line 43) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 54) | handleTouch(e) {
method updateChart (line 58) | updateChart() {
method onUnload (line 96) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/basic-MDS/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 44) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 55) | handleTouch(e) {
method updateChart (line 59) | updateChart() {
method onUnload (line 89) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/basic-arc-diagram/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 43) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 54) | handleTouch(e) {
method updateChart (line 58) | updateChart() {
method onUnload (line 194) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/basic-circular/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 44) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 55) | handleTouch(e) {
method updateChart (line 59) | updateChart() {
method onUnload (line 88) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/basic-combo-force/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 44) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 55) | handleTouch(e) {
method updateChart (line 59) | updateChart() {
method onUnload (line 102) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/basic-concentric/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 44) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 55) | handleTouch(e) {
method updateChart (line 59) | updateChart() {
method onUnload (line 90) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/basic-dagre/index.js
method onLoad (line 24) | onLoad() {
method handleInit (line 81) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 92) | handleTouch(e) {
method updateChart (line 96) | updateChart() {
method onUnload (line 164) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/basic-force-directed-drag-fix/index.js
method onLoad (line 24) | onLoad() {
method handleInit (line 43) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 54) | handleTouch(e) {
method updateChart (line 58) | updateChart() {
method onUnload (line 101) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/basic-force-directed/index.js
method onLoad (line 24) | onLoad() {
method handleInit (line 43) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 54) | handleTouch(e) {
method updateChart (line 58) | updateChart() {
method onUnload (line 114) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/basic-grid/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 44) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 55) | handleTouch(e) {
method updateChart (line 59) | updateChart() {
method onUnload (line 91) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/basic-radial/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 43) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 54) | handleTouch(e) {
method updateChart (line 58) | updateChart() {
method onUnload (line 88) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/circular-arc-diagram/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 43) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 54) | handleTouch(e) {
method updateChart (line 58) | updateChart() {
method onUnload (line 192) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/circular-configuration-translate/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 46) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 57) | handleTouch(e) {
method updateChart (line 61) | updateChart() {
method onUnload (line 190) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/cluster-grid/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 44) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 55) | handleTouch(e) {
method updateChart (line 59) | updateChart() {
method onUnload (line 92) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/custom-bi-graph/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 144) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 155) | handleTouch(e) {
method updateChart (line 159) | updateChart() {
method onUnload (line 199) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/dagre-UL/index.js
method onLoad (line 24) | onLoad() {
method handleInit (line 44) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 55) | handleTouch(e) {
method updateChart (line 59) | updateChart() {
method onUnload (line 110) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/dagre-combo/index.js
method onLoad (line 26) | onLoad() {
method handleInit (line 46) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 57) | handleTouch(e) {
method handleClickButton (line 61) | handleClickButton() {
method updateChart (line 75) | updateChart() {
method onUnload (line 131) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/dagre-configuration-translate/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 45) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 56) | handleTouch(e) {
method updateChart (line 60) | updateChart() {
method onUnload (line 175) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/dagre/index.js
method onLoad (line 24) | onLoad() {
method handleInit (line 44) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 55) | handleTouch(e) {
method updateChart (line 59) | updateChart() {
method onUnload (line 107) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/data-change/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 43) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 54) | handleTouch(e) {
method updateChart (line 58) | updateChart() {
method onUnload (line 102) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/degree-circular/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 44) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 55) | handleTouch(e) {
method updateChart (line 59) | updateChart() {
method onUnload (line 97) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/division-circular/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 44) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 55) | handleTouch(e) {
method updateChart (line 59) | updateChart() {
method onUnload (line 100) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/force-bubbles/index.js
method onLoad (line 24) | onLoad() {
method handleInit (line 43) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 54) | handleTouch(e) {
method updateChart (line 58) | updateChart() {
method onUnload (line 236) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/force-constrained-in-rect/index.js
method onLoad (line 24) | onLoad() {
method handleInit (line 43) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 54) | handleTouch(e) {
method updateChart (line 58) | updateChart() {
method onUnload (line 125) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/force-directed-configuration-translate/index.js
method onLoad (line 24) | onLoad() {
method handleInit (line 42) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 53) | handleTouch(e) {
method updateChart (line 57) | updateChart() {
method onUnload (line 115) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/force-directed-force-clustering/index.js
method onLoad (line 24) | onLoad() {
method handleInit (line 43) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 54) | handleTouch(e) {
method updateChart (line 58) | updateChart() {
method onUnload (line 108) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/force-directed-functional-params/index.js
method onLoad (line 24) | onLoad() {
method handleInit (line 43) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 54) | handleTouch(e) {
method updateChart (line 58) | updateChart() {
method onUnload (line 135) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/force-directed-prevent-overlap/index.js
method onLoad (line 24) | onLoad() {
method handleInit (line 43) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 54) | handleTouch(e) {
method updateChart (line 58) | updateChart() {
method onUnload (line 118) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/fruchterman-clustering/data.js
function getData (line 1) | function getData() {
FILE: packages/examples-alipay/pages/general-graph/fruchterman-clustering/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 44) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 55) | handleTouch(e) {
method updateChart (line 59) | updateChart() {
method onUnload (line 100) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/fruchterman-configuration-translate/data.js
function getData (line 1) | function getData() {
FILE: packages/examples-alipay/pages/general-graph/fruchterman-configuration-translate/index.js
method onLoad (line 24) | onLoad() {
method handleInit (line 45) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 56) | handleTouch(e) {
method updateChart (line 60) | updateChart() {
method onUnload (line 150) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/fruchterman-worker/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 46) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 57) | handleTouch(e) {
method updateChart (line 61) | updateChart() {
method onUnload (line 103) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/fruchterman/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 44) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 55) | handleTouch(e) {
method updateChart (line 59) | updateChart() {
method onUnload (line 95) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/interact-radial/index.js
method onLoad (line 24) | onLoad() {
method handleInit (line 44) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 55) | handleTouch(e) {
method updateChart (line 59) | updateChart() {
method onUnload (line 208) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/layout-timing/index.js
method onLoad (line 27) | onLoad() {
method handleInit (line 47) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 58) | handleTouch(e) {
method updateChart (line 62) | updateChart() {
method onUnload (line 104) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/layout-translate/index.js
method onLoad (line 29) | onLoad() {
method handleInit (line 54) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 65) | handleTouch(e) {
method updateChart (line 69) | updateChart() {
method onUnload (line 132) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/prevent-overlap-radial/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 43) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 54) | handleTouch(e) {
method updateChart (line 58) | updateChart() {
method onUnload (line 95) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/prevent-overlap-unstrict-radial/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 43) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 54) | handleTouch(e) {
method updateChart (line 58) | updateChart() {
method onUnload (line 98) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/radial-configuration-translate/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 45) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 56) | handleTouch(e) {
method updateChart (line 60) | updateChart() {
method onUnload (line 159) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/sort-radial/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 43) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 54) | handleTouch(e) {
method updateChart (line 58) | updateChart() {
method onUnload (line 100) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/spiral-circular/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 44) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 55) | handleTouch(e) {
method updateChart (line 59) | updateChart() {
method onUnload (line 98) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/subgraph-layout/index.js
method onLoad (line 24) | onLoad() {
method handleInit (line 42) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 53) | handleTouch(e) {
method updateChart (line 57) | updateChart() {
method onUnload (line 151) | onUnload() {
FILE: packages/examples-alipay/pages/general-graph/sublayout-pipes/index.js
method onLoad (line 26) | onLoad() {
method handleInit (line 44) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 55) | handleTouch(e) {
method updateChart (line 59) | updateChart() {
method onUnload (line 171) | onUnload() {
FILE: packages/examples-alipay/pages/index/index.js
method onPageScroll (line 72) | onPageScroll(e) {
method onSearchBarTap (line 106) | onSearchBarTap() {
method onTabBarTap (line 113) | onTabBarTap(e) {
method onLoad (line 120) | onLoad() {
method goDevCenter (line 132) | goDevCenter() {
method openPage (line 142) | openPage(e) {
method onChange (line 150) | onChange(e) {
FILE: packages/examples-alipay/pages/interactive/activate-relations/index.js
method onLoad (line 24) | onLoad() {
method handleInit (line 44) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 55) | handleTouch(e) {
method updateChart (line 59) | updateChart() {
method onUnload (line 130) | onUnload() {
FILE: packages/examples-alipay/pages/interactive/add-child/index.js
method onLoad (line 24) | onLoad() {
method handleInit (line 45) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 56) | handleTouch(e) {
method updateChart (line 60) | updateChart() {
method onUnload (line 153) | onUnload() {
FILE: packages/examples-alipay/pages/interactive/canvas-two-fingers/index.js
method onLoad (line 54) | onLoad() {
method handleInit (line 72) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 83) | handleTouch(e) {
method updateChart (line 87) | updateChart() {
method onUnload (line 114) | onUnload() {
FILE: packages/examples-alipay/pages/interactive/change-data/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 46) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 57) | handleTouch(e) {
method updateChart (line 61) | updateChart() {
method onUnload (line 179) | onUnload() {
FILE: packages/examples-alipay/pages/interactive/change-members/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 45) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 56) | handleTouch(e) {
method updateChart (line 60) | updateChart() {
method onUnload (line 142) | onUnload() {
FILE: packages/examples-alipay/pages/interactive/collapse-slibing/index.js
method onLoad (line 27) | onLoad() {
method handleInit (line 119) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 130) | handleTouch(e) {
method updateChart (line 134) | updateChart() {
method onUnload (line 198) | onUnload() {
FILE: packages/examples-alipay/pages/interactive/combo-circle/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 119) | onUnload() {
FILE: packages/examples-alipay/pages/interactive/combo-rect/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 41) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 52) | handleTouch(e) {
method updateChart (line 56) | updateChart() {
method onUnload (line 124) | onUnload() {
FILE: packages/examples-alipay/pages/interactive/drag-subtree/index.js
method onLoad (line 27) | onLoad() {
method handleInit (line 48) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 59) | handleTouch(e) {
method updateChart (line 63) | updateChart() {
method onUnload (line 211) | onUnload() {
FILE: packages/examples-alipay/pages/interactive/fix-item/index.js
method openOne (line 30) | openOne() {
method onLoad (line 98) | onLoad() {
method handleInit (line 116) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 127) | handleTouch(e) {
method updateChart (line 131) | updateChart() {
method onUnload (line 206) | onUnload() {
FILE: packages/examples-alipay/pages/interactive/hide-item/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 41) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 52) | handleTouch(e) {
method updateChart (line 56) | updateChart() {
method onUnload (line 115) | onUnload() {
FILE: packages/examples-alipay/pages/interactive/highlight-dark/index.js
method onLoad (line 24) | onLoad() {
method handleInit (line 44) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 55) | handleTouch(e) {
method updateChart (line 59) | updateChart() {
method onUnload (line 190) | onUnload() {
FILE: packages/examples-alipay/pages/interactive/hull/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 45) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 56) | handleTouch(e) {
method updateChart (line 60) | updateChart() {
method onUnload (line 159) | onUnload() {
FILE: packages/examples-alipay/pages/interactive/move-animate/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 41) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 52) | handleTouch(e) {
method updateChart (line 56) | updateChart() {
method onUnload (line 104) | onUnload() {
FILE: packages/examples-alipay/pages/interactive/move/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 41) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 52) | handleTouch(e) {
method updateChart (line 56) | updateChart() {
method onUnload (line 103) | onUnload() {
FILE: packages/examples-alipay/pages/interactive/partial-node/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 73) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 84) | handleTouch(e) {
method updateChart (line 88) | updateChart() {
method onUnload (line 156) | onUnload() {
FILE: packages/examples-alipay/pages/interactive/set-mode/index.js
method openOne (line 27) | openOne() {
method onLoad (line 58) | onLoad() {
method handleInit (line 158) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 169) | handleTouch(e) {
method updateChart (line 173) | updateChart() {
method onUnload (line 210) | onUnload() {
FILE: packages/examples-alipay/pages/plugins/bundling/index.js
method onLoad (line 26) | onLoad() {
method handleInit (line 44) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 55) | handleTouch(e) {
method updateChart (line 59) | updateChart() {
method onUnload (line 105) | onUnload() {
FILE: packages/examples-alipay/pages/plugins/donut-transfer/index.js
method onLoad (line 27) | onLoad() {
method handleInit (line 44) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 55) | handleTouch(e) {
method updateChart (line 59) | updateChart() {
method onUnload (line 136) | onUnload() {
FILE: packages/examples-alipay/pages/plugins/edge-filter/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 41) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 52) | handleTouch(e) {
method updateChart (line 56) | updateChart() {
method onUnload (line 120) | onUnload() {
FILE: packages/examples-alipay/pages/plugins/fisheye/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 41) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 52) | handleTouch(e) {
method updateChart (line 56) | updateChart() {
method onUnload (line 101) | onUnload() {
FILE: packages/examples-alipay/pages/plugins/menu/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 41) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 52) | handleTouch(e) {
method updateChart (line 56) | updateChart() {
method onUnload (line 153) | onUnload() {
FILE: packages/examples-alipay/pages/plugins/mini-map/index.js
method onLoad (line 13) | onLoad() {
method handleInit (line 37) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 81) | handleTouch(e) {
method onUnload (line 85) | onUnload() {
FILE: packages/examples-alipay/pages/plugins/snap-line/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 41) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 52) | handleTouch(e) {
method updateChart (line 56) | updateChart() {
method onUnload (line 84) | onUnload() {
FILE: packages/examples-alipay/pages/plugins/timebar/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 117) | onUnload() {
FILE: packages/examples-alipay/pages/plugins/tool-tip/index.js
method onLoad (line 33) | onLoad() {
method handleInit (line 54) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 65) | handleTouch(e) {
method updateChart (line 69) | updateChart() {
method onUnload (line 486) | onUnload() {
FILE: packages/examples-alipay/pages/plugins/zoom-slider/index.js
method onLoad (line 13) | onLoad() {
method handleInit (line 30) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 59) | handleTouch(e) {
method onUnload (line 63) | onUnload() {
FILE: packages/examples-alipay/pages/scene-case/custom-flow/index.js
method onLoad (line 24) | onLoad() {
method handleInit (line 223) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 234) | handleTouch(e) {
method updateChart (line 238) | updateChart() {
method onUnload (line 295) | onUnload() {
FILE: packages/examples-alipay/pages/scene-case/decision-tree/index.js
method onLoad (line 32) | onLoad() {
method handleInit (line 53) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 64) | handleTouch(e) {
method updateChart (line 68) | updateChart() {
method onUnload (line 454) | onUnload() {
FILE: packages/examples-alipay/pages/scene-case/donut-transfer/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 40) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 51) | handleTouch(e) {
method updateChart (line 55) | updateChart() {
method onUnload (line 134) | onUnload() {
FILE: packages/examples-alipay/pages/scene-case/knowledge-tree-graph/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 253) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 264) | handleTouch(e) {
method updateChart (line 268) | updateChart() {
method onUnload (line 345) | onUnload() {
FILE: packages/examples-alipay/pages/scene-case/metro-lines/index.js
method onLoad (line 22) | onLoad() {
method handleInit (line 181) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 192) | handleTouch(e) {
method updateChart (line 196) | updateChart() {
method onUnload (line 284) | onUnload() {
FILE: packages/examples-alipay/pages/scene-case/mind-map/index.js
method onLoad (line 23) | onLoad() {
method handleInit (line 332) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 343) | handleTouch(e) {
method updateChart (line 347) | updateChart() {
method onUnload (line 397) | onUnload() {
FILE: packages/examples-alipay/pages/scene-case/sankey/index.js
method onLoad (line 24) | onLoad() {
method handleInit (line 100) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 111) | handleTouch(e) {
method updateChart (line 115) | updateChart() {
method onUnload (line 148) | onUnload() {
FILE: packages/examples-alipay/pages/search/search.js
method onLoad (line 27) | onLoad() {
method clear (line 37) | clear() {
method onInput (line 50) | onInput(keyword) {
method onClear (line 85) | onClear() {
method onCancel (line 90) | onCancel() {
method onItemTap (line 98) | onItemTap({ name }) {
method onListItemTap (line 105) | onListItemTap(e) {
method addToHistory (line 111) | addToHistory(keyword) {
FILE: packages/examples-alipay/pages/tree-graph/basic-dendrogram/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 46) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 57) | handleTouch(e) {
method updateChart (line 61) | updateChart() {
method onUnload (line 136) | onUnload() {
FILE: packages/examples-alipay/pages/tree-graph/compact-box-left-align/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 46) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 57) | handleTouch(e) {
method updateChart (line 61) | updateChart() {
method onUnload (line 166) | onUnload() {
FILE: packages/examples-alipay/pages/tree-graph/compact-box/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 46) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 57) | handleTouch(e) {
method updateChart (line 61) | updateChart() {
method onUnload (line 134) | onUnload() {
FILE: packages/examples-alipay/pages/tree-graph/custom-edge-tree/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 46) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 57) | handleTouch(e) {
method updateChart (line 61) | updateChart() {
method onUnload (line 335) | onUnload() {
FILE: packages/examples-alipay/pages/tree-graph/custom-side-mind-map/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 46) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 57) | handleTouch(e) {
method updateChart (line 61) | updateChart() {
method onUnload (line 144) | onUnload() {
FILE: packages/examples-alipay/pages/tree-graph/custom-tree/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 111) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 122) | handleTouch(e) {
method updateChart (line 126) | updateChart() {
method onUnload (line 198) | onUnload() {
FILE: packages/examples-alipay/pages/tree-graph/file-system/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 46) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 57) | handleTouch(e) {
method updateChart (line 61) | updateChart() {
method onUnload (line 236) | onUnload() {
FILE: packages/examples-alipay/pages/tree-graph/intend-align-top/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 128) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 139) | handleTouch(e) {
method updateChart (line 143) | updateChart() {
method onUnload (line 194) | onUnload() {
FILE: packages/examples-alipay/pages/tree-graph/intended/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 46) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 57) | handleTouch(e) {
method updateChart (line 61) | updateChart() {
method onUnload (line 126) | onUnload() {
FILE: packages/examples-alipay/pages/tree-graph/left-mind-map/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 46) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 57) | handleTouch(e) {
method updateChart (line 61) | updateChart() {
method onUnload (line 141) | onUnload() {
FILE: packages/examples-alipay/pages/tree-graph/mind-map/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 46) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 57) | handleTouch(e) {
method updateChart (line 61) | updateChart() {
method onUnload (line 141) | onUnload() {
FILE: packages/examples-alipay/pages/tree-graph/radial-compact-box/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 46) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 57) | handleTouch(e) {
method updateChart (line 61) | updateChart() {
method onUnload (line 124) | onUnload() {
FILE: packages/examples-alipay/pages/tree-graph/radial-dendrogram/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 46) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 57) | handleTouch(e) {
method updateChart (line 61) | updateChart() {
method onUnload (line 111) | onUnload() {
FILE: packages/examples-alipay/pages/tree-graph/right-mind-map/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 46) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 57) | handleTouch(e) {
method updateChart (line 61) | updateChart() {
method onUnload (line 141) | onUnload() {
FILE: packages/examples-alipay/pages/tree-graph/tb-compact-box/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 46) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 57) | handleTouch(e) {
method updateChart (line 61) | updateChart() {
method onUnload (line 144) | onUnload() {
FILE: packages/examples-alipay/pages/tree-graph/tb-dendrogram/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 46) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 57) | handleTouch(e) {
method updateChart (line 61) | updateChart() {
method onUnload (line 131) | onUnload() {
FILE: packages/examples-alipay/pages/tree-graph/tree-edge-label/index.js
method onLoad (line 25) | onLoad() {
method handleInit (line 46) | handleInit(ctx, rect, canvas, renderer) {
method handleTouch (line 57) | handleTouch(e) {
method updateChart (line 61) | updateChart() {
method onUnload (line 148) | onUnload() {
FILE: packages/examples-uniapp/f6/extends/graph/treeGraph.js
function r (line 12) | function r(e) {
function d (line 440) | function d(t) {
function g (line 490) | function g(t) {
function D (line 642) | function D(t, n) {
function z (line 670) | function z(t) {
function V (line 673) | function V(t) {
function X (line 712) | function X(t, n) {
function ft (line 795) | function ft(t, n, r) {
function Ut (line 923) | function Ut(t) {
function Wt (line 934) | function Wt(t) {
function Gt (line 943) | function Gt(t, n) {
function Yt (line 950) | function Yt(t, n, r, e) {
function Xt (line 960) | function Xt(t) {
function Zt (line 1016) | function Zt(t, n, r, e) {
function r (line 1041) | function r() {}
function xn (line 1204) | function xn(t) {
function t (line 1243) | function t() {
function i (line 1319) | function i(t, n) {
function o (line 1345) | function o(t, n) {
function a (line 1360) | function a(t, n, r, e) {
function c (line 1390) | function c(t, n) {
function f (line 1480) | function f() {
function s (line 1490) | function s(t, n, r) {
function n (line 1512) | function n(n) {
function o (line 1834) | function o(t) {
function r (line 1853) | function r(e) {
function t (line 1983) | function t(t, n) {
function e (line 2034) | function e(t, n) {
function u (line 2119) | function u(t, n) {
function e (line 2457) | function e() {
function u (line 3564) | function u(t, n, r, o) {
function r (line 3596) | function r() {}
function t (line 3813) | function t() {
function r (line 3842) | function r(t, n, r, e) {
function e (line 3862) | function e(t, n) {
function u (line 3894) | function u(t) {
function o (line 3902) | function o(t, n, r) {
function a (line 3938) | function a(t, n, r, e) {
function c (line 3951) | function c(t) {
function f (line 3954) | function f(t) {
function s (line 3957) | function s(t) {
function l (line 3960) | function l(t, n, r) {
function e (line 4029) | function e() {
function i (line 4053) | function i(t, n) {
function e (line 4138) | function e() {
function e (line 4201) | function e() {
FILE: packages/examples-uniapp/f6/extends/layout/circularLayout.js
function r (line 12) | function r(n) {
function n (line 224) | function n(t) {
function r (line 306) | function r() {
function s (line 319) | function s(t, e) {
function e (line 325) | function e(e) {
function t (line 564) | function t() {
FILE: packages/examples-uniapp/f6/extends/layout/comboForceLayout.js
function o (line 12) | function o(r) {
function r (line 224) | function r(e) {
function o (line 306) | function o() {
function t (line 320) | function t(t) {
function e (line 990) | function e() {
FILE: packages/examples-uniapp/f6/extends/layout/concentricLayout.js
function n (line 12) | function n(r) {
function r (line 224) | function r(e) {
function n (line 314) | function n() {
function t (line 327) | function t(t) {
function e (line 501) | function e() {
FILE: packages/examples-uniapp/f6/extends/layout/dagreLayout.js
function e (line 12) | function e(r) {
function t (line 112) | function t() {
function r (line 310) | function r(t) {
function i (line 385) | function i(t, n, e, o) {
function u (line 392) | function u(t) {
function e (line 572) | function e(t) {
function r (line 601) | function r(t) {
function e (line 626) | function e(t) {
function r (line 655) | function r(t) {
function r (line 744) | function r(t) {
function r (line 809) | function r(t) {
function f (line 928) | function f(t) {
function a (line 945) | function a(t) {
function e (line 1001) | function e(t) {
function r (line 1085) | function r(t) {
function e (line 1146) | function e(t) {
function r (line 1176) | function r(t) {
function i (line 1193) | function i(t) {
function u (line 1212) | function u(t, n) {
function c (line 1215) | function c(t, n) {
function a (line 1218) | function a(t, n, e, r) {
function f (line 1227) | function f(t, n, e, r) {
function s (line 1237) | function s(t, n) {
function a (line 1568) | function a(t) {
function r (line 1602) | function r(t) {
function r (line 1703) | function r(t) {
function e (line 1876) | function e(t) {
function r (line 1960) | function r(t) {
function t (line 2070) | function t() {}
function u (line 2165) | function u(t) {
function o (line 2377) | function o() {
function o (line 2492) | function o(t) {
function i (line 2511) | function i() {}
function u (line 2586) | function u(t, n) {
function c (line 2600) | function c(t, n) {
function a (line 2605) | function a(t, n, e) {
function e (line 2651) | function e() {
function n (line 2670) | function n(n) {
function f (line 2795) | function f(t, n, e) {
function a (line 3043) | function a(t) {
function e (line 3109) | function e(t) {
function o (line 3679) | function o(t, n) {
function i (line 4035) | function i(t) {
function u (line 4047) | function u(t) {
function i (line 4107) | function i(o) {
function f (line 4223) | function f(t) {
function f (line 4494) | function f(t) {
function k (line 4597) | function k(t, n) {
function S (line 4600) | function S(t) {
function i (line 5151) | function i(u) {
function c (line 5241) | function c(t, n, e, o, i) {
function a (line 5259) | function a(t, n, e) {
function e (line 5268) | function e() {
function r (line 5272) | function r(t) {
function o (line 5278) | function o(t, n) {
function c (line 5386) | function c(t) {
function s (line 5399) | function s(t) {
function p (line 5405) | function p(t, n) {
function d (line 5415) | function d(t, n, e) {
function h (line 5440) | function h(t, n) {
function l (line 5443) | function l(t, n, e, o, i) {
function v (line 5457) | function v(t) {
function y (line 5462) | function y(t, n, e) {
function g (line 5478) | function g(t, n, e, o) {
function b (line 5501) | function b(t, n, e) {
function o (line 5518) | function o(i) {
function i (line 5650) | function i(t, n, e, r, i, u) {
function o (line 5672) | function o(t) {
function i (line 5680) | function i(t) {
function u (line 5684) | function u(t) {
function c (line 5687) | function c(t) {
function p (line 5732) | function p(t, n, e) {
function d (line 5737) | function d(t, n) {
function h (line 5748) | function h(t, n) {
function o (line 5806) | function o(t, n, e) {
function e (line 5962) | function e(t) {
function o (line 5983) | function o(n) {
function i (line 6013) | function i(t, n, e) {
function u (line 6144) | function u(t, n) {
function c (line 6180) | function c(t, n) {
function a (line 6216) | function a(t, n, e) {
function f (line 6224) | function f(t, n, e) {
function s (line 6231) | function s(t, n, e, o) {
function p (line 6269) | function p(t, n, e, i, u) {
function d (line 6349) | function d(t, n) {
function h (line 6365) | function h(t, n) {
function l (line 6384) | function l(t, n) {
FILE: packages/examples-uniapp/f6/extends/layout/forceAtlas2Layout.js
function r (line 12) | function r(i) {
function i (line 224) | function i(t) {
function r (line 314) | function r() {
function e (line 336) | function e(e) {
function t (line 695) | function t(t) {
function t (line 746) | function t(t) {
function t (line 803) | function t(t) {
function t (line 868) | function t() {
FILE: packages/examples-uniapp/f6/extends/layout/forceLayout.js
function e (line 12) | function e(r) {
function r (line 224) | function r(t) {
function o (line 312) | function o() {
function o (line 340) | function o(t, n, e, r) {
function u (line 386) | function u(t) {
function c (line 389) | function c(t) {
function f (line 392) | function f(t, n, e) {
function a (line 396) | function a(t, n, e, r, o, i) {
function l (line 405) | function l(t) {
function y (line 732) | function y(t) {
function p (line 735) | function p(t) {
function u (line 744) | function u() {
function c (line 773) | function c(t) {
function a (line 778) | function a() {
function g (line 806) | function g(t) {
function _ (line 821) | function _(t) {
function x (line 824) | function x(t, n) {
function s (line 842) | function s(r) {
function y (line 856) | function y() {
function p (line 881) | function p() {
function v (line 885) | function v() {
function m (line 917) | function m() {
function S (line 925) | function S(t) {
function N (line 928) | function N(t, n) {
function O (line 943) | function O(t, n) {
function k (line 947) | function k(t, n, e) {
function j (line 995) | function j(t) {
function q (line 1033) | function q() {
function B (line 1036) | function B() {
function Y (line 1039) | function Y() {
function R (line 1042) | function R(t, n, e) {
function G (line 1046) | function G() {
function I (line 1073) | function I() {
function W (line 1078) | function W(t) {
function K (line 1104) | function K(t) {
function H (line 1107) | function H(t) {
function h (line 1127) | function h() {
function d (line 1130) | function d(e) {
function y (line 1153) | function y() {
function p (line 1168) | function p(n) {
function l (line 1237) | function l(e) {
function s (line 1243) | function s() {
function y (line 1252) | function y(t) {
function p (line 1274) | function p(t, i, f, l) {
function c (line 1329) | function c(t) {
function f (line 1339) | function f() {
function i (line 1379) | function i(t) {
function u (line 1383) | function u() {
function i (line 1414) | function i(t) {
function u (line 1418) | function u() {
function e (line 1510) | function e() {
function n (line 1571) | function n(n) {
function p (line 1833) | function p() {
function t (line 1885) | function t(t) {
function x (line 1909) | function x(t) {
function b (line 1916) | function b() {
function w (line 2015) | function w() {
function m (line 2024) | function m(t) {
function t (line 2111) | function t() {
FILE: packages/examples-uniapp/f6/extends/layout/fruchtermanLayout.js
function n (line 12) | function n(r) {
function r (line 224) | function r(t) {
function n (line 314) | function n() {
function e (line 328) | function e(e) {
function t (line 582) | function t() {
FILE: packages/examples-uniapp/f6/extends/layout/gForceLayout.js
function n (line 12) | function n(r) {
function r (line 224) | function r(t) {
function n (line 314) | function n() {
function e (line 339) | function e(e) {
function t (line 631) | function t() {
FILE: packages/examples-uniapp/f6/extends/layout/gridLayout.js
function o (line 12) | function o(r) {
function r (line 224) | function r(e) {
function o (line 314) | function o() {
function t (line 327) | function t(t) {
function e (line 547) | function e() {
FILE: packages/examples-uniapp/f6/extends/layout/mdsLayout.js
function e (line 12) | function e(o) {
function o (line 224) | function o(t) {
function e (line 314) | function e() {
function r (line 328) | function r(r) {
function t (line 419) | function t() {
function n (line 565) | function n(t) {
function i (line 568) | function i(t) {
function s (line 588) | function s(t) {
function u (line 608) | function u(t) {
function c (line 637) | function c(t) {
function h (line 657) | function h(t, r, e, o) {
function l (line 678) | function l(t, r) {
function p (line 688) | function p(t, r, e) {
function y (line 692) | function y(t, r, e) {
function v (line 696) | function v(t, r) {
function m (line 703) | function m(t, r) {
function g (line 710) | function g(t, r) {
function w (line 716) | function w(t, r) {
function b (line 722) | function b(t, r, e, o, n) {
function d (line 743) | function d(t) {
function M (line 757) | function M(t, r) {
function x (line 761) | function x(t) {
function k (line 765) | function k(t, r, e) {
function S (line 775) | function S(t, r, e) {
function O (line 785) | function O(t, r, e) {
function E (line 794) | function E(t, r) {
function j (line 798) | function j(t, r) {
function R (line 802) | function R(t, r) {
function P (line 806) | function P(t) {
function _ (line 814) | function _(t, r) {
function T (line 818) | function T(t) {
function C (line 826) | function C(t, r) {
function N (line 830) | function N(t) {
function D (line 835) | function D(t, r) {
function I (line 839) | function I(t, r) {
function V (line 846) | function V(t) {
function q (line 872) | function q(t, r) {
function A (line 886) | function A(t) {
function F (line 893) | function F(t) {
function L (line 908) | function L(t, r) {
function B (line 912) | function B(t, r) {
function z (line 921) | function z(t, r, e) {
function t (line 930) | function t() {
function u (line 1646) | function u(r, e, o) {
function W (line 2360) | function W(t, r) {
function e (line 2390) | function e(t, o) {
function H (line 2494) | function H(t) {
function K (line 2509) | function K(t, r) {
function X (line 2518) | function X(t, r) {
function G (line 2525) | function G(t) {
function Z (line 2551) | function Z(t, r) {
function $ (line 2565) | function $(t) {
function i (line 3150) | function i(t, r, e) {
function rt (line 3171) | function rt(t) {
function et (line 3186) | function et(t, r) {
function ot (line 3195) | function ot(t, r) {
function nt (line 3202) | function nt(t) {
function it (line 3228) | function it(t, r) {
function st (line 3242) | function st(t) {
function i (line 3265) | function i(t, r) {
function at (line 3298) | function at(t) {
function ft (line 3313) | function ft(t, r) {
function ct (line 3322) | function ct(t, r) {
function ht (line 3329) | function ht(t) {
function lt (line 3355) | function lt(t, r) {
function pt (line 3369) | function pt(t) {
function i (line 3392) | function i(t, r) {
function vt (line 3425) | function vt(t) {
function mt (line 3440) | function mt(t, r) {
function gt (line 3449) | function gt(t, r) {
function wt (line 3456) | function wt(t) {
function bt (line 3482) | function bt(t, r) {
function dt (line 3496) | function dt(t) {
function i (line 3519) | function i(t) {
function xt (line 3549) | function xt(t) {
function kt (line 3564) | function kt(t, r) {
function St (line 3573) | function St(t, r) {
function Ot (line 3580) | function Ot(t) {
function Et (line 3606) | function Et(t, r) {
function jt (line 3620) | function jt(t) {
function i (line 3643) | function i(t) {
function Pt (line 3673) | function Pt(t) {
function _t (line 3688) | function _t(t, r) {
function Tt (line 3697) | function Tt(t, r) {
function Ct (line 3704) | function Ct(t) {
function Nt (line 3730) | function Nt(t, r) {
function Dt (line 3744) | function Dt(t) {
function i (line 3767) | function i(t, r) {
function Vt (line 3800) | function Vt(t) {
function qt (line 3815) | function qt(t, r) {
function At (line 3824) | function At(t, r) {
function Ft (line 3831) | function Ft(t) {
function Lt (line 3857) | function Lt(t, r) {
function Bt (line 3871) | function Bt(t) {
function i (line 3894) | function i(t, r) {
function Ut (line 3927) | function Ut(t) {
function Wt (line 3942) | function Wt(t, r) {
function Qt (line 3951) | function Qt(t, r) {
function Jt (line 3958) | function Jt(t) {
function Yt (line 3984) | function Yt(t, r) {
function Ht (line 3998) | function Ht(t) {
function i (line 4021) | function i(t, r, e) {
function Xt (line 4062) | function Xt(t) {
function Gt (line 4077) | function Gt(t, r) {
function Zt (line 4086) | function Zt(t, r) {
function $t (line 4093) | function $t(t) {
function tr (line 4119) | function tr(t, r) {
function rr (line 4133) | function rr(t) {
function i (line 4156) | function i(t, r, e, o, s) {
function or (line 4193) | function or(t) {
function nr (line 4208) | function nr(t, r) {
function ir (line 4217) | function ir(t, r) {
function sr (line 4224) | function sr(t) {
function ur (line 4250) | function ur(t, r) {
function ar (line 4264) | function ar(t) {
function i (line 4287) | function i(t) {
function cr (line 4317) | function cr(t) {
function hr (line 4332) | function hr(t, r) {
function lr (line 4336) | function lr(t, r) {
function pr (line 4345) | function pr(t, r) {
function yr (line 4352) | function yr(t) {
function vr (line 4378) | function vr(t, r) {
function mr (line 4392) | function mr(t) {
function i (line 4415) | function i(t) {
function wr (line 4464) | function wr(t) {
function br (line 4479) | function br(t, r) {
function dr (line 4488) | function dr(t, r) {
function Mr (line 4495) | function Mr(t) {
function xr (line 4521) | function xr(t, r) {
function kr (line 4535) | function kr(t) {
function i (line 4558) | function i(t) {
function Or (line 4592) | function Or(t, r) {
function Er (line 4596) | function Er(t, r) {
function t (line 4606) | function t(r) {
function Rr (line 4746) | function Rr(t, r) {
function Pr (line 4754) | function Pr(t, r) {
function t (line 4764) | function t(r) {
function Tr (line 4887) | function Tr(t, r) {
function Cr (line 4891) | function Cr(t, r) {
function t (line 4901) | function t(r) {
function Dr (line 5348) | function Dr(t) {
function Ir (line 5355) | function Ir(t, r) {
function Vr (line 5367) | function Vr(t) {
function qr (line 5388) | function qr(t, r) {
function Ar (line 5392) | function Ar(t, r, e) {
function Fr (line 5406) | function Fr(t) {
function Lr (line 5431) | function Lr(t) {
function Br (line 5449) | function Br(t) {
function zr (line 5464) | function zr(t) {
function Ur (line 5489) | function Ur(t) {
function Wr (line 5504) | function Wr(t) {
function Qr (line 5539) | function Qr(t, r) {
function Jr (line 5543) | function Jr(t, r) {
function t (line 5553) | function t(r) {
function Hr (line 5629) | function Hr(t, r, e, o) {
function Kr (line 5686) | function Kr(t, r, e, o) {
function Xr (line 5760) | function Xr(t, r, e, o) {
function Gr (line 5807) | function Gr(t, r, e, o, n) {
function Zr (line 6130) | function Zr(t, r, e, o) {
function $r (line 6136) | function $r(t, r) {
function t (line 6146) | function t(r) {
function re (line 6234) | function re(t, r) {
function ee (line 6243) | function ee(t, r, e) {
function oe (line 6251) | function oe(t, r) {
FILE: packages/examples-uniapp/f6/extends/layout/radialLayout.js
function e (line 12) | function e(o) {
function o (line 224) | function o(t) {
function e (line 347) | function e() {
function c (line 367) | function c(t, r) {
function r (line 373) | function r(r) {
function t (line 673) | function t(t) {
function t (line 712) | function t(t) {
function t (line 823) | function t() {
function n (line 969) | function n(t) {
function i (line 972) | function i(t) {
function s (line 992) | function s(t) {
function u (line 1012) | function u(t) {
function c (line 1041) | function c(t) {
function h (line 1061) | function h(t, r, e, o) {
function l (line 1082) | function l(t, r) {
function p (line 1092) | function p(t, r, e) {
function y (line 1096) | function y(t, r, e) {
function v (line 1100) | function v(t, r) {
function m (line 1107) | function m(t, r) {
function g (line 1114) | function g(t, r) {
function w (line 1120) | function w(t, r) {
function d (line 1126) | function d(t, r, e, o, n) {
function b (line 1147) | function b(t) {
function M (line 1161) | function M(t, r) {
function x (line 1165) | function x(t) {
function k (line 1169) | function k(t, r, e) {
function S (line 1179) | function S(t, r, e) {
function O (line 1189) | function O(t, r, e) {
function E (line 1198) | function E(t, r) {
function j (line 1202) | function j(t, r) {
function R (line 1206) | function R(t, r) {
function P (line 1210) | function P(t) {
function _ (line 1218) | function _(t, r) {
function T (line 1222) | function T(t) {
function I (line 1230) | function I(t, r) {
function N (line 1234) | function N(t) {
function C (line 1239) | function C(t, r) {
function D (line 1243) | function D(t, r) {
function V (line 1250) | function V(t) {
function q (line 1276) | function q(t, r) {
function A (line 1290) | function A(t) {
function F (line 1297) | function F(t) {
function B (line 1312) | function B(t, r) {
function z (line 1316) | function z(t, r) {
function L (line 1325) | function L(t, r, e) {
function t (line 1334) | function t() {
function u (line 2050) | function u(r, e, o) {
function W (line 2764) | function W(t, r) {
function e (line 2794) | function e(t, o) {
function Y (line 2898) | function Y(t) {
function K (line 2913) | function K(t, r) {
function X (line 2922) | function X(t, r) {
function G (line 2929) | function G(t) {
function Z (line 2955) | function Z(t, r) {
function $ (line 2969) | function $(t) {
function i (line 3554) | function i(t, r, e) {
function rt (line 3575) | function rt(t) {
function et (line 3590) | function et(t, r) {
function ot (line 3599) | function ot(t, r) {
function nt (line 3606) | function nt(t) {
function it (line 3632) | function it(t, r) {
function st (line 3646) | function st(t) {
function i (line 3669) | function i(t, r) {
function at (line 3702) | function at(t) {
function ft (line 3717) | function ft(t, r) {
function ct (line 3726) | function ct(t, r) {
function ht (line 3733) | function ht(t) {
function lt (line 3759) | function lt(t, r) {
function pt (line 3773) | function pt(t) {
function i (line 3796) | function i(t, r) {
function vt (line 3829) | function vt(t) {
function mt (line 3844) | function mt(t, r) {
function gt (line 3853) | function gt(t, r) {
function wt (line 3860) | function wt(t) {
function dt (line 3886) | function dt(t, r) {
function bt (line 3900) | function bt(t) {
function i (line 3923) | function i(t) {
function xt (line 3953) | function xt(t) {
function kt (line 3968) | function kt(t, r) {
function St (line 3977) | function St(t, r) {
function Ot (line 3984) | function Ot(t) {
function Et (line 4010) | function Et(t, r) {
function jt (line 4024) | function jt(t) {
function i (line 4047) | function i(t) {
function Pt (line 4077) | function Pt(t) {
function _t (line 4092) | function _t(t, r) {
function Tt (line 4101) | function Tt(t, r) {
function It (line 4108) | function It(t) {
function Nt (line 4134) | function Nt(t, r) {
function Ct (line 4148) | function Ct(t) {
function i (line 4171) | function i(t, r) {
function Vt (line 4204) | function Vt(t) {
function qt (line 4219) | function qt(t, r) {
function At (line 4228) | function At(t, r) {
function Ft (line 4235) | function Ft(t) {
function Bt (line 4261) | function Bt(t, r) {
function zt (line 4275) | function zt(t) {
function i (line 4298) | function i(t, r) {
function Ut (line 4331) | function Ut(t) {
function Wt (line 4346) | function Wt(t, r) {
function Qt (line 4355) | function Qt(t, r) {
function Jt (line 4362) | function Jt(t) {
function Ht (line 4388) | function Ht(t, r) {
function Yt (line 4402) | function Yt(t) {
function i (line 4425) | function i(t, r, e) {
function Xt (line 4466) | function Xt(t) {
function Gt (line 4481) | function Gt(t, r) {
function Zt (line 4490) | function Zt(t, r) {
function $t (line 4497) | function $t(t) {
function tr (line 4523) | function tr(t, r) {
function rr (line 4537) | function rr(t) {
function i (line 4560) | function i(t, r, e, o, s) {
function or (line 4597) | function or(t) {
function nr (line 4612) | function nr(t, r) {
function ir (line 4621) | function ir(t, r) {
function sr (line 4628) | function sr(t) {
function ur (line 4654) | function ur(t, r) {
function ar (line 4668) | function ar(t) {
function i (line 4691) | function i(t) {
function cr (line 4721) | function cr(t) {
function hr (line 4736) | function hr(t, r) {
function lr (line 4740) | function lr(t, r) {
function pr (line 4749) | function pr(t, r) {
function yr (line 4756) | function yr(t) {
function vr (line 4782) | function vr(t, r) {
function mr (line 4796) | function mr(t) {
function i (line 4819) | function i(t) {
function wr (line 4868) | function wr(t) {
function dr (line 4883) | function dr(t, r) {
function br (line 4892) | function br(t, r) {
function Mr (line 4899) | function Mr(t) {
function xr (line 4925) | function xr(t, r) {
function kr (line 4939) | function kr(t) {
function i (line 4962) | function i(t) {
function Or (line 4996) | function Or(t, r) {
function Er (line 5000) | function Er(t, r) {
function t (line 5010) | function t(r) {
function Rr (line 5150) | function Rr(t, r) {
function Pr (line 5158) | function Pr(t, r) {
function t (line 5168) | function t(r) {
function Tr (line 5291) | function Tr(t, r) {
function Ir (line 5295) | function Ir(t, r) {
function t (line 5305) | function t(r) {
function Cr (line 5752) | function Cr(t) {
function Dr (line 5759) | function Dr(t, r) {
function Vr (line 5771) | function Vr(t) {
function qr (line 5792) | function qr(t, r) {
function Ar (line 5796) | function Ar(t, r, e) {
function Fr (line 5810) | function Fr(t) {
function Br (line 5835) | function Br(t) {
function zr (line 5853) | function zr(t) {
function Lr (line 5868) | function Lr(t) {
function Ur (line 5893) | function Ur(t) {
function Wr (line 5908) | function Wr(t) {
function Qr (line 5943) | function Qr(t, r) {
function Jr (line 5947) | function Jr(t, r) {
function t (line 5957) | function t(r) {
function Yr (line 6033) | function Yr(t, r, e, o) {
function Kr (line 6090) | function Kr(t, r, e, o) {
function Xr (line 6164) | function Xr(t, r, e, o) {
function Gr (line 6211) | function Gr(t, r, e, o, n) {
function Zr (line 6534) | function Zr(t, r, e, o) {
function $r (line 6540) | function $r(t, r) {
function t (line 6550) | function t(r) {
function re (line 6638) | function re(t, r) {
function ee (line 6647) | function ee(t, r, e) {
function oe (line 6655) | function oe(t, r) {
FILE: packages/examples-uniapp/f6/extends/layout/randomLayout.js
function o (line 12) | function o(n) {
function o (line 95) | function o() {
function e (line 107) | function e(e) {
function t (line 157) | function t() {
FILE: packages/examples-uniapp/f6/index.js
function n (line 12) | function n(r) {
function f (line 440) | function f(t) {
function y (line 490) | function y(t) {
function R (line 642) | function R(t, e) {
function X (line 670) | function X(t) {
function z (line 673) | function z(t) {
function Z (line 712) | function Z(t, e) {
function ut (line 795) | function ut(t, e, n) {
function qt (line 923) | function qt(t) {
function Vt (line 934) | function Vt(t) {
function Gt (line 943) | function Gt(t, e) {
function Ht (line 950) | function Ht(t, e, n, r) {
function Zt (line 960) | function Zt(t) {
function Jt (line 1016) | function Jt(t, e, n, r) {
function n (line 1041) | function n() {}
function we (line 1204) | function we(t) {
function t (line 1243) | function t() {
function i (line 1319) | function i(t, e) {
function a (line 1345) | function a(t, e) {
function s (line 1360) | function s(t, e, n, r) {
function c (line 1390) | function c(t, e) {
function u (line 1480) | function u() {
function h (line 1490) | function h(t, e, n) {
function h (line 1536) | function h(t, e) {
function f (line 2248) | function f(e) {
function d (line 2261) | function d(t) {
function p (line 2273) | function p(t) {
function o (line 2339) | function o() {
function a (line 2342) | function a() {
function s (line 2345) | function s(t) {
function f (line 2375) | function f() {
function d (line 2380) | function d() {
function p (line 2406) | function p(t, e) {
function g (line 2409) | function g() {}
function u (line 2738) | function u(t, e, n) {
function h (line 2741) | function h(t) {
function r (line 3085) | function r(t) {
function i (line 3100) | function i(t) {
function i (line 3309) | function i(t) {
function o (line 3336) | function o(t, e) {
function a (line 3341) | function a(t, e) {
function r (line 3519) | function r(t) {
function i (line 3534) | function i(t) {
function t (line 3869) | function t() {}
function D (line 4103) | function D(t, e, n) {
function o (line 4115) | function o(t) {
function t (line 4212) | function t(t, e, n, r) {
function t (line 5068) | function t(t) {
function e (line 5213) | function e(e, n) {
function t (line 5371) | function t(t) {
function Bt (line 5517) | function Bt(t) {
function Lt (line 5532) | function Lt(t) {
function Dt (line 5607) | function Dt(t, e) {
function _t (line 5673) | function _t(t) {
function Ft (line 5913) | function Ft(t) {
function t (line 5964) | function t() {}
function t (line 6014) | function t(t) {
function e (line 6420) | function e() {
function e (line 6572) | function e() {
function e (line 6717) | function e() {
function t (line 6884) | function t(t) {
function t (line 7325) | function t(t) {
function ce (line 7493) | function ce(t, e) {
function ue (line 7538) | function ue(t, e) {
function de (line 7641) | function de(t, e, n) {
function ge (line 7724) | function ge(t, e, n, r, i) {
function ye (line 7967) | function ye(t, e, n, r, i, o) {
function me (line 8051) | function me(t, e, n, r) {
function t (line 8112) | function t(t, e) {
function e (line 8321) | function e(e) {
function Se (line 9954) | function Se(t) {
function t (line 11718) | function t(t) {
function f (line 12244) | function f(t) {
function p (line 12293) | function p(t, e) {
function g (line 12296) | function g(t) {
function v (line 12379) | function v(t) {
function y (line 12382) | function y(t, e) {
function m (line 12385) | function m(t, e) {
function b (line 12388) | function b(t, e) {
function x (line 12391) | function x(t, e) {
function w (line 12434) | function w(t, e) {
function S (line 12437) | function S(t) {
function t (line 12680) | function t(t, e) {
function t (line 12691) | function t(t) {
function t (line 12787) | function t() {
function d (line 12952) | function d(t, e) {
function m (line 13023) | function m(t, e, n) {
function C (line 13343) | function C(t, e, n, r) {
function t (line 13526) | function t(t) {
function t (line 14261) | function t(t) {
function t (line 14293) | function t(t) {
function t (line 14492) | function t(t, e) {
function t (line 14508) | function t(t, e, n) {
function t (line 14564) | function t(t, e, n, r, i) {
function t (line 14588) | function t() {
function t (line 14655) | function t(t) {
function t (line 14685) | function t(t) {
function t (line 16009) | function t(t) {
function o (line 16120) | function o(t, e, n) {
function a (line 16124) | function a(t, e, n) {
function s (line 16128) | function s(t, e, n) {
function c (line 16132) | function c(t, e) {
function u (line 16160) | function u(t, e) {
function h (line 16163) | function h(t, e, n) {
function l (line 16168) | function l(t, e, n) {
function n (line 16201) | function n(t, e) {
function x (line 16253) | function x(t, e, n) {
function w (line 16261) | function w(t, e, n) {
function S (line 16264) | function S(t, e, n) {
function O (line 16272) | function O(t) {
function M (line 16287) | function M(t, e) {
function k (line 16290) | function k(t, e) {
function C (line 16294) | function C(t) {
function t (line 16306) | function t(e) {
function r (line 16393) | function r(n) {
function j (line 16447) | function j(t) {
function P (line 16462) | function P(t, e) {
function A (line 16466) | function A(t, e) {
function I (line 16473) | function I(t, e) {
function T (line 16487) | function T(t) {
function a (line 16538) | function a() {
function B (line 16583) | function B(t) {
function L (line 16598) | function L(t, e) {
function D (line 16602) | function D() {
function _ (line 16616) | function _(t, e) {
function R (line 16625) | function R(t, e) {
function F (line 16632) | function F(t, e) {
function Y (line 16646) | function Y(t) {
function a (line 16697) | function a() {
function z (line 16733) | function z(t) {
function W (line 16748) | function W(t, e) {
function q (line 16752) | function q() {
function V (line 16766) | function V(t, e) {
function G (line 16775) | function G(t, e) {
function H (line 16782) | function H(t, e) {
function U (line 16796) | function U(t) {
function a (line 16847) | function a() {
function K (line 16893) | function K(t) {
function $ (line 16904) | function $(t) {
function Q (line 16919) | function Q(t, e) {
function J (line 16923) | function J() {
function tt (line 16937) | function tt(t, e) {
function et (line 16946) | function et(t, e) {
function nt (line 16953) | function nt(t, e) {
function rt (line 16967) | function rt(t) {
function a (line 17018) | function a() {
function ot (line 17094) | function ot(t) {
function at (line 17109) | function at(t, e) {
function st (line 17113) | function st() {
function ct (line 17127) | function ct(t, e) {
function ut (line 17136) | function ut(t, e) {
function ht (line 17143) | function ht(t, e) {
function lt (line 17157) | function lt(t) {
function s (line 17213) | function s() {
function dt (line 17267) | function dt(t, e) {
function pt (line 17272) | function pt(t, e, n) {
function gt (line 17275) | function gt(t, e, n) {
function vt (line 17281) | function vt(t) {
function yt (line 17296) | function yt(t, e) {
function mt (line 17300) | function mt(t, e) {
function bt (line 17307) | function bt(t, e) {
function xt (line 17321) | function xt(t) {
function a (line 17378) | function a() {
function St (line 17481) | function St(t) {
function Ot (line 17496) | function Ot(t, e) {
function Mt (line 17500) | function Mt(t, e) {
function kt (line 17507) | function kt(t, e) {
function Ct (line 17521) | function Ct(t) {
function s (line 17580) | function s() {
function jt (line 17656) | function jt(t, e) {
function t (line 17666) | function t(e, n) {
function At (line 17761) | function At(t) {
function It (line 17768) | function It(t) {
function Tt (line 17783) | function Tt(t, e, n) {
function Nt (line 17789) | function Nt(t, e) {
function Bt (line 17800) | function Bt(t, e, n) {
function Lt (line 17803) | function Lt(t, e, n) {
function Dt (line 17895) | function Dt(t) {
function _t (line 17898) | function _t(t, e, n) {
function t (line 17904) | function t(e, n) {
function Ft (line 17958) | function Ft(t) {
function Yt (line 17961) | function Yt(t, e, n) {
function Xt (line 17976) | function Xt(t) {
function zt (line 17991) | function zt(t, e) {
function Wt (line 17995) | function Wt(t, e) {
function qt (line 18002) | function qt(t, e) {
function Vt (line 18016) | function Vt(t) {
function a (line 18068) | function a() {
function Zt (line 18111) | function Zt(t, e) {
function t (line 18129) | function t(e) {
function $t (line 18307) | function $t(t, e) {
function Jt (line 18333) | function Jt(t) {
function te (line 18348) | function te(t, e) {
function ee (line 18352) | function ee(t, e) {
function ne (line 18359) | function ne(t, e) {
function re (line 18373) | function re(t) {
function a (line 18448) | function a() {
function ue (line 18500) | function ue(t, e, n) {
function he (line 18505) | function he(t, e, n) {
function i (line 18834) | function i(t, e) {
method penalties (line 20964) | get penalties() {
function o (line 22641) | function o() {
function a (line 22657) | function a(t, e) {
function s (line 22671) | function s(t) {
function c (line 22686) | function c(t, e) {
function u (line 22700) | function u(t, e, n, r, o, a, s, c, u) {
function h (line 22715) | function h(t, e, n, r, i, o, a, s, c, u) {
function l (line 22729) | function l(t) {
function f (line 22743) | function f(t, e) {
function d (line 22766) | function d(t, e) {
function p (line 22794) | function p(t, e) {
function g (line 22817) | function g(t) {
function v (line 22829) | function v(t, e, n) {
function y (line 22861) | function y(t, e, n) {
function m (line 22886) | function m(t, e, n) {
function b (line 22911) | function b(t, e, n) {
function x (line 22927) | function x(t, e) {
function w (line 22941) | function w(t, e) {
function S (line 22957) | function S(t, e) {
function O (line 22971) | function O(t, e) {
function M (line 22985) | function M(t, e) {
function k (line 23015) | function k(t, e) {
function C (line 23059) | function C(t, e, n) {
function E (line 23073) | function E(t) {
function j (line 23096) | function j(t) {
function P (line 23099) | function P(t, e, n) {
function A (line 23113) | function A(t, e, n) {
function I (line 23127) | function I(t, e, n) {
function T (line 23141) | function T(t, e, n, r) {
function N (line 23155) | function N(t, e) {
function B (line 23168) | function B(t, e) {
function i (line 23343) | function i() {
function o (line 23347) | function o(t) {
function a (line 23351) | function a(t, e) {
function s (line 23355) | function s(t, e) {
function c (line 23358) | function c(t, e, n) {
function u (line 23361) | function u(t, e, n) {
function h (line 23364) | function h(t, e, n) {
function l (line 23367) | function l(t, e, n) {
function f (line 23370) | function f(t, e, n) {
function d (line 23373) | function d(t, e) {
function p (line 23376) | function p(t, e) {
function g (line 23379) | function g(t, e, n) {
function v (line 23382) | function v(t, e, n) {
function y (line 23385) | function y(t, e) {
function m (line 23388) | function m(t, e, n) {
function b (line 23391) | function b(t, e, n, r) {
function x (line 23394) | function x(t, e) {
function w (line 23399) | function w(t, e) {
function S (line 23404) | function S(t) {
function O (line 23409) | function O(t) {
function M (line 23414) | function M(t, e) {
function k (line 23417) | function k(t, e) {
function C (line 23420) | function C(t, e) {
function E (line 23431) | function E(t, e) {
function j (line 23434) | function j(t, e, n) {
function P (line 23438) | function P(t, e, n, r) {
function A (line 23443) | function A(t, e) {
function I (line 23448) | function I(t, e, n) {
function T (line 23453) | function T(t, e, n) {
function N (line 23462) | function N(t, e, n) {
function B (line 23471) | function B(t, e, n) {
function L (line 23480) | function L(t, e, n, r) {
function D (line 23487) | function D(t, e) {
function _ (line 23496) | function _(t) {
function R (line 23499) | function R(t) {
function F (line 23502) | function F(t, e) {
function Y (line 23505) | function Y(t, e) {
function s (line 23546) | function s(t) {
function c (line 23568) | function c(t, e) {
function r (line 23581) | function r(t) {
function i (line 23596) | function i(t) {
function l (line 23620) | function l(t, e) {
function f (line 23675) | function f(t) {
function d (line 23682) | function d(t, e, n) {
function p (line 23696) | function p(t) {
function g (line 23701) | function g(t) {
function v (line 23704) | function v(t, e) {
function n (line 23971) | function n() {
function n (line 23995) | function n(n) {
function n (line 24044) | function n() {
function e (line 24056) | function e(e) {
function t (line 24106) | function t() {
function A (line 25046) | function A(t, e) {
function B (line 25142) | function B(t, e, n) {
function D (line 25203) | function D(t, e, n) {
function _ (line 25221) | function _(t) {
function t (line 25316) | function t(t, e) {
function z (line 25352) | function z(t, e) {
function q (line 25357) | function q(t, e) {
function V (line 25368) | function V(t) {
function e (line 25372) | function e(e) {
function U (line 25396) | function U(t, e) {
function Z (line 25429) | function Z(t, e) {
function K (line 25439) | function K(t) {
function tt (line 25471) | function tt(t, e) {
function et (line 25477) | function et(t, e) {
function nt (line 25487) | function nt(t, e) {
function e (line 25506) | function e(e) {
function e (line 25898) | function e() {
function at (line 26191) | function at(t) {
function yt (line 26229) | function yt() {
function mt (line 26232) | function mt() {
function bt (line 26235) | function bt() {
function xt (line 26238) | function xt(t, e, n) {
function wt (line 26242) | function wt() {
function St (line 26269) | function St() {
function Ot (line 26274) | function Ot(t) {
function kt (line 26304) | function kt(t, e) {
function Ct (line 26309) | function Ct() {}
function Rt (line 26470) | function Rt() {
function Ft (line 26473) | function Ft() {
function Yt (line 26476) | function Yt(t) {
function Xt (line 26536) | function Xt(t) {
function zt (line 26539) | function zt(t, e, n, r) {
function Wt (line 26542) | function Wt(t) {
function qt (line 26548) | function qt(t, e, n, r) {
function Vt (line 26553) | function Vt(t, e, n, r) {
function Gt (line 26556) | function Gt() {
function Ht (line 26559) | function Ht() {
function Ut (line 26573) | function Ut(t) {
function Zt (line 26580) | function Zt(t, e, n, r) {
function Kt (line 26590) | function Kt(t) {
function $t (line 26616) | function $t(t, e, n, r) {
function Qt (line 26619) | function Qt(t, e, n) {
function Jt (line 26631) | function Jt(t, e, n, r, i) {
function ee (line 26758) | function ee(t, e) {
function ne (line 26763) | function ne(t) {
function re (line 26781) | function re(t, e) {
function r (line 26787) | function r(t, e) {
function oe (line 26804) | function oe(t) {
function se (line 26861) | function se(t) {
function ce (line 26864) | function ce(t, e) {
function le (line 26896) | function le(t) {
function ve (line 26964) | function ve(t) {
function me (line 27004) | function me(t) {
function be (line 27007) | function be(t) {
function xe (line 27010) | function xe(t) {
function we (line 27013) | function we(t) {
function Se (line 27016) | function Se(t) {
function Oe (line 27019) | function Oe(t) {
function Me (line 27022) | function Me(t) {
function n (line 27026) | function n(t) {
function n (line 27032) | function n(t) {
function n (line 27038) | function n(t) {
function Ae (line 27047) | function Ae(t) {
function Ie (line 27050) | function Ie(t) {
function Te (line 27053) | function Te(t) {
function Ne (line 27056) | function Ne(t) {
function Be (line 27059) | function Be(t) {
function Le (line 27062) | function Le(t) {
function De (line 27065) | function De(t) {
function _e (line 27068) | function _e(t) {
function Re (line 27071) | function Re(t) {
function Fe (line 27074) | function Fe(t) {
function Xe (line 27082) | function Xe(t) {
function ze (line 27085) | function ze(t) {
function We (line 27094) | function We(t) {
function n (line 27098) | function n(t) {
function n (line 27104) | function n(t) {
function n (line 27110) | function n(t) {
function i (line 27122) | function i(t) {
function i (line 27137) | function i(t) {
function i (line 27152) | function i(t) {
function Je (line 27171) | function Je(t, e, n) {
function t (line 27245) | function t(t) {
function nn (line 27322) | function nn(t, e, n) {
function rn (line 27329) | function rn(t, e, n) {
function t (line 27348) | function t(t) {
function e (line 27579) | function e(e) {
function e (line 27691) | function e() {
function e (line 27719) | function e(e) {
function fn (line 27823) | function fn(t, e) {
function dn (line 27826) | function dn(t) {
function yn (line 27841) | function yn(t, e) {
function mn (line 27851) | function mn(t, e) {
function xn (line 27861) | function xn(t, e, n) {
function wn (line 27874) | function wn(t, e) {
function Sn (line 27895) | function Sn(t) {
function Mn (line 27902) | function Mn(t, e) {
function i (line 28121) | function i(t) {
function o (line 28124) | function o(t) {
function a (line 28127) | function a(t, e, n, r) {
function s (line 28132) | function s(t, e) {
function c (line 28135) | function c(t, e) {
function u (line 28140) | function u(t, e, n, r) {
function h (line 28148) | function h(t) {
function d (line 28199) | function d(t, e, n, r, i, o) {
function p (line 28240) | function p(t, e, n, r) {
function g (line 28244) | function g(t, e, n) {
function v (line 28250) | function v(t, e, n, r) {
function y (line 28253) | function y(t, e, n, r, i, o, a) {
function b (line 28307) | function b(t, e, n, r, i) {
function x (line 28313) | function x(t, e, n, r, i) {
function w (line 28317) | function w(t, e, n, r) {
function S (line 28337) | function S(t, e, n, r, i, o, a, s, c) {
function O (line 28350) | function O(t, e, n, r, i, o, s, c, u) {
function k (line 28404) | function k(t, e) {
function E (line 28442) | function E(t, e, n, r, i, o) {
function j (line 28447) | function j(t, e, n, r, i, o) {
function P (line 28452) | function P(t, e, n) {
function A (line 28455) | function A(t, e, n) {
function T (line 28534) | function T(t) {
function N (line 28544) | function N(t) {
function B (line 28553) | function B(t, e) {
function L (line 28573) | function L(t, e) {
function D (line 28592) | function D(t, e, n) {
function i (line 28771) | function i() {
function o (line 28775) | function o(t) {
function a (line 28779) | function a(t) {
function s (line 28785) | function s(t, e, n) {
function c (line 28789) | function c(t, e) {
function u (line 28792) | function u(t, e, n, r) {
function h (line 28795) | function h(t, e, n) {
function l (line 28800) | function l(t, e, n) {
function f (line 28805) | function f(t, e, n) {
function d (line 28810) | function d(t, e, n) {
function p (line 28815) | function p(t, e) {
function g (line 28823) | function g(t, e) {
function v (line 28831) | function v(t, e, n) {
function y (line 28839) | function y(t, e, n) {
function m (line 28847) | function m(t, e) {
function b (line 28855) | function b(t, e, n) {
function x (line 28858) | function x(t, e, n, r) {
function w (line 28866) | function w(t, e) {
function S (line 28872) | function S(t, e) {
function O (line 28878) | function O(t) {
function M (line 28884) | function M(t, e) {
function k (line 28887) | function k(t, e) {
function C (line 28890) | function C(t, e) {
function E (line 28903) | function E(t, e) {
function j (line 28906) | function j(t, e, n) {
function P (line 28920) | function P(t, e, n, r) {
function A (line 28931) | function A(t, e, n, r, i, o) {
function I (line 28944) | function I(t, e, n, r, i, o) {
function T (line 28959) | function T(t, e) {
function N (line 28968) | function N(t, e, n) {
function B (line 28981) | function B(t, e, n) {
function L (line 28992) | function L(t, e, n) {
function D (line 29020) | function D(t, e, n, r) {
function _ (line 29036) | function _(t, e, n, r) {
function R (line 29052) | function R(t, e, n, r) {
function F (line 29068) | function F(t, e) {
function Y (line 29080) | function Y(t) {
function X (line 29083) | function X(t) {
function z (line 29086) | function z(t, e) {
function W (line 29089) | function W(t, e) {
function t (line 29135) | function t() {
function s (line 29234) | function s(t) {
function u (line 29250) | function u(t) {
function h (line 29259) | function h(t) {
function l (line 29274) | function l(t, e, n, r) {
function f (line 29279) | function f(t, e, n, r, i, o) {
function d (line 29282) | function d(t, e) {
function p (line 29290) | function p(t, e) {
function b (line 29297) | function b(t, e) {
function x (line 29304) | function x(t, e, n) {
function w (line 29400) | function w(t) {
function S (line 29403) | function S(t, e) {
function O (line 29406) | function O(t, e) {
function M (line 29409) | function M(t, e) {
function k (line 29452) | function k(t) {
function A (line 29471) | function A(t, e, n, r, i, o, a) {
function I (line 29497) | function I(t, e, n, r, o, a, s) {
function T (line 29524) | function T(t, e, n, r, i) {
function N (line 29528) | function N(t, e, n, r, i, o) {
function B (line 29535) | function B(t, e, n, r, i, o) {
function D (line 29547) | function D(t, e) {
function _ (line 29562) | function _(t, e, n) {
function R (line 29568) | function R(t, e, n) {
function F (line 29592) | function F(t, e) {
function Y (line 29598) | function Y(t, e) {
function X (line 29602) | function X(t, e, n, r) {
function z (line 29693) | function z(t, e) {
function W (line 29702) | function W(t) {
function e (line 29728) | function e() {
function e (line 29806) | function e() {
function e (line 29952) | function e() {
function H (line 29984) | function H(t, e, n, r) {
function e (line 29988) | function e() {
function Z (line 30040) | function Z(t) {
function e (line 30049) | function e() {
function J (line 30140) | function J(t, e, n, r, i, o, a) {
function e (line 30155) | function e() {
function e (line 30279) | function e() {
function it (line 30325) | function it(t) {
function ot (line 30328) | function ot(t, e, n) {
function at (line 30337) | function at(t, e, n) {
function ut (line 30353) | function ut(t, e, n, r, i, o, a, s) {
function ft (line 30455) | function ft(t, e, n) {
function e (line 30462) | function e() {
function pt (line 30673) | function pt(t, e, n, r, i) {
function e (line 30687) | function e() {
function e (line 30714) | function e() {
function e (line 30853) | function e() {
function e (line 30986) | function e() {
function bt (line 31086) | function bt(t, e, n) {
function xt (line 31100) | function xt(t, e, n) {
function Ot (line 31114) | function Ot(t, e, n) {
function Mt (line 31121) | function Mt(t, e, n) {
function t (line 31132) | function t(t) {
function t (line 31339) | function t() {}
function e (line 31439) | function e(e) {
function e (line 31745) | function e(e) {
function e (line 31863) | function e(e) {
function e (line 32118) | function e(e) {
function o (line 32630) | function o(t, e) {
function a (line 32650) | function a(t) {
function s (line 32653) | function s(t) {
function c (line 32656) | function c(t) {
function u (line 32659) | function u(t) {
function h (line 32662) | function h(t, e, n) {
function l (line 32686) | function l(t, e, n) {
function f (line 32699) | function f(t, e, n) {
function d (line 32723) | function d(t, e, n, r) {
function p (line 32736) | function p(t) {
function g (line 32739) | function g(t) {
function v (line 32742) | function v(t) {
function m (line 32895) | function m(t) {
function b (line 32910) | function b(t) {
function M (line 33061) | function M(t) {
function t (line 33065) | function t(e, n) {
function E (line 33427) | function E(t, e, n) {
function j (line 33443) | function j(t, e, n) {
function P (line 33453) | function P(t, e, n) {
function A (line 33460) | function A(t) {
function r (line 33667) | function r(t) {
function i (line 33682) | function i(t) {
function n (line 33724) | function n(t) {
function t (line 33757) | function t(t) {
function o (line 33848) | function o(t, e) {
FILE: packages/examples-uniapp/main.js
function createApp (line 15) | function createApp() {
FILE: packages/examples-wx/components/wx.js
function modifyEvent (line 84) | function modifyEvent(touchEvent = {}, pixelRatio) {
FILE: packages/examples-wx/miniprogram_npm/@antv/f6-plugin/f6Plugin.js
function n (line 12) | function n(r) {
function h (line 203) | function h(t) {
function f (line 231) | function f(t) {
function w (line 288) | function w(t) {
function O (line 291) | function O(t) {
function E (line 334) | function E(t, e, n) {
function F (line 370) | function F(t, e) {
function z (line 377) | function z(t, e, n, r) {
function X (line 380) | function X(t) {
function q (line 423) | function q(t, e, n, r) {
function rt (line 536) | function rt(t) {
function t (line 540) | function t() {
function i (line 613) | function i(t, e) {
function a (line 639) | function a(t, e) {
function s (line 654) | function s(t, e, n, r) {
function u (line 684) | function u(t, e) {
function c (line 774) | function c() {
function h (line 784) | function h(t, e, n) {
function s (line 1075) | function s() {
function u (line 1091) | function u(t, e) {
function c (line 1105) | function c(t) {
function h (line 1120) | function h(t, e) {
function l (line 1134) | function l(t, e, n, r, i, o, s, u, c) {
function d (line 1149) | function d(t, e, n, r, i, o, a, s, u, c) {
function f (line 1163) | function f(t) {
function p (line 1177) | function p(t, e) {
function g (line 1200) | function g(t, e) {
function y (line 1228) | function y(t, e) {
function v (line 1251) | function v(t) {
function m (line 1263) | function m(t, e, n) {
function b (line 1295) | function b(t, e, n) {
function x (line 1320) | function x(t, e, n) {
function w (line 1345) | function w(t, e, n) {
function O (line 1361) | function O(t, e) {
function M (line 1375) | function M(t, e) {
function S (line 1391) | function S(t, e) {
function C (line 1405) | function C(t, e) {
function j (line 1419) | function j(t, e) {
function k (line 1449) | function k(t, e) {
function E (line 1493) | function E(t, e, n) {
function N (line 1507) | function N(t) {
function T (line 1530) | function T(t) {
function P (line 1533) | function P(t, e, n) {
function I (line 1547) | function I(t, e, n) {
function B (line 1561) | function B(t, e, n) {
function A (line 1575) | function A(t, e, n, r) {
function L (line 1589) | function L(t, e) {
function D (line 1602) | function D(t, e) {
function F (line 1636) | function F() {
function z (line 1640) | function z(t) {
function X (line 1644) | function X(t) {
function W (line 1650) | function W(t, e, n) {
function G (line 1654) | function G(t, e) {
function q (line 1657) | function q(t, e, n, r) {
function H (line 1660) | function H(t, e, n) {
function V (line 1665) | function V(t, e, n) {
function U (line 1670) | function U(t, e, n) {
function Z (line 1675) | function Z(t, e, n) {
function K (line 1680) | function K(t, e) {
function Q (line 1688) | function Q(t, e) {
function $ (line 1696) | function $(t, e, n) {
function J (line 1704) | function J(t, e, n) {
function tt (line 1712) | function tt(t, e) {
function et (line 1720) | function et(t, e, n) {
function nt (line 1723) | function nt(t, e, n, r) {
function rt (line 1731) | function rt(t, e) {
function it (line 1737) | function it(t, e) {
function ot (line 1743) | function ot(t) {
function at (line 1749) | function at(t, e) {
function st (line 1752) | function st(t, e) {
function ut (line 1755) | function ut(t, e) {
function ct (line 1768) | function ct(t, e) {
function ht (line 1771) | function ht(t, e, n) {
function lt (line 1785) | function lt(t, e, n, r) {
function dt (line 1796) | function dt(t, e, n, r, i, o) {
function ft (line 1809) | function ft(t, e, n, r, i, o) {
function pt (line 1824) | function pt(t, e) {
function gt (line 1833) | function gt(t, e, n) {
function yt (line 1846) | function yt(t, e, n) {
function vt (line 1857) | function vt(t, e, n) {
function mt (line 1885) | function mt(t, e, n, r) {
function bt (line 1901) | function bt(t, e, n, r) {
function xt (line 1917) | function xt(t, e, n, r) {
function wt (line 1933) | function wt(t, e) {
function Ot (line 1945) | function Ot(t) {
function Mt (line 1948) | function Mt(t) {
function St (line 1951) | function St(t, e) {
function Ct (line 1954) | function Ct(t, e) {
function Lt (line 1996) | function Lt(t, e, n) {
function Dt (line 2000) | function Dt(t, e, n) {
function _t (line 2004) | function _t(t, e, n) {
function Rt (line 2008) | function Rt(t, e) {
function Yt (line 2036) | function Yt(t, e) {
function Ft (line 2039) | function Ft(t, e, n) {
function zt (line 2044) | function zt(t, e, n) {
function i (line 2068) | function i(t, e) {
function a (line 2094) | function a(t, e) {
function s (line 2105) | function s(t) {
function r (line 2133) | function r(t, e) {
function i (line 2166) | function i(t, e) {
function o (line 2176) | function o(t) {
function c (line 2300) | function c(t, e, n) {
function l (line 2361) | function l(t, e, n) {
function d (line 2379) | function d(t) {
function s (line 2507) | function s(t, e) {
function l (line 2553) | function l(t) {
function d (line 2601) | function d(t) {
function f (line 2604) | function f(t, e) {
function p (line 2607) | function p(t, e) {
function g (line 2610) | function g(t, e) {
function y (line 2613) | function y(t, e) {
function v (line 2656) | function v(t, e) {
function m (line 2659) | function m(t) {
function o (line 2774) | function o(t, e, n) {
function a (line 2787) | function a(t, e) {
function s (line 2800) | function s(t) {
function i (line 2946) | function i() {
function o (line 2950) | function o(t) {
function a (line 2954) | function a(t, e) {
function s (line 2958) | function s(t, e) {
function u (line 2961) | function u(t, e, n) {
function c (line 2964) | function c(t, e, n) {
function h (line 2967) | function h(t, e, n) {
function l (line 2970) | function l(t, e, n) {
function d (line 2973) | function d(t, e, n) {
function f (line 2976) | function f(t, e) {
function p (line 2979) | function p(t, e) {
function g (line 2982) | function g(t, e, n) {
function y (line 2985) | function y(t, e, n) {
function v (line 2988) | function v(t, e) {
function m (line 2991) | function m(t, e, n) {
function b (line 2994) | function b(t, e, n, r) {
function x (line 2997) | function x(t, e) {
function w (line 3002) | function w(t, e) {
function O (line 3007) | function O(t) {
function M (line 3012) | function M(t) {
function S (line 3017) | function S(t, e) {
function C (line 3020) | function C(t, e) {
function j (line 3023) | function j(t, e) {
function k (line 3034) | function k(t, e) {
function E (line 3037) | function E(t, e, n) {
function N (line 3041) | function N(t, e, n, r) {
function T (line 3046) | function T(t, e) {
function P (line 3051) | function P(t, e, n) {
function I (line 3056) | function I(t, e, n) {
function B (line 3065) | function B(t, e, n) {
function A (line 3074) | function A(t, e, n) {
function L (line 3083) | function L(t, e, n, r) {
function D (line 3090) | function D(t, e) {
function _ (line 3099) | function _(t) {
function R (line 3102) | function R(t) {
function Y (line 3105) | function Y(t, e) {
function F (line 3108) | function F(t, e) {
function t (line 3149) | function t(t, e) {
function e (line 3191) | function e(e) {
function i (line 3222) | function i() {
function t (line 3247) | function t() {
function e (line 3311) | function e() {
function d (line 3617) | function d(t, e) {
function f (line 3623) | function f(t, e) {
function p (line 3633) | function p(t, e) {
function e (line 3652) | function e(e) {
function e (line 4051) | function e() {
function e (line 4082) | function e(e) {
function c (line 4302) | function c(t) {
function x (line 4340) | function x() {
function w (line 4343) | function w() {
function O (line 4346) | function O() {
function M (line 4349) | function M(t, e, n) {
function S (line 4353) | function S() {
function C (line 4380) | function C() {
function j (line 4385) | function j(t) {
function k (line 4393) | function k(t) {
function E (line 4396) | function E(t) {
function N (line 4399) | function N(t) {
function T (line 4402) | function T(t) {
function P (line 4405) | function P(t) {
function I (line 4408) | function I(t) {
function B (line 4411) | function B(t) {
function n (line 4432) | function n(t) {
function n (line 4438) | function n(t) {
function n (line 4444) | function n(t) {
function Y (line 4453) | function Y(t) {
function F (line 4456) | function F(t) {
function z (line 4459) | function z(t) {
function X (line 4462) | function X(t) {
function W (line 4465) | function W(t) {
function G (line 4468) | function G(t) {
function q (line 4471) | function q(t) {
function H (line 4474) | function H(t) {
function V (line 4477) | function V(t) {
function U (line 4480) | function U(t) {
function K (line 4488) | function K(t) {
function Q (line 4491) | function Q(t) {
function $ (line 4500) | function $(t) {
function n (line 4504) | function n(t) {
function n (line 4510) | function n(t) {
function n (line 4516) | function n(t) {
function i (line 4528) | function i(t) {
function i (line 4543) | function i(t) {
function i (line 4558) | function i(t) {
function st (line 4578) | function st(t, e) {
function ut (line 4583) | function ut() {}
function xt (line 4744) | function xt() {
function wt (line 4747) | function wt() {
function Ot (line 4750) | function Ot(t) {
function Mt (line 4810) | function Mt(t) {
function St (line 4813) | function St(t, e, n, r) {
function Ct (line 4816) | function Ct(t) {
function jt (line 4822) | function jt(t, e, n, r) {
function kt (line 4827) | function kt(t, e, n, r) {
function Et (line 4830) | function Et() {
function Nt (line 4833) | function Nt() {
function Tt (line 4847) | function Tt(t) {
function Pt (line 4854) | function Pt(t, e, n, r) {
function It (line 4864) | function It(t) {
function Bt (line 4890) | function Bt(t, e, n, r) {
function At (line 4893) | function At(t, e, n) {
function Lt (line 4905) | function Lt(t, e, n, r, i) {
function _t (line 5032) | function _t(t, e) {
function Rt (line 5037) | function Rt(t) {
function Yt (line 5055) | function Yt(t, e) {
function r (line 5061) | function r(t, e) {
function zt (line 5078) | function zt(t) {
function Wt (line 5135) | function Wt(t) {
function Gt (line 5138) | function Gt(t, e) {
function Vt (line 5170) | function Vt(t) {
function $t (line 5238) | function $t(t) {
function ne (line 5280) | function ne(t, e, n) {
function t (line 5350) | function t(t) {
function ae (line 5428) | function ae(t, e, n) {
function se (line 5435) | function se(t, e, n) {
function t (line 5454) | function t(t) {
function e (line 5685) | function e(e) {
function o (line 5810) | function o(t, e) {
function u (line 5824) | function u(t) {
function c (line 5827) | function c(t) {
function h (line 5830) | function h(t, e, n, r) {
function l (line 5835) | function l(t, e) {
function d (line 5838) | function d(t, e) {
function f (line 5843) | function f(t, e, n, r) {
function p (line 5851) | function p(t) {
function g (line 5855) | function g(t, e, n, r) {
function y (line 5859) | function y(t, e, n) {
function m (line 5876) | function m(t, e, n, r, i) {
function b (line 5882) | function b(t, e, n, r) {
function w (line 5916) | function w(t, e, n, r, i, o) {
function O (line 5921) | function O(t, e, n, r, i, o) {
function S (line 5961) | function S(t, e) {
function C (line 5971) | function C(t, e) {
function N (line 5983) | function N(t, e) {
function a (line 6174) | function a(t) {
function i (line 6219) | function i(t) {
function o (line 6222) | function o(t) {
function a (line 6225) | function a(t, e) {
function s (line 6248) | function s(t, e) {
function u (line 6271) | function u(t, e) {
function c (line 6298) | function c(t, e) {
function h (line 6325) | function h(t, e) {
function l (line 6356) | function l(t, e) {
function d (line 6387) | function d(t, e) {
function f (line 6390) | function f(t, e) {
function p (line 6393) | function p(t, e) {
function g (line 6396) | function g(t, e) {
function y (line 6403) | function y(t, e) {
function v (line 6410) | function v(t) {
function m (line 6413) | function m(t) {
function b (line 6416) | function b(t, e) {
function x (line 6419) | function x(t, e) {
function w (line 6422) | function w(t, e) {
function O (line 6425) | function O(t, e) {
function M (line 6428) | function M(t, e, n) {
function S (line 6448) | function S(t, e) {
function C (line 6451) | function C(t, e) {
function j (line 6456) | function j(t, i, o) {
function k (line 6460) | function k(n, r) {
function E (line 6463) | function E(c, E, T) {
function N (line 6796) | function N(t, e, n) {
function d (line 6974) | function d(e) {
function f (line 6987) | function f(t) {
function p (line 6999) | function p(t) {
function o (line 7041) | function o() {
function a (line 7044) | function a() {
function s (line 7047) | function s(t) {
function d (line 7077) | function d() {
function f (line 7082) | function f() {
function p (line 7108) | function p(t, e) {
function g (line 7111) | function g() {}
function l (line 7391) | function l(t) {
function d (line 7408) | function d(t) {
function f (line 7416) | function f(t, e) {
function p (line 7426) | function p(t, e) {
function g (line 7433) | function g(t, e) {
function m (line 7644) | function m(t, e) {
function w (line 7679) | function w(t, e) {
function t (line 7790) | function t(t) {
function t (line 7831) | function t(t) {
function C (line 7942) | function C(t) {
function k (line 7958) | function k(t) {
function i (line 7965) | function i(t) {
function o (line 7971) | function o() {
function a (line 7977) | function a(t) {
function u (line 7984) | function u(i) {
function c (line 7997) | function c() {
function h (line 8000) | function h() {
function l (line 8003) | function l() {
function d (line 8014) | function d(e) {
function f (line 8021) | function f() {
function p (line 8024) | function p(t) {
function g (line 8029) | function g() {
function y (line 8051) | function y() {
function v (line 8064) | function v() {
function m (line 8081) | function m() {
function b (line 8088) | function b() {
function S (line 8102) | function S(t) {
function E (line 8113) | function E() {
function N (line 8228) | function N() {
function P (line 8264) | function P(t) {
function t (line 8313) | function t(t, e) {
function _ (line 8531) | function _(t, e) {
function R (line 8534) | function R(t) {
function t (line 8543) | function t(t) {
function e (line 8968) | function e() {
function e (line 9070) | function e() {
function e (line 9146) | function e() {
function e (line 9194) | function e() {
function e (line 9234) | function e() {
function H (line 9239) | function H(t, e, n) {
function V (line 9243) | function V(t, e, n) {
function U (line 9247) | function U(t, e, n) {
function K (line 9288) | function K(t) {
function Q (line 9297) | function Q(t, e) {
function h (line 9449) | function h() {
function vt (line 9502) | function vt(t, e) {
function xt (line 9528) | function xt(t, e) {
function t (line 9532) | function t(t) {
function e (line 9608) | function e() {
function jt (line 9668) | function jt(t, e) {
function Et (line 9683) | function Et(t) {
function Vt (line 9956) | function Vt(t, e, n) {
function Zt (line 10054) | function Zt(t, e) {
function Kt (line 10057) | function Kt(t) {
function ee (line 10089) | function ee(t, e, n) {
function e (line 10113) | function e() {
function e (line 10156) | function e() {
function e (line 10213) | function e() {
function oe (line 10229) | function oe(t, e) {
function ae (line 10235) | function ae(t, e) {
function se (line 10238) | function se(t, e, n) {
function e (line 10251) | function e() {
function e (line 10306) | function e() {
function e (line 10338) | function e() {
function e (line 10399) | function e() {
function e (line 10447) | function e() {
function pe (line 10462) | function pe(t, e) {
function e (line 10472) | function e() {
function me (line 10495) | function me(t, e, n, r, i, o) {
function be (line 10507) | function be(t, e, n) {
function xe (line 10511) | function xe(t, e, n, r, i, o) {
function we (line 10516) | function we(t, e) {
function Oe (line 10519) | function Oe(t, e, n, r) {
function Me (line 10527) | function Me(t, e, n) {
function Se (line 10535) | function Se(t, e, n, r, i, o) {
function Ce (line 10611) | function Ce(t) {
function t (line 10640) | function t() {
function Te (line 10729) | function Te(t, e, n) {
function Pe (line 10737) | function Pe(t, e, n) {
function Ie (line 10746) | function Ie(t, e, n) {
function Be (line 10756) | function Be(t, e, n) {
function Ae (line 10772) | function Ae(t) {
function Le (line 10775) | function Le(t, e, n) {
function De (line 10799) | function De(t, e) {
function _e (line 10811) | function _e(t) {
function Re (line 10814) | function Re(t) {
function Ye (line 10817) | function Ye(t) {
function Fe (line 10820) | function Fe(t, e) {
function ze (line 10823) | function ze(t) {
function Xe (line 10830) | function Xe(t, e, n, r) {
function Ge (line 11058) | function Ge(t) {
function qe (line 11134) | function qe(t) {
function He (line 11256) | function He(t, e) {
function Ve (line 11459) | function Ve(t, e, n) {
function Ue (line 11481) | function Ue(t) {
function Ke (line 11664) | function Ke(t, e) {
function t (line 11679) | function t(t) {
function e (line 11726) | function e(e) {
function t (line 12003) | function t() {}
function rn (line 12038) | function rn(t) {
function an (line 12054) | function an(t) {
function t (line 12095) | function t(t, e) {
function t (line 12106) | function t(t) {
function t (line 12202) | function t() {
function t (line 12260) | function t(t) {
function t (line 12290) | function t(t) {
function t (line 12370) | function t(t, e) {
function t (line 12386) | function t(t, e, n) {
function t (line 12442) | function t(t, e, n, r, i) {
function t (line 12466) | function t() {
function t (line 12533) | function t(t) {
function t (line 12563) | function t(t) {
function t (line 13040) | function t(t) {
function Xn (line 13276) | function Xn(t, e, n) {
function o (line 13288) | function o(t) {
function t (line 13385) | function t(t, e, n, r) {
function t (line 14234) | function t(t) {
function Tr (line 14377) | function Tr(t, e) {
function e (line 14382) | function e(e, n) {
function t (line 14533) | function t(t) {
function Fr (line 14679) | function Fr(t) {
function zr (line 14694) | function zr(t) {
function Xr (line 14769) | function Xr(t, e) {
function Wr (line 14833) | function Wr(t) {
function qr (line 15073) | function qr(t) {
function t (line 15124) | function t() {}
function t (line 15174) | function t(t) {
function e (line 15578) | function e() {
function e (line 15725) | function e() {
function e (line 15870) | function e() {
function t (line 16037) | function t(t) {
function t (line 16466) | function t(t) {
function fi (line 16633) | function fi(t, e) {
function pi (line 16692) | function pi(t, e) {
function mi (line 16802) | function mi(t, e, n) {
function xi (line 16884) | function xi(t, e, n, r, i) {
function Oi (line 17127) | function Oi(t, e, n, r, i, o) {
function Mi (line 17211) | function Mi(t, e, n, r) {
function t (line 17272) | function t(t, e) {
function e (line 17481) | function e(e) {
function ji (line 19054) | function ji(t) {
function t (line 20678) | function t(t) {
function e (line 21060) | function e(e) {
function e (line 21282) | function e() {
function Vi (line 21464) | function Vi(t, e, n) {
function e (line 21587) | function e(e) {
function e (line 22018) | function e(e) {
function e (line 22157) | function e(e) {
function e (line 22348) | function e(e) {
function e (line 22695) | function e(e) {
function oo (line 23108) | function oo(t, e, n) {
function ao (line 23115) | function ao(t, e) {
function e (line 23121) | function e(e) {
function e (line 23450) | function e(e) {
FILE: packages/examples-wx/miniprogram_npm/@antv/f6-wx/canvas/canvas.js
function modifyEvent (line 93) | function modifyEvent(touchEvent) {
FILE: packages/examples-wx/miniprogram_npm/@antv/f6-wx/container/container.js
method ready (line 40) | ready() {
method error (line 66) | error(e) {
method ontouch (line 69) | ontouch(e) {
function modifyEvent (line 82) | function modifyEvent(touchEvent) {
FILE: packages/examples-wx/miniprogram_npm/@antv/f6-wx/extends/graph/treeGraph.js
function r (line 12) | function r(e) {
function f (line 156) | function f(t) {
function d (line 184) | function d(t) {
function w (line 260) | function w(t, n, r) {
function E (line 283) | function E(t, n) {
function I (line 290) | function I(t, n, r, e) {
function B (line 293) | function B(t) {
function L (line 324) | function L(t, n, r, e) {
function t (line 372) | function t() {
function i (line 445) | function i(t, n) {
function u (line 471) | function u(t, n) {
function a (line 486) | function a(t, n, r, e) {
function c (line 516) | function c(t, n) {
function f (line 606) | function f() {
function s (line 616) | function s(t, n, r) {
function u (line 628) | function u(t) {
function r (line 647) | function r(e) {
function t (line 777) | function t(t, n) {
function e (line 828) | function e(t, n) {
function o (line 913) | function o(t, n) {
function e (line 1251) | function e() {
function o (line 2358) | function o(t, n, r, u) {
function r (line 2390) | function r() {}
function t (line 2607) | function t() {
function r (line 2636) | function r(t, n, r, e) {
function e (line 2656) | function e(t, n) {
function o (line 2688) | function o(t) {
function u (line 2696) | function u(t, n, r) {
function a (line 2732) | function a(t, n, r, e) {
function c (line 2745) | function c(t) {
function f (line 2748) | function f(t) {
function s (line 2751) | function s(t) {
function l (line 2754) | function l(t, n, r) {
function e (line 2823) | function e() {
function i (line 2847) | function i(t, n) {
function e (line 2932) | function e() {
function e (line 2996) | function e() {
function n (line 3118) | function n(n) {
FILE: packages/examples-wx/miniprogram_npm/@antv/f6-wx/extends/layout/circularLayout.js
function r (line 12) | function r(n) {
function n (line 224) | function n(t) {
function r (line 314) | function r() {
function s (line 327) | function s(t, e) {
function e (line 333) | function e(e) {
function t (line 564) | function t() {
FILE: packages/examples-wx/miniprogram_npm/@antv/f6-wx/extends/layout/comboForceLayout.js
function o (line 12) | function o(r) {
function r (line 224) | function r(e) {
function o (line 314) | function o() {
function t (line 328) | function t(t) {
function e (line 990) | function e() {
FILE: packages/examples-wx/miniprogram_npm/@antv/f6-wx/extends/layout/concentricLayout.js
function n (line 12) | function n(r) {
function r (line 224) | function r(e) {
function n (line 314) | function n() {
function t (line 327) | function t(t) {
function e (line 501) | function e() {
FILE: packages/examples-wx/miniprogram_npm/@antv/f6-wx/extends/layout/dagreLayout.js
function e (line 12) | function e(r) {
function t (line 77) | function t() {
function r (line 310) | function r(t) {
function i (line 385) | function i(t, n, e, o) {
function u (line 392) | function u(t) {
function e (line 573) | function e(t) {
function r (line 601) | function r(t) {
function e (line 627) | function e(t) {
function r (line 657) | function r(t) {
function r (line 748) | function r(t) {
function r (line 813) | function r(t) {
function f (line 932) | function f(t) {
function a (line 949) | function a(t) {
function e (line 1005) | function e(t) {
function r (line 1089) | function r(t) {
function r (line 1155) | function r(t) {
function i (line 1172) | function i(t) {
function u (line 1191) | function u(t, n) {
function c (line 1194) | function c(t, n) {
function a (line 1197) | function a(t, n, e, r) {
function f (line 1206) | function f(t, n, e, r) {
function s (line 1216) | function s(t, n) {
function a (line 1547) | function a(t) {
function r (line 1581) | function r(t) {
function r (line 1682) | function r(t) {
function e (line 1859) | function e(t) {
function r (line 1943) | function r(t) {
function t (line 2053) | function t() {}
function u (line 2148) | function u(t) {
function o (line 2360) | function o() {
function o (line 2475) | function o(t) {
function i (line 2494) | function i() {}
function u (line 2569) | function u(t, n) {
function c (line 2583) | function c(t, n) {
function a (line 2588) | function a(t, n, e) {
function e (line 2637) | function e() {
function n (line 2656) | function n(n) {
function f (line 2781) | function f(t, n, e) {
function e (line 2974) | function e(t) {
function a (line 3062) | function a(t) {
function e (line 3128) | function e(t) {
function o (line 3698) | function o(t, n) {
function i (line 4054) | function i(t) {
function u (line 4066) | function u(t) {
function i (line 4126) | function i(o) {
function f (line 4242) | function f(t) {
function f (line 4513) | function f(t) {
function k (line 4616) | function k(t, n) {
function S (line 4619) | function S(t) {
function i (line 5170) | function i(u) {
function c (line 5260) | function c(t, n, e, o, i) {
function a (line 5278) | function a(t, n, e) {
function e (line 5287) | function e() {
function r (line 5291) | function r(t) {
function o (line 5297) | function o(t, n) {
function c (line 5405) | function c(t) {
function s (line 5418) | function s(t) {
function p (line 5424) | function p(t, n) {
function d (line 5434) | function d(t, n, e) {
function h (line 5459) | function h(t, n) {
function l (line 5462) | function l(t, n, e, o, i) {
function v (line 5476) | function v(t) {
function y (line 5481) | function y(t, n, e) {
function g (line 5497) | function g(t, n, e, o) {
function b (line 5520) | function b(t, n, e) {
function o (line 5537) | function o(i) {
function i (line 5669) | function i(t, n, e, r, i, u) {
function o (line 5691) | function o(t) {
function i (line 5699) | function i(t) {
function u (line 5703) | function u(t) {
function c (line 5706) | function c(t) {
function p (line 5751) | function p(t, n, e) {
function d (line 5756) | function d(t, n) {
function h (line 5767) | function h(t, n) {
function o (line 5825) | function o(t, n, e) {
function e (line 5981) | function e(t) {
function o (line 6002) | function o(n) {
function i (line 6032) | function i(t, n, e) {
function u (line 6163) | function u(t, n) {
function c (line 6199) | function c(t, n) {
function a (line 6235) | function a(t, n, e) {
function f (line 6243) | function f(t, n, e) {
function s (line 6250) | function s(t, n, e, o) {
function p (line 6288) | function p(t, n, e, i, u) {
function d (line 6368) | function d(t, n) {
function h (line 6384) | function h(t, n) {
function l (line 6403) | function l(t, n) {
FILE: packages/examples-wx/miniprogram_npm/@antv/f6-wx/extends/layout/forceAtlas2Layout.js
function i (line 12) | function i(r) {
function r (line 224) | function r(t) {
function i (line 314) | function i() {
function e (line 336) | function e(e) {
function t (line 695) | function t(t) {
function t (line 746) | function t(t) {
function t (line 803) | function t(t) {
function t (line 868) | function t() {
FILE: packages/examples-wx/miniprogram_npm/@antv/f6-wx/extends/layout/forceLayout.js
function e (line 12) | function e(r) {
function r (line 224) | function r(t) {
function o (line 320) | function o() {
function o (line 348) | function o(t, n, e, r) {
function u (line 394) | function u(t) {
function c (line 397) | function c(t) {
function f (line 400) | function f(t, n, e) {
function a (line 404) | function a(t, n, e, r, o, i) {
function l (line 413) | function l(t) {
function y (line 740) | function y(t) {
function p (line 743) | function p(t) {
function u (line 752) | function u() {
function c (line 781) | function c(t) {
function a (line 786) | function a() {
function g (line 814) | function g(t) {
function _ (line 829) | function _(t) {
function x (line 832) | function x(t, n) {
function s (line 850) | function s(r) {
function y (line 864) | function y() {
function p (line 889) | function p() {
function v (line 893) | function v() {
function m (line 925) | function m() {
function S (line 933) | function S(t) {
function N (line 936) | function N(t, n) {
function O (line 951) | function O(t, n) {
function k (line 955) | function k(t, n, e) {
function j (line 1003) | function j(t) {
function q (line 1041) | function q() {
function B (line 1044) | function B() {
function Y (line 1047) | function Y() {
function R (line 1050) | function R(t, n, e) {
function G (line 1054) | function G() {
function I (line 1081) | function I() {
function W (line 1086) | function W(t) {
function K (line 1112) | function K(t) {
function H (line 1115) | function H(t) {
function h (line 1135) | function h() {
function d (line 1138) | function d(e) {
function y (line 1161) | function y() {
function p (line 1176) | function p(n) {
function l (line 1245) | function l(e) {
function s (line 1251) | function s() {
function y (line 1260) | function y(t) {
function p (line 1282) | function p(t, i, f, l) {
function c (line 1337) | function c(t) {
function f (line 1347) | function f() {
function i (line 1387) | function i(t) {
function u (line 1391) | function u() {
function i (line 1422) | function i(t) {
function u (line 1426) | function u() {
function e (line 1510) | function e() {
function n (line 1571) | function n(n) {
function p (line 1833) | function p() {
function t (line 1885) | function t(t) {
function x (line 1909) | function x(t) {
function b (line 1916) | function b() {
function w (line 2015) | function w() {
function m (line 2024) | function m(t) {
function t (line 2111) | function t() {
FILE: packages/examples-wx/miniprogram_npm/@antv/f6-wx/extends/layout/fruchtermanLayout.js
function n (line 12) | function n(r) {
function r (line 224) | function r(t) {
function n (line 314) | function n() {
function e (line 328) | function e(e) {
function t (line 582) | function t() {
FILE: packages/examples-wx/miniprogram_npm/@antv/f6-wx/extends/layout/gForceLayout.js
function n (line 12) | function n(r) {
function r (line 224) | function r(t) {
function n (line 314) | function n() {
function e (line 339) | function e(e) {
function t (line 631) | function t() {
FILE: packages/examples-wx/miniprogram_npm/@antv/f6-wx/extends/layout/gridLayout.js
function o (line 12) | function o(r) {
function r (line 224) | function r(e) {
function o (line 314) | function o() {
function t (line 327) | function t(t) {
function e (line 547) | function e() {
FILE: packages/examples-wx/miniprogram_npm/@antv/f6-wx/extends/layout/mdsLayout.js
function e (line 12) | function e(o) {
function n (line 205) | function n(t) {
function c (line 281) | function c(t) {
function h (line 301) | function h(t, r, e, o) {
function l (line 322) | function l(t, r) {
function p (line 332) | function p(t) {
function v (line 347) | function v(t, r, e) {
function y (line 351) | function y(t, r, e) {
function m (line 355) | function m(t, r) {
function g (line 362) | function g(t, r) {
function w (line 369) | function w(t, r, e) {
function b (line 372) | function b(t, r) {
function d (line 383) | function d(t, r) {
function M (line 394) | function M(t, r, e, o, n) {
function x (line 415) | function x(t) {
function k (line 429) | function k(t, r) {
function S (line 433) | function S(t) {
function E (line 437) | function E(t, r, e) {
function O (line 447) | function O(t, r, e) {
function R (line 457) | function R(t, r, e) {
function j (line 466) | function j(t, r) {
function _ (line 470) | function _(t, r) {
function P (line 474) | function P(t, r) {
function T (line 478) | function T(t) {
function A (line 486) | function A(t, r) {
function C (line 490) | function C(t) {
function N (line 498) | function N(t, r) {
function I (line 502) | function I(t) {
function V (line 507) | function V(t, r) {
function q (line 511) | function q(t, r) {
function D (line 518) | function D(t) {
function F (line 544) | function F(t, r) {
function B (line 555) | function B(t) {
function L (line 562) | function L(t) {
function z (line 577) | function z(t, r) {
function U (line 581) | function U(t, r) {
function W (line 590) | function W(t, r, e) {
function t (line 594) | function t() {
function u (line 1310) | function u(r, e, o) {
function J (line 2027) | function J(t, r) {
function e (line 2056) | function e(t, o) {
function X (line 2160) | function X(t) {
function G (line 2175) | function G(t, r) {
function Z (line 2182) | function Z(t) {
function $ (line 2208) | function $(t, r) {
function tt (line 2219) | function tt(t) {
function e (line 2800) | function e(t, o, n) {
function et (line 2815) | function et(t) {
function ot (line 2830) | function ot(t, r) {
function nt (line 2839) | function nt(t, r) {
function it (line 2846) | function it(t) {
function st (line 2872) | function st(t, r) {
function ut (line 2883) | function ut(t) {
function i (line 2905) | function i(t, r) {
function ft (line 2937) | function ft(t) {
function ct (line 2952) | function ct(t, r) {
function ht (line 2961) | function ht(t, r) {
function lt (line 2968) | function lt(t) {
function pt (line 2994) | function pt(t, r) {
function vt (line 3005) | function vt(t) {
function i (line 3027) | function i(t, r) {
function mt (line 3059) | function mt(t) {
function gt (line 3074) | function gt(t, r) {
function wt (line 3083) | function wt(t, r) {
function bt (line 3090) | function bt(t) {
function dt (line 3116) | function dt(t, r) {
function Mt (line 3127) | function Mt(t) {
function i (line 3149) | function i(t) {
function kt (line 3178) | function kt(t) {
function St (line 3193) | function St(t, r) {
function Et (line 3202) | function Et(t, r) {
function Ot (line 3209) | function Ot(t) {
function Rt (line 3235) | function Rt(t, r) {
function jt (line 3246) | function jt(t) {
function i (line 3268) | function i(t) {
function Pt (line 3297) | function Pt(t) {
function Tt (line 3312) | function Tt(t, r) {
function At (line 3321) | function At(t, r) {
function Ct (line 3328) | function Ct(t) {
function Nt (line 3354) | function Nt(t, r) {
function It (line 3365) | function It(t) {
function i (line 3387) | function i(t, r) {
function qt (line 3419) | function qt(t) {
function Dt (line 3434) | function Dt(t, r) {
function Ft (line 3443) | function Ft(t, r) {
function Bt (line 3450) | function Bt(t) {
function Lt (line 3476) | function Lt(t, r) {
function zt (line 3487) | function zt(t) {
function i (line 3509) | function i(t, r) {
function Wt (line 3541) | function Wt(t) {
function Qt (line 3556) | function Qt(t, r) {
function Jt (line 3565) | function Jt(t, r) {
function Yt (line 3572) | function Yt(t) {
function Ht (line 3598) | function Ht(t, r) {
function Kt (line 3609) | function Kt(t) {
function i (line 3631) | function i(t, r, e) {
function Gt (line 3671) | function Gt(t) {
function Zt (line 3686) | function Zt(t, r) {
function $t (line 3695) | function $t(t, r) {
function tr (line 3702) | function tr(t) {
function rr (line 3728) | function rr(t, r) {
function er (line 3739) | function er(t) {
function i (line 3761) | function i(t, r, e, o, s) {
function nr (line 3797) | function nr(t) {
function ir (line 3812) | function ir(t, r) {
function sr (line 3821) | function sr(t, r) {
function ur (line 3828) | function ur(t) {
function ar (line 3854) | function ar(t, r) {
function fr (line 3865) | function fr(t) {
function i (line 3887) | function i(t) {
function hr (line 3916) | function hr(t) {
function lr (line 3931) | function lr(t, r) {
function pr (line 3935) | function pr(t, r) {
function vr (line 3944) | function vr(t, r) {
function yr (line 3951) | function yr(t) {
function mr (line 3977) | function mr(t, r) {
function gr (line 3988) | function gr(t) {
function i (line 4010) | function i(t) {
function br (line 4058) | function br(t) {
function dr (line 4073) | function dr(t, r) {
function Mr (line 4082) | function Mr(t, r) {
function xr (line 4089) | function xr(t) {
function kr (line 4115) | function kr(t, r) {
function Sr (line 4126) | function Sr(t) {
function i (line 4148) | function i(t) {
function Or (line 4181) | function Or(t, r) {
function Rr (line 4186) | function Rr(t, r) {
function t (line 4196) | function t(r) {
function _r (line 4335) | function _r(t, r) {
function Pr (line 4343) | function Pr(t, r) {
function t (line 4353) | function t(r) {
function Ar (line 4475) | function Ar(t, r) {
function Cr (line 4479) | function Cr(t, r) {
function t (line 4489) | function t(r) {
function Ir (line 4935) | function Ir(t) {
function Vr (line 4942) | function Vr(t, r) {
function qr (line 4954) | function qr(t) {
function Dr (line 4975) | function Dr(t, r) {
function Fr (line 4979) | function Fr(t, r, e) {
function Br (line 4993) | function Br(t) {
function Lr (line 5018) | function Lr(t) {
function zr (line 5036) | function zr(t) {
function Ur (line 5051) | function Ur(t) {
function Wr (line 5076) | function Wr(t) {
function Qr (line 5091) | function Qr(t) {
function Jr (line 5126) | function Jr(t, r) {
function Yr (line 5130) | function Yr(t, r) {
function t (line 5140) | function t(r) {
function Kr (line 5215) | function Kr(t, r, e, o) {
function Xr (line 5272) | function Xr(t, r, e, o) {
function Gr (line 5346) | function Gr(t, r, e, o) {
function Zr (line 5393) | function Zr(t, r, e, o, n) {
function $r (line 5716) | function $r(t, r, e, o) {
function te (line 5722) | function te(t, r) {
function t (line 5732) | function t(r) {
function ee (line 5819) | function ee(t, r) {
function o (line 6007) | function o(t) {
function e (line 6097) | function e() {
function r (line 6111) | function r(r) {
function t (line 6202) | function t() {
FILE: packages/examples-wx/miniprogram_npm/@antv/f6-wx/extends/layout/radialLayout.js
function e (line 12) | function e(o) {
function n (line 205) | function n(t) {
function c (line 281) | function c(t) {
function h (line 301) | function h(t, r, e, o) {
function l (line 322) | function l(t, r) {
function p (line 332) | function p(t) {
function v (line 347) | function v(t, r, e) {
function y (line 351) | function y(t, r, e) {
function m (line 355) | function m(t, r) {
function g (line 362) | function g(t, r) {
function w (line 369) | function w(t, r, e) {
function d (line 372) | function d(t, r) {
function b (line 383) | function b(t, r) {
function M (line 394) | function M(t, r, e, o, n) {
function x (line 415) | function x(t) {
function S (line 429) | function S(t, r) {
function k (line 433) | function k(t) {
function E (line 437) | function E(t, r, e) {
function O (line 447) | function O(t, r, e) {
function R (line 457) | function R(t, r, e) {
function j (line 466) | function j(t, r) {
function _ (line 470) | function _(t, r) {
function P (line 474) | function P(t, r) {
function T (line 478) | function T(t) {
function A (line 486) | function A(t, r) {
function I (line 490) | function I(t) {
function N (line 498) | function N(t, r) {
function C (line 502) | function C(t) {
function D (line 507) | function D(t, r) {
function V (line 511) | function V(t, r) {
function q (line 518) | function q(t) {
function F (line 544) | function F(t, r) {
function B (line 555) | function B(t) {
function z (line 562) | function z(t) {
function L (line 577) | function L(t, r) {
function U (line 581) | function U(t, r) {
function W (line 590) | function W(t, r, e) {
function t (line 594) | function t() {
function u (line 1310) | function u(r, e, o) {
function J (line 2027) | function J(t, r) {
function e (line 2056) | function e(t, o) {
function X (line 2160) | function X(t) {
function G (line 2175) | function G(t, r) {
function Z (line 2182) | function Z(t) {
function $ (line 2208) | function $(t, r) {
function tt (line 2219) | function tt(t) {
function e (line 2800) | function e(t, o, n) {
function et (line 2815) | function et(t) {
function ot (line 2830) | function ot(t, r) {
function nt (line 2839) | function nt(t, r) {
function it (line 2846) | function it(t) {
function st (line 2872) | function st(t, r) {
function ut (line 2883) | function ut(t) {
function i (line 2905) | function i(t, r) {
function ft (line 2937) | function ft(t) {
function ct (line 2952) | function ct(t, r) {
function ht (line 2961) | function ht(t, r) {
function lt (line 2968) | function lt(t) {
function pt (line 2994) | function pt(t, r) {
function vt (line 3005) | function vt(t) {
function i (line 3027) | function i(t, r) {
function mt (line 3059) | function mt(t) {
function gt (line 3074) | function gt(t, r) {
function wt (line 3083) | function wt(t, r) {
function dt (line 3090) | function dt(t) {
function bt (line 3116) | function bt(t, r) {
function Mt (line 3127) | function Mt(t) {
function i (line 3149) | function i(t) {
function St (line 3178) | function St(t) {
function kt (line 3193) | function kt(t, r) {
function Et (line 3202) | function Et(t, r) {
function Ot (line 3209) | function Ot(t) {
function Rt (line 3235) | function Rt(t, r) {
function jt (line 3246) | function jt(t) {
function i (line 3268) | function i(t) {
function Pt (line 3297) | function Pt(t) {
function Tt (line 3312) | function Tt(t, r) {
function At (line 3321) | function At(t, r) {
function It (line 3328) | function It(t) {
function Nt (line 3354) | function Nt(t, r) {
function Ct (line 3365) | function Ct(t) {
function i (line 3387) | function i(t, r) {
function Vt (line 3419) | function Vt(t) {
function qt (line 3434) | function qt(t, r) {
function Ft (line 3443) | function Ft(t, r) {
function Bt (line 3450) | function Bt(t) {
function zt (line 3476) | function zt(t, r) {
function Lt (line 3487) | function Lt(t) {
function i (line 3509) | function i(t, r) {
function Wt (line 3541) | function Wt(t) {
function Qt (line 3556) | function Qt(t, r) {
function Jt (line 3565) | function Jt(t, r) {
function Ht (line 3572) | function Ht(t) {
function Yt (line 3598) | function Yt(t, r) {
function Kt (line 3609) | function Kt(t) {
function i (line 3631) | function i(t, r, e) {
function Gt (line 3671) | function Gt(t) {
function Zt (line 3686) | function Zt(t, r) {
function $t (line 3695) | function $t(t, r) {
function tr (line 3702) | function tr(t) {
function rr (line 3728) | function rr(t, r) {
function er (line 3739) | function er(t) {
function i (line 3761) | function i(t, r, e, o, s) {
function nr (line 3797) | function nr(t) {
function ir (line 3812) | function ir(t, r) {
function sr (line 3821) | function sr(t, r) {
function ur (line 3828) | function ur(t) {
function ar (line 3854) | function ar(t, r) {
function fr (line 3865) | function fr(t) {
function i (line 3887) | function i(t) {
function hr (line 3916) | function hr(t) {
function lr (line 3931) | function lr(t, r) {
function pr (line 3935) | function pr(t, r) {
function vr (line 3944) | function vr(t, r) {
function yr (line 3951) | function yr(t) {
function mr (line 3977) | function mr(t, r) {
function gr (line 3988) | function gr(t) {
function i (line 4010) | function i(t) {
function dr (line 4058) | function dr(t) {
function br (line 4073) | function br(t, r) {
function Mr (line 4082) | function Mr(t, r) {
function xr (line 4089) | function xr(t) {
function Sr (line 4115) | function Sr(t, r) {
function kr (line 4126) | function kr(t) {
function i (line 4148) | function i(t) {
function Or (line 4181) | function Or(t, r) {
function Rr (line 4186) | function Rr(t, r) {
function t (line 4196) | function t(r) {
function _r (line 4335) | function _r(t, r) {
function Pr (line 4343) | function Pr(t, r) {
function t (line 4353) | function t(r) {
function Ar (line 4475) | function Ar(t, r) {
function Ir (line 4479) | function Ir(t, r) {
function t (line 4489) | function t(r) {
function Cr (line 4935) | function Cr(t) {
function Dr (line 4942) | function Dr(t, r) {
function Vr (line 4954) | function Vr(t) {
function qr (line 4975) | function qr(t, r) {
function Fr (line 4979) | function Fr(t, r, e) {
function Br (line 4993) | function Br(t) {
function zr (line 5018) | function zr(t) {
function Lr (line 5036) | function Lr(t) {
function Ur (line 5051) | function Ur(t) {
function Wr (line 5076) | function Wr(t) {
function Qr (line 5091) | function Qr(t) {
function Jr (line 5126) | function Jr(t, r) {
function Hr (line 5130) | function Hr(t, r) {
function t (line 5140) | function t(r) {
function Kr (line 5215) | function Kr(t, r, e, o) {
function Xr (line 5272) | function Xr(t, r, e, o) {
function Gr (line 5346) | function Gr(t, r, e, o) {
function Zr (line 5393) | function Zr(t, r, e, o, n) {
function $r (line 5716) | function $r(t, r, e, o) {
function te (line 5722) | function te(t, r) {
function t (line 5732) | function t(r) {
function ee (line 5819) | function ee(t, r) {
function o (line 6007) | function o(t) {
function e (line 6130) | function e() {
function c (line 6150) | function c(t, r) {
function r (line 6156) | function r(r) {
function t (line 6456) | function t(t) {
function t (line 6495) | function t(t) {
function t (line 6606) | function t() {
FILE: packages/examples-wx/miniprogram_npm/@antv/f6-wx/extends/layout/randomLayout.js
function n (line 12) | function n(o) {
function n (line 96) | function n() {
function e (line 108) | function e(e) {
function t (line 158) | function t() {
FILE: packages/examples-wx/miniprogram_npm/@antv/f6-wx/index.js
function n (line 12) | function n(r) {
function f (line 440) | function f(t) {
function y (line 490) | function y(t) {
function R (line 642) | function R(t, e) {
function X (line 670) | function X(t) {
function z (line 673) | function z(t) {
function Z (line 712) | function Z(t, e) {
function ut (line 795) | function ut(t, e, n) {
function qt (line 923) | function qt(t) {
function Vt (line 934) | function Vt(t) {
function Gt (line 943) | function Gt(t, e) {
function Ht (line 950) | function Ht(t, e, n, r) {
function Zt (line 960) | function Zt(t) {
function Jt (line 1016) | function Jt(t, e, n, r) {
function n (line 1041) | function n() {}
function Se (line 1204) | function Se(t) {
function t (line 1243) | function t() {
function i (line 1305) | function i(t, e) {
function a (line 1331) | function a(t, e) {
function s (line 1346) | function s(t, e, n, r) {
function c (line 1376) | function c(t, e) {
function u (line 1466) | function u() {
function h (line 1476) | function h(t, e, n) {
function e (line 1494) | function e() {
function i (line 1651) | function i(t, e) {
function o (line 1654) | function o(t) {
function u (line 1669) | function u(t, e) {
function h (line 1679) | function h(t, e) {
function p (line 1691) | function p(t, e) {
function u (line 1958) | function u(t, e) {
function h (line 1973) | function h(t, e, n) {
function l (line 1979) | function l(t, e, n) {
function f (line 2003) | function f(t) {
function d (line 2010) | function d(t, e) {
function p (line 2016) | function p(t, e) {
function g (line 2020) | function g(t, e, n, r) {
function v (line 2097) | function v(t, e) {
function y (line 2106) | function y(t) {
function m (line 2137) | function m(t, e) {
function o (line 2158) | function o(t, e) {
function e (line 2195) | function e() {
function e (line 2230) | function e(e) {
function h (line 2372) | function h(t, e) {
function c (line 2966) | function c(t) {
function b (line 3004) | function b() {
function x (line 3007) | function x() {
function S (line 3010) | function S() {
function w (line 3013) | function w(t, e, n) {
function O (line 3017) | function O() {
function M (line 3044) | function M() {
function k (line 3049) | function k(t) {
function C (line 3077) | function C(t, e) {
function E (line 3082) | function E() {}
function Y (line 3267) | function Y() {
function X (line 3270) | function X() {
function z (line 3273) | function z(t) {
function W (line 3333) | function W(t) {
function q (line 3336) | function q(t, e, n, r) {
function V (line 3339) | function V(t) {
function G (line 3345) | function G(t, e, n, r) {
function H (line 3350) | function H(t, e, n, r) {
function U (line 3353) | function U() {
function Z (line 3356) | function Z() {
function K (line 3365) | function K(t) {
function $ (line 3368) | function $(t) {
function Q (line 3371) | function Q(t) {
function J (line 3374) | function J(t, e, n, r) {
function tt (line 3384) | function tt(t) {
function et (line 3410) | function et(t, e, n, r) {
function nt (line 3413) | function nt(t) {
function rt (line 3416) | function rt(t) {
function it (line 3419) | function it(t, e, n) {
function ot (line 3431) | function ot(t, e, n, r, i) {
function st (line 3573) | function st(t, e) {
function ct (line 3578) | function ct(t) {
function ut (line 3596) | function ut(t, e) {
function r (line 3602) | function r(t, e) {
function lt (line 3619) | function lt(t) {
function dt (line 3676) | function dt(t) {
function pt (line 3679) | function pt(t, e) {
function yt (line 3711) | function yt(t) {
function wt (line 3779) | function wt(t) {
function Ct (line 3822) | function Ct(t, e, n) {
function t (line 3895) | function t(t) {
function It (line 3973) | function It(t, e, n) {
function Tt (line 3980) | function Tt(t, e, n) {
function t (line 3999) | function t(t) {
function e (line 4230) | function e(e) {
function o (line 4347) | function o(t, e, n) {
function a (line 4361) | function a(t, e, n) {
function p (line 4380) | function p(t, e, n) {
function g (line 4387) | function g(t, e, n) {
function t (line 4398) | function t(t) {
function t (line 4602) | function t() {}
function e (line 4698) | function e(e) {
function f (line 5073) | function f(e) {
function d (line 5086) | function d(t) {
function p (line 5098) | function p(t) {
function t (line 5398) | function t() {}
function D (line 5632) | function D(t, e, n) {
function o (line 5644) | function o(t) {
function t (line 5741) | function t(t, e, n, r) {
function t (line 6597) | function t(t) {
function e (line 6742) | function e(e, n) {
function t (line 6900) | function t(t) {
function Bt (line 7046) | function Bt(t) {
function Lt (line 7061) | function Lt(t) {
function Dt (line 7136) | function Dt(t, e) {
function _t (line 7202) | function _t(t) {
function Ft (line 7442) | function Ft(t) {
function t (line 7493) | function t() {}
function t (line 7543) | function t(t) {
function e (line 7949) | function e() {
function e (line 8101) | function e() {
function e (line 8246) | function e() {
function t (line 8413) | function t(t) {
function t (line 8854) | function t(t) {
function ce (line 9022) | function ce(t, e) {
function ue (line 9067) | function ue(t, e) {
function de (line 9170) | function de(t, e, n) {
function ge (line 9253) | function ge(t, e, n, r, i) {
function ye (line 9496) | function ye(t, e, n, r, i, o) {
function me (line 9580) | function me(t, e, n, r) {
function t (line 9641) | function t(t, e) {
function e (line 9850) | function e(e) {
function we (line 11483) | function we(t) {
function t (line 13247) | function t(t) {
function o (line 13670) | function o() {
function a (line 13673) | function a() {
function s (line 13676) | function s(t) {
function f (line 13706) | function f() {
function d (line 13711) | function d() {
function p (line 13737) | function p(t, e) {
function g (line 13740) | function g() {}
function u
Copy disabled (too large)
Download .json
Condensed preview — 2383 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (18,593K chars).
[
{
"path": ".browserslistrc",
"chars": 110,
"preview": "# Browsers that we support\n\n[production staging]\n> 1%\nlast 2 version\nie 11\n\n[development]\n> 1%\nlast 2 version\n"
},
{
"path": ".gitattributes",
"chars": 735,
"preview": "# Don't allow people to merge changes to these generated files, because the result\n# may be invalid. You need to run \"r"
},
{
"path": ".gitignore",
"chars": 3034,
"preview": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\nyarn.lock\nes\n.mini-ide/\n\n# lock\npackage-lock.json\n\n# Ru"
},
{
"path": ".npmignore",
"chars": 1210,
"preview": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# lock\npackage-lock.json\n\n# Runtime data\npids\n*.pid\n*."
},
{
"path": ".prettierrc",
"chars": 3,
"preview": "{}\n"
},
{
"path": ".stylelintrc.json",
"chars": 114,
"preview": "{\n \"extends\": [\"stylelint-prettier/recommended\", \"stylelint-config-standard\"],\n \"customSyntax\": \"postcss-lit\"\n}\n"
},
{
"path": ".travis.yml",
"chars": 429,
"preview": "language: node_js\n\nnode_js:\n - '12'\n\nenv:\n - NODE_ENV=test\n\naddons:\n apt:\n packages:\n - xvfb\n - libgconf"
},
{
"path": "LICENSE",
"chars": 1067,
"preview": "MIT License\n\nCopyright (c) 2018 Alipay.inc\n\nPermission is hereby granted, free of charge, to any person obtaining a copy"
},
{
"path": "README-zh-CN.md",
"chars": 4221,
"preview": "# F6:移动端图可视化引擎\n\n [![travis-ci]"
},
{
"path": "README.md",
"chars": 5738,
"preview": "# F6: A Mobile Graph Visualization Framework in TypeScript.\n\n$\": [\n \"ts-jes"
},
{
"path": "packages/core/package.json",
"chars": 1455,
"preview": "{\n \"name\": \"@antv/f6-core\",\n \"version\": \"0.0.2\",\n \"description\": \"A Graph Visualization Framework in JavaScript\",\n \""
},
{
"path": "packages/core/src/behavior/behavior.ts",
"chars": 1255,
"preview": "import { clone, each, wrapBehavior } from \"@antv/util\";\nimport { BehaviorOption } from \"../types\";\nimport behaviorOption"
},
{
"path": "packages/core/src/behavior/behaviorOption.ts",
"chars": 1542,
"preview": "import { each } from \"@antv/util\";\nimport { IAbstractGraph } from \"../interface/graph\";\nimport { G6Event } from \"../type"
},
{
"path": "packages/core/src/behavior/index.ts",
"chars": 61,
"preview": "import Behavior from \"./behavior\";\n\nexport default Behavior;\n"
},
{
"path": "packages/core/src/element/arrow.ts",
"chars": 1863,
"preview": "export default {\n triangle: (width: number = 10, length: number = 15, d: number = 0) => {\n const begin = d * 2;\n "
},
{
"path": "packages/core/src/element/combo.ts",
"chars": 4317,
"preview": "/**\n * @fileOverview common combo shape\n * @author shiwu.wyy@antfin.com\n */\nimport { IGroup, IShape } from \"@antv/g-base"
},
{
"path": "packages/core/src/element/combos/circle.ts",
"chars": 3626,
"preview": "import { IGroup, IShape } from \"@antv/g-base\";\nimport { Item, ComboConfig, ShapeStyle } from \"../../types\";\nimport Globa"
},
{
"path": "packages/core/src/element/combos/index.ts",
"chars": 36,
"preview": "import \"./circle\";\nimport \"./rect\";\n"
},
{
"path": "packages/core/src/element/combos/rect.ts",
"chars": 7185,
"preview": "import { IGroup, IShape } from \"@antv/g-base\";\nimport { mix, isNumber, clone, isNil } from \"@antv/util\";\nimport { LabelS"
},
{
"path": "packages/core/src/element/edge.ts",
"chars": 21106,
"preview": "/**\n * @fileOverview 自定义边\n * @description 自定义边中有大量逻辑同自定义节点重复,虽然可以提取成为 mixin ,但是考虑到代码的可读性,还是单独实现。\n */\n\nimport { IGroup, I"
},
{
"path": "packages/core/src/element/hull/bubbleset.ts",
"chars": 22536,
"preview": "import { IPoint, IBBox, Item, BubblesetCfg } from \"../../types\";\nimport {\n squareDist,\n pointLineSquareDist,\n itemInt"
},
{
"path": "packages/core/src/element/hull/convexHull.ts",
"chars": 1552,
"preview": "import { IPoint, Item } from \"../../types\";\n\n/**\n * Use cross product to judge the direction of the turn.\n * Returns a p"
},
{
"path": "packages/core/src/element/index.ts",
"chars": 233,
"preview": "import Shape from \"./shape\";\n\nimport \"./node\";\nimport \"./edge\";\nimport \"./combo\";\nimport \"./combos\";\nimport \"./nodes\";\n\n"
},
{
"path": "packages/core/src/element/marker.ts",
"chars": 966,
"preview": "export default {\n collapse: (x, y, r) => {\n return [\n [\"M\", x - r, y],\n [\"a\", r, r, 0, 1, 0, r * 2, 0],\n "
},
{
"path": "packages/core/src/element/node.ts",
"chars": 9371,
"preview": "/**\n * @fileOverview common node shape\n * @author huangtonger@aliyun.com\n */\nimport { IGroup, IShape, IElement } from \"@"
},
{
"path": "packages/core/src/element/nodes/image.ts",
"chars": 4001,
"preview": "import { IGroup, IShape } from \"@antv/g-base\";\nimport Shape from \"../shape\";\nimport { NodeConfig, Item } from \"../../typ"
},
{
"path": "packages/core/src/element/nodes/index.ts",
"chars": 68,
"preview": "import \"./simple-circle\";\nimport \"./simple-rect\";\nimport \"./image\";\n"
},
{
"path": "packages/core/src/element/nodes/simple-circle.ts",
"chars": 2318,
"preview": "import { IGroup, IShape } from \"@antv/g-base\";\nimport { deepMix } from \"@antv/util\";\nimport { Item, NodeConfig, ShapeSty"
},
{
"path": "packages/core/src/element/nodes/simple-rect.ts",
"chars": 2973,
"preview": "import { IGroup, IShape } from \"@antv/g-base\";\nimport { mix } from \"@antv/util\";\nimport { Item, NodeConfig, ShapeStyle }"
},
{
"path": "packages/core/src/element/shape.ts",
"chars": 6687,
"preview": "import { IGroup, IShape } from \"@antv/g-base\";\nimport { upperFirst } from \"@antv/util\";\nimport { ShapeOptions, ShapeDefi"
},
{
"path": "packages/core/src/element/shapeBase.ts",
"chars": 18696,
"preview": "/**\n * @fileOverview 自定义节点和边的过程中,发现大量重复代码\n * @author dxq613@gmail.com\n */\nimport { IGroup, IShape, IElement } from \"@ant"
},
{
"path": "packages/core/src/element/xml.ts",
"chars": 13674,
"preview": "/**\n * @fileOverview 从xml建立自定义Node,包含update\n * @author xuzhi.mxz@antfin.com\n */\n\nimport { get } from \"@antv/util\";\nimpor"
},
{
"path": "packages/core/src/global.ts",
"chars": 5893,
"preview": "const subjectColor = \"rgb(95, 149, 255)\";\nconst backColor = \"rgb(255, 255, 255)\";\nconst textColor = \"rgb(0, 0, 0)\";\n\ncon"
},
{
"path": "packages/core/src/graph/controller/event.ts",
"chars": 386,
"preview": "import { IAbstractGraph } from \"../../interface/graph\";\n\nexport default abstract class EventController {\n protected gra"
},
{
"path": "packages/core/src/graph/controller/index.ts",
"chars": 210,
"preview": "export { default as ModeController } from \"./mode\";\nexport { default as ViewController } from \"./view\";\nexport { default"
},
{
"path": "packages/core/src/graph/controller/item.ts",
"chars": 20264,
"preview": "import { IGroup } from \"@antv/g-base\";\nimport {\n clone,\n deepMix,\n each,\n isArray,\n isObject,\n isString,\n upperFi"
},
{
"path": "packages/core/src/graph/controller/layout.ts",
"chars": 9045,
"preview": "import { isFunction, groupBy } from \"@antv/util\";\nimport { isNaN, calculationItemsBBox } from \"../../util/base\";\nimport "
},
{
"path": "packages/core/src/graph/controller/mode.ts",
"chars": 6913,
"preview": "import { each, isArray, isString } from \"@antv/util\";\nimport Behavior from \"../../behavior/behavior\";\nimport { IBehavior"
},
{
"path": "packages/core/src/graph/controller/state.ts",
"chars": 4102,
"preview": "import { each, isString } from \"@antv/util\";\nimport { Item, States } from \"../../types\";\nimport { IAbstractGraph } from "
},
{
"path": "packages/core/src/graph/controller/view.ts",
"chars": 7543,
"preview": "import { AbstractCanvas } from \"@antv/g-base\";\nimport { Point, IGroup } from \"@antv/g-base\";\nimport { isNumber, isString"
},
{
"path": "packages/core/src/graph/graph.ts",
"chars": 82243,
"preview": "import EventEmitter from \"@antv/event-emitter\";\nimport { ICanvas, IGroup, Point } from \"@antv/g-base\";\nimport {\n reques"
},
{
"path": "packages/core/src/index.ts",
"chars": 1334,
"preview": "import Behavior from \"./behavior\";\nimport AbstractGraph from \"./graph/graph\";\nimport Shape, { Arrow, Marker } from \"./el"
},
{
"path": "packages/core/src/interface/behavior.ts",
"chars": 1286,
"preview": "import { Event as GraphEvent, ICanvas } from \"@antv/g-base\";\nimport {\n G6Event,\n IG6GraphEvent,\n IShapeBase,\n Item,\n"
},
{
"path": "packages/core/src/interface/graph.ts",
"chars": 13359,
"preview": "import EventEmitter from \"@antv/event-emitter\";\nimport { IGroup, Point } from \"@antv/g-base\";\nimport Graph from \"../grap"
},
{
"path": "packages/core/src/interface/index.ts",
"chars": 102,
"preview": "export * from \"./graph\";\nexport * from \"./behavior\";\nexport * from \"./item\";\nexport * from \"./shape\";\n"
},
{
"path": "packages/core/src/interface/item.ts",
"chars": 6339,
"preview": "/* eslint @typescript-eslint/no-use-before-define: 0 */\nimport { IGroup, Point } from \"@antv/g-base\";\nimport {\n IBBox,\n"
},
{
"path": "packages/core/src/interface/shape.ts",
"chars": 2515,
"preview": "import { IGroup, IShape } from \"@antv/g-base\";\nimport { IPoint, Item, LabelStyle, ModelConfig } from \"../types\";\n\nexport"
},
{
"path": "packages/core/src/item/combo.ts",
"chars": 6775,
"preview": "import { IGroup } from \"@antv/g-base\";\nimport { ICombo, INode, IItemBaseConfig } from \"../interface/item\";\nimport Node f"
},
{
"path": "packages/core/src/item/edge.ts",
"chars": 6999,
"preview": "import { isString, isPlainObject, isNil, mix } from \"@antv/util\";\nimport { IEdge, INode, ICombo } from \"../interface/ite"
},
{
"path": "packages/core/src/item/hull.ts",
"chars": 8004,
"preview": "import { IGroup } from \"@antv/g-base\";\nimport { deepMix, isString } from \"@antv/util\";\nimport { parsePathString } from \""
},
{
"path": "packages/core/src/item/item.ts",
"chars": 19821,
"preview": "import { IGroup } from \"@antv/g-base\";\nimport {\n each,\n isNil,\n isPlainObject,\n isString,\n isBoolean,\n mix,\n deep"
},
{
"path": "packages/core/src/item/node.ts",
"chars": 6224,
"preview": "import { each, isNil, mix } from \"@antv/util\";\nimport { IEdge, INode } from \"../interface/item\";\nimport { IPoint, IShape"
},
{
"path": "packages/core/src/types/index.ts",
"chars": 18763,
"preview": "/* eslint @typescript-eslint/no-use-before-define: 0 */\nimport {\n IGroup,\n Event as GraphEvent,\n BBox,\n AnimateCfg,\n"
},
{
"path": "packages/core/src/util/base.ts",
"chars": 5382,
"preview": "import { isString, isNumber, isNil, isArray } from \"@antv/util\";\nimport { G6GraphEvent } from \"../interface/behavior\";\ni"
},
{
"path": "packages/core/src/util/color.ts",
"chars": 179,
"preview": "export const defaultSubjectColors = [\n \"#5F95FF\", // blue\n \"#61DDAA\",\n \"#65789B\",\n \"#F6BD16\",\n \"#7262FD\",\n \"#78D3F"
},
{
"path": "packages/core/src/util/graphic.ts",
"chars": 20213,
"preview": "import { IGroup, BBox } from \"@antv/g-base\";\nimport { vec2 } from \"@antv/matrix-util\";\nimport Global from \"../global\";\ni"
},
{
"path": "packages/core/src/util/index.ts",
"chars": 409,
"preview": "import * as MathUtil from \"./math\";\nimport * as GraphicUtil from \"./graphic\";\nimport * as PathUtil from \"./path\";\nimport"
},
{
"path": "packages/core/src/util/letterAspectRatio.ts",
"chars": 2199,
"preview": "export default {\n \" \": 0.3329986572265625,\n a: 0.5589996337890625,\n A: 0.6569992065429687,\n b: 0.58599853515625,\n B"
},
{
"path": "packages/core/src/util/math.ts",
"chars": 19629,
"preview": "import { Point, IGroup } from \"@antv/g-base\";\nimport { mat3, vec3, ext, vec2 } from \"@antv/matrix-util\";\nimport { isArra"
},
{
"path": "packages/core/src/util/path.ts",
"chars": 9620,
"preview": "import { vec2 } from \"@antv/matrix-util\";\nimport { catmullRom2Bezier } from \"@antv/path-util\";\nimport { IPoint } from \"."
},
{
"path": "packages/core/src/util/validation.ts",
"chars": 2846,
"preview": "import { isString, isPlainObject } from \"@antv/util\";\nimport {\n GraphData,\n TreeGraphData,\n NodeConfig,\n EdgeConfig,"
},
{
"path": "packages/core/tests/unit/index-spec.ts",
"chars": 192,
"preview": "import { version } from \"../../package.json\";\nimport Global from \"../../src/global\";\n\ndescribe(\"G6 version\", () => {\n i"
},
{
"path": "packages/core/tsconfig.json",
"chars": 357,
"preview": "{\n \"compilerOptions\": {\n \"module\": \"commonjs\",\n \"target\": \"es5\",\n \"lib\": [\"es5\", \"es6\", \"dom\", \"es2016\"],\n "
},
{
"path": "packages/core/vite.config.ts",
"chars": 961,
"preview": "import { defineConfig } from \"vite\";\nimport react from \"@vitejs/plugin-react\";\nimport path from \"path\";\n\nexport default "
},
{
"path": "packages/element/package.json",
"chars": 1048,
"preview": "{\n \"name\": \"@antv/f6-element\",\n \"version\": \"0.0.1\",\n \"description\": \"A Graph Visualization Framework in JavaScript\",\n"
},
{
"path": "packages/element/src/edges/index.ts",
"chars": 21,
"preview": "import \"./polyline\";\n"
},
{
"path": "packages/element/src/edges/polyline-util.ts",
"chars": 15249,
"preview": "import { each } from \"@antv/util\";\nimport { INode, ICombo } from \"@antv/f6-core\";\nimport { Point } from \"@antv/g-base\";\n"
},
{
"path": "packages/element/src/edges/polyline.ts",
"chars": 6632,
"preview": "import { Point, IGroup } from \"@antv/g-base\";\nimport { mix, each, isArray, isString } from \"@antv/util\";\nimport {\n regi"
},
{
"path": "packages/element/src/edges/router.ts",
"chars": 14053,
"preview": "/**\n * 通过配置不同的 costFunc, distFunc, constraints 可以得到不同效果的 router\n * generalRouter: 不限制搜索时的移动方向,避开障碍即可\n * orthogonal: 线必须沿"
},
{
"path": "packages/element/src/index.ts",
"chars": 36,
"preview": "import \"./nodes\";\nimport \"./edges\";\n"
},
{
"path": "packages/element/src/nodes/circle.ts",
"chars": 5824,
"preview": "import { IGroup, IShape } from \"@antv/g-base\";\nimport {\n registerNode,\n Item,\n NodeConfig,\n ShapeStyle,\n ShapeOptio"
},
{
"path": "packages/element/src/nodes/diamond.ts",
"chars": 6232,
"preview": "import { IGroup, IShape } from \"@antv/g-base\";\nimport {\n registerNode,\n Item,\n NodeConfig,\n ShapeStyle,\n BaseGlobal"
},
{
"path": "packages/element/src/nodes/donut.ts",
"chars": 5733,
"preview": "import { IGroup, IShape } from \"@antv/g-base\";\nimport {\n registerNode,\n Item,\n NodeConfig,\n ShapeStyle,\n ShapeOptio"
},
{
"path": "packages/element/src/nodes/ellipse.ts",
"chars": 5947,
"preview": "import { IGroup, IShape } from \"@antv/g-base\";\nimport {\n registerNode,\n Item,\n NodeConfig,\n ShapeStyle,\n BaseGlobal"
},
{
"path": "packages/element/src/nodes/image.ts",
"chars": 3981,
"preview": "import { IGroup, IShape } from \"@antv/g-base\";\nimport { registerNode, Item, NodeConfig } from \"@antv/f6-core\";\n\n/**\n * 基"
},
{
"path": "packages/element/src/nodes/index.ts",
"chars": 175,
"preview": "import \"./circle\";\nimport \"./rect\";\nimport \"./ellipse\";\nimport \"./diamond\";\nimport \"./triangle\";\nimport \"./modelRect\";\ni"
},
{
"path": "packages/element/src/nodes/modelRect.ts",
"chars": 15088,
"preview": "import { mix, isString } from \"@antv/util\";\nimport { IGroup, IShape } from \"@antv/g-base\";\nimport {\n registerNode,\n It"
},
{
"path": "packages/element/src/nodes/rect.ts",
"chars": 5565,
"preview": "import { mix } from \"@antv/util\";\nimport { IGroup, IShape } from \"@antv/g-base\";\nimport {\n registerNode,\n Item,\n Node"
},
{
"path": "packages/element/src/nodes/star.ts",
"chars": 12901,
"preview": "import { IGroup, IShape } from \"@antv/g-base\";\nimport {\n registerNode,\n Item,\n NodeConfig,\n ShapeStyle,\n ShapeOptio"
},
{
"path": "packages/element/src/nodes/triangle.ts",
"chars": 14582,
"preview": "import { IGroup, IShape } from \"@antv/g-base\";\nimport {\n registerNode,\n Item,\n NodeConfig,\n ShapeStyle,\n ShapeOptio"
},
{
"path": "packages/element/tests/unit/issues-spec.ts",
"chars": 16451,
"preview": "import G6 from \"@antv/g6\";\n\nconst div = document.createElement(\"div\");\ndiv.id = \"container\";\ndocument.body.appendChild(d"
},
{
"path": "packages/element/tests/unit/template-spec.ts",
"chars": 295,
"preview": "describe(\"template\", () => {\n const el = document.createElement(\"div\");\n el.id = \"test-div-id\";\n el.innerHTML = \"hell"
},
{
"path": "packages/element/vite.config.ts",
"chars": 967,
"preview": "import { defineConfig } from \"vite\";\nimport react from \"@vitejs/plugin-react\";\nimport path from \"path\";\n\nexport default "
},
{
"path": "packages/examples-alipay/app.acss",
"chars": 189,
"preview": ".container {\n min-height: 100%;\n}\n\n.content {\n width: 100%;\n}\n\n.tiny-button {\n font-size: 28rpx;\n padding: 0 0.7em;\n"
},
{
"path": "packages/examples-alipay/app.js",
"chars": 366,
"preview": "App({\n globalData: {},\n async onLaunch() {\n console.log(\"app onLaunch\");\n /**\n * RPC 调用示例\n */\n my.cal"
},
{
"path": "packages/examples-alipay/app.json",
"chars": 6165,
"preview": "{\n \"pages\": [\n \"pages/index/index\",\n \"pages/search/search\",\n \"pages/tree-graph/compact-box/index\",\n \"pages/"
},
{
"path": "packages/examples-alipay/common/components/block-list/block-list.acss",
"chars": 480,
"preview": ".block-list-container {\n width: 100%;\n display: flex;\n justify-content: center;\n background-color: #fff;\n}\n\n.block-l"
},
{
"path": "packages/examples-alipay/common/components/block-list/block-list.axml",
"chars": 419,
"preview": "<view class=\"block-list-container {{className}}\">\n <view class=\"block-list\">\n <block a:for=\"{{listData}}\">\n <na"
},
{
"path": "packages/examples-alipay/common/components/block-list/block-list.js",
"chars": 201,
"preview": "Component({\n methods: {\n onItemTap(e) {\n const { onItemTap } = this.props;\n const { name } = e.target.data"
},
{
"path": "packages/examples-alipay/common/components/block-list/block-list.json",
"chars": 24,
"preview": "{\n \"component\": true\n}\n"
},
{
"path": "packages/examples-alipay/common/components/search/search.acss",
"chars": 2052,
"preview": "page {\n background-color: #fff;\n}\n\n.page {\n padding: 0;\n}\n\n.search-bar {\n position: sticky;\n top: 0;\n background-co"
},
{
"path": "packages/examples-alipay/common/components/search/search.axml",
"chars": 2612,
"preview": "<view class=\"page\">\n <view class=\"search-bar\">\n <search-bar\n focus=\"{{true}}\"\n value=\"{{value}}\"\n pla"
},
{
"path": "packages/examples-alipay/common/components/search/search.js",
"chars": 3814,
"preview": "import { debounce } from \"../../../common/utils/common\";\nimport { componentList } from \"../../../utils/process\";\n// 搜索推荐"
},
{
"path": "packages/examples-alipay/common/components/search/search.json",
"chars": 312,
"preview": "{\n \"defaultTitle\": \"搜索\",\n \"transparentTitle\": \"none\",\n \"allowsBounceVertical\": \"NO\",\n \"usingComponents\": {\n \"sear"
},
{
"path": "packages/examples-alipay/common/utils/common.js",
"chars": 1213,
"preview": "function strLen(str = \"\") {\n let len = 0;\n for (let i = 0; i < str.length; i++) {\n if (str.charCodeAt(i) > 0 && str"
},
{
"path": "packages/examples-alipay/common/utils/context.js",
"chars": 226,
"preview": "import { measureText } from \"./common\";\n/**\n * 部分小程序context会缺少函数,补上\n */\nfunction wrapContext(ctx) {\n if (!ctx) return;\n"
},
{
"path": "packages/examples-alipay/common/utils/data.js",
"chars": 20084,
"preview": "// 下面是第一个tab中的内容\nexport const treeGraphContainer = [\n {\n name: \"紧凑树\",\n thumb: \"/common/images/icon/compactbox.png"
},
{
"path": "packages/examples-alipay/common/utils/debounce.js",
"chars": 247,
"preview": "export default function debounce(fn, wait) {\n let timeout;\n return function () {\n const ctx = this;\n const args "
},
{
"path": "packages/examples-alipay/common/utils/process.js",
"chars": 555,
"preview": "import { processSearchData } from \"./common\";\nimport {\n treeGraphContainer,\n generalGraphContainer,\n basicElementCont"
},
{
"path": "packages/examples-alipay/mini.project.json",
"chars": 165,
"preview": "{\n \"enableAppxNg\": true,\n \"enableNodeModuleBabelTransform\": true,\n \"node_modules_es6_whitelist\": [\"@antv/f6\"],\n \"com"
},
{
"path": "packages/examples-alipay/package.json",
"chars": 394,
"preview": "{\n \"name\": \"alipay\",\n \"version\": \"1.0.0\",\n \"description\": \"\",\n \"main\": \"app.js\",\n \"scripts\": {\n \"test\": \"echo \\\""
},
{
"path": "packages/examples-alipay/pages/animation/change-position-default/data.js",
"chars": 500,
"preview": "export default {\n nodes: [\n {\n id: \"a\",\n x: 200,\n y: 100,\n style: { fill: \"#5B8FF9\", stroke: nul"
},
{
"path": "packages/examples-alipay/pages/animation/change-position-default/index.acss",
"chars": 144,
"preview": "page {\n background-color: #f7f7f7;\n border: 1px solid rgba(0, 0, 0, 0);\n box-sizing: border-box;\n}\n\n.page-section-dem"
},
{
"path": "packages/examples-alipay/pages/animation/change-position-default/index.axml",
"chars": 175,
"preview": "<f6-canvas\n width=\"{{width}}\"\n height=\"{{height}}\"\n forceMini=\"{{forceMini}}\"\n pixelRatio=\"{{pixelRatio}}\"\n onTouch"
},
{
"path": "packages/examples-alipay/pages/animation/change-position-default/index.js",
"chars": 1770,
"preview": "import F6 from \"@antv/f6\";\nimport { wrapContext } from \"../../../common/utils/context\";\nimport data from \"./data\";\n\n/**\n"
},
{
"path": "packages/examples-alipay/pages/animation/change-position-default/index.json",
"chars": 117,
"preview": "{\n \"defaultTitle\": \"节点移动动画\",\n \"usingComponents\": {\n \"f6-canvas\": \"@antv/f6-alipay/es/container/container\"\n }\n}\n"
},
{
"path": "packages/examples-alipay/pages/animation/custom-animate-position/index.acss",
"chars": 144,
"preview": "page {\n background-color: #f7f7f7;\n border: 1px solid rgba(0, 0, 0, 0);\n box-sizing: border-box;\n}\n\n.page-section-dem"
},
{
"path": "packages/examples-alipay/pages/animation/custom-animate-position/index.axml",
"chars": 176,
"preview": "<f6-canvas\n width=\"{{width}}\"\n height=\"{{height}}\"\n forceMini=\"{{forceMini}}\"\n pixelRatio=\"{{pixelRatio}}\"\n onTouch"
},
{
"path": "packages/examples-alipay/pages/animation/custom-animate-position/index.js",
"chars": 2661,
"preview": "import F6 from \"@antv/f6\";\nimport { wrapContext } from \"../../../common/utils/context\";\n\n/**\n * customAnimate#position\n "
},
{
"path": "packages/examples-alipay/pages/animation/custom-animate-position/index.json",
"chars": 116,
"preview": "{\n \"defaultTitle\": \"自定义动画\",\n \"usingComponents\": {\n \"f6-canvas\": \"@antv/f6-alipay/es/container/container\"\n }\n}\n"
},
{
"path": "packages/examples-alipay/pages/animation/edge-edge/data.js",
"chars": 426,
"preview": "export default {\n nodes: [\n {\n id: \"node1\",\n x: 100,\n y: 100,\n label: \"Node 1\",\n labelCfg: "
},
{
"path": "packages/examples-alipay/pages/animation/edge-edge/index.acss",
"chars": 144,
"preview": "page {\n background-color: #f7f7f7;\n border: 1px solid rgba(0, 0, 0, 0);\n box-sizing: border-box;\n}\n\n.page-section-dem"
},
{
"path": "packages/examples-alipay/pages/animation/edge-edge/index.axml",
"chars": 176,
"preview": "<f6-canvas\n width=\"{{width}}\"\n height=\"{{height}}\"\n forceMini=\"{{forceMini}}\"\n pixelRatio=\"{{pixelRatio}}\"\n onTouch"
},
{
"path": "packages/examples-alipay/pages/animation/edge-edge/index.js",
"chars": 2485,
"preview": "import F6 from \"@antv/f6\";\nimport { wrapContext } from \"../../../common/utils/context\";\nimport data from \"./data\";\n\n/**\n"
},
{
"path": "packages/examples-alipay/pages/animation/edge-edge/index.json",
"chars": 115,
"preview": "{\n \"defaultTitle\": \"虚线运动\",\n \"usingComponents\": {\n \"f6-canvas\": \"@antv/f6-alipay/es/container/container\"\n }\n}\n"
},
{
"path": "packages/examples-alipay/pages/animation/edge-line-growth/data.js",
"chars": 426,
"preview": "export default {\n nodes: [\n {\n id: \"node1\",\n x: 100,\n y: 100,\n label: \"Node 1\",\n labelCfg: "
},
{
"path": "packages/examples-alipay/pages/animation/edge-line-growth/index.acss",
"chars": 144,
"preview": "page {\n background-color: #f7f7f7;\n border: 1px solid rgba(0, 0, 0, 0);\n box-sizing: border-box;\n}\n\n.page-section-dem"
},
{
"path": "packages/examples-alipay/pages/animation/edge-line-growth/index.axml",
"chars": 175,
"preview": "<f6-canvas\n width=\"{{width}}\"\n height=\"{{height}}\"\n forceMini=\"{{forceMini}}\"\n pixelRatio=\"{{pixelRatio}}\"\n onTouch"
},
{
"path": "packages/examples-alipay/pages/animation/edge-line-growth/index.js",
"chars": 2464,
"preview": "import F6 from \"@antv/f6\";\nimport { wrapContext } from \"../../../common/utils/context\";\nimport data from \"./data\";\n\n/**\n"
},
{
"path": "packages/examples-alipay/pages/animation/edge-line-growth/index.json",
"chars": 116,
"preview": "{\n \"defaultTitle\": \"无到有的边\",\n \"usingComponents\": {\n \"f6-canvas\": \"@antv/f6-alipay/es/container/container\"\n }\n}\n"
},
{
"path": "packages/examples-alipay/pages/animation/node-node/data.js",
"chars": 3011,
"preview": "export default {\n nodes: [\n {\n id: \"node1\",\n x: 100,\n y: 100,\n type: \"circle-animate\",\n siz"
},
{
"path": "packages/examples-alipay/pages/animation/node-node/index.acss",
"chars": 140,
"preview": "page {\n background-color: #f7f7f7;\n border: 1px solid rgba(0,0,0,0);\n box-sizing: border-box;\n}\n\n.page-section-demo {"
},
{
"path": "packages/examples-alipay/pages/animation/node-node/index.axml",
"chars": 175,
"preview": "<f6-canvas\n width=\"{{width}}\"\n height=\"{{height}}\"\n forceMini=\"{{forceMini}}\"\n pixelRatio=\"{{pixelRatio}}\"\n onTouch"
},
{
"path": "packages/examples-alipay/pages/animation/node-node/index.js",
"chars": 4791,
"preview": "import F6 from \"@antv/f6\";\nimport { wrapContext } from \"../../../common/utils/context\";\nimport data from \"./data\";\n\n/**\n"
},
{
"path": "packages/examples-alipay/pages/animation/node-node/index.json",
"chars": 115,
"preview": "{\n \"defaultTitle\": \"节点动画\",\n \"usingComponents\": {\n \"f6-canvas\": \"@antv/f6-alipay/es/container/container\"\n }\n}\n"
},
{
"path": "packages/examples-alipay/pages/animation/point-in-line/data.js",
"chars": 426,
"preview": "export default {\n nodes: [\n {\n id: \"node1\",\n x: 100,\n y: 100,\n label: \"Node 1\",\n labelCfg: "
},
{
"path": "packages/examples-alipay/pages/animation/point-in-line/index.acss",
"chars": 140,
"preview": "page {\n background-color: #f7f7f7;\n border: 1px solid rgba(0,0,0,0);\n box-sizing: border-box;\n}\n\n.page-section-demo {"
},
{
"path": "packages/examples-alipay/pages/animation/point-in-line/index.axml",
"chars": 175,
"preview": "<f6-canvas\n width=\"{{width}}\"\n height=\"{{height}}\"\n forceMini=\"{{forceMini}}\"\n pixelRatio=\"{{pixelRatio}}\"\n onTouch"
},
{
"path": "packages/examples-alipay/pages/animation/point-in-line/index.js",
"chars": 2925,
"preview": "import F6 from \"@antv/f6\";\nimport { wrapContext } from \"../../../common/utils/context\";\nimport data from \"./data\";\n\n/**\n"
},
{
"path": "packages/examples-alipay/pages/animation/point-in-line/index.json",
"chars": 117,
"preview": "{\n \"defaultTitle\": \"圆点沿边运动\",\n \"usingComponents\": {\n \"f6-canvas\": \"@antv/f6-alipay/es/container/container\"\n }\n}\n"
},
{
"path": "packages/examples-alipay/pages/animation/state-change-hover/data.js",
"chars": 681,
"preview": "const nodes = [];\nconst edges = [];\n\n// Center node\nconst centerNode = {\n id: \"center\",\n x: 500,\n y: 300,\n type: \"ce"
},
{
"path": "packages/examples-alipay/pages/animation/state-change-hover/index.acss",
"chars": 140,
"preview": "page {\n background-color: #f7f7f7;\n border: 1px solid rgba(0,0,0,0);\n box-sizing: border-box;\n}\n\n.page-section-demo {"
},
{
"path": "packages/examples-alipay/pages/animation/state-change-hover/index.axml",
"chars": 175,
"preview": "<f6-canvas\n width=\"{{width}}\"\n height=\"{{height}}\"\n forceMini=\"{{forceMini}}\"\n pixelRatio=\"{{pixelRatio}}\"\n onTouch"
},
{
"path": "packages/examples-alipay/pages/animation/state-change-hover/index.js",
"chars": 4286,
"preview": "import F6 from \"@antv/f6\";\nimport { wrapContext } from \"../../../common/utils/context\";\nimport { nodes, edges } from \"./"
},
{
"path": "packages/examples-alipay/pages/animation/state-change-hover/index.json",
"chars": 116,
"preview": "{\n \"defaultTitle\": \"状态与动画\",\n \"usingComponents\": {\n \"f6-canvas\": \"@antv/f6-alipay/es/container/container\"\n }\n}\n"
},
{
"path": "packages/examples-alipay/pages/elements/arc/data.js",
"chars": 613,
"preview": "export default {\n nodes: [\n {\n id: \"0\",\n x: 150,\n y: 50,\n },\n {\n id: \"1\",\n x: 350,\n "
},
{
"path": "packages/examples-alipay/pages/elements/arc/index.acss",
"chars": 140,
"preview": "page {\n background-color: #f7f7f7;\n border: 1px solid rgba(0,0,0,0);\n box-sizing: border-box;\n}\n\n.page-section-demo {"
},
{
"path": "packages/examples-alipay/pages/elements/arc/index.axml",
"chars": 175,
"preview": "<f6-canvas\n width=\"{{width}}\"\n height=\"{{height}}\"\n forceMini=\"{{forceMini}}\"\n pixelRatio=\"{{pixelRatio}}\"\n onTouch"
},
{
"path": "packages/examples-alipay/pages/elements/arc/index.js",
"chars": 2668,
"preview": "import F6 from \"@antv/f6\";\nimport { wrapContext } from \"../../../common/utils/context\";\nimport data from \"./data\";\n/**\n "
},
{
"path": "packages/examples-alipay/pages/elements/arc/index.json",
"chars": 113,
"preview": "{\n \"defaultTitle\": \"弧线\",\n \"usingComponents\": {\n \"f6-canvas\": \"@antv/f6-alipay/es/container/container\"\n }\n}\n"
},
{
"path": "packages/examples-alipay/pages/elements/area-chart/data.js",
"chars": 1279,
"preview": "export default {\n nodes: [\n {\n id: \"nodeD\",\n x: 150,\n y: 150,\n label: \"Area1\",\n type: \"area"
},
{
"path": "packages/examples-alipay/pages/elements/area-chart/index.acss",
"chars": 140,
"preview": "page {\n background-color: #f7f7f7;\n border: 1px solid rgba(0,0,0,0);\n box-sizing: border-box;\n}\n\n.page-section-demo {"
},
{
"path": "packages/examples-alipay/pages/elements/area-chart/index.axml",
"chars": 175,
"preview": "<f6-canvas\n width=\"{{width}}\"\n height=\"{{height}}\"\n forceMini=\"{{forceMini}}\"\n pixelRatio=\"{{pixelRatio}}\"\n onTouch"
},
{
"path": "packages/examples-alipay/pages/elements/area-chart/index.js",
"chars": 5037,
"preview": "import F6 from \"@antv/f6\";\nimport { wrapContext } from \"../../../common/utils/context\";\nimport data from \"./data\";\n/**\n "
},
{
"path": "packages/examples-alipay/pages/elements/area-chart/index.json",
"chars": 116,
"preview": "{\n \"defaultTitle\": \"面积图节点\",\n \"usingComponents\": {\n \"f6-canvas\": \"@antv/f6-alipay/es/container/container\"\n }\n}\n"
},
{
"path": "packages/examples-alipay/pages/elements/bar-chart/data.js",
"chars": 1287,
"preview": "export default {\n nodes: [\n {\n id: \"nodeA\",\n x: 150,\n y: 150,\n label: \"Bar1\",\n type: \"circl"
},
{
"path": "packages/examples-alipay/pages/elements/bar-chart/index.acss",
"chars": 140,
"preview": "page {\n background-color: #f7f7f7;\n border: 1px solid rgba(0,0,0,0);\n box-sizing: border-box;\n}\n\n.page-section-demo {"
},
{
"path": "packages/examples-alipay/pages/elements/bar-chart/index.axml",
"chars": 175,
"preview": "<f6-canvas\n width=\"{{width}}\"\n height=\"{{height}}\"\n forceMini=\"{{forceMini}}\"\n pixelRatio=\"{{pixelRatio}}\"\n onTouch"
},
{
"path": "packages/examples-alipay/pages/elements/bar-chart/index.js",
"chars": 4734,
"preview": "import F6 from \"@antv/f6\";\nimport { wrapContext } from \"../../../common/utils/context\";\nimport data from \"./data\";\n/**\n "
},
{
"path": "packages/examples-alipay/pages/elements/bar-chart/index.json",
"chars": 118,
"preview": "{\n \"defaultTitle\": \"南丁格尔图节点\",\n \"usingComponents\": {\n \"f6-canvas\": \"@antv/f6-alipay/es/container/container\"\n }\n}\n"
},
{
"path": "packages/examples-alipay/pages/elements/built-in-arrows/data.js",
"chars": 2772,
"preview": "import F6 from \"@antv/f6\";\n// 需要用到箭头\nconst data = {\n nodes: [\n {\n id: \"0\",\n x: 150,\n y: 50,\n },\n "
},
{
"path": "packages/examples-alipay/pages/elements/built-in-arrows/index.acss",
"chars": 140,
"preview": "page {\n background-color: #f7f7f7;\n border: 1px solid rgba(0,0,0,0);\n box-sizing: border-box;\n}\n\n.page-section-demo {"
},
{
"path": "packages/examples-alipay/pages/elements/built-in-arrows/index.axml",
"chars": 175,
"preview": "<f6-canvas\n width=\"{{width}}\"\n height=\"{{height}}\"\n forceMini=\"{{forceMini}}\"\n pixelRatio=\"{{pixelRatio}}\"\n onTouch"
},
{
"path": "packages/examples-alipay/pages/elements/built-in-arrows/index.js",
"chars": 1870,
"preview": "import F6 from \"@antv/f6\";\nimport { wrapContext } from \"../../../common/utils/context\";\nimport data from \"./data\";\n/**\n "
},
{
"path": "packages/examples-alipay/pages/elements/built-in-arrows/index.json",
"chars": 117,
"preview": "{\n \"defaultTitle\": \"默认内置箭头\",\n \"usingComponents\": {\n \"f6-canvas\": \"@antv/f6-alipay/es/container/container\"\n }\n}\n"
},
{
"path": "packages/examples-alipay/pages/elements/c-circle/data.js",
"chars": 378,
"preview": "export default {\n nodes: [\n { id: \"node1\", x: 250, y: 200, comboId: \"combo1\" },\n { id: \"node2\", x: 300, y: 200, c"
},
{
"path": "packages/examples-alipay/pages/elements/c-circle/index.acss",
"chars": 140,
"preview": "page {\n background-color: #f7f7f7;\n border: 1px solid rgba(0,0,0,0);\n box-sizing: border-box;\n}\n\n.page-section-demo {"
},
{
"path": "packages/examples-alipay/pages/elements/c-circle/index.axml",
"chars": 242,
"preview": "<text>Click the bottom marker to collapse/expand the combo.</text>\n<f6-canvas\n width=\"{{width}}\"\n height=\"{{height}}\"\n"
},
{
"path": "packages/examples-alipay/pages/elements/c-circle/index.js",
"chars": 4685,
"preview": "import F6 from \"@antv/f6\";\nimport { wrapContext } from \"../../../common/utils/context\";\nimport data from \"./data\";\n/**\n "
},
{
"path": "packages/examples-alipay/pages/elements/c-circle/index.json",
"chars": 121,
"preview": "{\n \"defaultTitle\": \"带有Marker的圆\",\n \"usingComponents\": {\n \"f6-canvas\": \"@antv/f6-alipay/es/container/container\"\n }\n}"
},
{
"path": "packages/examples-alipay/pages/elements/c-rect/data.js",
"chars": 378,
"preview": "export default {\n nodes: [\n { id: \"node1\", x: 250, y: 200, comboId: \"combo1\" },\n { id: \"node2\", x: 300, y: 200, c"
},
{
"path": "packages/examples-alipay/pages/elements/c-rect/index.acss",
"chars": 140,
"preview": "page {\n background-color: #f7f7f7;\n border: 1px solid rgba(0,0,0,0);\n box-sizing: border-box;\n}\n\n.page-section-demo {"
},
{
"path": "packages/examples-alipay/pages/elements/c-rect/index.axml",
"chars": 242,
"preview": "<text>Click the bottom marker to collapse/expand the combo.</text>\n<f6-canvas\n width=\"{{width}}\"\n height=\"{{height}}\"\n"
},
{
"path": "packages/examples-alipay/pages/elements/c-rect/index.js",
"chars": 5502,
"preview": "import F6 from \"@antv/f6\";\nimport { wrapContext } from \"../../../common/utils/context\";\nimport data from \"./data\";\n/**\n "
},
{
"path": "packages/examples-alipay/pages/elements/c-rect/index.json",
"chars": 122,
"preview": "{\n \"defaultTitle\": \"带有Marker的矩形\",\n \"usingComponents\": {\n \"f6-canvas\": \"@antv/f6-alipay/es/container/container\"\n }\n"
},
{
"path": "packages/examples-alipay/pages/elements/card/data.js",
"chars": 654,
"preview": "export default {\n nodes: [\n {\n name: \"cardNodeApp\",\n ip: \"127.0.0.1\",\n nodeError: true,\n dataTyp"
},
{
"path": "packages/examples-alipay/pages/elements/card/index.acss",
"chars": 140,
"preview": "page {\n background-color: #f7f7f7;\n border: 1px solid rgba(0,0,0,0);\n box-sizing: border-box;\n}\n\n.page-section-demo {"
},
{
"path": "packages/examples-alipay/pages/elements/card/index.axml",
"chars": 175,
"preview": "<f6-canvas\n width=\"{{width}}\"\n height=\"{{height}}\"\n forceMini=\"{{forceMini}}\"\n pixelRatio=\"{{pixelRatio}}\"\n onTouch"
},
{
"path": "packages/examples-alipay/pages/elements/card/index.js",
"chars": 13156,
"preview": "import F6 from \"@antv/f6\";\nimport { wrapContext } from \"../../../common/utils/context\";\nimport data from \"./data\";\n/**\n "
},
{
"path": "packages/examples-alipay/pages/elements/card/index.json",
"chars": 113,
"preview": "{\n \"defaultTitle\": \"卡片\",\n \"usingComponents\": {\n \"f6-canvas\": \"@antv/f6-alipay/es/container/container\"\n }\n}\n"
},
{
"path": "packages/examples-alipay/pages/elements/card-node/data.js",
"chars": 918,
"preview": "export default {\n nodes: [\n {\n title: \"node1\",\n error: true,\n nodeType: \"a\",\n id: \"node1\",\n "
},
{
"path": "packages/examples-alipay/pages/elements/card-node/index.acss",
"chars": 140,
"preview": "page {\n background-color: #f7f7f7;\n border: 1px solid rgba(0,0,0,0);\n box-sizing: border-box;\n}\n\n.page-section-demo {"
},
{
"path": "packages/examples-alipay/pages/elements/card-node/index.axml",
"chars": 175,
"preview": "<f6-canvas\n width=\"{{width}}\"\n height=\"{{height}}\"\n forceMini=\"{{forceMini}}\"\n pixelRatio=\"{{pixelRatio}}\"\n onTouch"
}
]
// ... and 2183 more files (download for full content)
About this extraction
This page contains the full source code of the antvis/F6 GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2383 files (16.2 MB), approximately 4.4M tokens, and a symbol index with 6717 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.