diff --git a/.github/comment-template.md b/.github/comment-template.md
new file mode 100644
index 00000000..93bb16ea
--- /dev/null
+++ b/.github/comment-template.md
@@ -0,0 +1,20 @@
+## Coverage Report
+
+Commit: [{{short_commit_sha}}]({{commit_link}})
+Base: [{{base_ref}}@{{base_short_commit_sha}}]({{base_commit_link}})
+
+| Type | Base | This PR |
+|---------------------------|--------------------------------------------|------------------------------------------------------------------------------------|
+| Total Statements Coverage | {{base_total_statements_coverage_percent}} | {{total_statements_coverage_percent}} ({{total_statements_coverage_percent_diff}}) |
+| Total Branches Coverage | {{base_total_branches_coverage_percent}} | {{total_branches_coverage_percent}} ({{total_branches_coverage_percent_diff}}) |
+| Total Functions Coverage | {{base_total_functions_coverage_percent}} | {{total_functions_coverage_percent}} ({{total_functions_coverage_percent_diff}}) |
+| Total Lines Coverage | {{base_total_lines_coverage_percent}} | {{total_lines_coverage_percent}} ({{total_lines_coverage_percent_diff}}) |
+
+
+Details (changed files)
+{{changed_files_coverage_table}}
+
+
+Details (all files)
+{{files_coverage_table}}
+
\ No newline at end of file
diff --git a/.github/workflows/onpullrequest.yml b/.github/workflows/onpullrequest.yml
new file mode 100644
index 00000000..deb948de
--- /dev/null
+++ b/.github/workflows/onpullrequest.yml
@@ -0,0 +1,32 @@
+name: Node CI
+
+on: [pull_request]
+
+jobs:
+ build:
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v3
+ - name: Use Node.js
+ uses: actions/setup-node@v3
+ with:
+ node-version: 16.x
+ - name: npm install, test and lint
+ run: |
+ npm ci
+ npm run build --workspace=packages/svgcanvas
+ npm run lint
+ npm run test
+ env:
+ CI: true
+ - name: Report NYC coverage
+ uses: sidx1024/report-nyc-coverage-github-action@v1.2.6
+ with:
+ # Path to coverage file generated by "nyc report".
+ coverage_file: "coverage/coverage-summary.json"
+ base_coverage_file: "coverage/coverage-summary.json"
+ comment_template_file: ".github/comment-template.md"
+
+
diff --git a/.github/workflows/onpush.yml b/.github/workflows/onpush.yml
new file mode 100644
index 00000000..1fb821ac
--- /dev/null
+++ b/.github/workflows/onpush.yml
@@ -0,0 +1,24 @@
+name: Node CI
+
+on: [push]
+
+jobs:
+ build:
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v3
+ - name: Use Node.js
+ uses: actions/setup-node@v3
+ with:
+ node-version: 16.x
+ - name: npm install, test and lint
+ run: |
+ npm ci
+ npm run build --workspace=packages/svgcanvas
+ npm run lint
+ npm run test
+ env:
+ CI: true
+
diff --git a/.github/workflows/onpushandpullrequest.yml b/.github/workflows/onpushandpullrequest.yml
deleted file mode 100644
index dd41e20c..00000000
--- a/.github/workflows/onpushandpullrequest.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-name: Node CI
-
-on: [push, pull_request]
-
-jobs:
- build:
-
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v2
- - name: Use Node.js
- uses: actions/setup-node@v2
- with:
- node-version: 14.x
- - name: npm install, test and lint
- run: |
- npm ci
- npm run lint
- npm run test
\ No newline at end of file
diff --git a/CHANGES.md b/CHANGES.md
index 78c815e4..c16351d2 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,4 +1,10 @@
# SVG-Edit CHANGES
+
+## 7.2.0
+- introduce the notion of workspace
+- separate svgcanvas into a package
+
+**Warning: This version will break applications using svgcanvas directly. You need to change your import to "@svgedit/svgcanvas"**
## 7.1.4
- Implement horizontal or vertical distribution alignment (mulder3062)
- fix several bugs and update to latest dependencies
diff --git a/LICENSE-MIT.txt b/LICENSE-MIT.txt
index 4f78db60..c74d2535 100644
--- a/LICENSE-MIT.txt
+++ b/LICENSE-MIT.txt
@@ -1,4 +1,4 @@
-Copyright (c) 2009-2018 by SVG-edit authors (see AUTHORS file)
+Copyright (c) 2009-2022 by SVG-edit authors (see AUTHORS file)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/README.md b/README.md
index 4f212661..97b7baf5 100644
--- a/README.md
+++ b/README.md
@@ -8,60 +8,120 @@
[![Total Alerts](https://img.shields.io/lgtm/alerts/g/SVG-Edit/svgedit.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/SVG-Edit/svgedit/alerts)
[![Code Quality: Javascript](https://img.shields.io/lgtm/grade/javascript/g/SVG-Edit/svgedit.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/SVG-Edit/svgedit/context:javascript)
-SVG-edit is a fast, web-based, JavaScript-driven SVG drawing editor that
-works in any modern browser.
+**SVGEdit** is a fast, web-based, JavaScript-driven SVG drawing editor that
+works in any modern browser. **SVGEdit** is based on a powerful SVG canvas **@svgedit/svgcanvas**
![screenshot](docs/screenshot.png)
[](https://upload.wikimedia.org/wikipedia/commons/f/fd/Ghostscript_Tiger.svg)
## Contributions
-SVGEdit is the most popular open source SVG editor. It was started more than 10 years ago by a fantastic team of developers. Unfortunately, the product was not maintained for a quite long period. We decided to give this tool a new life by refreshing many aspects.
+SVGEdit is the most popular open source SVG editor. It was started more than 13 years ago by a fantastic team of developers. Unfortunately, the product was not maintained for a quite long period. We decided to give this tool a new life by refreshing many aspects.
+
Please let us know with an issue or a discussions if you wish to contribute.
-## Demo
-Thanks to **Netlify**, you can test the following builds:
+## I want to use SVGEDit
-### [Try SVGEdit V7 (latest build)](https://svgedit.netlify.app/editor/index.html)
+Thanks to **Netlify**, you can access the following builds from your favorite browser:
-[Try SVGEdit V7 (latest published version)](https://unpkg.com/svgedit@latest/dist/editor/index.html)
+[Try SVGEdit V7 (master branch on github)](https://svgedit.netlify.app/editor/index.html)
-## Prior V7:
+[Try SVGEdit V7 (latest published version on npm)](https://unpkg.com/svgedit@latest/dist/editor/index.html)
+
+### Prior V7:
+
+We recommand using the V7 version but for older browsers or some abandoned features, you may need to access to old versions of SVGEdit.
[Try SVGEdit 6.1.0 here](https://60a0000fc9900b0008fd268d--svgedit.netlify.app/editor/index.html)
-
[Try SVGEdit 5.1.0 here](https://unpkg.com/svgedit@5.1.0/editor/svg-editor.html)
Additional tip: you may try a version released on NPM using unpkg for example with version 3.2.0:
[https://unpkg.com/svgedit@3.2.0/editor/svg-editor.html](https://unpkg.com/svgedit@3.2.0/editor/svg-editor.html)
-## Installation
+## I want to use SVGEdit in my environment
-### Quick install
+If you want to run a local version of SVGEdit, please follow these instructions:
-1. Clone or copy the repository contents
+1. Clone or copy the repository contents from github
1. run `npm i` to install dependencies
1. run `npm run start` to start a local server
1. Use your browser to access `http://localhost:8000/src/editor/index.html`
-### Integrating SVGEdit into your own application
+## I want to contribute to SVGEdit
+
+Thanks!
+
+SVG-Edit is made of two major components:
+
+1. The "svgcanvas" that takes care of the underlying svg edition. It can be used to build your own editor.
+1. The "editor" that takes care of the editor UI (menus, buttons, etc.)
+
+You should fork SVGEdit in your github environment and install locally SVGEdit as explained above.
+Before you submit your PR, please make sure you run locally:
+
+1. `npm run lint` to check that you follow the standardjs rules (https://standardjs.com/rules) for the linter
+1. `npm run test` to run a suite of Cypress tests (https://www.cypress.io/).
+
+If you intend to contribute on a regular basis, let us know so we can add you in the maintainer team.
+
+## I want to integrate SVGEdit into my own Web application
V7 is changing significantly the way to integrate and customize SVG-Edit. You can have a look to index.html to see how you can insert a div element into your HTML code and inject the editor into the div.
-SVG-Edit is made of two major components:
-1. The "svgcanvas" that takes care of the underlying svg edition. It can be used to build your own editor. See example in the demos folder or the svg-edit-react repository.
-1. The "editor" that takes care of the editor UI (menus, buttons, etc.)
+```
+