diff --git a/badges/tests-badge.svg b/badges/tests-badge.svg
index dff9d9ea..10fa718c 100644
--- a/badges/tests-badge.svg
+++ b/badges/tests-badge.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/cypress/integration/ui/__snapshots__/scenario.js.snap b/cypress/integration/ui/__snapshots__/scenario.js.snap
index bb94f4ae..ba1acc15 100644
--- a/cypress/integration/ui/__snapshots__/scenario.js.snap
+++ b/cypress/integration/ui/__snapshots__/scenario.js.snap
@@ -103,6 +103,68 @@ exports[`use various parts of svg-edit > check tool_text #0`] = `
`;
+exports[`use various parts of svg-edit > check tool_clone #0`] = `
+
+`;
+
exports[`use various parts of svg-edit > check tool_italic #0`] = `
`;
@@ -194,6 +273,23 @@ exports[`use various parts of svg-edit > check tool_bold #0`] = `
>
AB
+
+ AB
+
`;
@@ -242,6 +338,23 @@ exports[`use various parts of svg-edit > check change color #0`] = `
>
AB
+
+ AB
+
`;
@@ -290,6 +403,23 @@ exports[`use various parts of svg-edit > check tool_text_anchor_start #0`] = `
>
AB
+
+ AB
+
`;
@@ -338,6 +468,23 @@ exports[`use various parts of svg-edit > check tool_text_anchor_middle #0`] = `
>
AB
+
+ AB
+
`;
@@ -386,6 +533,23 @@ exports[`use various parts of svg-edit > check tool_text_anchor_end #0`] = `
>
AB
+
+ AB
+
`;
@@ -434,20 +598,37 @@ exports[`use various parts of svg-edit > check tool_star #0`] = `
>
AB
-
+ AB
+
+
@@ -507,37 +688,54 @@ exports[`use various parts of svg-edit > check tool_polygon #0`] = `
>
AB
-
+ AB
+
+
diff --git a/cypress/integration/ui/scenario.js b/cypress/integration/ui/scenario.js
index 5d7e95f3..e5566709 100644
--- a/cypress/integration/ui/scenario.js
+++ b/cypress/integration/ui/scenario.js
@@ -91,8 +91,8 @@ describe('use various parts of svg-edit', function () {
cy.get('#tool_star')
.click({force: true});
cy.get('#svgcontent')
- .trigger('mousedown', 600, 150, {force: true})
- .trigger('mousemove', 600, 170, {force: true})
+ .trigger('mousedown', 300, 150, {force: true})
+ .trigger('mousemove', 300, 250, {force: true})
.trigger('mouseup', {force: true});
testSnapshot();
});
@@ -100,8 +100,8 @@ describe('use various parts of svg-edit', function () {
cy.get('#tool_polygon')
.click({force: true});
cy.get('#svgcontent')
- .trigger('mousedown', 650, 200, {force: true})
- .trigger('mousemove', 650, 210, {force: true})
+ .trigger('mousedown', 350, 250, {force: true})
+ .trigger('mousemove', 350, 370, {force: true})
.trigger('mouseup', {force: true});
testSnapshot();
});
diff --git a/cypress/support/ui-test-helper.js b/cypress/support/ui-test-helper.js
index 1194cdc7..f91b9b2e 100644
--- a/cypress/support/ui-test-helper.js
+++ b/cypress/support/ui-test-helper.js
@@ -9,7 +9,7 @@ export const visitAndApproveStorage = () => {
};
export const openMainMenu = () => {
- return cy.get('#main_button').click();
+ return cy.get('#main_button').click({force: true});
};
export const openEditorPreferences = () => {
diff --git a/package-lock.json b/package-lock.json
index 3c03ea24..2fee4595 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,7 +11,7 @@
"@babel/polyfill": "7.12.1",
"@web/dev-server-rollup": "0.3.3",
"canvg": "3.0.7",
- "core-js": "3.10.1",
+ "core-js": "3.10.2",
"deparam": "^1.0.5",
"elix": "^15.0.0",
"jspdf": "2.3.1",
@@ -27,7 +27,7 @@
"@babel/runtime-corejs3": "7.13.10",
"@cypress/code-coverage": "3.9.4",
"@cypress/fiddle": "1.19.2",
- "@fintechstudios/eslint-plugin-chai-as-promised": "3.0.2",
+ "@fintechstudios/eslint-plugin-chai-as-promised": "3.1.0",
"@hkdobrev/run-if-changed": "0.3.1",
"@mysticatea/eslint-plugin": "13.0.0",
"@rollup/plugin-babel": "5.3.0",
@@ -36,17 +36,17 @@
"@rollup/plugin-node-resolve": "11.2.1",
"@rollup/plugin-replace": "2.4.2",
"@rollup/plugin-url": "6.0.0",
- "@web/dev-server": "^0.1.11",
+ "@web/dev-server": "^0.1.12",
"axe-core": "4.1.4",
"babel-plugin-transform-object-rest-spread": "7.0.0-beta.3",
"copyfiles": "2.4.1",
- "core-js-bundle": "3.10.1",
+ "core-js-bundle": "3.10.2",
"coveradge": "0.6.0",
"cp-cli": "2.0.0",
"cross-var": "1.1.0",
- "cypress": "7.0.1",
+ "cypress": "7.1.0",
"cypress-axe": "0.12.2",
- "cypress-multi-reporters": "1.4.0",
+ "cypress-multi-reporters": "1.5.0",
"cypress-plugin-snapshots": "1.4.4",
"eslint": "^7.24.0",
"eslint-config-standard": "16.0.2",
@@ -63,13 +63,13 @@
"eslint-plugin-markdown": "^2.0.1",
"eslint-plugin-mocha": "8.1.0",
"eslint-plugin-mocha-cleanup": "1.9.1",
- "eslint-plugin-no-unsanitized": "^3.1.4",
+ "eslint-plugin-no-unsanitized": "^3.1.5",
"eslint-plugin-no-use-extend-native": "0.5.0",
"eslint-plugin-node": "11.1.0",
"eslint-plugin-promise": "^5.1.0",
"eslint-plugin-sonarjs": "^0.6.0",
"eslint-plugin-standard": "4.1.0",
- "eslint-plugin-unicorn": "29.0.0",
+ "eslint-plugin-unicorn": "30.0.0",
"imageoptim-cli": "3.0.2",
"jamilih": "0.54.0",
"jsdoc": "3.6.6",
@@ -89,7 +89,7 @@
"remark-lint-ordered-list-marker-value": "2.0.1",
"requirejs": "2.3.6",
"rimraf": "3.0.2",
- "rollup": "2.45.1",
+ "rollup": "2.45.2",
"rollup-plugin-copy": "3.4.0",
"rollup-plugin-filesize": "9.1.1",
"rollup-plugin-node-polyfills": "0.2.1",
@@ -99,7 +99,7 @@
"stackblur-canvas": "2.5.0",
"systemjs": "6.8.3",
"typescript": "4.2.4",
- "underscore": "1.13.0"
+ "underscore": "1.13.1"
},
"engines": {
"node": ">=10"
@@ -2515,9 +2515,9 @@
}
},
"node_modules/@fintechstudios/eslint-plugin-chai-as-promised": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@fintechstudios/eslint-plugin-chai-as-promised/-/eslint-plugin-chai-as-promised-3.0.2.tgz",
- "integrity": "sha512-mHavP4gRhtpLwpKkoGZ3GHnKhyeCc7CeSXWLbgehEKGQNRD97ye8jlrwda/Xfc74Xn7MtLG4CJgA3fTIK6bveQ==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@fintechstudios/eslint-plugin-chai-as-promised/-/eslint-plugin-chai-as-promised-3.1.0.tgz",
+ "integrity": "sha512-Y3TmITTwc5u8hoW0GWxle1hKiVadDqDHyLQaTv+e+xVDHazn361QIEY9NbWqNsXP0jzrSskpnhkBr++h+PciEw==",
"dev": true,
"engines": {
"node": ">=8.10.0"
@@ -4023,16 +4023,16 @@
"dev": true
},
"node_modules/@web/dev-server": {
- "version": "0.1.11",
- "resolved": "https://registry.npmjs.org/@web/dev-server/-/dev-server-0.1.11.tgz",
- "integrity": "sha512-4yqxfL2FBbHxHlu2+KFIF+iXN7f9MiGu8j/gNT6gnTPruCL6AUBm+skT5kRqaA6DYnmd4qbVc3EWnJvZY3RvGQ==",
+ "version": "0.1.12",
+ "resolved": "https://registry.npmjs.org/@web/dev-server/-/dev-server-0.1.12.tgz",
+ "integrity": "sha512-XcI5BK7vjsBlkfZdCCb3Aza6xFTimLdJ4nDN54zJCl1xbpHo5IgcLXAI+T1PTmyWuiFk4lz6Y9IvGiXdvnaZew==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.12.11",
"@rollup/plugin-node-resolve": "^11.0.1",
"@types/command-line-args": "^5.0.0",
"@web/config-loader": "^0.1.3",
- "@web/dev-server-core": "^0.3.8",
+ "@web/dev-server-core": "^0.3.9",
"@web/dev-server-rollup": "^0.3.3",
"camelcase": "^6.2.0",
"chalk": "^4.1.0",
@@ -4053,9 +4053,9 @@
}
},
"node_modules/@web/dev-server-core": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.3.8.tgz",
- "integrity": "sha512-Qbo2ZVUopmjEP8ZDc8v0N/nTW9LbmycuC+uoTwp62PfHfqSN9RgXGzuGMmp5sBPRXi/E1oi1GQ+lMoDWXLjKYA==",
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.3.9.tgz",
+ "integrity": "sha512-NOHetwAHZjcyRAxSOeTZvD4uP2c5pB7qbrS1hDlQHW7Gii4hJL51MLmxl4E+0MDxcDhEwIpB/acJ44n64T0c6Q==",
"dependencies": {
"@types/koa": "^2.11.6",
"@types/ws": "^7.4.0",
@@ -7891,9 +7891,9 @@
}
},
"node_modules/core-js": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.10.1.tgz",
- "integrity": "sha512-pwCxEXnj27XG47mu7SXAwhLP3L5CrlvCB91ANUkIz40P27kUcvNfSdvyZJ9CLHiVoKSp+TTChMQMSKQEH/IQxA==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.10.2.tgz",
+ "integrity": "sha512-W+2oVYeNghuBr3yTzZFQ5rfmjZtYB/Ubg87R5YOmlGrIb+Uw9f7qjUbhsj+/EkXhcV7eOD3jiM4+sgraX3FZUw==",
"hasInstallScript": true,
"funding": {
"type": "opencollective",
@@ -7901,9 +7901,9 @@
}
},
"node_modules/core-js-bundle": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/core-js-bundle/-/core-js-bundle-3.10.1.tgz",
- "integrity": "sha512-Yi9l/qDAA5YAqwbKYDLj9kPHT5Blj1pPm3lF1tr0dMUHq6Di6BjhEhY1nI3eJ/v9jhcYO5+PAgQ3DukejbKHbg==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/core-js-bundle/-/core-js-bundle-3.10.2.tgz",
+ "integrity": "sha512-cU/daFGOLWwtNAdXBksUl2HNqPOaM5g6bMxJ8doMw9PkshbWSzUweog2EEJsIlgmCCAFI0NLDBl4SD2TzZEevw==",
"dev": true,
"hasInstallScript": true,
"funding": {
@@ -8472,9 +8472,9 @@
"dev": true
},
"node_modules/cypress": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/cypress/-/cypress-7.0.1.tgz",
- "integrity": "sha512-dMZmZDo+x3jslEQiXRGQlMmMVMhe4JpMHQ6g1unMGXTUsapU1EXlnubevmKmqZ1IQpntAlDKmx8dupOTd3oW+g==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/cypress/-/cypress-7.1.0.tgz",
+ "integrity": "sha512-AptQP9fVtN/FfOv8rJ9hTGJE2XQFc8saLHT38r/EeyWhzp0q/+P/DYRTDtjGZHeLTCNznAUrT4lal8jm+ouS7Q==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
@@ -8535,9 +8535,9 @@
}
},
"node_modules/cypress-multi-reporters": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/cypress-multi-reporters/-/cypress-multi-reporters-1.4.0.tgz",
- "integrity": "sha512-CjpQduW43KVzY45hhKC/qf8MSebRpx6JyEz6py8F+0GrYS8rE5TZ8wXv9dPUs/PaT6w+dR8KIgLSMr967Om7iA==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/cypress-multi-reporters/-/cypress-multi-reporters-1.5.0.tgz",
+ "integrity": "sha512-6rJ1rk1RpjZwTeydCDc8r3iOmWj2ZEYo++oDTJHNEu7eetb3W1cYDNo5CdxF/r0bo7TLQsOEpBHOCYBZfPVt/g==",
"dev": true,
"dependencies": {
"debug": "^4.1.1",
@@ -8545,6 +8545,9 @@
},
"engines": {
"node": ">=6.0.0"
+ },
+ "peerDependencies": {
+ "mocha": ">=3.1.2"
}
},
"node_modules/cypress-multi-reporters/node_modules/debug": {
@@ -10248,10 +10251,13 @@
}
},
"node_modules/eslint-plugin-no-unsanitized": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-3.1.4.tgz",
- "integrity": "sha512-WF1+eZo2Sh+bQNjZuVNwT0dA61zuJORsLh+1Sww7+O6GOPw+WPWIIRfTWNqrmaXaDMhM4SXAqYPcNlhRMiH13g==",
- "dev": true
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-3.1.5.tgz",
+ "integrity": "sha512-s/6w++p1590h/H/dE2Wo660bOkaM/3OEK14Y7xm1UT0bafxkKw1Cq0ksjxkxLdH/WWd014DlsLKuD6CyNrR2Dw==",
+ "dev": true,
+ "peerDependencies": {
+ "eslint": "^5 || ^6 || ^7"
+ }
},
"node_modules/eslint-plugin-no-use-extend-native": {
"version": "0.5.0",
@@ -10368,9 +10374,9 @@
"dev": true
},
"node_modules/eslint-plugin-unicorn": {
- "version": "29.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-29.0.0.tgz",
- "integrity": "sha512-R9jGLKb2p6LuOixviByGlH2mkfY72EBELXAPeUufveebN0M2Woa7B7dUO3gN2xPn/+eGjrIm4I2u7dDtr9G4iA==",
+ "version": "30.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-30.0.0.tgz",
+ "integrity": "sha512-ZKbE48Ep99z/3geLpkBfv+jNrzr2k7bLqCC/RfZOekZzAvn2/ECDE/d8zGdW1YxHmIC9pevQvm8Pl89v9GEIVw==",
"dev": true,
"dependencies": {
"ci-info": "^3.1.1",
@@ -10379,13 +10385,13 @@
"eslint-utils": "^2.1.0",
"eslint-visitor-keys": "^2.0.0",
"import-modules": "^2.1.0",
- "lodash": "^4.17.20",
+ "lodash": "^4.17.21",
"pluralize": "^8.0.0",
"read-pkg-up": "^7.0.1",
"regexp-tree": "^0.1.23",
"reserved-words": "^0.1.2",
"safe-regex": "^2.1.1",
- "semver": "^7.3.4"
+ "semver": "^7.3.5"
},
"engines": {
"node": ">=10"
@@ -10394,7 +10400,7 @@
"url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1"
},
"peerDependencies": {
- "eslint": ">=7.20.0"
+ "eslint": ">=7.23.0"
}
},
"node_modules/eslint-plugin-unicorn/node_modules/ci-info": {
@@ -10554,9 +10560,9 @@
}
},
"node_modules/eslint-plugin-unicorn/node_modules/semver": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
- "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
+ "version": "7.3.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+ "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
@@ -19747,9 +19753,9 @@
}
},
"node_modules/rollup": {
- "version": "2.45.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.45.1.tgz",
- "integrity": "sha512-vPD+JoDj3CY8k6m1bLcAFttXMe78P4CMxoau0iLVS60+S9kLsv2379xaGy4NgYWu+h2WTlucpoLPAoUoixFBag==",
+ "version": "2.45.2",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.45.2.tgz",
+ "integrity": "sha512-kRRU7wXzFHUzBIv0GfoFFIN3m9oteY4uAsKllIpQDId5cfnkWF2J130l+27dzDju0E6MScKiV0ZM5Bw8m4blYQ==",
"bin": {
"rollup": "dist/bin/rollup"
},
@@ -22005,9 +22011,9 @@
}
},
"node_modules/underscore": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.0.tgz",
- "integrity": "sha512-sCs4H3pCytsb5K7i072FAEC9YlSYFIbosvM0tAKAlpSSUgD7yC1iXSEGdl5XrDKQ1YUB+p/HDzYrSG2H2Vl36g==",
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz",
+ "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==",
"dev": true
},
"node_modules/unherit": {
@@ -25876,9 +25882,9 @@
}
},
"@fintechstudios/eslint-plugin-chai-as-promised": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@fintechstudios/eslint-plugin-chai-as-promised/-/eslint-plugin-chai-as-promised-3.0.2.tgz",
- "integrity": "sha512-mHavP4gRhtpLwpKkoGZ3GHnKhyeCc7CeSXWLbgehEKGQNRD97ye8jlrwda/Xfc74Xn7MtLG4CJgA3fTIK6bveQ==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@fintechstudios/eslint-plugin-chai-as-promised/-/eslint-plugin-chai-as-promised-3.1.0.tgz",
+ "integrity": "sha512-Y3TmITTwc5u8hoW0GWxle1hKiVadDqDHyLQaTv+e+xVDHazn361QIEY9NbWqNsXP0jzrSskpnhkBr++h+PciEw==",
"dev": true
},
"@hkdobrev/run-if-changed": {
@@ -27224,16 +27230,16 @@
}
},
"@web/dev-server": {
- "version": "0.1.11",
- "resolved": "https://registry.npmjs.org/@web/dev-server/-/dev-server-0.1.11.tgz",
- "integrity": "sha512-4yqxfL2FBbHxHlu2+KFIF+iXN7f9MiGu8j/gNT6gnTPruCL6AUBm+skT5kRqaA6DYnmd4qbVc3EWnJvZY3RvGQ==",
+ "version": "0.1.12",
+ "resolved": "https://registry.npmjs.org/@web/dev-server/-/dev-server-0.1.12.tgz",
+ "integrity": "sha512-XcI5BK7vjsBlkfZdCCb3Aza6xFTimLdJ4nDN54zJCl1xbpHo5IgcLXAI+T1PTmyWuiFk4lz6Y9IvGiXdvnaZew==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.12.11",
"@rollup/plugin-node-resolve": "^11.0.1",
"@types/command-line-args": "^5.0.0",
"@web/config-loader": "^0.1.3",
- "@web/dev-server-core": "^0.3.8",
+ "@web/dev-server-core": "^0.3.9",
"@web/dev-server-rollup": "^0.3.3",
"camelcase": "^6.2.0",
"chalk": "^4.1.0",
@@ -27354,9 +27360,9 @@
}
},
"@web/dev-server-core": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.3.8.tgz",
- "integrity": "sha512-Qbo2ZVUopmjEP8ZDc8v0N/nTW9LbmycuC+uoTwp62PfHfqSN9RgXGzuGMmp5sBPRXi/E1oi1GQ+lMoDWXLjKYA==",
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.3.9.tgz",
+ "integrity": "sha512-NOHetwAHZjcyRAxSOeTZvD4uP2c5pB7qbrS1hDlQHW7Gii4hJL51MLmxl4E+0MDxcDhEwIpB/acJ44n64T0c6Q==",
"requires": {
"@types/koa": "^2.11.6",
"@types/ws": "^7.4.0",
@@ -30568,14 +30574,14 @@
}
},
"core-js": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.10.1.tgz",
- "integrity": "sha512-pwCxEXnj27XG47mu7SXAwhLP3L5CrlvCB91ANUkIz40P27kUcvNfSdvyZJ9CLHiVoKSp+TTChMQMSKQEH/IQxA=="
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.10.2.tgz",
+ "integrity": "sha512-W+2oVYeNghuBr3yTzZFQ5rfmjZtYB/Ubg87R5YOmlGrIb+Uw9f7qjUbhsj+/EkXhcV7eOD3jiM4+sgraX3FZUw=="
},
"core-js-bundle": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/core-js-bundle/-/core-js-bundle-3.10.1.tgz",
- "integrity": "sha512-Yi9l/qDAA5YAqwbKYDLj9kPHT5Blj1pPm3lF1tr0dMUHq6Di6BjhEhY1nI3eJ/v9jhcYO5+PAgQ3DukejbKHbg==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/core-js-bundle/-/core-js-bundle-3.10.2.tgz",
+ "integrity": "sha512-cU/daFGOLWwtNAdXBksUl2HNqPOaM5g6bMxJ8doMw9PkshbWSzUweog2EEJsIlgmCCAFI0NLDBl4SD2TzZEevw==",
"dev": true
},
"core-js-compat": {
@@ -31052,9 +31058,9 @@
}
},
"cypress": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/cypress/-/cypress-7.0.1.tgz",
- "integrity": "sha512-dMZmZDo+x3jslEQiXRGQlMmMVMhe4JpMHQ6g1unMGXTUsapU1EXlnubevmKmqZ1IQpntAlDKmx8dupOTd3oW+g==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/cypress/-/cypress-7.1.0.tgz",
+ "integrity": "sha512-AptQP9fVtN/FfOv8rJ9hTGJE2XQFc8saLHT38r/EeyWhzp0q/+P/DYRTDtjGZHeLTCNznAUrT4lal8jm+ouS7Q==",
"dev": true,
"requires": {
"@cypress/listr-verbose-renderer": "^0.4.1",
@@ -31263,9 +31269,9 @@
"dev": true
},
"cypress-multi-reporters": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/cypress-multi-reporters/-/cypress-multi-reporters-1.4.0.tgz",
- "integrity": "sha512-CjpQduW43KVzY45hhKC/qf8MSebRpx6JyEz6py8F+0GrYS8rE5TZ8wXv9dPUs/PaT6w+dR8KIgLSMr967Om7iA==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/cypress-multi-reporters/-/cypress-multi-reporters-1.5.0.tgz",
+ "integrity": "sha512-6rJ1rk1RpjZwTeydCDc8r3iOmWj2ZEYo++oDTJHNEu7eetb3W1cYDNo5CdxF/r0bo7TLQsOEpBHOCYBZfPVt/g==",
"dev": true,
"requires": {
"debug": "^4.1.1",
@@ -32822,10 +32828,11 @@
}
},
"eslint-plugin-no-unsanitized": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-3.1.4.tgz",
- "integrity": "sha512-WF1+eZo2Sh+bQNjZuVNwT0dA61zuJORsLh+1Sww7+O6GOPw+WPWIIRfTWNqrmaXaDMhM4SXAqYPcNlhRMiH13g==",
- "dev": true
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-3.1.5.tgz",
+ "integrity": "sha512-s/6w++p1590h/H/dE2Wo660bOkaM/3OEK14Y7xm1UT0bafxkKw1Cq0ksjxkxLdH/WWd014DlsLKuD6CyNrR2Dw==",
+ "dev": true,
+ "requires": {}
},
"eslint-plugin-no-use-extend-native": {
"version": "0.5.0",
@@ -32915,9 +32922,9 @@
"dev": true
},
"eslint-plugin-unicorn": {
- "version": "29.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-29.0.0.tgz",
- "integrity": "sha512-R9jGLKb2p6LuOixviByGlH2mkfY72EBELXAPeUufveebN0M2Woa7B7dUO3gN2xPn/+eGjrIm4I2u7dDtr9G4iA==",
+ "version": "30.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-30.0.0.tgz",
+ "integrity": "sha512-ZKbE48Ep99z/3geLpkBfv+jNrzr2k7bLqCC/RfZOekZzAvn2/ECDE/d8zGdW1YxHmIC9pevQvm8Pl89v9GEIVw==",
"dev": true,
"requires": {
"ci-info": "^3.1.1",
@@ -32926,13 +32933,13 @@
"eslint-utils": "^2.1.0",
"eslint-visitor-keys": "^2.0.0",
"import-modules": "^2.1.0",
- "lodash": "^4.17.20",
+ "lodash": "^4.17.21",
"pluralize": "^8.0.0",
"read-pkg-up": "^7.0.1",
"regexp-tree": "^0.1.23",
"reserved-words": "^0.1.2",
"safe-regex": "^2.1.1",
- "semver": "^7.3.4"
+ "semver": "^7.3.5"
},
"dependencies": {
"ci-info": {
@@ -33060,9 +33067,9 @@
}
},
"semver": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
- "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
+ "version": "7.3.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+ "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
"dev": true,
"requires": {
"lru-cache": "^6.0.0"
@@ -40275,9 +40282,9 @@
}
},
"rollup": {
- "version": "2.45.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.45.1.tgz",
- "integrity": "sha512-vPD+JoDj3CY8k6m1bLcAFttXMe78P4CMxoau0iLVS60+S9kLsv2379xaGy4NgYWu+h2WTlucpoLPAoUoixFBag==",
+ "version": "2.45.2",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.45.2.tgz",
+ "integrity": "sha512-kRRU7wXzFHUzBIv0GfoFFIN3m9oteY4uAsKllIpQDId5cfnkWF2J130l+27dzDju0E6MScKiV0ZM5Bw8m4blYQ==",
"requires": {
"fsevents": "~2.3.1"
},
@@ -42206,9 +42213,9 @@
}
},
"underscore": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.0.tgz",
- "integrity": "sha512-sCs4H3pCytsb5K7i072FAEC9YlSYFIbosvM0tAKAlpSSUgD7yC1iXSEGdl5XrDKQ1YUB+p/HDzYrSG2H2Vl36g==",
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz",
+ "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==",
"dev": true
},
"unherit": {
diff --git a/package.json b/package.json
index 7288765c..63a9b43a 100644
--- a/package.json
+++ b/package.json
@@ -109,7 +109,7 @@
"@babel/polyfill": "7.12.1",
"@web/dev-server-rollup": "0.3.3",
"canvg": "3.0.7",
- "core-js": "3.10.1",
+ "core-js": "3.10.2",
"deparam": "^1.0.5",
"elix": "^15.0.0",
"jspdf": "2.3.1",
@@ -125,7 +125,7 @@
"@babel/runtime-corejs3": "7.13.10",
"@cypress/code-coverage": "3.9.4",
"@cypress/fiddle": "1.19.2",
- "@fintechstudios/eslint-plugin-chai-as-promised": "3.0.2",
+ "@fintechstudios/eslint-plugin-chai-as-promised": "3.1.0",
"@hkdobrev/run-if-changed": "0.3.1",
"@mysticatea/eslint-plugin": "13.0.0",
"@rollup/plugin-babel": "5.3.0",
@@ -134,17 +134,17 @@
"@rollup/plugin-node-resolve": "11.2.1",
"@rollup/plugin-replace": "2.4.2",
"@rollup/plugin-url": "6.0.0",
- "@web/dev-server": "^0.1.11",
+ "@web/dev-server": "^0.1.12",
"axe-core": "4.1.4",
"babel-plugin-transform-object-rest-spread": "7.0.0-beta.3",
"copyfiles": "2.4.1",
- "core-js-bundle": "3.10.1",
+ "core-js-bundle": "3.10.2",
"coveradge": "0.6.0",
"cp-cli": "2.0.0",
"cross-var": "1.1.0",
- "cypress": "7.0.1",
+ "cypress": "7.1.0",
"cypress-axe": "0.12.2",
- "cypress-multi-reporters": "1.4.0",
+ "cypress-multi-reporters": "1.5.0",
"cypress-plugin-snapshots": "1.4.4",
"eslint": "^7.24.0",
"eslint-config-standard": "16.0.2",
@@ -161,13 +161,13 @@
"eslint-plugin-markdown": "^2.0.1",
"eslint-plugin-mocha": "8.1.0",
"eslint-plugin-mocha-cleanup": "1.9.1",
- "eslint-plugin-no-unsanitized": "^3.1.4",
+ "eslint-plugin-no-unsanitized": "^3.1.5",
"eslint-plugin-no-use-extend-native": "0.5.0",
"eslint-plugin-node": "11.1.0",
"eslint-plugin-promise": "^5.1.0",
"eslint-plugin-sonarjs": "^0.6.0",
"eslint-plugin-standard": "4.1.0",
- "eslint-plugin-unicorn": "29.0.0",
+ "eslint-plugin-unicorn": "30.0.0",
"imageoptim-cli": "3.0.2",
"jamilih": "0.54.0",
"jsdoc": "3.6.6",
@@ -187,7 +187,7 @@
"remark-lint-ordered-list-marker-value": "2.0.1",
"requirejs": "2.3.6",
"rimraf": "3.0.2",
- "rollup": "2.45.1",
+ "rollup": "2.45.2",
"rollup-plugin-copy": "3.4.0",
"rollup-plugin-filesize": "9.1.1",
"rollup-plugin-node-polyfills": "0.2.1",
@@ -197,6 +197,6 @@
"stackblur-canvas": "2.5.0",
"systemjs": "6.8.3",
"typescript": "4.2.4",
- "underscore": "1.13.0"
+ "underscore": "1.13.1"
}
}
diff --git a/src/editor/Editor.js b/src/editor/Editor.js
index 25f7015c..f4201872 100644
--- a/src/editor/Editor.js
+++ b/src/editor/Editor.js
@@ -34,6 +34,7 @@ import TopPanel from './panels/TopPanel.js';
import BottomPanel from './panels/BottomPanel.js';
import LayersPanel from './panels/LayersPanel.js';
import MainMenu from './MainMenu.js';
+import {getParentsUntil} from './components/jgraduate/Util.js';
const {$id, $qa, isNullish, encode64, decode64, blankPageObjectURL} = SvgCanvas;
diff --git a/src/svgcanvas/path-method.js b/src/svgcanvas/path-method.js
index 8165d3dc..e815f473 100644
--- a/src/svgcanvas/path-method.js
+++ b/src/svgcanvas/path-method.js
@@ -175,7 +175,7 @@ export const addPointGripMethod = function (index, x, y) {
pointGripContainer.append(pointGrip);
const grip = document.getElementById('pathpointgrip_' + index);
- grip.addEventListener("dblclick", (e) => {
+ grip?.addEventListener("dblclick", (e) => {
const path = pathMethodsContext_.getPathObj();
if (path) {
path.setSegType();