Compare commits

..

393 Commits

Author SHA1 Message Date
609ed7e3d3 chore(release): 🚀 publish
- @antv/x6-geometry@1.0.14
 - @antv/x6-vector@1.4.2
 - @antv/x6@1.34.5
2022-10-13 21:32:50 +08:00
8a8d14abfa fix: 🐛 check if the navigator global is available before usage (#2768) 2022-10-13 10:39:54 +08:00
c6ca04317b chore: 🔧 remove version and track file for publish problem (#2763) 2022-10-10 15:38:28 +08:00
a57091306c chore(release): 🚀 publish
- @antv/x6-react-components@1.1.19
 - @antv/x6-react-shape@1.6.3
 - @antv/x6-vue-shape@1.5.3
 - @antv/x6@1.34.3
2022-10-10 12:31:53 +08:00
8f0b6fc6e4 chore: 🔧 change publish opts (#2762) 2022-10-10 12:28:03 +08:00
28341ac102 chore: 🔧 update publish script (#2757) 2022-10-09 22:39:23 +08:00
2e066ab625 2739/revert snapline sharp option deprecation (#2746)
* fix: 🐛 re-enable alternative line style in snapline

* docs(snapline): 📚️ remove deprecation notice

* fix: 🐛 revert import order
2022-10-09 22:33:59 +08:00
e09cb8ce93 fix: 🐛 add resizeOptions to getContentArea (#2745)
#2408
2022-10-09 22:25:14 +08:00
232064b74c chore: update contributors [skip ci] 2022-10-07 01:30:49 +00:00
64710553ee chore: update contributors [skip ci] 2022-10-06 01:30:19 +00:00
78c462ed79 chore: update AUTHORS [skip ci] 2022-09-30 08:46:01 +00:00
4954578288 chore: update contributors [skip ci] 2022-09-30 08:38:57 +00:00
6c87514ce7 docs:修复中文文档关于zIndex描述中的错别字 (#2738) 2022-09-30 16:38:33 +08:00
1f3fbd7993 docs: 📚️ color not support gradients (#2734)
Co-authored-by: 文瑀 <wenyu.jqq@antfin.com>
2022-09-28 18:13:07 +08:00
ff24e5eef7 chore: update AUTHORS [skip ci] 2022-09-28 10:03:04 +00:00
481c6e1963 chore: update contributors [skip ci] 2022-09-28 09:56:58 +00:00
f33a2979a2 docs: 📚️ Translate some docs\tutorial\intermediate .md to english (#2722)
* Translate to en using deepl.com

* Fix accessibility issue: wrong formated link

Co-authored-by: Thomas Zeugner <thomas.zeugner@kuka.com>
2022-09-28 17:56:33 +08:00
505d8dd89a chore(deps): bump actions/stale from 5 to 6 (#2721)
Bumps [actions/stale](https://github.com/actions/stale) from 5 to 6.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/stale
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-28 17:42:42 +08:00
bda642cd15 chore: 🔧 update react-shape version for sites demo (#2732)
* chore(release): 🚀 publish

 - @antv/x6-react-components@1.1.18
 - @antv/x6-react-shape@1.6.2
 - @antv/x6-vue-shape@1.5.2
 - @antv/x6@1.34.2

* chore: 🔧 update react-shape version for sites demo

Co-authored-by: 文瑀 <wenyu.jqq@antfin.com>
2022-09-28 13:50:42 +08:00
9c539efab9 chore: update contributors [skip ci] 2022-09-23 01:32:31 +00:00
1cc9d2940c chore: update contributors [skip ci] 2022-09-20 14:40:24 +00:00
d49cf472a2 fix: 🐛 add case sensitive attrs (#2711)
* fix: 🐛 add case sensitive attrs

* chore(release): 🚀 publish

 - @antv/x6-react-components@1.1.18
 - @antv/x6-react-shape@1.6.2
 - @antv/x6-vue-shape@1.5.2
 - @antv/x6@1.34.2

Co-authored-by: 文瑀 <wenyu.jqq@antfin.com>
2022-09-20 22:40:00 +08:00
fee4b13750 feat: foreignObject内部元素默认不触发拖动和选中行为 close #2549 (#2676)
* feat:  foreignObject内部元素默认不触发拖动和选中行为 close #2549

* fix: 🐛 add return type
2022-09-20 22:03:53 +08:00
7c43726a2d chore: update contributors [skip ci] 2022-09-20 05:52:00 +00:00
4c5354ab70 fix: 🐛 fix scroller options typo (#2706)
* chore(release): 🚀 publish

 - @antv/x6-react-components@1.1.17
 - @antv/x6-vue-shape@1.5.1
 - @antv/x6@1.34.1

* fix: 🐛 fix scroller options typo
2022-09-20 13:51:35 +08:00
7725bacc93 docs: 📚️ update demo for readme (#2707) 2022-09-20 13:51:19 +08:00
f9b2600353 chore: update AUTHORS [skip ci] 2022-09-15 01:54:18 +00:00
d4393d6a39 chore: 🔧 update react-resize-detector version (#2684) 2022-09-15 09:48:23 +08:00
f0ee53a125 chore: update contributors [skip ci] 2022-09-15 01:34:45 +00:00
57c8525bb4 chore: update AUTHORS [skip ci] 2022-09-14 13:35:43 +00:00
9f3dfb7a8d chore: update AUTHORS [skip ci] 2022-09-14 13:13:47 +00:00
72b050c386 docs: change changelog href (#2679)
Co-authored-by: 薛腾飞 <xuetf@maycur.com>
2022-09-14 21:07:05 +08:00
0c024cefed docs: fix the docs in use Vue3 Teleport (#2677) 2022-09-14 21:06:30 +08:00
8abcb4bca0 fix: 🐛 add page size check condition (#2675) 2022-09-14 09:28:51 +08:00
5f53a09621 chore: update contributors [skip ci] 2022-09-13 01:31:21 +00:00
9f33e01a82 chore: update contributors [skip ci] 2022-09-12 09:17:31 +00:00
f846067448 feat: dnd support dndContainer. close #2562 #2572 (#2585) 2022-09-12 17:17:07 +08:00
8a6338ae3c chore: update contributors [skip ci] 2022-09-11 01:30:51 +00:00
3a79c686cd docs: 📚️ add qrcode for communication (#2651) 2022-09-08 15:28:23 +08:00
7db7a15cac chore: update contributors [skip ci] 2022-09-08 01:32:46 +00:00
375c3b190c chore: update contributors [skip ci] 2022-09-07 13:44:49 +00:00
24892181ca chore: 🔧 add publish cmd (#2622)
* chore: 🔧 add publish cmd

* chore: 🔧 delete release-it cmd
2022-09-07 21:44:27 +08:00
841531ecc1 chore: update contributors [skip ci] 2022-09-05 03:26:19 +00:00
2460f20a42 chore(release): 🚀 publish
- @antv/x6-vue-shape@1.5.0
 - @antv/x6@1.34.0
2022-09-05 11:25:33 +08:00
c8f8b9b4e0 fix: 🐛 update style (#2621) 2022-09-05 11:22:19 +08:00
0d0d973d3e fix: 🐛 change the update function name to avoid unnecessary updates (#2620) 2022-09-04 21:41:53 +08:00
eed25260af chore: update contributors [skip ci] 2022-09-04 01:32:43 +00:00
9f1130f260 chore: update contributors [skip ci] 2022-09-03 01:34:05 +00:00
cd9df4d609 chore: update AUTHORS [skip ci] 2022-09-02 11:02:36 +00:00
eb195abe3c chore: update contributors [skip ci] 2022-09-02 10:55:55 +00:00
fa8f71a3e1 doc: fix prop names of menu component in doc (#2615)
Co-authored-by: 雪奈 <xuenai.zxl@antgroup.com>
2022-09-02 18:55:29 +08:00
4171975d62 chore: update contributors [skip ci] 2022-09-01 11:10:58 +00:00
f0bbb828a3 fix: 🐛 support percent in edge button tool (#2608) 2022-09-01 19:10:34 +08:00
d52ddfad87 fix: fix problem that selection rubberband cannot be created (#2606)
* docs: 📚️ remove update methods in scroller

* chore: 🔧 update x6-sites deps

* fix: 🐛 fix problem that selection rubberband cannot be created
2022-09-01 17:41:47 +08:00
5c39bcf2c8 chore: update contributors [skip ci] 2022-09-01 01:33:45 +00:00
8cac05deaf chore: update AUTHORS [skip ci] 2022-08-29 09:20:21 +00:00
96a387822e chore: update contributors [skip ci] 2022-08-29 09:17:36 +00:00
2f3a565843 fix: 🐛修复 issue #2504问题 (#2540) 2022-08-29 17:17:14 +08:00
64de4c7753 chore: update contributors [skip ci] 2022-08-29 09:14:12 +00:00
502ceb1abb fix: 🐛 #2581 修复 scheduler 任务调度的问题 (#2581) (#2582) 2022-08-29 17:13:52 +08:00
0509fd4897 chore: update contributors [skip ci] 2022-08-29 01:31:02 +00:00
1f6196e663 refactor: ♻️ refactor x6 vue shape. close #2566 (#2569) 2022-08-26 11:56:26 +08:00
e9de0ba4c0 chore: update contributors [skip ci] 2022-08-26 01:31:29 +00:00
8ab3810c5e chore: update contributors [skip ci] 2022-08-25 14:05:08 +00:00
7405eba4e4 chore(deps): bump @actions/core in /scripts/monorepo-semantic-release (#2544)
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.2.6 to 1.9.1.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

---
updated-dependencies:
- dependency-name: "@actions/core"
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-25 22:03:57 +08:00
b1add84978 chore: update contributors [skip ci] 2022-08-25 13:46:44 +00:00
d51c0db472 feat: support scroller resize direction (#2408)
* feat:  support scroller resize direction

Closes: #2323

* feat:  adjust calcContextArea param

Co-authored-by: MrMengJ <mrmengj@gmail.com>
2022-08-25 21:46:18 +08:00
59919533ce chore: update contributors [skip ci] 2022-08-20 01:31:01 +00:00
43fee42084 chore: update contributors [skip ci] 2022-08-19 01:31:35 +00:00
7066d63a35 chore: update contributors [skip ci] 2022-08-18 01:31:54 +00:00
0ebf120be3 fix: 🐛 fontSize拼写错误 #2531 (#2533) 2022-08-17 23:14:46 +08:00
710c249c15 chore: update contributors [skip ci] 2022-08-17 15:04:52 +00:00
e4d3c2b253 fix: 🐛 #2505 修复toggleVisible之后导致不渲染的问题 (#2520) 2022-08-17 23:04:20 +08:00
e83b1ed507 fix(history): 🐛 try to merge move+embed into 1 undo (#2492) 2022-08-17 23:03:25 +08:00
cc2cd5fdb8 chore: update contributors [skip ci] 2022-08-16 14:02:03 +00:00
17dcde8426 fix: 🐛 fix some issues (#2528)
1、解决点击画布时,input无法正常失去焦点
2、添加touch-action: none;阻止移动端中滑动节点页面一起移动
3、https://github.com/antvis/X6/issues/2527
2022-08-16 22:01:31 +08:00
a9dcc84994 chore: update contributors [skip ci] 2022-08-13 01:30:53 +00:00
725372fa96 chore: 🔧 release @antv/x6@1.33.1 2022-08-12 08:09:15 +08:00
46af7cd55a fix: 🐛 not sort views after visible change (#2501) 2022-08-12 08:01:02 +08:00
e7f3257640 chore: update contributors [skip ci] 2022-08-11 09:57:54 +00:00
9791dbb09f docs: 📚️ modernize react portal usage and examples (#2491) 2022-08-11 17:57:42 +08:00
ff2d29889d docs: 📚️ add deprecation notice for Snapline.sharp (#2490) 2022-08-11 17:57:29 +08:00
74b8256ce1 chore: update contributors [skip ci] 2022-08-10 01:30:20 +00:00
2248b27258 docs: 📚️ specify createEdge description (#2473) 2022-08-08 21:41:36 +08:00
f7bf8219c3 chore: 🔧 release @antv/x6@1.33.0 2022-08-08 20:52:44 +08:00
4ffb61912b fix: fix some issue (#2472)
* fix: 🐛 fix set edge target error

* fix: 🐛 sort views after cell visible changed

* fix: 🐛 filter empty cells in selection:changed event

* chore: 🔧 update release tag name
2022-08-08 20:34:15 +08:00
59fb1d2e3a chore: 🔧 release @antv/x6-vue-shape@1.4.2 2022-08-08 16:46:16 +08:00
6b85512a25 chore: 🔧 update git tag for release-it (#2470) 2022-08-08 16:40:22 +08:00
c7269af2ef chore: 🔧 add release-it (#2469) 2022-08-08 16:21:10 +08:00
e3d6d5e694 chore: 🔧 update x6 version (#2468) 2022-08-08 15:48:40 +08:00
8dde11951f chore: update contributors [skip ci] 2022-08-05 01:30:34 +00:00
c90ede231e chore: update AUTHORS [skip ci] 2022-08-04 01:22:35 +00:00
ae51381992 docs(README.md): fix typo of CDN (#2450) 2022-08-04 09:15:35 +08:00
b10ef693e8 chore: update AUTHORS [skip ci] 2022-08-02 07:49:25 +00:00
f5c5537650 chore: update contributors [skip ci] 2022-08-02 07:43:13 +00:00
ccf44c1732 docs: add some methods for model documentation (#2451)
* docs: add addCells method for model documentation

* docs: add some methods for model documentation

* docs: add more description for model documentation
2022-08-02 15:42:47 +08:00
5a865db99e chore: update contributors [skip ci] 2022-08-01 21:36:50 +00:00
c472648ae1 fix: 升级vue-demi版本 (#2435) 2022-08-02 05:36:28 +08:00
6351a5064d feat: preventDefaultContextMenu support function (#2410)
* feat:  preventDefaultContextMenu support function

Closes: #2409

* refactor: ♻️ adjust preventDefaultContextMenu function param

Co-authored-by: MrMengJ <mrmengj@gmail.com>
2022-08-02 05:34:06 +08:00
e02aefdc4f chore: update contributors [skip ci] 2022-08-01 01:31:03 +00:00
922c98632c chore: update contributors [skip ci] 2022-07-27 01:31:03 +00:00
dc59ce1d85 chore(deps): bump file-type from 16.5.0 to 16.5.4 (#2407)
Bumps [file-type](https://github.com/sindresorhus/file-type) from 16.5.0 to 16.5.4.
- [Release notes](https://github.com/sindresorhus/file-type/releases)
- [Commits](https://github.com/sindresorhus/file-type/compare/v16.5.0...v16.5.4)

---
updated-dependencies:
- dependency-name: file-type
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-23 13:33:53 +08:00
8db399f6fc chore: 🔧 change release commit message (#2404) 2022-07-22 17:01:24 +08:00
edd1b36abc chore: 🔧 add release script (#2403) 2022-07-22 16:41:57 +08:00
794df7f497 chore: 🔧 change x6 version (#2402) 2022-07-22 16:08:33 +08:00
35774995b7 chore: update AUTHORS [skip ci] 2022-07-22 07:28:13 +00:00
d67bcc104d chore: update contributors [skip ci] 2022-07-22 07:21:44 +00:00
de80eb588b docs: 📖 the tool of edge documentation update (#2400)
Co-authored-by: hetengfei <hetengfei@able-elec.com>
2022-07-22 15:21:33 +08:00
b9906c9fa5 fix: Enhance isinputevent method (#2395) 2022-07-22 15:21:10 +08:00
c4b10e38a5 chore: update contributors [skip ci] 2022-07-20 03:59:19 +00:00
4b104eb73e feat: New property for edge connection attr (#2362)
* feat:  New property for edge connection attr

* docs: 📚️ typo
2022-07-20 11:58:59 +08:00
aee252f5d7 chore(deps): bump terser from 4.8.0 to 4.8.1 (#2377)
Bumps [terser](https://github.com/terser/terser) from 4.8.0 to 4.8.1.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/commits)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-20 10:30:29 +08:00
b3c2adb4b8 chore(deps): bump glob-parent in /scripts/monorepo-semantic-release (#2375)
Bumps [glob-parent](https://github.com/gulpjs/glob-parent) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/gulpjs/glob-parent/releases)
- [Changelog](https://github.com/gulpjs/glob-parent/blob/main/CHANGELOG.md)
- [Commits](https://github.com/gulpjs/glob-parent/compare/v5.1.1...v5.1.2)

---
updated-dependencies:
- dependency-name: glob-parent
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-20 10:30:18 +08:00
7eac6c4645 chore: update contributors [skip ci] 2022-07-20 01:37:50 +00:00
67df6722ae chore: 🔧 comment GitHub actions (#2358)
* chore: 🔧 literally just commenting GitHub actions

* chore: 🔧 correct comment in release.yml
2022-07-20 09:37:25 +08:00
438e394b99 chore: 🔧 include src to x6-react-shape build files (#2347) 2022-07-12 12:09:51 +08:00
4422d2099a chore: update contributors [skip ci] 2022-07-11 01:30:57 +00:00
df4bcf653f fix: fix selection box incorrect position when enable snapline (#2310)
Closes: #2309

Co-authored-by: MrMengJ <mrmengj@gmail.com>
2022-07-10 13:35:01 +08:00
206f589bb3 chore: update contributors [skip ci] 2022-07-10 05:21:41 +00:00
b27a3ff9ef feat: support shift key multi-selection (#2302)
* feat: support shift key multi-selection

Closes: #2248

* feat: add config options for multiple selection and update the docs

Co-authored-by: MrMengJ <mrmengj@gmail.com>
2022-07-10 13:21:14 +08:00
06702ce221 fix: 🐛 normalize angle when rotating (#2341) 2022-07-10 07:06:38 +08:00
02579cb1c1 fix: 🐛 fix embeded event trigger error (#2340) 2022-07-09 17:24:29 +08:00
6a2a59b1cb feat: support padding options for manhattan router (#2339) 2022-07-09 15:43:03 +08:00
1fbba70e7e chore: update contributors [skip ci] 2022-07-09 00:45:05 +00:00
df7a0ee73c fix: 🐛 snapline constructor init offset close #2318 (#2338) 2022-07-09 08:44:38 +08:00
3dcafac5ac fix: 🐛 set visible true when init cells (#2337) 2022-07-09 08:41:43 +08:00
8b4192bd5f chore: update contributors [skip ci] 2022-07-08 10:15:59 +00:00
829406e81b feat: add clipboard:changed event (#2335) 2022-07-08 18:15:33 +08:00
f907d37cb1 feat: #2333 Set excludeNodes for manhattan args (#2334) 2022-07-08 17:24:24 +08:00
3b4aab93a6 fix: 🐛 add x6-port-groupName class for port container (#2331) 2022-07-08 16:31:15 +08:00
ce3e1fc6be chore: update AUTHORS [skip ci] 2022-07-08 07:40:50 +00:00
9bda76514a chore(deps): bump moment in /scripts/monorepo-semantic-release (#2329)
Bumps [moment](https://github.com/moment/moment) from 2.29.2 to 2.29.4.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.2...2.29.4)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-08 15:34:48 +08:00
58b2921bfb chore(deps): bump moment from 2.29.2 to 2.29.4 (#2330)
Bumps [moment](https://github.com/moment/moment) from 2.29.2 to 2.29.4.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.2...2.29.4)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-08 15:34:18 +08:00
608f61c3cd chore: 🔧 reduce the version gitleaks-actions to 1.6.0 (#2328) 2022-07-08 14:59:04 +08:00
b43b8f028a docs: 📚️ add qa and changelog link (#2327) 2022-07-08 14:56:12 +08:00
6cf6d31998 chore(deps): bump zricethezav/gitleaks-action from 1.6.0 to 2.0.4 (#2308)
Bumps [zricethezav/gitleaks-action](https://github.com/zricethezav/gitleaks-action) from 1.6.0 to 2.0.4.
- [Release notes](https://github.com/zricethezav/gitleaks-action/releases)
- [Commits](https://github.com/zricethezav/gitleaks-action/compare/v1.6.0...v2.0.4)

---
updated-dependencies:
- dependency-name: zricethezav/gitleaks-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-05 21:15:05 +08:00
b3edfc7590 chore: update contributors [skip ci] 2022-07-05 13:14:39 +00:00
045499511d fix: fix global keyboard event is invalid in some case (#2301)
Closes: #2300

Co-authored-by: MrMengJ <mrmengj@gmail.com>
2022-07-05 21:14:12 +08:00
1f5d5d1aca chore: 🔧 update x6 version (#2314) 2022-07-05 19:49:37 +08:00
7c513e7af1 chore: update AUTHORS [skip ci] 2022-07-05 05:56:53 +00:00
1444b16222 chore: update contributors [skip ci] 2022-07-05 05:50:41 +00:00
c89f8599ce fix: 🐛 Fixed the bug that node can't be draging. (#2312)
* fix: 🐛 Fixed the bug that node can't be draging
2022-07-05 13:50:19 +08:00
d622db6d6b fix: 🐛 pick the max zindex node when frontOnly enabled in embending (#2294) 2022-06-30 20:05:13 +08:00
ceead471ff chore: update AUTHORS [skip ci] 2022-06-30 07:59:43 +00:00
0696064480 chore: update contributors [skip ci] 2022-06-30 07:55:50 +00:00
0d2318605e docs: recorrect the docs of custom-node (#2292) 2022-06-30 15:53:47 +08:00
0416d0af4e chore: 🔧 update version in package.json (#2283) 2022-06-29 14:12:57 +08:00
a60e8f1653 chore: 🔧 code format and update version (#2282) 2022-06-29 14:03:19 +08:00
e4f38cd9e8 chore: 🔧 pin gitleaks-actions to v1.6.0 (#2281) 2022-06-29 13:51:30 +08:00
8cb9085dc1 fix: 🐛 fix allowNode option affects port connections (#2279) 2022-06-29 13:46:49 +08:00
997430abba chore: update contributors [skip ci] 2022-06-27 11:49:00 +00:00
166b9346b3 fix: 🐛 Fixed the bug that options.connecting.allowEdge does not take effect when options.connecting.snap is setting true (##2024) (#2265) 2022-06-27 19:48:39 +08:00
2750d0e69e chore: update contributors [skip ci] 2022-06-27 01:31:14 +00:00
3e5189c2b7 chore: update AUTHORS [skip ci] 2022-06-23 11:36:27 +00:00
6045888e6a chore: update contributors [skip ci] 2022-06-23 11:30:15 +00:00
933c6ed8e0 fix: 🐛 Fixed the bug that node moved when draging port #2216 (#2258) 2022-06-23 19:29:53 +08:00
df47d90889 chore: update AUTHORS [skip ci] 2022-06-20 12:02:28 +00:00
1648f12e83 chore: update contributors [skip ci] 2022-06-17 01:29:47 +00:00
815b044618 chore: update contributors [skip ci] 2022-06-16 01:31:31 +00:00
7e39cf1374 chore: 🔧 fix malfunctioning github workflow (#2222) 2022-06-15 19:48:06 +08:00
8b75ee89a4 fix: 🐛 add some case sensitive attr (#2220) 2022-06-15 19:47:28 +08:00
5a24508334 chore: update contributors [skip ci] 2022-06-13 12:34:33 +00:00
b259afc9f2 perf: use native SVG elements in snapline instead of DOM elements and jQuery (#2195)
* chore: 🔧 bump versions

* perf(snapline): use native SVG capabilities

* fix(snapline): 🐛 use built-in SVG tools instead of native ones
2022-06-13 20:34:09 +08:00
992d664c53 chore: update AUTHORS [skip ci] 2022-06-10 11:26:59 +00:00
8ce480c6b9 chore(deps): bump semantic-release in /scripts/monorepo-semantic-release (#2207)
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 17.2.2 to 19.0.3.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v17.2.2...v19.0.3)

---
updated-dependencies:
- dependency-name: semantic-release
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-10 19:22:09 +08:00
e978b8d0e5 chore: update contributors [skip ci] 2022-06-10 11:21:52 +00:00
a335e1c52f docs: Change the getCellById method parameter name (#2209)
The cell is changed to id
2022-06-10 19:20:36 +08:00
3e4481063d chore: update contributors [skip ci] 2022-06-10 09:31:57 +00:00
50d21787c4 fix(selection): 🐛 Fix nodes in multiple-selection being more than once due to incorrect event handler stopper 2022-06-10 17:31:33 +08:00
32cae56c40 chore(release): @antv/x6-svg-to-shape@1.0.6 [skip ci]
## @antv/x6-svg-to-shape [1.0.6](https://github.com/antvis/x6/compare/@antv/x6-svg-to-shape@1.0.5...@antv/x6-svg-to-shape@1.0.6) (2022-06-07)
2022-06-07 09:10:39 +00:00
667720efb9 chore(release): @antv/x6-sites@1.5.0 [skip ci]
# @antv/x6-sites [1.5.0](https://github.com/antvis/x6/compare/@antv/x6-sites@1.4.1...@antv/x6-sites@1.5.0) (2022-06-07)

### Bug Fixes

* 🐛 add updateCellId api ([#1739](https://github.com/antvis/x6/issues/1739)) ([78cdb3b](78cdb3bd56))
* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 release x6 v1.28.2 ([#1654](https://github.com/antvis/x6/issues/1654)) ([745b90a](745b90ac94))

### Features

*  add insertPort api ([#1763](https://github.com/antvis/x6/issues/1763)) ([6809dba](6809dba2d8))
* vue3支持使用useTeleport ([#2078](https://github.com/antvis/x6/issues/2078)) ([b8c2175](b8c217572a))
2022-06-07 09:10:35 +00:00
76d98ded26 chore(release): @antv/x6-sites-demos@1.2.1 [skip ci]
## @antv/x6-sites-demos [1.2.1](https://github.com/antvis/x6/compare/@antv/x6-sites-demos@1.2.0...@antv/x6-sites-demos@1.2.1) (2022-06-07)

### Bug Fixes

* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 update x6 version ([#1655](https://github.com/antvis/x6/issues/1655)) ([07037be](07037beb59))
2022-06-07 09:10:29 +00:00
3302c56bd4 chore(release): @antv/x6-example-features@1.2.2 [skip ci]
## @antv/x6-example-features [1.2.2](https://github.com/antvis/x6/compare/@antv/x6-example-features@1.2.1...@antv/x6-example-features@1.2.2) (2022-06-07)

### Bug Fixes

* 🐛 optimize contextmenu tools ([#1391](https://github.com/antvis/x6/issues/1391)) ([cc01fdf](cc01fdf208))
* 🐛 update x6-react-shape version ([#1425](https://github.com/antvis/x6/issues/1425)) ([4208846](4208846337))

### Performance Improvements

* ️ add simple config to remove rect and text element ([#1449](https://github.com/antvis/x6/issues/1449)) ([0b5f241](0b5f2413f0))
2022-06-07 09:10:23 +00:00
3dba62a858 chore(release): @antv/x6-app-er@1.1.7 [skip ci]
## @antv/x6-app-er [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-er@1.1.6...@antv/x6-app-er@1.1.7) (2022-06-07)
2022-06-07 09:10:18 +00:00
9befb7d8db chore(release): @antv/x6-app-draw@1.1.6 [skip ci]
## @antv/x6-app-draw [1.1.6](https://github.com/antvis/x6/compare/@antv/x6-app-draw@1.1.5...@antv/x6-app-draw@1.1.6) (2022-06-07)
2022-06-07 09:10:14 +00:00
e1e295b64e chore(release): @antv/x6-app-dag@1.1.7 [skip ci]
## @antv/x6-app-dag [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-dag@1.1.6...@antv/x6-app-dag@1.1.7) (2022-06-07)
2022-06-07 09:10:10 +00:00
06fdf6315b chore(release): @antv/x6-package-json@1.0.2 [skip ci]
## @antv/x6-package-json [1.0.2](https://github.com/antvis/x6/compare/@antv/x6-package-json@1.0.1...@antv/x6-package-json@1.0.2) (2022-06-07)
2022-06-07 09:10:07 +00:00
bc6e8bcb28 chore(deps): bump codecov/codecov-action from 1 to 3 (#2189)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 1 to 3.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/master/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v1...v3)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-07 16:54:49 +08:00
892d74e56b chore(deps): bump actions/stale from 3 to 5 (#2188)
Bumps [actions/stale](https://github.com/actions/stale) from 3 to 5.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/v3...v5)

---
updated-dependencies:
- dependency-name: actions/stale
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-07 16:54:31 +08:00
bf9f6f1947 chore(deps): bump dessant/lock-threads from 2 to 3 (#2187)
Bumps [dessant/lock-threads](https://github.com/dessant/lock-threads) from 2 to 3.
- [Release notes](https://github.com/dessant/lock-threads/releases)
- [Changelog](https://github.com/dessant/lock-threads/blob/master/CHANGELOG.md)
- [Commits](https://github.com/dessant/lock-threads/compare/v2...v3)

---
updated-dependencies:
- dependency-name: dessant/lock-threads
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-07 16:54:05 +08:00
4304dd9322 chore(deps): bump actions/cache from 2 to 3 (#2186)
Bumps [actions/cache](https://github.com/actions/cache) from 2 to 3.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-07 16:53:47 +08:00
4381a8a339 chore(release): @antv/x6-sites@1.5.0 [skip ci]
# @antv/x6-sites [1.5.0](https://github.com/antvis/x6/compare/@antv/x6-sites@1.4.1...@antv/x6-sites@1.5.0) (2022-06-06)

### Bug Fixes

* 🐛 add updateCellId api ([#1739](https://github.com/antvis/x6/issues/1739)) ([78cdb3b](78cdb3bd56))
* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 release x6 v1.28.2 ([#1654](https://github.com/antvis/x6/issues/1654)) ([745b90a](745b90ac94))

### Features

*  add insertPort api ([#1763](https://github.com/antvis/x6/issues/1763)) ([6809dba](6809dba2d8))
* vue3支持使用useTeleport ([#2078](https://github.com/antvis/x6/issues/2078)) ([b8c2175](b8c217572a))
2022-06-06 04:00:32 +00:00
fc2fccaee0 chore(release): @antv/x6-sites-demos@1.2.1 [skip ci]
## @antv/x6-sites-demos [1.2.1](https://github.com/antvis/x6/compare/@antv/x6-sites-demos@1.2.0...@antv/x6-sites-demos@1.2.1) (2022-06-06)

### Bug Fixes

* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 update x6 version ([#1655](https://github.com/antvis/x6/issues/1655)) ([07037be](07037beb59))
2022-06-06 04:00:28 +00:00
a5c75d3e0f chore(release): @antv/x6-example-features@1.2.2 [skip ci]
## @antv/x6-example-features [1.2.2](https://github.com/antvis/x6/compare/@antv/x6-example-features@1.2.1...@antv/x6-example-features@1.2.2) (2022-06-06)

### Bug Fixes

* 🐛 optimize contextmenu tools ([#1391](https://github.com/antvis/x6/issues/1391)) ([cc01fdf](cc01fdf208))
* 🐛 update x6-react-shape version ([#1425](https://github.com/antvis/x6/issues/1425)) ([4208846](4208846337))

### Performance Improvements

* ️ add simple config to remove rect and text element ([#1449](https://github.com/antvis/x6/issues/1449)) ([0b5f241](0b5f2413f0))
2022-06-06 04:00:23 +00:00
049090e009 chore(release): @antv/x6-app-er@1.1.7 [skip ci]
## @antv/x6-app-er [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-er@1.1.6...@antv/x6-app-er@1.1.7) (2022-06-06)
2022-06-06 04:00:18 +00:00
2da5b71540 chore(release): @antv/x6-app-draw@1.1.6 [skip ci]
## @antv/x6-app-draw [1.1.6](https://github.com/antvis/x6/compare/@antv/x6-app-draw@1.1.5...@antv/x6-app-draw@1.1.6) (2022-06-06)
2022-06-06 04:00:15 +00:00
37875b8245 chore(release): @antv/x6-app-dag@1.1.7 [skip ci]
## @antv/x6-app-dag [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-dag@1.1.6...@antv/x6-app-dag@1.1.7) (2022-06-06)
2022-06-06 04:00:11 +00:00
cd4c142da1 chore(release): @antv/x6-package-json@1.0.2 [skip ci]
## @antv/x6-package-json [1.0.2](https://github.com/antvis/x6/compare/@antv/x6-package-json@1.0.1...@antv/x6-package-json@1.0.2) (2022-06-06)
2022-06-06 04:00:08 +00:00
f86d935f05 chore(release): @antv/x6-svg-to-shape@1.0.6 [skip ci]
## @antv/x6-svg-to-shape [1.0.6](https://github.com/antvis/x6/compare/@antv/x6-svg-to-shape@1.0.5...@antv/x6-svg-to-shape@1.0.6) (2022-06-06)
2022-06-06 04:00:05 +00:00
992b0b8366 docs: 📚️ optimize dagre options (#2184) 2022-06-06 11:46:15 +08:00
8a4a677b77 chore(deps): bump devcert from 1.1.3 to 1.2.1 (#2182)
Bumps [devcert](https://github.com/davewasmer/devcert) from 1.1.3 to 1.2.1.
- [Release notes](https://github.com/davewasmer/devcert/releases)
- [Changelog](https://github.com/davewasmer/devcert/blob/master/CHANGELOG.md)
- [Commits](https://github.com/davewasmer/devcert/compare/v1.1.3...v1.2.1)

---
updated-dependencies:
- dependency-name: devcert
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-06 09:47:53 +08:00
da55ef7a60 chore(release): @antv/x6-svg-to-shape@1.0.6 [skip ci]
## @antv/x6-svg-to-shape [1.0.6](https://github.com/antvis/x6/compare/@antv/x6-svg-to-shape@1.0.5...@antv/x6-svg-to-shape@1.0.6) (2022-06-05)
2022-06-05 08:40:35 +00:00
54b9debbce chore(release): @antv/x6-sites@1.5.0 [skip ci]
# @antv/x6-sites [1.5.0](https://github.com/antvis/x6/compare/@antv/x6-sites@1.4.1...@antv/x6-sites@1.5.0) (2022-06-05)

### Bug Fixes

* 🐛 add updateCellId api ([#1739](https://github.com/antvis/x6/issues/1739)) ([78cdb3b](78cdb3bd56))
* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 release x6 v1.28.2 ([#1654](https://github.com/antvis/x6/issues/1654)) ([745b90a](745b90ac94))

### Features

*  add insertPort api ([#1763](https://github.com/antvis/x6/issues/1763)) ([6809dba](6809dba2d8))
* vue3支持使用useTeleport ([#2078](https://github.com/antvis/x6/issues/2078)) ([b8c2175](b8c217572a))
2022-06-05 08:40:32 +00:00
eef4a6df4c chore(release): @antv/x6-sites-demos@1.2.1 [skip ci]
## @antv/x6-sites-demos [1.2.1](https://github.com/antvis/x6/compare/@antv/x6-sites-demos@1.2.0...@antv/x6-sites-demos@1.2.1) (2022-06-05)

### Bug Fixes

* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 update x6 version ([#1655](https://github.com/antvis/x6/issues/1655)) ([07037be](07037beb59))
2022-06-05 08:40:27 +00:00
bf7540c1f9 chore(release): @antv/x6-example-features@1.2.2 [skip ci]
## @antv/x6-example-features [1.2.2](https://github.com/antvis/x6/compare/@antv/x6-example-features@1.2.1...@antv/x6-example-features@1.2.2) (2022-06-05)

### Bug Fixes

* 🐛 optimize contextmenu tools ([#1391](https://github.com/antvis/x6/issues/1391)) ([cc01fdf](cc01fdf208))
* 🐛 update x6-react-shape version ([#1425](https://github.com/antvis/x6/issues/1425)) ([4208846](4208846337))

### Performance Improvements

* ️ add simple config to remove rect and text element ([#1449](https://github.com/antvis/x6/issues/1449)) ([0b5f241](0b5f2413f0))
2022-06-05 08:40:23 +00:00
eb98529391 chore(release): @antv/x6-app-er@1.1.7 [skip ci]
## @antv/x6-app-er [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-er@1.1.6...@antv/x6-app-er@1.1.7) (2022-06-05)
2022-06-05 08:40:18 +00:00
0e5ff9204a chore(release): @antv/x6-app-draw@1.1.6 [skip ci]
## @antv/x6-app-draw [1.1.6](https://github.com/antvis/x6/compare/@antv/x6-app-draw@1.1.5...@antv/x6-app-draw@1.1.6) (2022-06-05)
2022-06-05 08:40:15 +00:00
6115dbbd75 chore(release): @antv/x6-app-dag@1.1.7 [skip ci]
## @antv/x6-app-dag [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-dag@1.1.6...@antv/x6-app-dag@1.1.7) (2022-06-05)
2022-06-05 08:40:11 +00:00
3f786136b4 chore(release): @antv/x6-angular-shape@1.3.1 [skip ci]
## @antv/x6-angular-shape [1.3.1](https://github.com/antvis/x6/compare/@antv/x6-angular-shape@1.3.0...@antv/x6-angular-shape@1.3.1) (2022-06-05)
2022-06-05 08:40:08 +00:00
431116f629 chore(release): @antv/x6-package-json@1.0.2 [skip ci]
## @antv/x6-package-json [1.0.2](https://github.com/antvis/x6/compare/@antv/x6-package-json@1.0.1...@antv/x6-package-json@1.0.2) (2022-06-05)
2022-06-05 08:40:05 +00:00
cbbe1b6b54 chore(deps-dev): bump @angular/core from 10.2.5 to 11.0.5 (#2181)
Bumps [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) from 10.2.5 to 11.0.5.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/11.0.5/packages/core)

---
updated-dependencies:
- dependency-name: "@angular/core"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-05 16:24:25 +08:00
d02ad4cb3b chore(deps): bump actions/labeler from 2 to 4 (#2170)
Bumps [actions/labeler](https://github.com/actions/labeler) from 2 to 4.
- [Release notes](https://github.com/actions/labeler/releases)
- [Commits](https://github.com/actions/labeler/compare/v2...v4)

---
updated-dependencies:
- dependency-name: actions/labeler
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-01 07:25:36 +08:00
a9f0dd35b9 chore(deps): bump Naturalclar/issue-action from 2.0.1 to 2.0.2 (#2169)
Bumps [Naturalclar/issue-action](https://github.com/Naturalclar/issue-action) from 2.0.1 to 2.0.2.
- [Release notes](https://github.com/Naturalclar/issue-action/releases)
- [Commits](https://github.com/Naturalclar/issue-action/compare/v2.0.1...v2.0.2)

---
updated-dependencies:
- dependency-name: Naturalclar/issue-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-01 07:25:09 +08:00
484df66d36 chore(deps): bump actions/checkout from 2 to 3 (#2168)
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-01 07:24:44 +08:00
0d691c61cd chore: update contributors [skip ci] 2022-05-31 23:24:14 +00:00
5849eb9a88 chore(deps): bump peter-evans/repository-dispatch from 1 to 2 (#2167)
Bumps [peter-evans/repository-dispatch](https://github.com/peter-evans/repository-dispatch) from 1 to 2.
- [Release notes](https://github.com/peter-evans/repository-dispatch/releases)
- [Commits](https://github.com/peter-evans/repository-dispatch/compare/v1...v2)

---
updated-dependencies:
- dependency-name: peter-evans/repository-dispatch
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-01 07:24:10 +08:00
c285ce6e0f chore(deps): bump actions/setup-node from 1 to 3 (#2166)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 1 to 3.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v1...v3)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-01 07:23:44 +08:00
817d08ff41 chore(release): @antv/x6-sites@1.5.0 [skip ci]
# @antv/x6-sites [1.5.0](https://github.com/antvis/x6/compare/@antv/x6-sites@1.4.1...@antv/x6-sites@1.5.0) (2022-05-31)

### Bug Fixes

* 🐛 add updateCellId api ([#1739](https://github.com/antvis/x6/issues/1739)) ([78cdb3b](78cdb3bd56))
* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 release x6 v1.28.2 ([#1654](https://github.com/antvis/x6/issues/1654)) ([745b90a](745b90ac94))

### Features

*  add insertPort api ([#1763](https://github.com/antvis/x6/issues/1763)) ([6809dba](6809dba2d8))
* vue3支持使用useTeleport ([#2078](https://github.com/antvis/x6/issues/2078)) ([b8c2175](b8c217572a))

### Dependencies

* **@antv/x6:** upgraded to 1.32.3
2022-05-31 13:03:55 +00:00
d63f26023f chore(release): @antv/x6-sites-demos@1.2.1 [skip ci]
## @antv/x6-sites-demos [1.2.1](https://github.com/antvis/x6/compare/@antv/x6-sites-demos@1.2.0...@antv/x6-sites-demos@1.2.1) (2022-05-31)

### Bug Fixes

* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 update x6 version ([#1655](https://github.com/antvis/x6/issues/1655)) ([07037be](07037beb59))

### Dependencies

* **@antv/x6:** upgraded to 1.32.3
2022-05-31 13:03:50 +00:00
a56182ee06 chore(release): @antv/x6-example-features@1.2.2 [skip ci]
## @antv/x6-example-features [1.2.2](https://github.com/antvis/x6/compare/@antv/x6-example-features@1.2.1...@antv/x6-example-features@1.2.2) (2022-05-31)

### Bug Fixes

* 🐛 optimize contextmenu tools ([#1391](https://github.com/antvis/x6/issues/1391)) ([cc01fdf](cc01fdf208))
* 🐛 update x6-react-shape version ([#1425](https://github.com/antvis/x6/issues/1425)) ([4208846](4208846337))

### Performance Improvements

* ️ add simple config to remove rect and text element ([#1449](https://github.com/antvis/x6/issues/1449)) ([0b5f241](0b5f2413f0))

### Dependencies

* **@antv/x6:** upgraded to 1.32.3
2022-05-31 13:03:44 +00:00
51819712e7 chore(release): @antv/x6-app-er@1.1.7 [skip ci]
## @antv/x6-app-er [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-er@1.1.6...@antv/x6-app-er@1.1.7) (2022-05-31)

### Dependencies

* **@antv/x6:** upgraded to 1.32.3
2022-05-31 13:03:39 +00:00
92db8470a1 chore(release): @antv/x6-app-draw@1.1.6 [skip ci]
## @antv/x6-app-draw [1.1.6](https://github.com/antvis/x6/compare/@antv/x6-app-draw@1.1.5...@antv/x6-app-draw@1.1.6) (2022-05-31)

### Dependencies

* **@antv/x6:** upgraded to 1.32.3
2022-05-31 13:03:35 +00:00
3e512b92b7 chore(release): @antv/x6-app-dag@1.1.7 [skip ci]
## @antv/x6-app-dag [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-dag@1.1.6...@antv/x6-app-dag@1.1.7) (2022-05-31)

### Dependencies

* **@antv/x6:** upgraded to 1.32.3
2022-05-31 13:03:30 +00:00
4f72b0d5c1 chore(release): @antv/x6@1.32.3 [skip ci]
## @antv/x6 [1.32.3](https://github.com/antvis/x6/compare/@antv/x6@1.32.2...@antv/x6@1.32.3) (2022-05-31)

### Bug Fixes

* 🐛 Fixed the error when a node meet an invisiable node in node:embedding event ([#2129](https://github.com/antvis/x6/issues/2129)) ([6ef7f55](6ef7f55334))
2022-05-31 13:03:26 +00:00
045412de6d chore(release): @antv/x6-package-json@1.0.2 [skip ci]
## @antv/x6-package-json [1.0.2](https://github.com/antvis/x6/compare/@antv/x6-package-json@1.0.1...@antv/x6-package-json@1.0.2) (2022-05-31)
2022-05-31 13:03:21 +00:00
4b7c565305 chore(release): @antv/x6-svg-to-shape@1.0.6 [skip ci]
## @antv/x6-svg-to-shape [1.0.6](https://github.com/antvis/x6/compare/@antv/x6-svg-to-shape@1.0.5...@antv/x6-svg-to-shape@1.0.6) (2022-05-31)

### Dependencies

* **@antv/x6:** upgraded to 1.32.3
2022-05-31 13:03:17 +00:00
d2056dbc21 chore: Included githubactions in the dependabot config (#2157)
This should help with keeping the GitHub actions updated on new releases. This will also help with keeping it secure.

Dependabot helps in keeping the supply chain secure https://docs.github.com/en/code-security/dependabot

GitHub actions up to date https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot

https://github.com/ossf/scorecard/blob/main/docs/checks.md#dependency-update-tool
Signed-off-by: naveen <172697+naveensrinivasan@users.noreply.github.com>
2022-05-31 20:47:52 +08:00
a555693442 chore: update contributors [skip ci] 2022-05-31 01:30:08 +00:00
dc5f606edb chore: update AUTHORS [skip ci] 2022-05-30 08:39:40 +00:00
bba7307bd1 chore: Set permissions for GitHub actions (#2148)
Restrict the GitHub token permissions only to the required ones; this way, even if the attackers will succeed in compromising your workflow, they won’t be able to do much.

- Included permissions for the action. https://github.com/ossf/scorecard/blob/main/docs/checks.md#token-permissions

https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions

https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs

[Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/)

Signed-off-by: naveen <172697+naveensrinivasan@users.noreply.github.com>
2022-05-30 16:31:20 +08:00
07794dc611 chore(deps): bump workspace-tools from 0.12.3 to 0.18.4 (#2135)
Bumps [workspace-tools](https://github.com/microsoft/workspace-tools) from 0.12.3 to 0.18.4.
- [Release notes](https://github.com/microsoft/workspace-tools/releases)
- [Changelog](https://github.com/microsoft/workspace-tools/blob/master/CHANGELOG.md)
- [Commits](https://github.com/microsoft/workspace-tools/compare/workspace-tools_v0.12.3...workspace-tools_v0.18.4)

---
updated-dependencies:
- dependency-name: workspace-tools
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-30 16:30:54 +08:00
e1c0a99458 chore: 🔧 update node version for workflows (#2152) 2022-05-30 16:18:01 +08:00
0c25aedd12 chore: update contributors [skip ci] 2022-05-25 07:59:25 +00:00
6ef7f55334 fix: 🐛 Fixed the error when a node meet an invisiable node in node:embedding event (#2129) 2022-05-25 15:58:59 +08:00
c97de2c807 chore(release): @antv/x6-sites@1.5.0 [skip ci]
# @antv/x6-sites [1.5.0](https://github.com/antvis/x6/compare/@antv/x6-sites@1.4.1...@antv/x6-sites@1.5.0) (2022-05-17)

### Bug Fixes

* 🐛 add updateCellId api ([#1739](https://github.com/antvis/x6/issues/1739)) ([78cdb3b](78cdb3bd56))
* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 release x6 v1.28.2 ([#1654](https://github.com/antvis/x6/issues/1654)) ([745b90a](745b90ac94))

### Features

*  add insertPort api ([#1763](https://github.com/antvis/x6/issues/1763)) ([6809dba](6809dba2d8))
* vue3支持使用useTeleport ([#2078](https://github.com/antvis/x6/issues/2078)) ([b8c2175](b8c217572a))

### Dependencies

* **@antv/x6:** upgraded to 1.32.2
2022-05-17 07:46:35 +00:00
dc62dd9390 chore(release): @antv/x6-sites-demos@1.2.1 [skip ci]
## @antv/x6-sites-demos [1.2.1](https://github.com/antvis/x6/compare/@antv/x6-sites-demos@1.2.0...@antv/x6-sites-demos@1.2.1) (2022-05-17)

### Bug Fixes

* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 update x6 version ([#1655](https://github.com/antvis/x6/issues/1655)) ([07037be](07037beb59))

### Dependencies

* **@antv/x6:** upgraded to 1.32.2
2022-05-17 07:46:30 +00:00
56234ae8d7 chore(release): @antv/x6-example-features@1.2.2 [skip ci]
## @antv/x6-example-features [1.2.2](https://github.com/antvis/x6/compare/@antv/x6-example-features@1.2.1...@antv/x6-example-features@1.2.2) (2022-05-17)

### Bug Fixes

* 🐛 optimize contextmenu tools ([#1391](https://github.com/antvis/x6/issues/1391)) ([cc01fdf](cc01fdf208))
* 🐛 update x6-react-shape version ([#1425](https://github.com/antvis/x6/issues/1425)) ([4208846](4208846337))

### Performance Improvements

* ️ add simple config to remove rect and text element ([#1449](https://github.com/antvis/x6/issues/1449)) ([0b5f241](0b5f2413f0))

### Dependencies

* **@antv/x6:** upgraded to 1.32.2
2022-05-17 07:46:25 +00:00
eb81f1b856 chore(release): @antv/x6-app-er@1.1.7 [skip ci]
## @antv/x6-app-er [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-er@1.1.6...@antv/x6-app-er@1.1.7) (2022-05-17)

### Dependencies

* **@antv/x6:** upgraded to 1.32.2
2022-05-17 07:46:19 +00:00
2fd1033009 chore(release): @antv/x6-app-draw@1.1.6 [skip ci]
## @antv/x6-app-draw [1.1.6](https://github.com/antvis/x6/compare/@antv/x6-app-draw@1.1.5...@antv/x6-app-draw@1.1.6) (2022-05-17)

### Dependencies

* **@antv/x6:** upgraded to 1.32.2
2022-05-17 07:46:15 +00:00
a654adf88f chore(release): @antv/x6-app-dag@1.1.7 [skip ci]
## @antv/x6-app-dag [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-dag@1.1.6...@antv/x6-app-dag@1.1.7) (2022-05-17)

### Dependencies

* **@antv/x6:** upgraded to 1.32.2
2022-05-17 07:46:11 +00:00
8633398149 chore(release): @antv/x6@1.32.2 [skip ci]
## @antv/x6 [1.32.2](https://github.com/antvis/x6/compare/@antv/x6@1.32.1...@antv/x6@1.32.2) (2022-05-17)

### Bug Fixes

* 🐛 fix minimap error in after resize graph ([#2117](https://github.com/antvis/x6/issues/2117)) ([e1bb928](e1bb9289b0))
2022-05-17 07:46:07 +00:00
4afc9df1ed chore(release): @antv/x6-svg-to-shape@1.0.6 [skip ci]
## @antv/x6-svg-to-shape [1.0.6](https://github.com/antvis/x6/compare/@antv/x6-svg-to-shape@1.0.5...@antv/x6-svg-to-shape@1.0.6) (2022-05-17)

### Dependencies

* **@antv/x6:** upgraded to 1.32.2
2022-05-17 07:46:03 +00:00
e1bb9289b0 fix: 🐛 fix minimap error in after resize graph (#2117) 2022-05-17 15:29:36 +08:00
3ee97bef65 chore(release): @antv/x6-svg-to-shape@1.0.6 [skip ci]
## @antv/x6-svg-to-shape [1.0.6](https://github.com/antvis/x6/compare/@antv/x6-svg-to-shape@1.0.5...@antv/x6-svg-to-shape@1.0.6) (2022-05-16)

### Dependencies

* **@antv/x6:** upgraded to 1.32.1
2022-05-16 06:46:25 +00:00
4015bb6667 chore(release): @antv/x6-sites@1.5.0 [skip ci]
# @antv/x6-sites [1.5.0](https://github.com/antvis/x6/compare/@antv/x6-sites@1.4.1...@antv/x6-sites@1.5.0) (2022-05-16)

### Bug Fixes

* 🐛 add updateCellId api ([#1739](https://github.com/antvis/x6/issues/1739)) ([78cdb3b](78cdb3bd56))
* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 release x6 v1.28.2 ([#1654](https://github.com/antvis/x6/issues/1654)) ([745b90a](745b90ac94))

### Features

*  add insertPort api ([#1763](https://github.com/antvis/x6/issues/1763)) ([6809dba](6809dba2d8))
* vue3支持使用useTeleport ([#2078](https://github.com/antvis/x6/issues/2078)) ([b8c2175](b8c217572a))

### Dependencies

* **@antv/x6:** upgraded to 1.32.1
2022-05-16 06:46:21 +00:00
586eb49032 chore(release): @antv/x6-example-features@1.2.2 [skip ci]
## @antv/x6-example-features [1.2.2](https://github.com/antvis/x6/compare/@antv/x6-example-features@1.2.1...@antv/x6-example-features@1.2.2) (2022-05-16)

### Bug Fixes

* 🐛 optimize contextmenu tools ([#1391](https://github.com/antvis/x6/issues/1391)) ([cc01fdf](cc01fdf208))
* 🐛 update x6-react-shape version ([#1425](https://github.com/antvis/x6/issues/1425)) ([4208846](4208846337))

### Performance Improvements

* ️ add simple config to remove rect and text element ([#1449](https://github.com/antvis/x6/issues/1449)) ([0b5f241](0b5f2413f0))

### Dependencies

* **@antv/x6:** upgraded to 1.32.1
* **@antv/x6-vector:** upgraded to 1.4.0
2022-05-16 06:46:17 +00:00
52b7b51b45 chore(release): @antv/x6-app-er@1.1.7 [skip ci]
## @antv/x6-app-er [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-er@1.1.6...@antv/x6-app-er@1.1.7) (2022-05-16)

### Dependencies

* **@antv/x6:** upgraded to 1.32.1
2022-05-16 06:46:12 +00:00
852843ba59 chore(release): @antv/x6-app-draw@1.1.6 [skip ci]
## @antv/x6-app-draw [1.1.6](https://github.com/antvis/x6/compare/@antv/x6-app-draw@1.1.5...@antv/x6-app-draw@1.1.6) (2022-05-16)

### Dependencies

* **@antv/x6:** upgraded to 1.32.1
2022-05-16 06:46:08 +00:00
01444b4677 chore(release): @antv/x6-app-dag@1.1.7 [skip ci]
## @antv/x6-app-dag [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-dag@1.1.6...@antv/x6-app-dag@1.1.7) (2022-05-16)

### Dependencies

* **@antv/x6:** upgraded to 1.32.1
2022-05-16 06:46:04 +00:00
76e0f973e6 chore(release): @antv/x6@1.32.1 [skip ci]
## @antv/x6 [1.32.1](https://github.com/antvis/x6/compare/@antv/x6@1.32.0...@antv/x6@1.32.1) (2022-05-16)

### Bug Fixes

* 🐛 auto zoom minimap graph to fit content ([#2111](https://github.com/antvis/x6/issues/2111)) ([12e3e89](12e3e8969f))
2022-05-16 06:46:01 +00:00
619a6df36e chore(release): @antv/x6-vector@1.4.0 [skip ci]
# @antv/x6-vector [1.4.0](https://github.com/antvis/x6/compare/@antv/x6-vector@1.3.1...@antv/x6-vector@1.4.0) (2022-05-16)

### Bug Fixes

* remove the browserslist configuration in package.json ([#2084](https://github.com/antvis/x6/issues/2084)) ([de59617](de59617532))

### Features

*  unified minimap interaction between scroller and panning ([#2109](https://github.com/antvis/x6/issues/2109)) ([3c7c06a](3c7c06ac30))
2022-05-16 06:45:57 +00:00
082c5e04cf chore(release): @antv/x6-geometry@1.0.12 [skip ci]
## @antv/x6-geometry [1.0.12](https://github.com/antvis/x6/compare/@antv/x6-geometry@1.0.11...@antv/x6-geometry@1.0.12) (2022-05-16)

### Bug Fixes

* remove the browserslist configuration in package.json ([#2084](https://github.com/antvis/x6/issues/2084)) ([de59617](de59617532))
2022-05-16 06:45:54 +00:00
5b2020d4d0 chore(release): @antv/x6-sites-demos@1.2.1 [skip ci]
## @antv/x6-sites-demos [1.2.1](https://github.com/antvis/x6/compare/@antv/x6-sites-demos@1.2.0...@antv/x6-sites-demos@1.2.1) (2022-05-16)

### Bug Fixes

* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 update x6 version ([#1655](https://github.com/antvis/x6/issues/1655)) ([07037be](07037beb59))

### Dependencies

* **@antv/x6:** upgraded to 1.32.1
2022-05-16 06:45:50 +00:00
12e3e8969f fix: 🐛 auto zoom minimap graph to fit content (#2111) 2022-05-16 14:30:19 +08:00
cde133781a chore(release): @antv/x6-svg-to-shape@1.0.7 [skip ci]
## @antv/x6-svg-to-shape [1.0.7](https://github.com/antvis/x6/compare/@antv/x6-svg-to-shape@1.0.6...@antv/x6-svg-to-shape@1.0.7) (2022-05-14)

### Dependencies

* **@antv/x6:** upgraded to 1.32.0
2022-05-14 10:47:47 +00:00
fdb7563d21 chore(release): @antv/x6-sites@1.5.1 [skip ci]
## @antv/x6-sites [1.5.1](https://github.com/antvis/x6/compare/@antv/x6-sites@1.5.0...@antv/x6-sites@1.5.1) (2022-05-14)

### Dependencies

* **@antv/x6:** upgraded to 1.32.0
2022-05-14 10:47:44 +00:00
ffe8306851 chore(release): @antv/x6-sites-demos@1.2.2 [skip ci]
## @antv/x6-sites-demos [1.2.2](https://github.com/antvis/x6/compare/@antv/x6-sites-demos@1.2.1...@antv/x6-sites-demos@1.2.2) (2022-05-14)

### Dependencies

* **@antv/x6:** upgraded to 1.32.0
2022-05-14 10:47:42 +00:00
96ad752ccc chore(release): @antv/x6-app-er@1.1.8 [skip ci]
## @antv/x6-app-er [1.1.8](https://github.com/antvis/x6/compare/@antv/x6-app-er@1.1.7...@antv/x6-app-er@1.1.8) (2022-05-14)

### Dependencies

* **@antv/x6:** upgraded to 1.32.0
2022-05-14 10:47:39 +00:00
0dcb61262a chore(release): @antv/x6-app-draw@1.1.7 [skip ci]
## @antv/x6-app-draw [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-draw@1.1.6...@antv/x6-app-draw@1.1.7) (2022-05-14)

### Dependencies

* **@antv/x6:** upgraded to 1.32.0
2022-05-14 10:47:36 +00:00
2e91808200 chore(release): @antv/x6-app-dag@1.1.8 [skip ci]
## @antv/x6-app-dag [1.1.8](https://github.com/antvis/x6/compare/@antv/x6-app-dag@1.1.7...@antv/x6-app-dag@1.1.8) (2022-05-14)

### Dependencies

* **@antv/x6:** upgraded to 1.32.0
2022-05-14 10:47:33 +00:00
8cc9c3f257 chore(release): @antv/x6@1.32.0 [skip ci]
# @antv/x6 [1.32.0](https://github.com/antvis/x6/compare/@antv/x6@1.31.5...@antv/x6@1.32.0) (2022-05-14)

### Features

*  unified minimap interaction between scroller and panning ([#2109](https://github.com/antvis/x6/issues/2109)) ([3c7c06a](3c7c06ac30))
2022-05-14 10:47:31 +00:00
fa34253f0a chore(release): @antv/x6-vector@1.4.0 [skip ci]
# @antv/x6-vector [1.4.0](https://github.com/antvis/x6/compare/@antv/x6-vector@1.3.2...@antv/x6-vector@1.4.0) (2022-05-14)

### Features

*  unified minimap interaction between scroller and panning ([#2109](https://github.com/antvis/x6/issues/2109)) ([3c7c06a](3c7c06ac30))
2022-05-14 10:47:28 +00:00
78f1f534a1 chore(release): @antv/x6-example-features@1.2.3 [skip ci]
## @antv/x6-example-features [1.2.3](https://github.com/antvis/x6/compare/@antv/x6-example-features@1.2.2...@antv/x6-example-features@1.2.3) (2022-05-14)

### Dependencies

* **@antv/x6:** upgraded to 1.32.0
* **@antv/x6-vector:** upgraded to 1.4.0
2022-05-14 10:47:25 +00:00
3c7c06ac30 feat: unified minimap interaction between scroller and panning (#2109) 2022-05-14 17:39:24 +08:00
5036dca96d chore(release): @antv/x6-svg-to-shape@1.0.6 [skip ci]
## @antv/x6-svg-to-shape [1.0.6](https://github.com/antvis/x6/compare/@antv/x6-svg-to-shape@1.0.5...@antv/x6-svg-to-shape@1.0.6) (2022-05-09)

### Dependencies

* **@antv/x6:** upgraded to 1.31.5
2022-05-09 06:52:47 +00:00
ec419f8845 chore(release): @antv/x6-sites-demos@1.2.1 [skip ci]
## @antv/x6-sites-demos [1.2.1](https://github.com/antvis/x6/compare/@antv/x6-sites-demos@1.2.0...@antv/x6-sites-demos@1.2.1) (2022-05-09)

### Bug Fixes

* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 update x6 version ([#1655](https://github.com/antvis/x6/issues/1655)) ([07037be](07037beb59))

### Dependencies

* **@antv/x6:** upgraded to 1.31.5
2022-05-09 06:52:44 +00:00
2d4ca77d46 chore(release): @antv/x6-example-features@1.2.2 [skip ci]
## @antv/x6-example-features [1.2.2](https://github.com/antvis/x6/compare/@antv/x6-example-features@1.2.1...@antv/x6-example-features@1.2.2) (2022-05-09)

### Bug Fixes

* 🐛 optimize contextmenu tools ([#1391](https://github.com/antvis/x6/issues/1391)) ([cc01fdf](cc01fdf208))
* 🐛 update x6-react-shape version ([#1425](https://github.com/antvis/x6/issues/1425)) ([4208846](4208846337))

### Performance Improvements

* ️ add simple config to remove rect and text element ([#1449](https://github.com/antvis/x6/issues/1449)) ([0b5f241](0b5f2413f0))

### Dependencies

* **@antv/x6:** upgraded to 1.31.5
* **@antv/x6-vector:** upgraded to 1.3.2
2022-05-09 06:52:40 +00:00
c3fd2a2441 chore(release): @antv/x6-app-er@1.1.7 [skip ci]
## @antv/x6-app-er [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-er@1.1.6...@antv/x6-app-er@1.1.7) (2022-05-09)

### Dependencies

* **@antv/x6:** upgraded to 1.31.5
2022-05-09 06:52:36 +00:00
082d1f875b chore(release): @antv/x6-app-draw@1.1.6 [skip ci]
## @antv/x6-app-draw [1.1.6](https://github.com/antvis/x6/compare/@antv/x6-app-draw@1.1.5...@antv/x6-app-draw@1.1.6) (2022-05-09)

### Dependencies

* **@antv/x6:** upgraded to 1.31.5
2022-05-09 06:52:33 +00:00
4efdb3660d chore(release): @antv/x6-app-dag@1.1.7 [skip ci]
## @antv/x6-app-dag [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-dag@1.1.6...@antv/x6-app-dag@1.1.7) (2022-05-09)

### Dependencies

* **@antv/x6:** upgraded to 1.31.5
2022-05-09 06:52:30 +00:00
fc06ff66d4 chore(release): @antv/x6@1.31.5 [skip ci]
## @antv/x6 [1.31.5](https://github.com/antvis/x6/compare/@antv/x6@1.31.4...@antv/x6@1.31.5) (2022-05-09)

### Bug Fixes

* 🐛 fix the graph function zoomTo not return the graph instance. ([#2090](https://github.com/antvis/x6/issues/2090)) ([692a4ee](692a4ee1b0))
* 🐛 not rerender tools when edge update ([#2095](https://github.com/antvis/x6/issues/2095)) ([26ce96f](26ce96f7a2))
* remove the browserslist configuration in package.json ([#2084](https://github.com/antvis/x6/issues/2084)) ([de59617](de59617532))
2022-05-09 06:52:28 +00:00
372d5f3031 chore(release): @antv/x6-vue-shape@1.4.0 [skip ci]
# @antv/x6-vue-shape [1.4.0](https://github.com/antvis/x6/compare/@antv/x6-vue-shape@1.3.2...@antv/x6-vue-shape@1.4.0) (2022-05-09)

### Features

* vue3支持使用useTeleport ([#2078](https://github.com/antvis/x6/issues/2078)) ([b8c2175](b8c217572a))

### Dependencies

* **@antv/x6:** upgraded to 1.31.5
2022-05-09 06:52:25 +00:00
d87b2a7eaf chore(release): @antv/x6-vector@1.3.2 [skip ci]
## @antv/x6-vector [1.3.2](https://github.com/antvis/x6/compare/@antv/x6-vector@1.3.1...@antv/x6-vector@1.3.2) (2022-05-09)

### Bug Fixes

* remove the browserslist configuration in package.json ([#2084](https://github.com/antvis/x6/issues/2084)) ([de59617](de59617532))
2022-05-09 06:52:22 +00:00
78a2a0bfe0 chore(release): @antv/x6-geometry@1.0.12 [skip ci]
## @antv/x6-geometry [1.0.12](https://github.com/antvis/x6/compare/@antv/x6-geometry@1.0.11...@antv/x6-geometry@1.0.12) (2022-05-09)

### Bug Fixes

* remove the browserslist configuration in package.json ([#2084](https://github.com/antvis/x6/issues/2084)) ([de59617](de59617532))
2022-05-09 06:52:20 +00:00
ac56327b41 chore(release): @antv/x6-sites@1.5.0 [skip ci]
# @antv/x6-sites [1.5.0](https://github.com/antvis/x6/compare/@antv/x6-sites@1.4.1...@antv/x6-sites@1.5.0) (2022-05-09)

### Bug Fixes

* 🐛 add updateCellId api ([#1739](https://github.com/antvis/x6/issues/1739)) ([78cdb3b](78cdb3bd56))
* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 release x6 v1.28.2 ([#1654](https://github.com/antvis/x6/issues/1654)) ([745b90a](745b90ac94))

### Features

*  add insertPort api ([#1763](https://github.com/antvis/x6/issues/1763)) ([6809dba](6809dba2d8))
* vue3支持使用useTeleport ([#2078](https://github.com/antvis/x6/issues/2078)) ([b8c2175](b8c217572a))

### Dependencies

* **@antv/x6:** upgraded to 1.31.5
2022-05-09 06:52:16 +00:00
26ce96f7a2 fix: 🐛 not rerender tools when edge update (#2095) 2022-05-09 14:39:26 +08:00
cfb77ae4cf chore: update contributors [skip ci] 2022-05-09 01:30:25 +00:00
c7a335177b chore: update AUTHORS [skip ci] 2022-05-08 02:15:03 +00:00
692a4ee1b0 fix: 🐛 fix the graph function zoomTo not return the graph instance. (#2090) 2022-05-08 10:09:16 +08:00
5d6f4fe15e chore: update AUTHORS [skip ci] 2022-05-07 03:09:05 +00:00
a4411d0f88 chore: update contributors [skip ci] 2022-05-07 03:02:41 +00:00
b8c217572a feat: vue3支持使用useTeleport (#2078)
* feat:  vue3支持使用useTeleport

* feat:  更新文档使用useTeleport

* feat:  兼容vue2.x

* feat:  更新文档使用useTeleport

* feat:  reset package.json
2022-05-07 11:02:18 +08:00
48b3577023 chore: update AUTHORS [skip ci] 2022-05-07 02:25:36 +00:00
20f68caa3a chore: update contributors [skip ci] 2022-05-07 02:24:19 +00:00
ae4ed52b69 docs: 📚️ add selection options description (#2086) 2022-05-07 10:23:59 +08:00
fe41710467 docs: update api desciption of addTools (#2087)
Co-authored-by: jiqili <5512490+xiaogegeya@user.noreply.gitee.com>
2022-05-07 10:19:50 +08:00
0d34cdd0cc chore: update AUTHORS [skip ci] 2022-05-06 13:04:21 +00:00
a9c0decd14 chore: update contributors [skip ci] 2022-05-06 12:57:57 +00:00
de59617532 fix: remove the browserslist configuration in package.json (#2084) 2022-05-06 20:57:31 +08:00
89da6b32cc chore: update contributors [skip ci] 2022-05-02 01:31:08 +00:00
bb07735f36 chore(release): @antv/x6-svg-to-shape@1.0.6 [skip ci]
## @antv/x6-svg-to-shape [1.0.6](https://github.com/antvis/x6/compare/@antv/x6-svg-to-shape@1.0.5...@antv/x6-svg-to-shape@1.0.6) (2022-05-01)
2022-05-01 06:53:43 +00:00
88f04625ed chore(release): @antv/x6-sites@1.5.0 [skip ci]
# @antv/x6-sites [1.5.0](https://github.com/antvis/x6/compare/@antv/x6-sites@1.4.1...@antv/x6-sites@1.5.0) (2022-05-01)

### Bug Fixes

* 🐛 add updateCellId api ([#1739](https://github.com/antvis/x6/issues/1739)) ([78cdb3b](78cdb3bd56))
* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 release x6 v1.28.2 ([#1654](https://github.com/antvis/x6/issues/1654)) ([745b90a](745b90ac94))

### Features

*  add insertPort api ([#1763](https://github.com/antvis/x6/issues/1763)) ([6809dba](6809dba2d8))
2022-05-01 06:53:41 +00:00
74d3b24c6f chore(release): @antv/x6-sites-demos@1.2.1 [skip ci]
## @antv/x6-sites-demos [1.2.1](https://github.com/antvis/x6/compare/@antv/x6-sites-demos@1.2.0...@antv/x6-sites-demos@1.2.1) (2022-05-01)

### Bug Fixes

* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 update x6 version ([#1655](https://github.com/antvis/x6/issues/1655)) ([07037be](07037beb59))
2022-05-01 06:53:37 +00:00
f43edba970 chore(release): @antv/x6-example-features@1.2.2 [skip ci]
## @antv/x6-example-features [1.2.2](https://github.com/antvis/x6/compare/@antv/x6-example-features@1.2.1...@antv/x6-example-features@1.2.2) (2022-05-01)

### Bug Fixes

* 🐛 optimize contextmenu tools ([#1391](https://github.com/antvis/x6/issues/1391)) ([cc01fdf](cc01fdf208))
* 🐛 update x6-react-shape version ([#1425](https://github.com/antvis/x6/issues/1425)) ([4208846](4208846337))

### Performance Improvements

* ️ add simple config to remove rect and text element ([#1449](https://github.com/antvis/x6/issues/1449)) ([0b5f241](0b5f2413f0))
2022-05-01 06:53:34 +00:00
cd006184c3 chore(release): @antv/x6-app-er@1.1.7 [skip ci]
## @antv/x6-app-er [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-er@1.1.6...@antv/x6-app-er@1.1.7) (2022-05-01)
2022-05-01 06:53:31 +00:00
322dec6a4a chore(release): @antv/x6-app-dag@1.1.7 [skip ci]
## @antv/x6-app-dag [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-dag@1.1.6...@antv/x6-app-dag@1.1.7) (2022-05-01)
2022-05-01 06:53:28 +00:00
47e7e67574 chore(release): @antv/x6-app-draw@1.1.6 [skip ci]
## @antv/x6-app-draw [1.1.6](https://github.com/antvis/x6/compare/@antv/x6-app-draw@1.1.5...@antv/x6-app-draw@1.1.6) (2022-05-01)
2022-05-01 06:53:26 +00:00
60954137d3 docs: update doc api (#2076) 2022-05-01 14:41:38 +08:00
61c7d7f015 chore(release): @antv/x6-sites@1.5.0 [skip ci]
# @antv/x6-sites [1.5.0](https://github.com/antvis/x6/compare/@antv/x6-sites@1.4.1...@antv/x6-sites@1.5.0) (2022-04-26)

### Bug Fixes

* 🐛 add updateCellId api ([#1739](https://github.com/antvis/x6/issues/1739)) ([78cdb3b](78cdb3bd56))
* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 release x6 v1.28.2 ([#1654](https://github.com/antvis/x6/issues/1654)) ([745b90a](745b90ac94))

### Features

*  add insertPort api ([#1763](https://github.com/antvis/x6/issues/1763)) ([6809dba](6809dba2d8))
2022-04-26 00:56:39 +00:00
c7c3415300 chore(release): @antv/x6-sites-demos@1.2.1 [skip ci]
## @antv/x6-sites-demos [1.2.1](https://github.com/antvis/x6/compare/@antv/x6-sites-demos@1.2.0...@antv/x6-sites-demos@1.2.1) (2022-04-26)

### Bug Fixes

* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 update x6 version ([#1655](https://github.com/antvis/x6/issues/1655)) ([07037be](07037beb59))
2022-04-26 00:56:35 +00:00
7e64838e00 chore(release): @antv/x6-example-features@1.2.2 [skip ci]
## @antv/x6-example-features [1.2.2](https://github.com/antvis/x6/compare/@antv/x6-example-features@1.2.1...@antv/x6-example-features@1.2.2) (2022-04-26)

### Bug Fixes

* 🐛 optimize contextmenu tools ([#1391](https://github.com/antvis/x6/issues/1391)) ([cc01fdf](cc01fdf208))
* 🐛 update x6-react-shape version ([#1425](https://github.com/antvis/x6/issues/1425)) ([4208846](4208846337))

### Performance Improvements

* ️ add simple config to remove rect and text element ([#1449](https://github.com/antvis/x6/issues/1449)) ([0b5f241](0b5f2413f0))
2022-04-26 00:56:30 +00:00
7c18c7d5ff chore(release): @antv/x6-app-er@1.1.7 [skip ci]
## @antv/x6-app-er [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-er@1.1.6...@antv/x6-app-er@1.1.7) (2022-04-26)
2022-04-26 00:56:25 +00:00
7ea2ab1141 chore(release): @antv/x6-app-draw@1.1.6 [skip ci]
## @antv/x6-app-draw [1.1.6](https://github.com/antvis/x6/compare/@antv/x6-app-draw@1.1.5...@antv/x6-app-draw@1.1.6) (2022-04-26)
2022-04-26 00:56:21 +00:00
0115917836 chore(release): @antv/x6-app-dag@1.1.7 [skip ci]
## @antv/x6-app-dag [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-dag@1.1.6...@antv/x6-app-dag@1.1.7) (2022-04-26)
2022-04-26 00:56:17 +00:00
b184f8ca1c chore(release): @antv/x6-svg-to-shape@1.0.6 [skip ci]
## @antv/x6-svg-to-shape [1.0.6](https://github.com/antvis/x6/compare/@antv/x6-svg-to-shape@1.0.5...@antv/x6-svg-to-shape@1.0.6) (2022-04-26)
2022-04-26 00:56:13 +00:00
1abb62e14a docs: 📚️ optimize custom node demo (#2057) 2022-04-26 08:41:21 +08:00
ed5cdfb384 chore: update AUTHORS [skip ci] 2022-04-24 13:16:56 +00:00
7a0f33c5a2 chore: update contributors [skip ci] 2022-04-24 13:11:20 +00:00
qu
1de788cfaa docs: correct code mistake (#2050) 2022-04-24 21:10:49 +08:00
4d016760c7 chore(release): @antv/x6-sites@1.5.0 [skip ci]
# @antv/x6-sites [1.5.0](https://github.com/antvis/x6/compare/@antv/x6-sites@1.4.1...@antv/x6-sites@1.5.0) (2022-04-21)

### Bug Fixes

* 🐛 add updateCellId api ([#1739](https://github.com/antvis/x6/issues/1739)) ([78cdb3b](78cdb3bd56))
* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 release x6 v1.28.2 ([#1654](https://github.com/antvis/x6/issues/1654)) ([745b90a](745b90ac94))

### Features

*  add insertPort api ([#1763](https://github.com/antvis/x6/issues/1763)) ([6809dba](6809dba2d8))

### Dependencies

* **@antv/x6:** upgraded to 1.31.4
2022-04-21 12:26:56 +00:00
47487fe604 chore(release): @antv/x6-sites-demos@1.2.1 [skip ci]
## @antv/x6-sites-demos [1.2.1](https://github.com/antvis/x6/compare/@antv/x6-sites-demos@1.2.0...@antv/x6-sites-demos@1.2.1) (2022-04-21)

### Bug Fixes

* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 update x6 version ([#1655](https://github.com/antvis/x6/issues/1655)) ([07037be](07037beb59))

### Dependencies

* **@antv/x6:** upgraded to 1.31.4
2022-04-21 12:26:53 +00:00
6711d06fa1 chore(release): @antv/x6-example-features@1.2.2 [skip ci]
## @antv/x6-example-features [1.2.2](https://github.com/antvis/x6/compare/@antv/x6-example-features@1.2.1...@antv/x6-example-features@1.2.2) (2022-04-21)

### Bug Fixes

* 🐛 optimize contextmenu tools ([#1391](https://github.com/antvis/x6/issues/1391)) ([cc01fdf](cc01fdf208))
* 🐛 update x6-react-shape version ([#1425](https://github.com/antvis/x6/issues/1425)) ([4208846](4208846337))

### Performance Improvements

* ️ add simple config to remove rect and text element ([#1449](https://github.com/antvis/x6/issues/1449)) ([0b5f241](0b5f2413f0))

### Dependencies

* **@antv/x6:** upgraded to 1.31.4
2022-04-21 12:26:49 +00:00
83e4bd96e9 chore(release): @antv/x6-app-er@1.1.7 [skip ci]
## @antv/x6-app-er [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-er@1.1.6...@antv/x6-app-er@1.1.7) (2022-04-21)

### Dependencies

* **@antv/x6:** upgraded to 1.31.4
2022-04-21 12:26:45 +00:00
2a340936a0 chore(release): @antv/x6-app-draw@1.1.6 [skip ci]
## @antv/x6-app-draw [1.1.6](https://github.com/antvis/x6/compare/@antv/x6-app-draw@1.1.5...@antv/x6-app-draw@1.1.6) (2022-04-21)

### Dependencies

* **@antv/x6:** upgraded to 1.31.4
2022-04-21 12:26:42 +00:00
3967110b6e chore(release): @antv/x6-app-dag@1.1.7 [skip ci]
## @antv/x6-app-dag [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-dag@1.1.6...@antv/x6-app-dag@1.1.7) (2022-04-21)

### Dependencies

* **@antv/x6:** upgraded to 1.31.4
2022-04-21 12:26:39 +00:00
66b2a44845 chore(release): @antv/x6@1.31.4 [skip ci]
## @antv/x6 [1.31.4](https://github.com/antvis/x6/compare/@antv/x6@1.31.3...@antv/x6@1.31.4) (2022-04-21)

### Bug Fixes

* 🐛 exclude case-sensitive-attr in kebablizeAttrs ([#2031](https://github.com/antvis/x6/issues/2031)) ([1e513ad](1e513adfde))
2022-04-21 12:26:37 +00:00
be52637c60 chore(release): @antv/x6-svg-to-shape@1.0.6 [skip ci]
## @antv/x6-svg-to-shape [1.0.6](https://github.com/antvis/x6/compare/@antv/x6-svg-to-shape@1.0.5...@antv/x6-svg-to-shape@1.0.6) (2022-04-21)

### Dependencies

* **@antv/x6:** upgraded to 1.31.4
2022-04-21 12:26:34 +00:00
1e513adfde fix: 🐛 exclude case-sensitive-attr in kebablizeAttrs (#2031) 2022-04-21 20:15:18 +08:00
38857171ed chore: update contributors [skip ci] 2022-04-19 01:30:51 +00:00
88e0222422 chore: update AUTHORS [skip ci] 2022-04-18 01:56:34 +00:00
63254bbf79 docs: update doc api (#2015) 2022-04-18 09:51:18 +08:00
d6242db65c chore(release): @antv/x6-sites@1.5.0 [skip ci]
# @antv/x6-sites [1.5.0](https://github.com/antvis/x6/compare/@antv/x6-sites@1.4.1...@antv/x6-sites@1.5.0) (2022-04-13)

### Bug Fixes

* 🐛 add updateCellId api ([#1739](https://github.com/antvis/x6/issues/1739)) ([78cdb3b](78cdb3bd56))
* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 release x6 v1.28.2 ([#1654](https://github.com/antvis/x6/issues/1654)) ([745b90a](745b90ac94))

### Features

*  add insertPort api ([#1763](https://github.com/antvis/x6/issues/1763)) ([6809dba](6809dba2d8))
2022-04-13 01:59:56 +00:00
0efe5c5145 chore(release): @antv/x6-sites-demos@1.2.1 [skip ci]
## @antv/x6-sites-demos [1.2.1](https://github.com/antvis/x6/compare/@antv/x6-sites-demos@1.2.0...@antv/x6-sites-demos@1.2.1) (2022-04-13)

### Bug Fixes

* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 update x6 version ([#1655](https://github.com/antvis/x6/issues/1655)) ([07037be](07037beb59))
2022-04-13 01:59:52 +00:00
18780ddddd chore(release): @antv/x6-example-features@1.2.2 [skip ci]
## @antv/x6-example-features [1.2.2](https://github.com/antvis/x6/compare/@antv/x6-example-features@1.2.1...@antv/x6-example-features@1.2.2) (2022-04-13)

### Bug Fixes

* 🐛 optimize contextmenu tools ([#1391](https://github.com/antvis/x6/issues/1391)) ([cc01fdf](cc01fdf208))
* 🐛 update x6-react-shape version ([#1425](https://github.com/antvis/x6/issues/1425)) ([4208846](4208846337))

### Performance Improvements

* ️ add simple config to remove rect and text element ([#1449](https://github.com/antvis/x6/issues/1449)) ([0b5f241](0b5f2413f0))
2022-04-13 01:59:49 +00:00
45d45de9e0 chore(release): @antv/x6-app-er@1.1.7 [skip ci]
## @antv/x6-app-er [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-er@1.1.6...@antv/x6-app-er@1.1.7) (2022-04-13)
2022-04-13 01:59:45 +00:00
4a8ce47c46 chore(release): @antv/x6-app-draw@1.1.6 [skip ci]
## @antv/x6-app-draw [1.1.6](https://github.com/antvis/x6/compare/@antv/x6-app-draw@1.1.5...@antv/x6-app-draw@1.1.6) (2022-04-13)
2022-04-13 01:59:42 +00:00
c1e0d5afed chore(release): @antv/x6-app-dag@1.1.7 [skip ci]
## @antv/x6-app-dag [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-dag@1.1.6...@antv/x6-app-dag@1.1.7) (2022-04-13)
2022-04-13 01:59:39 +00:00
1a57746c36 chore(release): @antv/x6-svg-to-shape@1.0.6 [skip ci]
## @antv/x6-svg-to-shape [1.0.6](https://github.com/antvis/x6/compare/@antv/x6-svg-to-shape@1.0.5...@antv/x6-svg-to-shape@1.0.6) (2022-04-13)
2022-04-13 01:59:36 +00:00
a49d004b03 chore(deps): bump urijs from 1.19.10 to 1.19.11 (#2007)
Bumps [urijs](https://github.com/medialize/URI.js) from 1.19.10 to 1.19.11.
- [Release notes](https://github.com/medialize/URI.js/releases)
- [Changelog](https://github.com/medialize/URI.js/blob/gh-pages/CHANGELOG.md)
- [Commits](https://github.com/medialize/URI.js/compare/v1.19.10...v1.19.11)

---
updated-dependencies:
- dependency-name: urijs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-13 09:46:55 +08:00
b4641440b6 chore: update contributors [skip ci] 2022-04-11 23:43:09 +00:00
e9332a74a9 docs: update doc api (#1991)
Co-authored-by: DanielLeefu <you@2228429150@qq.com>
2022-04-12 07:42:45 +08:00
04e98cfe9b chore: update contributors [skip ci] 2022-04-11 01:30:41 +00:00
69615f92ab chore(release): @antv/x6-sites@1.5.0 [skip ci]
# @antv/x6-sites [1.5.0](https://github.com/antvis/x6/compare/@antv/x6-sites@1.4.1...@antv/x6-sites@1.5.0) (2022-04-09)

### Bug Fixes

* 🐛 add updateCellId api ([#1739](https://github.com/antvis/x6/issues/1739)) ([78cdb3b](78cdb3bd56))
* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 release x6 v1.28.2 ([#1654](https://github.com/antvis/x6/issues/1654)) ([745b90a](745b90ac94))

### Features

*  add insertPort api ([#1763](https://github.com/antvis/x6/issues/1763)) ([6809dba](6809dba2d8))

### Dependencies

* **@antv/x6:** upgraded to 1.31.3
2022-04-09 04:34:53 +00:00
a7e7add2a8 chore(release): @antv/x6-sites-demos@1.2.1 [skip ci]
## @antv/x6-sites-demos [1.2.1](https://github.com/antvis/x6/compare/@antv/x6-sites-demos@1.2.0...@antv/x6-sites-demos@1.2.1) (2022-04-09)

### Bug Fixes

* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 update x6 version ([#1655](https://github.com/antvis/x6/issues/1655)) ([07037be](07037beb59))

### Dependencies

* **@antv/x6:** upgraded to 1.31.3
2022-04-09 04:34:50 +00:00
af281c4a48 chore(release): @antv/x6-example-features@1.2.2 [skip ci]
## @antv/x6-example-features [1.2.2](https://github.com/antvis/x6/compare/@antv/x6-example-features@1.2.1...@antv/x6-example-features@1.2.2) (2022-04-09)

### Bug Fixes

* 🐛 optimize contextmenu tools ([#1391](https://github.com/antvis/x6/issues/1391)) ([cc01fdf](cc01fdf208))
* 🐛 update x6-react-shape version ([#1425](https://github.com/antvis/x6/issues/1425)) ([4208846](4208846337))

### Performance Improvements

* ️ add simple config to remove rect and text element ([#1449](https://github.com/antvis/x6/issues/1449)) ([0b5f241](0b5f2413f0))

### Dependencies

* **@antv/x6:** upgraded to 1.31.3
2022-04-09 04:34:46 +00:00
c2efaaf71c chore(release): @antv/x6-app-er@1.1.7 [skip ci]
## @antv/x6-app-er [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-er@1.1.6...@antv/x6-app-er@1.1.7) (2022-04-09)

### Dependencies

* **@antv/x6:** upgraded to 1.31.3
2022-04-09 04:34:43 +00:00
73880a47d0 chore(release): @antv/x6-app-draw@1.1.6 [skip ci]
## @antv/x6-app-draw [1.1.6](https://github.com/antvis/x6/compare/@antv/x6-app-draw@1.1.5...@antv/x6-app-draw@1.1.6) (2022-04-09)

### Dependencies

* **@antv/x6:** upgraded to 1.31.3
2022-04-09 04:34:40 +00:00
b91869655d chore(release): @antv/x6-app-dag@1.1.7 [skip ci]
## @antv/x6-app-dag [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-dag@1.1.6...@antv/x6-app-dag@1.1.7) (2022-04-09)

### Dependencies

* **@antv/x6:** upgraded to 1.31.3
2022-04-09 04:34:38 +00:00
0879a143f9 chore(release): @antv/x6@1.31.3 [skip ci]
## @antv/x6 [1.31.3](https://github.com/antvis/x6/compare/@antv/x6@1.31.2...@antv/x6@1.31.3) (2022-04-09)

### Bug Fixes

* fix animationOptions type ([#1989](https://github.com/antvis/x6/issues/1989)) ([5020e92](5020e92ce8))
2022-04-09 04:34:35 +00:00
56ba335afb chore(release): @antv/x6-svg-to-shape@1.0.6 [skip ci]
## @antv/x6-svg-to-shape [1.0.6](https://github.com/antvis/x6/compare/@antv/x6-svg-to-shape@1.0.5...@antv/x6-svg-to-shape@1.0.6) (2022-04-09)

### Dependencies

* **@antv/x6:** upgraded to 1.31.3
2022-04-09 04:34:32 +00:00
5020e92ce8 fix: fix animationOptions type (#1989)
* fix: 🐛 update dnd widget zIndex

* fix: 🐛 fix animateOptions type
2022-04-09 12:23:06 +08:00
93f0adaf96 chore(release): @antv/x6-svg-to-shape@1.0.6 [skip ci]
## @antv/x6-svg-to-shape [1.0.6](https://github.com/antvis/x6/compare/@antv/x6-svg-to-shape@1.0.5...@antv/x6-svg-to-shape@1.0.6) (2022-04-09)
2022-04-09 01:20:40 +00:00
248846731b chore(release): @antv/x6-sites@1.5.0 [skip ci]
# @antv/x6-sites [1.5.0](https://github.com/antvis/x6/compare/@antv/x6-sites@1.4.1...@antv/x6-sites@1.5.0) (2022-04-09)

### Bug Fixes

* 🐛 add updateCellId api ([#1739](https://github.com/antvis/x6/issues/1739)) ([78cdb3b](78cdb3bd56))
* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 release x6 v1.28.2 ([#1654](https://github.com/antvis/x6/issues/1654)) ([745b90a](745b90ac94))

### Features

*  add insertPort api ([#1763](https://github.com/antvis/x6/issues/1763)) ([6809dba](6809dba2d8))
2022-04-09 01:20:37 +00:00
b8e2d52f9a chore(release): @antv/x6-sites-demos@1.2.1 [skip ci]
## @antv/x6-sites-demos [1.2.1](https://github.com/antvis/x6/compare/@antv/x6-sites-demos@1.2.0...@antv/x6-sites-demos@1.2.1) (2022-04-09)

### Bug Fixes

* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 update x6 version ([#1655](https://github.com/antvis/x6/issues/1655)) ([07037be](07037beb59))
2022-04-09 01:20:34 +00:00
8ae13da838 chore(release): @antv/x6-example-features@1.2.2 [skip ci]
## @antv/x6-example-features [1.2.2](https://github.com/antvis/x6/compare/@antv/x6-example-features@1.2.1...@antv/x6-example-features@1.2.2) (2022-04-09)

### Bug Fixes

* 🐛 optimize contextmenu tools ([#1391](https://github.com/antvis/x6/issues/1391)) ([cc01fdf](cc01fdf208))
* 🐛 update x6-react-shape version ([#1425](https://github.com/antvis/x6/issues/1425)) ([4208846](4208846337))

### Performance Improvements

* ️ add simple config to remove rect and text element ([#1449](https://github.com/antvis/x6/issues/1449)) ([0b5f241](0b5f2413f0))
2022-04-09 01:20:30 +00:00
446f433648 chore(release): @antv/x6-app-er@1.1.7 [skip ci]
## @antv/x6-app-er [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-er@1.1.6...@antv/x6-app-er@1.1.7) (2022-04-09)
2022-04-09 01:20:27 +00:00
f3d5c30ee7 chore(release): @antv/x6-app-dag@1.1.7 [skip ci]
## @antv/x6-app-dag [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-dag@1.1.6...@antv/x6-app-dag@1.1.7) (2022-04-09)
2022-04-09 01:20:24 +00:00
94cf18e5f8 chore(release): @antv/x6-app-draw@1.1.6 [skip ci]
## @antv/x6-app-draw [1.1.6](https://github.com/antvis/x6/compare/@antv/x6-app-draw@1.1.5...@antv/x6-app-draw@1.1.6) (2022-04-09)
2022-04-09 01:20:21 +00:00
314fee4606 docs: 📚️ optimize tooltip tools (#1988) 2022-04-09 09:08:26 +08:00
7816a8fd47 chore(deps): bump moment in /scripts/monorepo-semantic-release (#1986)
Bumps [moment](https://github.com/moment/moment) from 2.29.1 to 2.29.2.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.1...2.29.2)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-09 09:04:35 +08:00
5d597f5809 chore(deps): bump moment from 2.29.1 to 2.29.2 (#1987)
Bumps [moment](https://github.com/moment/moment) from 2.29.1 to 2.29.2.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.1...2.29.2)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-09 09:04:21 +08:00
b389b5654f chore(release): @antv/x6-sites@1.5.0 [skip ci]
# @antv/x6-sites [1.5.0](https://github.com/antvis/x6/compare/@antv/x6-sites@1.4.1...@antv/x6-sites@1.5.0) (2022-04-09)

### Bug Fixes

* 🐛 add updateCellId api ([#1739](https://github.com/antvis/x6/issues/1739)) ([78cdb3b](78cdb3bd56))
* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 release x6 v1.28.2 ([#1654](https://github.com/antvis/x6/issues/1654)) ([745b90a](745b90ac94))

### Features

*  add insertPort api ([#1763](https://github.com/antvis/x6/issues/1763)) ([6809dba](6809dba2d8))

### Dependencies

* **@antv/x6:** upgraded to 1.31.2
2022-04-09 00:36:11 +00:00
cd6514abef chore(release): @antv/x6-sites-demos@1.2.1 [skip ci]
## @antv/x6-sites-demos [1.2.1](https://github.com/antvis/x6/compare/@antv/x6-sites-demos@1.2.0...@antv/x6-sites-demos@1.2.1) (2022-04-09)

### Bug Fixes

* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 update x6 version ([#1655](https://github.com/antvis/x6/issues/1655)) ([07037be](07037beb59))

### Dependencies

* **@antv/x6:** upgraded to 1.31.2
2022-04-09 00:36:07 +00:00
5b24ec1cee chore(release): @antv/x6-example-features@1.2.2 [skip ci]
## @antv/x6-example-features [1.2.2](https://github.com/antvis/x6/compare/@antv/x6-example-features@1.2.1...@antv/x6-example-features@1.2.2) (2022-04-09)

### Bug Fixes

* 🐛 optimize contextmenu tools ([#1391](https://github.com/antvis/x6/issues/1391)) ([cc01fdf](cc01fdf208))
* 🐛 update x6-react-shape version ([#1425](https://github.com/antvis/x6/issues/1425)) ([4208846](4208846337))

### Performance Improvements

* ️ add simple config to remove rect and text element ([#1449](https://github.com/antvis/x6/issues/1449)) ([0b5f241](0b5f2413f0))

### Dependencies

* **@antv/x6:** upgraded to 1.31.2
2022-04-09 00:36:02 +00:00
822310ecfa chore(release): @antv/x6-app-er@1.1.7 [skip ci]
## @antv/x6-app-er [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-er@1.1.6...@antv/x6-app-er@1.1.7) (2022-04-09)

### Dependencies

* **@antv/x6:** upgraded to 1.31.2
2022-04-09 00:35:57 +00:00
2d053f1bf6 chore(release): @antv/x6-app-draw@1.1.6 [skip ci]
## @antv/x6-app-draw [1.1.6](https://github.com/antvis/x6/compare/@antv/x6-app-draw@1.1.5...@antv/x6-app-draw@1.1.6) (2022-04-09)

### Dependencies

* **@antv/x6:** upgraded to 1.31.2
2022-04-09 00:35:54 +00:00
fe0a81f6f2 chore(release): @antv/x6-app-dag@1.1.7 [skip ci]
## @antv/x6-app-dag [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-dag@1.1.6...@antv/x6-app-dag@1.1.7) (2022-04-09)

### Dependencies

* **@antv/x6:** upgraded to 1.31.2
2022-04-09 00:35:50 +00:00
86362513e7 chore(release): @antv/x6@1.31.2 [skip ci]
## @antv/x6 [1.31.2](https://github.com/antvis/x6/compare/@antv/x6@1.31.1...@antv/x6@1.31.2) (2022-04-09)

### Bug Fixes

* 🐛 change copystyle not include number propery when toSvg ([#1985](https://github.com/antvis/x6/issues/1985)) ([214b927](214b92704d))
* 🐛 fix scroller resize size miscalculation when graph resize ([#1977](https://github.com/antvis/x6/issues/1977)) ([e6de636](e6de6363ae))
2022-04-09 00:35:47 +00:00
624838fe23 chore(release): @antv/x6-svg-to-shape@1.0.6 [skip ci]
## @antv/x6-svg-to-shape [1.0.6](https://github.com/antvis/x6/compare/@antv/x6-svg-to-shape@1.0.5...@antv/x6-svg-to-shape@1.0.6) (2022-04-09)

### Dependencies

* **@antv/x6:** upgraded to 1.31.2
2022-04-09 00:35:44 +00:00
214b92704d fix: 🐛 change copystyle not include number propery when toSvg (#1985) 2022-04-09 08:23:28 +08:00
9594778ddb chore: update AUTHORS [skip ci] 2022-04-08 02:56:34 +00:00
761f1b9144 chore: update contributors [skip ci] 2022-04-08 02:50:46 +00:00
e6de6363ae fix: 🐛 fix scroller resize size miscalculation when graph resize (#1977)
Co-authored-by: mrmengj <mrmengj@gmail.como>
2022-04-08 10:50:25 +08:00
7f90fcf3b1 chore: update contributors [skip ci] 2022-04-08 01:29:25 +00:00
05f86b52b2 chore(release): @antv/x6-svg-to-shape@1.0.6 [skip ci]
## @antv/x6-svg-to-shape [1.0.6](https://github.com/antvis/x6/compare/@antv/x6-svg-to-shape@1.0.5...@antv/x6-svg-to-shape@1.0.6) (2022-04-05)
2022-04-05 13:08:43 +00:00
35a9531254 chore(release): @antv/x6-sites-demos@1.2.1 [skip ci]
## @antv/x6-sites-demos [1.2.1](https://github.com/antvis/x6/compare/@antv/x6-sites-demos@1.2.0...@antv/x6-sites-demos@1.2.1) (2022-04-05)

### Bug Fixes

* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 update x6 version ([#1655](https://github.com/antvis/x6/issues/1655)) ([07037be](07037beb59))
2022-04-05 13:08:40 +00:00
5c084bf8f0 chore(release): @antv/x6-example-features@1.2.2 [skip ci]
## @antv/x6-example-features [1.2.2](https://github.com/antvis/x6/compare/@antv/x6-example-features@1.2.1...@antv/x6-example-features@1.2.2) (2022-04-05)

### Bug Fixes

* 🐛 optimize contextmenu tools ([#1391](https://github.com/antvis/x6/issues/1391)) ([cc01fdf](cc01fdf208))
* 🐛 update x6-react-shape version ([#1425](https://github.com/antvis/x6/issues/1425)) ([4208846](4208846337))

### Performance Improvements

* ️ add simple config to remove rect and text element ([#1449](https://github.com/antvis/x6/issues/1449)) ([0b5f241](0b5f2413f0))

### Dependencies

* **@antv/x6-vector:** upgraded to 1.3.1
2022-04-05 13:08:36 +00:00
34c82a1b45 chore(release): @antv/x6-app-er@1.1.7 [skip ci]
## @antv/x6-app-er [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-er@1.1.6...@antv/x6-app-er@1.1.7) (2022-04-05)
2022-04-05 13:08:32 +00:00
c3d54ad2e5 chore(release): @antv/x6-app-draw@1.1.6 [skip ci]
## @antv/x6-app-draw [1.1.6](https://github.com/antvis/x6/compare/@antv/x6-app-draw@1.1.5...@antv/x6-app-draw@1.1.6) (2022-04-05)
2022-04-05 13:08:29 +00:00
a1dbd1095e chore(release): @antv/x6-app-dag@1.1.7 [skip ci]
## @antv/x6-app-dag [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-dag@1.1.6...@antv/x6-app-dag@1.1.7) (2022-04-05)
2022-04-05 13:08:26 +00:00
a30d850c0f chore(release): @antv/x6-vector@1.3.1 [skip ci]
## @antv/x6-vector [1.3.1](https://github.com/antvis/x6/compare/@antv/x6-vector@1.3.0...@antv/x6-vector@1.3.1) (2022-04-05)

### Bug Fixes

* 🐛 fix lgtm alert ([#1975](https://github.com/antvis/x6/issues/1975)) ([7440903](7440903281))
2022-04-05 13:08:23 +00:00
c3134d5fd6 chore(release): @antv/x6-sites@1.5.0 [skip ci]
# @antv/x6-sites [1.5.0](https://github.com/antvis/x6/compare/@antv/x6-sites@1.4.1...@antv/x6-sites@1.5.0) (2022-04-05)

### Bug Fixes

* 🐛 add updateCellId api ([#1739](https://github.com/antvis/x6/issues/1739)) ([78cdb3b](78cdb3bd56))
* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 release x6 v1.28.2 ([#1654](https://github.com/antvis/x6/issues/1654)) ([745b90a](745b90ac94))

### Features

*  add insertPort api ([#1763](https://github.com/antvis/x6/issues/1763)) ([6809dba](6809dba2d8))
2022-04-05 13:08:20 +00:00
85be9ec734 chore(deps): bump minimist in /scripts/monorepo-semantic-release (#1976)
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-05 20:55:51 +08:00
5c00e45d37 chore(release): @antv/x6-sites@1.5.0 [skip ci]
# @antv/x6-sites [1.5.0](https://github.com/antvis/x6/compare/@antv/x6-sites@1.4.1...@antv/x6-sites@1.5.0) (2022-04-05)

### Bug Fixes

* 🐛 add updateCellId api ([#1739](https://github.com/antvis/x6/issues/1739)) ([78cdb3b](78cdb3bd56))
* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 release x6 v1.28.2 ([#1654](https://github.com/antvis/x6/issues/1654)) ([745b90a](745b90ac94))

### Features

*  add insertPort api ([#1763](https://github.com/antvis/x6/issues/1763)) ([6809dba](6809dba2d8))

### Dependencies

* **@antv/x6:** upgraded to 1.31.1
2022-04-05 02:15:49 +00:00
3ec0d432a3 chore(release): @antv/x6-sites-demos@1.2.1 [skip ci]
## @antv/x6-sites-demos [1.2.1](https://github.com/antvis/x6/compare/@antv/x6-sites-demos@1.2.0...@antv/x6-sites-demos@1.2.1) (2022-04-05)

### Bug Fixes

* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 update x6 version ([#1655](https://github.com/antvis/x6/issues/1655)) ([07037be](07037beb59))

### Dependencies

* **@antv/x6:** upgraded to 1.31.1
2022-04-05 02:15:46 +00:00
ea4ea45e46 chore(release): @antv/x6-example-features@1.2.2 [skip ci]
## @antv/x6-example-features [1.2.2](https://github.com/antvis/x6/compare/@antv/x6-example-features@1.2.1...@antv/x6-example-features@1.2.2) (2022-04-05)

### Bug Fixes

* 🐛 optimize contextmenu tools ([#1391](https://github.com/antvis/x6/issues/1391)) ([cc01fdf](cc01fdf208))
* 🐛 update x6-react-shape version ([#1425](https://github.com/antvis/x6/issues/1425)) ([4208846](4208846337))

### Performance Improvements

* ️ add simple config to remove rect and text element ([#1449](https://github.com/antvis/x6/issues/1449)) ([0b5f241](0b5f2413f0))

### Dependencies

* **@antv/x6:** upgraded to 1.31.1
* **@antv/x6-vector:** upgraded to 1.3.1
2022-04-05 02:15:42 +00:00
45cdd0980c chore(release): @antv/x6-app-er@1.1.7 [skip ci]
## @antv/x6-app-er [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-er@1.1.6...@antv/x6-app-er@1.1.7) (2022-04-05)

### Dependencies

* **@antv/x6:** upgraded to 1.31.1
2022-04-05 02:15:38 +00:00
40f6496aea chore(release): @antv/x6-app-draw@1.1.6 [skip ci]
## @antv/x6-app-draw [1.1.6](https://github.com/antvis/x6/compare/@antv/x6-app-draw@1.1.5...@antv/x6-app-draw@1.1.6) (2022-04-05)

### Dependencies

* **@antv/x6:** upgraded to 1.31.1
2022-04-05 02:15:35 +00:00
12ab1057fe chore(release): @antv/x6-app-dag@1.1.7 [skip ci]
## @antv/x6-app-dag [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-dag@1.1.6...@antv/x6-app-dag@1.1.7) (2022-04-05)

### Dependencies

* **@antv/x6:** upgraded to 1.31.1
2022-04-05 02:15:32 +00:00
bd33449b2d chore(release): @antv/x6@1.31.1 [skip ci]
## @antv/x6 [1.31.1](https://github.com/antvis/x6/compare/@antv/x6@1.31.0...@antv/x6@1.31.1) (2022-04-05)

### Bug Fixes

* 🐛 fix lgtm alert ([#1975](https://github.com/antvis/x6/issues/1975)) ([7440903](7440903281))
2022-04-05 02:15:30 +00:00
96271dc298 chore(release): @antv/x6-vue-shape@1.3.2 [skip ci]
## @antv/x6-vue-shape [1.3.2](https://github.com/antvis/x6/compare/@antv/x6-vue-shape@1.3.1...@antv/x6-vue-shape@1.3.2) (2022-04-05)

### Bug Fixes

* **x6-vue-shape:** 🐛 error on removing fragment node ([#1974](https://github.com/antvis/x6/issues/1974)) ([6614e4f](6614e4f83c))

### Dependencies

* **@antv/x6:** upgraded to 1.31.1
2022-04-05 02:15:27 +00:00
5f2b46b34c chore(release): @antv/x6-vector@1.3.1 [skip ci]
## @antv/x6-vector [1.3.1](https://github.com/antvis/x6/compare/@antv/x6-vector@1.3.0...@antv/x6-vector@1.3.1) (2022-04-05)

### Bug Fixes

* 🐛 fix lgtm alert ([#1975](https://github.com/antvis/x6/issues/1975)) ([7440903](7440903281))
2022-04-05 02:15:24 +00:00
bfd48e644e chore(release): @antv/x6-svg-to-shape@1.0.6 [skip ci]
## @antv/x6-svg-to-shape [1.0.6](https://github.com/antvis/x6/compare/@antv/x6-svg-to-shape@1.0.5...@antv/x6-svg-to-shape@1.0.6) (2022-04-05)

### Dependencies

* **@antv/x6:** upgraded to 1.31.1
2022-04-05 02:15:21 +00:00
7440903281 fix: 🐛 fix lgtm alert (#1975) 2022-04-05 10:01:38 +08:00
769186b043 chore: update AUTHORS [skip ci] 2022-04-04 13:42:42 +00:00
b2dce8e69f chore: update contributors [skip ci] 2022-04-04 13:37:38 +00:00
6614e4f83c fix(x6-vue-shape): 🐛 error on removing fragment node (#1974) 2022-04-04 21:37:09 +08:00
c51043d468 chore: update contributors [skip ci] 2022-04-02 01:31:16 +00:00
0a0cbf9f50 chore: update contributors [skip ci] 2022-03-27 01:28:53 +00:00
09a4cf3f8b chore: update AUTHORS [skip ci] 2022-03-27 00:44:35 +00:00
a9ccf98bf1 fix wrong url of quick-start (#1944)
fix wrong url of quick-start from /zh/docs/tutorialgetting-started to /zh/docs/tutorial/getting-started
2022-03-27 08:38:09 +08:00
3cafa37292 doc: QR code in one line 2022-03-25 11:05:44 +08:00
99e42a95b1 chore(release): @antv/x6-sites@1.5.0 [skip ci]
# @antv/x6-sites [1.5.0](https://github.com/antvis/x6/compare/@antv/x6-sites@1.4.1...@antv/x6-sites@1.5.0) (2022-03-23)

### Bug Fixes

* 🐛 add updateCellId api ([#1739](https://github.com/antvis/x6/issues/1739)) ([78cdb3b](78cdb3bd56))
* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 release x6 v1.28.2 ([#1654](https://github.com/antvis/x6/issues/1654)) ([745b90a](745b90ac94))

### Features

*  add insertPort api ([#1763](https://github.com/antvis/x6/issues/1763)) ([6809dba](6809dba2d8))

### Dependencies

* **@antv/x6:** upgraded to 1.31.0
2022-03-23 02:09:07 +00:00
f79151abd0 chore(release): @antv/x6-sites-demos@1.2.1 [skip ci]
## @antv/x6-sites-demos [1.2.1](https://github.com/antvis/x6/compare/@antv/x6-sites-demos@1.2.0...@antv/x6-sites-demos@1.2.1) (2022-03-23)

### Bug Fixes

* 🐛 not create label when text is empty ([#1783](https://github.com/antvis/x6/issues/1783)) ([ed1fcd1](ed1fcd1f26))
* 🐛 update x6 version ([#1655](https://github.com/antvis/x6/issues/1655)) ([07037be](07037beb59))

### Dependencies

* **@antv/x6:** upgraded to 1.31.0
2022-03-23 02:09:04 +00:00
6a006f3dcd chore(release): @antv/x6-example-features@1.2.2 [skip ci]
## @antv/x6-example-features [1.2.2](https://github.com/antvis/x6/compare/@antv/x6-example-features@1.2.1...@antv/x6-example-features@1.2.2) (2022-03-23)

### Bug Fixes

* 🐛 optimize contextmenu tools ([#1391](https://github.com/antvis/x6/issues/1391)) ([cc01fdf](cc01fdf208))
* 🐛 update x6-react-shape version ([#1425](https://github.com/antvis/x6/issues/1425)) ([4208846](4208846337))

### Performance Improvements

* ️ add simple config to remove rect and text element ([#1449](https://github.com/antvis/x6/issues/1449)) ([0b5f241](0b5f2413f0))

### Dependencies

* **@antv/x6:** upgraded to 1.31.0
2022-03-23 02:09:00 +00:00
e42f4fe2d4 chore(release): @antv/x6-app-er@1.1.7 [skip ci]
## @antv/x6-app-er [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-er@1.1.6...@antv/x6-app-er@1.1.7) (2022-03-23)

### Dependencies

* **@antv/x6:** upgraded to 1.31.0
2022-03-23 02:08:56 +00:00
9f342b68d0 chore(release): @antv/x6-app-draw@1.1.6 [skip ci]
## @antv/x6-app-draw [1.1.6](https://github.com/antvis/x6/compare/@antv/x6-app-draw@1.1.5...@antv/x6-app-draw@1.1.6) (2022-03-23)

### Dependencies

* **@antv/x6:** upgraded to 1.31.0
2022-03-23 02:08:53 +00:00
6eb4e4fafd chore(release): @antv/x6-app-dag@1.1.7 [skip ci]
## @antv/x6-app-dag [1.1.7](https://github.com/antvis/x6/compare/@antv/x6-app-dag@1.1.6...@antv/x6-app-dag@1.1.7) (2022-03-23)

### Dependencies

* **@antv/x6:** upgraded to 1.31.0
2022-03-23 02:08:50 +00:00
fba8cf0ce6 chore(release): @antv/x6@1.31.0 [skip ci]
# @antv/x6 [1.31.0](https://github.com/antvis/x6/compare/@antv/x6@1.30.2...@antv/x6@1.31.0) (2022-03-23)

### Bug Fixes

* 🐛 change the order of statement ([#1910](https://github.com/antvis/x6/issues/1910)) ([eff14ba](eff14baca7))
* 🐛 fix cellEditorOptions typo ([#1895](https://github.com/antvis/x6/issues/1895)) ([4d174d7](4d174d7807))

### Features

*  delete the new Function mode to avoid the CSP policy ([#1921](https://github.com/antvis/x6/issues/1921)) ([157b207](157b2072f3))
* 🐛 support click on the non-text area without adding a new label ([#1894](https://github.com/antvis/x6/issues/1894)) ([4ae1b9e](4ae1b9ef4f))
2022-03-23 02:08:48 +00:00
a7b7f0bc43 chore(release): @antv/x6-svg-to-shape@1.0.6 [skip ci]
## @antv/x6-svg-to-shape [1.0.6](https://github.com/antvis/x6/compare/@antv/x6-svg-to-shape@1.0.5...@antv/x6-svg-to-shape@1.0.6) (2022-03-23)

### Dependencies

* **@antv/x6:** upgraded to 1.31.0
2022-03-23 02:08:44 +00:00
157b2072f3 feat: delete the new Function mode to avoid the CSP policy (#1921) 2022-03-23 07:22:03 +08:00
bdf7d7b628 chore: update AUTHORS [skip ci] 2022-03-21 05:24:22 +00:00
eff14baca7 fix: 🐛 change the order of statement (#1910) 2022-03-21 13:18:05 +08:00
1336 changed files with 114315 additions and 106071 deletions

View File

@ -11,6 +11,11 @@ coverage:
threshold: 1%
flags:
- x6
x6-vector:
threshold: 1%
target: 80% # will fail a Pull Request if coverage is less than 80%
flags:
- x6-vector
x6-geometry:
threshold: 1%
flags:
@ -21,6 +26,9 @@ flags:
paths:
# filter the folder(s) you wish to measure by that flag
- packages/x6
x6-vector:
paths:
- packages/x6-vector
x6-geometry:
paths:
- packages/x6-geometry

6
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"

View File

@ -1,5 +1,5 @@
# This action will automatically close issues fixed in
# pull requests that doesn't target the default branch.
# Automatically close issues fixed in pull requests that doesn't target the default branch.
name: 🚫 Auto Close Fixed Issues
on:
pull_request_target:

View File

@ -1,3 +1,5 @@
# Comment on issues/PRs on certain events (currently not used at all.)
name: 💬 Auto Comment
on: [issues, pull_request_target]
jobs:

View File

@ -1,3 +1,5 @@
# Continuous integration.
name: 👷 CI
on:
pull_request_target:
@ -16,16 +18,16 @@ jobs:
node-version: [16.x]
steps:
- name:  Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: 🎉 Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: 🌱 Get Cache Directory
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: 🚸 Setup Cache
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
@ -49,13 +51,19 @@ jobs:
github-token: ${{ env.bot_token }}
path-to-lcov: ./packages/x6/test/coverage/lcov.info
- name: 💡 Codecov(x6)
uses: codecov/codecov-action@v1
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./packages/x6/test/coverage/lcov.info
flags: x6
- name: 💡 Codecov(x6-vector)
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./packages/x6-vector/test/coverage/lcov.info
flags: x6-vector
- name: 💡 Codecov(x6-geometry)
uses: codecov/codecov-action@v1
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./packages/x6-geometry/test/coverage/lcov.info

View File

@ -138,6 +138,9 @@
- name: pkg:x6
color: eeeeee
description: Denotes a PR that changes packages/x6
- name: pkg:x6-react
color: eeeeee
description: Denotes a PR that changes packages/x6-react
- name: pkg:x6-react-shape
color: eeeeee
description: Denotes a PR that changes packages/x6-react-shape

View File

@ -1,3 +1,6 @@
# Create a new branch dedicated to a specific issue
# (may be superseded by GitHub functionalities)
name: 🚧 Create Issue Branch
on:
issue_comment:
@ -6,7 +9,7 @@ jobs:
cib:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: wow-actions/use-app-token@v1
with:
app_id: ${{ secrets.APP_ID }}

View File

@ -1,3 +1,5 @@
# Delete all but the last x GitHub releases for certain packages.
name: 🚫 Delete Stale Releases
on:
repository_dispatch:
@ -6,7 +8,7 @@ jobs:
clean:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: wow-actions/use-app-token@v1
with:
app_id: ${{ secrets.APP_ID }}
@ -20,6 +22,7 @@ jobs:
group: '(?!^)@.*$'
exclude: |
@antv/x6@**
@antv/x6-react@**
@antv/x6-vue-shape@**
@antv/x6-react-shape@**
@antv/x6-angular-shape@**

View File

@ -1,3 +1,5 @@
# Build and deploy updated official site to GitHub pages.
name: 🚀 Deploy Sites
on:
repository_dispatch:
@ -10,9 +12,9 @@ jobs:
node-version: [16.x]
steps:
- name:  Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: 🎉 Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
@ -21,7 +23,7 @@ jobs:
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: 🚸 Setup Cache
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
@ -30,7 +32,7 @@ jobs:
## cache webpack(babel-loader, eslint-loader)
- name: 💩 Setup Webpack Cache
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: |
node_modules
@ -41,7 +43,7 @@ jobs:
## cache sites
- name: 💩 Setup Sites Cache
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: sites/x6-sites/static/demos
key: ${{ runner.os }}-sites-${{ hashFiles('./packages/x6/package.json', './sites/x6-sites-demos/**/src') }}

View File

@ -1,3 +1,5 @@
# https://github.com/gitleaks/gitleaks-action
name: 🥤 GitLeaks
on:
pull_request_target:
@ -10,7 +12,7 @@ jobs:
gitleaks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
fetch-depth: '1'
- name: wget
@ -18,4 +20,4 @@ jobs:
with:
args: -O .gitleaks.toml https://raw.githubusercontent.com/ycjcl868/gitleaks/master/.gitleaks.toml
- name: gitleaks-action
uses: zricethezav/gitleaks-action@master
uses: zricethezav/gitleaks-action@v1.6.0

View File

@ -1,3 +1,8 @@
# Perform certain actions when labels are added to
# or removed from issues.
#
# See .github/workflows/config/label-commands.yml
name: 👾 Label Commands
on:
pull_request_target:

View File

@ -1,3 +1,6 @@
# Locks closed issues and pull requests after a period of inactivity.
# https://github.com/dessant/lock-threads
name:  Lock Threads
on:
schedule:
@ -11,7 +14,7 @@ jobs:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: dessant/lock-threads@v2
- uses: dessant/lock-threads@v3
with:
github-token: ${{ env.bot_token }}
issue-lock-inactive-days: 365

View File

@ -1,3 +1,6 @@
# Request more info from newly opened issues/PRs that contain either default title/body or whose body is left blank
# https://github.com/wow-actions/needs-more-info
name: 🚨 Needs More Info
on:
pull_request_target:

View File

@ -1,3 +1,6 @@
# Search for potential issue duplicates using DamerauLevenshtein algorithm
# https://github.com/wow-actions/potential-duplicates
name: 🆖 Potential Duplicates
on:
issues:

View File

@ -1,3 +1,6 @@
# Automatically apply labels to your PRs based on branch name patterns like feature/* or fix/*
# https://github.com/TimonVS/pr-labeler-action
name: 🏷 Label(Branch Name)
on:
pull_request_target:

View File

@ -1,3 +1,6 @@
# Label a PR according to the packages it involves, based on changed files
# and the rules defined in .github/workflows/config/pr-label-file-paths.yml
name: 🏷 Label(File Paths)
on: pull_request_target
jobs:
@ -9,7 +12,7 @@ jobs:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: actions/labeler@v2
- uses: actions/labeler@v4
with:
repo-token: ${{ env.bot_token }}
configuration-path: .github/workflows/config/pr-label-file-paths.yml

View File

@ -1,10 +1,12 @@
# Assign labels based on pull request change sizes.
name: 🏷 Label(Patch Size)
on: pull_request_target
jobs:
label:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: wow-actions/use-app-token@v1
with:
app_id: ${{ secrets.APP_ID }}

View File

@ -1,9 +1,16 @@
# Automatically label a PR depending on the PR's status (springboard)
name: 🏷 Label(Status) Dummy
on:
pull_request_review:
types: [submitted, dismissed]
permissions:
contents: read
jobs:
dummy:
permissions:
contents: none
runs-on: ubuntu-latest
steps:
- run: echo "this is a dummy workflow that triggers a workflow_run; it's necessary because otherwise the repo secrets will not be in scope for externally forked pull requests"

View File

@ -1,3 +1,5 @@
# Automatically label a PR depending on the PR's status
name: 🏷 Label(Status)
on:
pull_request_target:
@ -17,4 +19,4 @@ jobs:
- uses: wow-actions/pr-triage@v1
with:
GITHUB_TOKEN: ${{ env.bot_token }}
WORKFLOW-ID: ${{ github.event.workflow_run.id }}
WORKFLOW_ID: ${{ github.event.workflow_run.id }}

View File

@ -1,5 +1,6 @@
# Github action for automatically adding label or setting assignee when a new
# Issue or PR is opened. https://github.com/marketplace/actions/issue-labeler
# Automatically add labels or setting assignees when a new issue or PR is opened,
# based on its title and body.
# https://github.com/marketplace/actions/issue-labeler
name: 🏷 Label(Title and Body)
on:
@ -16,7 +17,7 @@ jobs:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: Naturalclar/issue-action@v2.0.1
- uses: Naturalclar/issue-action@v2.0.2
with:
title-or-body: title
github-token: ${{ env.bot_token }}

View File

@ -1,3 +1,5 @@
# https://github.com/afc163/surge-preview
name: 🔂 Surge PR Preview
on:
pull_request_target:
@ -13,14 +15,14 @@ jobs:
matrix:
node-version: [16.x]
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: 🌱 Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: 🚸 Setup yarn cacha
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
@ -29,7 +31,7 @@ jobs:
## cache webpack(babel-loader, eslint-loader)
- name: 💩 Setup webpack cache
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: |
node_modules
@ -40,7 +42,7 @@ jobs:
## cache sites
- name: 💩 Setup sites cache
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: sites/x6-sites/static/demos
key: ${{ runner.os }}-sites-${{ hashFiles('./packages/x6/package.json', './sites/x6-sites-demos/**/src') }}
@ -48,7 +50,7 @@ jobs:
${{ runner.os }}-sites-
- name: 🎉 Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}

View File

@ -1,3 +1,5 @@
# Automatically rebase PRs via the /rebase command
name: 🎉 Rebase
on:
issue_comment:
@ -7,7 +9,7 @@ jobs:
if: github.event.issue.pull_request != '' && contains(github.event.comment.body, '/rebase')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: wow-actions/use-app-token@v1

View File

@ -1,4 +1,8 @@
# @see: https://dev.to/antongolub/the-chronicles-of-semantic-release-and-monorepos-5cfc
# Create new GitHub releases using scripts/monorepo-semantic-release
# and the semantic-release package.
#
# See https://www.npmjs.com/package/semantic-release
# See https://dev.to/antongolub/the-chronicles-of-semantic-release-and-monorepos-5cfc
name: 🚀 Release
on:
@ -17,16 +21,16 @@ jobs:
node-version: [16.x]
steps:
- name:  Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: 🎉 Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: 🌱 Get Cache Directory
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: 🚸 Setup Cache
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
@ -60,7 +64,7 @@ jobs:
- name: 🔀 Repository Dispatch
if: github.ref == 'refs/heads/master'
uses: peter-evans/repository-dispatch@v1
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ env.bot_token }}
event-type: released

View File

@ -1,3 +1,5 @@
# https://github.com/wow-actions/slash-commands
name: 🔱 Slash Commands
on:
issue_comment:

View File

@ -1,3 +1,5 @@
# Warn and then close issues and PRs that have had no activity for a specified amount of time.
name: 👻 Stale
on:
schedule:
@ -11,7 +13,7 @@ jobs:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: actions/stale@v3
- uses: actions/stale@v6
with:
repo-token: ${{ env.bot_token }}
stale-issue-message: |

View File

@ -1,3 +1,5 @@
# Update issue labels in repo as defined in /.github/workflows/config/labels.yml
name: 🔄 Sync Labels
on:
push:
@ -9,7 +11,7 @@ jobs:
sync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: wow-actions/use-app-token@v1
with:
app_id: ${{ secrets.APP_ID }}

View File

@ -1,3 +1,5 @@
# Sync repo to https://gitee.com/
#
# https://github.com/marketplace/actions/gitee-pages-action
# 配置步骤如下
# 1. 在命令行终端或 Git Bash 使用命令 ssh-keygen -t rsa -C "youremail@example.com" 生成 SSH Key注意替换为自己的邮箱。生成的 id_rsa 是私钥id_rsa.pub 是公钥。(⚠️注意此处不要设置密码)

View File

@ -1,3 +1,5 @@
# Automatically generate and update AUTHORS.txt.
name: 🎗 Update Authors
on:
push:
@ -9,7 +11,7 @@ jobs:
authors:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: wow-actions/use-app-token@v1

View File

@ -1,4 +1,5 @@
# Auto update cahe
# Cache dependencies and build outputs to improve workflow execution time.
# https://github.com/actions/cache
name: 🌈 Update Cache
on:
@ -10,6 +11,9 @@ on:
- next-major
- alpha
- beta
permissions:
contents: read
jobs:
cache:
runs-on: ubuntu-latest
@ -18,9 +22,9 @@ jobs:
node-version: [16.x]
steps:
- name:  Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: 🎉 Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: 🌱 Get Cache Directory
@ -28,7 +32,7 @@ jobs:
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: 🚸 Setup Cache
id: cache
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}

View File

@ -1,3 +1,5 @@
# Update /CONTRIBUTORS.svg to include new contributors' avatars.
name: 🤝 Update Contributors
on:
schedule:

View File

@ -1,3 +1,5 @@
# Renew the copyright notice in LICENSE at the beginning of every year.
name: 🔑 Update License
on:
schedule:
@ -6,7 +8,7 @@ jobs:
update:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: wow-actions/use-app-token@v1

View File

@ -1,3 +1,5 @@
# Comment a welcome message on an issue if it's the reporter's first issue.
name: 👋 Welcome
on:
pull_request_target:

2
.gitignore vendored
View File

@ -11,5 +11,3 @@ es
dist
*.pem
!mock-cert.pem
tmp
test

23
AUTHORS
View File

@ -1,4 +1,5 @@
BARM <284942955@qq.com>
Candy <563378816@qq.com>
Chaoqi <HAN>
Clifford <ajard>
DaiGang <42136433+daigang666@users.noreply.github.com>
@ -6,11 +7,19 @@ Dong <48054715+halodong@users.noreply.github.com>
Draco <Draco.coder@gmail.com>
Eve-Sama <17764594863@163.com>
Eve-Sama <948832626@qq.com>
Gossypol <31892817+gossypol@users.noreply.github.com>
ImgBotApp <ImgBotHelp@gmail.com>
Indomi <indomi126@gmail.com>
James <san>
Jógvan <lse>
Ken <ei>
Limbo <49612796+JUST-Limbo@users.noreply.github.com>
Lixu <37231473+wflixu@users.noreply.github.com>
Lloyd <ho>
Lyn <47809781+lyn-boyu@users.noreply.github.com>
Mingfei <az8641683@163.com>
MrMengJ <2646973632@qq.com>
Naveen <172697+naveensrinivasan@users.noreply.github.com>
NewByVector <NewByVector@users.noreply.github.com>
Olive.Wang <olivewind.wang@gmail.com>
Opportunity <opportunity@live.in>
@ -18,18 +27,25 @@ Questions <chip@twostewards.com>
RuiLin <on>
SSC <273702440@qq.com>
Sindori <441933726@qq.com>
Susan <527971893@qq.com>
Thomas <eugne>
Tony <>
Utopia <greatauk11@gmail.com>
XLZY <1017866168@qq.com>
Xingjian <han>
Zhenyu <o>
arthur657834 <kingkom7834@126.com>
boyu.zlj <boyu.zlj@antgroup.com>
breezefaith <nyzhangzc@qq.com>
bubkoo <bubkoo.wy@gmail.com>
bubkoo <bubkoo@users.noreply.github.com>
budlion <dongqi.ldq@alibaba-inc.com>
cuidong626 <cuidong1234@outlook.com>
daigang <1210242662@qq.com>
doublewu <592581554@qq.com>
iceytea <liyunheasap@yeah.net>
jiqili <43718732+jiqili@users.noreply.github.com>
kelin.zrh <34393362+AricZhu@users.noreply.github.com>
kingshuaishuai <ken.wang@mrs.ai>
kio <1421104933@qq.com>
lijing666 <lijing241@yeah.net>
@ -37,18 +53,24 @@ lopn <lopnxrp@126.com>
luchunwei <luchunwei@gmail.com>
luzhuang <364439895@qq.com>
lvhuiyang <ilvhuiyang@gmail.com>
myzxlin <myzxlin@163.com>
newbyvector <vectorse@126.com>
niexq <1879633916@qq.com>
niexq <niexq@firstgrid.cn>
pengxingjian.pxj <pengxingjian.pxj@alibaba-inc.com>
pfdgithub <pfdgithub@users.noreply.github.com>
qingchi <qinky94@163.com>
qu <33251372+Qujh97@users.noreply.github.com>
sallen450 <qinghua10199@gmail.com>
semantic-release-bot <semantic-release-bot@martynus.net>
vector <vectorse@126.com>
wgf <34190465+evelope@users.noreply.github.com>
wind <>
wjqsummer <52412389+wjqsummer@users.noreply.github.com>
wtzeng1 <wtzeng1@gmail.com>
x6-bot <x6-bot@users.noreply.github.com>
xrkffgg <xrkffgg@gmail.com>
yaojin2070 <48686959+yaojin2070@users.noreply.github.com>
zdc1111 <39116292+zdc1111@users.noreply.github.com>
九思⚡⚡⚡ <2228429150@qq.com>
何腾飞 <avrin.live.cn@outlook.com>
@ -58,6 +80,7 @@ zdc1111 <39116292+zdc1111@users.noreply.github.com>
文瑀 <wenyu.jqq@antfin.com>
杨凌 <89915256@qq.com>
柏愚 <boyu.zlj@antfin.com>
粑粑超 <842486229@qq.com>
金强强 <wenyu.jqq@antfin.com>
问崖 <bubkoo.wy@gmail.com>
问崖 <pengxingjian.pxj@antfin.com>

View File

@ -110,8 +110,8 @@ Look at [these files](https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJyg
X6 uses semantic versioning in release process based on [semver](https://semver.org/).
- [Publishing maintenance releases](https://github.com/semantic-release/semantic-release/blob/master/docs/recipes/release-workflow/maintenance-releases.md)
- [Publishing pre-releases](https://github.com/semantic-release/semantic-release/blob/master/docs/recipes/release-workflow/pre-releases.md)
- [Publishing maintenance releases](https://github.com/semantic-release/semantic-release/blob/master/docs/recipes/maintenance-releases.md)
- [Publishing pre-releases](https://github.com/semantic-release/semantic-release/blob/master/docs/recipes/pre-releases.md)
### Branch Strategy

View File

@ -1,6 +1,6 @@
# 代码贡献规范
如果你有任何疑问,欢迎提交 [issue](https://github.com/antvis/x6/issues) 或 [PR](https://github.com/antvis/x6/pulls)!
有任何疑问,欢迎提交 [issue](https://github.com/antvis/x6/issues) 或 [PR](https://github.com/antvis/x6/pulls)!
## 提交 issue
@ -109,8 +109,8 @@ BREAKING CHANGE:
## 发布管理
- [发布维护版本](https://github.com/semantic-release/semantic-release/blob/master/docs/recipes/release-workflow/maintenance-releases.md)
- [发布预发版本](https://github.com/semantic-release/semantic-release/blob/master/docs/recipes/release-workflow/pre-releases.md)
- [Publishing maintenance releases](https://github.com/semantic-release/semantic-release/blob/master/docs/recipes/maintenance-releases.md)
- [Publishing pre-releases](https://github.com/semantic-release/semantic-release/blob/master/docs/recipes/pre-releases.md)
X6 基于 [semver](http://semver.org/lang/zh-CN/) 语义化版本号进行发布。
@ -121,7 +121,7 @@ X6 基于 [semver](http://semver.org/lang/zh-CN/) 语义化版本号进行发布
### 发布策略
每个大版本的发布中,都会有一个PM在发布的不同阶段负有以下职责:
每个大版本都有一个发布经理管理(PM,他/她要做的事情
#### 准备工作:
@ -135,6 +135,6 @@ X6 基于 [semver](http://semver.org/lang/zh-CN/) 语义化版本号进行发布
#### 发布时:
- 将老的稳定版本master备份到以当前大版本为名字的分支上例如 `1.x`),并设置 tag 为 {v}.x v 为当前版本,例如 `1.x`)。
- 将老的稳定版本master备份到以当前大版本为名字的分支上例如 `1.x`),并设置 tag 为 {v}.x` v 为当前版本,例如 `1.x`)。
- 发布新的稳定版本到 [npm](http://npmjs.com),并通知上层框架进行更新。
- `npm publish` 之前,请先阅读[『我是如何发布一个 npm 包的』](https://fengmk2.com/blog/2016/how-i-publish-a-npm-package)。

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 8.7 MiB

After

Width:  |  Height:  |  Size: 14 MiB

View File

@ -2,9 +2,10 @@
<p align="center"><img src="/flow.svg"></p>
<p align="center"><strong>Graph Editing Engine Of AntV</strong></p>
<p align="center"><strong>JavaScript diagramming library that uses SVG and HTML for rendering</strong></p>
<p align="center"><a href="https://x6.antv.vision/en/docs/tutorial/about">Tutorials</a> · <a href="https://x6.antv.vision/en/examples/gallery">Examples</a> · <a href="https://x6.antv.vision/en/docs/api/graph">API</a></p>
<p align="center">
<a href="https://github.com/antvis/X6/actions/workflows/ci.yml"><img alt="build" src="https://img.shields.io/github/workflow/status/antvis/x6/%F0%9F%91%B7%E3%80%80CI/master?logo=github&style=flat-square"></a>
<a href="https://app.codecov.io/gh/antvis/X6"><img alt="coverage" src="https://img.shields.io/codecov/c/gh/antvis/x6?logo=codecov&style=flat-square&token=15CO54WYUV"></a>
@ -22,22 +23,15 @@
## Features
- 🌱 Easy-to-customize: based on well known SVG/HTML/CSS or React/Vue/Angular to custom nodes and edges
- 🚀 Out-of-the-box: built-in 10+ plugins, such as selection, dnd, redo/undo, snapline, minimap, etc.
- 🧲 Data-driven: base on MVC architecture, you can focus on data logic and business logic
- 💯 Highly-event-driven: you can react on any event that happens inside the graph
## Environment Support
- Modern browsers and Internet Explorer 11 (with polyfills)
- Server-side Rendering
| [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt="IE / Edge" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)<br>IE / Edge | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)<br>Firefox | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)<br>Chrome | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)<br>Safari |
| --- | --- | --- | --- |
| IE11, Edge | last 2 versions | last 2 versions | last 2 versions |
- 🌱 easy-to-customize: based on well known SVG/HTML/CSS or React/Vue to custom nodes and edges
- 🚀 out-of-the-box: built-in 10+ plugins, such as selection, dnd, redo/undo, snapline, minimap, etc.
- 🧲 data-driven: base on MVC architecture, you can focus on data logic and business logic
- 💯 highly-event-driven: you can react on any event that happens inside the graph
## Installation
### NPM/Yarn
```shell
# npm
$ npm install @antv/x6 --save
@ -46,20 +40,51 @@ $ npm install @antv/x6 --save
$ yarn add @antv/x6
```
### CDNs
For learning purposes, you can use the latest version with one of the CDN:
- https://unpkg.com/@antv/x6/dist/x6.js
- https://cdn.jsdelivr.net/npm/@antv/x6/dist/x6.js
- https://cdnjs.cloudflare.com/ajax/libs/antv-x6/1.3.20/x6.js
```html
<script src="https://unpkg.com/@antv/x6/dist/x6.js"></script>
```
For production, we recommend linking to a specific version number to avoid unexpected breakage from newer versions:
- https://unpkg.com/@antv/x6@1.1.1/dist/x6.js
- https://cdn.jsdelivr.net/npm/@antv/x6@1.1.1/dist/x6.js
- https://cdnjs.cloudflare.com/ajax/libs/antv-x6/1.1.1/x6.js
```html
<script src="https://unpkg.com/@antv/x6@1.1.1/dist/x6.js"></script>
```
## Usage
**Step 1**: specify a container the render the diagram.
```html
<div id="container" style="width: 600px; height: 400px"></div>
```
```ts
import { Graph } from '@antv/x6'
**Step 2**: render nodes and edges.
```ts
// import from node_modules
import { Graph } from '@antv/x6'
// or use the global variable `X6` exported from CDN links
// const { Graph } = X6
// Create an instance of Graph.
const graph = new Graph({
container: document.getElementById('container'),
grid: true
})
// Render source node.
const source = graph.addNode({
x: 300,
y: 40,
@ -68,6 +93,7 @@ const source = graph.addNode({
label: 'Hello',
})
// Render target node.
const target = graph.addNode({
x: 420,
y: 180,
@ -76,23 +102,92 @@ const target = graph.addNode({
label: 'World',
})
// Render edge from source to target.
graph.addEdge({
source,
target,
})
```
## Links
<img src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*o4W3RLZicagAAAAAAAAAAAAAARQnAQ" alt="HelloWorld" />
- [Documents](https://x6.antv.vision/zh/docs/tutorial/about)
- [Samples](https://x6.antv.vision/zh/examples/gallery)
- [Blog](https://www.yuque.com/antv/x6/gcinvi)
- [Versioning Release Note](https://www.yuque.com/antv/x6/bbfu6r)
- [FAQ](https://www.yuque.com/antv/x6/be9pfx)
- [CodeSanbox Template](https://codesandbox.io/s/qosj0?file=/src/app.tsx)
## Documentation
- [About](https://x6.antv.vision/en/docs/tutorial/about)
- [Getting Started](https://x6.antv.vision/en/docs/tutorial/getting-started)
- [Basic Usage](https://x6.antv.vision/en/docs/tutorial/basic/graph)
- [Advanced Practice](https://x6.antv.vision/en/docs/tutorial/intermediate/serialization)
- [Senior Guidance](https://x6.antv.vision/en/docs/tutorial/advanced/animation)
- [ChangeLog](https://x6.antv.vision/en/docs/tutorial/log)
## App Demos Build with X6
<center>
<a href="https://x6.antv.vision/zh/examples/showcase/practices#flowchart" target="_blank" rel="noopener noreferrer">
<img width="400" height="250" style="margin-bottom: 20px" src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*JSr-RbwCgmcAAAAAAAAAAAAAARQnAQ" alt="Flow"/>
</a>
<a href="https://x6.antv.vision/zh/examples/showcase/practices#dag" target="_blank" rel="noopener noreferrer">
<img width="400" height="250" style="margin-bottom: 20px" src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*RPiGRaSus3UAAAAAAAAAAAAAARQnAQ" alt="Dag"/>
</a>
<a href="https://x6.antv.vision/zh/examples/showcase/practices#mindmap" target="_blank" rel="noopener noreferrer">
<img width="400" height="200" style="margin-bottom: 20px" src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*GsEGSaBkc84AAAAAAAAAAAAAARQnAQ" alt="MindMap"/>
</a>
<a href="https://x6.antv.vision/zh/examples/showcase/practices#bpmn" target="_blank" rel="noopener noreferrer">
<img width="400" height="200" style="margin-bottom: 20px" src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*aPSySa8oz4sAAAAAAAAAAAAAARQnAQ" alt="BPMN"/>
</a>
<a href="https://x6.antv.vision/zh/examples/showcase/practices#class" target="_blank" rel="noopener noreferrer">
<img width="400" height="250" style="margin-bottom: 20px" src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*OaCpR7t_mVoAAAAAAAAAAAAAARQnAQ" alt="Class"/>
</a>
<a href="https://x6.antv.vision/zh/examples/showcase/practices#org" target="_blank" rel="noopener noreferrer">
<img width="400" height="250" style="margin-bottom: 20px" src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*FWx5SYDzLw4AAAAAAAAAAAAAARQnAQ" alt="ORG"/>
</a>
<a href="https://x6.antv.vision/zh/examples/showcase/practices#er" target="_blank" rel="noopener noreferrer">
<img width="400" height="250" style="margin-bottom: 20px" src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*7yVJQoM6-9AAAAAAAAAAAAAAARQnAQ" alt="ER"/>
</a>
<a href="https://x6.antv.vision/zh/examples/showcase/practices#swimlane" target="_blank" rel="noopener noreferrer">
<img width="400" height="250" style="margin-bottom: 20px" src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*mUVrSJMkP1UAAAAAAAAAAAAAARQnAQ" alt="SwimLane"/>
</a>
<a href="https://x6.antv.vision/zh/examples/showcase/practices#tree" target="_blank" rel="noopener noreferrer">
<img width="400" height="250" style="margin-bottom: 20px" src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*XDnNRqnj4WkAAAAAAAAAAAAAARQnAQ" alt="Tree"/>
</a>
<a href="https://x6.antv.vision/zh/examples/showcase/practices#elk" target="_blank" rel="noopener noreferrer">
<img width="400" height="250" style="margin-bottom: 20px" src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*Z3ebTKy0w9cAAAAAAAAAAAAAARQnAQ" alt="ELK"/>
</a>
</center>
## Communication
Welcome to join the **X6 Communication Group** (Scan the QR Code to Join us). We also welcome the github [issues](https://github.com/antvis/x6/issues).
<a href="https://qr.dingtalk.com/action/joingroup?code=v1,k1,rOHuvgq5s0EHDktyyQJffDE3ZAmHnbB2e6iwn/w4BKs=&_dt_no_comment=1&origin=11" target="_blank" rel="noopener noreferrer">
<img src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*nFa5TaWsSOoAAAAAAAAAAAAAARQnAQ" alt="X6 图可视化交流群4" width="260" />
</a>
## Development
This repo is based on [lerna](https://github.com/lerna/lerna) with the following structure:
```
.
├── examples
│ ├── x6-app-dag # example of dag graph
│ ├── x6-app-draw # example of flowchart
│ ├── x6-app-er # example of ER chart
│ └── x6-example-features # example of basic features
├── packages
│ ├── x6 # X6
│ ├── x6-react # wrap X6 with react(reserved)
│ ├── x6-react-components # react componets to build graph apps
│ ├── x6-react-shape # support render node with react
│ └── x6-vue-shape # support render node with vue
└── sites
├── x6-sites # sites and documents
├── x6-sites-demos # demos in documents
└── x6-sites-demos-helper # tools to build demos
```
We need to install some necessary global tools before getting started.
```shell
# install yarn and lerna
$ npm install yarn -g
@ -100,19 +195,37 @@ $ npm install lerna -g
# install deps and build
$ yarn bootstrap
```
# enter the specified project development and debugging
cd packages/x6
yarn build:watch
Then we can `cd` to dirs to development and debugging.
# start example to see the effect
Such as, we can start `examples/x6-example-features` locally:
```shell
cd examples/x6-example-features
yarn start
```
When need to fix some bugs of X6, we can start with **watch** mode:
```shell
cd packages/x6
// build esm to "em" dir
yarn build:watch:esm
// build commonjs to "lib" dir
yarn build:watch:cjs
```
## Contributing
To become a contributor, please follow our [contributing guide](/CONTRIBUTING.md). If you are an active contributor, you can apply to be a outside collaborator.
Please let us know how can we help. Do check out [issues](https://github.com/antvis/x6/issues) for bug reports or suggestions first.
To become a contributor, please follow our [contributing guide](/CONTRIBUTING.md).
## Contributors
<a href="https://github.com/antvis/x6/graphs/contributors">
<img src="/CONTRIBUTORS.svg" alt="Contributors" width="740" />

172
README.md
View File

@ -1,9 +1,10 @@
简体中文 | [English](/README.en-us.md)
<p align="center"><img alt="flow" src="/flow.svg"></p>
<p align="center"><img src="/flow.svg"></p>
<p align="center"><strong>X6 是 AntV 旗下的图编辑引擎</strong></p>
<p align="center"><strong>提供简单易用的节点定制能力和开箱即用的交互组件方便我们快速搭建流程图、DAG 图、ER 图等图应用</strong></p>
<p align="center"><a href="https://x6.antv.vision/zh/docs/tutorial/about">教程</a><a href="https://x6.antv.vision/zh/examples/gallery">示例</a><a href="https://x6.antv.vision/zh/docs/api/graph">API</a></p>
<p align="center">
<a href="https://github.com/antvis/X6/actions/workflows/ci.yml"><img alt="build" src="https://img.shields.io/github/workflow/status/antvis/x6/%F0%9F%91%B7%E3%80%80CI/master?logo=github&style=flat-square"></a>
@ -20,24 +21,18 @@
<a href="https://x6.antv.vision"><img alt="website" src="https://img.shields.io/static/v1?label=&labelColor=505050&message=website&color=0076D6&style=flat-square&logo=google-chrome&logoColor=0076D6"></a>
</p>
## 特性
- 🌱 极易定制:支持使用 SVG/HTML/React/Vue/Angular 定制节点样式和交互
- 🌱 极易定制:支持使用 SVG/HTML/React/Vue 定制节点样式和交互
- 🚀 开箱即用:内置 10+ 图编辑配套扩展,如框选、对齐线、小地图等
- 🧲 数据驱动:基于 MVC 架构,用户更加专注于数据逻辑和业务逻辑
- 💯 事件驱动:完备的事件系统,可以监听图表内发生的任何事件
## 兼容环境
- 现代浏览器和 IE11需要 polyfills
- 支持服务端渲染。
| [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt="IE / Edge" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)<br>IE / Edge | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)<br>Firefox | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)<br>Chrome | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)<br>Safari |
| --- | --- | --- | --- |
| IE11, Edge | last 2 versions | last 2 versions | last 2 versions |
## 安装
### 使用 NPM/Yarn
```shell
# npm
$ npm install @antv/x6 --save
@ -46,20 +41,51 @@ $ npm install @antv/x6 --save
$ yarn add @antv/x6
```
## 示例
### 使用 CDN
可以使用下面任意一个最新版本的 CDN 地址:
- https://unpkg.com/@antv/x6/dist/x6.js
- https://cdn.jsdelivr.net/npm/@antv/x6/dist/x6.js
- https://cdnjs.cloudflare.com/ajax/libs/antv-x6/1.3.20/x6.js
```html
<script src="https://unpkg.com/@antv/x6/dist/x6.js"></script>
```
在生产环境中,建议使用指定版本号的链接,以避免版本更新带来的意外破坏:
- https://unpkg.com/@antv/x6@1.1.1/dist/x6.js
- https://cdn.jsdelivr.net/npm/@antv/x6@1.1.1/dist/x6.js
- https://cdnjs.cloudflare.com/ajax/libs/antv-x6/1.1.1/x6.js
```html
<script src="https://unpkg.com/@antv/x6@1.1.1/dist/x6.js"></script>
```
## 快速使用
**Step 1**: 指定渲染图的容器。
```html
<div id="container" style="width: 600px; height: 400px"></div>
```
```ts
import { Graph } from '@antv/x6'
**Step 2**: 渲染节点和边。
```ts
// 从 node_modules 引入
import { Graph } from '@antv/x6'
// 从 CDN 引入时,我们暴露了 X6 这个全局变量
// const { Graph } = X6
// 创建 Graph 的实例
const graph = new Graph({
container: document.getElementById('container'),
grid: true
})
// 渲染源节点
const source = graph.addNode({
x: 300,
y: 40,
@ -68,6 +94,7 @@ const source = graph.addNode({
label: 'Hello',
})
// 渲染目标节点
const target = graph.addNode({
x: 420,
y: 180,
@ -76,22 +103,95 @@ const target = graph.addNode({
label: 'World',
})
// 渲染边
graph.addEdge({
source,
target,
})
```
## 链接
渲染结果如下。
- [文档](https://x6.antv.vision/zh/docs/tutorial/about)
- [示例](https://x6.antv.vision/zh/examples/gallery)
- [博客](https://www.yuque.com/antv/x6/gcinvi)
- [更新日志](https://www.yuque.com/antv/x6/bbfu6r)
- [常见问题](https://www.yuque.com/antv/x6/be9pfx)
- [CodeSanbox 模板](https://codesandbox.io/s/qosj0?file=/src/app.tsx)
<img src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*o4W3RLZicagAAAAAAAAAAAAAARQnAQ" alt="HelloWorld" />
## 本地开发
## 使用文档
- [简介](https://x6.antv.vision/zh/docs/tutorial/about)
- [快速上手](https://x6.antv.vision/zh/docs/tutorial/getting-started)
- [基础教程](https://x6.antv.vision/zh/docs/tutorial/basic/graph)
- [进阶实践](https://x6.antv.vision/zh/docs/tutorial/intermediate/serialization)
- [高级指引](https://x6.antv.vision/zh/docs/tutorial/advanced/animation)
- [更新日志](https://www.yuque.com/antv/x6/xgb04i)
## 应用案例
<center>
<a href="https://x6.antv.vision/zh/examples/showcase/practices#flowchart" target="_blank" rel="noopener noreferrer">
<img width="400" height="250" style="margin-bottom: 20px" src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*JSr-RbwCgmcAAAAAAAAAAAAAARQnAQ" alt="Flow"/>
</a>
<a href="https://x6.antv.vision/zh/examples/showcase/practices#dag" target="_blank" rel="noopener noreferrer">
<img width="400" height="250" style="margin-bottom: 20px" src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*RPiGRaSus3UAAAAAAAAAAAAAARQnAQ" alt="Dag"/>
</a>
<a href="https://x6.antv.vision/zh/examples/showcase/practices#mindmap" target="_blank" rel="noopener noreferrer">
<img width="400" height="200" style="margin-bottom: 20px" src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*GsEGSaBkc84AAAAAAAAAAAAAARQnAQ" alt="MindMap"/>
</a>
<a href="https://x6.antv.vision/zh/examples/showcase/practices#bpmn" target="_blank" rel="noopener noreferrer">
<img width="400" height="200" style="margin-bottom: 20px" src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*aPSySa8oz4sAAAAAAAAAAAAAARQnAQ" alt="BPMN"/>
</a>
<a href="https://x6.antv.vision/zh/examples/showcase/practices#class" target="_blank" rel="noopener noreferrer">
<img width="400" height="250" style="margin-bottom: 20px" src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*OaCpR7t_mVoAAAAAAAAAAAAAARQnAQ" alt="Class"/>
</a>
<a href="https://x6.antv.vision/zh/examples/showcase/practices#org" target="_blank" rel="noopener noreferrer">
<img width="400" height="250" style="margin-bottom: 20px" src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*FWx5SYDzLw4AAAAAAAAAAAAAARQnAQ" alt="ORG"/>
</a>
<a href="https://x6.antv.vision/zh/examples/showcase/practices#er" target="_blank" rel="noopener noreferrer">
<img width="400" height="250" style="margin-bottom: 20px" src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*7yVJQoM6-9AAAAAAAAAAAAAAARQnAQ" alt="ER"/>
</a>
<a href="https://x6.antv.vision/zh/examples/showcase/practices#swimlane" target="_blank" rel="noopener noreferrer">
<img width="400" height="250" style="margin-bottom: 20px" src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*mUVrSJMkP1UAAAAAAAAAAAAAARQnAQ" alt="SwimLane"/>
</a>
<a href="https://x6.antv.vision/zh/examples/showcase/practices#tree" target="_blank" rel="noopener noreferrer">
<img width="400" height="250" style="margin-bottom: 20px" src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*XDnNRqnj4WkAAAAAAAAAAAAAARQnAQ" alt="Tree"/>
</a>
<a href="https://x6.antv.vision/zh/examples/showcase/practices#elk" target="_blank" rel="noopener noreferrer">
<img width="400" height="250" style="margin-bottom: 20px" src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*Z3ebTKy0w9cAAAAAAAAAAAAAARQnAQ" alt="ELK"/>
</a>
</center>
## 如何交流
如果你在使用的过程中碰到问题,可以先通过 [issues](https://github.com/antvis/x6/issues) 看看有没有类似的 bug 或者建议。欢迎提 [issues](https://github.com/antvis/x6/issues/new) 交流,也可以使用[钉钉](https://m.dingtalk.com/)扫描下面二维码加入**X6 交流群**。
需要注意的是,提问题时请配上 [CodeSandbox](https://codesandbox.io/s/pensive-sound-f4nhc) 的复现代码,方便快速定位和解决问题。
<a href="https://qr.dingtalk.com/action/joingroup?code=v1,k1,rOHuvgq5s0EHDktyyQJffDE3ZAmHnbB2e6iwn/w4BKs=&_dt_no_comment=1&origin=11" target="_blank" rel="noopener noreferrer">
<img src="https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*nFa5TaWsSOoAAAAAAAAAAAAAARQnAQ" alt="X6 图可视化交流群4" width="260" />
</a>
## 如何开发
我们使用了 [lerna](https://github.com/lerna/lerna) 来管理项目,目录结构如下:
```
.
├── examples
│ ├── x6-app-dag # dag 图示例
│ ├── x6-app-draw # 流程图示例
│ ├── x6-app-er # ER 图示例
│ └── x6-example-features # 特性演示示例
├── packages
│ ├── x6 # X6
│ ├── x6-react # X6 的 React 封装(预留)
│ ├── x6-react-components # 配套 React 组件库
│ ├── x6-react-shape # 支持使用 React 渲染节点
│ └── x6-vue-shape # 支持使用 Vue 渲染节点
└── sites
├── x6-sites # 官网和文档
├── x6-sites-demos # 文档中嵌入的 DEMO
└── x6-sites-demos-helper # 构建文档 DEMO 的工具
```
开始之前需要安装必要的全局依赖和初始化:
```shell
# 全局安装 yarn 和 lerna 工具
@ -100,19 +200,35 @@ $ npm install lerna -g
# 安装项目依赖和初始化构建
$ yarn bootstrap
```
# 进入到指定项目开发和调试
cd packages/x6
yarn build:watch
然后可以进入到指定项目开发和调试
# 启动 example 查看效果
如本地启动 `examples/x6-example-features` 示例:
```shell
cd examples/x6-example-features
yarn start
```
## 参与共建
修复 X6 的 BUG 时可以开启 watch 模式,配合上面启动的本地 DEMO实时查看修复效果
如果希望参与到 X6 的开发中,请遵从我们的[贡献指南](/CONTRIBUTING.zh-CN.md)。如果你贡献度足够活跃,你可以申请成为社区协作者。
```shell
cd packages/x6
// esm 模式,动态构建 es 产物
yarn build:watch:esm
// commonjs 模式,动态构建 lib 产物
yarn build:watch:cjs
```
## 如何贡献
如果你在使用的过程中碰到问题,可以先通过 [issues](https://github.com/antvis/x6/issues) 看看有没有类似的 bug 或者建议。
如需提交代码,请遵从我们的[贡献指南](/CONTRIBUTING.zh-CN.md)。我们会收集贡献者的 Github 头像到下面贡献者清单中。
<a href="https://github.com/antvis/x6/graphs/contributors">
<img src="/CONTRIBUTORS.svg" alt="Contributors" width="740" />

View File

@ -1,21 +0,0 @@
# Security Policy
## Supported Versions
Use this section to tell people about which versions of your project are
currently being supported with security updates.
| Version | Supported |
| ------- | ------------------ |
| 5.1.x | :white_check_mark: |
| 5.0.x | :x: |
| 4.0.x | :white_check_mark: |
| < 4.0 | :x: |
## Reporting a Vulnerability
Use this section to tell people how to report a vulnerability.
Tell them where to go, how often they can expect to get an update on a
reported vulnerability, what to expect if the vulnerability is accepted or
declined, etc.

View File

@ -1,3 +1,11 @@
## @antv/x6-package-json [1.0.2](https://github.com/antvis/x6/compare/@antv/x6-package-json@1.0.1...@antv/x6-package-json@1.0.2) (2022-06-07)
## @antv/x6-package-json [1.0.2](https://github.com/antvis/x6/compare/@antv/x6-package-json@1.0.1...@antv/x6-package-json@1.0.2) (2022-06-06)
## @antv/x6-package-json [1.0.2](https://github.com/antvis/x6/compare/@antv/x6-package-json@1.0.1...@antv/x6-package-json@1.0.2) (2022-06-05)
## @antv/x6-package-json [1.0.2](https://github.com/antvis/x6/compare/@antv/x6-package-json@1.0.1...@antv/x6-package-json@1.0.2) (2022-05-31)
## @antv/x6-package-json [1.0.1](https://github.com/antvis/x6/compare/@antv/x6-package-json@1.0.0...@antv/x6-package-json@1.0.1) (2021-11-14)
## @antv/x6-package-json [1.0.1](https://github.com/antvis/x6/compare/@antv/x6-package-json@1.0.0...@antv/x6-package-json@1.0.1) (2021-11-08)

View File

@ -1,7 +1,7 @@
{
"private": true,
"name": "@antv/x6-package-json",
"version": "1.0.1",
"version": "1.0.2",
"bin": {
"package-compare": "./bin/package-compare.js",
"package-inherit": "./bin/package-inherit.js"
@ -73,7 +73,7 @@
"chalk": "^4.1.0",
"detect-newline": "^3.1.0",
"parse-package-name": "^0.1.0",
"workspace-tools": "^0.12.3",
"workspace-tools": "^0.18.4",
"yargs-parser": "^20.2.7"
}
}

View File

@ -0,0 +1,16 @@
# http://editorconfig.org
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
[Makefile]
indent_style = tab

3
examples/x6-app-dag/.eslintrc Executable file
View File

@ -0,0 +1,3 @@
{
"extends": "eslint-config-umi"
}

20
examples/x6-app-dag/.gitignore vendored Normal file
View File

@ -0,0 +1,20 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/npm-debug.log*
/yarn-error.log
/yarn.lock
/package-lock.json
# production
/dist
# misc
.DS_Store
# umi
/src/.umi
/src/.umi-production
/src/.umi-test
/.env.local

View File

@ -0,0 +1,8 @@
**/*.md
**/*.svg
**/*.ejs
**/*.html
package.json
.umi
.umi-production
.umi-test

View File

@ -0,0 +1,14 @@
{
"singleQuote": true,
"trailingComma": "all",
"semi": false,
"printWidth": 80,
"overrides": [
{
"files": ".prettierrc",
"options": {
"parser": "json"
}
}
]
}

View File

@ -0,0 +1,24 @@
import { defineConfig } from 'umi'
export default defineConfig({
publicPath: './',
routes: [
{ path: '/', component: '@/pages/index' },
{ path: '/apps/dag', component: '@/pages/index' },
],
theme: {
'@ant-prefix': 'ant',
'@menu-item-active-bg': '#f0f5ff',
},
extraBabelPlugins: [
[
'import',
{
libraryName: '@antv/x6-react-components',
libraryDirectory: 'es',
transformToDefaultImport: false,
style: true,
},
],
],
})

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,15 @@
# X6 DAG React demo project
## Getting Started
Install dependencies,
```bash
$ yarn
```
Start the dev server,
```bash
$ yarn start
```

View File

View File

@ -0,0 +1,50 @@
{
"private": true,
"name": "@antv/x6-app-dag",
"version": "1.1.7",
"scripts": {
"start": "umi dev",
"build": "umi build",
"postinstall": "umi generate tmp",
"prettier": "prettier --write '**/*.{js,jsx,tsx,ts,less,md,json}'",
"test": "umi-test",
"lint": "umi-lint --eslint src/ -p.no-semi --prettier --fix",
"test:coverage": "umi-test --coverage"
},
"gitHooks": {
"pre-commit": "lint-staged"
},
"lint-staged": {
"*.{js,jsx,less,md,json}": [
"prettier --write"
],
"*.ts?(x)": [
"prettier --parser=typescript --write"
]
},
"dependencies": {
"@ant-design/icons": "^4.2.1",
"@antv/x6": "^1.32.3",
"@antv/x6-react-components": "^1.1.16",
"@antv/x6-react-shape": "^1.6.0",
"@types/dompurify": "^2.0.4",
"ahooks": "^2.7.0",
"antd": "^4.4.2",
"classnames": "^2.2.6",
"dompurify": "^2.1.1",
"react": "^16.13.1",
"react-dnd": "^11.1.3",
"react-dnd-html5-backend": "^11.1.3",
"react-dom": "^16.13.1",
"umi-lint": "^2.0.2"
},
"devDependencies": {
"@ant-design/pro-layout": "^5.0.12",
"@umijs/preset-react": "1.x",
"@umijs/test": "^3.2.19",
"lint-staged": "^10.5.3",
"prettier": "^2.2.1",
"umi": "^3.2.19",
"yorkie": "^2.0.0"
}
}

View File

@ -0,0 +1,29 @@
import React, { useEffect, useMemo, useState } from 'react'
import { BehaviorSubject, Observable } from 'rxjs'
export const useObservableState = <T extends any>(
source$: Observable<T> | { (): Observable<T> },
initialState?: T,
): [T, React.Dispatch<React.SetStateAction<T>>] => {
const source = useMemo<Observable<T>>(() => {
if (typeof source$ === 'function') {
return source$()
}
return source$
}, [source$])
const [state, setState] = useState<T>(() => {
if (source instanceof BehaviorSubject) {
return source.getValue()
}
return initialState
})
useEffect(() => {
const sub = source.subscribe((v) => {
setState(v)
})
return () => {
sub.unsubscribe()
}
}, [source])
return [state, setState]
}

View File

@ -0,0 +1,50 @@
export { unescape } from 'lodash-es'
export class Deferred<T> {
resolve!: (value?: T) => void
reject!: (err?: any) => void
promise: Promise<T>
constructor() {
this.promise = new Promise<T>((resolve, reject) => {
this.resolve = resolve
this.reject = reject
})
}
}
// 解析 JSON 字符串不引起报错
export const safeJson = (jsonStr = '{}', defaultVal = {}) => {
try {
return JSON.parse(jsonStr)
} catch (error) {
console.warn(`${jsonStr} is not valid json`)
return defaultVal
}
}
export class CodeName {
static parse(codeName = '') {
return codeName.replace(/_\d+$/, '').toLocaleLowerCase()
}
static equal(c1: string, c2: string) {
return CodeName.parse(c1) === CodeName.parse(c2)
}
static some(list: string[], c2: string) {
return list.some((c1) => CodeName.equal(c1, c2))
}
static getFromNode(node: any = {}) {
const { codeName = '' } = node
return CodeName.parse(codeName)
}
}
export const isPromise = (obj: any) =>
!!obj &&
(typeof obj === 'object' || typeof obj === 'function') &&
typeof obj.then === 'function'

View File

@ -0,0 +1,6 @@
.no-wrap {
display: inline-block;
overflow: hidden;
white-space: nowrap;
vertical-align: middle;
}

View File

@ -0,0 +1,36 @@
import React, { useCallback } from 'react'
import styles from './cut.less'
interface Props {
left: number
right: number
max: number
children: string
}
export const Cut: React.FC<Props> = (props) => {
const { left, right = 0, max, children } = props
const getText = useCallback(() => {
const len = children.length
const ellipsis = '...'
let leftStr = ''
let rightStr = ''
if (len > max) {
if (left && len) {
leftStr = children.substr(0, left)
} else {
leftStr = children.substr(0, max)
}
if (right) {
rightStr = children.substr(-right, right)
}
return `${leftStr}${ellipsis}${rightStr}`
}
return children
}, [left, right, max, children])
return <span className={styles['no-wrap']}>{getText()}</span>
}

View File

@ -0,0 +1,26 @@
import React from 'react'
import { unescape } from 'lodash-es'
import { Cut } from '@/component/cut'
import { Keyword } from '@/component/keyword'
interface Props {
data: any
}
export const ItemName: React.FC<Props> = (props) => {
const { data } = props
const { keyword, cutParas = {} } = data
const name = unescape(data.name)
const { max, side } = cutParas
if (keyword) {
return <Keyword raw={name} keyword={keyword} />
}
if (max) {
return (
<Cut max={max} left={side} right={side}>
{name}
</Cut>
)
}
return <span>{name}</span>
}

View File

@ -0,0 +1,11 @@
.keywordWrapper {
strong {
color: #dd4b39;
font-weight: normal;
font-style: normal;
}
max-width: 200px;
overflow: hidden;
text-overflow: ellipsis;
}

View File

@ -0,0 +1,37 @@
import React from 'react'
import classnames from 'classnames'
import styles from './keyword.less'
interface Props {
raw: string
keyword: string
className?: string
}
export const Keyword: React.FC<Props> = (props) => {
const { raw, keyword, className } = props
if (keyword) {
const regex = new RegExp(keyword, 'ig')
const arr = raw.split(regex)
return (
<span
className={classnames({
[styles.keywordWrapper]: true,
[className!]: !!className,
})}
>
{arr.map((section, index) =>
index !== arr.length - 1 ? (
<span key={section + index}>
{section}
<strong>{keyword}</strong>
</span>
) : (
section
),
)}
</span>
)
}
return null
}

View File

@ -0,0 +1,80 @@
import React from 'react'
import ReactDOM from 'react-dom'
import { Modal, ConfigProvider } from 'antd'
import { ModalFuncProps, ModalProps } from 'antd/es/modal'
import { isPromise } from '@/common/utils'
import { ANT_PREFIX } from '@/constants/global'
type ShowProps = ModalProps & {
afterClose?: (...args: any[]) => void
children: React.ReactNode
}
export const showModal = (props: ShowProps) => {
const div = document.createElement('div')
document.body.appendChild(div)
let config: ShowProps = {
...props,
visible: true,
onCancel: close,
onOk: (e) => {
if (typeof props.onOk === 'function') {
const ret = props.onOk(e)
if (isPromise(ret as any)) {
;(ret as any).then(() => {
close()
})
}
} else {
close()
}
},
}
function destroy(...args: any[]) {
const unmountResult = ReactDOM.unmountComponentAtNode(div)
if (unmountResult && div.parentNode) {
div.parentNode.removeChild(div)
}
if (typeof props.afterClose === 'function') {
props.afterClose(...args)
}
}
function update(newConfig: ModalFuncProps) {
config = {
...config,
...newConfig,
}
render(config)
}
function close(...args: any[]) {
const nextConfig = {
...config,
visible: false,
afterClose: destroy.bind(undefined, ...args),
}
update(nextConfig)
}
function render(usedConfig: ModalProps & { children: React.ReactNode }) {
const { children, ...others } = usedConfig
setTimeout(() => {
ReactDOM.render(
<ConfigProvider prefixCls={ANT_PREFIX}>
<Modal {...others}>{children}</Modal>
</ConfigProvider>,
div,
)
}, 0)
}
render(config)
return {
close,
update,
}
}

View File

@ -0,0 +1,20 @@
import React from 'react'
import { Observable } from 'rxjs'
import { Input, ConfigProvider } from 'antd'
import { InputProps } from 'antd/es/input'
import { useObservableState } from '@/common/hooks/useObservableState'
import { ANT_PREFIX } from '@/constants/global'
interface RxInputProps extends Omit<InputProps, 'value'> {
value: Observable<string>
}
export const RxInput: React.FC<RxInputProps> = (props) => {
const { value, ...otherProps } = props
const [realValue] = useObservableState(() => value)
return (
<ConfigProvider prefixCls={ANT_PREFIX}>
<Input value={realValue} {...otherProps} />
</ConfigProvider>
)
}

View File

@ -0,0 +1 @@
export const ANT_PREFIX = 'ant'

View File

@ -0,0 +1,14 @@
export const GROUP_HORIZONTAL__PADDING = 24 // 分组横向 padding
export const GROUP_VERTICAL__PADDING = 40 // 分组纵向 padding
export const NODE_WIDTH = 180
export const NODE_HEIGHT = 32
// 触发画布重新渲染事件
export const RERENDER_EVENT = 'RERENDER_EVENT'
/*
* 以下是拖拽相关
*/
export const DRAGGABLE_ALGO_COMPONENT = 'ALGO_COMPONENT'
export const DRAGGABLE_MODEL = 'MODEL'

View File

@ -0,0 +1,42 @@
.menuWrap {
max-height: 316px;
overflow: auto;
position: relative;
top: -10px;
left: -1px;
box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.1);
:global {
.@{ant-prefix}-menu-item {
height: 28px;
line-height: 28px;
padding: 0px 8px;
margin: 0 !important;
color: rgba(0, 0, 0, 0.45);
font-size: 13px;
&:hover {
color: #1890ff;
background-color: @menu-item-active-bg;
}
}
}
}
.name {
padding-right: 2px;
color: rgba(0, 0, 0, 0.45);
}
.wrap {
height: 48px;
margin-left: 24px;
cursor: pointer;
}
.divider {
color: #ccc;
}
.dropdown {
color: rgba(0, 0, 0, 0.65);
font-size: 12px;
}

View File

@ -0,0 +1,14 @@
import React from 'react'
import css from './index.less'
export interface IProps {
experimentName?: string
}
export const ExperimentTitle: React.FC<IProps> = ({ experimentName }) => {
return (
<div className={css.wrap}>
<span className={css.name}> {experimentName} </span>
</div>
)
}

View File

@ -0,0 +1,38 @@
.header {
z-index: 99;
display: flex;
align-items: center;
justify-content: space-between;
height: 48px;
min-height: 48px;
overflow: hidden;
line-height: 48px;
background: #fff;
border-bottom: 1px solid rgba(0, 0, 0, 0.08);
padding: 0;
.headerLeft,
.headerRight {
display: flex;
}
}
.doc {
margin-right: 32px;
font-size: 12px;
a {
color: rgba(0, 0, 0, 0.65);
}
.text {
padding: 0 4px;
color: rgba(0, 0, 0, 0.65);
}
:global {
.anticon {
position: relative;
color: rgba(0, 0, 0, 0.45);
font-size: 14px;
}
}
}

View File

@ -0,0 +1,43 @@
import React from 'react'
import { Layout } from 'antd'
import { useObservableState } from '@/common/hooks/useObservableState'
import { useExperimentGraph } from '@/pages/rx-models/experiment-graph'
import { GithubOutlined } from '@ant-design/icons'
import { SimpleLogo } from './logo'
import { ExperimentTitle } from './experiment-title'
import css from './index.less'
const { Header } = Layout
interface IProps {
experimentId: string
}
export const GuideHeader: React.FC<IProps> = (props) => {
const expGraph = useExperimentGraph(props.experimentId)
const [activeExperiment] = useObservableState(expGraph.experiment$)
const openGithub = () => {
window.open(
'https://github.com/antvis/X6/tree/master/examples/x6-app-dag',
'_blank',
)
}
return (
<>
<Header className={css.header}>
<div className={css.headerLeft}>
<SimpleLogo />
<ExperimentTitle experimentName={activeExperiment.name} />
</div>
<div className={css.headerRight}>
<div className={css.doc}>
<GithubOutlined onClick={openGithub} />
</div>
</div>
</Header>
</>
)
}

View File

@ -0,0 +1,15 @@
.root {
height: 48px;
width: 64px;
line-height: 48px;
position: relative;
border-right: 1px solid rgba(0, 0, 0, 0.08);
color: #fba831;
}
.logo {
top: 8px;
left: 18px;
position: absolute;
font-size: 28px;
}

View File

@ -0,0 +1,15 @@
import React from 'react'
import { ApartmentOutlined } from '@ant-design/icons'
import css from './index.less'
interface Props {
border?: boolean
}
export const SimpleLogo: React.FC<Props> = ({ border }) => {
return (
<div className={`${css.root} `}>
<ApartmentOutlined className={css.logo} />
</div>
)
}

View File

@ -0,0 +1,268 @@
export const algoData = [
{
id: 'recentlyUsed',
name: '最近使用',
isDir: true,
children: [
{
id: 10,
defSource: 2,
docUrl: '',
ioType: 0,
up: 148,
down: 11,
iconType: 1,
isDisabled: false,
author: 'demo author',
codeName: 'algo_1',
catId: 1,
lastModifyTime: '2020-08-25 15:43:39',
createdTime: '2015-04-16 13:38:11',
engineType: 0,
isComposite: false,
sequence: 0,
owner: 'system',
description: '组件描述信息',
name: '算法组件1',
parentId: 'recentlyUsed',
isBranch: false,
social: {
defSource: 2,
isEnabled: true,
docUrl: '#',
iconType: 1,
isDisabled: false,
author: 'demo author',
codeName: 'algo_1',
catId: 1,
lastModifyTime: '2020-08-25 15:43:39',
createdTime: '2015-04-16 13:38:11',
owner: 'system',
description: '组件描述信息',
name: '算法组件1',
id: 10,
},
},
{
id: 11,
defSource: 2,
docUrl: '',
ioType: 0,
up: 148,
down: 11,
iconType: 1,
isDisabled: false,
author: 'demo author',
codeName: 'algo_2',
catId: 1,
lastModifyTime: '2020-08-25 15:43:39',
createdTime: '2015-04-16 13:38:11',
engineType: 0,
isComposite: false,
sequence: 0,
owner: 'system',
description: '组件描述信息',
name: '算法组件2',
parentId: 'recentlyUsed',
isBranch: false,
social: {
defSource: 2,
isEnabled: true,
docUrl: '#',
iconType: 1,
isDisabled: false,
author: 'demo author',
codeName: 'algo_2',
catId: 1,
lastModifyTime: '2020-08-25 15:43:39',
createdTime: '2015-04-16 13:38:11',
owner: 'system',
description: '组件描述信息',
name: '算法组件2',
id: 11,
},
},
{
id: 12,
defSource: 2,
docUrl: '',
ioType: 0,
up: 148,
down: 11,
iconType: 1,
isDisabled: false,
author: 'demo author',
codeName: 'algo_3',
catId: 1,
lastModifyTime: '2020-08-25 15:43:39',
createdTime: '2015-04-16 13:38:11',
engineType: 0,
isComposite: false,
sequence: 0,
owner: 'system',
description: '组件描述信息',
name: '算法组件3',
parentId: 'recentlyUsed',
isBranch: false,
social: {
defSource: 2,
isEnabled: true,
docUrl: '#',
iconType: 1,
isDisabled: false,
author: 'demo author',
codeName: 'algo_3',
catId: 1,
lastModifyTime: '2020-08-25 15:43:39',
createdTime: '2015-04-16 13:38:11',
owner: 'system',
description: '组件描述信息',
name: '算法组件3',
id: 12,
},
},
],
},
{
name: '数据读写',
id: 21,
category: 'source',
isDir: true,
children: [
{
defSource: 2,
docUrl: '',
ioType: 0,
up: 148,
down: 11,
iconType: 1,
isDisabled: false,
author: 'demo author',
codeName: 'odps_source',
catId: 1,
lastModifyTime: '2020-08-25 15:43:39',
createdTime: '2015-04-16 13:38:11',
engineType: 0,
isComposite: false,
sequence: 0,
owner: 'system',
description: '组件描述信息',
name: '读数据表',
id: 100,
parentId: 'recentlyUsed',
isBranch: false,
social: {
defSource: 2,
isEnabled: true,
docUrl: '#',
iconType: 1,
isDisabled: false,
author: 'demo author',
codeName: 'odps_source',
catId: 1,
lastModifyTime: '2020-08-25 15:43:39',
createdTime: '2015-04-16 13:38:11',
owner: 'system',
description: '组件描述信息',
name: '读数据表',
id: 100,
},
},
],
isBranch: true,
isExpanded: false,
codeName: 'source',
parentId: 'platformAlgo',
},
{
name: '统计分析',
id: 22,
category: 'analytics',
isDir: true,
children: [],
isBranch: true,
isExpanded: false,
codeName: 'analytics',
parentId: 'platformAlgo',
},
{
name: '算法',
id: 23,
category: 'ai_algo',
isDir: true,
children: [],
isBranch: true,
isExpanded: false,
codeName: 'algorithm',
parentId: 'platformAlgo',
},
{
name: '预测',
id: 24,
category: 'predict',
isDir: true,
children: [],
isBranch: true,
isExpanded: false,
codeName: 'predict',
parentId: 'platformAlgo',
},
{
name: '评估',
id: 25,
category: 'evaluation',
isDir: true,
children: [],
isBranch: true,
isExpanded: false,
codeName: 'evaluation',
parentId: 'platformAlgo',
},
]
export const searchByKeyword = async (keyword: string) => {
return Array(10)
.fill(null)
.map((i, idx) => {
return {
defSource: 2,
docUrl: '',
ioType: 0,
up: 148,
down: 11,
iconType: 1,
isDir: false,
isDisabled: false,
author: 'demo author',
codeName: `${keyword}${idx}`,
catId: 1,
lastModifyTime: '2020-08-25 15:43:39',
createdTime: '2015-04-16 13:38:11',
engineType: 0,
isComposite: false,
sequence: 0,
owner: 'system',
description: '组件描述信息',
name: `${keyword}__${idx}`,
id: idx,
parentId: 'recentlyUsed',
isBranch: false,
social: {
defSource: 2,
isEnabled: true,
docUrl: '#',
iconType: 1,
isDisabled: false,
author: 'demo author',
name: `${keyword}-${idx}`,
codeName: `${keyword}${idx}`,
catId: 1,
lastModifyTime: '2020-08-25 15:43:39',
createdTime: '2015-04-16 13:38:11',
owner: 'system',
description: '组件描述信息',
id: idx,
},
}
})
}

View File

@ -0,0 +1,720 @@
import random from 'lodash/random'
interface NodeParams {
name: string
x: number
y: number
}
export const copyNode = ({ name, x, y }: NodeParams) => {
const id = `${Date.now()}`
return {
id,
name,
inPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输入1',
id: id + 100000,
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输入2',
id: id + 200000,
},
],
outPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输出表1',
id: id + 300000,
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输出表2',
id: id + 400000,
},
],
positionX: x + 200 + random(20, false),
positionY: y + random(10, false),
codeName: 'source_11111',
catId: 1,
nodeDefId: 111111,
category: 'source',
status: 3,
groupId: 0,
}
}
export const addNode = ({ name, x, y }: NodeParams) => {
const id = `${Date.now()}`
return {
id,
name,
inPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输入1',
id: id + '_in_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输入2',
id: id + '_in_2',
},
],
outPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输出表1',
id: id + '_out_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输出表2',
id: id + '_out_2',
},
],
positionX: x,
positionY: y,
codeName: 'source_11111',
catId: 1,
nodeDefId: 111111,
category: 'source',
status: 3,
groupId: 0,
}
}
export const queryGraph = (id: string) => {
return {
lang: 'zh_CN',
success: true,
data: initData,
Lang: 'zh_CN',
}
}
export const addNodeGroup = async (groupName: string) => {
return {
success: true,
data: {
group: {
name: groupName,
id: Date.now(),
},
},
}
}
const initData = {
nodes: [
{
id: '1603716783816',
name: '算法组件1',
inPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输入1',
id: '1603716783816_in_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输入2',
id: '1603716783816_in_2',
},
],
outPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输出表1',
id: '1603716783816_out_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输出表2',
id: '1603716783816_out_2',
},
],
positionX: -200,
positionY: -300,
codeName: 'source_11111',
catId: 1,
nodeDefId: 111111,
category: 'source',
status: 3,
groupId: 0,
},
{
id: '1603716786205',
name: '算法组件2',
inPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输入1',
id: '1603716786205_in_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输入2',
id: '1603716786205_in_2',
},
],
outPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输出表1',
id: '1603716786205_out_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输出表2',
id: '1603716786205_out_2',
},
],
positionX: -369,
positionY: -161,
codeName: 'source_11111',
catId: 1,
nodeDefId: 111111,
category: 'source',
status: 3,
groupId: 0,
},
{
id: '1603716788394',
name: '算法组件2',
inPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输入1',
id: '1603716788394_in_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输入2',
id: '1603716788394_in_2',
},
],
outPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输出表1',
id: '1603716788394_out_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输出表2',
id: '1603716788394_out_2',
},
],
positionX: -154,
positionY: -161,
codeName: 'source_11111',
catId: 1,
nodeDefId: 111111,
category: 'source',
status: 3,
groupId: 0,
},
{
id: '1603716792826',
name: '算法组件3',
inPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输入1',
id: '1603716792826_in_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输入2',
id: '1603716792826_in_2',
},
],
outPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输出表1',
id: '1603716792826_out_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输出表2',
id: '1603716792826_out_2',
},
],
positionX: -520,
positionY: -30,
codeName: 'source_11111',
catId: 1,
nodeDefId: 111111,
category: 'source',
status: 3,
groupId: 0,
},
{
id: '1603716795011',
name: '算法组件2',
inPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输入1',
id: '1603716795011_in_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输入2',
id: '1603716795011_in_2',
},
],
outPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输出表1',
id: '1603716795011_out_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输出表2',
id: '1603716795011_out_2',
},
],
positionX: 74,
positionY: -160,
codeName: 'source_11111',
catId: 1,
nodeDefId: 111111,
category: 'source',
status: 3,
groupId: 0,
},
{
id: '1603716814719',
name: '算法组件3',
inPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输入1',
id: '1603716814719_in_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输入2',
id: '1603716814719_in_2',
},
],
outPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输出表1',
id: '1603716814719_out_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输出表2',
id: '1603716814719_out_2',
},
],
positionX: -310,
positionY: -30,
codeName: 'source_11111',
catId: 1,
nodeDefId: 111111,
category: 'source',
status: 3,
groupId: 0,
},
{
id: '1603716822805',
name: '算法组件3',
inPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输入1',
id: '1603716822805_in_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输入2',
id: '1603716822805_in_2',
},
],
outPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输出表1',
id: '1603716822805_out_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输出表2',
id: '1603716822805_out_2',
},
],
positionX: -50,
positionY: -30,
codeName: 'source_11111',
catId: 1,
nodeDefId: 111111,
category: 'source',
status: 3,
groupId: 0,
},
{
id: '1603716828657',
name: '算法组件3',
inPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输入1',
id: '1603716828657_in_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输入2',
id: '1603716828657_in_2',
},
],
outPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输出表1',
id: '1603716828657_out_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输出表2',
id: '1603716828657_out_2',
},
],
positionX: 160,
positionY: -30,
codeName: 'source_11111',
catId: 1,
nodeDefId: 111111,
category: 'source',
status: 3,
groupId: 0,
},
{
id: '1603716834901',
name: '算法组件2',
inPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输入1',
id: '1603716834901_in_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输入2',
id: '1603716834901_in_2',
},
],
outPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输出表1',
id: '1603716834901_out_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输出表2',
id: '1603716834901_out_2',
},
],
positionX: -390,
positionY: 90,
codeName: 'source_11111',
catId: 1,
nodeDefId: 111111,
category: 'source',
status: 3,
groupId: 0,
},
{
id: '1603716844054',
name: '算法组件2',
inPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输入1',
id: '1603716844054_in_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输入2',
id: '1603716844054_in_2',
},
],
outPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输出表1',
id: '1603716844054_out_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输出表2',
id: '1603716844054_out_2',
},
],
positionX: -170,
positionY: 90,
codeName: 'source_11111',
catId: 1,
nodeDefId: 111111,
category: 'source',
status: 3,
groupId: 0,
},
{
id: '1603716854368',
name: '算法组件2',
inPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输入1',
id: '1603716854368_in_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输入2',
id: '1603716854368_in_2',
},
],
outPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输出表1',
id: '1603716854368_out_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输出表2',
id: '1603716854368_out_2',
},
],
positionX: 40,
positionY: 90,
codeName: 'source_11111',
catId: 1,
nodeDefId: 111111,
category: 'source',
status: 3,
groupId: 0,
},
{
id: '1603716858435',
name: '算法组件3',
inPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输入1',
id: '1603716858435_in_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输入2',
id: '1603716858435_in_2',
},
],
outPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输出表1',
id: '1603716858435_out_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输出表2',
id: '1603716858435_out_2',
},
],
positionX: -310,
positionY: 230,
codeName: 'source_11111',
catId: 1,
nodeDefId: 111111,
category: 'source',
status: 3,
groupId: 0,
},
{
id: '1603716868041',
name: '算法组件2',
inPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输入1',
id: '1603716868041_in_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输入2',
id: '1603716868041_in_2',
},
],
outPorts: [
{
tableName: 'germany_credit_data',
sequence: 1,
description: '输出表1',
id: '1603716868041_out_1',
},
{
tableName: 'germany_credit_data',
sequence: 2,
description: '输出表2',
id: '1603716868041_out_2',
},
],
positionX: -100,
positionY: 230,
codeName: 'source_11111',
catId: 1,
nodeDefId: 111111,
category: 'source',
status: 3,
groupId: 0,
},
],
links: [
{
source: '1603716783816',
target: '1603716786205',
outputPortId: '1603716783816_out_1',
inputPortId: '1603716786205_in_1',
},
{
source: '1603716783816',
target: '1603716788394',
outputPortId: '1603716783816_out_2',
inputPortId: '1603716788394_in_1',
},
{
source: '1603716783816',
target: '1603716795011',
outputPortId: '1603716783816_out_2',
inputPortId: '1603716795011_in_1',
},
{
source: '1603716786205',
target: '1603716792826',
outputPortId: '1603716786205_out_1',
inputPortId: '1603716792826_in_1',
},
{
source: '1603716788394',
target: '1603716814719',
outputPortId: '1603716788394_out_1',
inputPortId: '1603716814719_in_1',
},
{
source: '1603716795011',
target: '1603716822805',
outputPortId: '1603716795011_out_1',
inputPortId: '1603716822805_in_1',
},
{
source: '1603716795011',
target: '1603716828657',
outputPortId: '1603716795011_out_2',
inputPortId: '1603716828657_in_2',
},
{
source: '1603716792826',
target: '1603716834901',
outputPortId: '1603716792826_out_1',
inputPortId: '1603716834901_in_1',
},
{
source: '1603716814719',
target: '1603716844054',
outputPortId: '1603716814719_out_1',
inputPortId: '1603716844054_in_1',
},
{
source: '1603716822805',
target: '1603716854368',
outputPortId: '1603716822805_out_1',
inputPortId: '1603716854368_in_1',
},
{
source: '1603716834901',
target: '1603716858435',
outputPortId: '1603716834901_out_1',
inputPortId: '1603716858435_in_1',
},
{
source: '1603716844054',
target: '1603716858435',
outputPortId: '1603716844054_out_1',
inputPortId: '1603716858435_in_2',
},
{
source: '1603716854368',
target: '1603716868041',
outputPortId: '1603716854368_out_1',
inputPortId: '1603716868041_in_1',
},
],
}

View File

@ -0,0 +1,108 @@
import get from 'lodash/get'
import set from 'lodash/set'
import cloneDeep from 'lodash/cloneDeep'
let state = {
idx: 0,
running: false,
statusRes: {
lang: 'zh_CN',
success: true,
data: {
instStatus: {
'10571193': 'success',
'10571194': 'success',
'10571195': 'success',
'10571196': 'success',
'10571197': 'success',
},
execInfo: {
'10571193': {
jobStatus: 'success',
defName: '读数据表',
name: 'germany_credit_data',
id: 10571193,
},
'10571194': {
jobStatus: 'success',
defName: '离散值特征分析',
name: '离散值特征分析',
id: 10571194,
},
'10571195': {
jobStatus: 'success',
defName: '分箱',
startTime: '2020-10-19 13:28:55',
endTime: '2020-10-19 13:30:20',
name: '分箱',
id: 10571195,
},
'10571196': {
jobStatus: 'success',
defName: '评分卡训练',
startTime: '2020-10-19 13:28:55',
endTime: '2020-10-19 13:32:02',
name: '评分卡训练-1',
id: 10571196,
},
},
status: 'default',
},
Lang: 'zh_CN',
} as any,
}
export const runGraph = async (nodes: any[]) => {
const newState = getStatus()
newState.data.instStatus = {}
newState.data.execInfo = {}
nodes.forEach((node) => {
newState.data.instStatus[node.id] = 'default'
newState.data.execInfo[node.id] = {
jobStatus: 'default',
defName: node.name,
startTime: '2020-10-19 13:28:55',
endTime: '2020-10-19 13:32:02',
name: node.name,
id: 10571196,
}
})
state.running = true
state.idx = 0
state.statusRes = newState
return { success: true }
}
export const stopGraphRun = () => {
state.running = false
state.idx = 0
return { success: true }
}
const getStatus = () => cloneDeep(state.statusRes)
export const queryGraphStatus = async () => {
const newState = getStatus()
// console.log('Call Api QueryGraphStatus', state)
if (state.running) {
const { instStatus, execInfo } = newState.data
const idList = Object.keys(instStatus)
if (state.idx === idList.length) {
state.idx = 0
state.running = false
idList.forEach((id) => {
set(instStatus, id, 'success')
set(execInfo, `${id}.jobStatus`, 'success')
set(newState, 'data.status', 'success')
})
return newState
}
const key = get(idList, state.idx)
set(instStatus, key, 'running')
set(execInfo, `${key}.jobStatus`, 'running')
set(newState, 'data.status', 'running')
state.idx += 1
return newState
}
return newState
}

View File

@ -0,0 +1,123 @@
/* eslint-disable no-param-reassign */
import { useCallback, useState } from 'react'
import { algoData, searchByKeyword } from '../mock/algo'
export namespace Res {
export interface Data {
defs: NodeDef[]
cats: Cat[]
}
export interface NodeDef {
up: number
down: number
defSource: number
catName: string
isDeprecated: boolean
isSubscribed: boolean
isEnabled: boolean
iconType: number
docUrl: string
sequence: number
author?: string
ioType: number
lastModifyTime: string
createdTime: string
catId: number
isComposite: boolean
codeName: string
engineType?: number
description?: string
name: string
id: number
type: number
owner: string
algoSourceType?: number
}
export interface Cat {
defSource: number
isEnabled: boolean
iconType: number
codeName: string
description: string
sequence: number
name: string
id: number
category?: string
}
}
function dfs(
path = '',
nodes: any[],
isTarget: (node: any) => boolean,
result: string[] = [],
) {
nodes.forEach((node, idx) => {
if (node.children) {
const currentIdx = path ? `${path}.${idx}.children` : `${idx}.children`
dfs(currentIdx, node.children, isTarget, result)
}
if (isTarget(node)) {
const currentIdx = path ? `${path}.${idx}` : idx
result.push(currentIdx.toString())
}
})
}
export default () => {
const [keyword, setKeyword] = useState<string>('') // 搜索关键字
const [loading, setLoading] = useState<boolean>(false) // 加载状态
const [componentTreeNodes, setComponentTreeNodes] = useState<any[]>([])
const [searchList, setSearchList] = useState<any[]>([]) // 搜索结果列表
// 加载组件
const loadComponentNodes = useCallback(() => {
setLoading(true)
const load = async () => {
try {
if (algoData) {
setComponentTreeNodes(algoData)
}
} finally {
setLoading(false)
}
}
return load()
}, [])
// 搜索组件
const search = useCallback((params: { keyword: string }) => {
setKeyword(params.keyword ? params.keyword : '')
if (!params.keyword) {
return
}
setLoading(true)
const load = async () => {
try {
const nodes = ([] = await searchByKeyword(params.keyword))
setSearchList(nodes)
} finally {
setLoading(false)
}
}
load()
}, [])
return {
// 状态
keyword,
loading,
componentTreeNodes,
searchList,
// 方法
setKeyword,
loadComponentNodes,
search,
}
}

View File

@ -0,0 +1,36 @@
@import (reference) '~antd/es/style/themes/default.less';
.handler {
position: absolute;
top: 61px;
right: 14px;
z-index: 99;
width: 32px;
margin: 0;
padding: 3px 0;
color: rgba(0, 0, 0, 0.45);
font-size: 16px;
list-style-type: none;
background-color: #fff;
border: 1px solid rgba(0, 0, 0, 0.04);
border-radius: 3px;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.01);
.item {
text-align: center;
cursor: pointer;
&:hover {
color: #000;
background-color: #e0e0e0;
}
}
}
.popover {
:global {
.@{ant-prefix}-popover-inner-content {
padding: 3px 8px;
}
}
}

View File

@ -0,0 +1,63 @@
import React from 'react'
import { Popover } from 'antd'
import {
CompressOutlined,
OneToOneOutlined,
ZoomInOutlined,
ZoomOutOutlined,
} from '@ant-design/icons'
import classNames from 'classnames'
import styles from './index.less'
interface Props {
className?: string
onZoomIn: () => void
onZoomOut: () => void
onFitContent: () => void
onRealContent: () => void
}
export const CanvasHandler: React.FC<Props> = (props) => {
const { className, onZoomIn, onZoomOut, onFitContent, onRealContent } = props
return (
<ul className={classNames(styles.handler, className)}>
<Popover
overlayClassName={styles.popover}
content="放大"
placement="left"
>
<li onClick={onZoomIn} className={styles.item}>
<ZoomInOutlined />
</li>
</Popover>
<Popover
overlayClassName={styles.popover}
content="缩小"
placement="left"
>
<li onClick={onZoomOut} className={styles.item}>
<ZoomOutOutlined />
</li>
</Popover>
<Popover
overlayClassName={styles.popover}
content="实际尺寸"
placement="left"
>
<li onClick={onRealContent} className={styles.item}>
<OneToOneOutlined />
</li>
</Popover>
<Popover
overlayClassName={styles.popover}
content="适应画布"
placement="left"
>
<li onClick={onFitContent} className={styles.item}>
<CompressOutlined />
</li>
</Popover>
</ul>
)
}

View File

@ -0,0 +1,18 @@
import { Graph } from '@antv/x6'
Graph.registerConnector(
'pai',
(s, t) => {
const offset = 4
const control = 80
const v1 = { x: s.x, y: s.y + offset + control }
const v2 = { x: t.x, y: t.y - offset - control }
return `M ${s.x} ${s.y}
L ${s.x} ${s.y + offset}
C ${v1.x} ${v1.y} ${v2.x} ${v2.y} ${t.x} ${t.y - offset}
L ${t.x} ${t.y}
`
},
true,
)

View File

@ -0,0 +1,39 @@
.list {
list-style: none;
padding: 0;
margin: 0;
min-width: 220px;
.item {
font-size: 12px;
padding: 0 0 0;
line-height: 16px;
word-break: break-all;
margin: 0;
width: 220px;
display: flex;
}
.label {
flex: 1 0 45px;
text-align: right;
padding-right: 4px;
position: relative;
word-break: break-all;
color: rgba(0, 0, 0, 0.85);
&after {
content: ':';
}
}
.text {
padding-left: 4px;
flex: 3 0 100px;
color: rgba(0, 0, 0, 0.45);
word-break: break-all;
}
}
.content {
:global(.aicontent-popover-inner-content) {
padding: 12px 8px 8px 8px;
}
}

View File

@ -0,0 +1,62 @@
import React from 'react'
import { Popover } from 'antd'
import { LoadingOutlined } from '@ant-design/icons'
import { isEmpty } from 'lodash-es'
import css from './index.less'
interface TooltipProps {
children: React.ReactElement
status: StatusObj
}
interface StatusObj {
name: string
defName: string
jobStatus: string
startTime: string
endTime: string
}
export const NodePopover = ({ children, status }: TooltipProps) => {
const componentNode = (
<div style={{ width: '100%', height: '100%' }}>{children}</div>
)
if (isEmpty(status)) {
return componentNode
}
return (
<Popover
placement="bottomLeft"
content={<PopoverContent status={status} />}
overlayClassName={css.content}
>
{componentNode}
</Popover>
)
}
const nodeAtts: StatusObj = {
name: '节点名称',
defName: '算法名称',
jobStatus: '运行状态',
startTime: '开始时间',
endTime: '结束时间',
}
const PopoverContent = ({ status }: { status: StatusObj }) => (
<ul className={css.list}>
{!status.name && <LoadingOutlined />}
{Object.entries(nodeAtts).map(([key, text]) => {
const value = status[key as keyof StatusObj]
if (value) {
return (
<li key={key} className={css.item}>
<span className={css.label}>{text}</span>
<span className={css.text}>{value}</span>
</li>
)
}
return null
})}
</ul>
)

View File

@ -0,0 +1,40 @@
import React from 'react'
import {
CheckCircleOutlined,
CloseCircleOutlined,
SyncOutlined,
} from '@ant-design/icons'
interface Props {
className?: string
status: 'success' | 'fail' | 'running' | 'ready' | 'upChangeSuccess'
}
export const NodeStatus: React.FC<Props> = (props) => {
const { className, status } = props
switch (status) {
case 'fail':
return (
<div className={className}>
<CloseCircleOutlined style={{ color: '#ff4d4f' }} />
</div>
)
case 'success':
case 'upChangeSuccess': {
const color = status === 'success' ? '#2ecc71' : '#1890ff'
return (
<div className={className}>
<CheckCircleOutlined style={{ color }} />
</div>
)
}
case 'running':
return (
<div className={className}>
<SyncOutlined spin={true} style={{ color: '#1890ff' }} />
</div>
)
default:
return null
}
}

View File

@ -0,0 +1,8 @@
.x6-edge {
&-selected,
&:hover {
path[stroke-width='1'] {
stroke-width: 3px;
}
}
}

View File

@ -0,0 +1,43 @@
import { Shape, Edge } from '@antv/x6'
import './edge.less'
export class BaseEdge extends Shape.Edge {
// eslint-disable-next-line class-methods-use-this
isGroupEdge() {
return false
}
}
export class GuideEdge extends BaseEdge {}
GuideEdge.config({
shape: 'GuideEdge',
connector: { name: 'pai' },
zIndex: 2,
attrs: {
line: {
stroke: '#808080',
strokeWidth: 1,
targetMarker: {
stroke: 'none',
fill: 'none',
},
},
},
})
export class X6DemoGroupEdge extends GuideEdge {
// eslint-disable-next-line class-methods-use-this
isGroupEdge() {
return true
}
}
X6DemoGroupEdge.config({
shape: 'X6DemoGroupEdge',
})
Edge.registry.register({
GuideEdge: GuideEdge as any,
X6DemoGroupEdge: X6DemoGroupEdge as any,
})

View File

@ -0,0 +1,150 @@
import { Dom, Node } from '@antv/x6'
import { ReactShape } from '@antv/x6-react-shape'
import { NODE_WIDTH, NODE_HEIGHT } from '@/constants/graph'
export class BaseNode extends ReactShape {
// eslint-disable-next-line class-methods-use-this
isGroup() {
return false
}
}
export class X6DemoNode extends BaseNode {
getInPorts() {
return this.getPortsByGroup('in')
}
getOutPorts() {
return this.getPortsByGroup('out')
}
}
Node.registry.register('ais-rect-port', X6DemoNode as any)
X6DemoNode.config({
width: NODE_WIDTH,
height: NODE_HEIGHT,
shape: 'ais-rect-port',
ports: {
groups: {
in: {
position: { name: 'top' },
zIndex: 2,
},
out: {
position: { name: 'bottom' },
zIndex: 2,
},
},
},
attrs: {
body: {
magnet: false,
fill: 'none',
stroke: 'none',
refWidth: '100%',
refHeight: '100%',
zIndex: 1,
},
},
portMarkup: [
{
tagName: 'foreignObject',
selector: 'fo',
attrs: {
width: 6,
height: 6,
x: -3,
y: -3,
zIndex: 10,
// magnet决定是否可交互
magnet: 'true',
},
children: [
{
ns: Dom.ns.xhtml,
tagName: 'body',
selector: 'foBody',
attrs: {
xmlns: Dom.ns.xhtml,
},
style: {
width: '100%',
height: '100%',
},
children: [
{
tagName: 'span',
selector: 'content',
style: {
width: '100%',
height: '100%',
},
},
],
},
],
},
],
})
export class X6DemoGroupNode extends BaseNode {
// eslint-disable-next-line class-methods-use-this
isGroup() {
return true
}
}
X6DemoGroupNode.config({
ports: {
groups: {
in: {
position: { name: 'top' },
zIndex: 2,
},
out: {
position: { name: 'bottom' },
zIndex: 2,
},
},
},
portMarkup: [
{
tagName: 'foreignObject',
selector: 'fo',
attrs: {
width: 6,
height: 6,
x: -3,
y: -3,
zIndex: 10,
// magnet决定是否可交互
magnet: 'true',
},
children: [
{
ns: Dom.ns.xhtml,
tagName: 'body',
selector: 'foBody',
attrs: {
xmlns: Dom.ns.xhtml,
},
style: {
width: '100%',
height: '100%',
},
children: [
{
tagName: 'span',
selector: 'content',
style: {
width: '100%',
height: '100%',
},
},
],
},
],
},
],
})

View File

@ -0,0 +1,14 @@
import { useEffect, MutableRefObject } from 'react'
import DOMPurify from 'dompurify'
export const useSafeSetHTML = (
ref: MutableRefObject<Element | null>,
htmlStr: string = '',
) => {
useEffect(() => {
if (ref?.current instanceof Element && typeof htmlStr === 'string') {
// eslint-disable-next-line no-param-reassign
ref.current.innerHTML = DOMPurify.sanitize(htmlStr)
}
}, [htmlStr])
}

View File

@ -0,0 +1,82 @@
.x6-toolbar-overwrite {
:global {
.x6-toolbar {
height: 36px !important;
overflow: visible;
border-bottom: 1px solid rgba(0, 0, 0, 0.08);
.x6-toolbar-content {
overflow: visible;
.x6-toolbar-group::before {
margin: 0 !important;
}
.x6-toolbar-item {
margin: 6px 0 !important;
padding: 0 12px !important;
.anticon {
font-size: 16px;
}
}
}
}
}
}
:global {
.x6-edge {
stroke-width: 1px;
&.success {
path:nth-child(2) {
stroke: #888 !important;
}
path:nth-child(3) {
fill: #888 !important;
stroke: #888 !important;
}
}
&.error {
stroke-width: 2px;
path:nth-child(2) {
stroke: rgba(245, 34, 45, 0.45) !important;
stroke-width: 2px;
}
}
&.edgeProcessing {
path:nth-child(2) {
stroke: rgba(57, 202, 116, 0.8);
stroke-width: 2px;
stroke-dasharray: 8px, 2px;
&:local {
animation: processing-line 30s infinite linear;
}
}
}
@keyframes processing-line {
to {
stroke-dashoffset: -1000;
}
}
}
.x6-split-box-horizontal > .x6-split-box-resizer,
.x6-split-box-vertical > .x6-split-box-resizer {
background: #e9e9e9;
}
.@{ant-prefix}-spin-container {
width: 100%;
height: 100%;
}
.x6-widget-selection-inner {
border: none !important;
box-shadow: none !important;
}
.x6-widget-selection-box {
border: none !important;
box-shadow: none !important;
}
}

View File

@ -0,0 +1,171 @@
import { maxBy, minBy } from 'lodash-es'
import { NExperimentGraph } from '@/pages/rx-models/typing'
interface BasicPoint {
x: number
y: number
}
/**
* 找出一组坐标的边缘坐标(最小和最大的边缘坐标轴)和中点
* @param points
*/
export function calcPointsInfo(points: BasicPoint[]) {
if (!Array.isArray(points) || !points.length) {
throw new Error('计算坐标边缘必须传入一组坐标')
}
const minX = minBy(points, (point: BasicPoint) => point.x)!.x
const minY = minBy(points, (point: BasicPoint) => point.y)!.y
const maxX = maxBy(points, (point: BasicPoint) => point.x)!.x
const maxY = maxBy(points, (point: BasicPoint) => point.y)!.y
const middleX = (minX + maxX) / 2
const middleY = (minY + maxY) / 2
return {
minX,
minY,
maxX,
maxY,
middleX,
middleY,
}
}
/**
* 将一组坐标转换成相对某个点的相对租表
* @param points
* @param origin
*/
export function transformPointsToOrigin(
points: BasicPoint[],
origin: BasicPoint,
): BasicPoint[] {
return points.map((point) => ({
...point,
x: point.x - origin.x,
y: point.y - origin.y,
}))
}
/**
* 将一组相对某点的坐标还原回原始坐标
* @param points
* @param origin
*/
export function revertPointsToOrigin(
points: BasicPoint[],
origin: BasicPoint,
): BasicPoint[] {
return points.map((point) => ({
...point,
x: point.x + origin.x,
y: point.y + origin.y,
}))
}
export function formatNodeToGraphNodeConf(originNode: {
id: number
nodeInstanceId?: number
positionX: number
positionY: number
}): any {
const { id, nodeInstanceId, positionX, positionY } = originNode
return {
...originNode,
x: positionX || 0,
y: positionY || 0,
id: (nodeInstanceId || id)!.toString(),
width: 180,
height: 32,
data: originNode,
ports: {
groups: {
inputPorts: {
position: {
name: 'top',
args: {
dr: 0,
dx: 0,
dy: 0,
},
},
attrs: {
circle: {
fill: '#ffffff',
stroke: '#31d0c6',
strokeWidth: 1,
r: 4,
style: 'cursor: default;',
},
text: {
fill: '#6a6c8a',
},
},
},
outputPorts: {
position: {
name: 'bottom',
args: {
dr: 0,
dx: 0,
dy: 0,
},
},
attrs: {
circle: {
fill: '#ffffff',
stroke: '#31d0c6',
strokeWidth: 1,
r: 4,
style: 'cursor: crosshair;',
},
text: {
fill: '#6a6c8a',
},
},
},
},
},
}
}
/**
* 将实验图节点信息转换为节点和边的配置
* @param graph
*/
export function formatExperimentGraph(graph: any = {}) {
const { nodes = [], links = [], groups = [] } = graph
const formattedNodes = nodes.map((node: any) =>
formatNodeToGraphNodeConf(node),
)
const formattedEdges = links.map((link: any) => {
const { source, target } = link
return {
...link,
source: source.toString(),
target: target.toString(),
label: '',
}
})
const groupNodeMap = groups.reduce(
(mapResult: any, currentGroup: NExperimentGraph.Group) => {
const { id } = currentGroup
return {
...mapResult,
[id]:
formattedNodes.filter(
(node: any) => node.groupId.toString() === id.toString(),
) || [],
}
},
{},
)
return {
nodes: formattedNodes,
edges: formattedEdges,
groups,
groupNodeMap,
}
}

View File

@ -0,0 +1,17 @@
import { Graph } from '@antv/x6'
// 将画布上的点转换成相对于 offset parent 的点
export function graphPointToOffsetPoint(
graph: Graph,
graphPoint: { x: number; y: number },
containerElem: HTMLElement,
) {
if (graph) {
const point = graph!.localToPage({ x: graphPoint.x, y: graphPoint.y })
const clientRect = containerElem?.getBoundingClientRect()
const y = point.y - (clientRect?.y || 0) // ! offset parent 不能是画布容器,否则会影响内部布局,所以 offset parent 在外部,算上上方 toolbar 的高度
const x = point.x - (clientRect?.x || 0)
return { x, y }
}
return { x: 0, y: 0 }
}

View File

@ -0,0 +1,58 @@
import React from 'react'
import { Form, Input, Radio } from 'antd'
import { useObservableState } from '@/common/hooks/useObservableState'
import { useExperimentGraph } from '@/pages/rx-models/experiment-graph'
export interface Props {
name: string
experimentId: string
}
export const ExperimentForm: React.FC<Props> = ({ experimentId, name }) => {
const [form] = Form.useForm()
const expGraph = useExperimentGraph(experimentId)
const [activeExperiment] = useObservableState(expGraph.experiment$)
const onValuesChange = ({ experimentName }: { experimentName: string }) => {
expGraph.experiment$.next({ ...activeExperiment, name: experimentName })
}
React.useEffect(() => {
form.setFieldsValue({
experimentName: activeExperiment ? activeExperiment.name : '',
})
}, [activeExperiment])
return (
<Form
form={form}
layout="vertical"
initialValues={{
experimentName: activeExperiment ? activeExperiment.name : '',
}}
onValuesChange={onValuesChange}
requiredMark={false}
>
<Form.Item name="experimentName" label="实验名称">
<Input placeholder="input placeholder" />
</Form.Item>
<Form.Item label={name}>
<Input placeholder="input placeholder" />
</Form.Item>
<Form.Item label="Field C">
<Input placeholder="input placeholder" />
</Form.Item>
<Form.Item label="Field D">
<Input placeholder="input placeholder" />
</Form.Item>
<Form.Item label="RadioDemo">
<Radio.Group>
<Radio.Button value="optional">Optional</Radio.Button>
<Radio.Button value={true}>Required</Radio.Button>
<Radio.Button value={false}>Hidden</Radio.Button>
</Radio.Group>
</Form.Item>
</Form>
)
}

View File

@ -0,0 +1,51 @@
import React from 'react'
import { Form, Input } from 'antd'
import { useObservableState } from '@/common/hooks/useObservableState'
import { useExperimentGraph } from '@/pages/rx-models/experiment-graph'
import 'antd/lib/style/index.css'
export interface Props {
name: string
experimentId: string
nodeId: string
}
export const NodeFormDemo: React.FC<Props> = ({
name,
nodeId,
experimentId,
}) => {
const [form] = Form.useForm()
const expGraph = useExperimentGraph(experimentId)
const [node] = useObservableState(() => expGraph.activeNodeInstance$)
const onValuesChange = async ({ name }: { name: string }) => {
if (node.name !== name) {
await expGraph.renameNode(nodeId, name)
}
}
return (
<Form
form={form}
layout="vertical"
initialValues={{ name: node ? node.name : '' }}
onValuesChange={onValuesChange}
requiredMark={false}
>
<Form.Item label="节点名称" name="name">
<Input placeholder="input placeholder" />
</Form.Item>
<Form.Item label={name}>
<Input placeholder="input placeholder" />
</Form.Item>
<Form.Item label="Field C">
<Input placeholder="input placeholder" />
</Form.Item>
<Form.Item label="Field D">
<Input placeholder="input placeholder" />
</Form.Item>
</Form>
)
}

View File

@ -0,0 +1,87 @@
@border-color: #e9e9e9;
.setting {
height: calc(~'100% - 41px');
:global {
.ant-row.ant-form-item {
margin-bottom: 16px;
}
.ant-tabs-nav-list {
width: 100%;
}
.ant-tabs-card .ant-tabs-content {
margin-top: -16px;
}
.ant-tabs-card .ant-tabs-content > .ant-tabs-tabpane {
background: #fff;
padding: 16px;
}
.ant-tabs-card > .ant-tabs-nav::before {
display: none;
}
.ant-tabs-card > .ant-tabs-nav .ant-tabs-tab,
.ant-tabs-tab {
flex: 1 0 50px;
padding: 7px 16px;
display: flex;
justify-content: center;
}
.ant-tabs-tab.ant-tabs-tab-active {
margin: 0 !important;
}
.ant-tabs-card .ant-tabs-tab,
[data-theme='compact'] .ant-tabs-card .ant-tabs-tab {
border-color: transparent;
background: transparent;
}
.ant-tabs-card .ant-tabs-tab-active,
[data-theme='compact'] .ant-tabs-card .ant-tabs-tab-active {
border-color: #fff;
background: #fff;
}
#components-tabs-demo-card-top .code-box-demo {
background: #f5f5f5;
overflow: hidden;
padding: 24px;
}
[data-theme='compact'] .ant-tabs-card .ant-tabs-content {
margin-top: -8px;
}
[data-theme='dark'] .ant-tabs-card .ant-tabs-tab {
border-color: transparent;
background: transparent;
}
[data-theme='dark'] #components-tabs-demo-card-top .code-box-demo {
background: #000;
}
[data-theme='dark'] .ant-tabs-card .ant-tabs-content > .ant-tabs-tabpane {
background: #141414;
}
[data-theme='dark'] .ant-tabs-card .ant-tabs-tab-active {
border-color: #141414;
background: #141414;
}
.ant-tabs-content {
height: calc(~'100vh - 125px');
}
}
.form {
height: calc(100vh - 100px);
flex-grow: 1;
overflow-x: hidden;
overflow-y: auto;
background: #fff;
}
}
.footer {
position: relative;
flex-grow: 0;
height: 41px;
min-height: 41px;
padding: 8px;
background-color: #fff;
border-top: 1px solid rgba(0, 0, 0, 0.08);
box-shadow: 0 -2px 6px 0 rgba(0, 0, 0, 0.08);
}

View File

@ -0,0 +1,56 @@
import React from 'react'
import { Tabs } from 'antd'
import classNames from 'classnames'
import { useObservableState } from '@/common/hooks/useObservableState'
import { useExperimentGraph } from '@/pages/rx-models/experiment-graph'
import { ExperimentForm } from './form/experiment-config'
import { NodeFormDemo } from './form/node-config'
import css from './index.less'
interface Props {
experimentId: string
className?: string
}
export const ComponentConfigPanel: React.FC<Props> = (props) => {
const { experimentId, className } = props
const expGraph = useExperimentGraph(experimentId)
const [activeNodeInstance] = useObservableState(
() => expGraph.activeNodeInstance$,
)
const nodeId = activeNodeInstance && activeNodeInstance.id
return (
<div className={classNames(className, css.confPanel)}>
<div className={css.setting}>
<Tabs
defaultActiveKey="setting"
type="card"
size="middle"
tabPosition="top"
destroyInactiveTabPane={true}
>
<Tabs.TabPane tab="参数设置" key="setting">
<div className={css.form}>
{nodeId && (
<NodeFormDemo
name="节点参数"
nodeId={nodeId}
experimentId={experimentId}
/>
)}
{!nodeId && (
<ExperimentForm name="实验设置" experimentId={experimentId} />
)}
</div>
</Tabs.TabPane>
<Tabs.TabPane tab="全局参数" key="params" disabled={true}>
<div className={css.form} />
</Tabs.TabPane>
</Tabs>
</div>
<div className={css.footer} />
</div>
)
}

View File

@ -0,0 +1,66 @@
@import (reference) '~antd/es/style/themes/default.less';
.list {
height: 100%;
overflow-x: hidden;
overflow-y: auto;
background: #fff;
.tree {
height: 100%;
background-image: linear-gradient(#fff 50%, #f7f9fb 50%);
background-size: 100% 60px;
.treeFolder:global(.@{ant-prefix}-tree-treenode) {
align-items: center;
height: 30px;
padding: 0;
font-size: 12px;
line-height: 30px;
&::before {
height: 30px;
}
:global {
.@{ant-prefix}-tree-iconEle.@{ant-prefix}-tree-icon__customize {
width: auto;
margin-right: 8px;
color: rgba(0, 0, 0, 0.45);
}
.@{ant-prefix}-tree-node-content-wrapper {
display: flex;
align-items: center;
padding-left: 0;
.@{ant-prefix}-tree-title {
flex-grow: 1;
}
}
}
}
.treeNode:global(.@{ant-prefix}-tree-treenode) {
height: 30px;
line-height: 30px;
&::before {
height: 30px;
}
:global {
.@{ant-prefix}-tree-node-content-wrapper {
padding: 0;
}
.@{ant-prefix}-tree-iconEle.@{ant-prefix}-tree-icon__customize {
display: none;
}
.@{ant-prefix}-tree-switcher {
display: none;
}
}
}
}
}

View File

@ -0,0 +1,66 @@
import React, { useCallback } from 'react'
import { useModel } from 'umi'
import { Tree } from 'antd'
import { FolderFilled, FolderOpenFilled } from '@ant-design/icons'
import { NodeTitle } from './node-title'
import styles from './index.less'
const { DirectoryTree, TreeNode } = Tree
const FolderIcon = ({ expanded }: { expanded: boolean }) => {
return expanded ? <FolderOpenFilled /> : <FolderFilled />
}
export const CategoryTree = () => {
const { componentTreeNodes } = useModel('guide-algo-component')
const renderTree = useCallback(
(treeList: any[] = [], searchKey: string = '') => {
return treeList.map((item) => {
const { isDir, id, children } = item
const key = id.toString()
const title = <NodeTitle node={item} searchKey={searchKey} />
if (isDir) {
return (
<TreeNode
icon={FolderIcon}
key={key}
title={title}
className={styles.treeFolder}
>
{renderTree(children, searchKey)}
</TreeNode>
)
}
return (
<TreeNode
isLeaf={true}
key={key}
icon={<span />}
title={title}
className={styles.treeNode}
/>
)
})
},
[],
)
const treeList = componentTreeNodes.filter((node) => node.status !== 4)
return (
<div className={styles.list}>
<DirectoryTree
showIcon={true}
selectable={false}
autoExpandParent={true}
className={styles.tree}
defaultExpandedKeys={['recentlyUsed']}
>
{renderTree(treeList)}
</DirectoryTree>
</div>
)
}

View File

@ -0,0 +1,140 @@
@import (reference) '~antd/es/style/themes/default.less';
.nodeTitleWrapper {
&:hover {
.node {
width: 180px;
margin-left: 20px;
padding-left: 0;
overflow: hidden;
text-overflow: ellipsis;
background-color: #fff;
border-radius: 4px;
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.08);
.nodeIcon {
display: flex;
justify-content: center;
width: 32px;
min-width: 32px;
margin-right: 0;
color: #1890ff;
background-color: rgba(229, 238, 255, 0.85);
cursor: move;
}
.label {
padding-left: 8px;
overflow: hidden;
background-color: #fff;
cursor: move;
}
}
}
.node {
display: flex;
height: 30px;
padding-left: 20px;
font-size: 12px;
line-height: 30px;
.nodeIcon {
display: inline-flex;
align-items: center;
margin-right: 4px;
color: #bfbfbf;
}
.label {
display: inline-block;
width: 200px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
}
.keyword {
color: #f50;
}
.folder {
display: flex;
justify-content: space-between;
padding-right: 8px;
.label {
display: inline-block;
width: 184px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.team {
float: right;
}
}
:global {
.@{ant-prefix}-tree-title {
:local {
.doc {
position: absolute;
top: 0;
right: 5px;
color: transparent; // 防止拖拽时文档两个字被带进去
font-size: 10px;
line-height: 30px;
}
}
}
}
.popover {
width: 360px;
overflow: hidden;
.monitor {
margin: 8px 0;
b {
display: block;
line-height: 24px;
}
}
.doclink {
padding: 8px 0 0;
}
.description {
max-height: 600px;
padding: 8px 4px;
overflow: auto;
word-break: break-all;
background: #fbfbfb;
border-radius: 4px;
h1,
h2,
h3,
h4,
h5,
h6,
a,
img,
p,
pre {
max-width: 100%;
margin: 0;
font-size: 12px !important;
line-height: 1.5em;
word-break: break-all !important;
}
}
}
.tag {
margin: 4px 0;
.label {
padding-right: 4px;
}
}

View File

@ -0,0 +1,141 @@
import React, { useCallback, useState, useRef } from 'react'
import { toLower, unescape } from 'lodash-es'
import { Popover, Tag } from 'antd'
import { DragSource, ConnectDragPreview, ConnectDragSource } from 'react-dnd'
import { DatabaseFilled, ReadOutlined } from '@ant-design/icons'
import marked from 'marked'
import { useSafeSetHTML } from '@/pages/common/hooks/useSafeSetHtml'
import { DRAGGABLE_ALGO_COMPONENT } from '@/constants/graph'
import styles from './node-title.less'
marked.setOptions({
gfm: true,
breaks: true,
})
const Document = (props: { node: any }) => {
const { node } = props
const descriptionNodeRef = useRef<HTMLDivElement>(null)
const { description, id, tag = '' } = node
const htmlStr = marked(
unescape(description || '暂无文档').replace(/\\n/gi, ' \n '),
)
useSafeSetHTML(descriptionNodeRef, htmlStr)
return (
<div className={styles.popover}>
{tag ? (
<div className={styles.tag}>
<span className={styles.label}> : </span>
{tag.split(',').map((str: string) => (
<Tag key={str}>{str}</Tag>
))}
</div>
) : null}
<div className={styles.description}>
<div ref={descriptionNodeRef} />
<div className={styles.doclink}>
<a href={`#/${id}`} target="_blank" rel="noopener noreferrer">
</a>
</div>
</div>
</div>
)
}
interface Props {
node: any
searchKey: string
isDragging: boolean
connectDragSource: ConnectDragSource
connectDragPreview: ConnectDragPreview
}
const InnerNodeTitle = (props: Props) => {
const {
node = {},
searchKey = '',
connectDragPreview,
connectDragSource,
} = props
const { name = '', isDir } = node
const [visible, setVisible] = useState<boolean>(false)
const onMouseIn = useCallback(() => {
setVisible(true)
}, [])
const onMouseOut = useCallback(() => {
setVisible(false)
}, [])
// 文件夹
if (isDir) {
return <div className={styles.folder}>{name}</div>
}
const keywordIdx = searchKey ? toLower(name).indexOf(toLower(searchKey)) : -1
// 搜索高亮
if (keywordIdx > -1) {
const beforeStr = name.substr(0, keywordIdx)
const afterStr = name.substr(keywordIdx + searchKey.length)
return connectDragPreview(
connectDragSource(
<span className={styles.node}>
<DatabaseFilled className={styles.nodeIcon} />
<span className={styles.label}>
{beforeStr}
<span className={styles.keyword}>{searchKey}</span>
{afterStr}
</span>
</span>,
),
)
}
return (
<div
className={styles.nodeTitleWrapper}
onMouseEnter={onMouseIn}
onMouseLeave={onMouseOut}
>
{connectDragPreview(
connectDragSource(
<div className={styles.node}>
<DatabaseFilled className={styles.nodeIcon} />
<span className={styles.label}>{name}</span>
</div>,
),
)}
{visible && (
<Popover
visible={true}
title={name}
placement="right"
content={<Document node={node} />}
key="description"
>
<a className={styles.doc}>
<ReadOutlined />
</a>
</Popover>
)}
</div>
)
}
export const NodeTitle = DragSource(
DRAGGABLE_ALGO_COMPONENT,
{
beginDrag: (props: Props) => ({
component: props.node,
}),
},
(connect, monitor) => ({
connectDragSource: connect.dragSource(),
connectDragPreview: connect.dragPreview(),
isDragging: monitor.isDragging(),
}),
)(InnerNodeTitle)

View File

@ -0,0 +1,4 @@
.componentTree {
display: block;
flex-grow: 1;
}

View File

@ -0,0 +1,20 @@
import React from 'react'
import { useModel } from 'umi'
import { useMount } from 'ahooks'
import { CategoryTree } from './category-tree'
import { SearchResultList } from './search-result-list'
import styles from './index.less'
export const ComponentTree = () => {
const { keyword, loadComponentNodes } = useModel('guide-algo-component')
useMount(() => {
loadComponentNodes()
})
return (
<div className={styles.componentTree}>
{keyword ? <SearchResultList /> : <CategoryTree />}
</div>
)
}

View File

@ -0,0 +1,121 @@
@itemHeight: 30px;
.nodeItem {
position: relative;
display: flex;
align-items: center;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.itemBlock {
position: relative;
.nodeItem {
max-width: 150px;
height: @itemHeight;
padding: 0 5px 0 2.2px;
line-height: @itemHeight;
cursor: move;
&:hover {
padding: 0;
background-color: #fff;
border-radius: 4px;
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.08);
.nodeIcon {
display: inline-flex;
align-items: center;
justify-content: center;
width: @itemHeight;
min-width: @itemHeight;
height: @itemHeight;
color: #1890ff;
background-color: rgba(229, 238, 255, 0.85);
}
}
.nodeIcon {
margin-right: 8px;
color: #bfbfbf;
}
}
.itemLable {
position: absolute;
top: -2px;
left: 158px;
font-size: 10px;
transform: scale(0.83);
&.gre {
color: #2ecc71;
}
}
.catLable {
position: absolute;
top: 5px;
left: 158px;
font-size: 10px;
white-space: nowrap;
transform: scale(0.83);
}
.description {
height: @itemHeight;
padding-left: 22px;
overflow: hidden;
line-height: @itemHeight;
text-overflow: ellipsis;
}
.link {
position: absolute;
top: 5px;
right: 0;
display: none;
}
&:hover {
.link {
display: block;
}
}
}
.componentDescription {
max-width: 360px;
max-height: 600px;
overflow: auto;
word-break: break-all;
h1,
h2,
h3,
h4,
h5,
h6,
a,
img,
p {
max-width: 100%;
margin: 0;
font-size: 12px !important;
line-height: 1.5em;
word-break: break-all !important;
}
}
.statusTips {
max-width: 320px;
margin: 0;
}
.tag {
margin: 8px 0 4px;
.label {
padding-right: 4px;
}
}

View File

@ -0,0 +1,184 @@
import React, { useRef } from 'react'
import classname from 'classnames'
import { Popover, Tag, Tooltip } from 'antd'
import { DatabaseFilled, ProfileTwoTone } from '@ant-design/icons'
import marked from 'marked'
import { ConnectDragPreview, ConnectDragSource, DragSource } from 'react-dnd'
import { ItemName } from '@/component/item-name'
import { unescape } from '@/common/utils'
import { useSafeSetHTML } from '@/pages/common/hooks/useSafeSetHtml'
import { DRAGGABLE_ALGO_COMPONENT } from '@/constants/graph'
import styles from './component-item.less'
marked.setOptions({
gfm: true,
breaks: true,
})
const Markdown2html: React.FC<{ description: string; tag: string }> = (
props,
) => {
const { description, tag } = props
const descriptionElementRef = useRef<HTMLDivElement>(null)
useSafeSetHTML(
descriptionElementRef,
marked(unescape(description).replace(/\\n/gi, ' \n ')),
)
return (
<div className={styles.componentDescription}>
<div ref={descriptionElementRef} key="1" />
{tag ? (
<div className={styles.tag} key="2">
<span className={styles.label}> : </span>
{tag.split(',').map((str, idx) => (
<Tag key={str + idx}>{str}</Tag>
))}
</div>
) : null}
</div>
)
}
const renderSearchInfo = (params: {
id: number | string
name: string
catName: string
description: string
tag: string
}) => {
const { id, name, catName, description = '暂无数据', tag } = params
return (
<>
{catName && (
<span className={`${styles.catLable} gray `} key="catName">
{catName}
</span>
)}
<span className={styles.link} key="link">
<a
target="_blank"
rel="noopener noreferrer"
href={`https://pai.alipay.com/component/detail/${id}`}
>
<Tooltip title="查看文档">
<ProfileTwoTone />
</Tooltip>
</a>
</span>
{description && (
<Popover
title={name}
placement="right"
content={<Markdown2html description={description} tag={tag} />}
key="description"
>
<div
className={classname(styles.description, 'gray', 'text-overflow')}
>
{description}
</div>
</Popover>
)}
</>
)
}
// ! 这里没有理解怎么会走到渲染这个链路上,因此代码先保留,后续可以再删掉或者使用
const renderStatus = (params: {
changeType: string
isDeprecated: boolean
changeMessage: string
}) => {
const { changeType, isDeprecated, changeMessage } = params
const renderItems = []
if (changeType) {
renderItems.push(
<Popover
content={<p className={styles.statusTips}>{changeMessage}</p>}
key="changeType"
>
<span className={classname(styles.itemLable, styles.gre)}>
{changeType.toLowerCase()}
</span>
</Popover>,
)
}
if (isDeprecated) {
renderItems.push(
<span className={classname(styles.itemLable, 'gray')} key="status">
</span>,
)
}
return renderItems
}
interface Node {
keyword: string
algoSourceType: number
name: string
id: number
catName: string
description: string
tag: string
changeType: string
isDeprecated: boolean
changeMessage: string
}
interface NodeTitleProps {
data: Node
connectDragSource: ConnectDragSource
connectDragPreview: ConnectDragPreview
}
const InnerNodeTitle: React.FC<NodeTitleProps> = (props) => {
const { data, connectDragPreview, connectDragSource } = props
const { keyword, algoSourceType, name } = data
return (
<div>
{connectDragPreview(
connectDragSource(
<span
className={classname(styles.nodeItem, {
[styles.orange]: algoSourceType === 2,
})}
>
<DatabaseFilled className={styles.nodeIcon} />
<ItemName data={{ name, keyword }} />
</span>,
),
)}
{keyword ? renderSearchInfo(data) : renderStatus(data)}
</div>
)
}
const NodeTitle = DragSource(
DRAGGABLE_ALGO_COMPONENT,
{
beginDrag: (props: NodeTitleProps) => ({
component: props.data,
}),
},
(connect, monitor) => ({
connectDragSource: connect.dragSource(),
connectDragPreview: connect.dragPreview(),
isDragging: monitor.isDragging(),
}),
)(InnerNodeTitle)
interface Props {
data: any
}
export const ComponentItem: React.FC<Props> = ({ data = {} }) => {
return <div className={styles.itemBlock}>{<NodeTitle data={data} />}</div>
}

View File

@ -0,0 +1,37 @@
.searchList {
min-height: calc(~'100vh - 80px');
padding: 0;
list-style-type: none;
background-image: linear-gradient(#fff 50%, #f7f9fb 50%);
background-size: 100% 60px;
:global {
li {
padding: 0 4px 0 10px;
transition: all 0.2s ease-in-out;
&:hover {
background-color: #e3f4ff;
}
}
.flag {
padding-right: 4px;
color: #1890ff;
vertical-align: middle;
}
}
}
.resultTips {
height: 24px;
margin-top: 16px;
color: #a0a0a0;
line-height: 24px;
text-align: center;
.icon {
font-size: 24px;
vertical-align: top;
}
}

View File

@ -0,0 +1,44 @@
import React, { useCallback } from 'react'
import { useModel } from 'umi'
import { Spin } from 'antd'
import { ProfileTwoTone } from '@ant-design/icons'
import { ComponentItem } from './component-item'
import styles from './index.less'
export const SearchResultList = () => {
const { keyword, searchList, loading } = useModel('guide-algo-component')
const renderList = useCallback((list: any[], keywd: string) => {
return (
<ul className={styles.searchList}>
{list.map((component, idx) => (
<li key={idx.toString()}>
<ComponentItem data={{ ...component, keyword: keywd }} />
</li>
))}
</ul>
)
}, [])
const renderEmptyResult = useCallback(() => {
return (
<>
<p className={styles.resultTips}>
<ProfileTwoTone />
{'没有搜索结果'}
</p>
</>
)
}, [])
return (
<Spin spinning={loading}>
<div className="tree-wrapper">
{searchList.length
? renderList(searchList, keyword)
: renderEmptyResult()}
</div>
</Spin>
)
}

Some files were not shown because too many files have changed in this diff Show More