Compare commits

...

157 Commits

Author SHA1 Message Date
e2bb71d954 fix: set snapToGrid to false by default () 2022-12-19 22:29:40 +08:00
8b145941ec chore: update contributors [skip ci] 2022-12-19 14:28:26 +00:00
2c7a04a6f4 chore: move file 2022-12-19 22:27:23 +08:00
dfa8c492da chore: update CONTRIBUTORS [skip ci] 2022-12-19 12:57:10 +00:00
3b668feb4e fix: arrowhead not get options bug () 2022-12-19 20:49:55 +08:00
07f4739979 chore(release): release 1 package [skip ci]
[@antv/x6@2.1.0](https://www.npmjs.com/package/@antv/x6/v/2.1.0)
[@antv/x6@2.1.0](https://github.com/antvis/X6/releases/tag/%40antv/x6%402.1.0)
2022-12-19 01:46:51 +00:00
824560ddda feat: add snapToGrid options for manhattan router ()
* docs: update github url

* fix: debounce update to improve performance

* feat: add snapToGrid options for manhattan router
2022-12-19 09:36:17 +08:00
9e37ea9f78 fix: debounce update to improve performance ()
* docs: update github url

* fix: debounce update to improve performance
2022-12-18 21:44:03 +08:00
610349d924 chore(release): release 3 packages [skip ci]
[@antv/x6@2.0.9](https://www.npmjs.com/package/@antv/x6/v/2.0.9)
[@antv/x6@2.0.9](https://github.com/antvis/X6/releases/tag/%40antv/x6%402.0.9)

[@antv/x6-example-features@2.0.1](https://github.com/antvis/X6/releases/tag/%40antv/x6-example-features%402.0.1)

[@antv/x6-sites@1.2.0](https://github.com/antvis/X6/releases/tag/%40antv/x6-sites%401.2.0)
2022-12-16 10:44:52 +00:00
2f92e33d0e fix: remove useless repo url 2022-12-16 18:33:03 +08:00
df540d9b79 chore: rename dir 2022-12-16 18:19:58 +08:00
3bc37971f8 chore: update deprecated terser plugin
Co-authored-by: NewByVector <vectorse@126.com>
2022-12-16 18:07:58 +08:00
50284c2d51 chore: update contributors [skip ci] 2022-12-16 08:44:49 +00:00
15284e778a fix: 🐛 char ghosting when edit text () ()
* fix: 🐛 char ghosting when edit text ()

* fix: 🐛 grammar style improvement
2022-12-16 16:44:28 +08:00
1a0e8cf969 docs: fix broken CI status badge 2022-12-16 15:44:05 +08:00
1089109b08 chore: update build:watch script () 2022-12-12 21:26:40 +08:00
faf294a5ec chore: only support react18 in 2.1.x () 2022-12-12 21:21:41 +08:00
25461fd985 docs: update vue demo ()
* chore: refactor x6-site

* docs: update vue demo
2022-12-12 16:38:16 +08:00
35f2966219 chore: refactor x6-site ()
* chore: refactor x6-site

* chore: fix ts lint and style lint error
2022-12-12 16:21:09 +08:00
26df790b8c chore: remove sites files () 2022-12-12 10:25:03 +08:00
bc7efe8db9 chore: update package version () 2022-12-11 20:15:16 +08:00
abeb009d0a fix: cancel debounce update for scroller plugin () 2022-12-11 17:44:13 +08:00
ad08cf87ef chore: update contributors [skip ci] 2022-12-10 01:29:38 +00:00
16c2ef35e0 chore(release): release 1 package [skip ci]
[@antv/x6-vue-shape@2.0.7](https://www.npmjs.com/package/@antv/x6-vue-shape/v/2.0.7)
[@antv/x6-vue-shape@2.0.7](https://github.com/antvis/X6/releases/tag/%40antv/x6-vue-shape%402.0.7)
2022-12-09 07:37:48 +00:00
187e318aee fix: cannot read properties of undefined when unmount vue component ()
* fix: cannot read properties of undefined when unmount vue component

* fix: cannot read properties of undefined when unmount vue component
2022-12-09 15:26:57 +08:00
f07abff980 chore(release): release 1 package [skip ci]
[@antv/x6@2.0.8](https://www.npmjs.com/package/@antv/x6/v/2.0.8)
[@antv/x6@2.0.8](https://github.com/antvis/X6/releases/tag/%40antv/x6%402.0.8)
2022-12-08 01:44:43 +00:00
4a6a634a8a fix: trigger preventDefault by origin event () 2022-12-08 09:35:17 +08:00
627368e0dd chore(release): release 1 package [skip ci]
[@antv/x6-plugin-transform@2.1.4](https://www.npmjs.com/package/@antv/x6-plugin-transform/v/2.1.4)
[@antv/x6-plugin-transform@2.1.4](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-transform%402.1.4)
2022-12-07 09:03:49 +00:00
604c0244cd fix: make resizing options take effect () 2022-12-07 16:53:46 +08:00
80898ada1c chore(release): release 1 package [skip ci]
[@antv/x6@2.0.7](https://www.npmjs.com/package/@antv/x6/v/2.0.7)
[@antv/x6@2.0.7](https://github.com/antvis/X6/releases/tag/%40antv/x6%402.0.7)
2022-12-06 09:38:57 +00:00
057d5209ff fix: hide elems when visible is false () 2022-12-06 17:26:38 +08:00
2070828425 chore: remove ts and style lint error () 2022-12-05 17:20:38 +08:00
502422fe24 Delete .lgtm.yml 2022-12-05 17:06:19 +08:00
8daf0fd62c chore: config codeql 2022-12-05 16:55:39 +08:00
a108b50a66 chore: update contributors [skip ci] 2022-12-03 03:49:59 +00:00
525bac1907 chore: release @antv/x6-plugin-selection@2.1.5 () 2022-12-03 11:49:38 +08:00
34ec3d29ab chore: update CONTRIBUTORS [skip ci] 2022-12-03 03:34:26 +00:00
74fb7b86d7 chore: add eslintcache ()
* chore: add eslintcache

* chore: add eslintcache
2022-12-03 11:27:56 +08:00
1fb2d8308a fix: use geometry in selection box () 2022-12-02 17:49:13 +08:00
b2b8ac578c chore: update CONTRIBUTORS [skip ci] 2022-12-02 08:51:57 +00:00
1b03004ee5 chore: update contributors [skip ci] 2022-12-02 08:44:34 +00:00
53c9eaf626 chore: update wrong comment word ()
Co-authored-by: hehongsheng <hehongsheng@dolinkhub.com>
2022-12-02 16:44:14 +08:00
05d1fe35d6 fix: remove lint error ()
* chore: release 4 packages

x6@2.0.6
x6-plugin-export@2.1.4
x6-plugin-snapline@2.1.6
x6-react-shape@2.0.6

* fix: remove lint error
2022-12-01 11:51:31 +08:00
b05d1596dd chore: update deps 2022-12-01 11:38:15 +08:00
8843212f53 chore: move '--debug' to env variable 'SRM_DEBUG' 2022-12-01 11:38:15 +08:00
f920d5a4ee fix: export toJpeg methods in export plugin () 2022-11-30 10:50:30 +08:00
6a81805075 fix: render react shape in dnd graph () 2022-11-29 21:22:49 +08:00
94f90425f6 fix: support react 17 () 2022-11-29 19:40:46 +08:00
cd85c5bd26 chore(release): release 1 package [skip ci]
[@antv/x6-geometry@2.0.4](https://www.npmjs.com/package/@antv/x6-geometry/v/2.0.4)
[@antv/x6-geometry@2.0.4](https://github.com/antvis/X6/releases/tag/%40antv/x6-geometry%402.0.4)
2022-11-29 09:41:38 +00:00
16b6c89e6b fix: regex for excluding coverage 2022-11-29 17:29:47 +08:00
76be8db8ca docs: update sites url 2022-11-29 17:27:40 +08:00
18c0edf483 chore(release): release 1 package [skip ci]
[@antv/x6-plugin-keyboard@2.1.4](https://www.npmjs.com/package/@antv/x6-plugin-keyboard/v/2.1.4)
[@antv/x6-plugin-keyboard@2.1.4](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-keyboard%402.1.4)
2022-11-29 08:53:51 +00:00
4978110b45 fix: not trigger keyboard event whith delete key in contenteditable elem () 2022-11-29 16:44:32 +08:00
8eb43874a5 Add CodeQL workflow for GitHub code scanning ()
Co-authored-by: LGTM Migrator <lgtm-migrator@users.noreply.github.com>
2022-11-29 15:53:33 +08:00
83d0295596 chore: update readme () 2022-11-29 14:58:10 +08:00
2c40e3d129 chore: hide coverage badge 2022-11-29 10:03:52 +08:00
d903e5a5b6 fix: trigger transform knob after click node () 2022-11-28 20:19:27 +08:00
c350371d3c fix: dom.data support custom object () 2022-11-28 16:10:34 +08:00
9f3ba0f3b4 chore: update contributors [skip ci] 2022-11-28 01:30:11 +00:00
b0555151e9 fix: render vue shape in minimap with same cellid when using teleport ()
* fix: render vue shape in minimap with same cellid when using teleport

* fix: render vue shape in minimap with same cellid when using teleport
2022-11-27 10:42:13 +08:00
1d324df545 chore(release): release 1 package [skip ci]
[@antv/x6-plugin-clipboard@2.1.3](https://www.npmjs.com/package/@antv/x6-plugin-clipboard/v/2.1.3)
[@antv/x6-plugin-clipboard@2.1.3](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-clipboard%402.1.3)
2022-11-25 11:48:13 +00:00
d6df2d5981 fix: broken file 2022-11-25 18:15:46 +08:00
273102322b chore: update package version ()
* chore: update package version

* chore: fix repository url

* chore: enable publish to npm

Co-authored-by: bubkoo <bubkoo.wy@gmail.com>
2022-11-25 18:13:10 +08:00
1dcab69b18 chore(release): release 17 packages [skip ci]
[@antv/x6@2.0.4](https://github.com/antvis/X6/releases/tag/%40antv/x6%402.0.4)

[@antv/x6-common@2.0.1](https://github.com/antvis/X6/releases/tag/%40antv/x6-common%402.0.1)

[@antv/x6-geometry@2.0.3](https://github.com/antvis/X6/releases/tag/%40antv/x6-geometry%402.0.3)

[@antv/x6-plugin-clipboard@2.1.2](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-clipboard%402.1.2)

[@antv/x6-plugin-dnd@2.0.3](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-dnd%402.0.3)

[@antv/x6-plugin-export@2.1.2](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-export%402.1.2)

[@antv/x6-plugin-history@2.1.3](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-history%402.1.3)

[@antv/x6-plugin-keyboard@2.1.3](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-keyboard%402.1.3)

[@antv/x6-plugin-minimap@2.0.3](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-minimap%402.0.3)

[@antv/x6-plugin-scroller@2.0.3](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-scroller%402.0.3)

[@antv/x6-plugin-selection@2.1.4](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-selection%402.1.4)

[@antv/x6-plugin-snapline@2.1.4](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-snapline%402.1.4)

[@antv/x6-plugin-stencil@2.0.3](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-stencil%402.0.3)

[@antv/x6-plugin-transform@2.1.2](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-transform%402.1.2)

[@antv/x6-react-components@2.0.5](https://github.com/antvis/X6/releases/tag/%40antv/x6-react-components%402.0.5)

[@antv/x6-react-shape@2.0.4](https://github.com/antvis/X6/releases/tag/%40antv/x6-react-shape%402.0.4)

[@antv/x6-vue-shape@2.0.4](https://github.com/antvis/X6/releases/tag/%40antv/x6-vue-shape%402.0.4)
2022-11-25 09:50:08 +00:00
cb0cfdeb4d fix: npm version 2022-11-25 17:44:42 +08:00
bdba8cef5c chore(release): release 16 packages [skip ci]
[@antv/x6@2.0.3](https://github.com/antvis/X6/releases/tag/%40antv/x6%402.0.3)

[@antv/x6-geometry@2.0.2](https://github.com/antvis/X6/releases/tag/%40antv/x6-geometry%402.0.2)

[@antv/x6-plugin-clipboard@2.1.1](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-clipboard%402.1.1)

[@antv/x6-plugin-dnd@2.0.2](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-dnd%402.0.2)

[@antv/x6-plugin-export@2.1.1](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-export%402.1.1)

[@antv/x6-plugin-history@2.1.2](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-history%402.1.2)

[@antv/x6-plugin-keyboard@2.1.2](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-keyboard%402.1.2)

[@antv/x6-plugin-minimap@2.0.2](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-minimap%402.0.2)

[@antv/x6-plugin-scroller@2.0.2](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-scroller%402.0.2)

[@antv/x6-plugin-selection@2.1.3](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-selection%402.1.3)

[@antv/x6-plugin-snapline@2.1.3](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-snapline%402.1.3)

[@antv/x6-plugin-stencil@2.0.2](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-stencil%402.0.2)

[@antv/x6-plugin-transform@2.1.1](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-transform%402.1.1)

[@antv/x6-react-components@2.0.4](https://github.com/antvis/X6/releases/tag/%40antv/x6-react-components%402.0.4)

[@antv/x6-react-shape@2.0.3](https://github.com/antvis/X6/releases/tag/%40antv/x6-react-shape%402.0.3)

[@antv/x6-vue-shape@2.0.3](https://github.com/antvis/X6/releases/tag/%40antv/x6-vue-shape%402.0.3)
2022-11-25 09:27:28 +00:00
6c4244c747 chore: ignore build 2022-11-25 17:06:13 +08:00
e6a1a71932 chore: disable publish to npm 2022-11-25 17:01:54 +08:00
7d64596767 chore: disable breaking changes 2022-11-25 16:11:46 +08:00
54725040f2 fix: type errors 2022-11-25 15:12:22 +08:00
a2a2e657e9 chore: disable breaking changes 2022-11-25 15:11:02 +08:00
593416d8d9 docs: update homepage of packages 2022-11-25 14:34:56 +08:00
96fc0d79cb chore: remove "gitHead" field 2022-11-25 14:34:56 +08:00
85aa3c82ca chore(release): release 3 packages [skip ci]
[@antv/x6-plugin-keyboard@2.1.1](https://www.npmjs.com/package/@antv/x6-plugin-keyboard/v/2.1.1)
[@antv/x6-plugin-keyboard@2.1.1](https://github.com/antvis/X6/releases/tag/%40antv/x6-plugin-keyboard%402.1.1)

[@antv/x6-react-components@2.0.3](https://www.npmjs.com/package/@antv/x6-react-components/v/2.0.3)
[@antv/x6-react-components@2.0.3](https://github.com/antvis/X6/releases/tag/%40antv/x6-react-components%402.0.3)

[@antv/x6-react-shape@2.0.2](https://www.npmjs.com/package/@antv/x6-react-shape/v/2.0.2)
[@antv/x6-react-shape@2.0.2](https://github.com/antvis/X6/releases/tag/%40antv/x6-react-shape%402.0.2)
2022-11-25 06:25:01 +00:00
f20127af55 perf: update deps 2022-11-25 14:00:58 +08:00
f275d3df1e chore: combine release commits 2022-11-25 14:00:01 +08:00
3a1f34ecfd chore: do not release with "ci" and "chore" commits 2022-11-25 14:00:01 +08:00
279caf5173 chore(release): @antv/x6-react-components@2.0.3 [skip ci] 2022-11-24 14:19:16 +00:00
2dcf5d2461 chore(release): @antv/x6-plugin-selection@2.1.2 [skip ci] 2022-11-24 14:19:14 +00:00
d83837d85a chore(release): @antv/x6-plugin-history@2.1.1 [skip ci] 2022-11-24 14:19:10 +00:00
41a64aa1d8 chore(release): @antv/x6@2.0.2 [skip ci] 2022-11-24 14:19:07 +00:00
d4df46ab40 fix: update react type version () 2022-11-24 22:09:33 +08:00
f448f72417 docs: update antd to v5 for demos () 2022-11-24 21:04:58 +08:00
557d2df152 fix: get correct center when zoom () 2022-11-24 19:29:01 +08:00
5edd9ba5f2 chore: update CONTRIBUTORS [skip ci] 2022-11-24 08:23:49 +00:00
bfd1103fd4 chore: update contributors [skip ci] 2022-11-24 08:17:04 +00:00
75f42978cb fix: deep clone instead of shallow clone ()
Co-authored-by: Qinghui.Liu <Qinghui.Liu@fanruan.com>
2022-11-24 16:16:25 +08:00
2ecc213094 fix: support antd5 in react components () 2022-11-24 16:16:06 +08:00
16c19e0591 chore: fix git committer name 2022-11-24 15:34:34 +08:00
02d95cfeea docs: update deps for sites demo () 2022-11-24 15:33:09 +08:00
602fcfa0ed chore(release): @antv/x6-vue-shape@2.0.2 [skip ci] 2022-11-24 07:25:28 +00:00
4be1397374 chore(release): @antv/x6-react-components@2.0.2 [skip ci] 2022-11-24 07:25:25 +00:00
e326d8beb9 chore(release): @antv/x6-plugin-snapline@2.1.2 [skip ci] 2022-11-24 07:25:21 +00:00
d6ae5199c0 fix: updae react-resize-detector version () 2022-11-24 15:12:31 +08:00
97e758fee6 chore: config pnpm workspace 2022-11-24 14:38:01 +08:00
fabd9d5ed9 chore: enable npm publish 2022-11-24 14:31:00 +08:00
08a38bfabd chore(release): @antv/x6-plugin-snapline@2.1.1 [skip ci] 2022-11-24 06:10:43 +00:00
a6055a2b89 chore(release): @antv/x6-example-features@2.0.0 [skip ci] 2022-11-24 06:10:20 +00:00
083948a040 chore(release): @antv/x6-plugin-selection@2.1.1 [skip ci] 2022-11-24 06:10:00 +00:00
bc261fb992 fix: modify the semantics of filter () 2022-11-24 13:58:11 +08:00
33a2ba2c04 chore(release): @antv/x6-vue-shape@2.0.1 [skip ci] 2022-11-24 04:22:15 +00:00
40d26f87c2 chore(release): @antv/x6-react-shape@2.0.1 [skip ci] 2022-11-24 04:22:12 +00:00
f901d2c149 chore(release): @antv/x6-react-components@2.0.1 [skip ci] 2022-11-24 04:22:09 +00:00
da99354379 chore(release): @antv/x6-plugin-transform@2.1.0 [skip ci] 2022-11-24 04:22:06 +00:00
28111565fa chore(release): @antv/x6-plugin-stencil@2.0.1 [skip ci] 2022-11-24 04:22:03 +00:00
85308db9a0 chore(release): @antv/x6-plugin-snapline@2.1.0 [skip ci] 2022-11-24 04:22:01 +00:00
b58ced43f6 chore(release): @antv/x6-plugin-selection@2.1.0 [skip ci] 2022-11-24 04:21:58 +00:00
9b6c5420aa chore(release): @antv/x6-plugin-scroller@2.0.1 [skip ci] 2022-11-24 04:21:55 +00:00
6fc0344552 chore(release): @antv/x6-plugin-minimap@2.0.1 [skip ci] 2022-11-24 04:21:53 +00:00
86fed91719 chore(release): @antv/x6-plugin-keyboard@2.1.0 [skip ci] 2022-11-24 04:21:50 +00:00
2ceee7d067 chore(release): @antv/x6-plugin-history@2.1.0 [skip ci] 2022-11-24 04:21:48 +00:00
a4a1b37413 chore(release): @antv/x6-plugin-export@2.1.0 [skip ci] 2022-11-24 04:21:45 +00:00
14acda8f4b chore(release): @antv/x6-plugin-dnd@2.0.1 [skip ci] 2022-11-24 04:21:42 +00:00
8af0f1c676 chore(release): @antv/x6-plugin-clipboard@2.1.0 [skip ci] 2022-11-24 04:21:40 +00:00
58853d9ac2 chore(release): @antv/x6-common@2.0.1 [skip ci] 2022-11-24 04:21:37 +00:00
7551e782c1 chore(release): @antv/x6@2.0.1 [skip ci] 2022-11-24 04:21:34 +00:00
662f138fca chore(release): @antv/x6-geometry@2.0.1 [skip ci] 2022-11-24 04:21:32 +00:00
f6001a4619 docs: add performance demos () 2022-11-24 12:12:05 +08:00
e0e7e2d80f fix: input required and not supplied: GITHUB_TOKEN 2022-11-23 14:13:03 +08:00
8d19fbc868 chore: use wow-actions/use-app-token v2 2022-11-23 13:58:53 +08:00
5cd3809859 fix: add execute permission 2022-11-23 13:53:38 +08:00
847f225632 feat: add exportSVG methods () 2022-11-18 15:50:10 +08:00
826ccdd9a0 fix: export snap methods from snapline () 2022-11-18 13:47:06 +08:00
cee4aa4e53 fix: resize graph when scale scroller () 2022-11-18 10:31:02 +08:00
4c87e47847 docs: update demos for plugins () 2022-11-18 09:51:16 +08:00
f2be4b3570 chore: update CONTRIBUTORS [skip ci] 2022-11-17 02:29:54 +00:00
febf71b6a6 docs: optimize demos for plugins () 2022-11-17 10:23:06 +08:00
9eae1a304f chore: update CONTRIBUTORS [skip ci] 2022-11-15 13:10:00 +00:00
7526379684 chore: update contributors [skip ci] 2022-11-15 13:02:12 +00:00
ee4ed4053f docs: function 'addCells()' is undefined. () () 2022-11-15 21:01:53 +08:00
047692f4f8 chore: update contributors [skip ci] 2022-11-15 13:01:34 +00:00
53a3f63aca docs: add demos for websites ()
* docs: add interacting demo

* docs: add serialization demo

* docs: add tools demo

* docs: add html render demo

* docs: add demos for react render

* docs: add demo for vue node
2022-11-15 21:01:11 +08:00
853b35fbfb docs: update docs ()
* docs: add get-started demo

* docs: add docs for graph

* docs: add docs for node

* docs: add docs for edge

* docs: update demos

* docs: update docs directory
2022-11-14 09:46:44 +08:00
bb9e560fd5 chore: updae deps for demos () 2022-11-12 15:52:08 +08:00
86412e23d2 fix: optimize typo for react-shape () 2022-11-12 11:44:25 +08:00
1f1e5bc8b2 chore: update deps version for demos () 2022-11-11 09:42:46 +08:00
774f547b85 feat: attach plugin api and events to grpah instance ()
* feat: attach api and event to graph for clipboard

* feat: attach export api and event to graph instance

* feat: attach history api and event to graph instance

* feat: attach keyboard api to graph instance

* feat: attach selection api and events to graph instance

* feat: attach snapline api and events to graph instance

* feat: attach transform events to graph instance
2022-11-10 20:24:27 +08:00
2194769e36 fix: sync render when change position () 2022-11-09 16:21:16 +08:00
e68315528a fix: add missing script for building style 2022-11-09 14:52:56 +08:00
6e7fa9d602 chore: config rss 2022-11-09 14:11:05 +08:00
1f42ecda5e chore: forbidden push to master with whitelist 2022-11-09 14:10:18 +08:00
b450a467ce chore: update build cache 2022-11-09 13:58:03 +08:00
189352a09c chore: update devdeps 2022-11-08 17:01:54 +08:00
4f3e589988 refactor: put rss scripts into root package.json 2022-11-08 17:01:53 +08:00
b59ff6916c refactor: remove unused methods 2022-11-08 17:01:53 +08:00
30c6a522f5 chore: update CONTRIBUTORS [skip ci] 2022-11-08 05:03:56 +00:00
4edee83946 chore: update contributors [skip ci] 2022-11-08 04:56:22 +00:00
10347d069b fix: Cannot use "this" here: () 2022-11-08 12:56:04 +08:00
d9d68d182e chore: remove unused util methdos 2022-11-07 17:50:19 +08:00
3ef671c223 refactor: remove unused methods 2022-11-07 12:00:16 +08:00
45185ed50a docs: fix url of embeded CONTRIBUTORS.svg 2022-11-07 11:59:40 +08:00
5295ecc957 chore: update commit message of update contributor 2022-11-07 10:00:02 +08:00
ea92193494 chore: let's start v2
clean changelogs
2022-11-07 09:33:09 +08:00
8806adc673 docs: sync doc from v1.0 () 2022-11-05 21:30:56 +08:00
09e8dfda8b chore(release): @antv/x6-vue-shape@2.0.0 [skip ci] 2022-11-05 13:25:25 +00:00
1283b74cdb chore: update deps
bump  packages/x6-vue-shape to 2.0

BREAKING CHANGE: for bump  packages/x6-vue-shape to 2.0
2022-11-05 21:18:15 +08:00
c075db4822 chore(release): @antv/x6-vue-shape@1.1.0 [skip ci] 2022-11-05 12:47:24 +00:00
2043 changed files with 49795 additions and 107324 deletions
.github/workflows
.gitignore
.husky
.lgtm.yml.prettierignore.releaserc.stylelintrcCONTRIBUTORSCONTRIBUTORS.svgREADME.en-us.mdREADME.md
examples/x6-example-features
karma.conf.jspackage.json
packages
x6-common
x6-geometry
x6-plugin-clipboard
x6-plugin-dnd
x6-plugin-export
x6-plugin-history
x6-plugin-keyboard
x6-plugin-minimap
x6-plugin-scroller
x6-plugin-selection
x6-plugin-snapline
x6-plugin-stencil
x6-plugin-transform
x6-react-components
CHANGELOG.mdpackage.json
src
auto-scroll-box/style
color-picker
context-menu/style
dropdown/style
menu/style
menubar/style
scroll-box/style
scrollbar/style
split-box/style
style
toolbar
x6-react-shape
x6-vue-shape
x6
pnpm-lock.yamlpnpm-workspace.yamlrollup.config.js
scripts
sites
x6-sites-demos-helper
x6-sites-demos
CHANGELOG.mdpackage.json
packages
api
graph
registry
attr
background
connection-point/playground
connector
edge-anchor/playground
edge-tool
filter
grid
node-anchor/playground
node-tool
port-label-layout
port-layout
router
ui
scene/sankey
tutorial
advanced
animation
layout
react
basic
background/playground
clipboard/playground
dnd
edge
grid/playground
group
history/playground
keyboard/playground
minimap/playground
mousewheel/playground
node/style
port
scroller/playground
selection/playground
snapline/playground
getting-started
intermediate
attrs
custom-edge/custom-edge
custom-node/custom-node
edge-labels
events
interacting
marker
serialization
tools
x6-sites
.dumi
global.ts
theme/locales
.dumirc.ts.eslintrc.gitignoreCHANGELOG.mdCNAME
docs
api
temp
tutorial
examples
gatsby-browser.jsgatsby-config.jsgatsby-node.jspackage.json
public
site
src
tutorial
basic
getting-started
intermediate
plugins
typings
x6-svg-to-shape
turbo.json

@ -8,13 +8,12 @@ jobs:
run:
runs-on: ubuntu-latest
steps:
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: wow-actions/auto-close-fixed-issues@v1
with:
GITHUB_TOKEN: ${{ env.bot_token }}
GITHUB_TOKEN: ${{ env.BOT_TOKEN }}
comment: |
This issue was closed by #{{ pr }}.

@ -4,11 +4,10 @@ jobs:
comment:
runs-on: ubuntu-latest
steps:
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: wow-actions/auto-comment@v1
with:
GITHUB_TOKEN: ${{ env.bot_token }}
GITHUB_TOKEN: ${{ env.BOT_TOKEN }}

@ -8,12 +8,12 @@ jobs:
run:
runs-on: ubuntu-latest
steps:
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: wow-actions/auto-assign@v1
with:
GITHUB_TOKEN: ${{ env.bot_token }}
GITHUB_TOKEN: ${{ env.BOT_TOKEN }}
CONFIG_FILE: .github/workflows/config/auto-assign.yml

@ -6,14 +6,14 @@ name: 🚫 Delete Stale Releases
# clean:
# runs-on: ubuntu-latest
# steps:
# - uses: wow-actions/use-app-token@v1
# - uses: wow-actions/use-app-token@v2
# with:
# app_id: ${{ secrets.APP_ID }}
# private_key: ${{ secrets.PRIVATE_KEY }}
# env_name: bot_token
#
# - uses: wow-actions/delete-stale-releases@v1
# with:
# GITHUB_TOKEN: ${{ env.bot_token }}
# GITHUB_TOKEN: ${{ env.BOT_TOKEN }}
# delete_tags: true
# keep_latest_count: 3
# group: '(?!^)@.*$'
@ -36,13 +36,13 @@ jobs:
clean:
runs-on: ubuntu-latest
steps:
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: wow-actions/delete-stale-releases@v1
with:
GITHUB_TOKEN: ${{ env.bot_token }}
GITHUB_TOKEN: ${{ env.BOT_TOKEN }}
delete_tags: true
keep_latest_count: -1
keep_latest_count: -1

@ -56,11 +56,11 @@ jobs:
run: pnpm run test
- name: 🔑 Generate Token
uses: wow-actions/use-app-token@v1
uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- name: 💡 Codecov
uses: codecov/codecov-action@v1
@ -72,20 +72,20 @@ jobs:
- name: 🔀 Dispatch(ci_passed)
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ env.bot_token }}
token: ${{ env.BOT_TOKEN }}
event-type: ci_passed
- name: 🔀 Dispatch(ci_pr_passed)
if: github.event_name == 'pull_request_target'
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ env.bot_token }}
token: ${{ env.BOT_TOKEN }}
event-type: ci_pr_passed
- name: 🔀 Dispatch(ci_master_passed)
if: github.event_name == 'push'
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ env.bot_token }}
token: ${{ env.BOT_TOKEN }}
event-type: ci_master_passed

42
.github/workflows/codeql.yml vendored Normal file

@ -0,0 +1,42 @@
name:  CodeQL
on:
push:
branches: [ "master", "bot", "gh-pages", "v1" ]
pull_request:
branches: [ "master" ]
schedule:
- cron: "41 2 * * 1"
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ javascript ]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
config-file: ./.github/workflows/config/codeql.yml
queries: +security-and-quality
- name: Autobuild
uses: github/codeql-action/autobuild@v2
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
with:
category: "/language:${{ matrix.language }}"

7
.github/workflows/config/codeql.yml vendored Normal file

@ -0,0 +1,7 @@
paths-ignore:
- sites/public
query-filters:
- exclude:
id: js/use-before-declaration
- exclude:
id: js/polynomial-redos

@ -6,11 +6,11 @@ jobs:
cib:
runs-on: ubuntu-latest
steps:
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: robvanderleek/create-issue-branch@main
env:
GITHUB_TOKEN: ${{ env.bot_token }}
GITHUB_TOKEN: ${{ env.BOT_TOKEN }}

@ -64,15 +64,15 @@ jobs:
run: yarn build:sites
- name: 🔑 Generate Token
uses: wow-actions/use-app-token@v1
uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- name:  Deploy sites
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ env.bot_token }}
github_token: ${{ env.BOT_TOKEN }}
publish_dir: ./sites/x6-sites/public
publish_branch: gh-pages

@ -8,12 +8,12 @@ jobs:
cmd:
runs-on: ubuntu-latest
steps:
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: wow-actions/label-commands@v1
with:
GITHUB_TOKEN: ${{ env.bot_token }}
GITHUB_TOKEN: ${{ env.BOT_TOKEN }}
CONFIG_FILE: .github/workflows/config/label-commands.yml

@ -6,14 +6,14 @@ jobs:
lock:
runs-on: ubuntu-latest
steps:
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: dessant/lock-threads@v2
with:
github-token: ${{ env.bot_token }}
github-token: ${{ env.BOT_TOKEN }}
issue-lock-inactive-days: 365
issue-lock-comment: |
This thread has been automatically locked because it has not had recent activity.

@ -8,13 +8,13 @@ jobs:
evaluate:
runs-on: ubuntu-latest
steps:
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: wow-actions/needs-more-info@v1
with:
GITHUB_TOKEN: ${{ env.bot_token }}
GITHUB_TOKEN: ${{ env.BOT_TOKEN }}
CONFIG_FILE: .github/workflows/config/needs-more-info.yml

@ -6,11 +6,11 @@ jobs:
run:
runs-on: ubuntu-latest
steps:
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: wow-actions/potential-duplicates@v1
with:
GITHUB_TOKEN: ${{ env.bot_token }}
GITHUB_TOKEN: ${{ env.BOT_TOKEN }}

@ -6,13 +6,13 @@ jobs:
label:
runs-on: ubuntu-latest
steps:
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: TimonVS/pr-labeler-action@v3
with:
configuration-path: .github/workflows/config/pr-label-branch-name.yml
env:
GITHUB_TOKEN: ${{ env.bot_token }}
GITHUB_TOKEN: ${{ env.BOT_TOKEN }}

@ -4,12 +4,12 @@ jobs:
label:
runs-on: ubuntu-latest
steps:
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: actions/labeler@v2
with:
repo-token: ${{ env.bot_token }}
repo-token: ${{ env.BOT_TOKEN }}
configuration-path: .github/workflows/config/pr-label-file-paths.yml

@ -4,12 +4,12 @@ jobs:
label:
runs-on: ubuntu-latest
steps:
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: pascalgn/size-label-action@v0.4.3
env:
GITHUB_TOKEN: ${{ env.bot_token }}
GITHUB_TOKEN: ${{ env.BOT_TOKEN }}
IGNORED: "!.gitignore\nyarn.lock\npnpm-lock.yaml"

@ -9,12 +9,12 @@ jobs:
triage:
runs-on: ubuntu-latest
steps:
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: wow-actions/pr-triage@v1
with:
GITHUB_TOKEN: ${{ env.bot_token }}
GITHUB_TOKEN: ${{ env.BOT_TOKEN }}
WORKFLOW-ID: ${{ github.event.workflow_run.id }}

@ -11,15 +11,15 @@ jobs:
label:
runs-on: ubuntu-latest
steps:
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: Naturalclar/issue-action@v2.0.1
with:
title-or-body: title
github-token: ${{ env.bot_token }}
github-token: ${{ env.BOT_TOKEN }}
parameters: >
[
{

@ -69,17 +69,17 @@ jobs:
run: yarn build:sites
- name: 🔑 Generate Token
uses: wow-actions/use-app-token@v1
uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- name:  Deploy Sites
uses: afc163/surge-preview@v1
with:
surge_token: ${{ secrets.SURGE_TOKEN }}
github_token: ${{ env.bot_token }}
github_token: ${{ env.BOT_TOKEN }}
build: |
echo Create sites preview
dist: sites/x6-sites/public

@ -10,11 +10,11 @@ jobs:
- uses: actions/checkout@master
with:
fetch-depth: 0
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: cirrus-actions/rebase@master
env:
GITHUB_TOKEN: ${{ env.bot_token }}
GITHUB_TOKEN: ${{ env.BOT_TOKEN }}

@ -51,26 +51,26 @@ jobs:
# run: pnpm run test
- name: 🔑 Generate Token
uses: wow-actions/use-app-token@v1
uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- name: 📦 Semantic Release
run: pnpm srm --debug --comment-footer 'Thanks for being a part of the [AntV](https://github.com/antvis) community! 💪💯'
run: pnpm srm --combine-commits --comment-footer 'Thanks for being a part of the [AntV](https://github.com/antvis) community! 💪💯'
env:
SRM_DEBUG: ${{ secrets.SRM_DEBUG }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
GITHUB_TOKEN: ${{ env.bot_token }}
GIT_AUTHOR_NAME: x6-bot
GIT_AUTHOR_EMAIL: x6-bot@users.noreply.github.com
GIT_COMMITTER_NAME: x6-bot
GIT_COMMITTER_EMAIL: x6-bot@users.noreply.github.com
GITHUB_TOKEN: ${{ env.BOT_TOKEN }}
GIT_AUTHOR_NAME: ${{ env.BOT_NAME }}[bot]
GIT_AUTHOR_EMAIL: ${{ env.BOT_NAME }}[bot]@users.noreply.github.com
GIT_COMMITTER_NAME: ${{ env.BOT_NAME }}[bot]
GIT_COMMITTER_EMAIL: ${{ env.BOT_NAME }}[bot]@users.noreply.github.com
- name: 🔀 Repository Dispatch
if: github.ref == 'refs/heads/master'
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ env.bot_token }}
token: ${{ env.BOT_TOKEN }}
event-type: released

@ -6,11 +6,11 @@ jobs:
run:
runs-on: ubuntu-latest
steps:
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: wow-actions/activity-report@v1
with:
GITHUB_TOKEN: ${{ env.bot_token }}
GITHUB_TOKEN: ${{ env.BOT_TOKEN }}

@ -6,11 +6,11 @@ jobs:
run:
runs-on: ubuntu-latest
steps:
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: wow-actions/activity-report@v1
with:
GITHUB_TOKEN: ${{ env.bot_token }}
GITHUB_TOKEN: ${{ env.BOT_TOKEN }}

@ -6,12 +6,12 @@ jobs:
cmd:
runs-on: ubuntu-latest
steps:
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: wow-actions/slash-commands@v1
with:
GITHUB_TOKEN: ${{ env.bot_token }}
GITHUB_TOKEN: ${{ env.BOT_TOKEN }}
CONFIG_FILE: .github/workflows/config/slash-commands.yml

@ -6,14 +6,14 @@ jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: actions/stale@v3
with:
repo-token: ${{ env.bot_token }}
repo-token: ${{ env.BOT_TOKEN }}
stale-issue-message: |
Hiya!

@ -9,13 +9,13 @@ jobs:
sync:
runs-on: ubuntu-latest
steps:
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: micnncim/action-label-syncer@v1
env:
GITHUB_TOKEN: ${{ env.bot_token }}
GITHUB_TOKEN: ${{ env.BOT_TOKEN }}
with:
manifest: .github/workflows/config/labels.yml

@ -14,13 +14,14 @@ jobs:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: wow-actions/update-authors@v1
with:
GITHUB_TOKEN: ${{ env.bot_token }}
path: CONTRIBUTORS
GITHUB_TOKEN: ${{ env.BOT_TOKEN }}
bots: false
path: CONTRIBUTORS
commit: 'chore: update CONTRIBUTORS [skip ci]'

@ -13,12 +13,12 @@ jobs:
contributors:
runs-on: ubuntu-latest
steps:
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: wow-actions/contributors-list@v1
with:
GITHUB_TOKEN: ${{ env.bot_token }}
GITHUB_TOKEN: ${{ env.BOT_TOKEN }}
excludeUsers: semantic-release-bot ImgBotApp

@ -9,11 +9,11 @@ jobs:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: FantasticFiasco/action-update-license-year@v2
with:
token: ${{ env.bot_token }}
token: ${{ env.BOT_TOKEN }}

@ -8,14 +8,14 @@ jobs:
welcome:
runs-on: ubuntu-latest
steps:
- uses: wow-actions/use-app-token@v1
- uses: wow-actions/use-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
env_name: bot_token
- uses: wow-actions/welcome@v1
with:
GITHUB_TOKEN: ${{ env.bot_token }}
GITHUB_TOKEN: ${{ env.BOT_TOKEN }}
FIRST_ISSUE: |
👋 @{{ author }}

2
.gitignore vendored

@ -15,3 +15,5 @@ dist
tmp
test/coverage
packages/**/src/style/raw.ts
.eslintcache
.stylelintcache

14
.husky/pre-push Executable file

@ -0,0 +1,14 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
branch="$(git rev-parse --abbrev-ref HEAD)"
user="$(git config user.name)"
whitelist=("bubkoo" "NewByVector")
if [[ ! " ${whitelist[@]} " =~ " ${user} " ]]; then
if [ "$branch" = "master" ]; then
echo "Push to master branch is forbidden."
echo "Checkout your owne branch then submit a pr."
exit 1
fi
fi

@ -1,4 +0,0 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
./scripts/pre-push-check

@ -1,12 +0,0 @@
# @see https://help.semmle.com/lgtm-enterprise/user/help/lgtm.yml-configuration-file.html
# @template https://lgtm.com/static/downloads/lgtm.template.yml
queries:
- exclude: js/use-before-declaration
- exclude: js/polynomial-redos
extraction:
javascript:
index:
filters:
- exclude: "sites/x6-sites/static"

@ -12,5 +12,5 @@ es/
lib/
dist/
coverage/
sites/x6-sites/static/demos
sites/public
csstype.ts

@ -11,22 +11,17 @@
[
"@semantic-release/commit-analyzer",
{
"preset": "angular",
"parserOpts": {
"noteKeywords": ["BREAKING CHANGE", "BREAKING CHANGES"]
},
"releaseRules": [
{ "breaking": true, "release": "major" },
{ "revert": true, "release": "patch" },
{ "type": "feat", "release": "minor" },
{ "type": "ci", "release": "patch" },
{ "type": "build", "release": "patch" },
{ "type": "chore", "release": "patch" },
{ "type": "docs", "release": "patch" },
{ "type": "perf", "release": "patch" },
{ "type": "style", "release": "patch" },
{ "type": "test", "release": "patch" },
{ "type": "refactor", "release": "patch" },
{ "type": "ci", "release": false },
{ "type": "chore", "release": false },
{ "scope": "no-release", "release": false }
]
}
@ -36,7 +31,7 @@
[
"@semantic-release/npm",
{
"npmPublish": false
"npmPublish": true
}
],
[

@ -15,6 +15,11 @@
"no-invalid-double-slash-comments": null,
"no-descending-specificity": null,
"declaration-empty-line-before": null,
"no-duplicate-selectors": null
"no-duplicate-selectors": null,
"value-no-vendor-prefix": null,
"selector-pseudo-class-no-unknown": null,
"selector-class-pattern": null,
"keyframes-name-pattern": null,
"number-max-precision": null
}
}

@ -13,10 +13,12 @@ Indomi <indomi126@gmail.com>
James <san>
Jógvan <lse>
Ken <ei>
Kent <oo>
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>
MOMO <329053928@qq.com>
Mingfei <az8641683@163.com>
MrMengJ <2646973632@qq.com>
Naveen <172697+naveensrinivasan@users.noreply.github.com>
@ -26,6 +28,7 @@ Opportunity <opportunity@live.in>
Questions <chip@twostewards.com>
RuiLin <on>
SSC <273702440@qq.com>
Simon <>
Sindori <441933726@qq.com>
Susan <527971893@qq.com>
Thomas <eugne>
@ -57,6 +60,7 @@ myzxlin <myzxlin@163.com>
newbyvector <vectorse@126.com>
niexq <1879633916@qq.com>
niexq <niexq@firstgrid.cn>
njshuisheng <34205271+njshuisheng@users.noreply.github.com>
pengxingjian.pxj <pengxingjian.pxj@alibaba-inc.com>
pfdgithub <pfdgithub@users.noreply.github.com>
qingchi <qinky94@163.com>
@ -73,6 +77,7 @@ 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>
€alix <qq287649920@gmail.com>
九思⚡⚡⚡ <2228429150@qq.com>
何腾飞 <avrin.live.cn@outlook.com>
偏右 <afc163@gmail.com>
@ -80,9 +85,11 @@ zdc1111 <39116292+zdc1111@users.noreply.github.com>
崖 <bubkoo.wy@gmail.com>
崖崖崖 <bubkoo.wy@gmail.com>
文瑀 <wenyu.jqq@antfin.com>
映月 <38279397+orientMoon@users.noreply.github.com>
杨凌 <89915256@qq.com>
柏愚 <boyu.zlj@antfin.com>
粑粑超 <842486229@qq.com>
诸岳 <dengfuping_private@163.com>
金强强 <wenyu.jqq@antfin.com>
问崖 <bubkoo.wy@gmail.com>
问崖 <pengxingjian.pxj@antfin.com>

File diff suppressed because one or more lines are too long

Before

(image error) Size: 9.7 MiB

After

(image error) Size: 12 MiB

@ -17,7 +17,7 @@
<a href="/LICENSE"><img src="https://img.shields.io/github/license/antvis/x6?style=flat-square" alt="MIT License"></a>
<a href="https://www.typescriptlang.org"><img alt="Language" src="https://img.shields.io/badge/language-TypeScript-blue.svg?style=flat-square"></a>
<a href="https://github.com/antvis/x6/pulls"><img alt="PRs Welcome" src="https://img.shields.io/badge/PRs-Welcome-brightgreen.svg?style=flat-square"></a>
<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>
<a href="https://x6.antv.antgroup.com/"><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>
## Features
@ -84,8 +84,8 @@ graph.addEdge({
## Links
- [Documents](https://x6.antv.vision/zh/docs/tutorial/about)
- [Samples](https://x6.antv.vision/zh/examples/gallery)
- [Documents](https://x6.antv.antgroup.com/tutorial/about)
- [Samples](https://x6.antv.antgroup.com/examples)
- [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)

@ -6,8 +6,8 @@
<p align="center"><strong>提供简单易用的节点定制能力和开箱即用的交互组件方便我们快速搭建流程图、DAG 图、ER 图等图应用</strong></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>
<a href="https://github.com/antvis/X6/actions/workflows/ci.yml"><img alt="build" src="https://img.shields.io/github/actions/workflow/status/antvis/x6/ci.yml?branch=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> -->
<a href="https://lgtm.com/projects/g/antvis/x6/context:javascript"><img alt="Language grade: JavaScript" src="https://img.shields.io/lgtm/grade/javascript/g/antvis/x6.svg?logo=lgtm&style=flat-square"></a>
<a href="https://www.npmjs.com/package/@antv/x6"><img alt="NPM Package" src="https://img.shields.io/npm/v/@antv/x6.svg?style=flat-square"></a>
<a href="https://www.npmjs.com/package/@antv/x6"><img alt="NPM Downloads" src="https://img.shields.io/npm/dm/@antv/x6?logo=npm&style=flat-square"></a>
@ -17,7 +17,7 @@
<a href="/LICENSE"><img src="https://img.shields.io/github/license/antvis/x6?style=flat-square" alt="MIT License"></a>
<a href="https://www.typescriptlang.org"><img alt="Language" src="https://img.shields.io/badge/language-TypeScript-blue.svg?style=flat-square"></a>
<a href="https://github.com/antvis/x6/pulls"><img alt="PRs Welcome" src="https://img.shields.io/badge/PRs-Welcome-brightgreen.svg?style=flat-square"></a>
<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>
<a href="https://x6.antv.antgroup.com"><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>
## 特性
@ -29,12 +29,12 @@
## 兼容环境
- 现代浏览器和 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 |
| [<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 |
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| last 2 versions | last 2 versions | last 2 versions |
## 安装
@ -84,12 +84,12 @@ graph.addEdge({
## 链接
- [文档](https://x6.antv.vision/zh/docs/tutorial/about)
- [示例](https://x6.antv.vision/zh/examples/gallery)
- [博客](https://www.yuque.com/antv/x6/gcinvi)
- [文档](http://x6.antv.antgroup.com/tutorial/about)
- [示例](http://x6.antv.antgroup.com/examples)
- [博客](https://www.yuque.com/antv/x6/huhla47wqalq5n7r)
- [更新日志](https://www.yuque.com/antv/x6/bbfu6r)
- [常见问题](https://www.yuque.com/antv/x6/be9pfx)
- [CodeSanbox 模板](https://codesandbox.io/s/qosj0?file=/src/app.tsx)
- [常见问题](https://www.yuque.com/antv/x6/tox1ukbz5cw57qfy)
- [CodeSanbox 模板](https://codesandbox.io/s/mo-ban-wchooy?file=/src/App.tsx)
## 本地开发
@ -111,9 +111,10 @@ pnpm run start
如果希望参与到 X6 的开发中,请遵从我们的[贡献指南](/CONTRIBUTING.zh-CN.md)。如果你贡献度足够活跃,你可以申请成为社区协作者。
<a href="https://github.com/antvis/x6/graphs/contributors">
<img src="/CONTRIBUTORS.svg" alt="Contributors" width="740" />
<img src="https://raw.githubusercontent.com/antvis/X6/master/CONTRIBUTORS.svg" alt="Contributors" />
</a>
## 开源协议
该项目的代码和文档基于 [MIT License](/LICENSE) 开源协议。

@ -0,0 +1,101 @@
## @antv/x6-example-features [2.0.1](https://github.com/antvis/X6/compare/@antv/x6-example-features@2.0.0...@antv/x6-example-features@2.0.1) (2022-12-16)
### Bug Fixes
* make resizing options take effect ([#3014](https://github.com/antvis/X6/issues/3014)) ([604c024](https://github.com/antvis/X6/commit/604c0244cd71ec8e911754dfe524f12c04e4e9ad))
# @antv/x6-example-features [2.0.0](https://github.com/antvis/X6/compare/@antv/x6-example-features@1.1.2...@antv/x6-example-features@2.0.0) (2022-11-24)
### Bug Fixes
* 🐛 add return value for autoScroller in scroller plugin ([5e102a3](https://github.com/antvis/X6/commit/5e102a39c5bd14a478edd4f36c4264997027c2a9))
* 🐛 add timeout for schedule ([#2303](https://github.com/antvis/X6/issues/2303)) ([a6a2d12](https://github.com/antvis/X6/commit/a6a2d12b07add27ef19eebbf7b5ca7cd17dde09e))
* 🐛 break text with chinese characters(double byte character) ([14199bc](https://github.com/antvis/X6/commit/14199bc8529adddb347ef934926503a789b64980)), closes [#596](https://github.com/antvis/X6/issues/596)
* 🐛 change jobqueue to transient ([0e39d94](https://github.com/antvis/X6/commit/0e39d9447bc8c0ba0b11c272bf9b64df9ba95a33))
* 🐛 do not generate new commands on redoing/undoing ([5b3d713](https://github.com/antvis/X6/commit/5b3d7133f3a7b4841f461e67af5963ec84820741)), closes [#627](https://github.com/antvis/X6/issues/627)
* 🐛 do not update pagesize automatically when set graph size ([949a42d](https://github.com/antvis/X6/commit/949a42dacfc5023d25bcabc0a3a1a7d8578f1b96)), closes [#644](https://github.com/antvis/X6/issues/644) [#564](https://github.com/antvis/X6/issues/564)
* 🐛 fix add tools not work ([f5d1d6a](https://github.com/antvis/X6/commit/f5d1d6a326021247ee8967675fc9490ddbb6d0aa))
* 🐛 fix model event trigger twice ([#789](https://github.com/antvis/X6/issues/789)) ([7638143](https://github.com/antvis/X6/commit/7638143b04c0a50a333200423753f6bd19a6ceb3))
* 🐛 fix running error of x6-example-demo ([#1111](https://github.com/antvis/X6/issues/1111)) ([d5c854f](https://github.com/antvis/X6/commit/d5c854f644e4926dba2913a216870bdbaafd425a))
* 🐛 fix the error in selected nodes position when snapline enabled ([#2797](https://github.com/antvis/X6/issues/2797)) ([1e7f132](https://github.com/antvis/X6/commit/1e7f132bed15006cc5535f1294f0b8a545dd6441))
* 🐛 fix type error ([30ca7a9](https://github.com/antvis/X6/commit/30ca7a92817d28e58589413e36d3d2931360b8ae))
* 🐛 fix x6-react-components version in demo ([709cdae](https://github.com/antvis/X6/commit/709cdae33d13acfd77af11e8bb5fb4f493dd5bd5))
* 🐛 interact with input rendered in react component ([82478b1](https://github.com/antvis/X6/commit/82478b1d66e3b8b4346dab9041cb00e54fea9be1))
* 🐛 linear gradient along edge path ([669fc5b](https://github.com/antvis/X6/commit/669fc5bd2d57635ce9d45dc0470674dad74f4add)), closes [#635](https://github.com/antvis/X6/issues/635)
* 🐛 liner gradient not available on horizontal and vertical edges ([333689a](https://github.com/antvis/X6/commit/333689a880a30dbc0879705b7f655cec8d30f1df)), closes [#635](https://github.com/antvis/X6/issues/635)
* 🐛 optimize cell remove method ([391fe8f](https://github.com/antvis/X6/commit/391fe8fd88f10d936c5860f465c7a423632f30f9))
* 🐛 optimize contextmenu tools ([#1391](https://github.com/antvis/X6/issues/1391)) ([cc01fdf](https://github.com/antvis/X6/commit/cc01fdf208f4fbd283a6ce3d7a106716e8e10300))
* 🐛 set the async of minimapGraph to be the same as sourceGraph ([9dded68](https://github.com/antvis/X6/commit/9dded6853d66b86e7bbeb738b2df15b51d1a8627))
* 🐛 should render vertices tool with lowest z-index ([213a01f](https://github.com/antvis/X6/commit/213a01fca28b1e790ce58d228aa460ea798bb98f)), closes [#638](https://github.com/antvis/X6/issues/638)
* 🐛 update x6-react-shape version ([#1425](https://github.com/antvis/X6/issues/1425)) ([4208846](https://github.com/antvis/X6/commit/4208846337326d8983f1662faa8da67efd8568b4))
* fix contextmenu show multiple times ([5d437ce](https://github.com/antvis/X6/commit/5d437cef07427bf9f2cbae9b2e08dd4a6544ff70))
* fix demo import path error ([2ebf581](https://github.com/antvis/X6/commit/2ebf581dc1ec9c5ee4501917a7cbddbbb4b69c0f))
* fix path error in custom router demo ([#620](https://github.com/antvis/X6/issues/620)) ([7cd3a7e](https://github.com/antvis/X6/commit/7cd3a7e57d772481ad33949ee832a36aab59ef3a))
* refactor example ([#2831](https://github.com/antvis/X6/issues/2831)) ([3d8f005](https://github.com/antvis/X6/commit/3d8f005696021f1d9f91a96812ebadce179f2d73))
* remove x6-common and x6-geometry deps ([#2830](https://github.com/antvis/X6/issues/2830)) ([5b5f5aa](https://github.com/antvis/X6/commit/5b5f5aa7ea6fded1b15abc79b9b5a5e2281b3ab9))
* update dependencies and fix type errors ([#1103](https://github.com/antvis/X6/issues/1103)) ([49d4371](https://github.com/antvis/X6/commit/49d43716ada672e609e4e6d9c6fdca3f494b6f68))
* **wip:** 🐛 click event of contextmenu was not triggered ([2c9363e](https://github.com/antvis/X6/commit/2c9363e46904979901d4b467995d289c094d329a))
### chore
* release beta ([b5f3cfa](https://github.com/antvis/X6/commit/b5f3cfa2042f5196a995a38a8f41f140cabdce57))
### Documentation
* refresh changelogs ([44f89a1](https://github.com/antvis/X6/commit/44f89a1e1a85513a9bf548be87be38e3cdc82574))
### Features
* ✨ add `primer` and `useForeignObject` option for react-shape ([ab6a06f](https://github.com/antvis/X6/commit/ab6a06f1fe70b71ae31acc47b0d9cb02c86097e2))
* ✨ add autoResize feature ([5aeae97](https://github.com/antvis/X6/commit/5aeae976cd7638b2b5c05bc12bc56b562366fe5f))
* ✨ add clipboard plugin ([8107f6d](https://github.com/antvis/X6/commit/8107f6df5de52a33e1b8094a44d59ee7fd2a8042))
* ✨ add dnd plugin ([269fae9](https://github.com/antvis/X6/commit/269fae9e5eeb969c6a7884373aa3a32002c064e6))
* ✨ add history plugin ([#2819](https://github.com/antvis/X6/issues/2819)) ([fd8d384](https://github.com/antvis/X6/commit/fd8d384a29d0f2e02bf066efd19ed3f92614c524))
* ✨ add html shape ([8d75504](https://github.com/antvis/X6/commit/8d7550413f9f6f3177eab9d0f7fef14c55949fb8))
* ✨ add keyboard plugin ([#2665](https://github.com/antvis/X6/issues/2665)) ([bf53677](https://github.com/antvis/X6/commit/bf536778ca7ee3229390dfcfcb085ec55edd9fb2))
* ✨ add library for manipulating and animating SVG ([c07a177](https://github.com/antvis/X6/commit/c07a17785fc99372baaa66ea2525acf1d332fa11))
* ✨ add minimap plugin ([6cdecbb](https://github.com/antvis/X6/commit/6cdecbbba9a4db1f67189e23fb89f2a7ba2af99e))
* ✨ add panning and mousewheel module ([#2243](https://github.com/antvis/X6/issues/2243)) ([55d36e4](https://github.com/antvis/X6/commit/55d36e46808a4c79b086d7798bce396d5211a1dc))
* ✨ add scroller api ([12173bf](https://github.com/antvis/X6/commit/12173bf500624f197ed56cf6a797499587178cba))
* ✨ add selection plugin ([#2742](https://github.com/antvis/X6/issues/2742)) ([50a5dc7](https://github.com/antvis/X6/commit/50a5dc7cd8c2e39a1f8bf8359a0eb189dda8cb86))
* ✨ add snapline plugin ([294672b](https://github.com/antvis/X6/commit/294672b3066b15ab834ce2a3172facc49004c950))
* ✨ add some missing api ([1dcb3d9](https://github.com/antvis/X6/commit/1dcb3d92fd83e5dfd1a1af9670d539a99dd9f55a))
* ✨ add stencil plugin ([#2815](https://github.com/antvis/X6/issues/2815)) ([4e1fb7b](https://github.com/antvis/X6/commit/4e1fb7bef8ff5548edf2529eb27be0a66a600996))
* ✨ add transform plugin ([#2818](https://github.com/antvis/X6/issues/2818)) ([660e2d7](https://github.com/antvis/X6/commit/660e2d7689bfa59a0f4a4a5e3c0ace70dec21e9e))
* ✨ add virtual render feature ([#2198](https://github.com/antvis/X6/issues/2198)) ([fcba5e1](https://github.com/antvis/X6/commit/fcba5e14808d44c80b658c090cc2a4ebcdc64f6d))
* ✨ add xmind demo ([adb2c98](https://github.com/antvis/X6/commit/adb2c98e23e93b7084fd20f05801f2595d4ac990))
* ✨ auto resize graph when container resized ([9c7bc9a](https://github.com/antvis/X6/commit/9c7bc9a4bb210451283663cd99a29bd6c79e2ec4)), closes [#531](https://github.com/antvis/X6/issues/531)
* ✨ export common and geometry in x6 package ([#2820](https://github.com/antvis/X6/issues/2820)) ([df28200](https://github.com/antvis/X6/commit/df282000cc5e17521147c77c210e172c444c9938))
* ✨ expose the selection api ([#2756](https://github.com/antvis/X6/issues/2756)) ([f3edbbc](https://github.com/antvis/X6/commit/f3edbbc95d2038a61116fa71bb0c3016f1c92d5e))
* ✨ improve auto-resize feature ([40d5335](https://github.com/antvis/X6/commit/40d53355cedc0bbbeb1e26948b67254dc6a40d85))
* ✨ random path demo ([38ec683](https://github.com/antvis/X6/commit/38ec683673e2da64296521f23a91f951a442adc0))
* ✨ support inherit options for react-shape registry ([#2596](https://github.com/antvis/X6/issues/2596)) ([ad63046](https://github.com/antvis/X6/commit/ad63046e89fa5853b0cf15947af1ed2a7b625188))
* ✨ support panning scroller graph byrightmousedown ([6ffdb50](https://github.com/antvis/X6/commit/6ffdb5004401b30ff5852a08de9286a934780be3))
* add scroller plugin ([#2580](https://github.com/antvis/X6/issues/2580)) ([5e0e2ac](https://github.com/antvis/X6/commit/5e0e2acde7d7e259ea27d001983e950878d0ecc8))
* attach plugin api and events to grpah instance ([#2864](https://github.com/antvis/X6/issues/2864)) ([774f547](https://github.com/antvis/X6/commit/774f547b85522eb2411dca949d36ecfe535503f3))
* force release 2.0-beta ([6987d9c](https://github.com/antvis/X6/commit/6987d9ce64454cd76f697d33f96715dbdf56524a))
* support mouseenter and mouseleave event ([#2559](https://github.com/antvis/X6/issues/2559)) ([ecfd426](https://github.com/antvis/X6/commit/ecfd4263b1266a128bf8651c4dd745ff8ab038b3))
* sync code from master ([#2004](https://github.com/antvis/X6/issues/2004)) ([c681405](https://github.com/antvis/X6/commit/c68140504bd21f654870f3d2fc1ad2f16f1113c8)), closes [#1974](https://github.com/antvis/X6/issues/1974) [#1977](https://github.com/antvis/X6/issues/1977) [#1985](https://github.com/antvis/X6/issues/1985) [#1988](https://github.com/antvis/X6/issues/1988) [#1991](https://github.com/antvis/X6/issues/1991) [#1989](https://github.com/antvis/X6/issues/1989)
* upgrade react to 18 in react-components ([#2836](https://github.com/antvis/X6/issues/2836)) ([5138562](https://github.com/antvis/X6/commit/5138562515ddbd3975adc9d93514f21d6fc2bb3e))
### Performance Improvements
* ⚡️ add getMatrixByElementAttr and getBBoxByElementAttr to reduce reflow ([ba5b22a](https://github.com/antvis/X6/commit/ba5b22a33a0af067d77735c5cc46a60a45734dca))
* ⚡️ add simple config to remove rect and text element ([#1449](https://github.com/antvis/X6/issues/1449)) ([0b5f241](https://github.com/antvis/X6/commit/0b5f2413f0b907316784149027615ae2d09616a4))
* ⚡️ check whether label existed in port ([#2063](https://github.com/antvis/X6/issues/2063)) ([5ae7271](https://github.com/antvis/X6/commit/5ae7271a25e804a9321aa80e31dcf6e43144728b))
* ⚡️ optimize breakText for a high performance version ([#2242](https://github.com/antvis/X6/issues/2242)) ([0aced58](https://github.com/antvis/X6/commit/0aced58056d908ec092bca1889b5ef367a94fe68))
* ⚡️ optimize node render performance ([6554959](https://github.com/antvis/X6/commit/65549599d2f82f8052d16776c8d36ce7ee2fba9b))
* ⚡️ repalce getTransformToElement and getBBox to improve performance ([#2177](https://github.com/antvis/X6/issues/2177)) ([1436586](https://github.com/antvis/X6/commit/1436586f85cc2e2f6ec71548f6d6c232be793154))
### BREAKING CHANGES
* dump to 2.0
* force release 2.0-beta
* 2.0-beta

@ -1,17 +1,18 @@
{
"private": true,
"name": "@antv/x6-example-features",
"version": "2.0.0",
"version": "2.0.1",
"scripts": {
"start": "umi dev",
"build": "umi build",
"lint": "eslint 'src/**/*.{js,ts}?(x)' --fix",
"precommit": "lint-staged"
"lint": "eslint 'src/**/*.{js,ts}?(x)' --fix"
},
"dependencies": {
"@antv/hierarchy": "^0.6.8",
"@antv/x6": "^2.x",
"@antv/x6-plugin-clipboard": "^2.x",
"@antv/x6-plugin-dnd": "^2.x",
"@antv/x6-plugin-export": "^2.x",
"@antv/x6-plugin-history": "^2.x",
"@antv/x6-plugin-keyboard": "^2.x",
"@antv/x6-plugin-minimap": "^2.x",
@ -20,42 +21,34 @@
"@antv/x6-plugin-snapline": "^2.x",
"@antv/x6-plugin-stencil": "^2.x",
"@antv/x6-plugin-transform": "^2.x",
"@antv/x6-plugin-export": "^2.x",
"@antv/x6-react-components": "^2.x",
"@antv/x6-react-shape": "^2.x",
"antd": "^4.4.2",
"classnames": "^2.2.6",
"dagre": "^0.8.5",
"elkjs": "^0.7.1",
"elkjs": "^0.8.2",
"react": "^18.0.0",
"react-dom": "^18.0.0",
"react-helmet": "^6.0.0",
"@antv/hierarchy": "^0.6.8"
"react-helmet": "^6.0.0"
},
"devDependencies": {
"@ant-design/icons": "^4.2.2",
"@types/jest": "^25.2.1",
"@types/jest": "^29.2.4",
"@types/react": "^18.0.0",
"@types/react-dom": "^18.0.0",
"@types/react-helmet": "^6.0.0",
"@types/react-test-renderer": "^16.0.3",
"eslint": "^7.16.0",
"@types/react-test-renderer": "^18.0.0",
"babel-plugin-import": "^1.13.5",
"eslint": "^8.29.0",
"eslint-config-umi": "^1.4.0",
"eslint-plugin-flowtype": "^4.7.0",
"eslint-plugin-flowtype": "^8.0.3",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-react": "^7.11.1",
"lint-staged": "^10.5.3",
"react-test-renderer": "^16.7.0",
"umi": "^2.9.0",
"umi-plugin-react": "^1.8.0",
"umi-types": "^0.3.0",
"babel-plugin-import": "^1.13.5"
},
"lint-staged": {
"src/**/*.ts": [
"eslint --fix"
]
"umi-types": "^0.3.0"
},
"engines": {
"node": ">=8.0.0"

@ -7,17 +7,17 @@
.nav {
position: absolute;
z-index: 101;
top: 0;
bottom: 0;
left: 0;
font-size: 13px;
overflow-x: hidden;
overflow-y: auto;
z-index: 101;
box-sizing: border-box;
width: 220px;
padding: 0 16px;
overflow-x: hidden;
overflow-y: auto;
font-size: 13px;
border-right: 1px solid #e9e9e9;
box-sizing: border-box;
ul {
padding-left: 16px;
@ -29,11 +29,11 @@
}
.content {
flex-grow: 1;
box-sizing: border-box;
margin-left: 220px;
padding: 34px;
overflow-x: hidden;
overflow-y: auto;
flex-grow: 1;
margin-left: 220px;
background: #ffffff;
padding: 34px;
background: #fff;
}

@ -8,13 +8,15 @@
border: 1px solid #c2c8d5;
border-left: 4px solid #1890ff;
border-radius: 4px;
box-shadow: 0 2px 5px 1px rgba(0, 0, 0, 0.06);
box-shadow: 0 2px 5px 1px rgb(0 0 0 / 6%);
img {
flex-shrink: 0;
width: 20px;
height: 20px;
flex-shrink: 0;
margin-left: 8px;
}
.label {
display: inline-block;
flex-shrink: 0;
@ -23,15 +25,19 @@
color: #666;
font-size: 12px;
}
.status {
flex-shrink: 0;
}
&.success {
border-left: 4px solid #52c41a;
}
&.failed {
border-left: 4px solid #ff4d4f;
}
&.running .status img {
animation: spin 1s linear infinite;
}
@ -43,11 +49,13 @@
border-radius: 2px;
box-shadow: 0 0 0 4px #d4e8fe;
}
.node.success {
border-color: #52c41a;
border-radius: 2px;
box-shadow: 0 0 0 4px #ccecc0;
}
.node.failed {
border-color: #ff4d4f;
border-radius: 2px;
@ -80,6 +88,7 @@
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}

@ -4,6 +4,7 @@
visibility: hidden;
cursor: pointer;
}
&:hover image {
visibility: visible;
}

@ -2,24 +2,25 @@
position: relative;
}
.validating:after {
.validating::after {
position: absolute;
top: 4px;
left: 4px;
content: ' ';
display: block;
width: 50px;
height: 50px;
border-radius: 50%;
border: 6px solid #873bf4;
border-color: #873bf4 transparent #873bf4 transparent;
border-color: #873bf4 transparent;
border-radius: 50%;
animation: lds-dual-ring 1.2s linear infinite;
content: ' ';
}
@keyframes lds-dual-ring {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}

@ -2,14 +2,14 @@
.x6-example-wrap {
width: 100%;
height: 100%;
background-color: #ffffff;
background-color: #fff;
.left-side {
position: fixed;
width: 336px;
left: 24px;
top: 0px;
top: 0;
bottom: 0;
left: 24px;
width: 336px;
padding: 0 8px;
overflow-x: visible;
overflow-y: auto;
@ -17,18 +17,18 @@
.right-side {
position: fixed;
top: 0;
right: 24px;
bottom: 0;
width: 336px;
padding: 0 8px;
top: 0px;
bottom: 0;
overflow-x: visible;
overflow-y: auto;
}
.ant-card {
box-shadow: 0 0 10px 1px #e9e9e9;
margin-top: 24px;
box-shadow: 0 0 10px 1px #e9e9e9;
}
.ant-row-flex {
@ -36,14 +36,14 @@
}
.slider-value {
background: #eee;
color: #333333;
padding: 3px 7px;
border-radius: 10px;
display: inline-block;
font-size: 12px;
margin-left: 8px;
padding: 3px 7px;
color: #333;
font-size: 12px;
line-height: 1.25;
background: #eee;
border-radius: 10px;
}
.x6-graph {
@ -52,15 +52,15 @@
.x6-node {
path {
fill: #6a6c8a;
stroke-width: 0px;
transition: fill 0.1s;
fill: #6a6c8a;
stroke-width: 0;
}
text {
fill: #fff;
font-size: 12px;
font-weight: lighter;
font-size: 12px;
fill: #fff;
}
&:hover path {
@ -80,37 +80,37 @@
}
.bbox {
transition-duration: 0.5s;
transition-property: stroke-opacity;
pointer-events: none;
fill: none;
stroke: #16a085;
stroke-width: 2;
stroke-opacity: 0;
fill: none;
transition-property: stroke-opacity;
transition-duration: 0.5s;
pointer-events: none;
}
.axis {
pointer-events: none;
stroke: #95a5a6;
stroke-dasharray: 2, 4;
stroke-width: 1;
pointer-events: none;
}
.padding {
transition-duration: 1s;
transition-property: stroke-opacity;
pointer-events: none;
stroke: #1abc9c;
stroke-opacity: 0;
transition-property: stroke-opacity;
transition-duration: 1s;
pointer-events: none;
}
.grid {
transition-duration: 1s;
transition-property: stroke-opacity;
pointer-events: none;
stroke: #16a085;
stroke-width: 0.5;
stroke-opacity: 0;
transition-property: stroke-opacity;
transition-duration: 1s;
pointer-events: none;
}
.active {

@ -1,9 +1,9 @@
.custom-html {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
color: #000;
font-size: 16px;
border: 1px solid #000;

@ -1,27 +1,27 @@
.x6-graph-wrap {
width: 100%;
height: 100%;
background-color: #ffffff;
overflow: auto;
padding: 32px 0;
overflow: auto;
background-color: #fff;
> h1 {
display: block;
width: 800px;
margin: 0 auto 32px auto;
margin: 0 auto 32px;
}
}
.x6-graph-tools {
width: 800px;
margin: 0 auto 32px auto;
margin: 0 auto 32px;
}
.x6-graph {
width: 100%;
height: 100%;
box-shadow: 0 0 10px 1px #e9e9e9;
margin: 0 auto;
box-shadow: 0 0 10px 1px #e9e9e9;
}
.x6-node-selected {

@ -1,10 +1,10 @@
.react-algo-node {
display: flex;
align-items: center;
width: 100%;
height: 100%;
border: 1px solid #5f95ff;
border-radius: 14px;
display: flex;
align-items: center;
img {
width: 24px;
@ -13,8 +13,8 @@
span {
margin-left: 4px;
font-size: 12px;
color: #000000a6;
font-size: 12px;
}
&.dark {

@ -2,20 +2,20 @@
.my-port {
width: 100%;
height: 100%;
background: #eee;
border: 1px solid #808080;
border-radius: 100%;
background: #eee;
&.connected {
width: 0;
height: 0;
margin-top: 5px;
margin-left: 1px;
border-width: 5px 4px 0;
border-style: solid;
border-color: #808080 transparent transparent;
border-radius: 0;
background-color: transparent;
border-color: #808080 transparent transparent;
border-style: solid;
border-width: 5px 4px 0;
border-radius: 0;
}
}
@ -30,30 +30,30 @@
}
body > div::before {
content: ' ';
float: left;
box-sizing: border-box;
width: 20px;
height: 20px;
margin-top: -5px;
margin-left: -5px;
background-color: rgb(57 202 116 / 60%);
border-radius: 50%;
background-color: rgba(57, 202, 116, 0.6);
box-sizing: border-box;
content: ' ';
}
body > div::after {
content: ' ';
position: relative;
z-index: 10;
float: left;
clear: both;
box-sizing: border-box;
width: 10px;
height: 10px;
margin-top: -15px;
border-radius: 50%;
background-color: #fff;
border: 1px solid #39ca74;
position: relative;
z-index: 10;
box-sizing: border-box;
border-radius: 50%;
content: ' ';
}
}
@ -65,30 +65,30 @@
}
body > div::before {
content: ' ';
float: left;
box-sizing: border-box;
width: 28px;
height: 28px;
margin-top: -9px;
margin-left: -9px;
background-color: rgb(57 202 116 / 60%);
border-radius: 50%;
background-color: rgba(57, 202, 116, 0.6);
box-sizing: border-box;
content: ' ';
}
body > div::after {
content: ' ';
position: relative;
z-index: 10;
float: left;
clear: both;
box-sizing: border-box;
width: 10px;
height: 10px;
margin-top: -19px;
border-radius: 50%;
background-color: #fff;
border: 1px solid #39ca74;
position: relative;
z-index: 10;
box-sizing: border-box;
border-radius: 50%;
content: ' ';
}
}
}

@ -1,4 +1,4 @@
.x6-graph-scroller {
box-shadow: 0 0 10px 1px #e9e9e9;
margin: 0 auto;
box-shadow: 0 0 10px 1px #e9e9e9;
}

@ -13,7 +13,7 @@ export default class Example extends React.Component {
private minimapContainer: HTMLDivElement
private scroller: Scroller
private selection: Selection
private exportObj: Export
private exportInstance: Export
componentDidMount() {
this.graph = new Graph({
@ -55,12 +55,12 @@ export default class Example extends React.Component {
height: 200,
padding: 10,
})
this.exportObj = new Export()
this.exportInstance = new Export()
this.graph.use(this.scroller)
this.graph.use(this.selection)
this.graph.use(minimap)
this.graph.use(this.exportObj)
this.graph.use(this.exportInstance)
const rect = this.graph.addNode({
shape: 'rect',
@ -122,7 +122,7 @@ export default class Example extends React.Component {
}
onDownload = () => {
this.exportObj.exportPNG('scroller')
this.exportInstance.exportPNG('scroller')
}
render() {

@ -25,7 +25,6 @@ export default class Example extends React.Component {
strict: true,
showNodeSelectionBox: true,
selectCellOnMoved: false,
useCellGeometry: true,
filter(cell) {
return cell !== a
},

@ -1,20 +1,20 @@
.react-table {
width: 100%;
height: 100%;
border: 1px solid #edf2f5;
background-color: #fff;
border-radius: 5px;
overflow: hidden;
background-color: #fff;
border: 1px solid #edf2f5;
border-radius: 5px;
.inner {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
padding: 12px;
border: 1px solid #fff;
background: #edf2f5;
border: 1px solid #fff;
border-radius: 5px;
display: flex;
flex-direction: column;
}
.header {
@ -36,21 +36,21 @@
}
ul {
padding: 0;
margin: 0;
padding: 0;
}
li {
list-style: none;
height: 40px;
line-height: 40px;
padding-left: 16px;
line-height: 40px;
list-style: none;
border: 1px solid transparent;
&:hover {
border: 1px solid #1890ff;
// background: rgba(230,247,255,.92);
z-index: 0;
border: 1px solid #1890ff;
}
}
}
@ -58,8 +58,8 @@
.react-table-port {
width: 100%;
height: 100%;
overflow: hidden;
background: #eee;
border: 1px solid #808080;
border-radius: 100%;
background: #eee;
overflow: hidden;
}

@ -1,41 +1,44 @@
.tools {
width: 800px;
margin: 32px auto;
.ant-input {
margin-bottom: 16px;
}
}
.react-node {
display: flex;
align-items: center;
width: 100%;
height: 100%;
border: 1px solid #5f95ff;
border-radius: 14px;
display: flex;
align-items: center;
img {
width: 24px;
height: 24px;
}
span {
margin-left: 4px;
font-size: 12px;
color: #000000a6;
font-size: 12px;
}
}
.stutterer {
transform: scale(1.5);
height: 310px;
width: 310px;
position: absolute;
left: 0;
right: 0;
top: 0;
right: 0;
bottom: 0;
left: 0;
width: 310px;
height: 310px;
margin: auto;
box-shadow: 0 0 10px 10px rgba(0, 0, 0, 0.2);
border-radius: 200px;
box-shadow: 0 0 10px 10px rgb(0 0 0 / 20%);
transform: scale(1.5);
}
.clockHand {
@ -50,12 +53,12 @@
}
.innerLine {
border-radius: 6px;
position: absolute;
height: 149px;
left: 47.5%;
top: 0%;
left: 47.5%;
width: 5%;
height: 149px;
background-color: red;
border-radius: 6px;
transform-origin: bottom center;
}

@ -96,7 +96,7 @@ module.exports = function (config, base, karmaTypescriptConfig) {
},
coverageOptions: {
instrumentation: !isDebug,
exclude: /\.test|spec\.ts$/,
exclude: /\.(test|spec)\.ts$/,
},
reports: {
html: reportsDir,

@ -2,25 +2,50 @@
"name": "x6",
"private": true,
"scripts": {
"preinstall": "node ./scripts/preinstall.js",
"lint:ts": "eslint '**/src/**/*.{js,ts}?(x)' --fix",
"lint:style": "stylelint '**/src/**/*.less' --syntax less --fix",
"preinstall": "node ./scripts/preinstall",
"lint:ts": "eslint '**/src/**/*.{js,ts}?(x)' --cache --fix",
"lint:style": "stylelint '**/src/**/*.less' --customSyntax postcss-less --cache --fix",
"lint": "run-s lint:ts lint:style",
"prettier": "prettier --write '**/*.{js,mjs,jsx,tsx,ts,less,md,json}'",
"pretty-quick": "pretty-quick",
"test": "turbo run test --filter=./packages/*",
"build": "turbo run build --filter=./packages/*",
"build:cjs": "turbo run build:cjs --filter=./packages/*",
"build:esm": "turbo run build:esm --filter=./packages/*",
"build:dev": "turbo run build:dev --filter=./packages/*",
"build:umd": "turbo run build:umd --filter=./packages/*",
"build:demos": "sh ./scripts/build-demos",
"build:sites": "sh ./scripts/build-sites",
"update:deps": "pnpm update --interactive --latest --recursive",
"clean:turbo": "pnpm -r --if-present --parallel --filter=./packages/* run clean:turbo",
"clean:build": "pnpm -r --if-present --parallel --filter=./packages/* run clean",
"clean:modules": "pnpm -r --parallel exec rimraf node_modules && rimraf node_modules",
"clean": "run-s clean:build clean:modules",
"clean": "run-s clean:build clean:turbo clean:modules",
"update:deps": "pnpm update --interactive --latest --recursive",
"setup:husky": "husky install .husky",
"prepare": "is-ci || run-p setup:husky build:dev"
},
"rss": {
"clean:turbo": "rimraf .turbo",
"clean:build": "rimraf dist es lib",
"clean:coverage": "rimraf ./test/coverage",
"clean": "run-p clean:**",
"build:less": {
"file": "./scripts/build-less"
},
"build:esm": "tsc --module esnext --target es6 --outDir ./es",
"build:cjs": "tsc --module commonjs --target es6 --outDir ./lib",
"build:umd": "pnpm run --if-present build:less && rollup -c ../../rollup.config.js --bundleConfigAsCjs",
"build:dev": "pnpm run --if-present build:less && run-p -s build:cjs build:esm",
"build:watch": "run-s -s build:watch:esm",
"build:watch:esm": "run-s -s 'build:esm -- -w'",
"build:watch:cjs": "run-s -s 'build:cjs -- -w'",
"build": "run-p -s build:dev build:umd",
"prebuild": "run-s -s clean:build",
"test": {
"file": "./scripts/run-test"
},
"coveralls": "cat ./test/coverage/lcov.info | coveralls",
"pretest": "run-s -s clean:coverage"
},
"lint-staged": {
"*": [
"prettier --write --ignore-unknown"
@ -63,69 +88,69 @@
}
},
"dependencies": {
"@antv/x6-build-tools": "workspace:*",
"@babel/core": "^7.19.6",
"@babel/core": "^7.20.5",
"@babel/plugin-syntax-flow": "^7.18.6",
"@babel/plugin-transform-react-jsx": "^7.19.0",
"@commitlint/config-conventional": "^17.2.0",
"@rollup/plugin-commonjs": "^23.0.2",
"@commitlint/config-conventional": "^17.3.0",
"@rollup/plugin-commonjs": "^23.0.5",
"@rollup/plugin-node-resolve": "^15.0.1",
"@rollup/plugin-replace": "^5.0.1",
"@rollup/plugin-typescript": "^8.2.5",
"@semantic-release-monorepo/cli": "^1.0.28",
"@semantic-release/changelog": "^6.0.1",
"@rollup/plugin-typescript": "^10.0.1",
"@semantic-release-monorepo/cli": "^2.1.2",
"@semantic-release/changelog": "^6.0.2",
"@semantic-release/git": "^10.0.1",
"@types/jasmine": "^4.3.0",
"@types/jest": "^29.2.1",
"@types/node": "^18.11.9",
"@types/jest": "^29.2.4",
"@types/node": "^18.11.15",
"@types/sinon": "^10.0.2",
"@typescript-eslint/eslint-plugin": "^5.41.0",
"@typescript-eslint/parser": "^5.41.0",
"@typescript-eslint/eslint-plugin": "^5.46.1",
"@typescript-eslint/parser": "^5.46.1",
"boxen": "^7.0.0",
"colors": "^1.4.0",
"coveralls": "^3.1.1",
"eslint": "^8.26.0",
"eslint": "^8.29.0",
"eslint-config-airbnb-base": "^15.0.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-eslint-comments": "^3.2.0",
"eslint-plugin-flowtype": "^8.0.3",
"eslint-plugin-import": "^2.24.2",
"eslint-plugin-jest": "^27.1.3",
"eslint-plugin-jest": "^27.1.7",
"eslint-plugin-jsx-a11y": "^6.4.1",
"eslint-plugin-prettier": "^4.0.0",
"eslint-plugin-promise": "^6.1.1",
"eslint-plugin-react": "^7.25.1",
"eslint-plugin-react": "^7.31.11",
"eslint-plugin-react-hooks": "^4.2.0",
"eslint-plugin-unicorn": "^44.0.2",
"fs-extra": "^10.0.0",
"eslint-plugin-unicorn": "^45.0.2",
"fs-extra": "^11.1.0",
"husky": "^8.0.1",
"is-ci": "^3.0.0",
"jasmine-core": "^4.5.0",
"jest": "^29.2.2",
"jest": "^29.3.1",
"karma": "^6.3.4",
"karma-chrome-launcher": "^3.1.0",
"karma-cli": "^2.0.0",
"karma-jasmine": "^5.1.0",
"karma-spec-reporter": "^0.0.34",
"karma-spec-reporter": "^0.0.36",
"karma-typescript": "5.5.3",
"karma-typescript-es6-transform": "5.5.3",
"less": "^4.1.1",
"lodash": "^4.17.21",
"npm-run-all": "^4.1.5",
"postcss": "^8.3.6",
"prettier": "^2.4.0",
"postcss": "^8.4.20",
"postcss-less": "^6.0.0",
"prettier": "^2.8.0",
"pretty-quick": "^3.1.1",
"rimraf": "^3.0.2",
"rollup": "^3.2.5",
"rollup": "^3.7.4",
"rollup-plugin-auto-external": "^2.0.0",
"rollup-plugin-filesize": "^9.1.1",
"rollup-plugin-postcss": "^4.0.1",
"rollup-plugin-progress": "^1.1.2",
"rollup-plugin-terser": "^7.0.2",
"run-shared-scripts": "^1.1.5",
"semantic-release": "^19.0.5",
"sinon": "^14.0.1",
"stylelint": "^14.14.0",
"stylelint-config-prettier": "^9.0.3",
"sinon": "^15.0.1",
"stylelint": "^14.15.0",
"stylelint-config-prettier": "^9.0.4",
"stylelint-config-rational-order": "^0.1.2",
"stylelint-config-standard": "^29.0.0",
"stylelint-declaration-block-no-ignored-properties": "^2.4.0",
@ -134,6 +159,9 @@
"ts-node": "^10.2.1",
"tslib": "^2.4.1",
"turbo": "^1.6.3",
"typescript": "^4.4.3"
"typescript": "^4.9.3"
},
"devDependencies": {
"@rollup/plugin-terser": "^0.2.0"
}
}

@ -1,16 +1,8 @@
# @antv/x6-common [2.0.0](https://github.com/antvis/x6/compare/@antv/x6-common@1.0.1...@antv/x6-common@2.0.0) (2022-11-05)
## @antv/x6-common [2.0.1](https://github.com/antvis/x6/compare/@antv/x6-common@2.0.0...@antv/x6-common@2.0.1) (2022-11-25)
### Documentation
### Bug Fixes
* refresh changelogs ([44f89a1](https://github.com/antvis/x6/commit/44f89a1e1a85513a9bf548be87be38e3cdc82574))
* npm version ([cb0cfde](https://github.com/antvis/x6/commit/cb0cfdeb4dbe8858569e6899db08ccb9ab8ba4e7))
### Features
* sync some commit from v1 ([#2851](https://github.com/antvis/x6/issues/2851)) ([a772025](https://github.com/antvis/x6/commit/a7720251ff42f2892bff9c3cd5159932322362b1))
### BREAKING CHANGES
* dump to 2.0
## @antv/x6-common [2.0.1](https://github.com/antvis/x6/compare/@antv/x6-common@2.0.0...@antv/x6-common@2.0.1) (2022-11-24)

@ -1,6 +1,6 @@
{
"name": "@antv/x6-common",
"version": "2.0.0",
"version": "2.0.3",
"description": "Basic toolkit for X6",
"main": "lib/index.js",
"module": "es/index.js",
@ -48,13 +48,13 @@
"email": "vectorse@126.com"
},
"license": "MIT",
"homepage": "https://github.com/antvis/x6",
"homepage": "https://x6.antv.antgroup.com",
"bugs": {
"url": "https://github.com/antvis/x6/issues"
},
"repository": {
"type": "git",
"url": "ssh://git@github.com/antvis/x6.git",
"url": "https://github.com/antvis/x6.git",
"directory": "packages/x6-common"
},
"publishConfig": {

@ -1,25 +0,0 @@
import sinon from 'sinon'
import { Dom } from '../../dom'
describe('af', () => {
describe('#requestAnimationFrame', () => {
it('should call the callback', (done) => {
Dom.requestAnimationFrame(() => {
expect(1).toEqual(1)
done()
})
})
})
describe('#cancelAnimationFrame', () => {
it('requestAnimationFrame can be cancel', (done) => {
const spy = sinon.spy()
const id = Dom.requestAnimationFrame(spy)
Dom.cancelAnimationFrame(id)
setTimeout(() => {
expect(spy.callCount).toEqual(0)
done()
}, 100)
})
})
})

@ -151,72 +151,4 @@ describe('FunctionExt', () => {
expect(spy.calledWith(1, '2', true, obj, reg, arr, 'more')).toBeTruthy()
})
})
describe('#cacher', () => {
it('shoule cache function results with same args', () => {
let counter = 0
const raw = (a: number, b: number) => {
counter += 1
return a + b
}
const fn = FunctionExt.cacher(raw)
const ret1 = fn(1, 2)
expect(counter).toBe(1)
const ret2 = fn(1, 2)
expect(counter).toBe(1)
expect(ret1).toBe(ret2)
fn(2, 3)
expect(counter).toBe(2)
})
it('shoule remove cache when reach the max cache count', () => {
let counter = 0
const raw = (a: number, b: number) => {
counter += 1
return a + b
}
const fn = FunctionExt.cacher(raw)
fn(1, 2)
expect(counter).toBe(1)
for (let i = 0; i < 1000; i += 1) {
fn(i, i)
}
fn(1, 2)
expect(counter).toBe(1002)
})
it('shoule cache function with specified context', () => {
const ctx = {}
const spy = sinon.spy()
const fn = FunctionExt.cacher(spy, ctx)
fn()
expect(spy.calledOn(ctx)).toBeTruthy()
})
it('shoule return result processed by post processor', () => {
let counter = 0
const raw = (a: number, b: number) => {
counter += 1
return a + b
}
const processor = (v: number, hasCache: boolean) => {
return hasCache ? -v : v
}
const fn = FunctionExt.cacher(raw, {}, processor)
const ret1 = fn(1, 2)
const ret2 = fn(1, 2)
expect(counter).toBe(1)
expect(ret1).toBe(3)
expect(ret2).toBe(-3)
})
})
})

@ -1,92 +0,0 @@
import { JSONArray, JSONExt, JSONObject, JSONPrimitive } from '../../json'
describe('JSONExt', () => {
describe('isPrimitive()', () => {
it('should return `true` if the value is a primitive', () => {
expect(JSONExt.isPrimitive(null)).toEqual(true)
expect(JSONExt.isPrimitive(false)).toEqual(true)
expect(JSONExt.isPrimitive(true)).toEqual(true)
expect(JSONExt.isPrimitive(1)).toEqual(true)
expect(JSONExt.isPrimitive('1')).toEqual(true)
})
it('should return `false` if the value is not a primitive', () => {
expect(JSONExt.isPrimitive([])).toEqual(false)
expect(JSONExt.isPrimitive({})).toEqual(false)
})
})
describe('isArray()', () => {
it('should test whether a JSON value is an array', () => {
expect(JSONExt.isArray([])).toEqual(true)
expect(JSONExt.isArray(null)).toEqual(false)
expect(JSONExt.isArray(1)).toEqual(false)
})
})
describe('isObject()', () => {
it('should test whether a JSON value is an object', () => {
expect(JSONExt.isObject({ a: 1 })).toEqual(true)
expect(JSONExt.isObject({})).toEqual(true)
expect(JSONExt.isObject([])).toEqual(false)
expect(JSONExt.isObject(1)).toEqual(false)
})
})
describe('deepEqual()', () => {
it('should compare two JSON values for deep equality', () => {
expect(JSONExt.deepEqual([], [])).toEqual(true)
expect(JSONExt.deepEqual([1], [1])).toEqual(true)
expect(JSONExt.deepEqual({}, {})).toEqual(true)
expect(JSONExt.deepEqual({ a: [] }, { a: [] })).toEqual(true)
expect(JSONExt.deepEqual({ a: { b: null } }, { a: { b: null } })).toEqual(
true,
)
expect(JSONExt.deepEqual({ a: '1' }, { a: '1' })).toEqual(true)
expect(JSONExt.deepEqual({ a: { b: null } }, { a: { b: '1' } })).toEqual(
false,
)
expect(JSONExt.deepEqual({ a: [] }, { a: [1] })).toEqual(false)
expect(JSONExt.deepEqual([1], [1, 2])).toEqual(false)
expect(JSONExt.deepEqual(null, [1, 2])).toEqual(false)
expect(JSONExt.deepEqual([1], {})).toEqual(false)
expect(JSONExt.deepEqual([1], [2])).toEqual(false)
expect(JSONExt.deepEqual({}, { a: 1 })).toEqual(false)
expect(JSONExt.deepEqual({ b: 1 }, { a: 1 })).toEqual(false)
})
})
describe('deepCopy()', () => {
it('should deep copy an object', () => {
const v1: JSONPrimitive = null
const v2: JSONPrimitive = true
const v3: JSONPrimitive = false
const v4: JSONPrimitive = 'foo'
const v5: JSONPrimitive = 42
const v6: JSONArray = [1, 2, 3, [4, 5, 6], { a: 12, b: [4, 5] }, false]
const v7: JSONObject = { a: false, b: [null, [1, 2]], c: { a: 1 } }
const r1 = JSONExt.deepCopy(v1)
const r2 = JSONExt.deepCopy(v2)
const r3 = JSONExt.deepCopy(v3)
const r4 = JSONExt.deepCopy(v4)
const r5 = JSONExt.deepCopy(v5)
const r6 = JSONExt.deepCopy(v6)
const r7 = JSONExt.deepCopy(v7)
expect(v1).toEqual(r1)
expect(v2).toEqual(r2)
expect(v3).toEqual(r3)
expect(v4).toEqual(r4)
expect(v5).toEqual(r5)
expect(v6).toEqual(r6)
expect(v7).toEqual(r7)
expect(v6).toEqual(r6)
expect(v6[3]).not.toBe(r6[3])
expect(v6[4]).not.toBe(r6[4])
expect((v6[4] as JSONObject).b).not.toBe((r6[4] as JSONObject).b)
expect(v7).toEqual(r7)
expect(v7.b).not.toBe(r7.b)
expect((v7.b as JSONArray)[1]).not.toBe((r7.b as JSONArray)[1])
expect(v7.c).not.toBe(r7.c)
})
})
})

@ -6,5 +6,5 @@ export {
sortBy,
groupBy,
difference,
max
max,
} from 'lodash-es'

@ -1,3 +1,5 @@
/* eslint-disable no-constructor-return */
import { NumberExt } from '../number'
export class Color {

@ -1,63 +0,0 @@
export const requestAnimationFrame = (function () {
let raf
const win = window as any
if (win != null) {
raf =
win.requestAnimationFrame ||
win.webkitRequestAnimationFrame ||
win.mozRequestAnimationFrame ||
win.oRequestAnimationFrame ||
win.msRequestAnimationFrame
if (raf != null) {
raf = raf.bind(win)
}
}
if (raf == null) {
let lastTime = 0
raf = (callback: FrameRequestCallback) => {
const currTime = new Date().getTime()
const timeToCall = Math.max(0, 16 - (currTime - lastTime))
const id = setTimeout(() => {
callback(currTime + timeToCall)
}, timeToCall)
lastTime = currTime + timeToCall
return id
}
}
return raf as (callback: FrameRequestCallback) => number
})()
export const cancelAnimationFrame = (function () {
let caf
const win = window as any
if (win != null) {
caf =
win.cancelAnimationFrame ||
win.webkitCancelAnimationFrame ||
win.webkitCancelRequestAnimationFrame ||
win.msCancelAnimationFrame ||
win.msCancelRequestAnimationFrame ||
win.oCancelAnimationFrame ||
win.oCancelRequestAnimationFrame ||
win.mozCancelAnimationFrame ||
win.mozCancelRequestAnimationFrame
if (caf) {
caf = caf.bind(win)
}
}
if (caf == null) {
caf = clearTimeout
}
return caf as (handle: number) => void
})()

@ -33,7 +33,7 @@ export function addClass(
}
if (typeof selector === 'string' && elem.nodeType === 1) {
const classes = selector.match(rnotwhite) || []
const classes: string[] = selector.match(rnotwhite) || []
const oldValue = fillSpaces(getClass(elem)).replace(rclass, ' ')
let newValue = classes.reduce((memo, cls) => {
if (memo.indexOf(fillSpaces(cls)) < 0) {
@ -63,7 +63,7 @@ export function removeClass(
}
if ((!selector || typeof selector === 'string') && elem.nodeType === 1) {
const classes = (selector || '').match(rnotwhite) || []
const classes: string[] = (selector || '').match(rnotwhite) || []
const oldValue = fillSpaces(getClass(elem)).replace(rclass, ' ')
let newValue = classes.reduce((memo, cls) => {
const className = fillSpaces(cls)

@ -1,26 +1,25 @@
import { StringExt } from '../string'
export function getData(dataset: Record<string, any>, name: string) {
const value = dataset[name] || dataset[StringExt.camelCase(name)]
try {
return JSON.parse(value)
} catch {
return value
const dataset: WeakMap<Element, Record<string, any>> = new WeakMap()
export function getData(elem: Element, name: string) {
const key = StringExt.camelCase(name)
const cache = dataset.get(elem)
if (cache) {
return cache[key]
}
}
export function setData(
dataset: Record<string, any>,
name: string,
value: any,
) {
let val = value
try {
val = JSON.stringify(val)
} catch (e) {
// paas
export function setData(elem: Element, name: string, value: any) {
const key = StringExt.camelCase(name)
const cache = dataset.get(elem)
if (cache) {
cache[key] = value
} else {
dataset.set(elem, {
[key]: value,
})
}
dataset[StringExt.camelCase(name)] = val
}
export function data(elem: Element): Record<string, any> | undefined
@ -34,20 +33,17 @@ export function data(
) {
if (!name) {
const datas: Record<string, any> = {}
const dataset = (elem as any).dataset
// eslint-disable-next-line
for (const key in dataset) {
datas[key] = getData(dataset, key)
}
Object.keys(dataset).forEach((key) => {
datas[key] = getData(elem, key)
})
return datas
}
if (typeof name === 'string') {
const dataset = (elem as any).dataset
if (value === undefined) {
return getData(dataset, name)
return getData(elem, name)
}
setData(dataset, name, value)
setData(elem, name, value)
return
}

@ -1,4 +1,3 @@
export * from './af'
export * from './attr'
export * from './elem'
export * from './class'

@ -144,8 +144,8 @@ function calculateDY(
case 'bottom':
dy = -(0.25 * llMaxFont) - rLineHeights
break
default:
case 'top':
default:
dy = 0.8 * flMaxFont
break
}

@ -1,4 +1,4 @@
export { debounce, defer } from 'lodash-es'
export { debounce } from 'lodash-es'
type Fn = (...args: any[]) => any
@ -46,38 +46,3 @@ export function call<T extends Fn>(
): ReturnType<T> {
return apply(fn, ctx, args)
}
function repush<T>(array: T[], item: T) {
for (let i = 0, ii = array.length; i < ii; i += 1) {
if (array[i] === item) {
return array.push(array.splice(i, 1)[0])
}
}
}
export function cacher<T extends Fn>(
fn: T,
ctx?: ThisParameterType<T>,
postProcessor?: (v: any, hasCache?: boolean) => any,
): T {
const keys: string[] = []
const cache: { [kry: string]: any } = {}
const f = (...args: Parameters<T>) => {
let hasCache = false
const key = args.join('\u2400')
if (key in cache) {
hasCache = true
repush(keys, key)
} else {
if (keys.length >= 1000) {
delete cache[keys.shift()!]
}
keys.push(key)
cache[key] = apply(fn, ctx || (null as ThisParameterType<T>), args)
}
return postProcessor ? postProcessor(cache[key], hasCache) : cache[key]
}
return f as T
}

@ -8,7 +8,6 @@ export * from './number'
export * from './function'
export * from './platform'
export * from './text'
export * from './json'
export * from './datauri'
export * from './unit'
export * from './dom'

@ -1,262 +0,0 @@
/**
* A type alias for a JSON primitive.
*/
export type JSONPrimitive = boolean | number | string | null | undefined
/**
* A type alias for a JSON value.
*/
export type JSONValue = JSONPrimitive | JSONObject | JSONArray
/**
* A type definition for a JSON object.
*/
export interface JSONObject {
[key: string]: JSONValue
}
/**
* A type definition for a JSON array.
*/
export interface JSONArray extends Array<JSONValue> {}
/**
* A type definition for a readonly JSON object.
*/
export interface ReadonlyJSONObject {
readonly [key: string]: ReadonlyJSONValue
}
/**
* A type definition for a readonly JSON array.
*/
export interface ReadonlyJSONArray extends ReadonlyArray<ReadonlyJSONValue> {}
/**
* A type alias for a readonly JSON value.
*/
export type ReadonlyJSONValue =
| JSONPrimitive
| ReadonlyJSONObject
| ReadonlyJSONArray
/**
* The namespace for JSON-specific functions.
*/
export namespace JSONExt {
/**
* A shared frozen empty JSONObject
*/
export const emptyObject = Object.freeze({}) as ReadonlyJSONObject
/**
* A shared frozen empty JSONArray
*/
export const emptyArray = Object.freeze([]) as ReadonlyJSONArray
/**
* Test whether a JSON value is a primitive.
*
* @param value - The JSON value of interest.
*
* @returns `true` if the value is a primitive,`false` otherwise.
*/
export function isPrimitive(
value: ReadonlyJSONValue,
): value is JSONPrimitive {
return (
value === null ||
value === undefined ||
typeof value === 'boolean' ||
typeof value === 'number' ||
typeof value === 'string'
)
}
/**
* Test whether a JSON value is an array.
*
* @param value - The JSON value of interest.
*
* @returns `true` if the value is a an array, `false` otherwise.
*/
export function isArray(value: JSONValue): value is JSONArray
export function isArray(value: ReadonlyJSONValue): value is ReadonlyJSONArray
export function isArray(value: ReadonlyJSONValue): boolean {
return Array.isArray(value)
}
/**
* Test whether a JSON value is an object.
*
* @param value - The JSON value of interest.
*
* @returns `true` if the value is a an object, `false` otherwise.
*/
export function isObject(value: JSONValue): value is JSONObject
export function isObject(
value: ReadonlyJSONValue,
): value is ReadonlyJSONObject
export function isObject(value: ReadonlyJSONValue): boolean {
return !isPrimitive(value) && !isArray(value)
}
/**
* Compare two JSON values for deep equality.
*
* @param first - The first JSON value of interest.
*
* @param second - The second JSON value of interest.
*
* @returns `true` if the values are equivalent, `false` otherwise.
*/
export function deepEqual(
first: ReadonlyJSONValue,
second: ReadonlyJSONValue,
): boolean {
// Check referential and primitive equality first.
if (first === second) {
return true
}
// If one is a primitive, the `===` check ruled out the other.
if (isPrimitive(first) || isPrimitive(second)) {
return false
}
// Test whether they are arrays.
const a1 = isArray(first)
const a2 = isArray(second)
// Bail if the types are different.
if (a1 !== a2) {
return false
}
// If they are both arrays, compare them.
if (a1 && a2) {
return deepArrayEqual(
first as ReadonlyJSONArray,
second as ReadonlyJSONArray,
)
}
// At this point, they must both be objects.
return deepObjectEqual(
first as ReadonlyJSONObject,
second as ReadonlyJSONObject,
)
}
/**
* Create a deep copy of a JSON value.
*
* @param value - The JSON value to copy.
*
* @returns A deep copy of the given JSON value.
*/
export function deepCopy<T extends ReadonlyJSONValue>(value: T): T {
// Do nothing for primitive values.
if (isPrimitive(value)) {
return value
}
// Deep copy an array.
if (isArray(value)) {
return deepArrayCopy(value)
}
// Deep copy an object.
return deepObjectCopy(value)
}
/**
* Compare two JSON arrays for deep equality.
*/
function deepArrayEqual(
first: ReadonlyJSONArray,
second: ReadonlyJSONArray,
): boolean {
// Check referential equality first.
if (first === second) {
return true
}
// Test the arrays for equal length.
if (first.length !== second.length) {
return false
}
// Compare the values for equality.
for (let i = 0, n = first.length; i < n; i += 1) {
if (!deepEqual(first[i], second[i])) {
return false
}
}
// At this point, the arrays are equal.
return true
}
/**
* Compare two JSON objects for deep equality.
*/
function deepObjectEqual(
first: ReadonlyJSONObject,
second: ReadonlyJSONObject,
): boolean {
// Check referential equality first.
if (first === second) {
return true
}
// Check for the first object's keys in the second object.
// eslint-disable-next-line
for (const key in first) {
if (!(key in second)) {
return false
}
}
// Check for the second object's keys in the first object.
// eslint-disable-next-line
for (const key in second) {
if (!(key in first)) {
return false
}
}
// Compare the values for equality.
// eslint-disable-next-line
for (const key in first) {
if (!deepEqual(first[key], second[key])) {
return false
}
}
// At this point, the objects are equal.
return true
}
/**
* Create a deep copy of a JSON array.
*/
function deepArrayCopy(value: any): any {
const result = new Array<any>(value.length) // eslint-disable-line
for (let i = 0, n = value.length; i < n; i += 1) {
result[i] = deepCopy(value[i])
}
return result
}
/**
* Create a deep copy of a JSON object.
*/
function deepObjectCopy(value: any): any {
const result: any = {}
Object.keys(value).forEach((key) => {
result[key] = deepCopy(value[key])
})
return result
}
}

@ -117,6 +117,7 @@ export function unsetByPath(
return obj
}
// eslint-disable-next-line default-param-last
export function flatten(obj: any, delim = '/', stop?: (val: any) => boolean) {
const ret: { [key: string]: any } = {}

@ -1,4 +1,4 @@
export { template, uniqueId } from 'lodash-es'
export { uniqueId } from 'lodash-es'
export * from './format'
export * from './hashcode'

@ -1,27 +1,75 @@
export type Nilable<T> = T | null | undefined
export interface PointLike {
x: number
y: number
}
export type PointData = [number, number]
export interface Translation {
tx: number
ty: number
}
export interface Rotation {
angle: number
cx?: number
cy?: number
}
export interface Scale {
sx: number
sy: number
}
export interface Size {
width: number
height: number
}
export type Nilable<T> = T | null | undefined
export interface KeyValue<T extends any = any> {
export interface KeyValue<T = any> {
[key: string]: T
}
/**
* A type alias for a JSON primitive.
*/
export type JSONPrimitive = boolean | number | string | null | undefined
/**
* A type alias for a JSON value.
*/
export type JSONValue = JSONPrimitive | JSONObject | JSONArray
/**
* A type definition for a JSON object.
*/
export interface JSONObject {
[key: string]: JSONValue
}
/**
* A type definition for a JSON array.
*/
export interface JSONArray extends Array<JSONValue> {}
/**
* A type definition for a readonly JSON object.
*/
export interface ReadonlyJSONObject {
readonly [key: string]: ReadonlyJSONValue
}
/**
* A type definition for a readonly JSON array.
*/
export interface ReadonlyJSONArray extends ReadonlyArray<ReadonlyJSONValue> {}
/**
* A type alias for a readonly JSON value.
*/
export type ReadonlyJSONValue =
| JSONPrimitive
| ReadonlyJSONObject
| ReadonlyJSONArray

@ -1,11 +1,12 @@
# @antv/x6-geometry [2.0.0](https://github.com/antvis/x6/compare/@antv/x6-geometry@1.0.1...@antv/x6-geometry@2.0.0) (2022-11-05)
## @antv/x6-geometry [2.0.4](https://github.com/antvis/x6/compare/@antv/x6-geometry@2.0.3...@antv/x6-geometry@2.0.4) (2022-11-29)
## @antv/x6-geometry [2.0.3](https://github.com/antvis/x6/compare/@antv/x6-geometry@2.0.2...@antv/x6-geometry@2.0.3) (2022-11-25)
### Documentation
### Bug Fixes
* refresh changelogs ([44f89a1](https://github.com/antvis/x6/commit/44f89a1e1a85513a9bf548be87be38e3cdc82574))
* npm version ([cb0cfde](https://github.com/antvis/x6/commit/cb0cfdeb4dbe8858569e6899db08ccb9ab8ba4e7))
## @antv/x6-geometry [2.0.2](https://github.com/antvis/x6/compare/@antv/x6-geometry@2.0.1...@antv/x6-geometry@2.0.2) (2022-11-25)
### BREAKING CHANGES
* dump to 2.0
## @antv/x6-geometry [2.0.1](https://github.com/antvis/x6/compare/@antv/x6-geometry@2.0.0...@antv/x6-geometry@2.0.1) (2022-11-24)

@ -5,7 +5,7 @@
<a href="/LICENSE"><img src="https://img.shields.io/github/license/antvis/x6?style=flat-square" alt="MIT License"></a>
<a href="https://www.typescriptlang.org"><img alt="Language" src="https://img.shields.io/badge/language-TypeScript-blue.svg?style=flat-square"></a>
<a href="https://github.com/antvis/x6/pulls"><img alt="PRs Welcome" src="https://img.shields.io/badge/PRs-Welcome-brightgreen.svg?style=flat-square"></a>
<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>
<a href="https://x6.antv.antgroup.com"><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>
<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&flag=x6-geometry&style=flat-square&token=15CO54WYUV"></a>
<a href="https://lgtm.com/projects/g/antvis/x6/context:javascript"><img alt="Language grade: JavaScript" src="https://img.shields.io/lgtm/grade/javascript/g/antvis/x6.svg?logo=lgtm&style=flat-square"></a>

@ -1,5 +1,5 @@
{
"version": "2.0.0",
"version": "2.0.4",
"name": "@antv/x6-geometry",
"description": "Geometry operations for X6",
"main": "lib/index.js",
@ -41,13 +41,13 @@
"email": "bubkoo.wy@gmail.com"
},
"license": "MIT",
"homepage": "https://github.com/antvis/x6",
"homepage": "https://x6.antv.antgroup.com",
"bugs": {
"url": "https://github.com/antvis/x6/issues"
},
"repository": {
"type": "git",
"url": "ssh://git@github.com/antvis/x6.git",
"url": "https://github.com/antvis/x6.git",
"directory": "packages/x6-geometry"
},
"publishConfig": {

@ -1,6 +1,8 @@
/* eslint-disable default-param-last */
import { Point } from '../point'
const regexSupportedData = new RegExp(`^[\\s\\dLMCZz,.]*$`)
const regexSupportedData = new RegExp(`^[\\s\\dLMCZz,.]*$`) // eslint-disable-line prefer-regex-literals
export function isValid(data: any) {
if (typeof data !== 'string') {

@ -1,3 +1,5 @@
/* eslint-disable no-constructor-return */
import { Line } from './line'
import { Point } from './point'
import { Rectangle } from './rectangle'

@ -1,11 +1,22 @@
# @antv/x6-plugin-clipboard [2.0.0](https://github.com/antvis/x6/compare/@antv/x6-plugin-clipboard@1.0.1...@antv/x6-plugin-clipboard@2.0.0) (2022-11-05)
## @antv/x6-plugin-clipboard [2.1.3](https://github.com/antvis/x6/compare/@antv/x6-plugin-clipboard@2.1.2...@antv/x6-plugin-clipboard@2.1.3) (2022-11-25)
### Documentation
### Bug Fixes
* refresh changelogs ([44f89a1](https://github.com/antvis/x6/commit/44f89a1e1a85513a9bf548be87be38e3cdc82574))
* broken file ([d6df2d5](https://github.com/antvis/x6/commit/d6df2d59811dc18791208af36b452e11e6391f3b))
## @antv/x6-plugin-clipboard [2.1.2](https://github.com/antvis/x6/compare/@antv/x6-plugin-clipboard@2.1.1...@antv/x6-plugin-clipboard@2.1.2) (2022-11-25)
### BREAKING CHANGES
### Bug Fixes
* dump to 2.0
* npm version ([cb0cfde](https://github.com/antvis/x6/commit/cb0cfdeb4dbe8858569e6899db08ccb9ab8ba4e7))
## @antv/x6-plugin-clipboard [2.1.1](https://github.com/antvis/x6/compare/@antv/x6-plugin-clipboard@2.1.0...@antv/x6-plugin-clipboard@2.1.1) (2022-11-25)
# @antv/x6-plugin-clipboard [2.1.0](https://github.com/antvis/x6/compare/@antv/x6-plugin-clipboard@2.0.0...@antv/x6-plugin-clipboard@2.1.0) (2022-11-24)
### Features
* attach plugin api and events to grpah instance ([#2864](https://github.com/antvis/x6/issues/2864)) ([774f547](https://github.com/antvis/x6/commit/774f547b85522eb2411dca949d36ecfe535503f3))

@ -1,6 +1,6 @@
{
"name": "@antv/x6-plugin-clipboard",
"version": "2.0.0",
"version": "2.1.3",
"description": "clipboard plugin for X6",
"main": "lib/index.js",
"module": "es/index.js",
@ -40,20 +40,20 @@
"@antv/x6": "^2.x"
},
"devDependencies": {
"@antv/x6": "^2.0.x"
"@antv/x6": "^2.x"
},
"author": {
"name": "bubkoo",
"email": "bubkoo.wy@gmail.com"
},
"license": "MIT",
"homepage": "https://github.com/antvis/x6",
"homepage": "https://x6.antv.antgroup.com/tutorial/plugins/clipboard",
"bugs": {
"url": "https://github.com/antvis/x6/issues"
},
"repository": {
"type": "git",
"url": "ssh://git@github.com/antvis/x6.git",
"url": "https://github.com/antvis/x6.git",
"directory": "packages/x6-plugin-clipboard"
},
"publishConfig": {

@ -0,0 +1,113 @@
import { Graph, Cell } from '@antv/x6'
import { Clipboard } from './index'
declare module '@antv/x6/lib/graph/graph' {
interface Graph {
isClipboardEnabled: () => boolean
enableClipboard: () => Graph
disableClipboard: () => Graph
toggleClipboard: (enabled?: boolean) => Graph
isClipboardEmpty: () => boolean
getCellsInClipboard: () => Cell[]
cleanClipboard: () => Graph
copy: (cells: Cell[], options?: Clipboard.CopyOptions) => Graph
cut: (cells: Cell[], options?: Clipboard.CopyOptions) => Graph
paste: (options?: Clipboard.PasteOptions, graph?: Graph) => Cell[]
}
}
declare module '@antv/x6/lib/graph/events' {
interface EventArgs {
'clipboard:changed': { cells: Cell[] }
}
}
Graph.prototype.isClipboardEnabled = function () {
const clipboard = this.getPlugin('clipboard') as Clipboard
if (clipboard) {
return clipboard.isEnabled()
}
return false
}
Graph.prototype.enableClipboard = function () {
const clipboard = this.getPlugin('clipboard') as Clipboard
if (clipboard) {
clipboard.enable()
}
return this
}
Graph.prototype.disableClipboard = function () {
const clipboard = this.getPlugin('clipboard') as Clipboard
if (clipboard) {
clipboard.disable()
}
return this
}
Graph.prototype.toggleClipboard = function (enabled?: boolean) {
const clipboard = this.getPlugin('clipboard') as Clipboard
if (clipboard) {
clipboard.toggleEnabled(enabled)
}
return this
}
Graph.prototype.isClipboardEmpty = function () {
const clipboard = this.getPlugin('clipboard') as Clipboard
if (clipboard) {
return clipboard.isEmpty()
}
return true
}
Graph.prototype.getCellsInClipboard = function () {
const clipboard = this.getPlugin('clipboard') as Clipboard
if (clipboard) {
return clipboard.getCellsInClipboard()
}
return []
}
Graph.prototype.cleanClipboard = function () {
const clipboard = this.getPlugin('clipboard') as Clipboard
if (clipboard) {
clipboard.clean()
}
return this
}
Graph.prototype.copy = function (
cells: Cell[],
options?: Clipboard.CopyOptions,
) {
const clipboard = this.getPlugin('clipboard') as Clipboard
if (clipboard) {
clipboard.copy(cells, options)
}
return this
}
Graph.prototype.cut = function (
cells: Cell[],
options?: Clipboard.CopyOptions,
) {
const clipboard = this.getPlugin('clipboard') as Clipboard
if (clipboard) {
clipboard.cut(cells, options)
}
return this
}
Graph.prototype.paste = function (
options?: Clipboard.PasteOptions,
graph?: Graph,
) {
const clipboard = this.getPlugin('clipboard') as Clipboard
if (clipboard) {
return clipboard.paste(options, graph)
}
return []
}

@ -1,5 +1,6 @@
import { Cell, Graph, IDisablable, Basecoat } from '@antv/x6'
import { ClipboardImpl } from './clipboard'
import './api'
export class Clipboard
extends Basecoat<Clipboard.EventArgs>
@ -7,10 +8,12 @@ export class Clipboard
{
private clipboardImpl: ClipboardImpl
private graph: Graph
public options: Clipboard.Options
public name = 'clipboard'
constructor(public readonly options: Clipboard.Options) {
constructor(options: Clipboard.Options) {
super()
this.options = options
}
init(graph: Graph) {
@ -65,7 +68,7 @@ export class Clipboard
return this.cells
}
private clean(force?: boolean) {
clean(force?: boolean) {
if (!this.disabled || force) {
this.clipboardImpl.clean()
this.notify('clipboard:changed', { cells: [] })
@ -111,12 +114,12 @@ export class Clipboard
return this.options.enabled !== true
}
private get commonOptions() {
protected get commonOptions() {
const { enabled, ...others } = this.options
return others
}
private get cells() {
protected get cells() {
return this.clipboardImpl.cells
}

@ -1,11 +1,15 @@
# @antv/x6-plugin-dnd [2.0.0](https://github.com/antvis/x6/compare/@antv/x6-plugin-dnd@1.0.1...@antv/x6-plugin-dnd@2.0.0) (2022-11-05)
## @antv/x6-plugin-dnd [2.0.3](https://github.com/antvis/x6/compare/@antv/x6-plugin-dnd@2.0.2...@antv/x6-plugin-dnd@2.0.3) (2022-11-25)
### Documentation
### Bug Fixes
* refresh changelogs ([44f89a1](https://github.com/antvis/x6/commit/44f89a1e1a85513a9bf548be87be38e3cdc82574))
* npm version ([cb0cfde](https://github.com/antvis/x6/commit/cb0cfdeb4dbe8858569e6899db08ccb9ab8ba4e7))
## @antv/x6-plugin-dnd [2.0.2](https://github.com/antvis/x6/compare/@antv/x6-plugin-dnd@2.0.1...@antv/x6-plugin-dnd@2.0.2) (2022-11-25)
## @antv/x6-plugin-dnd [2.0.1](https://github.com/antvis/x6/compare/@antv/x6-plugin-dnd@2.0.0...@antv/x6-plugin-dnd@2.0.1) (2022-11-24)
### BREAKING CHANGES
### Bug Fixes
* dump to 2.0
* export snap methods from snapline ([#2904](https://github.com/antvis/x6/issues/2904)) ([826ccdd](https://github.com/antvis/x6/commit/826ccdd9a033486ad5b90d666340e46f6c266af7))

@ -1,6 +1,6 @@
{
"name": "@antv/x6-plugin-dnd",
"version": "2.0.0",
"version": "2.0.3",
"description": "dnd plugin for X6",
"main": "lib/index.js",
"module": "es/index.js",
@ -41,20 +41,20 @@
"@antv/x6": "^2.x"
},
"devDependencies": {
"@antv/x6": "^2.0.x"
"@antv/x6": "^2.x"
},
"author": {
"name": "bubkoo",
"email": "bubkoo.wy@gmail.com"
},
"license": "MIT",
"homepage": "https://github.com/antvis/x6",
"homepage": "https://x6.antv.antgroup.com/tutorial/plugins/dnd",
"bugs": {
"url": "https://github.com/antvis/x6/issues"
},
"repository": {
"type": "git",
"url": "ssh://git@github.com/antvis/x6.git",
"url": "https://github.com/antvis/x6.git",
"directory": "packages/x6-plugin-dnd"
},
"publishConfig": {

@ -104,7 +104,7 @@ export class Dnd extends View {
}
protected isSnaplineEnabled() {
return this.snapline && this.snapline.isSnaplineEnabled()
return this.snapline && this.snapline.isEnabled()
}
protected prepareDragging(

@ -1,11 +1,16 @@
# @antv/x6-plugin-export [2.0.0](https://github.com/antvis/x6/compare/@antv/x6-plugin-export@1.0.1...@antv/x6-plugin-export@2.0.0) (2022-11-05)
## @antv/x6-plugin-export [2.1.2](https://github.com/antvis/x6/compare/@antv/x6-plugin-export@2.1.1...@antv/x6-plugin-export@2.1.2) (2022-11-25)
### Documentation
### Bug Fixes
* refresh changelogs ([44f89a1](https://github.com/antvis/x6/commit/44f89a1e1a85513a9bf548be87be38e3cdc82574))
* npm version ([cb0cfde](https://github.com/antvis/x6/commit/cb0cfdeb4dbe8858569e6899db08ccb9ab8ba4e7))
## @antv/x6-plugin-export [2.1.1](https://github.com/antvis/x6/compare/@antv/x6-plugin-export@2.1.0...@antv/x6-plugin-export@2.1.1) (2022-11-25)
# @antv/x6-plugin-export [2.1.0](https://github.com/antvis/x6/compare/@antv/x6-plugin-export@2.0.0...@antv/x6-plugin-export@2.1.0) (2022-11-24)
### BREAKING CHANGES
### Features
* dump to 2.0
* add exportSVG methods ([#2906](https://github.com/antvis/x6/issues/2906)) ([847f225](https://github.com/antvis/x6/commit/847f2256326db0589ac37f1e1fa185560b61bdb7))
* attach plugin api and events to grpah instance ([#2864](https://github.com/antvis/x6/issues/2864)) ([774f547](https://github.com/antvis/x6/commit/774f547b85522eb2411dca949d36ecfe535503f3))

@ -1,6 +1,6 @@
{
"name": "@antv/x6-plugin-export",
"version": "2.0.0",
"version": "2.1.5",
"description": "export plugin for X6.",
"main": "lib/index.js",
"module": "es/index.js",
@ -39,20 +39,20 @@
"@antv/x6": "^2.x"
},
"devDependencies": {
"@antv/x6": "^2.0.x"
"@antv/x6": "^2.x"
},
"author": {
"name": "bubkoo",
"email": "bubkoo.wy@gmail.com"
},
"license": "MIT",
"homepage": "https://github.com/antvis/x6",
"homepage": "https://x6.antv.antgroup.com/tutorial/plugins/export",
"bugs": {
"url": "https://github.com/antvis/x6/issues"
},
"repository": {
"type": "git",
"url": "ssh://git@github.com/antvis/x6.git",
"url": "https://github.com/antvis/x6.git",
"directory": "packages/x6-plugin-export"
},
"publishConfig": {

@ -0,0 +1,82 @@
import { Graph } from '@antv/x6'
import { Export } from './index'
declare module '@antv/x6/lib/graph/graph' {
interface Graph {
toSVG: (
callback: Export.ToSVGCallback,
options?: Export.ToSVGOptions,
) => void
toPNG: (
callback: Export.ToSVGCallback,
options?: Export.ToImageOptions,
) => void
toJPEG: (
callback: Export.ToSVGCallback,
options?: Export.ToImageOptions,
) => void
exportPNG: (fileName?: string, options?: Export.ToImageOptions) => void
exportJPEG: (fileName?: string, options?: Export.ToImageOptions) => void
exportSVG: (fileName?: string, options?: Export.ToSVGOptions) => void
}
}
Graph.prototype.toSVG = function (
callback: Export.ToSVGCallback,
options?: Export.ToSVGOptions,
) {
const instance = this.getPlugin('export') as Export
if (instance) {
instance.toSVG(callback, options)
}
}
Graph.prototype.toPNG = function (
callback: Export.ToSVGCallback,
options?: Export.ToImageOptions,
) {
const instance = this.getPlugin('export') as Export
if (instance) {
instance.toPNG(callback, options)
}
}
Graph.prototype.toJPEG = function (
callback: Export.ToSVGCallback,
options?: Export.ToImageOptions,
) {
const instance = this.getPlugin('export') as Export
if (instance) {
instance.toJPEG(callback, options)
}
}
Graph.prototype.exportPNG = function (
fileName?: string,
options?: Export.ToImageOptions,
) {
const instance = this.getPlugin('export') as Export
if (instance) {
instance.exportPNG(fileName, options)
}
}
Graph.prototype.exportJPEG = function (
fileName?: string,
options?: Export.ToImageOptions,
) {
const instance = this.getPlugin('export') as Export
if (instance) {
instance.exportJPEG(fileName, options)
}
}
Graph.prototype.exportSVG = function (
fileName?: string,
options?: Export.ToSVGOptions,
) {
const instance = this.getPlugin('export') as Export
if (instance) {
instance.exportSVG(fileName, options)
}
}

@ -10,6 +10,7 @@ import {
Dom,
Graph,
} from '@antv/x6'
import './api'
export class Export extends Basecoat<Export.EventArgs> {
private graph: Graph
@ -39,6 +40,12 @@ export class Export extends Basecoat<Export.EventArgs> {
}, options)
}
exportSVG(fileName = 'chart', options: Export.ToSVGOptions = {}) {
this.toSVG((svg: string) => {
DataUri.downloadDataUri(DataUri.svgToDataUrl(svg), fileName)
}, options)
}
toSVG(callback: Export.ToSVGCallback, options: Export.ToSVGOptions = {}) {
this.notify('before:export', options)

@ -1,11 +1,22 @@
# @antv/x6-plugin-history [2.0.0](https://github.com/antvis/x6/compare/@antv/x6-plugin-history@1.0.1...@antv/x6-plugin-history@2.0.0) (2022-11-05)
## @antv/x6-plugin-history [2.1.3](https://github.com/antvis/x6/compare/@antv/x6-plugin-history@2.1.2...@antv/x6-plugin-history@2.1.3) (2022-11-25)
### Documentation
### Bug Fixes
* refresh changelogs ([44f89a1](https://github.com/antvis/x6/commit/44f89a1e1a85513a9bf548be87be38e3cdc82574))
* npm version ([cb0cfde](https://github.com/antvis/x6/commit/cb0cfdeb4dbe8858569e6899db08ccb9ab8ba4e7))
## @antv/x6-plugin-history [2.1.2](https://github.com/antvis/x6/compare/@antv/x6-plugin-history@2.1.1...@antv/x6-plugin-history@2.1.2) (2022-11-25)
## @antv/x6-plugin-history [2.1.1](https://github.com/antvis/x6/compare/@antv/x6-plugin-history@2.1.0...@antv/x6-plugin-history@2.1.1) (2022-11-24)
### BREAKING CHANGES
### Bug Fixes
* dump to 2.0
* deep clone instead of shallow clone ([#2924](https://github.com/antvis/x6/issues/2924)) ([75f4297](https://github.com/antvis/x6/commit/75f42978cb0ed4c9e7c7ac141ffa29603cb27596))
# @antv/x6-plugin-history [2.1.0](https://github.com/antvis/x6/compare/@antv/x6-plugin-history@2.0.0...@antv/x6-plugin-history@2.1.0) (2022-11-24)
### Features
* attach plugin api and events to grpah instance ([#2864](https://github.com/antvis/x6/issues/2864)) ([774f547](https://github.com/antvis/x6/commit/774f547b85522eb2411dca949d36ecfe535503f3))

@ -1,6 +1,6 @@
{
"name": "@antv/x6-plugin-history",
"version": "2.0.0",
"version": "2.1.3",
"description": "history plugin for X6",
"main": "lib/index.js",
"module": "es/index.js",
@ -40,20 +40,20 @@
"@antv/x6": "^2.x"
},
"devDependencies": {
"@antv/x6": "^2.0.x"
"@antv/x6": "^2.x"
},
"author": {
"name": "bubkoo",
"email": "bubkoo.wy@gmail.com"
},
"license": "MIT",
"homepage": "https://github.com/antvis/x6",
"homepage": "https://x6.antv.antgroup.com/tutorial/plugins/history",
"bugs": {
"url": "https://github.com/antvis/x6/issues"
},
"repository": {
"type": "git",
"url": "ssh://git@github.com/antvis/x6.git",
"url": "https://github.com/antvis/x6.git",
"directory": "packages/x6-plugin-history"
},
"publishConfig": {

@ -0,0 +1,109 @@
import { Graph, KeyValue } from '@antv/x6'
import { History } from './index'
declare module '@antv/x6/lib/graph/graph' {
interface Graph {
isHistoryEnabled: () => boolean
enableHistory: () => Graph
disableHistory: () => Graph
toggleHistory: (enabled?: boolean) => Graph
undo: (options?: KeyValue) => Graph
redo: (options?: KeyValue) => Graph
undoAndCancel: (options?: KeyValue) => Graph
canUndo: () => boolean
canRedo: () => boolean
cleanHistory: (options?: KeyValue) => Graph
}
}
declare module '@antv/x6/lib/graph/events' {
interface EventArgs {
'history:undo': History.Args
'history:redo': History.Args
'history:cancel': History.Args
'history:add': History.Args
'history:clean': History.Args<null>
'history:change': History.Args<null>
'history:batch': { cmd: History.Command; options: KeyValue }
}
}
Graph.prototype.isHistoryEnabled = function () {
const history = this.getPlugin('history') as History
if (history) {
return history.isEnabled()
}
return false
}
Graph.prototype.enableHistory = function () {
const history = this.getPlugin('history') as History
if (history) {
history.enable()
}
return this
}
Graph.prototype.disableHistory = function () {
const history = this.getPlugin('history') as History
if (history) {
history.disable()
}
return this
}
Graph.prototype.toggleHistory = function (enabled?: boolean) {
const history = this.getPlugin('history') as History
if (history) {
history.toggleEnabled(enabled)
}
return this
}
Graph.prototype.undo = function (options?: KeyValue) {
const history = this.getPlugin('history') as History
if (history) {
history.undo(options)
}
return this
}
Graph.prototype.redo = function (options?: KeyValue) {
const history = this.getPlugin('history') as History
if (history) {
history.redo(options)
}
return this
}
Graph.prototype.undoAndCancel = function (options?: KeyValue) {
const history = this.getPlugin('history') as History
if (history) {
history.cancel(options)
}
return this
}
Graph.prototype.canUndo = function () {
const history = this.getPlugin('history') as History
if (history) {
return history.canUndo()
}
return false
}
Graph.prototype.canRedo = function () {
const history = this.getPlugin('history') as History
if (history) {
return history.canRedo()
}
return false
}
Graph.prototype.cleanHistory = function (options?: KeyValue) {
const history = this.getPlugin('history') as History
if (history) {
history.clean(options)
}
return this
}

@ -8,6 +8,7 @@ import {
Model,
Graph,
} from '@antv/x6'
import './api'
export class History
extends Basecoat<History.EventArgs>
@ -365,7 +366,7 @@ export class History
if (data.prev == null) {
data.prev = {}
}
data.prev[key] = ObjectExt.clone(cell.previous(key))
data.prev[key] = ObjectExt.cloneDeep(cell.previous(key))
if (isModelChange) {
cmd.modelChange = true
@ -377,7 +378,7 @@ export class History
if (data.next == null) {
data.next = {}
}
data.next[key] = ObjectExt.clone(cell.prop(key))
data.next[key] = ObjectExt.cloneDeep(cell.prop(key))
return this.push(cmd, options)
}
@ -643,7 +644,7 @@ export namespace History {
}
export namespace History {
interface Args<T = never> {
export interface Args<T = never> {
cmds: Command[] | T
options: KeyValue
}

@ -1,11 +1,29 @@
# @antv/x6-plugin-keyboard [2.0.0](https://github.com/antvis/x6/compare/@antv/x6-plugin-keyboard@1.0.1...@antv/x6-plugin-keyboard@2.0.0) (2022-11-05)
## @antv/x6-plugin-keyboard [2.1.4](https://github.com/antvis/x6/compare/@antv/x6-plugin-keyboard@2.1.3...@antv/x6-plugin-keyboard@2.1.4) (2022-11-29)
### Documentation
### Bug Fixes
* refresh changelogs ([44f89a1](https://github.com/antvis/x6/commit/44f89a1e1a85513a9bf548be87be38e3cdc82574))
* not trigger keyboard event whith delete key in contenteditable elem ([#2965](https://github.com/antvis/x6/issues/2965)) ([4978110](https://github.com/antvis/x6/commit/4978110b4594aee801d39c74f5c190432846eba4))
## @antv/x6-plugin-keyboard [2.1.3](https://github.com/antvis/x6/compare/@antv/x6-plugin-keyboard@2.1.2...@antv/x6-plugin-keyboard@2.1.3) (2022-11-25)
### BREAKING CHANGES
### Bug Fixes
* dump to 2.0
* npm version ([cb0cfde](https://github.com/antvis/x6/commit/cb0cfdeb4dbe8858569e6899db08ccb9ab8ba4e7))
## @antv/x6-plugin-keyboard [2.1.2](https://github.com/antvis/x6/compare/@antv/x6-plugin-keyboard@2.1.1...@antv/x6-plugin-keyboard@2.1.2) (2022-11-25)
## @antv/x6-plugin-keyboard [2.1.1](https://github.com/antvis/x6/compare/@antv/x6-plugin-keyboard@2.1.0...@antv/x6-plugin-keyboard@2.1.1) (2022-11-25)
### Performance Improvements
* update deps ([f20127a](https://github.com/antvis/x6/commit/f20127af555d9b7beaac3a07ac308d5c0d4e53a3))
# @antv/x6-plugin-keyboard [2.1.0](https://github.com/antvis/x6/compare/@antv/x6-plugin-keyboard@2.0.0...@antv/x6-plugin-keyboard@2.1.0) (2022-11-24)
### Features
* attach plugin api and events to grpah instance ([#2864](https://github.com/antvis/x6/issues/2864)) ([774f547](https://github.com/antvis/x6/commit/774f547b85522eb2411dca949d36ecfe535503f3))

@ -1,6 +1,6 @@
{
"name": "@antv/x6-plugin-keyboard",
"version": "2.0.0",
"version": "2.1.4",
"description": "keyboard plugin for X6",
"main": "lib/index.js",
"module": "es/index.js",
@ -43,21 +43,21 @@
"@antv/x6": "^2.x"
},
"devDependencies": {
"@antv/x6": "^2.0.x",
"@types/mousetrap": "^1.6.5"
"@antv/x6": "^2.x",
"@types/mousetrap": "^1.6.11"
},
"author": {
"name": "bubkoo",
"email": "bubkoo.wy@gmail.com"
},
"license": "MIT",
"homepage": "https://github.com/antvis/x6",
"homepage": "https://x6.antv.antgroup.com/tutorial/plugins/keyboard",
"bugs": {
"url": "https://github.com/antvis/x6/issues"
},
"repository": {
"type": "git",
"url": "ssh://git@github.com/antvis/x6.git",
"url": "https://github.com/antvis/x6.git",
"directory": "packages/x6-plugin-keyboard"
},
"publishConfig": {

@ -0,0 +1,73 @@
import { Graph } from '@antv/x6'
import { Keyboard } from './index'
import { KeyboardImpl } from './keyboard'
declare module '@antv/x6/lib/graph/graph' {
interface Graph {
isKeyboardEnabled: () => boolean
enableKeyboard: () => Graph
disableKeyboard: () => Graph
toggleKeyboard: (enabled?: boolean) => Graph
bindKey: (
keys: string | string[],
callback: KeyboardImpl.Handler,
action?: KeyboardImpl.Action,
) => Graph
unbindKey: (keys: string | string[], action?: KeyboardImpl.Action) => Graph
}
}
Graph.prototype.isKeyboardEnabled = function () {
const keyboard = this.getPlugin('keyboard') as Keyboard
if (keyboard) {
return keyboard.isEnabled()
}
return false
}
Graph.prototype.enableKeyboard = function () {
const keyboard = this.getPlugin('keyboard') as Keyboard
if (keyboard) {
keyboard.enable()
}
return this
}
Graph.prototype.disableKeyboard = function () {
const keyboard = this.getPlugin('keyboard') as Keyboard
if (keyboard) {
keyboard.disable()
}
return this
}
Graph.prototype.toggleKeyboard = function (enabled?: boolean) {
const keyboard = this.getPlugin('keyboard') as Keyboard
if (keyboard) {
keyboard.toggleEnabled(enabled)
}
return this
}
Graph.prototype.bindKey = function (
keys: string | string[],
callback: KeyboardImpl.Handler,
action?: KeyboardImpl.Action,
) {
const keyboard = this.getPlugin('keyboard') as Keyboard
if (keyboard) {
keyboard.bindKey(keys, callback, action)
}
return this
}
Graph.prototype.unbindKey = function (
keys: string | string[],
action?: KeyboardImpl.Action,
) {
const keyboard = this.getPlugin('keyboard') as Keyboard
if (keyboard) {
keyboard.unbindKey(keys, action)
}
return this
}

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