From 43bf93968ae73413d6536f033c3ba29f3fe19ee1 Mon Sep 17 00:00:00 2001
From: JFH <20402845+jfhenon@users.noreply.github.com>
Date: Sun, 14 Aug 2022 15:01:51 +0200
Subject: [PATCH] separate svgcanvas from svgedit
now you can use directlt svgcanvas. see readme.md
* configure workspaces
* move svgcanvas to packages folder
* move utils to common and paint to svgcanvas
* make svgcanvas a dependency of svgedit
* update deps
* workspaces requires npm 7 at least so the ci needs a new node version
* update github actions to V3
* update snapshots using custom svg exports
* remove unmaintained cypress snapshot plugin
* new github action to add coverage in PR
* Update onpushandpullrequest.yml
* svgcanvas v7.1.6
---
.github/comment-template.md | 20 +
.github/workflows/onpullrequest.yml | 32 +
.github/workflows/onpush.yml | 24 +
.github/workflows/onpushandpullrequest.yml | 20 -
CHANGES.md | 6 +
LICENSE-MIT.txt | 2 +-
README.md | 113 +-
archive/gh-disabled-workflows/coverage.yml | 16 -
archive/gh-disabled-workflows/nodejs.yml | 26 -
babel.config.json | 2 +-
composer.json | 2 +-
cypress.config.js | 6 -
.../scenario-check tool_bold.svg | 7 +
.../scenario-check tool_clone.svg | 7 +
.../scenario-check tool_italic.svg | 7 +
.../scenario-check tool_length_adjust.svg | 7 +
.../scenario-check tool_letter_spacing.svg | 7 +
.../scenario-check tool_source.svg | 5 +
.../scenario-check tool_text.svg | 6 +
...scenario-check tool_text_align_to_page.svg | 12 +
.../scenario-check tool_text_change_blur.svg | 12 +
...rio-check tool_text_change_font_family.svg | 7 +
...nario-check tool_text_change_font_size.svg | 7 +
...cenario-check tool_text_change_opacity.svg | 12 +
...heck tool_text_change_stoke_fill_color.svg | 7 +
...io-check tool_text_change_stroke_width.svg | 7 +
...-check tool_text_change_x_y_coordinate.svg | 7 +
...check tool_text_decoration_linethrough.svg | 7 +
...io-check tool_text_decoration_overline.svg | 7 +
...o-check tool_text_decoration_underline.svg | 7 +
.../scenario-check tool_text_delete.svg | 7 +
.../scenario-check tool_text_length.svg | 7 +
.../scenario-check tool_word_spacing.svg | 7 +
.../scenario1-check tool_image.svg | 7 +
.../scenario1-check tool_shape.svg | 6 +
.../scenario1-check tool_source_set.svg | 5 +
.../scenario2-check tool_circle.svg | 6 +
...o2-check tool_circle_change_fill_color.svg | 8 +
...ario2-check tool_circle_change_opacity.svg | 8 +
.../scenario2-check tool_ellipse.svg | 8 +
...ario2-check tool_ellipse_bring_to_back.svg | 13 +
...rio2-check tool_ellipse_bring_to_front.svg | 13 +
...enario2-check tool_ellipse_change_blur.svg | 13 +
...k tool_ellipse_change_cx_cy_coordinate.svg | 13 +
...io2-check tool_ellipse_change_rotation.svg | 8 +
...check tool_ellipse_change_rx_ry_radius.svg | 13 +
.../scenario2-check tool_ellipse_clone.svg | 14 +
.../scenario2-check tool_fhellipse.svg | 7 +
.../scenario2-check tool_source_set.svg | 5 +
.../scenario3-check tool_path.svg | 6 +
...rio3-check tool_path_change_clone_node.svg | 6 +
...enario3-check tool_path_change_node_xy.svg | 6 +
...nario3-check tool_path_change_seg_type.svg | 6 +
.../scenario3-check tool_path_openclose.svg | 6 +
.../scenario3-check tool_source_set.svg | 5 +
.../scenario4-check tool_fhrect.svg | 7 +
...-check tool_fhrect_change_width_height.svg | 13 +
...heck tool_fhrect_change_x_y_coordinate.svg | 13 +
.../scenario4-check tool_rect.svg | 6 +
.../scenario4-check tool_rect_change_blur.svg | 13 +
...rio4-check tool_rect_change_fill_color.svg | 8 +
...enario4-check tool_rect_change_opacity.svg | 13 +
...nario4-check tool_rect_change_rotation.svg | 8 +
...enario4-check tool_rect_change_to_path.svg | 14 +
.../scenario4-check tool_rect_delete.svg | 8 +
.../scenario4-check tool_source_set.svg | 5 +
.../scenario4-check tool_square.svg | 8 +
...nario4-check tool_square_bring_to_back.svg | 14 +
...ario4-check tool_square_bring_to_front.svg | 14 +
...check tool_square_change_corner_radius.svg | 14 +
.../scenario4-check tool_square_clone.svg | 14 +
.../scenario5-check tool_line.svg | 6 +
...cenario5-check tool_line_align_to_page.svg | 10 +
...cenario5-check tool_line_bring_to_back.svg | 10 +
...enario5-check tool_line_bring_to_front.svg | 10 +
.../scenario5-check tool_line_change_blur.svg | 11 +
...enario5-check tool_line_change_opacity.svg | 11 +
...nario5-check tool_line_change_rotation.svg | 6 +
...io5-check tool_line_change_stoke_color.svg | 10 +
...o5-check tool_line_change_stroke_width.svg | 10 +
...-check tool_line_change_x_y_coordinate.svg | 10 +
.../scenario5-check tool_line_clone.svg | 10 +
.../scenario5-check tool_line_delete.svg | 6 +
.../scenario5-check tool_source_set.svg | 5 +
.../scenario6-check tool_polygon.svg | 6 +
...ario6-check tool_polygon_align_to_page.svg | 7 +
...ario6-check tool_polygon_bring_to_back.svg | 12 +
...rio6-check tool_polygon_bring_to_front.svg | 12 +
...enario6-check tool_polygon_change_blur.svg | 12 +
...rio6-check tool_polygon_change_opacity.svg | 12 +
...io6-check tool_polygon_change_rotation.svg | 7 +
...nario6-check tool_polygon_change_sides.svg | 7 +
...k tool_polygon_change_stoke_fill_color.svg | 7 +
...check tool_polygon_change_stroke_width.svg | 7 +
.../scenario6-check tool_polygon_clone.svg | 7 +
.../scenario6-check tool_polygon_delete.svg | 7 +
.../scenario6-check tool_source_set.svg | 5 +
.../scenario7-check tool_source_set.svg | 5 +
.../scenario7-check tool_star.svg | 6 +
...cenario7-check tool_star_align_to_page.svg | 7 +
...cenario7-check tool_star_bring_to_back.svg | 12 +
...enario7-check tool_star_bring_to_front.svg | 12 +
.../scenario7-check tool_star_change_blur.svg | 12 +
...enario7-check tool_star_change_opacity.svg | 12 +
...nario7-check tool_star_change_rotation.svg | 7 +
...scenario7-check tool_star_change_sides.svg | 7 +
...heck tool_star_change_stoke_fill_color.svg | 7 +
...o7-check tool_star_change_stroke_width.svg | 7 +
.../scenario7-check tool_star_clone.svg | 7 +
.../scenario7-check tool_star_delete.svg | 7 +
.../e2e/ui/__snapshots__/scenario.cy.js.snap | 802 -
cypress/e2e/ui/__snapshots__/scenario.js.snap | 802 -
.../e2e/ui/__snapshots__/scenario1.cy.js.snap | 76 -
.../e2e/ui/__snapshots__/scenario1.js.snap | 76 -
.../e2e/ui/__snapshots__/scenario2.cy.js.snap | 573 -
.../e2e/ui/__snapshots__/scenario2.js.snap | 573 -
.../e2e/ui/__snapshots__/scenario3.cy.js.snap | 128 -
.../e2e/ui/__snapshots__/scenario3.js.snap | 128 -
.../e2e/ui/__snapshots__/scenario4.cy.js.snap | 771 -
.../e2e/ui/__snapshots__/scenario4.js.snap | 771 -
.../e2e/ui/__snapshots__/scenario5.cy.js.snap | 489 -
.../e2e/ui/__snapshots__/scenario5.js.snap | 489 -
.../e2e/ui/__snapshots__/scenario6.cy.js.snap | 473 -
.../e2e/ui/__snapshots__/scenario6.js.snap | 473 -
.../e2e/ui/__snapshots__/scenario7.cy.js.snap | 527 -
.../e2e/ui/__snapshots__/scenario7.js.snap | 527 -
cypress/e2e/ui/clipboard.cy.js | 12 +-
cypress/e2e/ui/control-points.cy.js | 2 +-
cypress/e2e/ui/issues/issue-359.cy.js | 8 +-
cypress/e2e/ui/issues/issue-407.cy.js | 20 +-
cypress/e2e/ui/issues/issue-408.cy.js | 8 +-
cypress/e2e/ui/issues/issue-423.cy.js | 2 +-
cypress/e2e/ui/issues/issue-660.cy.js | 2 +-
cypress/e2e/ui/scenario.cy.js | 81 +-
cypress/e2e/ui/scenario1.cy.js | 37 +-
cypress/e2e/ui/scenario2.cy.js | 30 +-
cypress/e2e/ui/scenario3.cy.js | 18 +-
cypress/e2e/ui/scenario4.cy.js | 36 +-
cypress/e2e/ui/scenario5.cy.js | 30 +-
cypress/e2e/ui/scenario6.cy.js | 32 +-
cypress/e2e/ui/scenario7.cy.js | 30 +-
cypress/e2e/unit/draw.cy.js | 2 +-
cypress/e2e/unit/path.cy.js | 2 +-
cypress/e2e/unit/units.cy.js | 2 +-
cypress/plugins/main.js | 15 +-
cypress/replace-in-file.config.js | 7 +
cypress/support/commands.js | 19 +
cypress/support/e2e.js | 19 -
cypress/support/ui-test-helper.js | 15 +-
docs/Acknowledgements.md | 7 -
docs/Linting.md | 18 -
nyc.config.js | 5 +-
package-lock.json | 16583 ++++------------
package.json | 57 +-
{src => packages}/svgcanvas/blur-event.js | 0
{src => packages}/svgcanvas/clear.js | 0
{src => packages}/svgcanvas/coords.js | 0
{src => packages}/svgcanvas/copy-elem.js | 0
{src => packages}/svgcanvas/dataStorage.js | 0
.../svgcanvas/demos}/canvas.html | 6 +-
{src => packages}/svgcanvas/draw.js | 2 +-
{src => packages}/svgcanvas/elem-get-set.js | 10 +-
{src => packages}/svgcanvas/event.js | 4 +-
{src => packages}/svgcanvas/history.js | 0
.../svgcanvas/historyrecording.js | 0
{src => packages}/svgcanvas/json.js | 0
{src => packages}/svgcanvas/layer.js | 0
{src => packages}/svgcanvas/math.js | 0
{src => packages}/svgcanvas/namespaces.js | 0
packages/svgcanvas/package-lock.json | 13 +
packages/svgcanvas/package.json | 56 +
.../jgraduate => packages/svgcanvas}/paint.js | 0
{src => packages}/svgcanvas/paste-elem.js | 0
{src => packages}/svgcanvas/path-actions.js | 2 +-
{src => packages}/svgcanvas/path-method.js | 0
{src => packages}/svgcanvas/path.js | 2 +-
{src => packages}/svgcanvas/recalculate.js | 4 +-
packages/svgcanvas/rollup.config.js | 38 +
{src => packages}/svgcanvas/sanitize.js | 0
{src => packages}/svgcanvas/select.js | 2 +-
{src => packages}/svgcanvas/selected-elem.js | 4 +-
{src => packages}/svgcanvas/selection.js | 2 +-
{src => packages}/svgcanvas/svg-exec.js | 6 +-
{src => packages}/svgcanvas/svgcanvas.js | 12 +-
{src => packages}/svgcanvas/svgroot.js | 0
{src => packages}/svgcanvas/text-actions.js | 2 +-
{src => packages}/svgcanvas/touch.js | 0
{src => packages}/svgcanvas/undo.js | 2 +-
{src/common => packages/svgcanvas}/units.js | 0
{src => packages}/svgcanvas/utilities.js | 4 +-
.../jgraduate/Util.js => common/util.js} | 0
src/editor/ConfigObj.js | 2 +-
src/editor/Editor.js | 4 +-
src/editor/EditorStartup.js | 5 +-
src/editor/MainMenu.js | 5 +-
src/editor/Rulers.js | 7 +-
src/editor/components/jgraduate/Slider.js | 2 +-
.../components/jgraduate/jQuery.jGraduate.js | 6 +-
.../components/jgraduate/jQuery.jPicker.js | 2 +-
src/editor/dialogs/imagePropertiesDialog.js | 4 +-
src/editor/panels/BottomPanel.js | 2 +-
src/editor/panels/LayersPanel.js | 2 +-
src/editor/panels/LeftPanel.js | 2 +-
src/editor/panels/TopPanel.js | 5 +-
204 files changed, 5206 insertions(+), 20903 deletions(-)
create mode 100644 .github/comment-template.md
create mode 100644 .github/workflows/onpullrequest.yml
create mode 100644 .github/workflows/onpush.yml
delete mode 100644 .github/workflows/onpushandpullrequest.yml
delete mode 100644 archive/gh-disabled-workflows/coverage.yml
delete mode 100644 archive/gh-disabled-workflows/nodejs.yml
create mode 100644 cypress/__svgSnapshots__/scenario-check tool_bold.svg
create mode 100644 cypress/__svgSnapshots__/scenario-check tool_clone.svg
create mode 100644 cypress/__svgSnapshots__/scenario-check tool_italic.svg
create mode 100644 cypress/__svgSnapshots__/scenario-check tool_length_adjust.svg
create mode 100644 cypress/__svgSnapshots__/scenario-check tool_letter_spacing.svg
create mode 100644 cypress/__svgSnapshots__/scenario-check tool_source.svg
create mode 100644 cypress/__svgSnapshots__/scenario-check tool_text.svg
create mode 100644 cypress/__svgSnapshots__/scenario-check tool_text_align_to_page.svg
create mode 100644 cypress/__svgSnapshots__/scenario-check tool_text_change_blur.svg
create mode 100644 cypress/__svgSnapshots__/scenario-check tool_text_change_font_family.svg
create mode 100644 cypress/__svgSnapshots__/scenario-check tool_text_change_font_size.svg
create mode 100644 cypress/__svgSnapshots__/scenario-check tool_text_change_opacity.svg
create mode 100644 cypress/__svgSnapshots__/scenario-check tool_text_change_stoke_fill_color.svg
create mode 100644 cypress/__svgSnapshots__/scenario-check tool_text_change_stroke_width.svg
create mode 100644 cypress/__svgSnapshots__/scenario-check tool_text_change_x_y_coordinate.svg
create mode 100644 cypress/__svgSnapshots__/scenario-check tool_text_decoration_linethrough.svg
create mode 100644 cypress/__svgSnapshots__/scenario-check tool_text_decoration_overline.svg
create mode 100644 cypress/__svgSnapshots__/scenario-check tool_text_decoration_underline.svg
create mode 100644 cypress/__svgSnapshots__/scenario-check tool_text_delete.svg
create mode 100644 cypress/__svgSnapshots__/scenario-check tool_text_length.svg
create mode 100644 cypress/__svgSnapshots__/scenario-check tool_word_spacing.svg
create mode 100644 cypress/__svgSnapshots__/scenario1-check tool_image.svg
create mode 100644 cypress/__svgSnapshots__/scenario1-check tool_shape.svg
create mode 100644 cypress/__svgSnapshots__/scenario1-check tool_source_set.svg
create mode 100644 cypress/__svgSnapshots__/scenario2-check tool_circle.svg
create mode 100644 cypress/__svgSnapshots__/scenario2-check tool_circle_change_fill_color.svg
create mode 100644 cypress/__svgSnapshots__/scenario2-check tool_circle_change_opacity.svg
create mode 100644 cypress/__svgSnapshots__/scenario2-check tool_ellipse.svg
create mode 100644 cypress/__svgSnapshots__/scenario2-check tool_ellipse_bring_to_back.svg
create mode 100644 cypress/__svgSnapshots__/scenario2-check tool_ellipse_bring_to_front.svg
create mode 100644 cypress/__svgSnapshots__/scenario2-check tool_ellipse_change_blur.svg
create mode 100644 cypress/__svgSnapshots__/scenario2-check tool_ellipse_change_cx_cy_coordinate.svg
create mode 100644 cypress/__svgSnapshots__/scenario2-check tool_ellipse_change_rotation.svg
create mode 100644 cypress/__svgSnapshots__/scenario2-check tool_ellipse_change_rx_ry_radius.svg
create mode 100644 cypress/__svgSnapshots__/scenario2-check tool_ellipse_clone.svg
create mode 100644 cypress/__svgSnapshots__/scenario2-check tool_fhellipse.svg
create mode 100644 cypress/__svgSnapshots__/scenario2-check tool_source_set.svg
create mode 100644 cypress/__svgSnapshots__/scenario3-check tool_path.svg
create mode 100644 cypress/__svgSnapshots__/scenario3-check tool_path_change_clone_node.svg
create mode 100644 cypress/__svgSnapshots__/scenario3-check tool_path_change_node_xy.svg
create mode 100644 cypress/__svgSnapshots__/scenario3-check tool_path_change_seg_type.svg
create mode 100644 cypress/__svgSnapshots__/scenario3-check tool_path_openclose.svg
create mode 100644 cypress/__svgSnapshots__/scenario3-check tool_source_set.svg
create mode 100644 cypress/__svgSnapshots__/scenario4-check tool_fhrect.svg
create mode 100644 cypress/__svgSnapshots__/scenario4-check tool_fhrect_change_width_height.svg
create mode 100644 cypress/__svgSnapshots__/scenario4-check tool_fhrect_change_x_y_coordinate.svg
create mode 100644 cypress/__svgSnapshots__/scenario4-check tool_rect.svg
create mode 100644 cypress/__svgSnapshots__/scenario4-check tool_rect_change_blur.svg
create mode 100644 cypress/__svgSnapshots__/scenario4-check tool_rect_change_fill_color.svg
create mode 100644 cypress/__svgSnapshots__/scenario4-check tool_rect_change_opacity.svg
create mode 100644 cypress/__svgSnapshots__/scenario4-check tool_rect_change_rotation.svg
create mode 100644 cypress/__svgSnapshots__/scenario4-check tool_rect_change_to_path.svg
create mode 100644 cypress/__svgSnapshots__/scenario4-check tool_rect_delete.svg
create mode 100644 cypress/__svgSnapshots__/scenario4-check tool_source_set.svg
create mode 100644 cypress/__svgSnapshots__/scenario4-check tool_square.svg
create mode 100644 cypress/__svgSnapshots__/scenario4-check tool_square_bring_to_back.svg
create mode 100644 cypress/__svgSnapshots__/scenario4-check tool_square_bring_to_front.svg
create mode 100644 cypress/__svgSnapshots__/scenario4-check tool_square_change_corner_radius.svg
create mode 100644 cypress/__svgSnapshots__/scenario4-check tool_square_clone.svg
create mode 100644 cypress/__svgSnapshots__/scenario5-check tool_line.svg
create mode 100644 cypress/__svgSnapshots__/scenario5-check tool_line_align_to_page.svg
create mode 100644 cypress/__svgSnapshots__/scenario5-check tool_line_bring_to_back.svg
create mode 100644 cypress/__svgSnapshots__/scenario5-check tool_line_bring_to_front.svg
create mode 100644 cypress/__svgSnapshots__/scenario5-check tool_line_change_blur.svg
create mode 100644 cypress/__svgSnapshots__/scenario5-check tool_line_change_opacity.svg
create mode 100644 cypress/__svgSnapshots__/scenario5-check tool_line_change_rotation.svg
create mode 100644 cypress/__svgSnapshots__/scenario5-check tool_line_change_stoke_color.svg
create mode 100644 cypress/__svgSnapshots__/scenario5-check tool_line_change_stroke_width.svg
create mode 100644 cypress/__svgSnapshots__/scenario5-check tool_line_change_x_y_coordinate.svg
create mode 100644 cypress/__svgSnapshots__/scenario5-check tool_line_clone.svg
create mode 100644 cypress/__svgSnapshots__/scenario5-check tool_line_delete.svg
create mode 100644 cypress/__svgSnapshots__/scenario5-check tool_source_set.svg
create mode 100644 cypress/__svgSnapshots__/scenario6-check tool_polygon.svg
create mode 100644 cypress/__svgSnapshots__/scenario6-check tool_polygon_align_to_page.svg
create mode 100644 cypress/__svgSnapshots__/scenario6-check tool_polygon_bring_to_back.svg
create mode 100644 cypress/__svgSnapshots__/scenario6-check tool_polygon_bring_to_front.svg
create mode 100644 cypress/__svgSnapshots__/scenario6-check tool_polygon_change_blur.svg
create mode 100644 cypress/__svgSnapshots__/scenario6-check tool_polygon_change_opacity.svg
create mode 100644 cypress/__svgSnapshots__/scenario6-check tool_polygon_change_rotation.svg
create mode 100644 cypress/__svgSnapshots__/scenario6-check tool_polygon_change_sides.svg
create mode 100644 cypress/__svgSnapshots__/scenario6-check tool_polygon_change_stoke_fill_color.svg
create mode 100644 cypress/__svgSnapshots__/scenario6-check tool_polygon_change_stroke_width.svg
create mode 100644 cypress/__svgSnapshots__/scenario6-check tool_polygon_clone.svg
create mode 100644 cypress/__svgSnapshots__/scenario6-check tool_polygon_delete.svg
create mode 100644 cypress/__svgSnapshots__/scenario6-check tool_source_set.svg
create mode 100644 cypress/__svgSnapshots__/scenario7-check tool_source_set.svg
create mode 100644 cypress/__svgSnapshots__/scenario7-check tool_star.svg
create mode 100644 cypress/__svgSnapshots__/scenario7-check tool_star_align_to_page.svg
create mode 100644 cypress/__svgSnapshots__/scenario7-check tool_star_bring_to_back.svg
create mode 100644 cypress/__svgSnapshots__/scenario7-check tool_star_bring_to_front.svg
create mode 100644 cypress/__svgSnapshots__/scenario7-check tool_star_change_blur.svg
create mode 100644 cypress/__svgSnapshots__/scenario7-check tool_star_change_opacity.svg
create mode 100644 cypress/__svgSnapshots__/scenario7-check tool_star_change_rotation.svg
create mode 100644 cypress/__svgSnapshots__/scenario7-check tool_star_change_sides.svg
create mode 100644 cypress/__svgSnapshots__/scenario7-check tool_star_change_stoke_fill_color.svg
create mode 100644 cypress/__svgSnapshots__/scenario7-check tool_star_change_stroke_width.svg
create mode 100644 cypress/__svgSnapshots__/scenario7-check tool_star_clone.svg
create mode 100644 cypress/__svgSnapshots__/scenario7-check tool_star_delete.svg
delete mode 100644 cypress/e2e/ui/__snapshots__/scenario.cy.js.snap
delete mode 100644 cypress/e2e/ui/__snapshots__/scenario.js.snap
delete mode 100644 cypress/e2e/ui/__snapshots__/scenario1.cy.js.snap
delete mode 100644 cypress/e2e/ui/__snapshots__/scenario1.js.snap
delete mode 100644 cypress/e2e/ui/__snapshots__/scenario2.cy.js.snap
delete mode 100644 cypress/e2e/ui/__snapshots__/scenario2.js.snap
delete mode 100644 cypress/e2e/ui/__snapshots__/scenario3.cy.js.snap
delete mode 100644 cypress/e2e/ui/__snapshots__/scenario3.js.snap
delete mode 100644 cypress/e2e/ui/__snapshots__/scenario4.cy.js.snap
delete mode 100644 cypress/e2e/ui/__snapshots__/scenario4.js.snap
delete mode 100644 cypress/e2e/ui/__snapshots__/scenario5.cy.js.snap
delete mode 100644 cypress/e2e/ui/__snapshots__/scenario5.js.snap
delete mode 100644 cypress/e2e/ui/__snapshots__/scenario6.cy.js.snap
delete mode 100644 cypress/e2e/ui/__snapshots__/scenario6.js.snap
delete mode 100644 cypress/e2e/ui/__snapshots__/scenario7.cy.js.snap
delete mode 100644 cypress/e2e/ui/__snapshots__/scenario7.js.snap
create mode 100644 cypress/replace-in-file.config.js
delete mode 100644 docs/Linting.md
rename {src => packages}/svgcanvas/blur-event.js (100%)
rename {src => packages}/svgcanvas/clear.js (100%)
rename {src => packages}/svgcanvas/coords.js (100%)
rename {src => packages}/svgcanvas/copy-elem.js (100%)
rename {src => packages}/svgcanvas/dataStorage.js (100%)
rename {demos => packages/svgcanvas/demos}/canvas.html (89%)
rename {src => packages}/svgcanvas/draw.js (99%)
rename {src => packages}/svgcanvas/elem-get-set.js (99%)
rename {src => packages}/svgcanvas/event.js (99%)
rename {src => packages}/svgcanvas/history.js (100%)
rename {src => packages}/svgcanvas/historyrecording.js (100%)
rename {src => packages}/svgcanvas/json.js (100%)
rename {src => packages}/svgcanvas/layer.js (100%)
rename {src => packages}/svgcanvas/math.js (100%)
rename {src => packages}/svgcanvas/namespaces.js (100%)
create mode 100644 packages/svgcanvas/package-lock.json
create mode 100644 packages/svgcanvas/package.json
rename {src/editor/components/jgraduate => packages/svgcanvas}/paint.js (100%)
rename {src => packages}/svgcanvas/paste-elem.js (100%)
rename {src => packages}/svgcanvas/path-actions.js (99%)
rename {src => packages}/svgcanvas/path-method.js (100%)
rename {src => packages}/svgcanvas/path.js (99%)
rename {src => packages}/svgcanvas/recalculate.js (99%)
create mode 100644 packages/svgcanvas/rollup.config.js
rename {src => packages}/svgcanvas/sanitize.js (100%)
rename {src => packages}/svgcanvas/select.js (99%)
rename {src => packages}/svgcanvas/selected-elem.js (99%)
rename {src => packages}/svgcanvas/selection.js (99%)
rename {src => packages}/svgcanvas/svg-exec.js (99%)
rename {src => packages}/svgcanvas/svgcanvas.js (99%)
rename {src => packages}/svgcanvas/svgroot.js (100%)
rename {src => packages}/svgcanvas/text-actions.js (99%)
rename {src => packages}/svgcanvas/touch.js (100%)
rename {src => packages}/svgcanvas/undo.js (99%)
rename {src/common => packages/svgcanvas}/units.js (100%)
rename {src => packages}/svgcanvas/utilities.js (99%)
rename src/{editor/components/jgraduate/Util.js => common/util.js} (100%)
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}}
+