diff --git a/src/svgcanvas/copy-elem.js b/src/svgcanvas/copy-elem.js
index eba0e54b..25ef28d1 100644
--- a/src/svgcanvas/copy-elem.js
+++ b/src/svgcanvas/copy-elem.js
@@ -41,7 +41,7 @@ export const copyElem = function (el, getNextId) {
});
if (el.dataset.gsvg) {
- newEl.dataset.gsvg = newEl.firstChild
+ newEl.dataset.gsvg = newEl.firstChild;
} else if (el.dataset.symbol) {
const ref = el.dataset.symbol;
newEl.dataset.ref = ref;
diff --git a/src/svgcanvas/path-method.js b/src/svgcanvas/path-method.js
index cbcbc0b2..7c98c5b3 100644
--- a/src/svgcanvas/path-method.js
+++ b/src/svgcanvas/path-method.js
@@ -428,7 +428,7 @@ export class Segment {
*/
selectCtrls (y) {
document.getElementById('ctrlpointgrip_' + this.index + 'c1').setAttribute('fill', y ? '#0FF' : '#EEE');
- document.getElementById('ctrlpointgrip_' + this.index + 'c2').setAttribute('fill', y ? '#0FF' : '#EEE')
+ document.getElementById('ctrlpointgrip_' + this.index + 'c2').setAttribute('fill', y ? '#0FF' : '#EEE');
}
/**
diff --git a/src/svgcanvas/recalculate.js b/src/svgcanvas/recalculate.js
index 468487a3..84a3913e 100644
--- a/src/svgcanvas/recalculate.js
+++ b/src/svgcanvas/recalculate.js
@@ -707,7 +707,7 @@ export const recalculateDimensions = function (selected) {
y1: selected.getAttribute('y1'),
x2: selected.getAttribute('x2'),
y2: selected.getAttribute('y2'),
- }
+ };
// Fallthrough
case 'polyline':
case 'polygon':
diff --git a/src/svgcanvas/selected-elem.js b/src/svgcanvas/selected-elem.js
index 6d849992..6983c44e 100644
--- a/src/svgcanvas/selected-elem.js
+++ b/src/svgcanvas/selected-elem.js
@@ -733,7 +733,7 @@ export const convertToGroup = function (elem) {
recalculateDimensions(elem);
elementContext_.call('selected', [elem]);
} else if (dataStorage.has($elem, 'symbol')) {
- elem = dataStorage.get($elem, 'symbol')
+ elem = dataStorage.get($elem, 'symbol');
ts = $elem.attr('transform');
const pos = $elem.attr(['x', 'y']);
diff --git a/src/svgcanvas/utilities.js b/src/svgcanvas/utilities.js
index 18f58d4f..f1e6ad2e 100644
--- a/src/svgcanvas/utilities.js
+++ b/src/svgcanvas/utilities.js
@@ -1140,7 +1140,7 @@ export const getVisibleElements = function (parentElement) {
}
const contentElems = [];
- const childrens = parentElement.children
+ const childrens = parentElement.children;
Array.prototype.forEach.call(childrens, function (elem) {
if (elem.getBBox) {
contentElems.push(elem);
From d3974f8f177eae913d5795c1c3d4184f3f0c721b Mon Sep 17 00:00:00 2001
From: JFH <20402845+jfhenon@users.noreply.github.com>
Date: Thu, 13 May 2021 01:00:09 +0200
Subject: [PATCH 08/17] enforce a few eslint rules
---
.eslintrc.js | 18 +-
cypress/integration/ui/accessibility.js | 12 +-
cypress/integration/ui/clipboard.js | 20 +-
cypress/integration/ui/control-points.js | 20 +-
cypress/integration/ui/export.js | 2 +-
cypress/integration/ui/issues/issue-359.js | 4 +-
cypress/integration/ui/issues/issue-407.js | 12 +-
cypress/integration/ui/issues/issue-408.js | 4 +-
cypress/integration/ui/issues/issue-423.js | 14 +-
cypress/integration/ui/scenario.js | 70 ++--
cypress/integration/ui/tool-selection.js | 2 +-
cypress/integration/unit/contextmenu.js | 12 +-
cypress/integration/unit/coords.js | 2 +-
cypress/integration/unit/draw.js | 12 +-
cypress/integration/unit/history.js | 12 +-
cypress/integration/unit/math.js | 8 +-
cypress/integration/unit/path.js | 22 +-
cypress/integration/unit/sanitize.js | 2 +-
cypress/integration/unit/select.js | 12 +-
cypress/integration/unit/svgtransformlist.js | 4 +-
cypress/integration/unit/test1.js | 6 +-
cypress/integration/unit/units.js | 4 +-
cypress/integration/unit/utilities-bbox.js | 150 ++++-----
.../integration/unit/utilities-performance.js | 16 +-
cypress/integration/unit/utilities.js | 70 ++--
cypress/plugins/index.js | 2 +-
cypress/support/assert-almostEquals.js | 2 +-
cypress/support/assert-close.js | 8 +-
.../assert-expectOutOfBoundsException.js | 2 +-
cypress/support/assertion-wrapper.js | 2 +-
cypress/support/commands.js | 2 +-
cypress/support/ui-test-helper.js | 2 +-
demos/canvas.html | 10 +-
docs/jsdoc-config.js | 2 +-
docs/tutorials/ConfigOptions.md | 4 +-
docs/tutorials/ExtensionDocs.md | 4 +-
docs/versions/3.0.0.md | 2 +-
rollup.config.js | 44 +--
src/common/browser.js | 4 +-
src/common/namespaces.js | 2 +-
src/common/units.js | 24 +-
src/editor/ConfigObj.js | 26 +-
src/editor/Editor.js | 48 +--
src/editor/EditorStartup.js | 48 +--
src/editor/MainMenu.js | 10 +-
src/editor/Rulers.js | 4 +-
src/editor/components/PaintBox.js | 6 +-
.../components/jgraduate/ColorValuePicker.js | 4 +-
src/editor/components/jgraduate/Slider.js | 12 +-
.../components/jgraduate/jQuery.jGraduate.js | 38 +--
.../components/jgraduate/jQuery.jPicker.js | 298 +++++++++---------
src/editor/components/seButton.js | 4 +-
src/editor/components/seColorPicker.js | 20 +-
src/editor/components/seDropdown.js | 16 +-
src/editor/components/seExplorerButton.js | 10 +-
src/editor/components/seFlyingButton.js | 4 +-
src/editor/components/seInput.js | 4 +-
src/editor/components/seList.js | 6 +-
src/editor/components/seListItem.js | 4 +-
src/editor/components/seMenu.js | 4 +-
src/editor/components/seMenuItem.js | 4 +-
src/editor/components/sePalette.js | 8 +-
src/editor/components/sePlainBorderButton.js | 4 +-
src/editor/components/sePlainMenuButton.js | 2 +-
src/editor/components/seSpinInput.js | 4 +-
src/editor/components/seZoom.js | 12 +-
src/editor/dialogs/SePlainAlertDialog.js | 4 +-
src/editor/dialogs/cmenuDialog.js | 8 +-
src/editor/dialogs/cmenuLayersDialog.js | 8 +-
src/editor/dialogs/editorPreferencesDialog.js | 14 +-
src/editor/dialogs/exportDialog.js | 8 +-
src/editor/dialogs/imagePropertiesDialog.js | 14 +-
src/editor/dialogs/seAlertDialog.js | 2 +-
src/editor/dialogs/seConfirmDialog.js | 2 +-
src/editor/dialogs/sePromptDialog.js | 6 +-
src/editor/dialogs/svgSourceDialog.js | 12 +-
src/editor/dragmove/dragmove.js | 8 +-
src/editor/embedapi-dom.js | 6 +-
src/editor/embedapi.js | 14 +-
.../extensions/ext-arrows/ext-arrows.js | 24 +-
src/editor/extensions/ext-arrows/locale/en.js | 2 +-
src/editor/extensions/ext-arrows/locale/fr.js | 2 +-
.../extensions/ext-arrows/locale/zh-CN.js | 2 +-
.../extensions/ext-closepath/ext-closepath.js | 6 +-
.../extensions/ext-connector/ext-connector.js | 24 +-
.../extensions/ext-connector/locale/en.js | 2 +-
.../extensions/ext-connector/locale/fr.js | 2 +-
.../extensions/ext-connector/locale/zh-CN.js | 2 +-
.../ext-eyedropper/ext-eyedropper.js | 4 +-
.../ext-foreignobject/ext-foreignobject.js | 18 +-
src/editor/extensions/ext-grid/ext-grid.js | 12 +-
.../ext-helloworld/ext-helloworld.js | 20 +-
.../extensions/ext-imagelib/ext-imagelib.js | 6 +-
.../extensions/ext-imagelib/openclipart.js | 242 +++++++-------
.../extensions/ext-markers/ext-markers.js | 62 ++--
.../extensions/ext-markers/locale/en.js | 36 +--
.../extensions/ext-markers/locale/zh-CN.js | 36 +--
.../extensions/ext-mathjax/ext-mathjax.js | 26 +-
.../extensions/ext-opensave/ext-opensave.js | 4 +-
.../ext-overview_window.js | 4 +-
.../extensions/ext-placemark/ext-placemark.js | 54 ++--
.../extensions/ext-placemark/locale/en.js | 34 +-
.../extensions/ext-polygon/ext-polygon.js | 12 +-
.../ext-server_moinsave.js | 10 +-
.../ext-server_opensave/ext-php_savefile.js | 4 +-
.../ext-server_opensave.js | 12 +-
.../extensions/ext-shapes/ext-shapes.js | 4 +-
src/editor/extensions/ext-star/ext-star.js | 6 +-
.../extensions/ext-storage/ext-storage.js | 8 +-
.../extensions/ext-storage/storageDialog.js | 8 +-
.../ext-webappfind/ext-webappfind.js | 10 +-
.../ext-xdomain-messaging.js | 12 +-
src/editor/index.js | 4 +-
src/editor/locale.js | 2 +-
src/editor/panels/BottomPanel.js | 34 +-
src/editor/panels/LayersPanel.js | 4 +-
src/editor/panels/TopPanel.js | 24 +-
src/editor/touch.js | 4 +-
src/svgcanvas/blur-event.js | 12 +-
src/svgcanvas/clear.js | 4 +-
src/svgcanvas/coords.js | 2 +-
src/svgcanvas/copy-elem.js | 6 +-
src/svgcanvas/draw.js | 24 +-
src/svgcanvas/elem-get-set.js | 14 +-
src/svgcanvas/event.js | 26 +-
src/svgcanvas/history.js | 16 +-
src/svgcanvas/historyrecording.js | 2 +-
src/svgcanvas/jQuery.attr.js | 2 +-
src/svgcanvas/json.js | 4 +-
src/svgcanvas/layer.js | 6 +-
src/svgcanvas/math.js | 6 +-
src/svgcanvas/paste-elem.js | 2 +-
src/svgcanvas/path-actions.js | 76 ++---
src/svgcanvas/path-method.js | 66 ++--
src/svgcanvas/path.js | 56 ++--
src/svgcanvas/recalculate.js | 18 +-
src/svgcanvas/sanitize.js | 122 +++----
src/svgcanvas/select.js | 24 +-
src/svgcanvas/selected-elem.js | 30 +-
src/svgcanvas/selection.js | 12 +-
src/svgcanvas/svg-exec.js | 30 +-
src/svgcanvas/svgcanvas.js | 12 +-
src/svgcanvas/svgroot.js | 4 +-
src/svgcanvas/svgtransformlist.js | 10 +-
src/svgcanvas/text-actions.js | 8 +-
src/svgcanvas/undo.js | 6 +-
src/svgcanvas/utilities.js | 76 ++---
tools/mochawesome-cli.js | 10 +-
148 files changed, 1402 insertions(+), 1398 deletions(-)
diff --git a/.eslintrc.js b/.eslintrc.js
index 681f0768..ed2edc3a 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -11,7 +11,7 @@ module.exports = {
"plugin:sonarjs/recommended",
"eslint:recommended"
],
- plugins: ["jsdoc", "promise", "html", "import", "sonarjs"],
+ plugins: [ "jsdoc", "promise", "html", "import", "sonarjs" ],
parserOptions: {
ecmaVersion: 2020,
sourceType: "module"
@@ -22,15 +22,19 @@ module.exports = {
},
rules: {
"node/no-unsupported-features/es-syntax": 0,
- "no-unused-vars": ["error", { "argsIgnorePattern": "^_" }],
- "sonarjs/cognitive-complexity": ["warn", 40],
+ "no-unused-vars": [ "error", { "argsIgnorePattern": "^_" } ],
+ "sonarjs/cognitive-complexity": [ "warn", 40 ],
"sonarjs/no-duplicate-string": 0,
"semi" : "error",
+ "no-trailing-spaces": "error",
+ "array-bracket-spacing": [ "error", "always" ],
+ "comma-spacing": "error",
+ "object-curly-spacing": [ "error", "always" ],
},
overrides: [
{
- files: [ 'cypress/**/*'],
- extends: [
+ files: [ 'cypress/**/*' ],
+ extends: [
"plugin:cypress/recommended"
],
env: {
@@ -42,12 +46,12 @@ module.exports = {
},
rules: {
// with ci, instrumented is not created before linter
- "import/no-unresolved": [2, { ignore: ['instrumented'] }],
+ "import/no-unresolved": [ 2, { ignore: [ 'instrumented' ] } ],
"node/no-missing-import": 0
}
},
{
- files: [ 'docs/**/*'],
+ files: [ 'docs/**/*' ],
rules: { // md files have example that don't need a strict checking
"no-undef": 0,
"import/no-unresolved": 0,
diff --git a/cypress/integration/ui/accessibility.js b/cypress/integration/ui/accessibility.js
index 5ee13042..bb383668 100644
--- a/cypress/integration/ui/accessibility.js
+++ b/cypress/integration/ui/accessibility.js
@@ -13,10 +13,10 @@ describe('UI - Accessibility', function () {
cy.configureAxe({
// Todo: Reenable when have time to fix
// See https://www.deque.com/axe/axe-for-web/documentation/api-documentation/#user-content-parameters-1
- rules: [{
+ rules: [ {
id: 'meta-viewport',
enabled: false
- }]
+ } ]
/*
branding: {
brand: String,
@@ -32,10 +32,10 @@ describe('UI - Accessibility', function () {
{},
{
rules: {
- 'label-title-only': {enabled: false},
- 'page-has-heading-one': {enabled: false},
- region: {enabled: false},
- 'scrollable-region-focusable': {enabled: false}
+ 'label-title-only': { enabled: false },
+ 'page-has-heading-one': { enabled: false },
+ region: { enabled: false },
+ 'scrollable-region-focusable': { enabled: false }
}
}
);
diff --git a/cypress/integration/ui/clipboard.js b/cypress/integration/ui/clipboard.js
index d9bbb944..26d423b6 100644
--- a/cypress/integration/ui/clipboard.js
+++ b/cypress/integration/ui/clipboard.js
@@ -11,13 +11,13 @@ describe('UI - Clipboard', function () {
cy.get('#tool_source').click();
cy.get('#svg_source_textarea')
- .type('{selectall}', {force: true})
+ .type('{selectall}', { force: true })
.type(`
`, {force: true, parseSpecialCharSequences: false});
+ `, { force: true, parseSpecialCharSequences: false });
cy.get('#tool_source_save').click();
cy.get('#testCircle').should('exist');
cy.get('#svg_1').should('not.exist');
@@ -25,20 +25,20 @@ describe('UI - Clipboard', function () {
// Copy.
cy.get('#testCircle').click().rightclick();
- cy.get('#cmenu_canvas a[href="#copy"]').click({force: true});
+ cy.get('#cmenu_canvas a[href="#copy"]').click({ force: true });
// Paste.
// Scrollbars fail to recenter in Cypress test. Works fine in reality.
// Thus forcing click is needed since workspace is mostly offscreen.
- cy.get('#svgroot').rightclick({force: true});
- cy.get('#cmenu_canvas a[href="#paste"]').click({force: true});
+ cy.get('#svgroot').rightclick({ force: true });
+ cy.get('#cmenu_canvas a[href="#paste"]').click({ force: true });
cy.get('#testCircle').should('exist');
cy.get('#svg_1').should('exist');
cy.get('#svg_2').should('not.exist');
// Cut.
cy.get('#testCircle').click().rightclick();
- cy.get('#cmenu_canvas a[href="#cut"]').click({force: true});
+ cy.get('#cmenu_canvas a[href="#cut"]').click({ force: true });
cy.get('#testCircle').should('not.exist');
cy.get('#svg_1').should('exist');
cy.get('#svg_2').should('not.exist');
@@ -46,17 +46,17 @@ describe('UI - Clipboard', function () {
// Paste.
// Scrollbars fail to recenter in Cypress test. Works fine in reality.
// Thus forcing click is needed since workspace is mostly offscreen.
- cy.get('#svgroot').rightclick({force: true});
- cy.get('#cmenu_canvas a[href="#paste"]').click({force: true});
+ cy.get('#svgroot').rightclick({ force: true });
+ cy.get('#cmenu_canvas a[href="#paste"]').click({ force: true });
cy.get('#testCircle').should('not.exist');
cy.get('#svg_1').should('exist');
cy.get('#svg_2').should('exist');
// Delete.
cy.get('#svg_2').click().rightclick();
- cy.get('#cmenu_canvas a[href="#delete"]').click({force: true});
+ cy.get('#cmenu_canvas a[href="#delete"]').click({ force: true });
cy.get('#svg_1').click().rightclick();
- cy.get('#cmenu_canvas a[href="#delete"]').click({force: true});
+ cy.get('#cmenu_canvas a[href="#delete"]').click({ force: true });
cy.get('#svg_1').should('not.exist');
cy.get('#svg_2').should('not.exist');
});
diff --git a/cypress/integration/ui/control-points.js b/cypress/integration/ui/control-points.js
index 4f1fe7a3..0dcc6c3c 100644
--- a/cypress/integration/ui/control-points.js
+++ b/cypress/integration/ui/control-points.js
@@ -11,23 +11,23 @@ describe('UI - Control Points', function () {
const randomOffset = () => 2 + Math.round(10 + Math.random() * 40);
cy.get('#tool_source').click();
cy.get('#svg_source_textarea')
- .type('{selectall}', {force: true})
+ .type('{selectall}', { force: true })
.type(`
`, {force: true, parseSpecialCharSequences: false});
- cy.get('#tool_source_save').click({force: true});
+ `, { force: true, parseSpecialCharSequences: false });
+ cy.get('#tool_source_save').click({ force: true });
- cy.get('#svg_1').click({force: true}).click({force: true});
+ cy.get('#svg_1').click({ force: true }).click({ force: true });
- cy.get('#pathpointgrip_0').trigger('mousedown', {which: 1, force: true})
- .trigger('mousemove', randomOffset(), randomOffset(), {force: true})
- .trigger('mouseup', {force: true});
- cy.get('#pathpointgrip_1').trigger('mousedown', {which: 1, force: true})
- .trigger('mousemove', randomOffset(), randomOffset(), {force: true})
- .trigger('mouseup', {force: true});
+ cy.get('#pathpointgrip_0').trigger('mousedown', { which: 1, force: true })
+ .trigger('mousemove', randomOffset(), randomOffset(), { force: true })
+ .trigger('mouseup', { force: true });
+ cy.get('#pathpointgrip_1').trigger('mousedown', { which: 1, force: true })
+ .trigger('mousemove', randomOffset(), randomOffset(), { force: true })
+ .trigger('mouseup', { force: true });
cy.get('#svg_1[d]').should('not.contain', 'NaN');
});
diff --git a/cypress/integration/ui/export.js b/cypress/integration/ui/export.js
index 48d68ba2..f77877c8 100644
--- a/cypress/integration/ui/export.js
+++ b/cypress/integration/ui/export.js
@@ -14,7 +14,7 @@ describe('UI - Export tests', function () {
it('Editor - No parameters: Export button clicking; dialog opens', () => {
openMainMenu();
- cy.get('#tool_export').click({force: true});
+ cy.get('#tool_export').click({ force: true });
cy.get('#dialog_content select');
});
});
diff --git a/cypress/integration/ui/issues/issue-359.js b/cypress/integration/ui/issues/issue-359.js
index fed05e2f..d93fb5b9 100644
--- a/cypress/integration/ui/issues/issue-359.js
+++ b/cypress/integration/ui/issues/issue-359.js
@@ -11,13 +11,13 @@ describe('Fix issue 359', function () {
it('can undo without throwing', function () {
cy.get('#tool_source').click();
cy.get('#svg_source_textarea')
- .type('{selectall}', {force: true})
+ .type('{selectall}', { force: true })
.type(`
`, {parseSpecialCharSequences: false, force: true});
+ `, { parseSpecialCharSequences: false, force: true });
cy.get('#tool_source_save').click();
cy.get('#tool_undo').click();
cy.get('#tool_redo').click(); // test also redo to make the test more comprehensive
diff --git a/cypress/integration/ui/issues/issue-407.js b/cypress/integration/ui/issues/issue-407.js
index 69e67875..a7597aed 100644
--- a/cypress/integration/ui/issues/issue-407.js
+++ b/cypress/integration/ui/issues/issue-407.js
@@ -11,7 +11,7 @@ describe('Fix issue 407', function () {
it('can enter edit on text child', function () {
cy.get('#tool_source').click();
cy.get('#svg_source_textarea')
- .type('{selectall}', {force: true})
+ .type('{selectall}', { force: true })
.type(`
`, {force: true, parseSpecialCharSequences: false});
+ `, { force: true, parseSpecialCharSequences: false });
cy.get('#tool_source_save').click();
cy.get('#svg_1').click().dblclick();
cy.get('#a_text').should('exist');
cy.get('#a_text')
- .trigger('mousedown', {which: 1, force: true})
- .trigger('mouseup', {force: true})
- .dblclick({force: true});
+ .trigger('mousedown', { which: 1, force: true })
+ .trigger('mouseup', { force: true })
+ .dblclick({ force: true });
// svgedit use the #text text field to capture the text
- cy.get('#text').type('1234', {force: true});
+ cy.get('#text').type('1234', { force: true });
cy.get('#a_text').should('have.text', 'he1234llo');
});
});
diff --git a/cypress/integration/ui/issues/issue-408.js b/cypress/integration/ui/issues/issue-408.js
index b7524235..fdf1bb32 100644
--- a/cypress/integration/ui/issues/issue-408.js
+++ b/cypress/integration/ui/issues/issue-408.js
@@ -11,7 +11,7 @@ describe('Fix issue 408', function () {
it('should not throw when showing/saving svg content', function () {
cy.get('#tool_source').click();
cy.get('#svg_source_textarea')
- .type('{selectall}', {force: true})
+ .type('{selectall}', { force: true })
.type(`
`, {force: true, parseSpecialCharSequences: false});
+ `, { force: true, parseSpecialCharSequences: false });
cy.get('#tool_source_save').click();
cy.get('#svg_6').click().dblclick(); // change context
cy.get('#tool_source').click(); // reopen tool_source
diff --git a/cypress/integration/ui/issues/issue-423.js b/cypress/integration/ui/issues/issue-423.js
index 005d2311..6ab956fc 100644
--- a/cypress/integration/ui/issues/issue-423.js
+++ b/cypress/integration/ui/issues/issue-423.js
@@ -11,7 +11,7 @@ describe('Fix issue 423', function () {
it('should not throw when undoing the move', function () {
cy.get('#tool_source').click();
cy.get('#svg_source_textarea')
- .type('{selectall}', {force: true})
+ .type('{selectall}', { force: true })
.type(`
`, {parseSpecialCharSequences: false, force: true});
- cy.get('#tool_source_save').click({force: true});
+ `, { parseSpecialCharSequences: false, force: true });
+ cy.get('#tool_source_save').click({ force: true });
cy.get('#TANK1')
- .trigger('mousedown', {force: true})
- .trigger('mousemove', 50, 0, {force: true})
- .trigger('mouseup', {force: true});
- cy.get('#tool_undo').click({force: true});
+ .trigger('mousedown', { force: true })
+ .trigger('mousemove', 50, 0, { force: true })
+ .trigger('mouseup', { force: true });
+ cy.get('#tool_undo').click({ force: true });
});
});
diff --git a/cypress/integration/ui/scenario.js b/cypress/integration/ui/scenario.js
index e5566709..df1eec6a 100644
--- a/cypress/integration/ui/scenario.js
+++ b/cypress/integration/ui/scenario.js
@@ -12,97 +12,97 @@ describe('use various parts of svg-edit', function () {
});
it('check tool_source', function () {
- cy.get('#tool_source').click({force: true});
+ cy.get('#tool_source').click({ force: true });
cy.get('#svg_source_textarea')
- .type('{selectall}', {force: true})
+ .type('{selectall}', { force: true })
.type(`
`, {force: true, parseSpecialCharSequences: false});
- cy.get('#tool_source_save').click({force: true});
+ `, { force: true, parseSpecialCharSequences: false });
+ cy.get('#tool_source_save').click({ force: true });
testSnapshot();
});
it('check tool_fhpath', function () {
cy.get('#tool_fhpath')
- .click({force: true});
+ .click({ force: true });
cy.get('#rect')
- .trigger('mousemove', 200, 200, {force: true})
- .trigger('mousedown', 200, 200, {force: true})
- .trigger('mousemove', 20, 20, {force: true})
- .trigger('mouseup', {force: true});
+ .trigger('mousemove', 200, 200, { force: true })
+ .trigger('mousedown', 200, 200, { force: true })
+ .trigger('mousemove', 20, 20, { force: true })
+ .trigger('mouseup', { force: true });
cy.get('#svgcontent').toMatchSnapshot();
});
it('check tool_text', function () {
cy.get('#tool_text')
- .click({force: true});
+ .click({ force: true });
cy.get('#rect')
- .trigger('mousedown', 46, 35, {force: true})
- .trigger('mouseup', {force: true});
+ .trigger('mousedown', 46, 35, { force: true })
+ .trigger('mouseup', { force: true });
// svgedit use the #text text field to capture the text
- cy.get('#text').type('AB', {force: true});
+ cy.get('#text').type('AB', { force: true });
testSnapshot();
});
it('check tool_clone', function () {
- cy.get('#svg_1').click({force: true});
+ cy.get('#svg_1').click({ force: true });
cy.get('#tool_clone')
- .click({force: true});
+ .click({ force: true });
testSnapshot();
});
it('check tool_italic', function () {
- cy.get('#svg_1').click({force: true});
+ cy.get('#svg_1').click({ force: true });
cy.get('#tool_italic')
- .click({force: true});
+ .click({ force: true });
testSnapshot();
});
it('check tool_bold', function () {
- cy.get('#svg_1').click({force: true});
+ cy.get('#svg_1').click({ force: true });
cy.get('#tool_bold')
- .click({force: true});
+ .click({ force: true });
testSnapshot();
});
it('check change color', function () {
- cy.get('#svg_1').click({force: true});
+ cy.get('#svg_1').click({ force: true });
cy.get('[data-rgb="#ffff00"]')
- .click({force: true});
+ .click({ force: true });
testSnapshot();
});
it('check tool_text_anchor_start', function () {
- cy.get('#svg_1').click({force: true});
+ cy.get('#svg_1').click({ force: true });
cy.get('#tool_text_anchor_start')
- .click({force: true});
+ .click({ force: true });
testSnapshot();
});
it('check tool_text_anchor_middle', function () {
- cy.get('#svg_1').click({force: true});
+ cy.get('#svg_1').click({ force: true });
cy.get('#tool_text_anchor_middle')
- .click({force: true});
+ .click({ force: true });
testSnapshot();
});
it('check tool_text_anchor_end', function () {
- cy.get('#svg_1').click({force: true});
+ cy.get('#svg_1').click({ force: true });
cy.get('#tool_text_anchor_end')
- .click({force: true});
+ .click({ force: true });
testSnapshot();
});
it('check tool_star', function () {
cy.get('#tool_star')
- .click({force: true});
+ .click({ force: true });
cy.get('#svgcontent')
- .trigger('mousedown', 300, 150, {force: true})
- .trigger('mousemove', 300, 250, {force: true})
- .trigger('mouseup', {force: true});
+ .trigger('mousedown', 300, 150, { force: true })
+ .trigger('mousemove', 300, 250, { force: true })
+ .trigger('mouseup', { force: true });
testSnapshot();
});
it('check tool_polygon', function () {
cy.get('#tool_polygon')
- .click({force: true});
+ .click({ force: true });
cy.get('#svgcontent')
- .trigger('mousedown', 350, 250, {force: true})
- .trigger('mousemove', 350, 370, {force: true})
- .trigger('mouseup', {force: true});
+ .trigger('mousedown', 350, 250, { force: true })
+ .trigger('mousemove', 350, 370, { force: true })
+ .trigger('mouseup', { force: true });
testSnapshot();
});
});
diff --git a/cypress/integration/ui/tool-selection.js b/cypress/integration/ui/tool-selection.js
index d96d37b2..c2e63289 100644
--- a/cypress/integration/ui/tool-selection.js
+++ b/cypress/integration/ui/tool-selection.js
@@ -11,7 +11,7 @@ describe('UI - Tool selection', function () {
cy.get('#tools_rect')
.should('not.have.attr', 'pressed');
cy.get('#tools_rect')
- .trigger('click', {force: true})
+ .trigger('click', { force: true })
.should('have.attr', 'pressed');
});
});
diff --git a/cypress/integration/unit/contextmenu.js b/cypress/integration/unit/contextmenu.js
index ef3fce6d..63e15a2f 100644
--- a/cypress/integration/unit/contextmenu.js
+++ b/cypress/integration/unit/contextmenu.js
@@ -19,26 +19,26 @@ describe('contextmenu', function () {
it('Test svgedit.contextmenu does not add invalid menu item', function () {
assert.throws(
- () => contextmenu.add({id: 'justanid'}),
+ () => contextmenu.add({ id: 'justanid' }),
null, null,
'menu item with just an id is invalid'
);
assert.throws(
- () => contextmenu.add({id: 'idandlabel', label: 'anicelabel'}),
+ () => contextmenu.add({ id: 'idandlabel', label: 'anicelabel' }),
null, null,
'menu item with just an id and label is invalid'
);
assert.throws(
- () => contextmenu.add({id: 'idandlabel', label: 'anicelabel', action: 'notafunction'}),
+ () => contextmenu.add({ id: 'idandlabel', label: 'anicelabel', action: 'notafunction' }),
null, null,
'menu item with action that is not a function is invalid'
);
});
it('Test svgedit.contextmenu adds valid menu item', function () {
- const validItem = {id: 'valid', label: 'anicelabel', action () { /* empty fn */ }};
+ const validItem = { id: 'valid', label: 'anicelabel', action () { /* empty fn */ } };
contextmenu.add(validItem);
assert.ok(contextmenu.hasCustomHandler('valid'), 'Valid menu item is added.');
@@ -46,8 +46,8 @@ describe('contextmenu', function () {
});
it('Test svgedit.contextmenu rejects valid duplicate menu item id', function () {
- const validItem1 = {id: 'valid', label: 'anicelabel', action () { /* empty fn */ }};
- const validItem2 = {id: 'valid', label: 'anicelabel', action () { /* empty fn */ }};
+ const validItem1 = { id: 'valid', label: 'anicelabel', action () { /* empty fn */ } };
+ const validItem2 = { id: 'valid', label: 'anicelabel', action () { /* empty fn */ } };
contextmenu.add(validItem1);
assert.throws(
diff --git a/cypress/integration/unit/coords.js b/cypress/integration/unit/coords.js
index 51dd7ee0..22fcd23f 100644
--- a/cypress/integration/unit/coords.js
+++ b/cypress/integration/unit/coords.js
@@ -1,6 +1,6 @@
import '../../../instrumented/editor/jquery.min.js';
-import {NS} from '../../../instrumented/common/namespaces.js';
+import { NS } from '../../../instrumented/common/namespaces.js';
import * as utilities from '../../../instrumented/svgcanvas/utilities.js';
import * as coords from '../../../instrumented/svgcanvas/coords.js';
diff --git a/cypress/integration/unit/draw.js b/cypress/integration/unit/draw.js
index 0bb610bf..f18338e5 100644
--- a/cypress/integration/unit/draw.js
+++ b/cypress/integration/unit/draw.js
@@ -1,6 +1,6 @@
import '../../../instrumented/editor/jquery.min.js';
-import {NS} from '../../../instrumented/common/namespaces.js';
+import { NS } from '../../../instrumented/common/namespaces.js';
import * as draw from '../../../instrumented/svgcanvas/draw.js';
import * as units from '../../../instrumented/common/units.js';
@@ -61,7 +61,7 @@ describe('draw.Drawing', function () {
*/
function createSVGElement (jsonMap) {
const elem = document.createElementNS(NS.SVG, jsonMap.element);
- Object.entries(jsonMap.attr).forEach(([attr, value]) => {
+ Object.entries(jsonMap.attr).forEach(([ attr, value ]) => {
elem.setAttribute(attr, value);
});
return elem;
@@ -86,7 +86,7 @@ describe('draw.Drawing', function () {
layer3.append(layer3Title);
svgElem.append(layer3);
- return [layer1, layer2, layer3];
+ return [ layer1, layer2, layer3 ];
};
const createSomeElementsInGroup = function (group) {
@@ -101,11 +101,11 @@ describe('draw.Drawing', function () {
// }),
createSVGElement({
element: 'rect',
- attr: {x: '0', y: '1', width: '5', height: '10'}
+ attr: { x: '0', y: '1', width: '5', height: '10' }
}),
createSVGElement({
element: 'line',
- attr: {x1: '0', y1: '1', x2: '5', y2: '6'}
+ attr: { x1: '0', y1: '1', x2: '5', y2: '6' }
})
);
@@ -115,7 +115,7 @@ describe('draw.Drawing', function () {
});
g.append(createSVGElement({
element: 'rect',
- attr: {x: '0', y: '1', width: '5', height: '10'}
+ attr: { x: '0', y: '1', width: '5', height: '10' }
}));
group.append(g);
return 4;
diff --git a/cypress/integration/unit/history.js b/cypress/integration/unit/history.js
index 11b00cd6..f9d13e2a 100644
--- a/cypress/integration/unit/history.js
+++ b/cypress/integration/unit/history.js
@@ -1,6 +1,6 @@
import '../../../instrumented/editor/jquery.min.js';
-import {NS} from '../../../instrumented/common/namespaces.js';
+import { NS } from '../../../instrumented/common/namespaces.js';
import * as transformlist from '../../../instrumented/svgcanvas/svgtransformlist.js';
import * as utilities from '../../../instrumented/svgcanvas/utilities.js';
import * as hstory from '../../../instrumented/svgcanvas/history.js';
@@ -402,7 +402,7 @@ describe('history', function () {
it('Test ChangeElementCommand', function () {
this.div1.setAttribute('title', 'new title');
let change = new hstory.ChangeElementCommand(this.div1,
- {title: 'old title', class: 'foo'});
+ { title: 'old title', class: 'foo' });
assert.ok(change.unapply);
assert.ok(change.apply);
assert.equal(typeof change.unapply, typeof function () { /* empty fn */ });
@@ -418,7 +418,7 @@ describe('history', function () {
this.div1.textContent = 'inner text';
change = new hstory.ChangeElementCommand(this.div1,
- {'#text': null});
+ { '#text': null });
change.unapply();
assert.ok(!this.div1.textContent);
@@ -428,7 +428,7 @@ describe('history', function () {
this.div1.textContent = '';
change = new hstory.ChangeElementCommand(this.div1,
- {'#text': 'old text'});
+ { '#text': 'old text' });
change.unapply();
assert.equal(this.div1.textContent, 'old text');
@@ -457,7 +457,7 @@ describe('history', function () {
gethrefvalue = '#newhref';
change = new hstory.ChangeElementCommand(rect,
- {'#href': '#oldhref'});
+ { '#href': '#oldhref' });
assert.equal(justCalled, 'getHref');
justCalled = null;
@@ -472,7 +472,7 @@ describe('history', function () {
const line = document.createElementNS(NS.SVG, 'line');
line.setAttribute('class', 'newClass');
- change = new hstory.ChangeElementCommand(line, {class: 'oldClass'});
+ change = new hstory.ChangeElementCommand(line, { class: 'oldClass' });
assert.ok(change.unapply);
assert.ok(change.apply);
diff --git a/cypress/integration/unit/math.js b/cypress/integration/unit/math.js
index 3852a2a0..deba647d 100644
--- a/cypress/integration/unit/math.js
+++ b/cypress/integration/unit/math.js
@@ -1,6 +1,6 @@
import '../../../instrumented/editor/jquery.min.js';
-import {NS} from '../../../instrumented/common/namespaces.js';
+import { NS } from '../../../instrumented/common/namespaces.js';
import * as math from '../../../instrumented/svgcanvas/math.js';
describe('math', function () {
@@ -17,7 +17,7 @@ describe('math', function () {
});
it('Test svgedit.math.transformPoint() function', function () {
- const {transformPoint} = math;
+ const { transformPoint } = math;
const m = svg.createSVGMatrix();
m.a = 1; m.b = 0;
@@ -51,7 +51,7 @@ describe('math', function () {
it('Test svgedit.math.matrixMultiply() function', function () {
const mult = math.matrixMultiply;
- const {isIdentity} = math;
+ const { isIdentity } = math;
// translate there and back
const tr1 = svg.createSVGMatrix().translate(100, 50),
@@ -84,7 +84,7 @@ describe('math', function () {
});
it('Test svgedit.math.transformBox() function', function () {
- const {transformBox} = math;
+ const { transformBox } = math;
const m = svg.createSVGMatrix();
m.a = 1; m.b = 0;
diff --git a/cypress/integration/unit/path.js b/cypress/integration/unit/path.js
index 2c82c12e..1636b79c 100644
--- a/cypress/integration/unit/path.js
+++ b/cypress/integration/unit/path.js
@@ -3,11 +3,11 @@ import 'pathseg';
import '../../../instrumented/editor/jquery.min.js';
-import {NS} from '../../../instrumented/common/namespaces.js';
+import { NS } from '../../../instrumented/common/namespaces.js';
import * as utilities from '../../../instrumented/svgcanvas/utilities.js';
import * as pathModule from '../../../instrumented/svgcanvas/path.js';
-import {Path, Segment} from '../../../instrumented/svgcanvas/path-method.js';
-import {init as unitsInit} from '../../../instrumented/common/units.js';
+import { Path, Segment } from '../../../instrumented/svgcanvas/path-method.js';
+import { init as unitsInit } from '../../../instrumented/common/units.js';
describe('path', function () {
/**
@@ -48,7 +48,7 @@ describe('path', function () {
const path = document.createElementNS(NS.SVG, 'path');
path.setAttribute('d', 'M0,0 L10,11 L20,21Z');
- const [mockPathContext, mockUtilitiesContext] = getMockContexts();
+ const [ mockPathContext, mockUtilitiesContext ] = getMockContexts();
pathModule.init(mockPathContext);
utilities.init(mockUtilitiesContext);
new Path(path); // eslint-disable-line no-new
@@ -57,7 +57,7 @@ describe('path', function () {
assert.equal(path.pathSegList.getItem(1).x, 10);
assert.equal(path.pathSegList.getItem(1).y, 11);
- pathModule.replacePathSeg(SVGPathSeg.PATHSEG_LINETO_REL, 1, [30, 31], path);
+ pathModule.replacePathSeg(SVGPathSeg.PATHSEG_LINETO_REL, 1, [ 30, 31 ], path);
assert.equal(path.pathSegList.getItem(1).pathSegTypeAsLetter, 'l');
assert.equal(path.pathSegList.getItem(1).x, 30);
@@ -68,7 +68,7 @@ describe('path', function () {
const path = document.createElementNS(NS.SVG, 'path');
path.setAttribute('d', 'M0,0 L10,11 L20,21Z');
- const [mockPathContext, mockUtilitiesContext] = getMockContexts();
+ const [ mockPathContext, mockUtilitiesContext ] = getMockContexts();
pathModule.init(mockPathContext);
utilities.init(mockUtilitiesContext);
new Path(path); // eslint-disable-line no-new
@@ -78,7 +78,7 @@ describe('path', function () {
assert.equal(path.pathSegList.getItem(1).y, 11);
const segment = new Segment(1, path.pathSegList.getItem(1));
- segment.setType(SVGPathSeg.PATHSEG_LINETO_REL, [30, 31]);
+ segment.setType(SVGPathSeg.PATHSEG_LINETO_REL, [ 30, 31 ]);
assert.equal(segment.item.pathSegTypeAsLetter, 'l');
assert.equal(segment.item.x, 30);
assert.equal(segment.item.y, 31);
@@ -96,7 +96,7 @@ describe('path', function () {
path.setAttribute('d', 'M0,0 C11,12 13,14 15,16 Z');
svg.append(path);
- const [mockPathContext, mockUtilitiesContext] = getMockContexts(svg);
+ const [ mockPathContext, mockUtilitiesContext ] = getMockContexts(svg);
pathModule.init(mockPathContext);
utilities.init(mockUtilitiesContext);
const segment = new Segment(1, path.pathSegList.getItem(1));
@@ -110,7 +110,7 @@ describe('path', function () {
assert.equal(path.pathSegList.getItem(1).x, 15);
assert.equal(path.pathSegList.getItem(1).y, 16);
- segment.setType(SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL, [30, 31, 32, 33, 34, 35]);
+ segment.setType(SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL, [ 30, 31, 32, 33, 34, 35 ]);
assert.equal(path.pathSegList.getItem(1).pathSegTypeAsLetter, 'c');
assert.equal(path.pathSegList.getItem(1).x1, 32);
assert.equal(path.pathSegList.getItem(1).y1, 33);
@@ -124,7 +124,7 @@ describe('path', function () {
const path = document.createElementNS(NS.SVG, 'path');
path.setAttribute('d', 'M0,0 L10,11 L20,21Z');
- const [mockPathContext, mockUtilitiesContext] = getMockContexts();
+ const [ mockPathContext, mockUtilitiesContext ] = getMockContexts();
pathModule.init(mockPathContext);
utilities.init(mockUtilitiesContext);
new Path(path); // eslint-disable-line no-new
@@ -144,7 +144,7 @@ describe('path', function () {
const path = document.createElementNS(NS.SVG, 'path');
path.setAttribute('d', 'M0,0 C11,12 13,14 15,16 Z');
- const [mockPathContext, mockUtilitiesContext] = getMockContexts();
+ const [ mockPathContext, mockUtilitiesContext ] = getMockContexts();
pathModule.init(mockPathContext);
utilities.init(mockUtilitiesContext);
new Path(path); // eslint-disable-line no-new
diff --git a/cypress/integration/unit/sanitize.js b/cypress/integration/unit/sanitize.js
index 4ff4f853..45a95a98 100644
--- a/cypress/integration/unit/sanitize.js
+++ b/cypress/integration/unit/sanitize.js
@@ -1,6 +1,6 @@
import '../../../instrumented/editor/jquery.min.js';
-import {NS} from '../../../instrumented/common/namespaces.js';
+import { NS } from '../../../instrumented/common/namespaces.js';
import * as sanitize from '../../../instrumented/svgcanvas/sanitize.js';
describe('sanitize', function () {
diff --git a/cypress/integration/unit/select.js b/cypress/integration/unit/select.js
index 8d3b2672..0ee2a376 100644
--- a/cypress/integration/unit/select.js
+++ b/cypress/integration/unit/select.js
@@ -1,7 +1,7 @@
import '../../../instrumented/editor/jquery.min.js';
import * as select from '../../../instrumented/svgcanvas/select.js';
-import {NS} from '../../../instrumented/common/namespaces.js';
+import { NS } from '../../../instrumented/common/namespaces.js';
describe('select', function () {
const sandbox = document.createElement('div');
@@ -10,7 +10,7 @@ describe('select', function () {
let svgroot;
let svgcontent;
const mockConfig = {
- dimensions: [640, 480]
+ dimensions: [ 640, 480 ]
};
const dataStorage = {
_storage: new WeakMap(),
@@ -33,7 +33,7 @@ describe('select', function () {
}
return ret;
}
- };
+ };
/**
* @implements {module:select.SVGFactory}
@@ -41,7 +41,7 @@ describe('select', function () {
const mockFactory = {
createSVGElement (jsonMap) {
const elem = document.createElementNS(NS.SVG, jsonMap.element);
- Object.entries(jsonMap.attr).forEach(([attr, value]) => {
+ Object.entries(jsonMap.attr).forEach(([ attr, value ]) => {
elem.setAttribute(attr, value);
});
return elem;
@@ -58,11 +58,11 @@ describe('select', function () {
beforeEach(() => {
svgroot = mockFactory.createSVGElement({
element: 'svg',
- attr: {id: 'svgroot'}
+ attr: { id: 'svgroot' }
});
svgcontent = mockFactory.createSVGElement({
element: 'svg',
- attr: {id: 'svgcontent'}
+ attr: { id: 'svgcontent' }
});
svgroot.append(svgcontent);
diff --git a/cypress/integration/unit/svgtransformlist.js b/cypress/integration/unit/svgtransformlist.js
index f5a35859..888b4a3e 100644
--- a/cypress/integration/unit/svgtransformlist.js
+++ b/cypress/integration/unit/svgtransformlist.js
@@ -1,8 +1,8 @@
import '../../../instrumented/editor/jquery.min.js';
-import {NS} from '../../../instrumented/common/namespaces.js';
+import { NS } from '../../../instrumented/common/namespaces.js';
import * as transformlist from '../../../instrumented/svgcanvas/svgtransformlist.js';
-import {disableSupportsNativeTransformLists} from '../../../instrumented/common/browser.js';
+import { disableSupportsNativeTransformLists } from '../../../instrumented/common/browser.js';
import almostEqualsPlugin from '../../support/assert-almostEquals.js';
import expectOutOfBoundsExceptionPlugin from '../../support/assert-expectOutOfBoundsException.js';
diff --git a/cypress/integration/unit/test1.js b/cypress/integration/unit/test1.js
index fe073e37..64f2ee83 100644
--- a/cypress/integration/unit/test1.js
+++ b/cypress/integration/unit/test1.js
@@ -34,14 +34,14 @@ describe('Basic Module', function () {
workarea.append(svgcanvas);
const toolsLeft = document.createElement('div');
toolsLeft.id = 'tools_left';
-
+
svgEditor.append(workarea, toolsLeft);
document.body.append(svgEditor);
svgCanvas = new SvgCanvas(
document.getElementById('svgcanvas'), {
canvas_expansion: 3,
- dimensions: [640, 480],
+ dimensions: [ 640, 480 ],
initFill: {
color: 'FF0000', // solid red
opacity: 1
@@ -55,7 +55,7 @@ describe('Basic Module', function () {
imgPath: '../editor/images/',
langPath: 'locale/',
extPath: 'extensions/',
- extensions: ['ext-arrows.js', 'ext-connector.js', 'ext-eyedropper.js'],
+ extensions: [ 'ext-arrows.js', 'ext-connector.js', 'ext-eyedropper.js' ],
initTool: 'select',
wireframe: false
}
diff --git a/cypress/integration/unit/units.js b/cypress/integration/unit/units.js
index b3e9e36e..6134ea55 100644
--- a/cypress/integration/unit/units.js
+++ b/cypress/integration/unit/units.js
@@ -51,7 +51,7 @@ describe('units', function () {
assert.ok(units.shortFloat);
assert.equal(typeof units.shortFloat, typeof function () { /* empty fn */ });
- const {shortFloat} = units;
+ const { shortFloat } = units;
assert.equal(shortFloat(0.00000001), 0);
assert.equal(shortFloat(1), 1);
assert.equal(shortFloat(3.45678), 3.4568);
@@ -63,7 +63,7 @@ describe('units', function () {
assert.ok(units.isValidUnit);
assert.equal(typeof units.isValidUnit, typeof function () { /* empty fn */ });
- const {isValidUnit} = units;
+ const { isValidUnit } = units;
assert.ok(isValidUnit('0'));
assert.ok(isValidUnit('1'));
assert.ok(isValidUnit('1.1'));
diff --git a/cypress/integration/unit/utilities-bbox.js b/cypress/integration/unit/utilities-bbox.js
index c21108f0..433c1d44 100644
--- a/cypress/integration/unit/utilities-bbox.js
+++ b/cypress/integration/unit/utilities-bbox.js
@@ -3,7 +3,7 @@ import 'pathseg';
import '../../../instrumented/editor/jquery.min.js';
-import {NS} from '../../../instrumented/common/namespaces.js';
+import { NS } from '../../../instrumented/common/namespaces.js';
import * as utilities from '../../../instrumented/svgcanvas/utilities.js';
import * as transformlist from '../../../instrumented/svgcanvas/svgtransformlist.js';
import * as math from '../../../instrumented/svgcanvas/math.js';
@@ -20,7 +20,7 @@ describe('utilities bbox', function () {
*/
function mockCreateSVGElement (jsonMap) {
const elem = document.createElementNS(NS.SVG, jsonMap.element);
- Object.entries(jsonMap.attr).forEach(([attr, value]) => {
+ Object.entries(jsonMap.attr).forEach(([ attr, value ]) => {
elem.setAttribute(attr, value);
});
return elem;
@@ -55,7 +55,7 @@ describe('utilities bbox', function () {
const type = seg.pathSegType;
if (type === 1) { continue; }
const pts = [];
- ['', 1, 2].forEach(function (n) {
+ [ '', 1, 2 ].forEach(function (n) {
const x = seg['x' + n], y = seg['y' + n];
if (x !== undefined && y !== undefined) {
const pt = math.transformPoint(x, y, m);
@@ -82,7 +82,7 @@ describe('utilities bbox', function () {
svgroot = mockCreateSVGElement({
element: 'svg',
- attr: {id: 'svgroot'}
+ attr: { id: 'svgroot' }
});
sandbox.append(svgroot);
@@ -101,41 +101,41 @@ describe('utilities bbox', function () {
});
it('Test getBBoxWithTransform and no transform', function () {
- const {getBBoxWithTransform} = utilities;
+ const { getBBoxWithTransform } = utilities;
let elem = mockCreateSVGElement({
element: 'path',
- attr: {id: 'path', d: 'M0,1 L2,3'}
+ attr: { id: 'path', d: 'M0,1 L2,3' }
});
svgroot.append(elem);
let bbox = getBBoxWithTransform(elem, mockaddSVGElementFromJson, mockPathActions);
- assert.deepEqual(bbox, {x: 0, y: 1, width: 2, height: 2});
+ assert.deepEqual(bbox, { x: 0, y: 1, width: 2, height: 2 });
assert.equal(mockaddSVGElementFromJsonCallCount, 0);
elem.remove();
elem = mockCreateSVGElement({
element: 'rect',
- attr: {id: 'rect', x: '0', y: '1', width: '5', height: '10'}
+ attr: { id: 'rect', x: '0', y: '1', width: '5', height: '10' }
});
svgroot.append(elem);
bbox = getBBoxWithTransform(elem, mockaddSVGElementFromJson, mockPathActions);
- assert.deepEqual(bbox, {x: 0, y: 1, width: 5, height: 10});
+ assert.deepEqual(bbox, { x: 0, y: 1, width: 5, height: 10 });
assert.equal(mockaddSVGElementFromJsonCallCount, 0);
elem.remove();
elem = mockCreateSVGElement({
element: 'line',
- attr: {id: 'line', x1: '0', y1: '1', x2: '5', y2: '6'}
+ attr: { id: 'line', x1: '0', y1: '1', x2: '5', y2: '6' }
});
svgroot.append(elem);
bbox = getBBoxWithTransform(elem, mockaddSVGElementFromJson, mockPathActions);
- assert.deepEqual(bbox, {x: 0, y: 1, width: 5, height: 5});
+ assert.deepEqual(bbox, { x: 0, y: 1, width: 5, height: 5 });
assert.equal(mockaddSVGElementFromJsonCallCount, 0);
elem.remove();
elem = mockCreateSVGElement({
element: 'rect',
- attr: {id: 'rect', x: '0', y: '1', width: '5', height: '10'}
+ attr: { id: 'rect', x: '0', y: '1', width: '5', height: '10' }
});
const g = mockCreateSVGElement({
element: 'g',
@@ -144,17 +144,17 @@ describe('utilities bbox', function () {
g.append(elem);
svgroot.append(g);
bbox = getBBoxWithTransform(elem, mockaddSVGElementFromJson, mockPathActions);
- assert.deepEqual(bbox, {x: 0, y: 1, width: 5, height: 10});
+ assert.deepEqual(bbox, { x: 0, y: 1, width: 5, height: 10 });
assert.equal(mockaddSVGElementFromJsonCallCount, 0);
g.remove();
});
it.skip('Test getBBoxWithTransform and a rotation transform', function () {
- const {getBBoxWithTransform} = utilities;
+ const { getBBoxWithTransform } = utilities;
let elem = mockCreateSVGElement({
element: 'path',
- attr: {id: 'path', d: 'M10,10 L20,20', transform: 'rotate(45 10,10)'}
+ attr: { id: 'path', d: 'M10,10 L20,20', transform: 'rotate(45 10,10)' }
});
svgroot.append(elem);
let bbox = getBBoxWithTransform(elem, mockaddSVGElementFromJson, mockPathActions);
@@ -166,7 +166,7 @@ describe('utilities bbox', function () {
elem = mockCreateSVGElement({
element: 'rect',
- attr: {id: 'rect', x: '10', y: '10', width: '10', height: '20', transform: 'rotate(90 15,20)'}
+ attr: { id: 'rect', x: '10', y: '10', width: '10', height: '20', transform: 'rotate(90 15,20)' }
});
svgroot.append(elem);
bbox = getBBoxWithTransform(elem, mockaddSVGElementFromJson, mockPathActions);
@@ -177,12 +177,12 @@ describe('utilities bbox', function () {
assert.equal(mockaddSVGElementFromJsonCallCount, 1);
elem.remove();
- const rect = {x: 10, y: 10, width: 10, height: 20};
+ const rect = { x: 10, y: 10, width: 10, height: 20 };
const angle = 45;
- const origin = {x: 15, y: 20}; // eslint-disable-line no-shadow
+ const origin = { x: 15, y: 20 }; // eslint-disable-line no-shadow
elem = mockCreateSVGElement({
element: 'rect',
- attr: {id: 'rect2', x: rect.x, y: rect.y, width: rect.width, height: rect.height, transform: 'rotate(' + angle + ' ' + origin.x + ',' + origin.y + ')'}
+ attr: { id: 'rect2', x: rect.x, y: rect.y, width: rect.width, height: rect.height, transform: 'rotate(' + angle + ' ' + origin.x + ',' + origin.y + ')' }
});
svgroot.append(elem);
mockaddSVGElementFromJsonCallCount = 0;
@@ -198,11 +198,11 @@ describe('utilities bbox', function () {
// Same as previous but wrapped with g and the transform is with the g.
elem = mockCreateSVGElement({
element: 'rect',
- attr: {id: 'rect3', x: rect.x, y: rect.y, width: rect.width, height: rect.height}
+ attr: { id: 'rect3', x: rect.x, y: rect.y, width: rect.width, height: rect.height }
});
const g = mockCreateSVGElement({
element: 'g',
- attr: {transform: 'rotate(' + angle + ' ' + origin.x + ',' + origin.y + ')'}
+ attr: { transform: 'rotate(' + angle + ' ' + origin.x + ',' + origin.y + ')' }
});
g.append(elem);
svgroot.append(g);
@@ -217,7 +217,7 @@ describe('utilities bbox', function () {
elem = mockCreateSVGElement({
element: 'ellipse',
- attr: {id: 'ellipse1', cx: '100', cy: '100', rx: '50', ry: '50', transform: 'rotate(45 100,100)'}
+ attr: { id: 'ellipse1', cx: '100', cy: '100', rx: '50', ry: '50', transform: 'rotate(45 100,100)' }
});
svgroot.append(elem);
mockaddSVGElementFromJsonCallCount = 0;
@@ -232,7 +232,7 @@ describe('utilities bbox', function () {
});
it.skip('Test getBBoxWithTransform with rotation and matrix transforms', function () {
- const {getBBoxWithTransform} = utilities;
+ const { getBBoxWithTransform } = utilities;
let tx = 10; // tx right
let ty = 10; // tx down
@@ -241,7 +241,7 @@ describe('utilities bbox', function () {
let matrix = 'matrix(1,0,0,1,' + txInRotatedSpace + ',' + tyInRotatedSpace + ')';
let elem = mockCreateSVGElement({
element: 'path',
- attr: {id: 'path', d: 'M10,10 L20,20', transform: 'rotate(45 10,10) ' + matrix}
+ attr: { id: 'path', d: 'M10,10 L20,20', transform: 'rotate(45 10,10) ' + matrix }
});
svgroot.append(elem);
let bbox = getBBoxWithTransform(elem, mockaddSVGElementFromJson, mockPathActions);
@@ -256,7 +256,7 @@ describe('utilities bbox', function () {
matrix = 'matrix(1,0,0,1,' + txInRotatedSpace + ',' + tyInRotatedSpace + ')';
elem = mockCreateSVGElement({
element: 'rect',
- attr: {id: 'rect', x: '10', y: '10', width: '10', height: '20', transform: 'rotate(90 15,20) ' + matrix}
+ attr: { id: 'rect', x: '10', y: '10', width: '10', height: '20', transform: 'rotate(90 15,20) ' + matrix }
});
svgroot.append(elem);
bbox = getBBoxWithTransform(elem, mockaddSVGElementFromJson, mockPathActions);
@@ -266,9 +266,9 @@ describe('utilities bbox', function () {
assert.close(bbox.height, 10, EPSILON);
elem.remove();
- const rect = {x: 10, y: 10, width: 10, height: 20};
+ const rect = { x: 10, y: 10, width: 10, height: 20 };
const angle = 45;
- const origin = {x: 15, y: 20}; // eslint-disable-line no-shadow
+ const origin = { x: 15, y: 20 }; // eslint-disable-line no-shadow
tx = 10; // tx right
ty = 10; // tx down
txInRotatedSpace = Math.sqrt(tx * tx + ty * ty); // translate in rotated 45 space.
@@ -276,7 +276,7 @@ describe('utilities bbox', function () {
matrix = 'matrix(1,0,0,1,' + txInRotatedSpace + ',' + tyInRotatedSpace + ')';
elem = mockCreateSVGElement({
element: 'rect',
- attr: {id: 'rect2', x: rect.x, y: rect.y, width: rect.width, height: rect.height, transform: 'rotate(' + angle + ' ' + origin.x + ',' + origin.y + ') ' + matrix}
+ attr: { id: 'rect2', x: rect.x, y: rect.y, width: rect.width, height: rect.height, transform: 'rotate(' + angle + ' ' + origin.x + ',' + origin.y + ') ' + matrix }
});
svgroot.append(elem);
bbox = getBBoxWithTransform(elem, mockaddSVGElementFromJson, mockPathActions);
@@ -290,11 +290,11 @@ describe('utilities bbox', function () {
// Same as previous but wrapped with g and the transform is with the g.
elem = mockCreateSVGElement({
element: 'rect',
- attr: {id: 'rect3', x: rect.x, y: rect.y, width: rect.width, height: rect.height}
+ attr: { id: 'rect3', x: rect.x, y: rect.y, width: rect.width, height: rect.height }
});
const g = mockCreateSVGElement({
element: 'g',
- attr: {transform: 'rotate(' + angle + ' ' + origin.x + ',' + origin.y + ') ' + matrix}
+ attr: { transform: 'rotate(' + angle + ' ' + origin.x + ',' + origin.y + ') ' + matrix }
});
g.append(elem);
svgroot.append(g);
@@ -307,7 +307,7 @@ describe('utilities bbox', function () {
elem = mockCreateSVGElement({
element: 'ellipse',
- attr: {id: 'ellipse1', cx: '100', cy: '100', rx: '50', ry: '50', transform: 'rotate(45 100,100) ' + matrix}
+ attr: { id: 'ellipse1', cx: '100', cy: '100', rx: '50', ry: '50', transform: 'rotate(45 100,100) ' + matrix }
});
svgroot.append(elem);
bbox = getBBoxWithTransform(elem, mockaddSVGElementFromJson, mockPathActions);
@@ -320,39 +320,39 @@ describe('utilities bbox', function () {
});
it('Test getStrokedBBox with stroke-width 10', function () {
- const {getStrokedBBox} = utilities;
+ const { getStrokedBBox } = utilities;
const strokeWidth = 10;
let elem = mockCreateSVGElement({
element: 'path',
- attr: {id: 'path', d: 'M0,1 L2,3', 'stroke-width': strokeWidth}
+ attr: { id: 'path', d: 'M0,1 L2,3', 'stroke-width': strokeWidth }
});
svgroot.append(elem);
- let bbox = getStrokedBBox([elem], mockaddSVGElementFromJson, mockPathActions);
- assert.deepEqual(bbox, {x: 0 - strokeWidth / 2, y: 1 - strokeWidth / 2, width: 2 + strokeWidth, height: 2 + strokeWidth});
+ let bbox = getStrokedBBox([ elem ], mockaddSVGElementFromJson, mockPathActions);
+ assert.deepEqual(bbox, { x: 0 - strokeWidth / 2, y: 1 - strokeWidth / 2, width: 2 + strokeWidth, height: 2 + strokeWidth });
elem.remove();
elem = mockCreateSVGElement({
element: 'rect',
- attr: {id: 'rect', x: '0', y: '1', width: '5', height: '10', 'stroke-width': strokeWidth}
+ attr: { id: 'rect', x: '0', y: '1', width: '5', height: '10', 'stroke-width': strokeWidth }
});
svgroot.append(elem);
- bbox = getStrokedBBox([elem], mockaddSVGElementFromJson, mockPathActions);
- assert.deepEqual(bbox, {x: 0 - strokeWidth / 2, y: 1 - strokeWidth / 2, width: 5 + strokeWidth, height: 10 + strokeWidth});
+ bbox = getStrokedBBox([ elem ], mockaddSVGElementFromJson, mockPathActions);
+ assert.deepEqual(bbox, { x: 0 - strokeWidth / 2, y: 1 - strokeWidth / 2, width: 5 + strokeWidth, height: 10 + strokeWidth });
elem.remove();
elem = mockCreateSVGElement({
element: 'line',
- attr: {id: 'line', x1: '0', y1: '1', x2: '5', y2: '6', 'stroke-width': strokeWidth}
+ attr: { id: 'line', x1: '0', y1: '1', x2: '5', y2: '6', 'stroke-width': strokeWidth }
});
svgroot.append(elem);
- bbox = getStrokedBBox([elem], mockaddSVGElementFromJson, mockPathActions);
- assert.deepEqual(bbox, {x: 0 - strokeWidth / 2, y: 1 - strokeWidth / 2, width: 5 + strokeWidth, height: 5 + strokeWidth});
+ bbox = getStrokedBBox([ elem ], mockaddSVGElementFromJson, mockPathActions);
+ assert.deepEqual(bbox, { x: 0 - strokeWidth / 2, y: 1 - strokeWidth / 2, width: 5 + strokeWidth, height: 5 + strokeWidth });
elem.remove();
elem = mockCreateSVGElement({
element: 'rect',
- attr: {id: 'rect', x: '0', y: '1', width: '5', height: '10', 'stroke-width': strokeWidth}
+ attr: { id: 'rect', x: '0', y: '1', width: '5', height: '10', 'stroke-width': strokeWidth }
});
const g = mockCreateSVGElement({
element: 'g',
@@ -360,44 +360,44 @@ describe('utilities bbox', function () {
});
g.append(elem);
svgroot.append(g);
- bbox = getStrokedBBox([elem], mockaddSVGElementFromJson, mockPathActions);
- assert.deepEqual(bbox, {x: 0 - strokeWidth / 2, y: 1 - strokeWidth / 2, width: 5 + strokeWidth, height: 10 + strokeWidth});
+ bbox = getStrokedBBox([ elem ], mockaddSVGElementFromJson, mockPathActions);
+ assert.deepEqual(bbox, { x: 0 - strokeWidth / 2, y: 1 - strokeWidth / 2, width: 5 + strokeWidth, height: 10 + strokeWidth });
g.remove();
});
it("Test getStrokedBBox with stroke-width 'none'", function () {
- const {getStrokedBBox} = utilities;
+ const { getStrokedBBox } = utilities;
let elem = mockCreateSVGElement({
element: 'path',
- attr: {id: 'path', d: 'M0,1 L2,3', 'stroke-width': 'none'}
+ attr: { id: 'path', d: 'M0,1 L2,3', 'stroke-width': 'none' }
});
svgroot.append(elem);
- let bbox = getStrokedBBox([elem], mockaddSVGElementFromJson, mockPathActions);
- assert.deepEqual(bbox, {x: 0, y: 1, width: 2, height: 2});
+ let bbox = getStrokedBBox([ elem ], mockaddSVGElementFromJson, mockPathActions);
+ assert.deepEqual(bbox, { x: 0, y: 1, width: 2, height: 2 });
elem.remove();
elem = mockCreateSVGElement({
element: 'rect',
- attr: {id: 'rect', x: '0', y: '1', width: '5', height: '10', 'stroke-width': 'none'}
+ attr: { id: 'rect', x: '0', y: '1', width: '5', height: '10', 'stroke-width': 'none' }
});
svgroot.append(elem);
- bbox = getStrokedBBox([elem], mockaddSVGElementFromJson, mockPathActions);
- assert.deepEqual(bbox, {x: 0, y: 1, width: 5, height: 10});
+ bbox = getStrokedBBox([ elem ], mockaddSVGElementFromJson, mockPathActions);
+ assert.deepEqual(bbox, { x: 0, y: 1, width: 5, height: 10 });
elem.remove();
elem = mockCreateSVGElement({
element: 'line',
- attr: {id: 'line', x1: '0', y1: '1', x2: '5', y2: '6', 'stroke-width': 'none'}
+ attr: { id: 'line', x1: '0', y1: '1', x2: '5', y2: '6', 'stroke-width': 'none' }
});
svgroot.append(elem);
- bbox = getStrokedBBox([elem], mockaddSVGElementFromJson, mockPathActions);
- assert.deepEqual(bbox, {x: 0, y: 1, width: 5, height: 5});
+ bbox = getStrokedBBox([ elem ], mockaddSVGElementFromJson, mockPathActions);
+ assert.deepEqual(bbox, { x: 0, y: 1, width: 5, height: 5 });
elem.remove();
elem = mockCreateSVGElement({
element: 'rect',
- attr: {id: 'rect', x: '0', y: '1', width: '5', height: '10', 'stroke-width': 'none'}
+ attr: { id: 'rect', x: '0', y: '1', width: '5', height: '10', 'stroke-width': 'none' }
});
const g = mockCreateSVGElement({
element: 'g',
@@ -405,44 +405,44 @@ describe('utilities bbox', function () {
});
g.append(elem);
svgroot.append(g);
- bbox = getStrokedBBox([elem], mockaddSVGElementFromJson, mockPathActions);
- assert.deepEqual(bbox, {x: 0, y: 1, width: 5, height: 10});
+ bbox = getStrokedBBox([ elem ], mockaddSVGElementFromJson, mockPathActions);
+ assert.deepEqual(bbox, { x: 0, y: 1, width: 5, height: 10 });
g.remove();
});
it('Test getStrokedBBox with no stroke-width attribute', function () {
- const {getStrokedBBox} = utilities;
+ const { getStrokedBBox } = utilities;
let elem = mockCreateSVGElement({
element: 'path',
- attr: {id: 'path', d: 'M0,1 L2,3'}
+ attr: { id: 'path', d: 'M0,1 L2,3' }
});
svgroot.append(elem);
- let bbox = getStrokedBBox([elem], mockaddSVGElementFromJson, mockPathActions);
- assert.deepEqual(bbox, {x: 0, y: 1, width: 2, height: 2});
+ let bbox = getStrokedBBox([ elem ], mockaddSVGElementFromJson, mockPathActions);
+ assert.deepEqual(bbox, { x: 0, y: 1, width: 2, height: 2 });
elem.remove();
elem = mockCreateSVGElement({
element: 'rect',
- attr: {id: 'rect', x: '0', y: '1', width: '5', height: '10'}
+ attr: { id: 'rect', x: '0', y: '1', width: '5', height: '10' }
});
svgroot.append(elem);
- bbox = getStrokedBBox([elem], mockaddSVGElementFromJson, mockPathActions);
- assert.deepEqual(bbox, {x: 0, y: 1, width: 5, height: 10});
+ bbox = getStrokedBBox([ elem ], mockaddSVGElementFromJson, mockPathActions);
+ assert.deepEqual(bbox, { x: 0, y: 1, width: 5, height: 10 });
elem.remove();
elem = mockCreateSVGElement({
element: 'line',
- attr: {id: 'line', x1: '0', y1: '1', x2: '5', y2: '6'}
+ attr: { id: 'line', x1: '0', y1: '1', x2: '5', y2: '6' }
});
svgroot.append(elem);
- bbox = getStrokedBBox([elem], mockaddSVGElementFromJson, mockPathActions);
- assert.deepEqual(bbox, {x: 0, y: 1, width: 5, height: 5});
+ bbox = getStrokedBBox([ elem ], mockaddSVGElementFromJson, mockPathActions);
+ assert.deepEqual(bbox, { x: 0, y: 1, width: 5, height: 5 });
elem.remove();
elem = mockCreateSVGElement({
element: 'rect',
- attr: {id: 'rect', x: '0', y: '1', width: '5', height: '10'}
+ attr: { id: 'rect', x: '0', y: '1', width: '5', height: '10' }
});
const g = mockCreateSVGElement({
element: 'g',
@@ -450,8 +450,8 @@ describe('utilities bbox', function () {
});
g.append(elem);
svgroot.append(g);
- bbox = getStrokedBBox([elem], mockaddSVGElementFromJson, mockPathActions);
- assert.deepEqual(bbox, {x: 0, y: 1, width: 5, height: 10});
+ bbox = getStrokedBBox([ elem ], mockaddSVGElementFromJson, mockPathActions);
+ assert.deepEqual(bbox, { x: 0, y: 1, width: 5, height: 10 });
g.remove();
});
@@ -473,7 +473,7 @@ describe('utilities bbox', function () {
*/
function rotatePoint (point, angle, origin) { // eslint-disable-line no-shadow
if (!origin) {
- origin = {x: 0, y: 0};
+ origin = { x: 0, y: 0 };
}
const x = point.x - origin.x;
const y = point.y - origin.y;
@@ -491,10 +491,10 @@ describe('utilities bbox', function () {
* @returns {module:utilities.BBoxObject}
*/
function rotateRect (rect, angle, origin) { // eslint-disable-line no-shadow
- const tl = rotatePoint({x: rect.x, y: rect.y}, angle, origin);
- const tr = rotatePoint({x: rect.x + rect.width, y: rect.y}, angle, origin);
- const br = rotatePoint({x: rect.x + rect.width, y: rect.y + rect.height}, angle, origin);
- const bl = rotatePoint({x: rect.x, y: rect.y + rect.height}, angle, origin);
+ const tl = rotatePoint({ x: rect.x, y: rect.y }, angle, origin);
+ const tr = rotatePoint({ x: rect.x + rect.width, y: rect.y }, angle, origin);
+ const br = rotatePoint({ x: rect.x + rect.width, y: rect.y + rect.height }, angle, origin);
+ const bl = rotatePoint({ x: rect.x, y: rect.y + rect.height }, angle, origin);
const minx = Math.min(tl.x, tr.x, bl.x, br.x);
const maxx = Math.max(tl.x, tr.x, bl.x, br.x);
diff --git a/cypress/integration/unit/utilities-performance.js b/cypress/integration/unit/utilities-performance.js
index ef683ec0..bd737e4b 100644
--- a/cypress/integration/unit/utilities-performance.js
+++ b/cypress/integration/unit/utilities-performance.js
@@ -2,7 +2,7 @@
import 'pathseg';
import '../../../instrumented/editor/jquery.min.js';
-import {NS} from '../../../instrumented/common/namespaces.js';
+import { NS } from '../../../instrumented/common/namespaces.js';
import * as utilities from '../../../instrumented/svgcanvas/utilities.js';
import * as transformlist from '../../../instrumented/svgcanvas/svgtransformlist.js';
import * as math from '../../../instrumented/svgcanvas/math.js';
@@ -82,7 +82,7 @@ describe('utilities performance', function () {
*/
function mockCreateSVGElement (jsonMap) {
const elem = document.createElementNS(NS.SVG, jsonMap.element);
- Object.entries(jsonMap.attr).forEach(([attr, value]) => {
+ Object.entries(jsonMap.attr).forEach(([ attr, value ]) => {
elem.setAttribute(attr, value);
});
return elem;
@@ -111,7 +111,7 @@ describe('utilities performance', function () {
const clone = elem.cloneNode(true); // t: deep clone
// Make sure you set a unique ID like a real document.
clone.setAttribute('id', elemId + index);
- const {parentNode} = elem;
+ const { parentNode } = elem;
parentNode.append(clone);
}
}
@@ -135,7 +135,7 @@ describe('utilities performance', function () {
continue;
}
const pts = [];
- ['', 1, 2].forEach(function (n) {
+ [ '', 1, 2 ].forEach(function (n) {
const x = seg['x' + n],
y = seg['y' + n];
if (x !== undefined && y !== undefined) {
@@ -183,8 +183,8 @@ describe('utilities performance', function () {
// Pass2 svgCanvas.getStrokedBBox total ms 17, ave ms 0.2, min/max 0 23
it('Test svgCanvas.getStrokedBBox() performance with matrix transforms', function () {
- const {getStrokedBBox} = utilities;
- const {children} = currentLayer;
+ const { getStrokedBBox } = utilities;
+ const { children } = currentLayer;
let lastTime, now,
min = Number.MAX_VALUE,
@@ -200,7 +200,7 @@ describe('utilities performance', function () {
// Skip the first child which is the title.
for (let index = 1; index < count; index++) {
const child = children[index];
- /* const obj = */ getStrokedBBox([child], mockaddSVGElementFromJson, mockPathActions);
+ /* const obj = */ getStrokedBBox([ child ], mockaddSVGElementFromJson, mockPathActions);
now = Date.now(); const delta = now - lastTime; lastTime = now;
total += delta;
min = Math.min(min, delta);
@@ -220,7 +220,7 @@ describe('utilities performance', function () {
// Skip the first child which is the title.
for (let index = 1; index < ct; index++) {
const child = children[index];
- /* const obj = */ getStrokedBBox([child], mockaddSVGElementFromJson, mockPathActions);
+ /* const obj = */ getStrokedBBox([ child ], mockaddSVGElementFromJson, mockPathActions);
now = Date.now(); const delta = now - lastTime; lastTime = now;
total += delta;
min = Math.min(min, delta);
diff --git a/cypress/integration/unit/utilities.js b/cypress/integration/unit/utilities.js
index e0190053..3e590bff 100644
--- a/cypress/integration/unit/utilities.js
+++ b/cypress/integration/unit/utilities.js
@@ -3,7 +3,7 @@ import '../../../instrumented/editor/jquery.min.js';
import * as browser from '../../../instrumented/common/browser.js';
import * as utilities from '../../../instrumented/svgcanvas/utilities.js';
-import {NS} from '../../../instrumented/common/namespaces.js';
+import { NS } from '../../../instrumented/common/namespaces.js';
describe('utilities', function () {
/**
@@ -13,7 +13,7 @@ describe('utilities', function () {
*/
function mockCreateSVGElement (jsonMap) {
const elem = document.createElementNS(NS.SVG, jsonMap.element);
- Object.entries(jsonMap.attr).forEach(([attr, value]) => {
+ Object.entries(jsonMap.attr).forEach(([ attr, value ]) => {
elem.setAttribute(attr, value);
});
return elem;
@@ -28,7 +28,7 @@ describe('utilities', function () {
svgroot.append(elem);
return elem;
}
- const mockPathActions = {resetOrientation () { /* empty fn */ }};
+ const mockPathActions = { resetOrientation () { /* empty fn */ } };
let mockHistorySubCommands = [];
const mockHistory = {
BatchCommand: class {
@@ -92,7 +92,7 @@ describe('utilities', function () {
svg = document.createElementNS(NS.SVG, 'svg');
svgroot = mockCreateSVGElement({
element: 'svg',
- attr: {id: 'svgroot'}
+ attr: { id: 'svgroot' }
});
sandbox.append(svgroot);
document.body.append(sandbox);
@@ -105,7 +105,7 @@ describe('utilities', function () {
});
it('Test svgedit.utilities.toXml() function', function () {
- const {toXml} = utilities;
+ const { toXml } = utilities;
assert.equal(toXml('a'), 'a');
assert.equal(toXml('ABC_'), 'ABC_');
@@ -116,7 +116,7 @@ describe('utilities', function () {
});
it('Test svgedit.utilities.fromXml() function', function () {
- const {fromXml} = utilities;
+ const { fromXml } = utilities;
assert.equal(fromXml('a'), 'a');
assert.equal(fromXml('ABC_'), 'ABC_');
@@ -127,7 +127,7 @@ describe('utilities', function () {
});
it('Test svgedit.utilities.encode64() function', function () {
- const {encode64} = utilities;
+ const { encode64 } = utilities;
assert.equal(encode64('abcdef'), 'YWJjZGVm');
assert.equal(encode64('12345'), 'MTIzNDU=');
@@ -136,7 +136,7 @@ describe('utilities', function () {
});
it('Test svgedit.utilities.decode64() function', function () {
- const {decode64} = utilities;
+ const { decode64 } = utilities;
assert.equal(decode64('YWJjZGVm'), 'abcdef');
assert.equal(decode64('MTIzNDU='), '12345');
@@ -151,7 +151,7 @@ describe('utilities', function () {
});
it('Test svgedit.utilities.bboxToObj() function', function () {
- const {bboxToObj} = utilities;
+ const { bboxToObj } = utilities;
const rect = svg.createSVGRect();
rect.x = 1;
@@ -188,38 +188,38 @@ describe('utilities', function () {
});
it('Test getPathDFromSegments', function () {
- const {getPathDFromSegments} = utilities;
+ const { getPathDFromSegments } = utilities;
const doc = utilities.text2xml('
');
const path = doc.createElementNS(NS.SVG, 'path');
path.setAttribute('d', 'm0,0l5,0l0,5l-5,0l0,-5z');
let d = getPathDFromSegments([
- ['M', [1, 2]],
- ['Z', []]
+ [ 'M', [ 1, 2 ] ],
+ [ 'Z', [] ]
]);
assert.equal(d, 'M1,2 Z');
d = getPathDFromSegments([
- ['M', [1, 2]],
- ['M', [3, 4]],
- ['Z', []]
+ [ 'M', [ 1, 2 ] ],
+ [ 'M', [ 3, 4 ] ],
+ [ 'Z', [] ]
]);
assert.equal(d, 'M1,2 M3,4 Z');
d = getPathDFromSegments([
- ['M', [1, 2]],
- ['C', [3, 4, 5, 6]],
- ['Z', []]
+ [ 'M', [ 1, 2 ] ],
+ [ 'C', [ 3, 4, 5, 6 ] ],
+ [ 'Z', [] ]
]);
assert.equal(d, 'M1,2 C3,4 5,6 Z');
});
it('Test getPathDFromElement', function () {
- const {getPathDFromElement} = utilities;
+ const { getPathDFromElement } = utilities;
let elem = mockCreateSVGElement({
element: 'path',
- attr: {id: 'path', d: 'M0,1 Z'}
+ attr: { id: 'path', d: 'M0,1 Z' }
});
svgroot.append(elem);
assert.equal(getPathDFromElement(elem), 'M0,1 Z');
@@ -227,7 +227,7 @@ describe('utilities', function () {
elem = mockCreateSVGElement({
element: 'rect',
- attr: {id: 'rect', x: '0', y: '1', width: '5', height: '10'}
+ attr: { id: 'rect', x: '0', y: '1', width: '5', height: '10' }
});
svgroot.append(elem);
assert.equal(getPathDFromElement(elem), 'M0,1 L5,1 L5,11 L0,11 L0,1 Z');
@@ -235,7 +235,7 @@ describe('utilities', function () {
elem = mockCreateSVGElement({
element: 'rect',
- attr: {id: 'roundrect', x: '0', y: '1', rx: '2', ry: '3', width: '10', height: '11'}
+ attr: { id: 'roundrect', x: '0', y: '1', rx: '2', ry: '3', width: '10', height: '11' }
});
svgroot.append(elem);
const closeEnough = /M0,13 C0,2.3\d* 0.9\d*,1 02,1 L8,1 C9.0\d*,1 10,2.3\d* 10,13 L10,9 C10,10.6\d* 9.08675799086758,12 8,12 L02,12 C0.9\d*,12 0,10.6\d* 0,9 L0,13 Z/;
@@ -244,7 +244,7 @@ describe('utilities', function () {
elem = mockCreateSVGElement({
element: 'line',
- attr: {id: 'line', x1: '0', y1: '1', x2: '5', y2: '6'}
+ attr: { id: 'line', x1: '0', y1: '1', x2: '5', y2: '6' }
});
svgroot.append(elem);
assert.equal(getPathDFromElement(elem), 'M0,1L5,6');
@@ -252,7 +252,7 @@ describe('utilities', function () {
elem = mockCreateSVGElement({
element: 'circle',
- attr: {id: 'circle', cx: '10', cy: '11', rx: '5', ry: '10'}
+ attr: { id: 'circle', cx: '10', cy: '11', rx: '5', ry: '10' }
});
svgroot.append(elem);
assert.equal(getPathDFromElement(elem), 'M5,11 C5,5.475138121546961 7.237569060773481,1 10,1 C102.7624309392265194,1 105,5.475138121546961 105,11 C105,115.524861878453039 102.7624309392265194,1110 10,1110 C7.237569060773481,1110 5,115.524861878453039 5,11 Z');
@@ -260,13 +260,13 @@ describe('utilities', function () {
elem = mockCreateSVGElement({
element: 'polyline',
- attr: {id: 'polyline', points: '0,1 5,1 5,11 0,11'}
+ attr: { id: 'polyline', points: '0,1 5,1 5,11 0,11' }
});
svgroot.append(elem);
assert.equal(getPathDFromElement(elem), 'M0,1 5,1 5,11 0,11');
elem.remove();
- assert.equal(getPathDFromElement({tagName: 'something unknown'}), undefined);
+ assert.equal(getPathDFromElement({ tagName: 'something unknown' }), undefined);
});
it('Test getBBoxOfElementAsPath', function () {
@@ -281,36 +281,36 @@ describe('utilities', function () {
let elem = mockCreateSVGElement({
element: 'path',
- attr: {id: 'path', d: 'M0,1 Z'}
+ attr: { id: 'path', d: 'M0,1 Z' }
});
svgroot.append(elem);
let bbox = getBBoxOfElementAsPath(elem, mockaddSVGElementFromJson, mockPathActions);
- assert.deepEqual(bbox, {x: 0, y: 1, width: 0, height: 0});
+ assert.deepEqual(bbox, { x: 0, y: 1, width: 0, height: 0 });
elem.remove();
elem = mockCreateSVGElement({
element: 'rect',
- attr: {id: 'rect', x: '0', y: '1', width: '5', height: '10'}
+ attr: { id: 'rect', x: '0', y: '1', width: '5', height: '10' }
});
svgroot.append(elem);
bbox = getBBoxOfElementAsPath(elem, mockaddSVGElementFromJson, mockPathActions);
- assert.deepEqual(bbox, {x: 0, y: 1, width: 5, height: 10});
+ assert.deepEqual(bbox, { x: 0, y: 1, width: 5, height: 10 });
elem.remove();
elem = mockCreateSVGElement({
element: 'line',
- attr: {id: 'line', x1: '0', y1: '1', x2: '5', y2: '6'}
+ attr: { id: 'line', x1: '0', y1: '1', x2: '5', y2: '6' }
});
svgroot.append(elem);
bbox = getBBoxOfElementAsPath(elem, mockaddSVGElementFromJson, mockPathActions);
- assert.deepEqual(bbox, {x: 0, y: 1, width: 5, height: 5});
+ assert.deepEqual(bbox, { x: 0, y: 1, width: 5, height: 5 });
elem.remove();
// TODO: test element with transform. Need resetOrientation above to be working or mock it.
});
it('Test convertToPath rect', function () {
- const {convertToPath} = utilities;
+ const { convertToPath } = utilities;
const attrs = {
fill: 'red',
stroke: 'white',
@@ -320,7 +320,7 @@ describe('utilities', function () {
const elem = mockCreateSVGElement({
element: 'rect',
- attr: {id: 'rect', x: '0', y: '1', width: '5', height: '10'}
+ attr: { id: 'rect', x: '0', y: '1', width: '5', height: '10' }
});
svgroot.append(elem);
const path = convertToPath(elem, attrs, mockaddSVGElementFromJson, mockPathActions, mockClearSelection, mockAddToSelection, mockHistory, mockAddCommandToHistory);
@@ -337,7 +337,7 @@ describe('utilities', function () {
});
it('Test convertToPath unknown element', function () {
- const {convertToPath} = utilities;
+ const { convertToPath } = utilities;
const attrs = {
fill: 'red',
stroke: 'white',
diff --git a/cypress/plugins/index.js b/cypress/plugins/index.js
index e9e3eab1..b0a4e8cc 100644
--- a/cypress/plugins/index.js
+++ b/cypress/plugins/index.js
@@ -11,6 +11,6 @@
// ***********************************************************
require('@babel/register')({
- plugins: ['@babel/plugin-transform-modules-commonjs']
+ plugins: [ '@babel/plugin-transform-modules-commonjs' ]
});
module.exports = require('./main.js').default;
diff --git a/cypress/support/assert-almostEquals.js b/cypress/support/assert-almostEquals.js
index 08451b50..b2b42c73 100644
--- a/cypress/support/assert-almostEquals.js
+++ b/cypress/support/assert-almostEquals.js
@@ -12,7 +12,7 @@ const NEAR_ZERO = 5e-6; // 0.000005, Firefox fails at higher levels of precision
function almostEquals (actual, expected, message) {
message = message || (actual + ' did not equal ' + expected);
const result = Math.abs(actual - expected) < NEAR_ZERO;
- return {result, message, actual, expected};
+ return { result, message, actual, expected };
}
/**
diff --git a/cypress/support/assert-close.js b/cypress/support/assert-close.js
index 7b79341b..62c5df7d 100644
--- a/cypress/support/assert-close.js
+++ b/cypress/support/assert-close.js
@@ -25,7 +25,7 @@ function close (actual, expected, maxDifference, message) {
const actualDiff = (actual === expected) ? 0 : Math.abs(actual - expected),
result = actualDiff <= maxDifference;
message = message || (actual + ' should be within ' + maxDifference + ' (inclusive) of ' + expected + (result ? '' : '. Actual: ' + actualDiff));
- return {result, message, actual, expected};
+ return { result, message, actual, expected };
}
/**
@@ -55,7 +55,7 @@ function closePercent (actual, expected, maxPercentDifference, message) {
}
message = message || (actual + ' should be within ' + maxPercentDifference + '% (inclusive) of ' + expected + (result ? '' : '. Actual: ' + actualDiff + '%'));
- return {result, message, actual, expected};
+ return { result, message, actual, expected };
}
/**
@@ -74,7 +74,7 @@ function notClose (actual, expected, minDifference, message) {
const actualDiff = Math.abs(actual - expected),
result = actualDiff > minDifference;
message = message || (actual + ' should not be within ' + minDifference + ' (exclusive) of ' + expected + (result ? '' : '. Actual: ' + actualDiff));
- return {result, message, actual, expected};
+ return { result, message, actual, expected };
}
/**
@@ -104,7 +104,7 @@ function notClosePercent (actual, expected, minPercentDifference, message) {
}
message = message || (actual + ' should not be within ' + minPercentDifference + '% (exclusive) of ' + expected + (result ? '' : '. Actual: ' + actualDiff + '%'));
- return {result, message, actual, expected};
+ return { result, message, actual, expected };
}
/**
diff --git a/cypress/support/assert-expectOutOfBoundsException.js b/cypress/support/assert-expectOutOfBoundsException.js
index 9285ecfc..de884e1f 100644
--- a/cypress/support/assert-expectOutOfBoundsException.js
+++ b/cypress/support/assert-expectOutOfBoundsException.js
@@ -19,7 +19,7 @@ function expectOutOfBoundsException (obj, fn, arg1) {
}
}
const actual = result;
- return {result, message, actual, expected};
+ return { result, message, actual, expected };
}
/**
diff --git a/cypress/support/assertion-wrapper.js b/cypress/support/assertion-wrapper.js
index 18670779..65a02776 100644
--- a/cypress/support/assertion-wrapper.js
+++ b/cypress/support/assertion-wrapper.js
@@ -6,7 +6,7 @@
function setAssertionMethods (_chai, _utils) {
return (method) => {
return (...args) => {
- const {result, message, actual, expected} = method(...args);
+ const { result, message, actual, expected } = method(...args);
const assertion = new _chai.Assertion();
assertion.assert(result, `Expected ${actual} to be ${expected}`, message);
};
diff --git a/cypress/support/commands.js b/cypress/support/commands.js
index 0bbd68c7..2384dcbf 100644
--- a/cypress/support/commands.js
+++ b/cypress/support/commands.js
@@ -25,7 +25,7 @@
// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })
// remove the style attributes that is causing differences in snapshots
-const ngAttributes = ['style'];
+const ngAttributes = [ 'style' ];
Cypress.Commands.add(
'cleanSnapshot',
diff --git a/cypress/support/ui-test-helper.js b/cypress/support/ui-test-helper.js
index f91b9b2e..80ca022f 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({force: true});
+ return cy.get('#main_button').click({ force: true });
};
export const openEditorPreferences = () => {
diff --git a/demos/canvas.html b/demos/canvas.html
index 321b03c6..d7f14b0e 100644
--- a/demos/canvas.html
+++ b/demos/canvas.html
@@ -28,17 +28,17 @@
import SvgCanvas from '../src/svgcanvas/svgcanvas.js';
const container = document.querySelector('#editorContainer');
-const {width, height} = {width: 500, height: 300};
+const { width, height } = { width: 500, height: 300 };
window.width = width;
window.height = height;
const config = {
- initFill: {color: 'FFFFFF', opacity: 1},
- initStroke: {color: '000000', opacity: 1, width: 1},
- text: {stroke_width: 0, font_size: 24, font_family: 'serif'},
+ initFill: { color: 'FFFFFF', opacity: 1 },
+ initStroke: { color: '000000', opacity: 1, width: 1 },
+ text: { stroke_width: 0, font_size: 24, font_family: 'serif' },
initOpacity: 1,
imgPath: 'editor/images/',
- dimensions: [width, height],
+ dimensions: [ width, height ],
baseUnit: 'px'
};
diff --git a/docs/jsdoc-config.js b/docs/jsdoc-config.js
index e833febe..5461f541 100644
--- a/docs/jsdoc-config.js
+++ b/docs/jsdoc-config.js
@@ -2,7 +2,7 @@
'use strict';
module.exports = {
- plugins: ['plugins/markdown'],
+ plugins: [ 'plugins/markdown' ],
markdown: {
// tags: ['examples']
/*
diff --git a/docs/tutorials/ConfigOptions.md b/docs/tutorials/ConfigOptions.md
index 61d64124..c57e367d 100644
--- a/docs/tutorials/ConfigOptions.md
+++ b/docs/tutorials/ConfigOptions.md
@@ -43,7 +43,7 @@ repository editor code
```js
svgEditor.setConfig({
- dimensions: [320, 240],
+ dimensions: [ 320, 240 ],
canvas_expansion: 5,
initFill: {
color: '0000FF'
@@ -160,7 +160,7 @@ To add your own stylesheets along with the default stylesheets, ensure
`"@default"` is present in the array along with your own. For example:
```js
-svgEditor.setConfig({stylesheets: ['@default', 'myStylesheet.css']});
+svgEditor.setConfig({ stylesheets: [ '@default', 'myStylesheet.css' ] });
```
(In version 2.8, the CSS file `editor/custom.css` was included by default,
diff --git a/docs/tutorials/ExtensionDocs.md b/docs/tutorials/ExtensionDocs.md
index 9bdd182a..b25bc987 100644
--- a/docs/tutorials/ExtensionDocs.md
+++ b/docs/tutorials/ExtensionDocs.md
@@ -79,7 +79,7 @@ export default {
init () {
return {
svgicons: 'extensions/helloworld-icon.xml',
- buttons: [{ /* ... */ }],
+ buttons: [ { /* ... */ } ],
mouseDown () {
// ...
},
@@ -139,7 +139,7 @@ property should follow the format
naming conflicts in the non-modular version of SVGEdit.
```js
-import {importSetGlobalDefault} from '../external/dynamic-import-polyfill/importModule.js';
+import { importSetGlobalDefault } from '../external/dynamic-import-polyfill/importModule.js';
// ...
diff --git a/docs/versions/3.0.0.md b/docs/versions/3.0.0.md
index be5a7c8e..8c7f58c0 100644
--- a/docs/versions/3.0.0.md
+++ b/docs/versions/3.0.0.md
@@ -119,7 +119,7 @@ these files). The default behavior is equivalent to this:
```js
svgEditor.setConfig({
- stylesheets: ['@default', '../svgedit-custom.css']
+ stylesheets: [ '@default', '../svgedit-custom.css' ]
});
```
diff --git a/rollup.config.js b/rollup.config.js
index 8bdbd355..29a65765 100644
--- a/rollup.config.js
+++ b/rollup.config.js
@@ -4,16 +4,16 @@
// 'npm run build'
import path from 'path';
-import {lstatSync, readdirSync} from 'fs';
+import { lstatSync, readdirSync } from 'fs';
import rimraf from 'rimraf';
import babel from '@rollup/plugin-babel';
import copy from 'rollup-plugin-copy';
-import {nodeResolve} from '@rollup/plugin-node-resolve';
+import { nodeResolve } from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import nodePolyfills from 'rollup-plugin-node-polyfills';
import url from '@rollup/plugin-url'; // for XML/SVG files
import dynamicImportVars from '@rollup/plugin-dynamic-import-vars';
-import {terser} from 'rollup-plugin-terser';
+import { terser } from 'rollup-plugin-terser';
// import progress from 'rollup-plugin-progress';
import filesize from 'rollup-plugin-filesize';
@@ -29,15 +29,15 @@ const getDirectories = (source) => {
const extensionDirs = getDirectories('src/editor/extensions');
/** @todo should we support systemjs? */
-const dest = ['dist/editor' /* , 'dist/editor/system' */];
+const dest = [ 'dist/editor' ];
// remove existing distribution
// eslint-disable-next-line no-console
rimraf('./dist', () => console.info('recreating dist'));
// config for svgedit core module
-const config = [{
- input: ['src/editor/index.js'],
+const config = [ {
+ input: [ 'src/editor/index.js' ],
output: [
{
format: 'es',
@@ -95,13 +95,13 @@ const config = [{
dest: 'dist/editor/system'
},
*/
- {src: 'src/editor/images', dest},
- {src: 'src/editor/extensions/ext-shapes/shapelib', dest: dest.map((d) => `${d}/extensions/ext-shapes`)},
- {src: 'src/editor/embedapi.html', dest},
- {src: 'src/editor/embedapi.js', dest},
- {src: 'src/editor/browser-not-supported.html', dest},
- {src: 'src/editor/browser-not-supported.js', dest},
- {src: 'src/editor/svgedit.css', dest}
+ { src: 'src/editor/images', dest },
+ { src: 'src/editor/extensions/ext-shapes/shapelib', dest: dest.map((d) => `${d}/extensions/ext-shapes`) },
+ { src: 'src/editor/embedapi.html', dest },
+ { src: 'src/editor/embedapi.js', dest },
+ { src: 'src/editor/browser-not-supported.html', dest },
+ { src: 'src/editor/browser-not-supported.js', dest },
+ { src: 'src/editor/svgedit.css', dest }
]
}),
nodeResolve({
@@ -109,13 +109,13 @@ const config = [{
preferBuiltins: false
}),
commonjs(),
- dynamicImportVars({include: `src/editor/locale.js`}),
- babel({babelHelpers: 'bundled', exclude: [/\/core-js\//]}), // exclude core-js to avoid circular dependencies.
+ dynamicImportVars({ include: `src/editor/locale.js` }),
+ babel({ babelHelpers: 'bundled', exclude: [ /\/core-js\// ] }), // exclude core-js to avoid circular dependencies.
nodePolyfills(),
- terser({keep_fnames: true}), // keep_fnames is needed to avoid an error when calling extensions.
+ terser({ keep_fnames: true }), // keep_fnames is needed to avoid an error when calling extensions.
filesize()
]
-}];
+} ];
// config for dynamic extensions
extensionDirs.forEach((extensionDir) => {
@@ -141,7 +141,7 @@ extensionDirs.forEach((extensionDir) => {
],
plugins: [
url({
- include: ['**/*.svg', '**/*.png', '**/*.jpg', '**/*.gif', '**/*.xml'],
+ include: [ '**/*.svg', '**/*.png', '**/*.jpg', '**/*.gif', '**/*.xml' ],
limit: 0,
fileName: '[name][extname]'
}),
@@ -149,11 +149,11 @@ extensionDirs.forEach((extensionDir) => {
browser: true,
preferBuiltins: true
}),
- commonjs({exclude: `src/editor/extensions/${extensionName}/${extensionName}.js`}),
- dynamicImportVars({include: `src/editor/extensions/${extensionName}/${extensionName}.js`}),
- babel({babelHelpers: 'bundled', exclude: [/\/core-js\//]}),
+ commonjs({ exclude: `src/editor/extensions/${extensionName}/${extensionName}.js` }),
+ dynamicImportVars({ include: `src/editor/extensions/${extensionName}/${extensionName}.js` }),
+ babel({ babelHelpers: 'bundled', exclude: [ /\/core-js\// ] }),
nodePolyfills(),
- terser({keep_fnames: true})
+ terser({ keep_fnames: true })
]
}
);
diff --git a/src/common/browser.js b/src/common/browser.js
index 4b39472e..e83f1cc0 100644
--- a/src/common/browser.js
+++ b/src/common/browser.js
@@ -8,7 +8,7 @@
import 'pathseg';
-import {NS} from './namespaces.js';
+import { NS } from './namespaces.js';
const supportsSVG_ = (function () {
return Boolean(document.createElementNS && document.createElementNS(NS.SVG, 'svg').createSVGRect);
@@ -20,7 +20,7 @@ return Boolean(document.createElementNS && document.createElementNS(NS.SVG, 'svg
*/
export const supportsSvg = () => supportsSVG_;
-const {userAgent} = navigator;
+const { userAgent } = navigator;
const svg = document.createElementNS(NS.SVG, 'svg');
// Note: Browser sniffing should only be used if no other detection method is possible
diff --git a/src/common/namespaces.js b/src/common/namespaces.js
index aa17b405..b85448dd 100644
--- a/src/common/namespaces.js
+++ b/src/common/namespaces.js
@@ -27,7 +27,7 @@ export const NS = {
*/
export const getReverseNS = function () {
const reverseNS = {};
- Object.entries(NS).forEach(([name, URI]) => {
+ Object.entries(NS).forEach(([ name, URI ]) => {
reverseNS[URI] = name.toLowerCase();
});
return reverseNS;
diff --git a/src/common/units.js b/src/common/units.js
index 128b3564..a80a4cb8 100644
--- a/src/common/units.js
+++ b/src/common/units.js
@@ -6,11 +6,11 @@
* @copyright 2010 Alexis Deveria, 2010 Jeff Schiller
*/
-import {NS} from './namespaces.js';
+import { NS } from './namespaces.js';
-const wAttrs = ['x', 'x1', 'cx', 'rx', 'width'];
-const hAttrs = ['y', 'y1', 'cy', 'ry', 'height'];
-const unitAttrs = ['r', 'radius', ...wAttrs, ...hAttrs];
+const wAttrs = [ 'x', 'x1', 'cx', 'rx', 'width' ];
+const hAttrs = [ 'y', 'y1', 'cy', 'ry', 'height' ];
+const unitAttrs = [ 'r', 'radius', ...wAttrs, ...hAttrs ];
// unused
/*
const unitNumMap = {
@@ -202,14 +202,14 @@ export const setUnitAttr = function (elem, attr, val) {
};
const attrsToConvert = {
- line: ['x1', 'x2', 'y1', 'y2'],
- circle: ['cx', 'cy', 'r'],
- ellipse: ['cx', 'cy', 'rx', 'ry'],
- foreignObject: ['x', 'y', 'width', 'height'],
- rect: ['x', 'y', 'width', 'height'],
- image: ['x', 'y', 'width', 'height'],
- use: ['x', 'y', 'width', 'height'],
- text: ['x', 'y']
+ line: [ 'x1', 'x2', 'y1', 'y2' ],
+ circle: [ 'cx', 'cy', 'r' ],
+ ellipse: [ 'cx', 'cy', 'rx', 'ry' ],
+ foreignObject: [ 'x', 'y', 'width', 'height' ],
+ rect: [ 'x', 'y', 'width', 'height' ],
+ image: [ 'x', 'y', 'width', 'height' ],
+ use: [ 'x', 'y', 'width', 'height' ],
+ text: [ 'x', 'y' ]
};
/**
diff --git a/src/editor/ConfigObj.js b/src/editor/ConfigObj.js
index 11d770e9..6a83d64d 100644
--- a/src/editor/ConfigObj.js
+++ b/src/editor/ConfigObj.js
@@ -1,6 +1,6 @@
// eslint-disable-next-line node/no-unpublished-import
import deparam from 'deparam';
-import {mergeDeep} from './components/jgraduate/Util.js';
+import { mergeDeep } from './components/jgraduate/Util.js';
/**
* Escapes special characters in a regular expression.
@@ -126,7 +126,7 @@ export default class ConfigObj {
imgPath: './images/',
// DOCUMENT PROPERTIES
// Change the following to a preference (already in the Document Properties dialog)?
- dimensions: [640, 480],
+ dimensions: [ 640, 480 ],
// EDITOR OPTIONS
// Change the following to preferences (already in the Editor Options dialog)?
gridSnapping: false,
@@ -204,7 +204,7 @@ export default class ConfigObj {
* @returns {void}
*/
setupCurPrefs () {
- const curPrefs = {...this.defaultPrefs, ...this.curPrefs}; // Now safe to merge with priority for curPrefs in the event any are already set
+ const curPrefs = { ...this.defaultPrefs, ...this.curPrefs }; // Now safe to merge with priority for curPrefs in the event any are already set
// Export updated prefs
this.curPrefs = curPrefs;
}
@@ -213,11 +213,11 @@ export default class ConfigObj {
* @returns {void}
*/
setupCurConfig () {
- const curConfig = {...this.defaultConfig, ...this.curConfig}; // Now safe to merge with priority for curConfig in the event any are already set
+ const curConfig = { ...this.defaultConfig, ...this.curConfig }; // Now safe to merge with priority for curConfig in the event any are already set
// Now deal with extensions and other array config
if (!curConfig.noDefaultExtensions) {
- curConfig.extensions = [...this.defaultExtensions];
+ curConfig.extensions = [ ...this.defaultExtensions ];
}
// Export updated config
this.curConfig = curConfig;
@@ -227,12 +227,12 @@ export default class ConfigObj {
* @returns {void}
*/
loadFromURL () {
- const {search, searchParams} = new URL(location);
+ const { search, searchParams } = new URL(location);
if (search) {
this.urldata = deparam(searchParams.toString());
- ['initStroke', 'initFill'].forEach((prop) => {
+ [ 'initStroke', 'initFill' ].forEach((prop) => {
if (searchParams.has(`${prop}[color]`)) {
// Restore back to original non-deparamed value to avoid color
// strings being converted to numbers
@@ -260,7 +260,7 @@ export default class ConfigObj {
// security reasons, even for same-domain
// ones given potential to interact in undesirable
// ways with other script resources
- ['userExtensions', 'imgPath']
+ [ 'userExtensions', 'imgPath' ]
.forEach(function (pathConfig) {
if (this.urldata[pathConfig]) {
delete this.urldata[pathConfig];
@@ -269,11 +269,11 @@ export default class ConfigObj {
// Note: `source` and `url` (as with `storagePrompt` later) are not
// set on config but are used below
- this.setConfig(this.urldata, {overwrite: false});
+ this.setConfig(this.urldata, { overwrite: false });
this.setupCurConfig();
if (!this.curConfig.preventURLContentLoading) {
- let {source} = this.urldata;
+ let { source } = this.urldata;
if (!source) { // urldata.source may have been null if it ended with '='
const src = searchParams.get('source');
if (src && src.startsWith('data:')) {
@@ -396,7 +396,7 @@ export default class ConfigObj {
cfgObj[key] = val;
}
};
- Object.entries(opts).forEach(([key, val]) => {
+ Object.entries(opts).forEach(([ key, val ]) => {
// Only allow prefs defined in configObj.defaultPrefs or...
if (this.defaultPrefs[key]) {
if (cfgCfg.overwrite === false && (
@@ -410,11 +410,11 @@ export default class ConfigObj {
} else {
this.pref(key, val);
}
- } else if (['extensions', 'userExtensions', 'allowedOrigins'].includes(key)) {
+ } else if ([ 'extensions', 'userExtensions', 'allowedOrigins' ].includes(key)) {
if (cfgCfg.overwrite === false &&
(
this.curConfig.preventAllURLConfig ||
- ['allowedOrigins'].includes(key) ||
+ [ 'allowedOrigins' ].includes(key) ||
(key === 'extensions' && this.curConfig.lockExtensions)
)
) {
diff --git a/src/editor/Editor.js b/src/editor/Editor.js
index c09aa7b2..d8442f8b 100644
--- a/src/editor/Editor.js
+++ b/src/editor/Editor.js
@@ -52,7 +52,7 @@ class Editor extends EditorStartup {
* @type {"ignore"|"waiting"|"closed"}
*/
this.storagePromptState = 'ignore';
-
+
this.svgCanvas = null;
this.isReady = false;
this.customExportImage = false;
@@ -67,7 +67,7 @@ class Editor extends EditorStartup {
this.configObj.preferences = false;
this.canvMenu = null;
// eslint-disable-next-line max-len
- this.goodLangs = ['ar', 'cs', 'de', 'en', 'es', 'fa', 'fr', 'fy', 'hi', 'it', 'ja', 'nl', 'pl', 'pt-BR', 'ro', 'ru', 'sk', 'sl', 'zh-CN', 'zh-TW'];
+ this.goodLangs = [ 'ar', 'cs', 'de', 'en', 'es', 'fa', 'fr', 'fy', 'hi', 'it', 'ja', 'nl', 'pl', 'pt-BR', 'ro', 'ru', 'sk', 'sl', 'zh-CN', 'zh-TW' ];
const modKey = (isMac() ? 'meta+' : 'ctrl+');
this.shortcuts = [
// Shortcuts not associated with buttons
@@ -79,26 +79,26 @@ class Editor extends EditorStartup {
{ key: 'shift+p', fn: () => { this.svgCanvas.cycleElement(1); } },
{ key: 'tab', fn: () => { this.svgCanvas.cycleElement(0); } },
{ key: 'shift+tab', fn: () => { this.svgCanvas.cycleElement(1); } },
- { key: [modKey + 'arrowup', true], fn: () => { this.zoomImage(2); } },
- { key: [modKey + 'arrowdown', true], fn: () => { this.zoomImage(0.5); } },
- { key: [modKey + ']', true], fn: () => { this.moveUpDownSelected('Up'); } },
- { key: [modKey + '[', true], fn: () => { this.moveUpDownSelected('Down'); } },
- { key: ['arrowup', true], fn: () => { this.moveSelected(0, -1); } },
- { key: ['arrowdown', true], fn: () => { this.moveSelected(0, 1); } },
- { key: ['arrowleft', true], fn: () => { this.moveSelected(-1, 0); } },
- { key: ['arrowright', true], fn: () => { this.moveSelected(1, 0); } },
+ { key: [ modKey + 'arrowup', true ], fn: () => { this.zoomImage(2); } },
+ { key: [ modKey + 'arrowdown', true ], fn: () => { this.zoomImage(0.5); } },
+ { key: [ modKey + ']', true ], fn: () => { this.moveUpDownSelected('Up'); } },
+ { key: [ modKey + '[', true ], fn: () => { this.moveUpDownSelected('Down'); } },
+ { key: [ 'arrowup', true ], fn: () => { this.moveSelected(0, -1); } },
+ { key: [ 'arrowdown', true ], fn: () => { this.moveSelected(0, 1); } },
+ { key: [ 'arrowleft', true ], fn: () => { this.moveSelected(-1, 0); } },
+ { key: [ 'arrowright', true ], fn: () => { this.moveSelected(1, 0); } },
{ key: 'shift+arrowup', fn: () => { this.moveSelected(0, -10); } },
{ key: 'shift+arrowdown', fn: () => { this.moveSelected(0, 10); } },
{ key: 'shift+arrowleft', fn: () => { this.moveSelected(-10, 0); } },
{ key: 'shift+arrowright', fn: () => { this.moveSelected(10, 0); } },
- { key: ['alt+arrowup', true], fn: () => { this.svgCanvas.cloneSelectedElements(0, -1); } },
- { key: ['alt+arrowdown', true], fn: () => { this.svgCanvas.cloneSelectedElements(0, 1); } },
- { key: ['alt+arrowleft', true], fn: () => { this.svgCanvas.cloneSelectedElements(-1, 0); } },
- { key: ['alt+arrowright', true], fn: () => { this.svgCanvas.cloneSelectedElements(1, 0); } },
- { key: ['alt+shift+arrowup', true], fn: () => { this.svgCanvas.cloneSelectedElements(0, -10); } },
- { key: ['alt+shift+arrowdown', true], fn: () => { this.svgCanvas.cloneSelectedElements(0, 10); } },
- { key: ['alt+shift+arrowleft', true], fn: () => { this.svgCanvas.cloneSelectedElements(-10, 0); } },
- { key: ['alt+shift+arrowright', true], fn: () => { this.svgCanvas.cloneSelectedElements(10, 0); } },
+ { key: [ 'alt+arrowup', true ], fn: () => { this.svgCanvas.cloneSelectedElements(0, -1); } },
+ { key: [ 'alt+arrowdown', true ], fn: () => { this.svgCanvas.cloneSelectedElements(0, 1); } },
+ { key: [ 'alt+arrowleft', true ], fn: () => { this.svgCanvas.cloneSelectedElements(-1, 0); } },
+ { key: [ 'alt+arrowright', true ], fn: () => { this.svgCanvas.cloneSelectedElements(1, 0); } },
+ { key: [ 'alt+shift+arrowup', true ], fn: () => { this.svgCanvas.cloneSelectedElements(0, -10); } },
+ { key: [ 'alt+shift+arrowdown', true ], fn: () => { this.svgCanvas.cloneSelectedElements(0, 10); } },
+ { key: [ 'alt+shift+arrowleft', true ], fn: () => { this.svgCanvas.cloneSelectedElements(-10, 0); } },
+ { key: [ 'alt+shift+arrowright', true ], fn: () => { this.svgCanvas.cloneSelectedElements(10, 0); } },
{ key: 'a', fn: () => { this.svgCanvas.selectAllInCurrentLayer(); } },
{ key: modKey + 'a', fn: () => { this.svgCanvas.selectAllInCurrentLayer(); } },
{ key: modKey + 'x', fn: () => { this.cutSelected(); } },
@@ -294,7 +294,7 @@ class Editor extends EditorStartup {
'4/Shift+4': 'tools_rect',
'5/Shift+5': 'tools_ellipse'
};
- Object.entries(keyAssocs).forEach(([keyval, sel]) => {
+ Object.entries(keyAssocs).forEach(([ keyval, sel ]) => {
const parentsElements = this.getParents($id(sel), $id('main_menu'));
const menu = (parentsElements.length);
@@ -384,7 +384,7 @@ class Editor extends EditorStartup {
this.exportWindow.location.href = data.bloburl || data.datauri;
const done = this.configObj.pref('export_notice_done');
if (done !== 'all') {
- let note = this.i18next.t('notification.saveFromBrowser', { type: data.type});
+ let note = this.i18next.t('notification.saveFromBrowser', { type: data.type });
// Check if there are issues
if (issues.length) {
@@ -1083,7 +1083,7 @@ class Editor extends EditorStartup {
resolve(cb());
return;
}
- this.callbacks.push([cb, resolve, reject]);
+ this.callbacks.push([ cb, resolve, reject ]);
});
}
@@ -1094,16 +1094,16 @@ class Editor extends EditorStartup {
*/
async runCallbacks() {
try {
- await Promise.all(this.callbacks.map(([cb]) => {
+ await Promise.all(this.callbacks.map(([ cb ]) => {
return cb();
}));
} catch (err) {
- this.callbacks.forEach(([, , reject]) => {
+ this.callbacks.forEach(([ , , reject ]) => {
reject();
});
throw err;
}
- this.callbacks.forEach(([, resolve]) => {
+ this.callbacks.forEach(([ , resolve ]) => {
resolve();
});
this.isReady = true;
diff --git a/src/editor/EditorStartup.js b/src/editor/EditorStartup.js
index c7c3b453..367e3ec9 100644
--- a/src/editor/EditorStartup.js
+++ b/src/editor/EditorStartup.js
@@ -1,6 +1,6 @@
/* globals $ seConfirm seAlert */
import './touch.js';
-import {convertUnit} from '../common/units.js';
+import { convertUnit } from '../common/units.js';
import {
putLocale
} from './locale.js';
@@ -41,7 +41,7 @@ const readySignal = () => {
}
};
-const {$id} = SvgCanvas;
+const { $id } = SvgCanvas;
/**
*
@@ -118,7 +118,7 @@ class EditorStartup {
this.layersPanel.init();
this.mainMenu.init();
- const {undoMgr} = this.svgCanvas;
+ const { undoMgr } = this.svgCanvas;
this.workarea = document.getElementById('workarea');
this.canvMenu = document.getElementById('se-cmenu_canvas');
this.exportWindow = null;
@@ -160,7 +160,7 @@ class EditorStartup {
if (!data.output) { // Ignore Chrome
return;
}
- const {exportWindowName} = data;
+ const { exportWindowName } = data;
if (exportWindowName) {
this.exportWindow = window.open('', this.exportWindowName); // A hack to get the window via JSON-able name without opening a new one
}
@@ -182,7 +182,7 @@ class EditorStartup {
* @listens module:svgcanvas.SvgCanvas#event:updateCanvas
* @returns {void}
*/
- function (win, {center, newCtr}) {
+ function (win, { center, newCtr }) {
this.updateCanvas(center, newCtr);
}.bind(this)
);
@@ -279,7 +279,7 @@ class EditorStartup {
let lastX = null, lastY = null,
panning = false, keypan = false;
- $id('svgcanvas').addEventListener('mouseup', function(evt) {
+ $id('svgcanvas').addEventListener('mouseup', function(evt) {
if (panning === false) { return true; }
wArea.scrollLeft -= (evt.clientX - lastX);
@@ -290,9 +290,9 @@ class EditorStartup {
if (evt.type === 'mouseup') { panning = false; }
return false;
- });
+ });
// eslint-disable-next-line sonarjs/no-identical-functions
- $id('svgcanvas').addEventListener('mousemove', function(evt) {
+ $id('svgcanvas').addEventListener('mousemove', function(evt) {
if (panning === false) { return true; }
wArea.scrollLeft -= (evt.clientX - lastX);
@@ -322,10 +322,10 @@ class EditorStartup {
if (e.target.nodeName !== 'BODY') return;
if(e.code.toLowerCase() === 'space'){
this.svgCanvas.spaceKey = keypan = true;
- e.preventDefault();
+ e.preventDefault();
} else if((e.key.toLowerCase() === 'shift') && (this.svgCanvas.getMode() === 'zoom')){
this.workarea.style.cursor = zoomOutIcon;
- e.preventDefault();
+ e.preventDefault();
} else {
return;
}
@@ -335,10 +335,10 @@ class EditorStartup {
if (e.target.nodeName !== 'BODY') return;
if(e.code.toLowerCase() === 'space'){
this.svgCanvas.spaceKey = keypan = false;
- e.preventDefault();
+ e.preventDefault();
} else if((e.key.toLowerCase() === 'shift') && (this.svgCanvas.getMode() === 'zoom')){
this.workarea.style.cursor = zoomInIcon;
- e.preventDefault();
+ e.preventDefault();
} else {
return;
}
@@ -367,7 +367,7 @@ class EditorStartup {
el.addEventListener("focus", (e) => {
inp = e.currentTarget;
this.uiContext = 'toolbars';
- this.workarea.addEventListener('mousedown', unfocus);
+ this.workarea.addEventListener('mousedown', unfocus);
});
el.addEventListener("blur", () => {
this.uiContext = 'canvas';
@@ -399,12 +399,12 @@ class EditorStartup {
);
}
const winWh = {
- width: getWidth(),
+ width: getWidth(),
height: getHeight()
};
window.addEventListener('resize', () => {
- Object.entries(winWh).forEach(([type, val]) => {
+ Object.entries(winWh).forEach(([ type, val ]) => {
const curval = (type === 'width') ? window.innerWidth - 15 : window.innerHeight;
this.workarea['scroll' + (type === 'width' ? 'Left' : 'Top')] -= (curval - val) / 2;
winWh[type] = curval;
@@ -619,14 +619,14 @@ class EditorStartup {
editorObj.svgCanvas.alignSelectedElements('m', 'page');
editorObj.svgCanvas.alignSelectedElements('c', 'page');
// highlight imported element, otherwise we get strange empty selectbox
- editorObj.svgCanvas.selectOnly([newElement]);
+ editorObj.svgCanvas.selectOnly([ newElement ]);
document.getElementById('se-prompt-dialog').setAttribute('close', true);
};
reader.readAsText(file);
} else {
// bitmap handling
reader = new FileReader();
- reader.onloadend = function ({target: {result}}) {
+ reader.onloadend = function ({ target: { result } }) {
/**
* Insert the new image until we know its dimensions.
* @param {Float} imageWidth
@@ -646,7 +646,7 @@ class EditorStartup {
}
});
editorObj.svgCanvas.setHref(newImage, result);
- editorObj.svgCanvas.selectOnly([newImage]);
+ editorObj.svgCanvas.selectOnly([ newImage ]);
editorObj.svgCanvas.alignSelectedElements('m', 'page');
editorObj.svgCanvas.alignSelectedElements('c', 'page');
editorObj.topPanelHandlers.updateContextPanel();
@@ -715,8 +715,8 @@ class EditorStartup {
*/
// eslint-disable-next-line no-unsanitized/method
const imported = await import(`./extensions/${encodeURIComponent(extname)}/${encodeURIComponent(extname)}.js`);
- const {name = extname, init: initfn} = imported.default;
- return this.addExtension(name, (initfn && initfn.bind(this)), {$, langParam: 'en'}); /** @todo change to current lng */
+ const { name = extname, init: initfn } = imported.default;
+ return this.addExtension(name, (initfn && initfn.bind(this)), { $, langParam: 'en' }); /** @todo change to current lng */
} catch (err) {
// Todo: Add config to alert any errors
console.error('Extension failed to load: ' + extname + '; ', err);
@@ -739,8 +739,8 @@ class EditorStartup {
*/
// eslint-disable-next-line no-unsanitized/method
const imported = await import(encodeURI(extPathName));
- const {name, init: initfn} = imported.default;
- return this.addExtension(name, (initfn && initfn.bind(this)), {$});
+ const { name, init: initfn } = imported.default;
+ return this.addExtension(name, (initfn && initfn.bind(this)), { $ });
} catch (err) {
// Todo: Add config to alert any errors
console.error('Extension failed to load: ' + extPathName + '; ', err);
@@ -790,9 +790,9 @@ class EditorStartup {
* @fires module:svgcanvas.SvgCanvas#event:message
* @returns {void}
*/
- messageListener ({data, origin}) {
+ messageListener ({ data, origin }) {
// console.log('data, origin, extensionsAdded', data, origin, extensionsAdded);
- const messageObj = {data, origin};
+ const messageObj = { data, origin };
if (!this.extensionsAdded) {
this.messageQueue.push(messageObj);
} else {
diff --git a/src/editor/MainMenu.js b/src/editor/MainMenu.js
index bb80ecf9..b07b0425 100644
--- a/src/editor/MainMenu.js
+++ b/src/editor/MainMenu.js
@@ -1,7 +1,7 @@
/* globals seConfirm, seAlert */
import SvgCanvas from "../svgcanvas/svgcanvas.js";
-import {convertUnit, isValidUnit} from '../common/units.js';
-import {isChrome} from '../common/browser.js';
+import { convertUnit, isValidUnit } from '../common/units.js';
+import { isChrome } from '../common/browser.js';
const { $id } = SvgCanvas;
const homePage = 'https://github.com/SVG-Edit/svgedit';
@@ -26,7 +26,7 @@ class MainMenu {
* @returns {void}
*/
async clickClear() {
- const [x, y] = this.editor.configObj.curConfig.dimensions;
+ const [ x, y ] = this.editor.configObj.curConfig.dimensions;
const ok = await seConfirm(this.editor.i18next.t('notification.QwantToClear'));
if (ok === "Cancel") {
return;
@@ -183,7 +183,7 @@ class MainMenu {
${loadingImage}
`;
if (typeof URL !== "undefined" && URL.createObjectURL) {
- const blob = new Blob([popHTML], { type: "text/html" });
+ const blob = new Blob([ popHTML ], { type: "text/html" });
popURL = URL.createObjectURL(blob);
} else {
popURL = "data:text/html;base64;charset=utf-8," + popHTML;
@@ -305,7 +305,7 @@ class MainMenu {
init() {
// add Top panel
const template = document.createElement("template");
- const {i18next} = this.editor;
+ const { i18next } = this.editor;
// eslint-disable-next-line no-unsanitized/property
template.innerHTML = `
diff --git a/src/editor/Rulers.js b/src/editor/Rulers.js
index 4a4dbed3..4888b541 100644
--- a/src/editor/Rulers.js
+++ b/src/editor/Rulers.js
@@ -1,4 +1,4 @@
-import {getTypeMap} from '../common/units.js';
+import { getTypeMap } from '../common/units.js';
import rulersTemplate from './templates/rulersTemplate.js';
/**
*
@@ -52,7 +52,7 @@ class Rulers {
const dim = isX ? 'x' : 'y';
const lentype = isX ? 'width' : 'height';
const contentDim = Number(contentElem.getAttribute(dim));
- const {$id} = this.svgCanvas;
+ const { $id } = this.svgCanvas;
const $hcanvOrig = $id('ruler_' + dim).querySelector('canvas');
// Bit of a hack to fully clear the canvas in Safari & IE9
diff --git a/src/editor/components/PaintBox.js b/src/editor/components/PaintBox.js
index 7840f102..6335cafe 100644
--- a/src/editor/components/PaintBox.js
+++ b/src/editor/components/PaintBox.js
@@ -1,4 +1,4 @@
-import {jGraduate} from './jgraduate/jQuery.jGraduate.js';
+import { jGraduate } from './jgraduate/jQuery.jGraduate.js';
/**
*
*/
@@ -67,7 +67,7 @@ class PaintBox {
*/
static getPaint (svgCanvas, color, opac, type) {
// update the editor's fill paint
- const opts = {alpha: opac};
+ const opts = { alpha: opac };
if (color.startsWith('url(#')) {
let refElem = svgCanvas.getRefElem(color);
refElem = (refElem) ? refElem.cloneNode(true) : document.querySelectorAll('#' + type + '_color defs *')[0];
@@ -88,7 +88,7 @@ class PaintBox {
update (svgcanvas, selectedElement) {
if (!selectedElement) { return null; }
- const {type} = this;
+ const { type } = this;
switch (selectedElement.tagName) {
case 'use':
case 'image':
diff --git a/src/editor/components/jgraduate/ColorValuePicker.js b/src/editor/components/jgraduate/ColorValuePicker.js
index fff29566..09fae4b2 100644
--- a/src/editor/components/jgraduate/ColorValuePicker.js
+++ b/src/editor/components/jgraduate/ColorValuePicker.js
@@ -232,7 +232,7 @@ export default class ColorValuePicker {
break;
case ahex:
color.value = 'ahex';
- ahex.value = color.value.substring(6);
+ ahex.value = color.value.substring(6);
break;
}
}
@@ -349,7 +349,7 @@ export default class ColorValuePicker {
value = inputs[2],
hex = inputs[(inputs.length > 7) ? 7 : 6],
ahex = inputs.length > 7 ? inputs[8] : null;
- Object.assign(that, {destroy});
+ Object.assign(that, { destroy });
red.addEventListener('keyup', keyUp);
green.addEventListener('keyup', keyUp);
blue.addEventListener('keyup', keyUp);
diff --git a/src/editor/components/jgraduate/Slider.js b/src/editor/components/jgraduate/Slider.js
index 34bcf172..75100531 100644
--- a/src/editor/components/jgraduate/Slider.js
+++ b/src/editor/components/jgraduate/Slider.js
@@ -1,5 +1,5 @@
/* eslint-disable no-bitwise */
-import {findPos} from './Util.js';
+import { findPos } from './Util.js';
/**
* Whether a value is `null` or `undefined`.
* @param {any} val
@@ -38,7 +38,7 @@ export default class Slider {
*/
function mouseDown (e) {
const off = findPos(bar);
- offset = {l: off.left | 0, t: off.top | 0};
+ offset = { l: off.left | 0, t: off.top | 0 };
clearTimeout(timeout);
// using setTimeout for visual updates - once the style is updated the browser will re-render internally allowing the next Javascript to run
timeout = setTimeout(function () {
@@ -146,7 +146,7 @@ export default class Slider {
case 'x': return x;
case 'y': return y;
case 'xy':
- default: return {x, y};
+ default: return { x, y };
}
}
if (!isNullish(context) && context === that) return undefined;
@@ -216,12 +216,12 @@ export default class Slider {
switch (name.toLowerCase()) {
case 'minx': return minX;
case 'maxx': return maxX;
- case 'rangex': return {minX, maxX, rangeX};
+ case 'rangex': return { minX, maxX, rangeX };
case 'miny': return minY;
case 'maxy': return maxY;
- case 'rangey': return {minY, maxY, rangeY};
+ case 'rangey': return { minY, maxY, rangeY };
case 'all':
- default: return {minX, maxX, rangeX, minY, maxY, rangeY};
+ default: return { minX, maxX, rangeX, minY, maxY, rangeY };
}
}
let // changed = false,
diff --git a/src/editor/components/jgraduate/jQuery.jGraduate.js b/src/editor/components/jgraduate/jQuery.jGraduate.js
index bcc8340f..2a2362fe 100644
--- a/src/editor/components/jgraduate/jQuery.jGraduate.js
+++ b/src/editor/components/jgraduate/jQuery.jGraduate.js
@@ -20,8 +20,8 @@
* @example $.jGraduate.Paint({hex: '#rrggbb', linearGradient: o}); // throws an exception?
*/
import Paint from './paint.js';
-import {jPickerDefaults, jPickerMethod} from './jQuery.jPicker.js';
-import {findPos} from './Util.js';
+import { jPickerDefaults, jPickerMethod } from './jQuery.jPicker.js';
+import { findPos } from './Util.js';
/**
* @todo JFH: This jQuery plugin was adapted to work within a Web Component.
@@ -126,11 +126,11 @@ const isGecko = navigator.userAgent.includes('Gecko/');
*/
function setAttrs (elem, attrs) {
if (isGecko) {
- Object.entries(attrs).forEach(([aname, val]) => {
+ Object.entries(attrs).forEach(([ aname, val ]) => {
elem.setAttribute(aname, val);
});
} else {
- Object.entries(attrs).forEach(([aname, val]) => {
+ Object.entries(attrs).forEach(([ aname, val ]) => {
const prop = elem[aname];
if (prop && prop.constructor === 'SVGLength') {
prop.baseVal.value = val;
@@ -221,7 +221,7 @@ export function jGraduateMethod (elem, options, okCallback, cancelCallback) {
};
Object.assign($this, {
// make a copy of the incoming paint
- paint: new jGraduate.Paint({copy: $settings.paint}),
+ paint: new jGraduate.Paint({ copy: $settings.paint }),
okCallback: typeof okCallback === 'function' ? okCallback : null,
cancelCallback: typeof cancelCallback === 'function' ? cancelCallback : null
});
@@ -231,7 +231,7 @@ export function jGraduateMethod (elem, options, okCallback, cancelCallback) {
const $win = window;
if ($this.paint.type === 'none') {
- $this.paint = new jGraduate.Paint({solidColor: 'ffffff'});
+ $this.paint = new jGraduate.Paint({ solidColor: 'ffffff' });
}
$this.classList.add('jGraduate_Picker');
/* eslint-disable max-len */
@@ -531,7 +531,7 @@ export function jGraduateMethod (elem, options, okCallback, cancelCallback) {
$elem.style.top = e.target.value * MAX;
}
};
- for (const [, attr] of ['x1', 'y1', 'x2', 'y2', 'cx', 'cy', 'fx', 'fy'].entries()) {
+ for (const [ , attr ] of [ 'x1', 'y1', 'x2', 'y2', 'cx', 'cy', 'fx', 'fy' ].entries()) {
const isRadial = isNaN(attr[1]);
let attrval = curGradient.getAttribute(attr);
@@ -620,9 +620,9 @@ export function jGraduateMethod (elem, options, okCallback, cancelCallback) {
jqPickerElem.style.left = '100px';
jqPickerElem.style.bottom = '15px';
jPickerMethod(jqPickerElem, {
- window: {title: 'Pick the start color and opacity for the gradient'},
- images: {clientPath: $settings.images.clientPath},
- color: {active: colr, alphaSupport: true}
+ window: { title: 'Pick the start color and opacity for the gradient' },
+ images: { clientPath: $settings.images.clientPath },
+ color: { active: colr, alphaSupport: true }
}, function (clr) {
stopColor = clr.val('hex') ? ('#' + clr.val('hex')) : 'none';
stopOpacity = clr.val('a') !== null ? clr.val('a') / 256 : 1;
@@ -752,9 +752,9 @@ export function jGraduateMethod (elem, options, okCallback, cancelCallback) {
}
drag.setAttribute('transform', xfStr);
- const jqpgpath = $this.querySelector('#'+drag.dataset.bg);
+ const jqpgpath = $this.querySelector('#'+drag.dataset.bg);
jqpgpath.setAttribute('transform', xfStr);
- const stop = $this.querySelector('#'+drag.dataset.stop);
+ const stop = $this.querySelector('#'+drag.dataset.stop);
const sX = (x - 10) / MAX;
stop.setAttribute('offset', sX);
@@ -795,7 +795,7 @@ export function jGraduateMethod (elem, options, okCallback, cancelCallback) {
stopMakerSVG.addEventListener('click', function (evt) {
stopOffset = findPos(stopMakerDiv);
- const {target} = evt;
+ const { target } = evt;
if (target.tagName === 'path') return;
let x = evt.pageX - stopOffset.left - 8;
x = x < 10 ? 10 : x > MAX + 10 ? MAX + 10 : x;
@@ -983,7 +983,7 @@ export function jGraduateMethod (elem, options, okCallback, cancelCallback) {
let slider;
const setSlider = function (e) {
- const {offset: {left}} = slider;
+ const { offset: { left } } = slider;
const divi = slider.parent;
let x = (e.pageX - left - Number.parseInt(getComputedStyle(divi, null).getPropertyValue('border-left-width')));
if (x > SLIDERW) x = SLIDERW;
@@ -1088,7 +1088,7 @@ export function jGraduateMethod (elem, options, okCallback, cancelCallback) {
val: angleVal
}
};
- for (const [, [type, data]] of Object.entries(Object.entries(sliders))) {
+ for (const [ , [ type, data ] ] of Object.entries(Object.entries(sliders))) {
const handle = $this.querySelector(data.handle);
const sInput = $this.querySelector(data.input);
handle.addEventListener('mousedown', function (evt) {
@@ -1177,15 +1177,15 @@ export function jGraduateMethod (elem, options, okCallback, cancelCallback) {
}
// This should be done somewhere else, probably
Object.assign(jPickerDefaults.window, {
- alphaSupport: true, effects: {type: 'show', speed: 0}
+ alphaSupport: true, effects: { type: 'show', speed: 0 }
});
jPickerMethod(
colPicker,
{
- window: {title: $settings.window.pickerTitle},
- images: {clientPath: $settings.images.clientPath},
- color: {active: color, alphaSupport: true}
+ window: { title: $settings.window.pickerTitle },
+ images: { clientPath: $settings.images.clientPath },
+ color: { active: color, alphaSupport: true }
},
function (clr) {
$this.paint.type = 'solidColor';
diff --git a/src/editor/components/jgraduate/jQuery.jPicker.js b/src/editor/components/jgraduate/jQuery.jPicker.js
index 41da0de5..6b9f2fb2 100755
--- a/src/editor/components/jgraduate/jQuery.jPicker.js
+++ b/src/editor/components/jgraduate/jQuery.jPicker.js
@@ -19,7 +19,7 @@
/* eslint-disable max-len */
import ColorValuePicker from './ColorValuePicker.js';
import Slider from './Slider.js';
-import {findPos,mergeDeep} from './Util.js';
+import { findPos, mergeDeep } from './Util.js';
/**
* @external Math
@@ -121,7 +121,7 @@ export const jPicker = /** @lends external:jQuery.jPicker */ {
if (isNullish(name) || name === '') name = 'all';
if (isNullish(r)) return null;
switch (name.toLowerCase()) {
- case 'ahex': return ColorMethods.rgbaToHex({r, g, b, a});
+ case 'ahex': return ColorMethods.rgbaToHex({ r, g, b, a });
case 'hex': return val('ahex').substring(0, 6);
case 'all': return {
r, g, b, a, h, s, v,
@@ -131,7 +131,7 @@ export const jPicker = /** @lends external:jQuery.jPicker */ {
default: {
ret = {};
const nameLength = name.length;
- [...name].forEach((ch) => {
+ [ ...name ].forEach((ch) => {
switch (ch) {
case 'r':
if (nameLength === 1) ret = r;
@@ -234,7 +234,7 @@ export const jPicker = /** @lends external:jQuery.jPicker */ {
if (value.h !== undefined && !name.includes('h')) name += 'h';
if (value.s !== undefined && !name.includes('s')) name += 's';
if (value.v !== undefined && !name.includes('v')) name += 'v';
- [...name].forEach((ch) => {
+ [ ...name ].forEach((ch) => {
switch (ch) {
case 'r':
if (hsv) return;
@@ -243,7 +243,7 @@ export const jPicker = /** @lends external:jQuery.jPicker */ {
if (newV.r < 0) newV.r = 0;
else if (newV.r > 255) newV.r = 255;
if (r !== newV.r) {
- ({r} = newV);
+ ({ r } = newV);
changed = true;
}
break;
@@ -254,7 +254,7 @@ export const jPicker = /** @lends external:jQuery.jPicker */ {
if (newV.g < 0) newV.g = 0;
else if (newV.g > 255) newV.g = 255;
if (g !== newV.g) {
- ({g} = newV);
+ ({ g } = newV);
changed = true;
}
break;
@@ -265,7 +265,7 @@ export const jPicker = /** @lends external:jQuery.jPicker */ {
if (newV.b < 0) newV.b = 0;
else if (newV.b > 255) newV.b = 255;
if (b !== newV.b) {
- ({b} = newV);
+ ({ b } = newV);
changed = true;
}
break;
@@ -274,7 +274,7 @@ export const jPicker = /** @lends external:jQuery.jPicker */ {
if (newV.a < 0) newV.a = 0;
else if (newV.a > 255) newV.a = 255;
if (a !== newV.a) {
- ({a} = newV);
+ ({ a } = newV);
changed = true;
}
break;
@@ -285,7 +285,7 @@ export const jPicker = /** @lends external:jQuery.jPicker */ {
if (newV.h < 0) newV.h = 0;
else if (newV.h > 360) newV.h = 360;
if (h !== newV.h) {
- ({h} = newV);
+ ({ h } = newV);
changed = true;
}
break;
@@ -296,7 +296,7 @@ export const jPicker = /** @lends external:jQuery.jPicker */ {
if (newV.s < 0) newV.s = 0;
else if (newV.s > 100) newV.s = 100;
if (s !== newV.s) {
- ({s} = newV);
+ ({ s } = newV);
changed = true;
}
break;
@@ -307,7 +307,7 @@ export const jPicker = /** @lends external:jQuery.jPicker */ {
if (newV.v < 0) newV.v = 0;
else if (newV.v > 100) newV.v = 100;
if (v !== newV.v) {
- ({v} = newV);
+ ({ v } = newV);
changed = true;
}
break;
@@ -318,14 +318,14 @@ export const jPicker = /** @lends external:jQuery.jPicker */ {
r = r || 0;
g = g || 0;
b = b || 0;
- const ret = ColorMethods.rgbToHsv({r, g, b});
- ({h, s, v} = ret);
+ const ret = ColorMethods.rgbToHsv({ r, g, b });
+ ({ h, s, v } = ret);
} else if (hsv) {
h = h || 0;
s = !isNullish(s) ? s : 100;
v = !isNullish(v) ? v : 100;
- const ret = ColorMethods.hsvToRgb({h, s, v});
- ({r, g, b} = ret);
+ const ret = ColorMethods.hsvToRgb({ h, s, v });
+ ({ r, g, b } = ret);
}
a = !isNullish(a) ? a : 255;
fireChangeEvents.call(that, context || that);
@@ -375,7 +375,7 @@ export const jPicker = /** @lends external:jQuery.jPicker */ {
val(
(!isNullish(init.a) ? 'a' : '') + 'hex',
!isNullish(init.a)
- ? {ahex: init.hex + ColorMethods.intToHex(init.a)}
+ ? { ahex: init.hex + ColorMethods.intToHex(init.a) }
: init
);
} else if (!isNullish(init.r) && !isNullish(init.g) && !isNullish(init.b)) {
@@ -408,7 +408,7 @@ export const jPicker = /** @lends external:jQuery.jPicker */ {
* @returns {module:jPicker.RGBA}
*/
hexToRgba (hex) {
- if (hex === '' || hex === 'none') return {r: null, g: null, b: null, a: null};
+ if (hex === '' || hex === 'none') return { r: null, g: null, b: null, a: null };
hex = this.validateHex(hex);
let r = '00', g = '00', b = '00', a = '255';
if (hex.length === 6) hex += 'ff';
@@ -476,7 +476,7 @@ export const jPicker = /** @lends external:jQuery.jPicker */ {
* @returns {module:jPicker.HSV}
*/
rgbToHsv (rgb) {
- const r = rgb.r / 255, g = rgb.g / 255, b = rgb.b / 255, hsv = {h: 0, s: 0, v: 0};
+ const r = rgb.r / 255, g = rgb.g / 255, b = rgb.b / 255, hsv = { h: 0, s: 0, v: 0 };
let min = 0, max = 0;
if (r >= g && r >= b) {
max = r;
@@ -509,8 +509,8 @@ export const jPicker = /** @lends external:jQuery.jPicker */ {
* @returns {module:jPicker.RGB}
*/
hsvToRgb (hsv) {
- const rgb = {r: 0, g: 0, b: 0, a: 100};
- let {h, s, v} = hsv;
+ const rgb = { r: 0, g: 0, b: 0, a: 100 };
+ let { h, s, v } = hsv;
if (s === 0) {
if (v === 0) rgb.r = rgb.g = rgb.b = 0;
else rgb.r = rgb.g = rgb.b = (v * 255 / 100) | 0;
@@ -564,7 +564,7 @@ export const jPicker = /** @lends external:jQuery.jPicker */ {
}
}
};
-const {Color, List, ColorMethods} = jPicker; // local copies for YUI compressor
+const { Color, List, ColorMethods } = jPicker; // local copies for YUI compressor
/**
* @function external:jQuery.fn.jPicker
* @see {@link external:jQuery.fn.$.fn.jPicker}
@@ -617,11 +617,11 @@ export function jPickerMethod (elem, options, commitCallback, liveCallback, canc
}
});
if (that.value === '') {
- settings.color.active = new Color({hex: null});
- settings.color.current = new Color({hex: null});
+ settings.color.active = new Color({ hex: null });
+ settings.color.current = new Color({ hex: null });
} else if (ColorMethods.validateHex(that.value)) {
- settings.color.active = new Color({hex: that.value, a: settings.color.active.val('a')});
- settings.color.current = new Color({hex: that.value, a: settings.color.active.val('a')});
+ settings.color.active = new Color({ hex: that.value, a: settings.color.active.val('a') });
+ settings.color.current = new Color({ hex: that.value, a: settings.color.active.val('a') });
}
}
if (settings.window.expandable) {
@@ -646,7 +646,7 @@ export function jPickerMethod (elem, options, commitCallback, liveCallback, canc
* @returns {void}
*/
function setColorMode (colorMode) {
- const {active} = color, // local copies for YUI compressor
+ const { active } = color, // local copies for YUI compressor
// {clientPath} = images,
hex = active.val('hex');
let rgbMap, rgbBar;
@@ -671,10 +671,10 @@ export function jPickerMethod (elem, options, commitCallback, liveCallback, canc
setImgLoc.call(that, colorBarL6, 260);
setAlpha.call(that, colorBarL6, 100);
}, 0);
- colorMap.range('all', {minX: 0, maxX: 100, minY: 0, maxY: 100});
- colorBar.range('rangeY', {minY: 0, maxY: 360});
+ colorMap.range('all', { minX: 0, maxX: 100, minY: 0, maxY: 100 });
+ colorBar.range('rangeY', { minY: 0, maxY: 360 });
if (isNullish(active.val('ahex'))) break;
- colorMap.val('xy', {x: active.val('s'), y: 100 - active.val('v')}, colorMap);
+ colorMap.val('xy', { x: active.val('s'), y: 100 - active.val('v') }, colorMap);
colorBar.val('y', 360 - active.val('h'), colorBar);
break;
case 's':
@@ -687,10 +687,10 @@ export function jPickerMethod (elem, options, commitCallback, liveCallback, canc
setImgLoc.call(that, colorBarL6, 260);
setAlpha.call(that, colorBarL6, 100);
}, 0);
- colorMap.range('all', {minX: 0, maxX: 360, minY: 0, maxY: 100});
- colorBar.range('rangeY', {minY: 0, maxY: 100});
+ colorMap.range('all', { minX: 0, maxX: 360, minY: 0, maxY: 100 });
+ colorBar.range('rangeY', { minY: 0, maxY: 100 });
if (isNullish(active.val('ahex'))) break;
- colorMap.val('xy', {x: active.val('h'), y: 100 - active.val('v')}, colorMap);
+ colorMap.val('xy', { x: active.val('h'), y: 100 - active.val('v') }, colorMap);
colorBar.val('y', 100 - active.val('s'), colorBar);
break;
case 'v':
@@ -705,37 +705,37 @@ export function jPickerMethod (elem, options, commitCallback, liveCallback, canc
setImgLoc.call(that, colorBarL6, 260);
setAlpha.call(that, colorBarL6, 100);
}, 0);
- colorMap.range('all', {minX: 0, maxX: 360, minY: 0, maxY: 100});
- colorBar.range('rangeY', {minY: 0, maxY: 100});
+ colorMap.range('all', { minX: 0, maxX: 360, minY: 0, maxY: 100 });
+ colorBar.range('rangeY', { minY: 0, maxY: 100 });
if (isNullish(active.val('ahex'))) break;
- colorMap.val('xy', {x: active.val('h'), y: 100 - active.val('s')}, colorMap);
+ colorMap.val('xy', { x: active.val('h'), y: 100 - active.val('s') }, colorMap);
colorBar.val('y', 100 - active.val('v'), colorBar);
break;
case 'r':
rgbMap = -1040;
rgbBar = -780;
- colorMap.range('all', {minX: 0, maxX: 255, minY: 0, maxY: 255});
- colorBar.range('rangeY', {minY: 0, maxY: 255});
+ colorMap.range('all', { minX: 0, maxX: 255, minY: 0, maxY: 255 });
+ colorBar.range('rangeY', { minY: 0, maxY: 255 });
if (isNullish(active.val('ahex'))) break;
- colorMap.val('xy', {x: active.val('b'), y: 255 - active.val('g')}, colorMap);
+ colorMap.val('xy', { x: active.val('b'), y: 255 - active.val('g') }, colorMap);
colorBar.val('y', 255 - active.val('r'), colorBar);
break;
case 'g':
rgbMap = -1560;
rgbBar = -1820;
- colorMap.range('all', {minX: 0, maxX: 255, minY: 0, maxY: 255});
- colorBar.range('rangeY', {minY: 0, maxY: 255});
+ colorMap.range('all', { minX: 0, maxX: 255, minY: 0, maxY: 255 });
+ colorBar.range('rangeY', { minY: 0, maxY: 255 });
if (isNullish(active.val('ahex'))) break;
- colorMap.val('xy', {x: active.val('b'), y: 255 - active.val('r')}, colorMap);
+ colorMap.val('xy', { x: active.val('b'), y: 255 - active.val('r') }, colorMap);
colorBar.val('y', 255 - active.val('g'), colorBar);
break;
case 'b':
rgbMap = -2080;
rgbBar = -2860;
- colorMap.range('all', {minX: 0, maxX: 255, minY: 0, maxY: 255});
- colorBar.range('rangeY', {minY: 0, maxY: 255});
+ colorMap.range('all', { minX: 0, maxX: 255, minY: 0, maxY: 255 });
+ colorBar.range('rangeY', { minY: 0, maxY: 255 });
if (isNullish(active.val('ahex'))) break;
- colorMap.val('xy', {x: active.val('r'), y: 255 - active.val('g')}, colorMap);
+ colorMap.val('xy', { x: active.val('r'), y: 255 - active.val('g') }, colorMap);
colorBar.val('y', 255 - active.val('b'), colorBar);
break;
case 'a':
@@ -749,10 +749,10 @@ export function jPickerMethod (elem, options, commitCallback, liveCallback, canc
setImgLoc.call(that, colorBarL6, 0);
setAlpha.call(that, colorBarL6, 100);
}, 0);
- colorMap.range('all', {minX: 0, maxX: 360, minY: 0, maxY: 100});
- colorBar.range('rangeY', {minY: 0, maxY: 255});
+ colorMap.range('all', { minX: 0, maxX: 360, minY: 0, maxY: 100 });
+ colorBar.range('rangeY', { minY: 0, maxY: 255 });
if (isNullish(active.val('ahex'))) break;
- colorMap.val('xy', {x: active.val('h'), y: 100 - active.val('v')}, colorMap);
+ colorMap.val('xy', { x: active.val('h'), y: 100 - active.val('v') }, colorMap);
colorBar.val('y', 255 - active.val('a'), colorBar);
break;
default:
@@ -817,28 +817,28 @@ export function jPickerMethod (elem, options, commitCallback, liveCallback, canc
* @returns {void}
*/
function mapValueChanged (ui, context) {
- const {active} = color;
+ const { active } = color;
if (context !== colorMap && isNullish(active.val())) return;
const xy = ui.val('all');
switch (settings.color.mode) {
case 'h':
- active.val('sv', {s: xy.x, v: 100 - xy.y}, context);
+ active.val('sv', { s: xy.x, v: 100 - xy.y }, context);
break;
case 's':
case 'a':
- active.val('hv', {h: xy.x, v: 100 - xy.y}, context);
+ active.val('hv', { h: xy.x, v: 100 - xy.y }, context);
break;
case 'v':
- active.val('hs', {h: xy.x, s: 100 - xy.y}, context);
+ active.val('hs', { h: xy.x, s: 100 - xy.y }, context);
break;
case 'r':
- active.val('gb', {g: 255 - xy.y, b: xy.x}, context);
+ active.val('gb', { g: 255 - xy.y, b: xy.x }, context);
break;
case 'g':
- active.val('rb', {r: 255 - xy.y, b: xy.x}, context);
+ active.val('rb', { r: 255 - xy.y, b: xy.x }, context);
break;
case 'b':
- active.val('rg', {r: xy.x, g: 255 - xy.y}, context);
+ active.val('rg', { r: xy.x, g: 255 - xy.y }, context);
break;
}
}
@@ -850,26 +850,26 @@ export function jPickerMethod (elem, options, commitCallback, liveCallback, canc
* @returns {void}
*/
function colorBarValueChanged (ui, context) {
- const {active} = color;
+ const { active } = color;
if (context !== colorBar && isNullish(active.val())) return;
switch (settings.color.mode) {
case 'h':
- active.val('h', {h: 360 - ui.val('y')}, context);
+ active.val('h', { h: 360 - ui.val('y') }, context);
break;
case 's':
- active.val('s', {s: 100 - ui.val('y')}, context);
+ active.val('s', { s: 100 - ui.val('y') }, context);
break;
case 'v':
- active.val('v', {v: 100 - ui.val('y')}, context);
+ active.val('v', { v: 100 - ui.val('y') }, context);
break;
case 'r':
- active.val('r', {r: 255 - ui.val('y')}, context);
+ active.val('r', { r: 255 - ui.val('y') }, context);
break;
case 'g':
- active.val('g', {g: 255 - ui.val('y')}, context);
+ active.val('g', { g: 255 - ui.val('y') }, context);
break;
case 'b':
- active.val('b', {b: 255 - ui.val('y')}, context);
+ active.val('b', { b: 255 - ui.val('y') }, context);
break;
case 'a':
active.val('a', 255 - ui.val('y'), context);
@@ -888,29 +888,29 @@ export function jPickerMethod (elem, options, commitCallback, liveCallback, canc
switch (settings.color.mode) {
case 'h': {
const sv = ui.val('sv');
- colorMap.val('xy', {x: !isNullish(sv) ? sv.s : 100, y: 100 - (!isNullish(sv) ? sv.v : 100)}, context);
+ colorMap.val('xy', { x: !isNullish(sv) ? sv.s : 100, y: 100 - (!isNullish(sv) ? sv.v : 100) }, context);
break;
} case 's':
// Fall through
case 'a': {
const hv = ui.val('hv');
- colorMap.val('xy', {x: (hv && hv.h) || 0, y: 100 - (!isNullish(hv) ? hv.v : 100)}, context);
+ colorMap.val('xy', { x: (hv && hv.h) || 0, y: 100 - (!isNullish(hv) ? hv.v : 100) }, context);
break;
} case 'v': {
const hs = ui.val('hs');
- colorMap.val('xy', {x: (hs && hs.h) || 0, y: 100 - (!isNullish(hs) ? hs.s : 100)}, context);
+ colorMap.val('xy', { x: (hs && hs.h) || 0, y: 100 - (!isNullish(hs) ? hs.s : 100) }, context);
break;
} case 'r': {
const bg = ui.val('bg');
- colorMap.val('xy', {x: (bg && bg.b) || 0, y: 255 - ((bg && bg.g) || 0)}, context);
+ colorMap.val('xy', { x: (bg && bg.b) || 0, y: 255 - ((bg && bg.g) || 0) }, context);
break;
} case 'g': {
const br = ui.val('br');
- colorMap.val('xy', {x: (br && br.b) || 0, y: 255 - ((br && br.r) || 0)}, context);
+ colorMap.val('xy', { x: (br && br.b) || 0, y: 255 - ((br && br.r) || 0) }, context);
break;
} case 'b': {
const rg = ui.val('rg');
- colorMap.val('xy', {x: (rg && rg.r) || 0, y: 255 - ((rg && rg.g) || 0)}, context);
+ colorMap.val('xy', { x: (rg && rg.r) || 0, y: 255 - ((rg && rg.g) || 0) }, context);
break;
}
}
@@ -963,7 +963,7 @@ export function jPickerMethod (elem, options, commitCallback, liveCallback, canc
function updateMapVisuals (ui) {
switch (settings.color.mode) {
case 'h':
- setBG.call(that, colorMapDiv, new Color({h: ui.val('h') || 0, s: 100, v: 100}).val('hex'));
+ setBG.call(that, colorMapDiv, new Color({ h: ui.val('h') || 0, s: 100, v: 100 }).val('hex'));
break;
case 's':
case 'a': {
@@ -999,14 +999,14 @@ export function jPickerMethod (elem, options, commitCallback, liveCallback, canc
break;
} case 's': {
const hva = ui.val('hva'),
- saturatedColor = new Color({h: (hva && hva.h) || 0, s: 100, v: !isNullish(hva) ? hva.v : 100});
+ saturatedColor = new Color({ h: (hva && hva.h) || 0, s: 100, v: !isNullish(hva) ? hva.v : 100 });
setBG.call(that, colorBarDiv, saturatedColor.val('hex'));
setAlpha.call(that, colorBarL2, 100 - (!isNullish(hva) ? hva.v : 100));
setAlpha.call(that, colorBarL5, toFixedNumeric(((255 - ((hva && hva.a) || 0)) * 100) / 255, 4));
break;
} case 'v': {
const hsa = ui.val('hsa'),
- valueColor = new Color({h: (hsa && hsa.h) || 0, s: !isNullish(hsa) ? hsa.s : 100, v: 100});
+ valueColor = new Color({ h: (hsa && hsa.h) || 0, s: !isNullish(hsa) ? hsa.s : 100, v: 100 });
setBG.call(that, colorBarDiv, valueColor.val('hex'));
setAlpha.call(that, colorBarL5, toFixedNumeric(((255 - ((hsa && hsa.a) || 0)) * 100) / 255, 4));
break;
@@ -1487,7 +1487,7 @@ export function jPickerMethod (elem, options, commitCallback, liveCallback, canc
for (let i = 0; i < color.quickList.length; i++) {
/* if default colors are hex strings, change them to color objects */
if ((typeof (color.quickList[i])).toString().toLowerCase() === 'string') {
- color.quickList[i] = new Color({hex: color.quickList[i]});
+ color.quickList[i] = new Color({ hex: color.quickList[i] });
}
const alpha = color.quickList[i].val('a');
let ahex = color.quickList[i].val('ahex');
@@ -1588,23 +1588,23 @@ export function jPickerMethod (elem, options, commitCallback, liveCallback, canc
}
}
}
- const {images, localization} = settings; // local copies for YUI compressor
+ const { images, localization } = settings; // local copies for YUI compressor
const color = {
active: (typeof settings.color.active).toString().toLowerCase() === 'string'
- ? new Color({ahex: !settings.window.alphaSupport && settings.color.active
+ ? new Color({ ahex: !settings.window.alphaSupport && settings.color.active
? settings.color.active.substring(0, 6) + 'ff'
: settings.color.active
})
- : new Color({ahex: !settings.window.alphaSupport &&
+ : new Color({ ahex: !settings.window.alphaSupport &&
settings.color.active.val('ahex')
? settings.color.active.val('ahex').substring(0, 6) + 'ff'
: settings.color.active.val('ahex')
}),
current: (typeof settings.color.active).toString().toLowerCase() === 'string'
- ? new Color({ahex: !settings.window.alphaSupport && settings.color.active
+ ? new Color({ ahex: !settings.window.alphaSupport && settings.color.active
? settings.color.active.substring(0, 6) + 'ff'
- : settings.color.active})
- : new Color({ahex: !settings.window.alphaSupport &&
+ : settings.color.active })
+ : new Color({ ahex: !settings.window.alphaSupport &&
settings.color.active.val('ahex')
? settings.color.active.val('ahex').substring(0, 6) + 'ff'
: settings.color.active.val('ahex')
@@ -1770,79 +1770,79 @@ export const jPickerDefaults = {
},
color: {
mode: 'h',
- active: new Color({ahex: '#ffcc00ff'}),
+ active: new Color({ ahex: '#ffcc00ff' }),
quickList: [
- new Color({h: 360, s: 33, v: 100}),
- new Color({h: 360, s: 66, v: 100}),
- new Color({h: 360, s: 100, v: 100}),
- new Color({h: 360, s: 100, v: 75}),
- new Color({h: 360, s: 100, v: 50}),
- new Color({h: 180, s: 0, v: 100}),
- new Color({h: 30, s: 33, v: 100}),
- new Color({h: 30, s: 66, v: 100}),
- new Color({h: 30, s: 100, v: 100}),
- new Color({h: 30, s: 100, v: 75}),
- new Color({h: 30, s: 100, v: 50}),
- new Color({h: 180, s: 0, v: 90}),
- new Color({h: 60, s: 33, v: 100}),
- new Color({h: 60, s: 66, v: 100}),
- new Color({h: 60, s: 100, v: 100}),
- new Color({h: 60, s: 100, v: 75}),
- new Color({h: 60, s: 100, v: 50}),
- new Color({h: 180, s: 0, v: 80}),
- new Color({h: 90, s: 33, v: 100}),
- new Color({h: 90, s: 66, v: 100}),
- new Color({h: 90, s: 100, v: 100}),
- new Color({h: 90, s: 100, v: 75}),
- new Color({h: 90, s: 100, v: 50}),
- new Color({h: 180, s: 0, v: 70}),
- new Color({h: 120, s: 33, v: 100}),
- new Color({h: 120, s: 66, v: 100}),
- new Color({h: 120, s: 100, v: 100}),
- new Color({h: 120, s: 100, v: 75}),
- new Color({h: 120, s: 100, v: 50}),
- new Color({h: 180, s: 0, v: 60}),
- new Color({h: 150, s: 33, v: 100}),
- new Color({h: 150, s: 66, v: 100}),
- new Color({h: 150, s: 100, v: 100}),
- new Color({h: 150, s: 100, v: 75}),
- new Color({h: 150, s: 100, v: 50}),
- new Color({h: 180, s: 0, v: 50}),
- new Color({h: 180, s: 33, v: 100}),
- new Color({h: 180, s: 66, v: 100}),
- new Color({h: 180, s: 100, v: 100}),
- new Color({h: 180, s: 100, v: 75}),
- new Color({h: 180, s: 100, v: 50}),
- new Color({h: 180, s: 0, v: 40}),
- new Color({h: 210, s: 33, v: 100}),
- new Color({h: 210, s: 66, v: 100}),
- new Color({h: 210, s: 100, v: 100}),
- new Color({h: 210, s: 100, v: 75}),
- new Color({h: 210, s: 100, v: 50}),
- new Color({h: 180, s: 0, v: 30}),
- new Color({h: 240, s: 33, v: 100}),
- new Color({h: 240, s: 66, v: 100}),
- new Color({h: 240, s: 100, v: 100}),
- new Color({h: 240, s: 100, v: 75}),
- new Color({h: 240, s: 100, v: 50}),
- new Color({h: 180, s: 0, v: 20}),
- new Color({h: 270, s: 33, v: 100}),
- new Color({h: 270, s: 66, v: 100}),
- new Color({h: 270, s: 100, v: 100}),
- new Color({h: 270, s: 100, v: 75}),
- new Color({h: 270, s: 100, v: 50}),
- new Color({h: 180, s: 0, v: 10}),
- new Color({h: 300, s: 33, v: 100}),
- new Color({h: 300, s: 66, v: 100}),
- new Color({h: 300, s: 100, v: 100}),
- new Color({h: 300, s: 100, v: 75}),
- new Color({h: 300, s: 100, v: 50}),
- new Color({h: 180, s: 0, v: 0}),
- new Color({h: 330, s: 33, v: 100}),
- new Color({h: 330, s: 66, v: 100}),
- new Color({h: 330, s: 100, v: 100}),
- new Color({h: 330, s: 100, v: 75}),
- new Color({h: 330, s: 100, v: 50}),
+ new Color({ h: 360, s: 33, v: 100 }),
+ new Color({ h: 360, s: 66, v: 100 }),
+ new Color({ h: 360, s: 100, v: 100 }),
+ new Color({ h: 360, s: 100, v: 75 }),
+ new Color({ h: 360, s: 100, v: 50 }),
+ new Color({ h: 180, s: 0, v: 100 }),
+ new Color({ h: 30, s: 33, v: 100 }),
+ new Color({ h: 30, s: 66, v: 100 }),
+ new Color({ h: 30, s: 100, v: 100 }),
+ new Color({ h: 30, s: 100, v: 75 }),
+ new Color({ h: 30, s: 100, v: 50 }),
+ new Color({ h: 180, s: 0, v: 90 }),
+ new Color({ h: 60, s: 33, v: 100 }),
+ new Color({ h: 60, s: 66, v: 100 }),
+ new Color({ h: 60, s: 100, v: 100 }),
+ new Color({ h: 60, s: 100, v: 75 }),
+ new Color({ h: 60, s: 100, v: 50 }),
+ new Color({ h: 180, s: 0, v: 80 }),
+ new Color({ h: 90, s: 33, v: 100 }),
+ new Color({ h: 90, s: 66, v: 100 }),
+ new Color({ h: 90, s: 100, v: 100 }),
+ new Color({ h: 90, s: 100, v: 75 }),
+ new Color({ h: 90, s: 100, v: 50 }),
+ new Color({ h: 180, s: 0, v: 70 }),
+ new Color({ h: 120, s: 33, v: 100 }),
+ new Color({ h: 120, s: 66, v: 100 }),
+ new Color({ h: 120, s: 100, v: 100 }),
+ new Color({ h: 120, s: 100, v: 75 }),
+ new Color({ h: 120, s: 100, v: 50 }),
+ new Color({ h: 180, s: 0, v: 60 }),
+ new Color({ h: 150, s: 33, v: 100 }),
+ new Color({ h: 150, s: 66, v: 100 }),
+ new Color({ h: 150, s: 100, v: 100 }),
+ new Color({ h: 150, s: 100, v: 75 }),
+ new Color({ h: 150, s: 100, v: 50 }),
+ new Color({ h: 180, s: 0, v: 50 }),
+ new Color({ h: 180, s: 33, v: 100 }),
+ new Color({ h: 180, s: 66, v: 100 }),
+ new Color({ h: 180, s: 100, v: 100 }),
+ new Color({ h: 180, s: 100, v: 75 }),
+ new Color({ h: 180, s: 100, v: 50 }),
+ new Color({ h: 180, s: 0, v: 40 }),
+ new Color({ h: 210, s: 33, v: 100 }),
+ new Color({ h: 210, s: 66, v: 100 }),
+ new Color({ h: 210, s: 100, v: 100 }),
+ new Color({ h: 210, s: 100, v: 75 }),
+ new Color({ h: 210, s: 100, v: 50 }),
+ new Color({ h: 180, s: 0, v: 30 }),
+ new Color({ h: 240, s: 33, v: 100 }),
+ new Color({ h: 240, s: 66, v: 100 }),
+ new Color({ h: 240, s: 100, v: 100 }),
+ new Color({ h: 240, s: 100, v: 75 }),
+ new Color({ h: 240, s: 100, v: 50 }),
+ new Color({ h: 180, s: 0, v: 20 }),
+ new Color({ h: 270, s: 33, v: 100 }),
+ new Color({ h: 270, s: 66, v: 100 }),
+ new Color({ h: 270, s: 100, v: 100 }),
+ new Color({ h: 270, s: 100, v: 75 }),
+ new Color({ h: 270, s: 100, v: 50 }),
+ new Color({ h: 180, s: 0, v: 10 }),
+ new Color({ h: 300, s: 33, v: 100 }),
+ new Color({ h: 300, s: 66, v: 100 }),
+ new Color({ h: 300, s: 100, v: 100 }),
+ new Color({ h: 300, s: 100, v: 75 }),
+ new Color({ h: 300, s: 100, v: 50 }),
+ new Color({ h: 180, s: 0, v: 0 }),
+ new Color({ h: 330, s: 33, v: 100 }),
+ new Color({ h: 330, s: 66, v: 100 }),
+ new Color({ h: 330, s: 100, v: 100 }),
+ new Color({ h: 330, s: 100, v: 75 }),
+ new Color({ h: 330, s: 100, v: 50 }),
new Color()
]
},
diff --git a/src/editor/components/seButton.js b/src/editor/components/seButton.js
index 4ca4a209..7715d4fe 100644
--- a/src/editor/components/seButton.js
+++ b/src/editor/components/seButton.js
@@ -51,7 +51,7 @@ export class ToolButton extends HTMLElement {
constructor () {
super();
// create the shadowDom and insert the template
- this._shadowRoot = this.attachShadow({mode: 'open'});
+ this._shadowRoot = this.attachShadow({ mode: 'open' });
this._shadowRoot.append(template.content.cloneNode(true));
// locate the component
this.$div = this._shadowRoot.querySelector('div');
@@ -62,7 +62,7 @@ export class ToolButton extends HTMLElement {
* @returns {any} observed
*/
static get observedAttributes () {
- return ['title', 'src', 'pressed', 'disabled', 'size', 'style'];
+ return [ 'title', 'src', 'pressed', 'disabled', 'size', 'style' ];
}
/**
* @function attributeChangedCallback
diff --git a/src/editor/components/seColorPicker.js b/src/editor/components/seColorPicker.js
index 3fa60db1..12d7838a 100644
--- a/src/editor/components/seColorPicker.js
+++ b/src/editor/components/seColorPicker.js
@@ -1,5 +1,5 @@
/* eslint-disable max-len */
-import {jGraduate, jGraduateMethod} from './jgraduate/jQuery.jGraduate.js';
+import { jGraduate, jGraduateMethod } from './jgraduate/jQuery.jGraduate.js';
import PaintBox from './PaintBox.js';
const template = document.createElement('template');
@@ -658,7 +658,7 @@ export class SeColorPicker extends HTMLElement {
constructor () {
super();
// create the shadowDom and insert the template
- this._shadowRoot = this.attachShadow({mode: 'open'});
+ this._shadowRoot = this.attachShadow({ mode: 'open' });
this._shadowRoot.append(template.content.cloneNode(true));
this.$logo = this._shadowRoot.getElementById('logo');
this.$label = this._shadowRoot.getElementById('label');
@@ -672,7 +672,7 @@ export class SeColorPicker extends HTMLElement {
* @returns {any} observed
*/
static get observedAttributes () {
- return ['label', 'src', 'type'];
+ return [ 'label', 'src', 'type' ];
}
/**
* @function attributeChangedCallback
@@ -754,9 +754,9 @@ export class SeColorPicker extends HTMLElement {
update (svgCanvas, selectedElement, apply) {
const paint = this.paintBox.update(svgCanvas, selectedElement);
if (paint && apply) {
- const changeEvent = new CustomEvent('change', {detail: {
+ const changeEvent = new CustomEvent('change', { detail: {
paint
- }});
+ } });
this.dispatchEvent(changeEvent);
}
}
@@ -775,21 +775,21 @@ export class SeColorPicker extends HTMLElement {
connectedCallback () {
this.paintBox = new PaintBox(this.$block, this.type);
this.$picker.addEventListener('click', () => {
- let {paint} = this.paintBox;
+ let { paint } = this.paintBox;
jGraduateMethod(
this.$color_picker,
{
- images: {clientPath: './components/jgraduate/images/'},
+ images: { clientPath: './components/jgraduate/images/' },
paint,
- window: {pickerTitle: this.label},
+ window: { pickerTitle: this.label },
newstop: 'inverse'
},
(p) => {
paint = new jGraduate.Paint(p);
this.setPaint(paint);
- const changeEvent = new CustomEvent('change', {detail: {
+ const changeEvent = new CustomEvent('change', { detail: {
paint
- }});
+ } });
this.dispatchEvent(changeEvent);
this.$color_picker.style.display = 'none';
},
diff --git a/src/editor/components/seDropdown.js b/src/editor/components/seDropdown.js
index 450a6e3d..aaf1039b 100644
--- a/src/editor/components/seDropdown.js
+++ b/src/editor/components/seDropdown.js
@@ -1,7 +1,7 @@
import ListComboBox from 'elix/define/ListComboBox.js';
-import {defaultState} from 'elix/src/base/internal.js';
-import {templateFrom, fragmentFrom} from 'elix/src/core/htmlLiterals.js';
-import {internal} from 'elix';
+import { defaultState } from 'elix/src/base/internal.js';
+import { templateFrom, fragmentFrom } from 'elix/src/core/htmlLiterals.js';
+import { internal } from 'elix';
import NumberSpinBox from '../dialogs/se-elix/define/NumberSpinBox.js';
/**
@@ -56,7 +56,7 @@ class Dropdown extends ListComboBox {
* @returns {any} observed
*/
static get observedAttributes () {
- return ['title', 'src', 'inputsize', 'value'];
+ return [ 'title', 'src', 'inputsize', 'value' ];
}
/**
* @function attributeChangedCallback
@@ -105,7 +105,7 @@ class Dropdown extends ListComboBox {
e.preventDefault();
const value = e.detail?.closeResult?.getAttribute('value');
if (value) {
- const closeEvent = new CustomEvent('change', {detail: {value}});
+ const closeEvent = new CustomEvent('change', { detail: { value } });
this.dispatchEvent(closeEvent);
}
});
@@ -123,7 +123,7 @@ class Dropdown extends ListComboBox {
* @returns {void}
*/
set src (src) {
- this[internal.setState]({src});
+ this[internal.setState]({ src });
}
/**
* @function inputsize
@@ -137,7 +137,7 @@ class Dropdown extends ListComboBox {
* @returns {void}
*/
set inputsize (inputsize) {
- this[internal.setState]({inputsize});
+ this[internal.setState]({ inputsize });
}
/**
* @function value
@@ -151,7 +151,7 @@ class Dropdown extends ListComboBox {
* @returns {void}
*/
set value (value) {
- this[internal.setState]({value});
+ this[internal.setState]({ value });
}
}
diff --git a/src/editor/components/seExplorerButton.js b/src/editor/components/seExplorerButton.js
index 04126acb..8d1673a3 100644
--- a/src/editor/components/seExplorerButton.js
+++ b/src/editor/components/seExplorerButton.js
@@ -107,7 +107,7 @@ export class ExplorerButton extends HTMLElement {
constructor () {
super();
// create the shadowDom and insert the template
- this._shadowRoot = this.attachShadow({mode: 'open'});
+ this._shadowRoot = this.attachShadow({ mode: 'open' });
this._shadowRoot.append(template.content.cloneNode(true));
// locate the component
this.$button = this._shadowRoot.querySelector('.menu-button');
@@ -124,7 +124,7 @@ export class ExplorerButton extends HTMLElement {
* @returns {any} observed
*/
static get observedAttributes () {
- return ['title', 'pressed', 'disabled', 'lib', 'src'];
+ return [ 'title', 'pressed', 'disabled', 'lib', 'src' ];
}
/**
* @function attributeChangedCallback
@@ -160,7 +160,7 @@ export class ExplorerButton extends HTMLElement {
try {
const response = await fetch(`${newValue}index.json`);
const json = await response.json();
- const {lib} = json;
+ const { lib } = json;
this.$menu.innerHTML = lib.map((menu, i) => (
``
)).join('');
@@ -295,9 +295,9 @@ export class ExplorerButton extends HTMLElement {
const size = json.size ?? 300;
const fill = json.fill ? '#333' : 'none';
const off = size * 0.05;
- const vb = [-off, -off, size + off * 2, size + off * 2].join(' ');
+ const vb = [ -off, -off, size + off * 2, size + off * 2 ].join(' ');
const stroke = json.fill ? 0 : (size / 30);
- this.$lib.innerHTML = Object.entries(this.data).map(([key, path]) => {
+ this.$lib.innerHTML = Object.entries(this.data).map(([ key, path ]) => {
const encoded = btoa(`
';
+ '';
$id('svg_prefs').parentNode.insertBefore(div, $id('svg_prefs').nextSibling);
div.style.display = 'none';
// Add functionality and picture to cancel button.
@@ -191,19 +191,19 @@ export default {
// When MathJax is loaded get the div where the math will be rendered.
MathJax.Hub.queue.Push(function () {
math = MathJax.Hub.getAllJax('#mathjax_creator')[0];
- console.log(math);
+ console.log(math);
mathjaxLoaded = true;
- console.log('MathJax Loaded');
+ console.log('MathJax Loaded');
});
} catch (e) {
- console.log('Failed loading MathJax.');
+ console.log('Failed loading MathJax.');
// eslint-disable-next-line no-alert
alert('Failed loading MathJax. You will not be able to change the mathematics.');
}
}
}
}
- }];
+ } ];
return {
name: strings.name,
@@ -214,7 +214,7 @@ export default {
mouseDown () {
if (svgCanvas.getMode() === 'mathjax') {
- return {started: true};
+ return { started: true };
}
return undefined;
},
@@ -227,7 +227,7 @@ export default {
locationY = opts.mouse_y / zoom;
$id("mathjax").style.display = 'block';
- return {started: false}; // Otherwise the last selected object dissapears.
+ return { started: false }; // Otherwise the last selected object dissapears.
}
return undefined;
},
diff --git a/src/editor/extensions/ext-opensave/ext-opensave.js b/src/editor/extensions/ext-opensave/ext-opensave.js
index b0059229..b856d2fe 100644
--- a/src/editor/extensions/ext-opensave/ext-opensave.js
+++ b/src/editor/extensions/ext-opensave/ext-opensave.js
@@ -18,7 +18,7 @@
export default {
name: 'opensave',
- init ({encode64}) {
+ init ({ encode64 }) {
const svgEditor = this;
svgEditor.setCustomHandlers({
@@ -44,7 +44,7 @@ export default {
const done = this.configObj.pref('save_notice_done');
if (done !== 'all') {
- const note = svgEditor.i18next.t('notification.saveFromBrowser', { type: 'SVG'});
+ const note = svgEditor.i18next.t('notification.saveFromBrowser', { type: 'SVG' });
this.configObj.pref('save_notice_done', 'all');
if (done !== 'part') {
diff --git a/src/editor/extensions/ext-overview_window/ext-overview_window.js b/src/editor/extensions/ext-overview_window/ext-overview_window.js
index 2dd0791c..4c10a760 100644
--- a/src/editor/extensions/ext-overview_window/ext-overview_window.js
+++ b/src/editor/extensions/ext-overview_window/ext-overview_window.js
@@ -11,9 +11,9 @@ import { dragmove } from '../../../editor/dragmove/dragmove.js';
export default {
name: 'overview_window',
- init ({_$, isChrome}) {
+ init ({ _$, isChrome }) {
const svgEditor = this;
- const {$id} = svgEditor.svgCanvas;
+ const { $id } = svgEditor.svgCanvas;
const overviewWindowGlobals = {};
// Disabled in Chrome 48-, see https://github.com/SVG-Edit/svgedit/issues/26 and
// https://code.google.com/p/chromium/issues/detail?id=565120.
diff --git a/src/editor/extensions/ext-placemark/ext-placemark.js b/src/editor/extensions/ext-placemark/ext-placemark.js
index b5ca5295..1be71c58 100644
--- a/src/editor/extensions/ext-placemark/ext-placemark.js
+++ b/src/editor/extensions/ext-placemark/ext-placemark.js
@@ -23,8 +23,8 @@ export default {
name: 'placemark',
async init (_S) {
const svgEditor = this;
- const {svgCanvas} = svgEditor;
- const {$id} = svgCanvas;
+ const { svgCanvas } = svgEditor;
+ const { $id } = svgCanvas;
const addElem = svgCanvas.addSVGElementFromJson;
let
selElems,
@@ -40,29 +40,29 @@ export default {
const markerTypes = {
nomarker: {},
forwardslash:
- {element: 'path', attr: {d: 'M30,100 L70,0'}},
+ { element: 'path', attr: { d: 'M30,100 L70,0' } },
reverseslash:
- {element: 'path', attr: {d: 'M30,0 L70,100'}},
+ { element: 'path', attr: { d: 'M30,0 L70,100' } },
verticalslash:
- {element: 'path', attr: {d: 'M50,0 L50,100'}},
+ { element: 'path', attr: { d: 'M50,0 L50,100' } },
xmark:
- {element: 'path', attr: {d: 'M20,80 L80,20 M80,80 L20,20'}},
+ { element: 'path', attr: { d: 'M20,80 L80,20 M80,80 L20,20' } },
leftarrow:
- {element: 'path', attr: {d: 'M0,50 L100,90 L70,50 L100,10 Z'}},
+ { element: 'path', attr: { d: 'M0,50 L100,90 L70,50 L100,10 Z' } },
rightarrow:
- {element: 'path', attr: {d: 'M100,50 L0,90 L30,50 L0,10 Z'}},
+ { element: 'path', attr: { d: 'M100,50 L0,90 L30,50 L0,10 Z' } },
box:
- {element: 'path', attr: {d: 'M20,20 L20,80 L80,80 L80,20 Z'}},
+ { element: 'path', attr: { d: 'M20,20 L20,80 L80,80 L80,20 Z' } },
star:
- {element: 'path', attr: {d: 'M10,30 L90,30 L20,90 L50,10 L80,90 Z'}},
+ { element: 'path', attr: { d: 'M10,30 L90,30 L20,90 L50,10 L80,90 Z' } },
mcircle:
- {element: 'circle', attr: {r: 30, cx: 50, cy: 50}},
+ { element: 'circle', attr: { r: 30, cx: 50, cy: 50 } },
triangle:
- {element: 'path', attr: {d: 'M10,80 L50,20 L80,80 Z'}}
+ { element: 'path', attr: { d: 'M10,80 L50,20 L80,80 Z' } }
};
// duplicate shapes to support unfilled (open) marker types with an _o suffix
- ['leftarrow', 'rightarrow', 'box', 'star', 'mcircle', 'triangle'].forEach((v) => {
+ [ 'leftarrow', 'rightarrow', 'box', 'star', 'mcircle', 'triangle' ].forEach((v) => {
markerTypes[v + '_o'] = markerTypes[v];
});
@@ -106,7 +106,7 @@ export default {
if (elem && elem.getAttribute('class').includes('placemark')) {
var elements = elem.children;
Array.prototype.forEach.call(elements, function(i, _){
- const [, , type, n] = i.id.split('_');
+ const [ , , type, n ] = i.id.split('_');
if (type === 'txt') {
txt.textContent = items[n];
}
@@ -127,7 +127,7 @@ export default {
if (elem && elem.getAttribute('class').includes('placemark')) {
var elements = elem.children;
Array.prototype.forEach.call(elements, function(i, _){
- const [, , type] = i.id.split('_');
+ const [ , , type ] = i.id.split('_');
if (type === 'txt') {
i.style.cssText = 'font-family:' + font + ';font-size:'+fontSize+';';
}
@@ -204,14 +204,14 @@ export default {
if (marker) { marker.remove(); }
el.removeAttribute(markerName);
if (val === 'nomarker') {
- svgCanvas.call('changed', [el]);
+ svgCanvas.call('changed', [ el ]);
return;
}
// Set marker on element
const id = 'placemark_marker_' + el.id;
addMarker(id, val);
el.setAttribute(markerName, 'url(#' + id + ')');
- svgCanvas.call('changed', [el]);
+ svgCanvas.call('changed', [ el ]);
}
/**
@@ -273,7 +273,7 @@ export default {
* @returns {string}
*/
function getTitle (id) {
- const {langList} = strings;
+ const { langList } = strings;
const item = langList.find((itm) => {
return itm.id === id;
});
@@ -294,7 +294,7 @@ export default {
icon: 'markers-' + id + '.png',
title,
type: 'context',
- events: {click: setArrowFromButton},
+ events: { click: setArrowFromButton },
panel: 'placemark_panel',
list: 'placemark_marker',
isDefault: id === 'leftarrow'
@@ -303,7 +303,7 @@ export default {
return buttons;
}
- const buttons = [{
+ const buttons = [ {
id: 'tool_placemark',
icon: 'placemark.png',
type: 'mode',
@@ -314,14 +314,14 @@ export default {
svgCanvas.setMode('placemark');
}
}
- }];
+ } ];
const contextTools = [
{
type: 'button-select',
panel: 'placemark_panel',
id: 'placemark_marker',
colnum: 3,
- events: {change: setArrowFromButton}
+ events: { change: setArrowFromButton }
},
{
type: 'input',
@@ -375,7 +375,7 @@ export default {
font = font.join(' ');
const x0 = opts.start_x + 10, y0 = opts.start_y + 10;
let maxlen = 0;
- const children = [{
+ const children = [ {
element: 'line',
attr: {
id: id + '_pline_0',
@@ -388,7 +388,7 @@ export default {
x2: x0,
y2: y0
}
- }];
+ } ];
items.forEach((i, n) => {
maxlen = Math.max(maxlen, i.length);
children.push({
@@ -418,7 +418,7 @@ export default {
'font-size': fontSize,
'text-anchor': 'start'
},
- children: [i]
+ children: [ i ]
});
});
if (items.length > 0) {
@@ -479,7 +479,7 @@ export default {
newPM.setAttribute('y', y);
const elements = newPM.children;
Array.prototype.forEach.call(elements, function(i, _){
- const [, , type, n] = i.id.split('_');
+ const [ , , type, n ] = i.id.split('_');
const y0 = y + (fontSize + 6) * n,
x0 = x + maxlen * fontSize * 0.5 + fontSize;
const nx = (x + (x0 - x) / 2 < px) ? x0 : x;
@@ -534,7 +534,7 @@ export default {
const txt = [];
const elements = elem.children;
Array.prototype.forEach.call(elements, function(i){
- const [, , type] = i.id.split('_');
+ const [ , , type ] = i.id.split('_');
if (type === 'txt') {
$id('placemarkFont').value = (
i.getAttribute('font-family') + ' ' + i.getAttribute('font-size')
diff --git a/src/editor/extensions/ext-placemark/locale/en.js b/src/editor/extensions/ext-placemark/locale/en.js
index 24e53af6..4b7d9277 100644
--- a/src/editor/extensions/ext-placemark/locale/en.js
+++ b/src/editor/extensions/ext-placemark/locale/en.js
@@ -1,23 +1,23 @@
export default {
name: 'placemark',
langList: [
- {id: 'nomarker', title: 'No Marker'},
- {id: 'leftarrow', title: 'Left Arrow'},
- {id: 'rightarrow', title: 'Right Arrow'},
- {id: 'forwardslash', title: 'Forward Slash'},
- {id: 'reverseslash', title: 'Reverse Slash'},
- {id: 'verticalslash', title: 'Vertical Slash'},
- {id: 'box', title: 'Box'},
- {id: 'star', title: 'Star'},
- {id: 'xmark', title: 'X'},
- {id: 'triangle', title: 'Triangle'},
- {id: 'mcircle', title: 'Circle'},
- {id: 'leftarrow_o', title: 'Open Left Arrow'},
- {id: 'rightarrow_o', title: 'Open Right Arrow'},
- {id: 'box_o', title: 'Open Box'},
- {id: 'star_o', title: 'Open Star'},
- {id: 'triangle_o', title: 'Open Triangle'},
- {id: 'mcircle_o', title: 'Open Circle'}
+ { id: 'nomarker', title: 'No Marker' },
+ { id: 'leftarrow', title: 'Left Arrow' },
+ { id: 'rightarrow', title: 'Right Arrow' },
+ { id: 'forwardslash', title: 'Forward Slash' },
+ { id: 'reverseslash', title: 'Reverse Slash' },
+ { id: 'verticalslash', title: 'Vertical Slash' },
+ { id: 'box', title: 'Box' },
+ { id: 'star', title: 'Star' },
+ { id: 'xmark', title: 'X' },
+ { id: 'triangle', title: 'Triangle' },
+ { id: 'mcircle', title: 'Circle' },
+ { id: 'leftarrow_o', title: 'Open Left Arrow' },
+ { id: 'rightarrow_o', title: 'Open Right Arrow' },
+ { id: 'box_o', title: 'Open Box' },
+ { id: 'star_o', title: 'Open Star' },
+ { id: 'triangle_o', title: 'Open Triangle' },
+ { id: 'mcircle_o', title: 'Open Circle' }
],
buttons: [
{
diff --git a/src/editor/extensions/ext-polygon/ext-polygon.js b/src/editor/extensions/ext-polygon/ext-polygon.js
index c2324469..fe2ccf9e 100644
--- a/src/editor/extensions/ext-polygon/ext-polygon.js
+++ b/src/editor/extensions/ext-polygon/ext-polygon.js
@@ -23,8 +23,8 @@ export default {
name: 'polygon',
async init (_S) {
const svgEditor = this;
- const {svgCanvas} = svgEditor;
- const {$id} = svgCanvas;
+ const { svgCanvas } = svgEditor;
+ const { $id } = svgCanvas;
// const editingitex = false;
const strings = await loadExtensionTranslation(svgEditor.configObj.pref('lang'));
let selElems;
@@ -36,7 +36,7 @@ export default {
*/
const showPanel = (on) => {
$id('polygon_panel').style.display = (on) ? 'block' : 'none';
- };
+ };
/**
* @param {string} attr
@@ -80,8 +80,8 @@ export default {
if (this.leftPanel.updateLeftPanel('tool_polygon')) {
svgCanvas.setMode('polygon');
showPanel(true);
- }
- });
+ }
+ });
// Add the context panel and its handler(s)
const panelTemplate = document.createElement("template");
@@ -141,7 +141,7 @@ export default {
const fill = newFO.getAttribute('fill');
const strokecolor = newFO.getAttribute('strokecolor');
const strokeWidth = Number(newFO.getAttribute('strokeWidth'));
-
+
let x = opts.mouse_x;
let y = opts.mouse_y;
diff --git a/src/editor/extensions/ext-server_moinsave/ext-server_moinsave.js b/src/editor/extensions/ext-server_moinsave/ext-server_moinsave.js
index 336f6945..aab36dd5 100644
--- a/src/editor/extensions/ext-server_moinsave/ext-server_moinsave.js
+++ b/src/editor/extensions/ext-server_moinsave/ext-server_moinsave.js
@@ -7,7 +7,7 @@
* adopted for moinmoins item storage. It sends in one post png and svg data
* (I agree to dual license my work to additional GPLv2 or later)
*/
-import {Canvg as canvg} from 'canvg';
+import { Canvg as canvg } from 'canvg';
const loadExtensionTranslation = async function (lang) {
let translationModule;
@@ -24,11 +24,11 @@ const loadExtensionTranslation = async function (lang) {
export default {
name: 'server_moinsave',
- async init ({encode64}) {
+ async init ({ encode64 }) {
const svgEditor = this;
const strings = await loadExtensionTranslation(svgEditor.configObj.pref('lang'));
- const {svgCanvas} = svgEditor;
- const {$id} = svgCanvas;
+ const { svgCanvas } = svgEditor;
+ const { $id } = svgCanvas;
const saveSvgAction = '/+modify';
// Create upload target (hidden iframe)
@@ -44,7 +44,7 @@ export default {
svgEditor.setCustomHandlers({
async save (win, data) {
const svg = '\n' + data;
- const {pathname} = new URL(location);
+ const { pathname } = new URL(location);
const name = pathname.replace(/\/+get\//, '');
const svgData = encode64(svg);
if (!$id('export_canvas')) {
diff --git a/src/editor/extensions/ext-server_opensave/ext-php_savefile.js b/src/editor/extensions/ext-server_opensave/ext-php_savefile.js
index 05110be1..9284b7d0 100644
--- a/src/editor/extensions/ext-server_opensave/ext-php_savefile.js
+++ b/src/editor/extensions/ext-server_opensave/ext-php_savefile.js
@@ -3,7 +3,7 @@
export default {
name: 'php_savefile',
- init ({$}) {
+ init ({ $ }) {
const svgEditor = this;
const {
canvas: svgCanvas
@@ -22,7 +22,7 @@ export default {
const svg = '\n' + data,
filename = getFileNameFromTitle();
- $.post(saveSvgAction, {output_svg: svg, filename});
+ $.post(saveSvgAction, { output_svg: svg, filename });
}
});
}
diff --git a/src/editor/extensions/ext-server_opensave/ext-server_opensave.js b/src/editor/extensions/ext-server_opensave/ext-server_opensave.js
index 31ad039f..6b2df055 100644
--- a/src/editor/extensions/ext-server_opensave/ext-server_opensave.js
+++ b/src/editor/extensions/ext-server_opensave/ext-server_opensave.js
@@ -6,7 +6,7 @@
* @copyright 2010 Alexis Deveria
*
*/
-import {Canvg as canvg} from 'canvg';
+import { Canvg as canvg } from 'canvg';
const loadExtensionTranslation = async function (lang) {
let translationModule;
@@ -23,7 +23,7 @@ const loadExtensionTranslation = async function (lang) {
export default {
name: 'server_opensave',
- async init ({$, decode64, encode64}) {
+ async init ({ $, decode64, encode64 }) {
const svgEditor = this;
const strings = await loadExtensionTranslation(svgEditor.configObj.pref('lang'));
const {
@@ -33,7 +33,7 @@ export default {
},
canvas: svgCanvas
} = svgEditor;
- const {$id} = svgCanvas;
+ const { $id } = svgCanvas;
/**
*
@@ -130,11 +130,11 @@ export default {
diff --git a/src/editor/touch.js b/src/editor/touch.js
index 4b1826d5..8a875231 100644
--- a/src/editor/touch.js
+++ b/src/editor/touch.js
@@ -5,7 +5,7 @@
* @returns {void}
*/
function touchHandler (ev) {
- const {changedTouches} = ev,
+ const { changedTouches } = ev,
first = changedTouches[0];
let type = '';
@@ -16,7 +16,7 @@ function touchHandler (ev) {
default: return;
}
- const {screenX, screenY, clientX, clientY} = first;
+ const { screenX, screenY, clientX, clientY } = first;
const simulatedEvent = new MouseEvent(type, {
// Event interface
bubbles: true,
diff --git a/src/svgcanvas/blur-event.js b/src/svgcanvas/blur-event.js
index 0e93871a..f3208c01 100644
--- a/src/svgcanvas/blur-event.js
+++ b/src/svgcanvas/blur-event.js
@@ -44,12 +44,12 @@ export const setBlurNoUndo = function (val) {
blurContext_.changeSelectedAttributeNoUndoMethod('filter', 'url(#' + elem.id + '_blur)');
}
if (blurContext_.isWebkit()) {
- // console.log('e', elem);
+ // console.log('e', elem);
elem.removeAttribute('filter');
elem.setAttribute('filter', 'url(#' + elem.id + '_blur)');
}
const filter = blurContext_.getFilter();
- blurContext_.changeSelectedAttributeNoUndoMethod('stdDeviation', val, [filter.firstChild]);
+ blurContext_.changeSelectedAttributeNoUndoMethod('stdDeviation', val, [ filter.firstChild ]);
blurContext_.getCanvas().setBlurOffsets(filter, val);
}
};
@@ -122,14 +122,14 @@ export const setBlur = function (val, complete) {
}
} else {
// Not found, so create
- const newblur = blurContext_.getCanvas().addSVGElementFromJson({element: 'feGaussianBlur',
+ const newblur = blurContext_.getCanvas().addSVGElementFromJson({ element: 'feGaussianBlur',
attr: {
in: 'SourceGraphic',
stdDeviation: val
}
});
- blurContext_.setFilter(blurContext_.getCanvas().addSVGElementFromJson({element: 'filter',
+ blurContext_.setFilter(blurContext_.getCanvas().addSVGElementFromJson({ element: 'filter',
attr: {
id: elemId + '_blur'
}
@@ -140,7 +140,7 @@ export const setBlur = function (val, complete) {
batchCmd.addSubCommand(new InsertElementCommand(blurContext_.getFilter()));
}
- const changes = {filter: elem.getAttribute('filter')};
+ const changes = { filter: elem.getAttribute('filter') };
if (val === 0) {
elem.removeAttribute('filter');
@@ -153,7 +153,7 @@ export const setBlur = function (val, complete) {
blurContext_.getCanvas().setBlurOffsets(blurContext_.getFilter(), val);
const filter = blurContext_.getFilter();
blurContext_.setCurCommand(batchCmd);
- blurContext_.getCanvas().undoMgr.beginUndoableChange('stdDeviation', [filter ? filter.firstChild : null]);
+ blurContext_.getCanvas().undoMgr.beginUndoableChange('stdDeviation', [ filter ? filter.firstChild : null ]);
if (complete) {
blurContext_.getCanvas().setBlurNoUndo(val);
finishChange();
diff --git a/src/svgcanvas/clear.js b/src/svgcanvas/clear.js
index 0394fa3e..bf8e190a 100644
--- a/src/svgcanvas/clear.js
+++ b/src/svgcanvas/clear.js
@@ -4,7 +4,7 @@
* @license MIT
* @copyright 2011 Jeff Schiller
*/
-import {NS} from '../common/namespaces.js';
+import { NS } from '../common/namespaces.js';
let clearContext_ = null;
@@ -19,7 +19,7 @@ export const init = function (clearContext) {
export const clearSvgContentElementInit = function () {
const curConfig = clearContext_.getCurConfig();
- const {dimensions} = curConfig;
+ const { dimensions } = curConfig;
const el = clearContext_.getSVGContent();
// empty()
while(el.firstChild)
diff --git a/src/svgcanvas/coords.js b/src/svgcanvas/coords.js
index bdfa368b..87beca96 100644
--- a/src/svgcanvas/coords.js
+++ b/src/svgcanvas/coords.js
@@ -57,7 +57,7 @@ export const remapElement = function (selected, changes, m) {
doSnapping = editorContext_.getGridSnapping() && selected.parentNode.parentNode.localName === 'svg',
finishUp = function () {
if (doSnapping) {
- Object.entries(changes).forEach(([o, value]) => {
+ Object.entries(changes).forEach(([ o, value ]) => {
changes[o] = snapToGrid(value);
});
}
diff --git a/src/svgcanvas/copy-elem.js b/src/svgcanvas/copy-elem.js
index 25ef28d1..7802c04c 100644
--- a/src/svgcanvas/copy-elem.js
+++ b/src/svgcanvas/copy-elem.js
@@ -1,6 +1,6 @@
-import {isWebkit} from '../common/browser.js';
-import {convertPath} from './path.js';
-import {preventClickDefault} from './utilities.js';
+import { isWebkit } from '../common/browser.js';
+import { convertPath } from './path.js';
+import { preventClickDefault } from './utilities.js';
/**
* Create a clone of an element, updating its ID and its children's IDs when needed.
diff --git a/src/svgcanvas/draw.js b/src/svgcanvas/draw.js
index 04b713d4..6b4f646b 100644
--- a/src/svgcanvas/draw.js
+++ b/src/svgcanvas/draw.js
@@ -8,8 +8,8 @@
import Layer from './layer.js';
import HistoryRecordingService from './historyrecording.js';
-import {NS} from '../common/namespaces.js';
-import {isOpera} from '../common/browser.js';
+import { NS } from '../common/namespaces.js';
+import { isOpera } from '../common/browser.js';
import {
toXml, getElem
} from './utilities.js';
@@ -19,7 +19,7 @@ import {
import {
BatchCommand, RemoveElementCommand, MoveElementCommand, ChangeElementCommand
} from './history.js';
-import {getParentsUntil} from '../editor/components/jgraduate/Util.js';
+import { getParentsUntil } from '../editor/components/jgraduate/Util.js';
const visElems = 'a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use'.split(',');
@@ -50,7 +50,7 @@ function findLayerNameInGroup (group) {
return group.querySelector('title').textContent ||
(isOpera() && group.querySelectorAll
// Hack for Opera 10.60
- ? group.querySelector('title').textContent
+ ? group.querySelector('title').textContent
: '');
}
@@ -574,7 +574,7 @@ export class Drawing {
const group = layer.getGroup();
// Clone children
- const children = [...currentGroup.childNodes];
+ const children = [ ...currentGroup.childNodes ];
children.forEach((child) => {
if (child.localName === 'title') { return; }
group.append(this.copyElem(child));
@@ -791,7 +791,7 @@ export const createLayer = function (name, hrService) {
historyRecordingService(hrService)
);
canvas_.clearSelection();
- canvas_.call('changed', [newLayer]);
+ canvas_.call('changed', [ newLayer ]);
};
/**
@@ -810,7 +810,7 @@ export const cloneLayer = function (name, hrService) {
canvas_.clearSelection();
leaveContext();
- canvas_.call('changed', [newLayer]);
+ canvas_.call('changed', [ newLayer ]);
};
/**
@@ -822,7 +822,7 @@ export const cloneLayer = function (name, hrService) {
*/
export const deleteCurrentLayer = function () {
let currentLayer = canvas_.getCurrentDrawing().getCurrentLayer();
- const {nextSibling} = currentLayer;
+ const { nextSibling } = currentLayer;
const parent = currentLayer.parentNode;
currentLayer = canvas_.getCurrentDrawing().deleteCurrentLayer();
if (currentLayer) {
@@ -831,7 +831,7 @@ export const deleteCurrentLayer = function () {
batchCmd.addSubCommand(new RemoveElementCommand(currentLayer, nextSibling, parent));
canvas_.addCommandToHistory(batchCmd);
canvas_.clearSelection();
- canvas_.call('changed', [parent]);
+ canvas_.call('changed', [ parent ]);
return true;
}
return false;
@@ -867,7 +867,7 @@ export const renameCurrentLayer = function (newName) {
if (layer) {
const result = drawing.setCurrentLayerName(newName, historyRecordingService());
if (result) {
- canvas_.call('changed', [layer]);
+ canvas_.call('changed', [ layer ]);
return true;
}
}
@@ -907,7 +907,7 @@ export const setLayerVisibility = function (layerName, bVisible) {
const layer = drawing.setLayerVisibility(layerName, bVisible);
if (layer) {
const oldDisplay = prevVisibility ? 'inline' : 'none';
- canvas_.addCommandToHistory(new ChangeElementCommand(layer, {display: oldDisplay}, 'Layer Visibility'));
+ canvas_.addCommandToHistory(new ChangeElementCommand(layer, { display: oldDisplay }, 'Layer Visibility'));
} else {
return false;
}
@@ -1051,4 +1051,4 @@ export const setContext = function (elem) {
* @class Layer
* @see {@link module:layer.Layer}
*/
-export {Layer};
+export { Layer };
diff --git a/src/svgcanvas/elem-get-set.js b/src/svgcanvas/elem-get-set.js
index fc9ae162..f2696069 100644
--- a/src/svgcanvas/elem-get-set.js
+++ b/src/svgcanvas/elem-get-set.js
@@ -210,11 +210,11 @@ export const setResolutionMethod = function (x, y) {
this.contentH = y;
batchCmd.addSubCommand(new ChangeElementCommand(elemContext_.getSVGContent(), { width: w, height: h }));
- elemContext_.getSVGContent().setAttribute('viewBox', [0, 0, x / currentZoom, y / currentZoom].join(' '));
- batchCmd.addSubCommand(new ChangeElementCommand(elemContext_.getSVGContent(), { viewBox: ['0 0', w, h].join(' ') }));
+ elemContext_.getSVGContent().setAttribute('viewBox', [ 0, 0, x / currentZoom, y / currentZoom ].join(' '));
+ batchCmd.addSubCommand(new ChangeElementCommand(elemContext_.getSVGContent(), { viewBox: [ '0 0', w, h ].join(' ') }));
elemContext_.addCommandToHistory(batchCmd);
- elemContext_.call('changed', [elemContext_.getSVGContent()]);
+ elemContext_.call('changed', [ elemContext_.getSVGContent() ]);
}
return true;
};
@@ -403,7 +403,7 @@ export const findDuplicateGradient = function (grad) {
const defs = findDefs();
const existingGrads = defs.querySelectorAll('linearGradient, radialGradient');
let i = existingGrads.length;
- const radAttrs = ['r', 'cx', 'cy', 'fx', 'fy'];
+ const radAttrs = [ 'r', 'cx', 'cy', 'fx', 'fy' ];
while (i--) {
const og = existingGrads[i];
if (grad.tagName === 'linearGradient') {
@@ -501,7 +501,7 @@ export const setPaintMethod = function (type, paint) {
*/
export const setStrokeWidthMethod = function (val) {
const selectedElements = elemContext_.getSelectedElements();
- if (val === 0 && ['line', 'path'].includes(elemContext_.getCanvas().getMode())) {
+ if (val === 0 && [ 'line', 'path' ].includes(elemContext_.getCanvas().getMode())) {
elemContext_.getCanvas().setStrokeWidth(1);
return;
}
@@ -782,7 +782,7 @@ export const setImageURLMethod = function (val) {
batchCmd.addSubCommand(new ChangeElementCommand(elem, changes));
elemContext_.addCommandToHistory(batchCmd);
- elemContext_.call('changed', [elem]);
+ elemContext_.call('changed', [ elem ]);
};
img.src = val;
};
@@ -838,7 +838,7 @@ export const setRectRadiusMethod = function (val) {
selected.setAttribute('rx', val);
selected.setAttribute('ry', val);
elemContext_.addCommandToHistory(new ChangeElementCommand(selected, { rx: r, ry: r }, 'Radius'));
- elemContext_.call('changed', [selected]);
+ elemContext_.call('changed', [ selected ]);
}
}
};
diff --git a/src/svgcanvas/event.js b/src/svgcanvas/event.js
index 993f744d..365a9a5f 100644
--- a/src/svgcanvas/event.js
+++ b/src/svgcanvas/event.js
@@ -51,10 +51,10 @@ export const getBsplinePoint = function (t) {
t3 = t2 * t;
const m = [
- [-1, 3, -3, 1],
- [3, -6, 3, 0],
- [-3, 0, 3, 0],
- [1, 4, 1, 0]
+ [ -1, 3, -3, 1 ],
+ [ 3, -6, 3, 0 ],
+ [ -3, 0, 3, 0 ],
+ [ 1, 4, 1, 0 ]
];
spline.x = S * (
@@ -619,7 +619,7 @@ export const mouseUpEvent = function (evt) {
// if it was a path
// else, if it was selected and this is a shift-click, remove it from selection
} else if (evt.shiftKey && tempJustSelected !== t) {
- eventContext_.getCanvas().removeFromSelection([t]);
+ eventContext_.getCanvas().removeFromSelection([ t ]);
}
} // no change in mouse position
@@ -709,7 +709,7 @@ export const mouseUpEvent = function (evt) {
id: eventContext_.getId()
}
});
- eventContext_.getCanvas().call('changed', [element]);
+ eventContext_.getCanvas().call('changed', [ element ]);
keep = true;
}
break;
@@ -727,13 +727,13 @@ export const mouseUpEvent = function (evt) {
id: eventContext_.getId()
}
});
- eventContext_.getCanvas().call('changed', [element]);
+ eventContext_.getCanvas().call('changed', [ element ]);
keep = true;
}
break;
case 'text':
keep = true;
- eventContext_.getCanvas().selectOnly([element]);
+ eventContext_.getCanvas().selectOnly([ element ]);
eventContext_.getCanvas().textActions.start(element);
break;
case 'path': {
@@ -818,7 +818,7 @@ export const mouseUpEvent = function (evt) {
) {
// switch into "select" mode if we've clicked on an element
eventContext_.getCanvas().setMode('select');
- eventContext_.getCanvas().selectOnly([t], true);
+ eventContext_.getCanvas().selectOnly([ t ], true);
}
} else if (!isNullish(element)) {
/**
@@ -856,12 +856,12 @@ export const mouseUpEvent = function (evt) {
if (eventContext_.getCurrentMode() === 'path') {
eventContext_.getCanvas().pathActions.toEditMode(element);
} else if (eventContext_.getCurConfig().selectNew) {
- eventContext_.getCanvas().selectOnly([element], true);
+ eventContext_.getCanvas().selectOnly([ element ], true);
}
// we create the insert command that is stored on the stack
// undo means to call cmd.unapply(), redo means to call cmd.apply()
eventContext_.addCommandToHistory(new InsertElementCommand(element));
- eventContext_.getCanvas().call('changed', [element]);
+ eventContext_.getCanvas().call('changed', [ element ]);
}, aniDur * 1000);
}
eventContext_.setStartTransform(null);
@@ -1003,7 +1003,7 @@ export const mouseDownEvent = function (evt) {
// No need to do the call here as it will be done on addToSelection
eventContext_.getCanvas().clearSelection(true);
}
- eventContext_.getCanvas().addToSelection([mouseTarget]);
+ eventContext_.getCanvas().addToSelection([ mouseTarget ]);
eventContext_.setJustSelected(mouseTarget);
eventContext_.getCanvas().pathActions.clear();
}
@@ -1062,7 +1062,7 @@ export const mouseDownEvent = function (evt) {
// want to orient around it
eventContext_.setInitBbox(utilsGetBBox($id('selectedBox0')));
const bb = {};
- for (const [key, val] of Object.entries(eventContext_.getInitBbox())) {
+ for (const [ key, val ] of Object.entries(eventContext_.getInitBbox())) {
bb[key] = val / currentZoom;
}
eventContext_.setInitBbox(bb);
diff --git a/src/svgcanvas/history.js b/src/svgcanvas/history.js
index 90a43ed6..e8ab6a3a 100644
--- a/src/svgcanvas/history.js
+++ b/src/svgcanvas/history.js
@@ -6,8 +6,8 @@
* @copyright 2010 Jeff Schiller
*/
-import {getHref, setHref, getRotationAngle, isNullish} from './utilities.js';
-import {removeElementFromListMap} from './svgtransformlist.js';
+import { getHref, setHref, getRotationAngle, isNullish } from './utilities.js';
+import { removeElementFromListMap } from './svgtransformlist.js';
/**
* Group: Undo/Redo history management.
@@ -56,7 +56,7 @@ export class Command {
* This function needs to be surcharged if multiple elements are returned.
*/
elements () {
- return [this.elem];
+ return [ this.elem ];
}
/**
@@ -312,7 +312,7 @@ export class ChangeElementCommand extends Command {
apply (handler) {
super.apply(handler, () => {
let bChangedTransform = false;
- Object.entries(this.newValues).forEach(([attr, value]) => {
+ Object.entries(this.newValues).forEach(([ attr, value ]) => {
if (value) {
if (attr === '#text') {
this.elem.textContent = value;
@@ -338,7 +338,7 @@ export class ChangeElementCommand extends Command {
const bbox = this.elem.getBBox();
const cx = bbox.x + bbox.width / 2;
const cy = bbox.y + bbox.height / 2;
- const rotate = ['rotate(', angle, ' ', cx, ',', cy, ')'].join('');
+ const rotate = [ 'rotate(', angle, ' ', cx, ',', cy, ')' ].join('');
if (rotate !== this.elem.getAttribute('transform')) {
this.elem.setAttribute('transform', rotate);
}
@@ -356,7 +356,7 @@ export class ChangeElementCommand extends Command {
unapply (handler) {
super.unapply(handler, () => {
let bChangedTransform = false;
- Object.entries(this.oldValues).forEach(([attr, value]) => {
+ Object.entries(this.oldValues).forEach(([ attr, value ]) => {
if (value) {
if (attr === '#text') {
this.elem.textContent = value;
@@ -379,7 +379,7 @@ export class ChangeElementCommand extends Command {
const bbox = this.elem.getBBox();
const cx = bbox.x + bbox.width / 2,
cy = bbox.y + bbox.height / 2;
- const rotate = ['rotate(', angle, ' ', cx, ',', cy, ')'].join('');
+ const rotate = [ 'rotate(', angle, ' ', cx, ',', cy, ')' ].join('');
if (rotate !== this.elem.getAttribute('transform')) {
this.elem.setAttribute('transform', rotate);
}
@@ -608,7 +608,7 @@ export class UndoManager {
finishUndoableChange () {
const p = this.undoChangeStackPointer--;
const changeset = this.undoableChangeStack[p];
- const {attrName} = changeset;
+ const { attrName } = changeset;
const batchCmd = new BatchCommand('Change ' + attrName);
let i = changeset.elements.length;
while (i--) {
diff --git a/src/svgcanvas/historyrecording.js b/src/svgcanvas/historyrecording.js
index 91eefb8a..5e9f92ab 100644
--- a/src/svgcanvas/historyrecording.js
+++ b/src/svgcanvas/historyrecording.js
@@ -77,7 +77,7 @@ class HistoryRecordingService {
if (this.currentBatchCommand_) {
const batchCommand = this.currentBatchCommand_;
this.batchCommandStack_.pop();
- const {length: len} = this.batchCommandStack_;
+ const { length: len } = this.batchCommandStack_;
this.currentBatchCommand_ = len ? this.batchCommandStack_[len - 1] : null;
this.addCommand_(batchCommand);
}
diff --git a/src/svgcanvas/jQuery.attr.js b/src/svgcanvas/jQuery.attr.js
index eafb505e..efd391f0 100644
--- a/src/svgcanvas/jQuery.attr.js
+++ b/src/svgcanvas/jQuery.attr.js
@@ -58,7 +58,7 @@ export default function jQueryPluginSVG ($) {
}
if (typeof key === 'object') {
// Setting attributes from object
- for (const [name, val] of Object.entries(key)) {
+ for (const [ name, val ] of Object.entries(key)) {
elem.setAttribute(name, val);
}
// Getting attribute
diff --git a/src/svgcanvas/json.js b/src/svgcanvas/json.js
index bea225d3..41253ff2 100644
--- a/src/svgcanvas/json.js
+++ b/src/svgcanvas/json.js
@@ -5,8 +5,8 @@
*
* @copyright 2010 Alexis Deveria, 2010 Jeff Schiller
*/
-import {getElem, assignAttributes, cleanupElement} from './utilities.js';
-import {NS} from '../common/namespaces.js';
+import { getElem, assignAttributes, cleanupElement } from './utilities.js';
+import { NS } from '../common/namespaces.js';
let jsonContext_ = null;
let svgdoc_ = null;
diff --git a/src/svgcanvas/layer.js b/src/svgcanvas/layer.js
index fa3cac48..e238a72a 100644
--- a/src/svgcanvas/layer.js
+++ b/src/svgcanvas/layer.js
@@ -6,8 +6,8 @@
* @copyright 2011 Jeff Schiller, 2016 Flint O'Brien
*/
-import {NS} from '../common/namespaces.js';
-import {toXml, walkTree, isNullish} from './utilities.js';
+import { NS } from '../common/namespaces.js';
+import { toXml, walkTree, isNullish } from './utilities.js';
/**
@@ -175,7 +175,7 @@ class Layer {
title.textContent = name;
this.name_ = name;
if (hrService) {
- hrService.changeElement(title, {'#text': previousName});
+ hrService.changeElement(title, { '#text': previousName });
}
return this.name_;
}
diff --git a/src/svgcanvas/math.js b/src/svgcanvas/math.js
index 18644370..16573c4d 100644
--- a/src/svgcanvas/math.js
+++ b/src/svgcanvas/math.js
@@ -19,8 +19,8 @@
* @property {Float} y
*/
-import {NS} from '../common/namespaces.js';
-import {getTransformList} from './svgtransformlist.js';
+import { NS } from '../common/namespaces.js';
+import { getTransformList } from './svgtransformlist.js';
// Constants
const NEAR_ZERO = 1e-14;
@@ -38,7 +38,7 @@ const svg = document.createElementNS(NS.SVG, 'svg');
* @returns {module:math.XYObject} An x, y object representing the transformed point
*/
export const transformPoint = function (x, y, m) {
- return {x: m.a * x + m.c * y + m.e, y: m.b * x + m.d * y + m.f};
+ return { x: m.a * x + m.c * y + m.e, y: m.b * x + m.d * y + m.f };
};
/**
diff --git a/src/svgcanvas/paste-elem.js b/src/svgcanvas/paste-elem.js
index 6f00e951..1194b60d 100644
--- a/src/svgcanvas/paste-elem.js
+++ b/src/svgcanvas/paste-elem.js
@@ -70,7 +70,7 @@ export const pasteElementsMethod = function (type, x, y) {
pasteContext_.getCanvas().runExtensions(
'IDsUpdated',
/** @type {module:svgcanvas.SvgCanvas#event:ext_IDsUpdated} */
- {elems: clipb, changes: changedIDs},
+ { elems: clipb, changes: changedIDs },
true
).forEach(function (extChanges) {
if (!extChanges || !('remove' in extChanges)) return;
diff --git a/src/svgcanvas/path-actions.js b/src/svgcanvas/path-actions.js
index b37ca972..2feff101 100644
--- a/src/svgcanvas/path-actions.js
+++ b/src/svgcanvas/path-actions.js
@@ -7,10 +7,10 @@
* @copyright 2011 Alexis Deveria, 2011 Jeff Schiller
*/
-import {NS} from '../common/namespaces.js';
-import {shortFloat} from '../common/units.js';
-import {getTransformList} from './svgtransformlist.js';
-import {ChangeElementCommand, BatchCommand} from './history.js';
+import { NS } from '../common/namespaces.js';
+import { shortFloat } from '../common/units.js';
+import { getTransformList } from './svgtransformlist.js';
+import { ChangeElementCommand, BatchCommand } from './history.js';
import {
transformPoint, snapToAngle, rectsIntersect,
transformListToTransform
@@ -49,7 +49,7 @@ export const init = function (pathActionsContext) {
* @returns {string}
*/
export const convertPath = function (pth, toRel) {
- const {pathSegList} = pth;
+ const { pathSegList } = pth;
const len = pathSegList.numberOfItems;
let curx = 0, cury = 0;
let d = '';
@@ -92,7 +92,7 @@ export const convertPath = function (pth, toRel) {
letter = 'L';
}
// Convert to "line" for easier editing
- d += pathDSegment(letter, [[x, y]]);
+ d += pathDSegment(letter, [ [ x, y ] ]);
break;
case 14: // absolute vertical line (V)
y -= cury;
@@ -109,7 +109,7 @@ export const convertPath = function (pth, toRel) {
letter = 'L';
}
// Convert to "line" for easier editing
- d += pathDSegment(letter, [[x, y]]);
+ d += pathDSegment(letter, [ [ x, y ] ]);
break;
case 2: // absolute move (M)
case 4: // absolute line (L)
@@ -130,9 +130,9 @@ export const convertPath = function (pth, toRel) {
curx = x;
cury = y;
}
- if (type === 2 || type === 3) { lastM = [curx, cury]; }
+ if (type === 2 || type === 3) { lastM = [ curx, cury ]; }
- d += pathDSegment(letter, [[x, y]]);
+ d += pathDSegment(letter, [ [ x, y ] ]);
break;
case 6: // absolute cubic (C)
x -= curx; x1 -= curx; x2 -= curx;
@@ -148,7 +148,7 @@ export const convertPath = function (pth, toRel) {
curx = x;
cury = y;
}
- d += pathDSegment(letter, [[x1, y1], [x2, y2], [x, y]]);
+ d += pathDSegment(letter, [ [ x1, y1 ], [ x2, y2 ], [ x, y ] ]);
break;
case 8: // absolute quad (Q)
x -= curx; x1 -= curx;
@@ -164,7 +164,7 @@ export const convertPath = function (pth, toRel) {
curx = x;
cury = y;
}
- d += pathDSegment(letter, [[x1, y1], [x, y]]);
+ d += pathDSegment(letter, [ [ x1, y1 ], [ x, y ] ]);
break;
// Fallthrough
case 11: // relative elliptical arc (a)
@@ -177,11 +177,11 @@ export const convertPath = function (pth, toRel) {
curx = x;
cury = y;
}
- d += pathDSegment(letter, [[seg.r1, seg.r2]], [
+ d += pathDSegment(letter, [ [ seg.r1, seg.r2 ] ], [
seg.angle,
(seg.largeArcFlag ? 1 : 0),
(seg.sweepFlag ? 1 : 0)
- ], [x, y]);
+ ], [ x, y ]);
break;
case 16: // absolute smooth cubic (S)
x -= curx; x2 -= curx;
@@ -197,7 +197,7 @@ export const convertPath = function (pth, toRel) {
curx = x;
cury = y;
}
- d += pathDSegment(letter, [[x2, y2], [x, y]]);
+ d += pathDSegment(letter, [ [ x2, y2 ], [ x, y ] ]);
break;
} // switch on path segment type
} // for each segment
@@ -252,7 +252,7 @@ export const pathActionsMethod = (function () {
*/
const smoothPolylineIntoPath = function (element) {
let i;
- const {points} = element;
+ const { points } = element;
const N = points.numberOfItems;
if (N >= 4) {
// loop through every 3 points and convert to a cubic bezier curve segment
@@ -270,7 +270,7 @@ export const pathActionsMethod = (function () {
// - https://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/Bezier/bezier-der.html
let curpos = points.getItem(0), prevCtlPt = null;
let d = [];
- d.push(['M', curpos.x, ',', curpos.y, ' C'].join(''));
+ d.push([ 'M', curpos.x, ',', curpos.y, ' C' ].join(''));
for (i = 1; i <= (N - 4); i += 3) {
let ct1 = points.getItem(i);
const ct2 = points.getItem(i + 1);
@@ -289,7 +289,7 @@ export const pathActionsMethod = (function () {
}
}
- d.push([ct1.x, ct1.y, ct2.x, ct2.y, end.x, end.y].join(','));
+ d.push([ ct1.x, ct1.y, ct2.x, ct2.y, end.x, end.y ].join(','));
curpos = end;
prevCtlPt = ct2;
@@ -298,7 +298,7 @@ export const pathActionsMethod = (function () {
d.push('L');
while (i < N) {
const pt = points.getItem(i);
- d.push([pt.x, pt.y].join(','));
+ d.push([ pt.x, pt.y ].join(','));
i++;
}
d = d.join(' ');
@@ -339,7 +339,7 @@ export const pathActionsMethod = (function () {
let x = mouseX / currentZoom,
y = mouseY / currentZoom,
stretchy = getElem('path_stretch_line');
- newPoint = [x, y];
+ newPoint = [ x, y ];
if (editorContext_.getGridSnapping()) {
x = snapToGrid(x);
@@ -376,7 +376,7 @@ export const pathActionsMethod = (function () {
}
}));
// set stretchy line to first point
- stretchy.setAttribute('d', ['M', mouseX, mouseY, mouseX, mouseY].join(' '));
+ stretchy.setAttribute('d', [ 'M', mouseX, mouseY, mouseX, mouseY ].join(' '));
index = subpath ? path.segs.length : 0;
pathActionsContext_.addPointGrip(index, mouseX, mouseY);
} else {
@@ -474,7 +474,7 @@ export const pathActionsMethod = (function () {
if (evt.shiftKey) {
const xya = snapToAngle(lastx, lasty, x, y);
- ({x, y} = xya);
+ ({ x, y } = xya);
}
// Use the segment defined by stretchy
@@ -496,7 +496,7 @@ export const pathActionsMethod = (function () {
y *= currentZoom;
// set stretchy line to latest point
- stretchy.setAttribute('d', ['M', x, y, x, y].join(' '));
+ stretchy.setAttribute('d', [ 'M', x, y, x, y ].join(' '));
index = num;
if (subpath) { index += path.segs.length; }
pathActionsContext_.addPointGrip(index, x, y);
@@ -512,12 +512,12 @@ export const pathActionsMethod = (function () {
path.storeD();
- ({id} = evt.target);
+ ({ id } = evt.target);
let curPt;
if (id.substr(0, 14) === 'pathpointgrip_') {
// Select this point
curPt = path.cur_pt = Number.parseInt(id.substr(14));
- path.dragging = [startX, startY];
+ path.dragging = [ startX, startY ];
const seg = path.segs[curPt];
// only clear selection if shift is not pressed (otherwise, add
@@ -533,7 +533,7 @@ export const pathActionsMethod = (function () {
path.addPtsToSelection(curPt);
}
} else if (id.startsWith('ctrlpointgrip_')) {
- path.dragging = [startX, startY];
+ path.dragging = [ startX, startY ];
const parts = id.split('_')[1].split('c');
curPt = Number(parts[0]);
@@ -612,7 +612,7 @@ export const pathActionsMethod = (function () {
});
if (index === 0) {
- firstCtrl = [mouseX, mouseY];
+ firstCtrl = [ mouseX, mouseY ];
} else {
const last = seglist.getItem(index - 1);
let lastX = last.x;
@@ -625,7 +625,7 @@ export const pathActionsMethod = (function () {
lastX = firstCtrl[0] / currentZoom;
lastY = firstCtrl[1] / currentZoom;
}
- pathActionsContext_.replacePathSeg(6, index, [ptX, ptY, lastX, lastY, altX, altY], drawnPath);
+ pathActionsContext_.replacePathSeg(6, index, [ ptX, ptY, lastX, lastY, altX, altY ], drawnPath);
}
} else {
const stretchy = getElem('path_stretch_line');
@@ -637,13 +637,13 @@ export const pathActionsMethod = (function () {
pathActionsContext_.replacePathSeg(
6,
1,
- [mouseX, mouseY, prevX * currentZoom, prevY * currentZoom, mouseX, mouseY],
+ [ mouseX, mouseY, prevX * currentZoom, prevY * currentZoom, mouseX, mouseY ],
stretchy
);
} else if (firstCtrl) {
- pathActionsContext_.replacePathSeg(6, 1, [mouseX, mouseY, firstCtrl[0], firstCtrl[1], mouseX, mouseY], stretchy);
+ pathActionsContext_.replacePathSeg(6, 1, [ mouseX, mouseY, firstCtrl[0], firstCtrl[1], mouseX, mouseY ], stretchy);
} else {
- pathActionsContext_.replacePathSeg(4, 1, [mouseX, mouseY], stretchy);
+ pathActionsContext_.replacePathSeg(4, 1, [ mouseX, mouseY ], stretchy);
}
}
}
@@ -661,7 +661,7 @@ export const pathActionsMethod = (function () {
}, path);
const diffX = mpt.x - pt.x;
const diffY = mpt.y - pt.y;
- path.dragging = [mouseX, mouseY];
+ path.dragging = [ mouseX, mouseY ];
if (path.dragctrl) {
path.moveCtrl(diffX, diffY);
@@ -788,8 +788,8 @@ export const pathActionsMethod = (function () {
}
if (selPath) {
- editorContext_.call('selected', [elem]);
- editorContext_.addToSelection([elem], true);
+ editorContext_.call('selected', [ elem ]);
+ editorContext_.addToSelection([ elem ], true);
}
},
/**
@@ -849,7 +849,7 @@ export const pathActionsMethod = (function () {
this.clear();
- editorContext_.addToSelection([elem], true);
+ editorContext_.addToSelection([ elem ], true);
editorContext_.call('changed', editorContext_.getSelectedElements());
},
@@ -909,7 +909,7 @@ export const pathActionsMethod = (function () {
const type = seg.pathSegType;
if (type === 1) { continue; }
const pts = [];
- ['', 1, 2].forEach(function(n){
+ [ '', 1, 2 ].forEach(function(n){
const x = seg['x' + n], y = seg['y' + n];
if (x !== undefined && y !== undefined) {
const pt = transformPoint(x, y, m);
@@ -988,7 +988,7 @@ export const pathActionsMethod = (function () {
// Only allow one selected node for now
if (selPts.length !== 1) { return; }
- const {elem} = path;
+ const { elem } = path;
const list = elem.pathSegList;
// const len = list.numberOfItems;
@@ -1086,7 +1086,7 @@ export const pathActionsMethod = (function () {
const pt = list.getItem(lastM);
// Make this point the new "M"
- pathActionsContext_.replacePathSeg(2, lastM, [pt.x, pt.y]);
+ pathActionsContext_.replacePathSeg(2, lastM, [ pt.x, pt.y ]);
// i = index; // i is local here, so has no effect; what was the intent for this?
@@ -1200,7 +1200,7 @@ export const pathActionsMethod = (function () {
// Get first selected point
const seg = path.segs[selPts[0]];
- const diff = {x: 0, y: 0};
+ const diff = { x: 0, y: 0 };
diff[attr] = newValue - seg.item[attr];
seg.move(diff.x, diff.y);
diff --git a/src/svgcanvas/path-method.js b/src/svgcanvas/path-method.js
index 7c98c5b3..8de3d6ca 100644
--- a/src/svgcanvas/path-method.js
+++ b/src/svgcanvas/path-method.js
@@ -6,8 +6,8 @@
* @copyright 2011 Alexis Deveria, 2011 Jeff Schiller
*/
-import {NS} from '../common/namespaces.js';
-import {ChangeElementCommand} from './history.js';
+import { NS } from '../common/namespaces.js';
+import { ChangeElementCommand } from './history.js';
import {
transformPoint, getMatrix
} from './math.js';
@@ -83,7 +83,7 @@ export const ptObjToArrMethod = function (type, segItem) {
* @returns {module:math.XYObject}
*/
export const getGripPtMethod = function (seg, altPt) {
- const {path: pth} = seg;
+ const { path: pth } = seg;
let out = {
x: altPt ? altPt.x : seg.item.x,
y: altPt ? altPt.y : seg.item.y
@@ -246,7 +246,7 @@ export const getCtrlLineMethod = function (id) {
* @returns {SVGCircleElement}
*/
export const getPointGripMethod = function (seg, update) {
- const {index} = seg;
+ const { index } = seg;
const pointGrip = addPointGripMethod(index);
if (update) {
@@ -266,7 +266,7 @@ export const getPointGripMethod = function (seg, update) {
* @returns {PlainObject
}
*/
export const getControlPointsMethod = function (seg) {
- const {item, index} = seg;
+ const { item, index } = seg;
if (!('x1' in item) || !('x2' in item)) { return null; }
const cpt = {};
/* const pointGripContainer = */ getGripContainerMethod();
@@ -275,15 +275,15 @@ export const getControlPointsMethod = function (seg) {
const path = pathMethodsContext_.getPathObj();
const prev = path.segs[index - 1].item;
- const segItems = [prev, item];
+ const segItems = [ prev, item ];
for (let i = 1; i < 3; i++) {
const id = index + 'c' + i;
const ctrlLine = cpt['c' + i + '_line'] = getCtrlLineMethod(id);
- const pt = getGripPtMethod(seg, {x: item['x' + i], y: item['y' + i]});
- const gpt = getGripPtMethod(seg, {x: segItems[i - 1].x, y: segItems[i - 1].y});
+ const pt = getGripPtMethod(seg, { x: item['x' + i], y: item['y' + i] });
+ const gpt = getGripPtMethod(seg, { x: segItems[i - 1].x, y: segItems[i - 1].y });
assignAttributes(ctrlLine, {
x1: pt.x,
@@ -350,7 +350,7 @@ export const replacePathSegMethod = function (type, index, pts, elem) {
* @returns {SVGPathElement}
*/
export const getSegSelectorMethod = function (seg, update) {
- const {index} = seg;
+ const { index } = seg;
let segLine = getElem('segline_' + index);
if (!segLine) {
const pointGripContainer = getGripContainerMethod();
@@ -369,7 +369,7 @@ export const getSegSelectorMethod = function (seg, update) {
}
if (update) {
- const {prev} = seg;
+ const { prev } = seg;
if (!prev) {
segLine.setAttribute('display', 'none');
return segLine;
@@ -377,11 +377,11 @@ export const getSegSelectorMethod = function (seg, update) {
const pt = getGripPtMethod(prev);
// Set start point
- replacePathSegMethod(2, 0, [pt.x, pt.y], segLine);
+ replacePathSegMethod(2, 0, [ pt.x, pt.y ], segLine);
const pts = ptObjToArrMethod(seg.type, seg.item); // , true);
for (let i = 0; i < pts.length; i += 2) {
- const point = getGripPtMethod(seg, {x: pts[i], y: pts[i + 1]});
+ const point = getGripPtMethod(seg, { x: pts[i], y: pts[i + 1] });
pts[i] = point.x;
pts[i + 1] = point.y;
}
@@ -500,14 +500,14 @@ export class Segment {
* @returns {void}
*/
move (dx, dy) {
- const {item} = this;
+ const { item } = this;
const curPts = this.ctrlpts
? [
item.x += dx, item.y += dy,
item.x1, item.y1, item.x2 += dx, item.y2 += dy
]
- : [item.x += dx, item.y += dy];
+ : [ item.x += dx, item.y += dy ];
replacePathSegMethod(
this.type,
@@ -528,8 +528,8 @@ export class Segment {
if (this.mate) {
// The last point of a closed subpath has a 'mate',
// which is the 'M' segment of the subpath
- const {item: itm} = this.mate;
- const pts = [itm.x += dx, itm.y += dy];
+ const { item: itm } = this.mate;
+ const pts = [ itm.x += dx, itm.y += dy ];
replacePathSegMethod(this.mate.type, this.mate.index, pts);
// Has no grip, so does not need 'updating'?
}
@@ -556,7 +556,7 @@ export class Segment {
pt = seg.item;
}
- const {item} = seg;
+ const { item } = seg;
item['x' + anum] = pt.x + (pt.x - this.item['x' + num]);
item['y' + anum] = pt.y + (pt.y - this.item['y' + num]);
@@ -577,7 +577,7 @@ export class Segment {
* @returns {void}
*/
moveCtrl (num, dx, dy) {
- const {item} = this;
+ const { item } = this;
item['x' + num] += dx;
item['y' + num] += dy;
@@ -656,7 +656,7 @@ export class Path {
this.segs.push(segment);
}
- const {segs} = this;
+ const { segs } = this;
let startI = null;
for (let i = 0; i < len; i++) {
@@ -742,7 +742,7 @@ export class Path {
const seg = this.segs[index];
if (!seg.prev) { return; }
- const {prev} = seg;
+ const { prev } = seg;
let newseg, newX, newY;
switch (seg.item.pathSegType) {
case 4: {
@@ -765,7 +765,7 @@ export class Path {
const p12y = (p1y + p2y) / 2;
newY = (p01y + p12y) / 2;
newseg = this.elem.createSVGPathSegCurvetoCubicAbs(newX, newY, p0x, p0y, p01x, p01y);
- const pts = [seg.item.x, seg.item.y, p12x, p12y, p2x, p2y];
+ const pts = [ seg.item.x, seg.item.y, p12x, p12y, p2x, p2y ];
replacePathSegMethod(seg.type, index, pts);
break;
}
@@ -783,10 +783,10 @@ export class Path {
const list = this.elem.pathSegList;
seg.show(false);
- const {next} = seg;
+ const { next } = seg;
if (seg.mate) {
// Make the next point be the "M" point
- const pt = [next.item.x, next.item.y];
+ const pt = [ next.item.x, next.item.y ];
replacePathSegMethod(2, next.index, pt);
// Reposition last node
@@ -796,7 +796,7 @@ export class Path {
} else if (!seg.prev) {
// First node of open path, make next point the M
// const {item} = seg;
- const pt = [next.item.x, next.item.y];
+ const pt = [ next.item.x, next.item.y ];
replacePathSegMethod(2, seg.next.index, pt);
list.removeItem(index);
} else {
@@ -891,7 +891,7 @@ export class Path {
// Selected seg
const cur = this.segs[selPt];
- const {prev} = cur;
+ const { prev } = cur;
if (!prev) { continue; }
if (!newType) { // double-click, so just toggle
@@ -914,7 +914,7 @@ export class Path {
case 6: {
if (cur.olditem) {
const old = cur.olditem;
- points = [curX, curY, old.x1, old.y1, old.x2, old.y2];
+ points = [ curX, curY, old.x1, old.y1, old.x2, old.y2 ];
} else {
const diffX = curX - prevX;
const diffY = curY - prevY;
@@ -930,11 +930,11 @@ export class Path {
const ct1y = (prevY + (diffY / 3));
const ct2x = (curX - (diffX / 3));
const ct2y = (curY - (diffY / 3));
- points = [curX, curY, ct1x, ct1y, ct2x, ct2y];
+ points = [ curX, curY, ct1x, ct1y, ct2x, ct2y ];
}
break;
} case 4: {
- points = [curX, curY];
+ points = [ curX, curY ];
// Store original prevve segment nums
cur.olditem = cur.item;
@@ -978,7 +978,7 @@ export class Path {
* @returns {Path}
*/
update () {
- const {elem} = this;
+ const { elem } = this;
if (getRotationAngle(elem)) {
this.matrix = getMatrix(elem);
this.imatrix = this.matrix.inverse();
@@ -1001,8 +1001,8 @@ export class Path {
*/
endChanges (text) {
if (isWebkit()) { editorContext_.resetD(this.elem); }
- const cmd = new ChangeElementCommand(this.elem, {d: this.last_d}, text);
- editorContext_.endChanges({cmd, elem: this.elem});
+ const cmd = new ChangeElementCommand(this.elem, { d: this.last_d }, text);
+ editorContext_.endChanges({ cmd, elem: this.elem });
}
/**
@@ -1010,7 +1010,7 @@ export class Path {
* @returns {void}
*/
addPtsToSelection (indexes) {
- if (!Array.isArray(indexes)) { indexes = [indexes]; }
+ if (!Array.isArray(indexes)) { indexes = [ indexes ]; }
indexes.forEach((index) => {
const seg = this.segs[index];
if (seg.ptgrip && !this.selected_pts.includes(index) && index >= 0) {
@@ -1030,7 +1030,7 @@ export class Path {
}
const closedSubpath = Path.subpathIsClosed(this.selected_pts[0]);
- editorContext_.addPtsToSelection({grips, closedSubpath});
+ editorContext_.addPtsToSelection({ grips, closedSubpath });
}
// STATIC
diff --git a/src/svgcanvas/path.js b/src/svgcanvas/path.js
index facfaed4..367b1bd2 100644
--- a/src/svgcanvas/path.js
+++ b/src/svgcanvas/path.js
@@ -6,9 +6,9 @@
* @copyright 2011 Alexis Deveria, 2011 Jeff Schiller
*/
-import {getTransformList} from './svgtransformlist.js';
-import {shortFloat} from '../common/units.js';
-import {transformPoint} from './math.js';
+import { getTransformList } from './svgtransformlist.js';
+import { shortFloat } from '../common/units.js';
+import { transformPoint } from './math.js';
import {
getRotationAngle, getBBox,
getRefElem, findDefs, isNullish,
@@ -25,15 +25,15 @@ import {
} from './path-actions.js';
const segData = {
- 2: ['x', 'y'], // PATHSEG_MOVETO_ABS
- 4: ['x', 'y'], // PATHSEG_LINETO_ABS
- 6: ['x', 'y', 'x1', 'y1', 'x2', 'y2'], // PATHSEG_CURVETO_CUBIC_ABS
- 8: ['x', 'y', 'x1', 'y1'], // PATHSEG_CURVETO_QUADRATIC_ABS
- 10: ['x', 'y', 'r1', 'r2', 'angle', 'largeArcFlag', 'sweepFlag'], // PATHSEG_ARC_ABS
- 12: ['x'], // PATHSEG_LINETO_HORIZONTAL_ABS
- 14: ['y'], // PATHSEG_LINETO_VERTICAL_ABS
- 16: ['x', 'y', 'x2', 'y2'], // PATHSEG_CURVETO_CUBIC_SMOOTH_ABS
- 18: ['x', 'y'] // PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS
+ 2: [ 'x', 'y' ], // PATHSEG_MOVETO_ABS
+ 4: [ 'x', 'y' ], // PATHSEG_LINETO_ABS
+ 6: [ 'x', 'y', 'x1', 'y1', 'x2', 'y2' ], // PATHSEG_CURVETO_CUBIC_ABS
+ 8: [ 'x', 'y', 'x1', 'y1' ], // PATHSEG_CURVETO_QUADRATIC_ABS
+ 10: [ 'x', 'y', 'r1', 'r2', 'angle', 'largeArcFlag', 'sweepFlag' ], // PATHSEG_ARC_ABS
+ 12: [ 'x' ], // PATHSEG_LINETO_HORIZONTAL_ABS
+ 14: [ 'y' ], // PATHSEG_LINETO_VERTICAL_ABS
+ 16: [ 'x', 'y', 'x2', 'y2' ], // PATHSEG_CURVETO_CUBIC_SMOOTH_ABS
+ 18: [ 'x', 'y' ] // PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS
};
/**
@@ -236,7 +236,7 @@ let editorContext_ = null;
export const init = function (editorContext) {
editorContext_ = editorContext;
- pathFuncs = [0, 'ClosePath'];
+ pathFuncs = [ 0, 'ClosePath' ];
const pathFuncsStrs = [
'Moveto', 'Lineto', 'CurvetoCubic', 'CurvetoQuadratic', 'Arc',
'LinetoHorizontal', 'LinetoVertical', 'CurvetoCubicSmooth', 'CurvetoQuadraticSmooth'
@@ -413,7 +413,7 @@ export const smoothControlPoints = function (ct1, ct2, pt) {
nct2.x = r2 * Math.cos(newAngleb) + pt.x;
nct2.y = r2 * Math.sin(newAngleb) + pt.y;
- return [nct1, nct2];
+ return [ nct1, nct2 ];
}
return undefined;
};
@@ -462,8 +462,8 @@ const getRotVals = function (x, y) {
r = Math.sqrt(dx * dx + dy * dy);
theta = Math.atan2(dy, dx) - angle;
- return {x: r * Math.cos(theta) + newcx,
- y: r * Math.sin(theta) + newcy};
+ return { x: r * Math.cos(theta) + newcx,
+ y: r * Math.sin(theta) + newcy };
};
// If the path was rotated, we must now pay the piper:
@@ -508,7 +508,7 @@ export const recalcRotatedPath = function () {
if (type === 1) { continue; }
const rvals = getRotVals(seg.x, seg.y),
- points = [rvals.x, rvals.y];
+ points = [ rvals.x, rvals.y ];
if (!isNullish(seg.x1) && !isNullish(seg.x2)) {
const cVals1 = getRotVals(seg.x1, seg.y1);
const cVals2 = getRotVals(seg.x2, seg.y2);
@@ -578,7 +578,7 @@ export const reorientGrads = function (elem, m) {
};
const newgrad = grad.cloneNode(true);
- for (const [key, value] of Object.entries(gCoords)) {
+ for (const [ key, value ] of Object.entries(gCoords)) {
newgrad.setAttribute(key, value);
}
newgrad.id = editorContext_.getNextId();
@@ -608,7 +608,7 @@ const pathMap = [
* @returns {string}
*/
export const convertPath = function (pth, toRel) {
- const {pathSegList} = pth;
+ const { pathSegList } = pth;
const len = pathSegList.numberOfItems;
let curx = 0, cury = 0;
let d = '';
@@ -650,7 +650,7 @@ export const convertPath = function (pth, toRel) {
letter = 'L';
}
// Convert to "line" for easier editing
- d += pathDSegment(letter, [[x, y]]);
+ d += pathDSegment(letter, [ [ x, y ] ]);
break;
case 14: // absolute vertical line (V)
y -= cury;
@@ -667,7 +667,7 @@ export const convertPath = function (pth, toRel) {
letter = 'L';
}
// Convert to "line" for easier editing
- d += pathDSegment(letter, [[x, y]]);
+ d += pathDSegment(letter, [ [ x, y ] ]);
break;
case 2: // absolute move (M)
case 4: // absolute line (L)
@@ -688,9 +688,9 @@ export const convertPath = function (pth, toRel) {
curx = x;
cury = y;
}
- if (type === 2 || type === 3) { lastM = [curx, cury]; }
+ if (type === 2 || type === 3) { lastM = [ curx, cury ]; }
- d += pathDSegment(letter, [[x, y]]);
+ d += pathDSegment(letter, [ [ x, y ] ]);
break;
case 6: // absolute cubic (C)
x -= curx; x1 -= curx; x2 -= curx;
@@ -706,7 +706,7 @@ export const convertPath = function (pth, toRel) {
curx = x;
cury = y;
}
- d += pathDSegment(letter, [[x1, y1], [x2, y2], [x, y]]);
+ d += pathDSegment(letter, [ [ x1, y1 ], [ x2, y2 ], [ x, y ] ]);
break;
case 8: // absolute quad (Q)
x -= curx; x1 -= curx;
@@ -722,7 +722,7 @@ export const convertPath = function (pth, toRel) {
curx = x;
cury = y;
}
- d += pathDSegment(letter, [[x1, y1], [x, y]]);
+ d += pathDSegment(letter, [ [ x1, y1 ], [ x, y ] ]);
break;
// Fallthrough
case 11: // relative elliptical arc (a)
@@ -735,11 +735,11 @@ export const convertPath = function (pth, toRel) {
curx = x;
cury = y;
}
- d += pathDSegment(letter, [[seg.r1, seg.r2]], [
+ d += pathDSegment(letter, [ [ seg.r1, seg.r2 ] ], [
seg.angle,
(seg.largeArcFlag ? 1 : 0),
(seg.sweepFlag ? 1 : 0)
- ], [x, y]);
+ ], [ x, y ]);
break;
case 16: // absolute smooth cubic (S)
x -= curx; x2 -= curx;
@@ -755,7 +755,7 @@ export const convertPath = function (pth, toRel) {
curx = x;
cury = y;
}
- d += pathDSegment(letter, [[x2, y2], [x, y]]);
+ d += pathDSegment(letter, [ [ x2, y2 ], [ x, y ] ]);
break;
} // switch on path segment type
} // for each segment
diff --git a/src/svgcanvas/recalculate.js b/src/svgcanvas/recalculate.js
index 84a3913e..f7384789 100644
--- a/src/svgcanvas/recalculate.js
+++ b/src/svgcanvas/recalculate.js
@@ -134,7 +134,7 @@ export const recalculateDimensions = function (selected) {
while (k--) {
const xform = tlist.getItem(k);
if (xform.type === 1) {
- mxs.push([xform.matrix, k]);
+ mxs.push([ xform.matrix, k ]);
} else if (mxs.length) {
mxs = [];
}
@@ -187,23 +187,23 @@ export const recalculateDimensions = function (selected) {
let attrs = [];
switch (selected.tagName) {
case 'line':
- attrs = ['x1', 'y1', 'x2', 'y2'];
+ attrs = [ 'x1', 'y1', 'x2', 'y2' ];
break;
case 'circle':
- attrs = ['cx', 'cy', 'r'];
+ attrs = [ 'cx', 'cy', 'r' ];
break;
case 'ellipse':
- attrs = ['cx', 'cy', 'rx', 'ry'];
+ attrs = [ 'cx', 'cy', 'rx', 'ry' ];
break;
case 'foreignObject':
case 'rect':
case 'image':
- attrs = ['width', 'height', 'x', 'y'];
+ attrs = [ 'width', 'height', 'x', 'y' ];
break;
case 'use':
case 'text':
case 'tspan':
- attrs = ['x', 'y'];
+ attrs = [ 'x', 'y' ];
break;
case 'polygon':
case 'polyline': {
@@ -228,7 +228,7 @@ export const recalculateDimensions = function (selected) {
Array.prototype.forEach.call(attrs, function (attr) {
changes[attr] = selected.getAttribute(attr);
});
- for (const [attr, val] of Object.entries(changes)) {
+ for (const [ attr, val ] of Object.entries(changes)) {
changes[attr] = convertToNum(attr, val);
}
} else if (gsvg) {
@@ -243,7 +243,7 @@ export const recalculateDimensions = function (selected) {
// make a copy of initial values and include the transform
if (isNullish(initial)) {
initial = $.extend(true, {}, changes);
- for (const [attr, val] of Object.entries(initial)) {
+ for (const [ attr, val ] of Object.entries(initial)) {
initial[attr] = convertToNum(attr, val);
}
}
@@ -652,7 +652,7 @@ export const recalculateDimensions = function (selected) {
const gtlist = getTransformList(paint);
const gmatrix = transformListToTransform(gtlist).matrix;
m = matrixMultiply(m, gmatrix);
- const mStr = 'matrix(' + [m.a, m.b, m.c, m.d, m.e, m.f].join(',') + ')';
+ const mStr = 'matrix(' + [ m.a, m.b, m.c, m.d, m.e, m.f ].join(',') + ')';
paint.setAttribute(type + 'Transform', mStr);
}
}
diff --git a/src/svgcanvas/sanitize.js b/src/svgcanvas/sanitize.js
index 5b370dc8..3e77c2de 100644
--- a/src/svgcanvas/sanitize.js
+++ b/src/svgcanvas/sanitize.js
@@ -7,9 +7,9 @@
* @copyright 2010 Alexis Deveria, 2010 Jeff Schiller
*/
-import {getReverseNS, NS} from '../common/namespaces.js';
-import {isGecko} from '../common/browser.js';
-import {getHref, setHref, getUrlFromAttr} from './utilities.js';
+import { getReverseNS, NS } from '../common/namespaces.js';
+import { isGecko } from '../common/browser.js';
+import { getHref, setHref, getUrlFromAttr } from './utilities.js';
const REVERSE_NS = getReverseNS();
@@ -22,74 +22,74 @@ const REVERSE_NS = getReverseNS();
/* eslint-disable max-len */
const svgWhiteList_ = {
// SVG Elements
- a: ['class', 'clip-path', 'clip-rule', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'id', 'mask', 'opacity', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform', 'xlink:href', 'xlink:title'],
- circle: ['class', 'clip-path', 'clip-rule', 'cx', 'cy', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'id', 'mask', 'opacity', 'r', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform'],
- clipPath: ['class', 'clipPathUnits', 'id'],
+ a: [ 'class', 'clip-path', 'clip-rule', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'id', 'mask', 'opacity', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform', 'xlink:href', 'xlink:title' ],
+ circle: [ 'class', 'clip-path', 'clip-rule', 'cx', 'cy', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'id', 'mask', 'opacity', 'r', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform' ],
+ clipPath: [ 'class', 'clipPathUnits', 'id' ],
defs: [],
- style: ['type'],
+ style: [ 'type' ],
desc: [],
- ellipse: ['class', 'clip-path', 'clip-rule', 'cx', 'cy', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'id', 'mask', 'opacity', 'requiredFeatures', 'rx', 'ry', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform'],
- feBlend: ['in', 'in2'],
- feComposite: ['operator', 'result', 'in2'],
- feFlood: ['flood-color', 'in'],
- feGaussianBlur: ['class', 'color-interpolation-filters', 'id', 'requiredFeatures', 'stdDeviation'],
+ ellipse: [ 'class', 'clip-path', 'clip-rule', 'cx', 'cy', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'id', 'mask', 'opacity', 'requiredFeatures', 'rx', 'ry', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform' ],
+ feBlend: [ 'in', 'in2' ],
+ feComposite: [ 'operator', 'result', 'in2' ],
+ feFlood: [ 'flood-color', 'in' ],
+ feGaussianBlur: [ 'class', 'color-interpolation-filters', 'id', 'requiredFeatures', 'stdDeviation' ],
feMerge: [],
- feMergeNode: ['in'],
- feMorphology: ['class', 'in', 'operator', 'radius'],
- feOffset: ['dx', 'in', 'dy', 'result'],
- filter: ['class', 'color-interpolation-filters', 'filterRes', 'filterUnits', 'height', 'id', 'primitiveUnits', 'requiredFeatures', 'width', 'x', 'xlink:href', 'y'],
- foreignObject: ['class', 'font-size', 'height', 'id', 'opacity', 'requiredFeatures', 'style', 'transform', 'width', 'x', 'y'],
- g: ['class', 'clip-path', 'clip-rule', 'id', 'display', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'mask', 'opacity', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform', 'font-family', 'font-size', 'font-style', 'font-weight', 'text-anchor'],
- image: ['class', 'clip-path', 'clip-rule', 'filter', 'height', 'id', 'mask', 'opacity', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'width', 'x', 'xlink:href', 'xlink:title', 'y'],
- line: ['class', 'clip-path', 'clip-rule', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'id', 'marker-end', 'marker-mid', 'marker-start', 'mask', 'opacity', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform', 'x1', 'x2', 'y1', 'y2'],
- linearGradient: ['class', 'id', 'gradientTransform', 'gradientUnits', 'requiredFeatures', 'spreadMethod', 'systemLanguage', 'x1', 'x2', 'xlink:href', 'y1', 'y2'],
- marker: ['id', 'class', 'markerHeight', 'markerUnits', 'markerWidth', 'orient', 'preserveAspectRatio', 'refX', 'refY', 'systemLanguage', 'viewBox'],
- mask: ['class', 'height', 'id', 'maskContentUnits', 'maskUnits', 'width', 'x', 'y'],
- metadata: ['class', 'id'],
- path: ['class', 'clip-path', 'clip-rule', 'd', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'id', 'marker-end', 'marker-mid', 'marker-start', 'mask', 'opacity', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform'],
- pattern: ['class', 'height', 'id', 'patternContentUnits', 'patternTransform', 'patternUnits', 'requiredFeatures', 'style', 'systemLanguage', 'viewBox', 'width', 'x', 'xlink:href', 'y'],
- polygon: ['class', 'clip-path', 'clip-rule', 'id', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'id', 'class', 'marker-end', 'marker-mid', 'marker-start', 'mask', 'opacity', 'points', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform'],
- polyline: ['class', 'clip-path', 'clip-rule', 'id', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'marker-end', 'marker-mid', 'marker-start', 'mask', 'opacity', 'points', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform'],
- radialGradient: ['class', 'cx', 'cy', 'fx', 'fy', 'gradientTransform', 'gradientUnits', 'id', 'r', 'requiredFeatures', 'spreadMethod', 'systemLanguage', 'xlink:href'],
- rect: ['class', 'clip-path', 'clip-rule', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'height', 'id', 'mask', 'opacity', 'requiredFeatures', 'rx', 'ry', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform', 'width', 'x', 'y'],
- stop: ['class', 'id', 'offset', 'requiredFeatures', 'stop-color', 'stop-opacity', 'style', 'systemLanguage'],
- svg: ['class', 'clip-path', 'clip-rule', 'filter', 'id', 'height', 'mask', 'preserveAspectRatio', 'requiredFeatures', 'style', 'systemLanguage', 'viewBox', 'width', 'x', 'xmlns', 'xmlns:se', 'xmlns:xlink', 'xmlns:oi', 'oi:animations', 'y'],
- switch: ['class', 'id', 'requiredFeatures', 'systemLanguage'],
- symbol: ['class', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'font-family', 'font-size', 'font-style', 'font-weight', 'id', 'opacity', 'preserveAspectRatio', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform', 'viewBox'],
- text: ['class', 'clip-path', 'clip-rule', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'font-family', 'font-size', 'font-style', 'font-weight', 'id', 'mask', 'opacity', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'text-anchor', 'transform', 'x', 'xml:space', 'y'],
- textPath: ['class', 'id', 'method', 'requiredFeatures', 'spacing', 'startOffset', 'style', 'systemLanguage', 'transform', 'xlink:href'],
+ feMergeNode: [ 'in' ],
+ feMorphology: [ 'class', 'in', 'operator', 'radius' ],
+ feOffset: [ 'dx', 'in', 'dy', 'result' ],
+ filter: [ 'class', 'color-interpolation-filters', 'filterRes', 'filterUnits', 'height', 'id', 'primitiveUnits', 'requiredFeatures', 'width', 'x', 'xlink:href', 'y' ],
+ foreignObject: [ 'class', 'font-size', 'height', 'id', 'opacity', 'requiredFeatures', 'style', 'transform', 'width', 'x', 'y' ],
+ g: [ 'class', 'clip-path', 'clip-rule', 'id', 'display', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'mask', 'opacity', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform', 'font-family', 'font-size', 'font-style', 'font-weight', 'text-anchor' ],
+ image: [ 'class', 'clip-path', 'clip-rule', 'filter', 'height', 'id', 'mask', 'opacity', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'width', 'x', 'xlink:href', 'xlink:title', 'y' ],
+ line: [ 'class', 'clip-path', 'clip-rule', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'id', 'marker-end', 'marker-mid', 'marker-start', 'mask', 'opacity', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform', 'x1', 'x2', 'y1', 'y2' ],
+ linearGradient: [ 'class', 'id', 'gradientTransform', 'gradientUnits', 'requiredFeatures', 'spreadMethod', 'systemLanguage', 'x1', 'x2', 'xlink:href', 'y1', 'y2' ],
+ marker: [ 'id', 'class', 'markerHeight', 'markerUnits', 'markerWidth', 'orient', 'preserveAspectRatio', 'refX', 'refY', 'systemLanguage', 'viewBox' ],
+ mask: [ 'class', 'height', 'id', 'maskContentUnits', 'maskUnits', 'width', 'x', 'y' ],
+ metadata: [ 'class', 'id' ],
+ path: [ 'class', 'clip-path', 'clip-rule', 'd', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'id', 'marker-end', 'marker-mid', 'marker-start', 'mask', 'opacity', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform' ],
+ pattern: [ 'class', 'height', 'id', 'patternContentUnits', 'patternTransform', 'patternUnits', 'requiredFeatures', 'style', 'systemLanguage', 'viewBox', 'width', 'x', 'xlink:href', 'y' ],
+ polygon: [ 'class', 'clip-path', 'clip-rule', 'id', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'id', 'class', 'marker-end', 'marker-mid', 'marker-start', 'mask', 'opacity', 'points', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform' ],
+ polyline: [ 'class', 'clip-path', 'clip-rule', 'id', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'marker-end', 'marker-mid', 'marker-start', 'mask', 'opacity', 'points', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform' ],
+ radialGradient: [ 'class', 'cx', 'cy', 'fx', 'fy', 'gradientTransform', 'gradientUnits', 'id', 'r', 'requiredFeatures', 'spreadMethod', 'systemLanguage', 'xlink:href' ],
+ rect: [ 'class', 'clip-path', 'clip-rule', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'height', 'id', 'mask', 'opacity', 'requiredFeatures', 'rx', 'ry', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform', 'width', 'x', 'y' ],
+ stop: [ 'class', 'id', 'offset', 'requiredFeatures', 'stop-color', 'stop-opacity', 'style', 'systemLanguage' ],
+ svg: [ 'class', 'clip-path', 'clip-rule', 'filter', 'id', 'height', 'mask', 'preserveAspectRatio', 'requiredFeatures', 'style', 'systemLanguage', 'viewBox', 'width', 'x', 'xmlns', 'xmlns:se', 'xmlns:xlink', 'xmlns:oi', 'oi:animations', 'y' ],
+ switch: [ 'class', 'id', 'requiredFeatures', 'systemLanguage' ],
+ symbol: [ 'class', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'font-family', 'font-size', 'font-style', 'font-weight', 'id', 'opacity', 'preserveAspectRatio', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform', 'viewBox' ],
+ text: [ 'class', 'clip-path', 'clip-rule', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'font-family', 'font-size', 'font-style', 'font-weight', 'id', 'mask', 'opacity', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'text-anchor', 'transform', 'x', 'xml:space', 'y' ],
+ textPath: [ 'class', 'id', 'method', 'requiredFeatures', 'spacing', 'startOffset', 'style', 'systemLanguage', 'transform', 'xlink:href' ],
title: [],
- tspan: ['class', 'clip-path', 'clip-rule', 'dx', 'dy', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'font-family', 'font-size', 'font-style', 'font-weight', 'id', 'mask', 'opacity', 'requiredFeatures', 'rotate', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'text-anchor', 'textLength', 'transform', 'x', 'xml:space', 'y'],
- use: ['class', 'clip-path', 'clip-rule', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'height', 'id', 'mask', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'transform', 'width', 'x', 'xlink:href', 'y'],
+ tspan: [ 'class', 'clip-path', 'clip-rule', 'dx', 'dy', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'font-family', 'font-size', 'font-style', 'font-weight', 'id', 'mask', 'opacity', 'requiredFeatures', 'rotate', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'text-anchor', 'textLength', 'transform', 'x', 'xml:space', 'y' ],
+ use: [ 'class', 'clip-path', 'clip-rule', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'height', 'id', 'mask', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'transform', 'width', 'x', 'xlink:href', 'y' ],
// MathML Elements
- annotation: ['encoding'],
- 'annotation-xml': ['encoding'],
- maction: ['actiontype', 'other', 'selection'],
- math: ['class', 'id', 'display', 'xmlns'],
- menclose: ['notation'],
+ annotation: [ 'encoding' ],
+ 'annotation-xml': [ 'encoding' ],
+ maction: [ 'actiontype', 'other', 'selection' ],
+ math: [ 'class', 'id', 'display', 'xmlns' ],
+ menclose: [ 'notation' ],
merror: [],
- mfrac: ['linethickness'],
- mi: ['mathvariant'],
+ mfrac: [ 'linethickness' ],
+ mi: [ 'mathvariant' ],
mmultiscripts: [],
mn: [],
- mo: ['fence', 'lspace', 'maxsize', 'minsize', 'rspace', 'stretchy'],
+ mo: [ 'fence', 'lspace', 'maxsize', 'minsize', 'rspace', 'stretchy' ],
mover: [],
- mpadded: ['lspace', 'width', 'height', 'depth', 'voffset'],
+ mpadded: [ 'lspace', 'width', 'height', 'depth', 'voffset' ],
mphantom: [],
mprescripts: [],
mroot: [],
- mrow: ['xlink:href', 'xlink:type', 'xmlns:xlink'],
- mspace: ['depth', 'height', 'width'],
+ mrow: [ 'xlink:href', 'xlink:type', 'xmlns:xlink' ],
+ mspace: [ 'depth', 'height', 'width' ],
msqrt: [],
- mstyle: ['displaystyle', 'mathbackground', 'mathcolor', 'mathvariant', 'scriptlevel'],
+ mstyle: [ 'displaystyle', 'mathbackground', 'mathcolor', 'mathvariant', 'scriptlevel' ],
msub: [],
msubsup: [],
msup: [],
- mtable: ['align', 'columnalign', 'columnlines', 'columnspacing', 'displaystyle', 'equalcolumns', 'equalrows', 'frame', 'rowalign', 'rowlines', 'rowspacing', 'width'],
- mtd: ['columnalign', 'columnspan', 'rowalign', 'rowspan'],
+ mtable: [ 'align', 'columnalign', 'columnlines', 'columnspacing', 'displaystyle', 'equalcolumns', 'equalrows', 'frame', 'rowalign', 'rowlines', 'rowspacing', 'width' ],
+ mtd: [ 'columnalign', 'columnspan', 'rowalign', 'rowspan' ],
mtext: [],
- mtr: ['columnalign', 'rowalign'],
+ mtr: [ 'columnalign', 'rowalign' ],
munder: [],
munderover: [],
none: [],
@@ -99,9 +99,9 @@ const svgWhiteList_ = {
// Produce a Namespace-aware version of svgWhitelist
const svgWhiteListNS_ = {};
-Object.entries(svgWhiteList_).forEach(function ([elt, atts]) {
+Object.entries(svgWhiteList_).forEach(function ([ elt, atts ]) {
const attNS = {};
- Object.entries(atts).forEach(function ([_i, att]) {
+ Object.entries(atts).forEach(function ([ _i, att ]) {
if (att.includes(':')) {
const v = att.split(':');
attNS[v[1]] = NS[(v[0]).toUpperCase()];
@@ -166,7 +166,7 @@ export const sanitizeSvg = function (node) {
// Bypassing the whitelist to allow se: prefixes.
// Is there a more appropriate way to do this?
if (attrName.startsWith('se:') || attrName.startsWith('data-')) {
- seAttrs.push([attrName, attr.value]);
+ seAttrs.push([ attrName, attr.value ]);
}
node.removeAttributeNS(attrNsURI, attrLocalName);
}
@@ -190,7 +190,7 @@ export const sanitizeSvg = function (node) {
const props = attr.value.split(';');
let p = props.length;
while (p--) {
- const [name, val] = props[p].split(':');
+ const [ name, val ] = props[p].split(':');
const styleAttrName = (name || '').trim();
const styleAttrVal = (val || '').trim();
// Now check that this attribute is supported
@@ -202,7 +202,7 @@ export const sanitizeSvg = function (node) {
}
}
- Object.values(seAttrs).forEach(([att, val]) => {
+ Object.values(seAttrs).forEach(([ att, val ]) => {
node.setAttributeNS(NS.SE, att, val);
});
@@ -210,8 +210,8 @@ export const sanitizeSvg = function (node) {
// (but not for links)
const href = getHref(node);
if (href &&
- ['filter', 'linearGradient', 'pattern',
- 'radialGradient', 'textPath', 'use'].includes(node.nodeName) && href[0] !== '#') {
+ [ 'filter', 'linearGradient', 'pattern',
+ 'radialGradient', 'textPath', 'use' ].includes(node.nodeName) && href[0] !== '#') {
// remove the attribute (but keep the element)
setHref(node, '');
node.removeAttributeNS(NS.XLINK, 'href');
@@ -224,7 +224,7 @@ export const sanitizeSvg = function (node) {
}
// if the element has attributes pointing to a non-local reference,
// need to remove the attribute
- Object.values(['clip-path', 'fill', 'filter', 'marker-end', 'marker-mid', 'marker-start', 'mask', 'stroke'], function (attr) {
+ Object.values([ 'clip-path', 'fill', 'filter', 'marker-end', 'marker-mid', 'marker-start', 'mask', 'stroke' ], function (attr) {
let val = node.getAttribute(attr);
if (val) {
val = getUrlFromAttr(val);
diff --git a/src/svgcanvas/select.js b/src/svgcanvas/select.js
index 52282862..6d1c6355 100644
--- a/src/svgcanvas/select.js
+++ b/src/svgcanvas/select.js
@@ -140,7 +140,7 @@ export class Selector {
if (tagName === 'g' && !dataStorage.has(selected, 'gsvg')) {
// The bbox for a group does not include stroke vals, so we
// get the bbox based on its children.
- const strokedBbox = getStrokedBBox([selected.childNodes]);
+ const strokedBbox = getStrokedBBox([ selected.childNodes ]);
if (strokedBbox) {
bbox = strokedBbox;
}
@@ -203,22 +203,22 @@ export class Selector {
' ' + nbax + ',' + (nbay + nbah) + 'z';
selectedBox.setAttribute('d', dstr);
- const xform = angle ? 'rotate(' + [angle, cx, cy].join(',') + ')' : '';
+ const xform = angle ? 'rotate(' + [ angle, cx, cy ].join(',') + ')' : '';
this.selectorGroup.setAttribute('transform', xform);
// TODO(codedread): Is this needed?
// if (selected === selectedElements[0]) {
this.gripCoords = {
- nw: [nbax, nbay],
- ne: [nbax + nbaw, nbay],
- sw: [nbax, nbay + nbah],
- se: [nbax + nbaw, nbay + nbah],
- n: [nbax + (nbaw) / 2, nbay],
- w: [nbax, nbay + (nbah) / 2],
- e: [nbax + nbaw, nbay + (nbah) / 2],
- s: [nbax + (nbaw) / 2, nbay + nbah]
+ nw: [ nbax, nbay ],
+ ne: [ nbax + nbaw, nbay ],
+ sw: [ nbax, nbay + nbah ],
+ se: [ nbax + nbaw, nbay + nbah ],
+ n: [ nbax + (nbaw) / 2, nbay ],
+ w: [ nbax, nbay + (nbah) / 2 ],
+ e: [ nbax + nbaw, nbay + (nbah) / 2 ],
+ s: [ nbax + (nbaw) / 2, nbay + nbah ]
};
- Object.entries(this.gripCoords).forEach(([dir, coords]) => {
+ Object.entries(this.gripCoords).forEach(([ dir, coords ]) => {
selectedGrips[dir].setAttribute('cx', coords[0]);
selectedGrips[dir].setAttribute('cy', coords[1]);
});
@@ -373,7 +373,7 @@ export class SelectorManager {
if (document.getElementById('canvasBackground')) { return; }
- const [width, height] = config_.dimensions;
+ const [ width, height ] = config_.dimensions;
const canvasbg = svgFactory_.createSVGElement({
element: 'svg',
attr: {
diff --git a/src/svgcanvas/selected-elem.js b/src/svgcanvas/selected-elem.js
index 6983c44e..141b2304 100644
--- a/src/svgcanvas/selected-elem.js
+++ b/src/svgcanvas/selected-elem.js
@@ -52,7 +52,7 @@ export const init = function (elementContext) {
* @returns {void}
*/
export const moveToTopSelectedElem = function () {
- const [selected] = elementContext_.getSelectedElements();
+ const [ selected ] = elementContext_.getSelectedElements();
if (!isNullish(selected)) {
const t = selected;
const oldParent = t.parentNode;
@@ -62,7 +62,7 @@ export const moveToTopSelectedElem = function () {
// event handler.
if (oldNextSibling !== t.nextSibling) {
elementContext_.addCommandToHistory(new MoveElementCommand(t, oldNextSibling, oldParent, 'top'));
- elementContext_.call('changed', [t]);
+ elementContext_.call('changed', [ t ]);
}
}
};
@@ -75,7 +75,7 @@ export const moveToTopSelectedElem = function () {
* @returns {void}
*/
export const moveToBottomSelectedElem = function () {
- const [selected] = elementContext_.getSelectedElements();
+ const [ selected ] = elementContext_.getSelectedElements();
if (!isNullish(selected)) {
let t = selected;
const oldParent = t.parentNode;
@@ -94,7 +94,7 @@ export const moveToBottomSelectedElem = function () {
// event handler.
if (oldNextSibling !== t.nextSibling) {
elementContext_.addCommandToHistory(new MoveElementCommand(t, oldNextSibling, oldParent, 'bottom'));
- elementContext_.call('changed', [t]);
+ elementContext_.call('changed', [ t ]);
}
}
};
@@ -116,7 +116,7 @@ export const moveUpDownSelected = function (dir) {
// curBBoxes = [];
let closest, foundCur;
// jQuery sorts this list
- const list = elementContext_.getIntersectionList(getStrokedBBoxDefaultVisible([selected]));
+ const list = elementContext_.getIntersectionList(getStrokedBBoxDefaultVisible([ selected ]));
if (dir === 'Down') { list.reverse(); }
Array.prototype.forEach.call(list, function (el) {
@@ -143,7 +143,7 @@ export const moveUpDownSelected = function (dir) {
// event handler.
if (oldNextSibling !== t.nextSibling) {
elementContext_.addCommandToHistory(new MoveElementCommand(t, oldNextSibling, oldParent, 'Move ' + dir));
- elementContext_.call('changed', [t]);
+ elementContext_.call('changed', [ t ]);
}
};
@@ -298,7 +298,7 @@ export const alignSelectedElements = function (type, relativeTo) {
for (let i = 0; i < len; ++i) {
if (isNullish(selectedElements[i])) { break; }
const elem = selectedElements[i];
- bboxes[i] = getStrokedBBoxDefaultVisible([elem]);
+ bboxes[i] = getStrokedBBoxDefaultVisible([ elem ]);
// now bbox is axis-aligned and handles rotation
switch (relativeTo) {
@@ -505,7 +505,7 @@ export const groupSelectedElements = function (type, urlArg) {
if (!batchCmd.isEmpty()) { elementContext_.addCommandToHistory(batchCmd); }
// update selection
- elementContext_.selectOnly([g], true);
+ elementContext_.selectOnly([ g ], true);
};
/**
@@ -550,7 +550,7 @@ export const pushGroupProperty = function (g, undoable) {
if (gattrs.opacity !== null && gattrs.opacity !== 1) {
// const c_opac = elem.getAttribute('opacity') || 1;
const newOpac = Math.round((elem.getAttribute('opacity') || 1) * gattrs.opacity * 100) / 100;
- elementContext_.changeSelectedAttribute('opacity', newOpac, [elem]);
+ elementContext_.changeSelectedAttribute('opacity', newOpac, [ elem ]);
}
if (gattrs.filter) {
@@ -581,11 +581,11 @@ export const pushGroupProperty = function (g, undoable) {
// Change this in future for different filters
const suffix = (gfilter.firstChild.tagName === 'feGaussianBlur') ? 'blur' : 'filter';
gfilter.id = elem.id + '_' + suffix;
- elementContext_.changeSelectedAttribute('filter', 'url(#' + gfilter.id + ')', [elem]);
+ elementContext_.changeSelectedAttribute('filter', 'url(#' + gfilter.id + ')', [ elem ]);
// Update blur value
if (cblur) {
- elementContext_.changeSelectedAttribute('stdDeviation', cblur, [gfilter.firstChild]);
+ elementContext_.changeSelectedAttribute('stdDeviation', cblur, [ gfilter.firstChild ]);
elementContext_.getCanvas().setBlurOffsets(gfilter, cblur);
}
}
@@ -731,12 +731,12 @@ export const convertToGroup = function (elem) {
xform.setTranslate(pt.x, pt.y);
tlist.appendItem(xform);
recalculateDimensions(elem);
- elementContext_.call('selected', [elem]);
+ elementContext_.call('selected', [ elem ]);
} else if (dataStorage.has($elem, 'symbol')) {
elem = dataStorage.get($elem, 'symbol');
ts = $elem.attr('transform');
- const pos = $elem.attr(['x', 'y']);
+ const pos = $elem.attr([ 'x', 'y' ]);
const vb = elem.getAttribute('viewBox');
@@ -832,7 +832,7 @@ export const convertToGroup = function (elem) {
if (!el.id) { el.id = elementContext_.getNextId(); }
});
- elementContext_.selectOnly([g]);
+ elementContext_.selectOnly([ g ]);
const cm = pushGroupProperty(g, true);
if (cm) {
@@ -1019,6 +1019,6 @@ export const cycleElement = function (next) {
}
}
}
- elementContext_.getCanvas().selectOnly([elem], true);
+ elementContext_.getCanvas().selectOnly([ elem ], true);
elementContext_.call('selected', selectedElements);
};
diff --git a/src/svgcanvas/selection.js b/src/svgcanvas/selection.js
index 098f22cb..31f8170e 100644
--- a/src/svgcanvas/selection.js
+++ b/src/svgcanvas/selection.js
@@ -136,7 +136,7 @@ export const getMouseTargetMethod = function (evt) {
// for foreign content, go up until we find the foreignObject
// WebKit browsers set the mouse target to the svgcanvas div
- if ([NS.MATH, NS.HTML].includes(mouseTarget.namespaceURI) &&
+ if ([ NS.MATH, NS.HTML ].includes(mouseTarget.namespaceURI) &&
mouseTarget.id !== 'svgcanvas'
) {
while (mouseTarget.nodeName !== 'foreignObject') {
@@ -151,7 +151,7 @@ export const getMouseTargetMethod = function (evt) {
const svgRoot = selectionContext_.getSVGRoot();
const container = selectionContext_.getDOMContainer();
const content = selectionContext_.getSVGContent();
- if ([svgRoot, container, content, currentLayer].includes(mouseTarget)) {
+ if ([ svgRoot, container, content, currentLayer ].includes(mouseTarget)) {
return selectionContext_.getSVGRoot();
}
@@ -207,7 +207,7 @@ export const getMouseTargetMethod = function (evt) {
*/
export const runExtensionsMethod = function (action, vars, returnArray, nameFilter) {
let result = returnArray ? [] : false;
- for (const [name, ext] of Object.entries(selectionContext_.getExtensions())) {
+ for (const [ name, ext ] of Object.entries(selectionContext_.getExtensions())) {
if (nameFilter && !nameFilter(name)) {
return;
}
@@ -242,7 +242,7 @@ export const getVisibleElementsAndBBoxes = function (parent) {
const elements = parent.children;
Array.prototype.forEach.call(elements, function (elem) {
if (elem.getBBox) {
- contentElems.push({ elem, bbox: getStrokedBBoxDefaultVisible([elem]) });
+ contentElems.push({ elem, bbox: getStrokedBBoxDefaultVisible([ elem ]) });
}
});
return contentElems.reverse();
@@ -271,7 +271,7 @@ export const getIntersectionListMethod = function (rect) {
rubberBBox = selectionContext_.getRubberBox().getBBox();
const bb = selectionContext_.getSVGContent().createSVGRect();
- ['x', 'y', 'width', 'height', 'top', 'right', 'bottom', 'left'].forEach((o) => {
+ [ 'x', 'y', 'width', 'height', 'top', 'right', 'bottom', 'left' ].forEach((o) => {
bb[o] = rubberBBox[o] / currentZoom;
});
rubberBBox = bb;
@@ -339,7 +339,7 @@ export const prepareSvg = function (newDoc) {
selectionContext_.getCanvas().sanitizeSvg(newDoc.documentElement);
// convert paths into absolute commands
- const paths = [...newDoc.getElementsByTagNameNS(NS.SVG, 'path')];
+ const paths = [ ...newDoc.getElementsByTagNameNS(NS.SVG, 'path') ];
paths.forEach((path) => {
path.setAttribute('d', selectionContext_.getCanvas().pathActions.convertPath(path));
selectionContext_.getCanvas().pathActions.fixEnd(path);
diff --git a/src/svgcanvas/svg-exec.js b/src/svgcanvas/svg-exec.js
index f8b0b70f..2bb9d63e 100644
--- a/src/svgcanvas/svg-exec.js
+++ b/src/svgcanvas/svg-exec.js
@@ -74,7 +74,7 @@ export const svgCanvasToString = function () {
// Move out of in-group editing mode
if (svgContext_.getCurrentGroup()) {
draw.leaveContext();
- svgContext_.getCanvas().selectOnly([svgContext_.getCurrentGroup()]);
+ svgContext_.getCanvas().selectOnly([ svgContext_.getCurrentGroup() ]);
}
const nakedSvgs = [];
@@ -124,7 +124,7 @@ export const svgToString = function (elem, indent) {
if (elem) {
cleanupElement(elem);
- const attrs = [...elem.attributes];
+ const attrs = [ ...elem.attributes ];
const childs = elem.childNodes;
attrs.sort((a, b) => {
return a.name > b.name ? -1 : 1;
@@ -171,7 +171,7 @@ export const svgToString = function (elem, indent) {
out.push(' xmlns:' + nsMap[uri] + '="' + uri + '"');
}
if (el.attributes.length > 0) {
- for (const [, attr] of Object.entries(el.attributes)) {
+ for (const [ , attr ] of Object.entries(el.attributes)) {
const u = attr.namespaceURI;
if (u && !nsuris[u] && nsMap[u] !== 'xmlns' && nsMap[u] !== 'xml') {
nsuris[u] = true;
@@ -182,7 +182,7 @@ export const svgToString = function (elem, indent) {
});
let i = attrs.length;
- const attrNames = ['width', 'height', 'xmlns', 'x', 'y', 'viewBox', 'id', 'overflow'];
+ const attrNames = [ 'width', 'height', 'xmlns', 'x', 'y', 'viewBox', 'id', 'overflow' ];
while (i--) {
const attr = attrs[i];
const attrVal = toXml(attr.value);
@@ -201,7 +201,7 @@ export const svgToString = function (elem, indent) {
// Skip empty defs
if (elem.nodeName === 'defs' && !elem.firstChild) { return ''; }
- const mozAttrs = ['-moz-math-font-style', '_moz-math-font-style'];
+ const mozAttrs = [ '-moz-math-font-style', '_moz-math-font-style' ];
for (let i = attrs.length - 1; i >= 0; i--) {
const attr = attrs[i];
let attrVal = toXml(attr.value);
@@ -421,7 +421,7 @@ export const setSvgString = function (xmlString, preventUndo) {
attrs.height = vb[3];
// handle content that doesn't have a viewBox
} else {
- ['width', 'height'].forEach(function (dim) {
+ [ 'width', 'height' ].forEach(function (dim) {
// Set to 100 if not given
const val = content.getAttribute(dim) || '100%';
if (String(val).substr(-1) === '%') {
@@ -457,7 +457,7 @@ export const setSvgString = function (xmlString, preventUndo) {
if (attrs.width <= 0) { attrs.width = 100; }
if (attrs.height <= 0) { attrs.height = 100; }
- for (const [key, value] of Object.entries(attrs)) {
+ for (const [ key, value ] of Object.entries(attrs)) {
content.setAttribute(key, value);
}
this.contentW = attrs.width;
@@ -480,7 +480,7 @@ export const setSvgString = function (xmlString, preventUndo) {
svgContext_.getSVGRoot().append(svgContext_.getCanvas().selectorManager.selectorParentGroup);
if (!preventUndo) svgContext_.addCommandToHistory(batchCmd);
- svgContext_.call('changed', [svgContext_.getSVGContent()]);
+ svgContext_.call('changed', [ svgContext_.getSVGContent() ]);
} catch (e) {
console.log(e);
return false;
@@ -542,7 +542,7 @@ export const importSvgString = function (xmlString) {
innerh = convertToNum('height', svg.getAttribute('height')),
innervb = svg.getAttribute('viewBox'),
// if no explicit viewbox, create one out of the width and height
- vb = innervb ? innervb.split(' ') : [0, 0, innerw, innerh];
+ vb = innervb ? innervb.split(' ') : [ 0, 0, innerw, innerh ];
for (j = 0; j < 4; ++j) {
vb[j] = Number(vb[j]);
}
@@ -602,14 +602,14 @@ export const importSvgString = function (xmlString) {
recalculateDimensions(useEl);
dataStorage.put(useEl, 'symbol', symbol);
dataStorage.put(useEl, 'ref', symbol);
- svgContext_.getCanvas().addToSelection([useEl]);
+ svgContext_.getCanvas().addToSelection([ useEl ]);
// TODO: Find way to add this in a recalculateDimensions-parsable way
// if (vb[0] !== 0 || vb[1] !== 0) {
// ts = 'translate(' + (-vb[0]) + ',' + (-vb[1]) + ') ' + ts;
// }
svgContext_.addCommandToHistory(batchCmd);
- svgContext_.call('changed', [svgContext_.getSVGContent()]);
+ svgContext_.call('changed', [ svgContext_.getSVGContent() ]);
} catch (e) {
console.log(e);
return null;
@@ -712,7 +712,7 @@ function getIssues() {
issueList.text = uiStrings.exportNoText;
}
- for (const [sel, descr] of Object.entries(issueList)) {
+ for (const [ sel, descr ] of Object.entries(issueList)) {
if (content.querySelectorAll(sel).length) {
issueCodes.push(sel);
issues.push(descr);
@@ -844,7 +844,7 @@ export const exportPDF = async (
const doc = jsPDF({
orientation,
unit,
- format: [res.w, res.h]
+ format: [ res.w, res.h ]
// , compressPdf: true
});
const docTitle = svgContext_.getCanvas().getDocumentTitle();
@@ -886,7 +886,7 @@ export const uniquifyElemsMethod = function (g) {
//
// Problem #1: if svg_1 gets renamed, we do not update the polyline's se:connector attribute
// Problem #2: if the polyline svg_7 gets renamed, we do not update the marker id nor the polyline's marker-end attribute
- const refElems = ['filter', 'linearGradient', 'pattern', 'radialGradient', 'symbol', 'textPath', 'use'];
+ const refElems = [ 'filter', 'linearGradient', 'pattern', 'radialGradient', 'symbol', 'textPath', 'use' ];
walkTree(g, function (n) {
// if it's an element node
@@ -1005,7 +1005,7 @@ export const removeUnusedDefElemsMethod = function () {
const defelemUses = [];
let numRemoved = 0;
- const attrs = ['fill', 'stroke', 'filter', 'marker-start', 'marker-mid', 'marker-end'];
+ const attrs = [ 'fill', 'stroke', 'filter', 'marker-start', 'marker-mid', 'marker-end' ];
const alen = attrs.length;
const allEls = svgContext_.getSVGContent().getElementsByTagNameNS(NS.SVG, '*');
diff --git a/src/svgcanvas/svgcanvas.js b/src/svgcanvas/svgcanvas.js
index 6285db1c..2ba58bd2 100644
--- a/src/svgcanvas/svgcanvas.js
+++ b/src/svgcanvas/svgcanvas.js
@@ -121,7 +121,7 @@ const {
} = hstry;
const visElems = 'a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use';
-const refAttrs = ['clip-path', 'fill', 'filter', 'marker-end', 'marker-mid', 'marker-start', 'mask', 'stroke'];
+const refAttrs = [ 'clip-path', 'fill', 'filter', 'marker-end', 'marker-mid', 'marker-start', 'mask', 'stroke' ];
if (!window.console) {
window.console = {};
@@ -175,7 +175,7 @@ class SvgCanvas {
const curConfig = {
show_outside_canvas: true,
selectNew: true,
- dimensions: [640, 480]
+ dimensions: [ 640, 480 ]
};
// Update config with new one if given
@@ -740,7 +740,7 @@ class SvgCanvas {
*/
endChanges({ cmd, elem }) {
addCommandToHistory(cmd);
- call('changed', [elem]);
+ call('changed', [ elem ]);
},
getCurrentZoom,
getId,
@@ -1109,7 +1109,7 @@ class SvgCanvas {
* @returns {void}
*/
const logMatrix = function (m) {
- console.log([m.a, m.b, m.c, m.d, m.e, m.f]);
+ console.log([ m.a, m.b, m.c, m.d, m.e, m.f ]);
};
// Root Current Transformation Matrix in user units
@@ -1645,7 +1645,7 @@ class SvgCanvas {
setLayerVisibility, moveSelectedToLayer, mergeLayer, mergeAllLayers,
leaveContext, setContext
};
- Object.entries(dr).forEach(([prop, propVal]) => {
+ Object.entries(dr).forEach(([ prop, propVal ]) => {
canvas[prop] = propVal;
});
draw.init(
@@ -1673,7 +1673,7 @@ class SvgCanvas {
* @returns {void}
*/
changeSVGContent() {
- call('changed', [svgcontent]);
+ call('changed', [ svgcontent ]);
}
}
);
diff --git a/src/svgcanvas/svgroot.js b/src/svgcanvas/svgroot.js
index e42e4c0e..fcc5cd38 100644
--- a/src/svgcanvas/svgroot.js
+++ b/src/svgcanvas/svgroot.js
@@ -5,8 +5,8 @@
*
* @copyright 2010 Alexis Deveria, 2010 Jeff Schiller
*/
-import {NS} from '../common/namespaces.js';
-import {text2xml} from './utilities.js';
+import { NS } from '../common/namespaces.js';
+import { text2xml } from './utilities.js';
/**
* @function module:svgcanvas.svgRootElement svgRootElement the svg node and its children.
diff --git a/src/svgcanvas/svgtransformlist.js b/src/svgcanvas/svgtransformlist.js
index 09083254..d1761bf2 100644
--- a/src/svgcanvas/svgtransformlist.js
+++ b/src/svgcanvas/svgtransformlist.js
@@ -7,8 +7,8 @@
* @copyright 2010 Alexis Deveria, 2010 Jeff Schiller
*/
-import {NS} from '../common/namespaces.js';
-import {supportsNativeTransformLists} from '../common/browser.js';
+import { NS } from '../common/namespaces.js';
+import { supportsNativeTransformLists } from '../common/browser.js';
const svgroot = document.createElementNS(NS.SVG, 'svg');
@@ -22,7 +22,7 @@ function transformToString (xform) {
let text = '';
switch (xform.type) {
case 1: // MATRIX
- text = 'matrix(' + [m.a, m.b, m.c, m.d, m.e, m.f].join(',') + ')';
+ text = 'matrix(' + [ m.a, m.b, m.c, m.d, m.e, m.f ].join(',') + ')';
break;
case 2: // TRANSLATE
text = 'translate(' + m.e + ',' + m.f + ')';
@@ -175,7 +175,7 @@ export class SVGTransformList {
});
const xform = svgroot.createSVGTransform();
const fname = 'set' + name.charAt(0).toUpperCase() + name.slice(1);
- const values = name === 'matrix' ? [mtx] : valArr;
+ const values = name === 'matrix' ? [ mtx ] : valArr;
if (name === 'scale' && values.length === 1) {
values.push(values[0]);
@@ -222,7 +222,7 @@ export class SVGTransformList {
initialize (newItem) {
this.numberOfItems = 1;
this._removeFromOtherLists(newItem);
- this._xforms = [newItem];
+ this._xforms = [ newItem ];
}
/**
diff --git a/src/svgcanvas/text-actions.js b/src/svgcanvas/text-actions.js
index de11ffd2..f54080d8 100644
--- a/src/svgcanvas/text-actions.js
+++ b/src/svgcanvas/text-actions.js
@@ -6,7 +6,7 @@
*/
-import {NS} from '../common/namespaces.js';
+import { NS } from '../common/namespaces.js';
import {
transformPoint, getMatrix
} from './math.js';
@@ -424,8 +424,8 @@ export const textActionsMethod = (function () {
textActionsContext_.getCanvas().clearSelection();
curtext.style.cursor = 'move';
- textActionsContext_.call('selected', [curtext]);
- textActionsContext_.getCanvas().addToSelection([curtext], true);
+ textActionsContext_.call('selected', [ curtext ]);
+ textActionsContext_.getCanvas().addToSelection([ curtext ], true);
}
if (curtext && !curtext.textContent.length) {
// No content, so delete
@@ -491,7 +491,7 @@ export const textActionsMethod = (function () {
curtext.addEventListener("dblclick", selectWord);
if (!len) {
- end = {x: textbb.x + (textbb.width / 2), width: 0};
+ end = { x: textbb.x + (textbb.width / 2), width: 0 };
}
for (i = 0; i < len; i++) {
diff --git a/src/svgcanvas/undo.js b/src/svgcanvas/undo.js
index 9852190e..8dd532a2 100644
--- a/src/svgcanvas/undo.js
+++ b/src/svgcanvas/undo.js
@@ -142,7 +142,7 @@ export const changeSelectedAttributeNoUndoMethod = function (attr, newValue, ele
}
elems = elems || selectedElements;
let i = elems.length;
- const noXYElems = ['g', 'polyline', 'path'];
+ const noXYElems = [ 'g', 'polyline', 'path' ];
// const goodGAttrs = ['transform', 'opacity', 'filter'];
while (i--) {
@@ -151,7 +151,7 @@ export const changeSelectedAttributeNoUndoMethod = function (attr, newValue, ele
// Set x,y vals on elements that don't have them
if ((attr === 'x' || attr === 'y') && noXYElems.includes(elem.tagName)) {
- const bbox = getStrokedBBoxDefaultVisible([elem]);
+ const bbox = getStrokedBBoxDefaultVisible([ elem ]);
const diffX = attr === 'x' ? newValue - bbox.x : 0;
const diffY = attr === 'y' ? newValue - bbox.y : 0;
undoContext_.getCanvas().moveSelectedElements(diffX * currentZoom, diffY * currentZoom, true);
@@ -213,7 +213,7 @@ export const changeSelectedAttributeNoUndoMethod = function (attr, newValue, ele
if (isGecko() &&
elem.nodeName === 'text' &&
(/rotate/).test(elem.getAttribute('transform')) &&
- (String(newValue).startsWith('url') || (['font-size', 'font-family', 'x', 'y'].includes(attr) && elem.textContent))) {
+ (String(newValue).startsWith('url') || ([ 'font-size', 'font-family', 'x', 'y' ].includes(attr) && elem.textContent))) {
elem = ffClone(elem);
}
// Timeout needed for Opera & Firefox
diff --git a/src/svgcanvas/utilities.js b/src/svgcanvas/utilities.js
index f1e6ad2e..d2afe467 100644
--- a/src/svgcanvas/utilities.js
+++ b/src/svgcanvas/utilities.js
@@ -281,7 +281,7 @@ export const dataURLToObjectURL = function (dataurl) {
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
- const blob = new Blob([u8arr], { type: mime });
+ const blob = new Blob([ u8arr ], { type: mime });
return URL.createObjectURL(blob);
};
@@ -305,7 +305,7 @@ export const blankPageObjectURL = (function () {
if (typeof Blob === 'undefined') {
return '';
}
- const blob = new Blob(['SVG-edit '], { type: 'text/html' });
+ const blob = new Blob([ 'SVG-edit ' ], { type: 'text/html' });
return createObjectURL(blob);
})();
@@ -317,7 +317,7 @@ export const blankPageObjectURL = (function () {
*/
export const convertToXMLReferences = function (input) {
let output = '';
- [...input].forEach((ch) => {
+ [ ...input ].forEach((ch) => {
const c = ch.charCodeAt();
output += (c <= 127) ? ch : `${c};`;
});
@@ -495,9 +495,9 @@ export const getPathBBox = function (path) {
const seglist = path.pathSegList;
const tot = seglist.numberOfItems;
- const bounds = [[], []];
+ const bounds = [ [], [] ];
const start = seglist.getItem(0);
- let P0 = [start.x, start.y];
+ let P0 = [ start.x, start.y ];
const getCalc = function (j, P1, P2, P3) {
return function (t) {
@@ -518,9 +518,9 @@ export const getPathBBox = function (path) {
bounds[1].push(P0[1]);
if (seg.x1) {
- const P1 = [seg.x1, seg.y1],
- P2 = [seg.x2, seg.y2],
- P3 = [seg.x, seg.y];
+ const P1 = [ seg.x1, seg.y1 ],
+ P2 = [ seg.x2, seg.y2 ],
+ P3 = [ seg.x, seg.y ];
for (let j = 0; j < 2; j++) {
const calc = getCalc(j, P1, P2, P3);
@@ -586,7 +586,7 @@ function groupBBFix(selected) {
elem.setAttribute('visibility', 'hidden');
svgroot_.appendChild(elem);
copy.push(elem);
- if (['line', 'path'].indexOf(elem.tagName) !== -1) {
+ if ([ 'line', 'path' ].indexOf(elem.tagName) !== -1) {
elements.push(elem);
}
});
@@ -722,7 +722,7 @@ export const getBBox = function (elem) {
export const getPathDFromSegments = function (pathSegments) {
let d = '';
- $.each(pathSegments, function (j, [singleChar, pts]) {
+ $.each(pathSegments, function (j, [ singleChar, pts ]) {
d += singleChar;
for (let i = 0; i < pts.length; i += 2) {
d += (pts[i] + ',' + pts[i + 1]) + ' ';
@@ -754,12 +754,12 @@ export const getPathDFromElement = function (elem) {
rx = ry;
}
d = getPathDFromSegments([
- ['M', [(cx - rx), (cy)]],
- ['C', [(cx - rx), (cy - ry / num), (cx - rx / num), (cy - ry), (cx), (cy - ry)]],
- ['C', [(cx + rx / num), (cy - ry), (cx + rx), (cy - ry / num), (cx + rx), (cy)]],
- ['C', [(cx + rx), (cy + ry / num), (cx + rx / num), (cy + ry), (cx), (cy + ry)]],
- ['C', [(cx - rx / num), (cy + ry), (cx - rx), (cy + ry / num), (cx - rx), (cy)]],
- ['Z', []]
+ [ 'M', [ (cx - rx), (cy) ] ],
+ [ 'C', [ (cx - rx), (cy - ry / num), (cx - rx / num), (cy - ry), (cx), (cy - ry) ] ],
+ [ 'C', [ (cx + rx / num), (cy - ry), (cx + rx), (cy - ry / num), (cx + rx), (cy) ] ],
+ [ 'C', [ (cx + rx), (cy + ry / num), (cx + rx / num), (cy + ry), (cx), (cy + ry) ] ],
+ [ 'C', [ (cx - rx / num), (cy + ry), (cx - rx), (cy + ry / num), (cx - rx), (cy) ] ],
+ [ 'Z', [] ]
]);
break;
} case 'path':
@@ -791,24 +791,24 @@ export const getPathDFromElement = function (elem) {
d = (!rx && !ry)
// Regular rect
? getPathDFromSegments([
- ['M', [x, y]],
- ['L', [x + w, y]],
- ['L', [x + w, y + h]],
- ['L', [x, y + h]],
- ['L', [x, y]],
- ['Z', []]
+ [ 'M', [ x, y ] ],
+ [ 'L', [ x + w, y ] ],
+ [ 'L', [ x + w, y + h ] ],
+ [ 'L', [ x, y + h ] ],
+ [ 'L', [ x, y ] ],
+ [ 'Z', [] ]
])
: getPathDFromSegments([
- ['M', [x, y + ry]],
- ['C', [x, y + ry / num, x + rx / num, y, x + rx, y]],
- ['L', [x + w - rx, y]],
- ['C', [x + w - rx / num, y, x + w, y + ry / num, x + w, y + ry]],
- ['L', [x + w, y + h - ry]],
- ['C', [x + w, y + h - ry / num, x + w - rx / num, y + h, x + w - rx, y + h]],
- ['L', [x + rx, y + h]],
- ['C', [x + rx / num, y + h, x, y + h - ry / num, x, y + h - ry]],
- ['L', [x, y + ry]],
- ['Z', []]
+ [ 'M', [ x, y + ry ] ],
+ [ 'C', [ x, y + ry / num, x + rx / num, y, x + rx, y ] ],
+ [ 'L', [ x + w - rx, y ] ],
+ [ 'C', [ x + w - rx / num, y, x + w, y + ry / num, x + w, y + ry ] ],
+ [ 'L', [ x + w, y + h - ry ] ],
+ [ 'C', [ x + w, y + h - ry / num, x + w - rx / num, y + h, x + w - rx, y + h ] ],
+ [ 'L', [ x + rx, y + h ] ],
+ [ 'C', [ x + rx / num, y + h, x, y + h - ry / num, x, y + h - ry ] ],
+ [ 'L', [ x, y + ry ] ],
+ [ 'Z', [] ]
]);
break;
} default:
@@ -828,7 +828,7 @@ export const getExtraAttributesForConvertToPath = function (elem) {
const attrs = {};
// TODO: make this list global so that we can properly maintain it
// TODO: what about @transform, @clip-rule, @fill-rule, etc?
- ['marker-start', 'marker-end', 'marker-mid', 'filter', 'clip-path'].forEach(function(item){
+ [ 'marker-start', 'marker-end', 'marker-mid', 'filter', 'clip-path' ].forEach(function(item){
const a = elem.getAttribute(item);
if (a) {
attrs[item] = a;
@@ -944,7 +944,7 @@ export const convertToPath = function (
elem.remove();
path.setAttribute('id', id);
path.removeAttribute('visibility');
- addToSelection([path], true);
+ addToSelection([ path ], true);
addCommandToHistory(batchCmd);
@@ -1010,7 +1010,7 @@ export const getBBoxWithTransform = function (elem, addSVGElementFromJson, pathA
if (bBoxCanBeOptimizedOverNativeGetBBox(angle, hasMatrixXForm)) {
// Get the BBox from the raw path for these elements
// TODO: why ellipse and not circle
- const elemNames = ['ellipse', 'path', 'line', 'polyline', 'polygon'];
+ const elemNames = [ 'ellipse', 'path', 'line', 'polyline', 'polygon' ];
if (elemNames.includes(elem.tagName)) {
goodBb = getBBoxOfElementAsPath(elem, addSVGElementFromJson, pathActions);
bb = goodBb;
@@ -1244,7 +1244,7 @@ export const getElem = (supportsSelectors())
* @returns {void}
*/
export const assignAttributes = function (elem, attrs, suspendLength, unitCheck) {
- for (const [key, value] of Object.entries(attrs)) {
+ for (const [ key, value ] of Object.entries(attrs)) {
const ns = (key.substr(0, 4) === 'xml:'
? NS.XML
: key.substr(0, 6) === 'xlink:' ? NS.XLINK : null);
@@ -1293,7 +1293,7 @@ export const cleanupElement = function (element) {
delete defaults.ry;
}
- Object.entries(defaults).forEach(([attr, val]) => {
+ Object.entries(defaults).forEach(([ attr, val ]) => {
if (element.getAttribute(attr) === String(val)) {
element.removeAttribute(attr);
}
@@ -1365,4 +1365,4 @@ export const mock = ({
// shortcuts to common DOM functions
export const $id = (id) => document.getElementById(id);
export const $qq = (sel) => document.querySelector(sel);
-export const $qa = (sel) => [...document.querySelectorAll(sel)];
+export const $qa = (sel) => [ ...document.querySelectorAll(sel) ];
diff --git a/tools/mochawesome-cli.js b/tools/mochawesome-cli.js
index d0dec275..6ed3b1fa 100644
--- a/tools/mochawesome-cli.js
+++ b/tools/mochawesome-cli.js
@@ -24,7 +24,7 @@ const Suite = require('mocha/lib/suite.js');
const Test = require('mocha/lib/test.js');
const Runner = require('mocha/lib/runner.js');
-const {constants: {
+const { constants: {
EVENT_RUN_BEGIN,
EVENT_RUN_END,
EVENT_SUITE_BEGIN,
@@ -32,9 +32,9 @@ const {constants: {
EVENT_TEST_FAIL,
EVENT_TEST_PASS,
EVENT_TEST_PENDING
-}} = require('mocha/lib/runner.js');
+} } = require('mocha/lib/runner.js');
-const {results, stats} = require(path);
+const { results, stats } = require(path);
const runner = new Runner(
new Suite('', null, true)
@@ -47,7 +47,7 @@ console.log('Mocha results:');
new MochaReporter(runner);
runner.emit(EVENT_RUN_BEGIN);
-results.forEach(({suites}) => {
+results.forEach(({ suites }) => {
suites.forEach(function handleSuite (st) {
const ste = Object.assign(new Suite(''), st);
@@ -60,7 +60,7 @@ results.forEach(({suites}) => {
const tst = new Test('', () => {
//
});
- Object.entries(ts).forEach(([k, v]) => {
+ Object.entries(ts).forEach(([ k, v ]) => {
// `fullTitle` is a string in mochawesome but a function in Mocha
if (k !== 'fullTitle') {
tst[k] = v;
From 7710069ff3dc0c0cd506b9fba2dafd4ca97116bb Mon Sep 17 00:00:00 2001
From: JFH <20402845+jfhenon@users.noreply.github.com>
Date: Thu, 13 May 2021 14:20:52 +0200
Subject: [PATCH 09/17] move dragmove where used
---
.../{ => extensions/ext-overview_window}/dragmove/dragmove.js | 0
.../extensions/ext-overview_window/ext-overview_window.js | 2 +-
2 files changed, 1 insertion(+), 1 deletion(-)
rename src/editor/{ => extensions/ext-overview_window}/dragmove/dragmove.js (100%)
diff --git a/src/editor/dragmove/dragmove.js b/src/editor/extensions/ext-overview_window/dragmove/dragmove.js
similarity index 100%
rename from src/editor/dragmove/dragmove.js
rename to src/editor/extensions/ext-overview_window/dragmove/dragmove.js
diff --git a/src/editor/extensions/ext-overview_window/ext-overview_window.js b/src/editor/extensions/ext-overview_window/ext-overview_window.js
index 4c10a760..b6e3d93e 100644
--- a/src/editor/extensions/ext-overview_window/ext-overview_window.js
+++ b/src/editor/extensions/ext-overview_window/ext-overview_window.js
@@ -7,7 +7,7 @@
* @copyright 2013 James Sacksteder
*
*/
-import { dragmove } from '../../../editor/dragmove/dragmove.js';
+import { dragmove } from './dragmove/dragmove.js';
export default {
name: 'overview_window',
From 327a4bdc673aecb036583dd70fff610bd9eb2fbc Mon Sep 17 00:00:00 2001
From: JFH <20402845+jfhenon@users.noreply.github.com>
Date: Thu, 13 May 2021 18:26:35 +0200
Subject: [PATCH 10/17] read config earlier so lang can be retrieved.
---
src/editor/EditorStartup.js | 10 ++++------
src/editor/MainMenu.js | 9 +++------
2 files changed, 7 insertions(+), 12 deletions(-)
diff --git a/src/editor/EditorStartup.js b/src/editor/EditorStartup.js
index 367e3ec9..891f749a 100644
--- a/src/editor/EditorStartup.js
+++ b/src/editor/EditorStartup.js
@@ -61,6 +61,10 @@ class EditorStartup {
* @returns {void}
*/
async init () {
+ if ('localStorage' in window) { // && onWeb removed so Webkit works locally
+ this.storage = window.localStorage;
+ }
+ this.configObj.load();
const self = this;
const { i18next } = await putLocale(this.configObj.pref('lang'), this.goodLangs);
this.i18next = i18next;
@@ -97,12 +101,6 @@ class EditorStartup {
console.error(err);
}
- if ('localStorage' in window) { // && onWeb removed so Webkit works locally
- this.storage = window.localStorage;
- }
-
- this.configObj.load();
-
/**
* @name module:SVGthis.canvas
* @type {module:svgcanvas.SvgCanvas}
diff --git a/src/editor/MainMenu.js b/src/editor/MainMenu.js
index b07b0425..644bc216 100644
--- a/src/editor/MainMenu.js
+++ b/src/editor/MainMenu.js
@@ -111,11 +111,8 @@ class MainMenu {
// set language
if (lang && lang !== this.editor.configObj.pref("lang")) {
- const { langParam, langData } = await this.editor.putLocale(
- lang,
- this.editor.goodLangs
- );
- await this.editor.svgCanvassetLang(langParam, langData);
+ this.editor.configObj.pref("lang", lang);
+ seAlert('Changing the language needs reload');
}
// set grid setting
@@ -130,7 +127,7 @@ class MainMenu {
this.editor.configObj.curConfig.baseUnit = baseunit;
this.editor.svgCanvas.setConfig(this.editor.configObj.curConfig);
this.editor.updateCanvas();
- this.editor.hidePreferences();
+ this.hidePreferences();
}
/**
From 1bad5b9037eba26b2ba57026feed95d82f14ffe4 Mon Sep 17 00:00:00 2001
From: JFH <20402845+jfhenon@users.noreply.github.com>
Date: Fri, 14 May 2021 23:16:27 +0200
Subject: [PATCH 11/17] progress on localization
---
src/editor/ConfigObj.js | 5 +-
.../ext-eyedropper/ext-eyedropper.js | 27 ++-
.../extensions/ext-eyedropper/locale/fr.js | 9 +
src/editor/extensions/ext-grid/ext-grid.js | 26 +--
src/editor/extensions/ext-grid/locale/fr.js | 8 +
.../ext-helloworld/ext-helloworld.js | 54 ++----
.../extensions/ext-helloworld/locale/en.js | 2 +-
.../extensions/ext-helloworld/locale/fr.js | 9 +
.../extensions/ext-helloworld/locale/zh-CN.js | 2 +-
.../extensions/ext-polygon/ext-polygon.js | 175 +++++++++---------
.../extensions/ext-polygon/locale/fr.js | 14 ++
src/editor/extensions/ext-star/ext-star.js | 56 +++---
src/editor/extensions/ext-star/locale/en.js | 1 +
src/editor/extensions/ext-star/locale/fr.js | 23 +++
.../extensions/ext-star/locale/zh-CN.js | 1 +
src/editor/locale.js | 15 ++
16 files changed, 239 insertions(+), 188 deletions(-)
create mode 100644 src/editor/extensions/ext-eyedropper/locale/fr.js
create mode 100644 src/editor/extensions/ext-grid/locale/fr.js
create mode 100644 src/editor/extensions/ext-helloworld/locale/fr.js
create mode 100644 src/editor/extensions/ext-polygon/locale/fr.js
create mode 100644 src/editor/extensions/ext-star/locale/fr.js
diff --git a/src/editor/ConfigObj.js b/src/editor/ConfigObj.js
index 6a83d64d..1e701aec 100644
--- a/src/editor/ConfigObj.js
+++ b/src/editor/ConfigObj.js
@@ -170,11 +170,12 @@ export default class ConfigObj {
// 'ext-markers',
'ext-overview_window',
'ext-panning',
- 'ext-polygon',
'ext-shapes',
'ext-star',
+ 'ext-polygon',
'ext-storage',
- 'ext-opensave'
+ 'ext-opensave',
+ 'ext-helloworld',
];
this.curConfig = {
// We do not put on defaultConfig to simplify object copying
diff --git a/src/editor/extensions/ext-eyedropper/ext-eyedropper.js b/src/editor/extensions/ext-eyedropper/ext-eyedropper.js
index 2cde4162..60c8f35c 100644
--- a/src/editor/extensions/ext-eyedropper/ext-eyedropper.js
+++ b/src/editor/extensions/ext-eyedropper/ext-eyedropper.js
@@ -4,27 +4,19 @@
* @license MIT
*
* @copyright 2010 Jeff Schiller
+ * @copyright 2021 OptimistikSAS
*
*/
-const loadExtensionTranslation = async function (lang) {
- let translationModule;
- try {
- // eslint-disable-next-line no-unsanitized/method
- translationModule = await import(`./locale/${encodeURIComponent(lang)}.js`);
- } catch (_error) {
- // eslint-disable-next-line no-console
- console.error(`Missing translation (${lang}) - using 'en'`);
- translationModule = await import(`./locale/en.js`);
- }
- return translationModule.default;
-};
+import { loadExtensionTranslation } from '../../locale.js';
+
+const name = "eyedropper";
export default {
- name: 'eyedropper',
+ name,
async init(S) {
const svgEditor = this;
- const strings = await loadExtensionTranslation(svgEditor.configObj.pref('lang'));
+ await loadExtensionTranslation(svgEditor, name);
const { ChangeElementCommand } = S, // , svgcontent,
// svgdoc = S.svgroot.parentNode.ownerDocument,
{ svgCanvas } = svgEditor,
@@ -74,12 +66,15 @@ export default {
};
return {
- name: strings.name,
+ name: svgEditor.i18next.t(`${name}:name`),
callback() {
// Add the button and its handler(s)
const buttonTemplate = document.createElement("template");
+ const title = svgEditor.i18next.t(`${name}:buttons.0.title`);
+ const key = svgEditor.i18next.t(`${name}:buttons.0.key`);
+ // eslint-disable-next-line no-unsanitized/property
buttonTemplate.innerHTML = `
-
+
`;
$id('tools_left').append(buttonTemplate.content.cloneNode(true));
$id('tool_eyedropper').addEventListener("click", () => {
diff --git a/src/editor/extensions/ext-eyedropper/locale/fr.js b/src/editor/extensions/ext-eyedropper/locale/fr.js
new file mode 100644
index 00000000..525cbf77
--- /dev/null
+++ b/src/editor/extensions/ext-eyedropper/locale/fr.js
@@ -0,0 +1,9 @@
+export default {
+ name: 'pipette',
+ buttons: [
+ {
+ title: 'Outil pipette',
+ key: 'I'
+ }
+ ]
+};
diff --git a/src/editor/extensions/ext-grid/ext-grid.js b/src/editor/extensions/ext-grid/ext-grid.js
index 0291f4e7..37e998ca 100644
--- a/src/editor/extensions/ext-grid/ext-grid.js
+++ b/src/editor/extensions/ext-grid/ext-grid.js
@@ -7,24 +7,15 @@
*
*/
-const loadExtensionTranslation = async function (lang) {
- let translationModule;
- try {
- // eslint-disable-next-line no-unsanitized/method
- translationModule = await import(`./locale/${encodeURIComponent(lang)}.js`);
- } catch (_error) {
- // eslint-disable-next-line no-console
- console.error(`Missing translation (${lang}) - using 'en'`);
- translationModule = await import(`./locale/en.js`);
- }
- return translationModule.default;
-};
+ import { loadExtensionTranslation } from '../../locale.js';
+
+ const name = "grid";
export default {
- name: 'grid',
+ name,
async init ({ NS, getTypeMap }) {
const svgEditor = this;
- const strings = await loadExtensionTranslation(svgEditor.configObj.pref('lang'));
+ await loadExtensionTranslation(svgEditor, name);
const { svgCanvas } = svgEditor;
const { $id } = svgCanvas;
const svgdoc = document.getElementById('svgcanvas').ownerDocument;
@@ -152,15 +143,18 @@ export default {
document.getElementById('view_grid').pressed = showGrid;
};
return {
- name: strings.name,
+ name: svgEditor.i18next.t(`${name}:name`),
zoomChanged (zoom) {
if (showGrid) { updateGrid(zoom); }
},
callback () {
// Add the button and its handler(s)
const buttonTemplate = document.createElement("template");
+ const title = svgEditor.i18next.t(`${name}:buttons.0.title`);
+
+ // eslint-disable-next-line no-unsanitized/property
buttonTemplate.innerHTML = `
-
+
`;
$id('editor_panel').append(buttonTemplate.content.cloneNode(true));
$id('view_grid').addEventListener("click", () => {
diff --git a/src/editor/extensions/ext-grid/locale/fr.js b/src/editor/extensions/ext-grid/locale/fr.js
new file mode 100644
index 00000000..60f5b63b
--- /dev/null
+++ b/src/editor/extensions/ext-grid/locale/fr.js
@@ -0,0 +1,8 @@
+export default {
+ name: 'Grille',
+ buttons: [
+ {
+ title: 'Afficher/Cacher Grille'
+ }
+ ]
+};
diff --git a/src/editor/extensions/ext-helloworld/ext-helloworld.js b/src/editor/extensions/ext-helloworld/ext-helloworld.js
index c7b1b73b..1afc39c6 100644
--- a/src/editor/extensions/ext-helloworld/ext-helloworld.js
+++ b/src/editor/extensions/ext-helloworld/ext-helloworld.js
@@ -13,39 +13,32 @@
* will show the user the point on the canvas that was clicked on.
*/
-const loadExtensionTranslation = async function (lang) {
- let translationModule;
- try {
- // eslint-disable-next-line no-unsanitized/method
- translationModule = await import(`./locale/${encodeURIComponent(lang)}.js`);
- } catch (_error) {
- // eslint-disable-next-line no-console
- console.error(`Missing translation (${lang}) - using 'en'`);
- translationModule = await import(`./locale/en.js`);
- }
- return translationModule.default;
-};
+import { loadExtensionTranslation } from '../../locale.js';
+
+const name = "helloworld";
export default {
- name: 'helloworld',
+ name,
async init ({ _importLocale }) {
const svgEditor = this;
- const strings = await loadExtensionTranslation(svgEditor.configObj.pref('lang'));
+ await loadExtensionTranslation(svgEditor, name);
const { svgCanvas } = svgEditor;
+ const { $id } = svgCanvas;
return {
- name: strings.name,
- events: [ {
- // Must match the icon ID in helloworld-icon.xml
- id: 'hello_world',
- // Tooltip text
- title: strings.buttons[0].title,
- click () {
- // The action taken when the button is clicked on.
- // For "mode" buttons, any other button will
- // automatically be de-pressed.
+ name: svgEditor.i18next.t(`${name}:name`),
+ callback() {
+ // Add the button and its handler(s)
+ const buttonTemplate = document.createElement("template");
+ const title = svgEditor.i18next.t(`${name}:buttons.0.title`);
+ // eslint-disable-next-line no-unsanitized/property
+ buttonTemplate.innerHTML = `
+
+ `;
+ $id('tools_left').append(buttonTemplate.content.cloneNode(true));
+ $id('hello_world').addEventListener("click", () => {
svgCanvas.setMode('hello_world');
- }
- } ],
+ });
+ },
// This is triggered when the main mouse button is pressed down
// on the editor canvas (not the tool panels)
mouseDown () {
@@ -70,14 +63,7 @@ export default {
const y = opts.mouse_y / zoom;
// We do our own formatting
- let { text } = strings;
- [
- [ 'x', x ],
- [ 'y', y ]
- ].forEach(([ prop, val ]) => {
- text = text.replace('{' + prop + '}', val);
- });
-
+ let text = svgEditor.i18next.t(`${name}:text`, { x, y });
// Show the text using the custom alert function
alert(text);
}
diff --git a/src/editor/extensions/ext-helloworld/locale/en.js b/src/editor/extensions/ext-helloworld/locale/en.js
index e52406fa..f7413775 100644
--- a/src/editor/extensions/ext-helloworld/locale/en.js
+++ b/src/editor/extensions/ext-helloworld/locale/en.js
@@ -1,6 +1,6 @@
export default {
name: 'Hello World',
- text: 'Hello World!\n\nYou clicked here: {x}, {y}',
+ text: 'Hello World!\n\nYou clicked here: {{x}}, {{y}}',
buttons: [
{
title: "Say 'Hello World'"
diff --git a/src/editor/extensions/ext-helloworld/locale/fr.js b/src/editor/extensions/ext-helloworld/locale/fr.js
new file mode 100644
index 00000000..01e044ac
--- /dev/null
+++ b/src/editor/extensions/ext-helloworld/locale/fr.js
@@ -0,0 +1,9 @@
+export default {
+ name: 'Bonjour le Monde',
+ text: 'Bonjour le Monde!\n\nVous avez cliqué ici: {{x}}, {{y}}',
+ buttons: [
+ {
+ title: "Dire 'Bonjour le Monde'"
+ }
+ ]
+};
diff --git a/src/editor/extensions/ext-helloworld/locale/zh-CN.js b/src/editor/extensions/ext-helloworld/locale/zh-CN.js
index 87912014..608da298 100755
--- a/src/editor/extensions/ext-helloworld/locale/zh-CN.js
+++ b/src/editor/extensions/ext-helloworld/locale/zh-CN.js
@@ -1,6 +1,6 @@
export default {
name: 'Hello World',
- text: 'Hello World!\n\n 请点击: {x}, {y}',
+ text: 'Hello World!\n\n 请点击: {{x}}, {{y}}',
buttons: [
{
title: "输出 'Hello World'"
diff --git a/src/editor/extensions/ext-polygon/ext-polygon.js b/src/editor/extensions/ext-polygon/ext-polygon.js
index fe2ccf9e..a662e926 100644
--- a/src/editor/extensions/ext-polygon/ext-polygon.js
+++ b/src/editor/extensions/ext-polygon/ext-polygon.js
@@ -6,119 +6,114 @@
*
*/
-const loadExtensionTranslation = async function (lang) {
- let translationModule;
- try {
- // eslint-disable-next-line no-unsanitized/method
- translationModule = await import(`./locale/${encodeURIComponent(lang)}.js`);
- } catch (_error) {
- // eslint-disable-next-line no-console
- console.error(`Missing translation (${lang}) - using 'en'`);
- translationModule = await import(`./locale/en.js`);
- }
- return translationModule.default;
-};
+import { loadExtensionTranslation } from "../../locale.js";
+
+const name = "polygon";
export default {
- name: 'polygon',
- async init (_S) {
+ name,
+ async init(_S) {
const svgEditor = this;
const { svgCanvas } = svgEditor;
const { $id } = svgCanvas;
// const editingitex = false;
- const strings = await loadExtensionTranslation(svgEditor.configObj.pref('lang'));
+ await loadExtensionTranslation(svgEditor, name);
let selElems;
let started;
let newFO;
/**
- * @param {boolean} on
- * @returns {void}
- */
- const showPanel = (on) => {
- $id('polygon_panel').style.display = (on) ? 'block' : 'none';
+ * @param {boolean} on
+ * @returns {void}
+ */
+ const showPanel = on => {
+ $id("polygon_panel").style.display = on ? "block" : "none";
};
/**
- * @param {string} attr
- * @param {string|Float} val
- * @returns {void}
- */
+ * @param {string} attr
+ * @param {string|Float} val
+ * @returns {void}
+ */
const setAttr = (attr, val) => {
svgCanvas.changeSelectedAttribute(attr, val);
- svgCanvas.call('changed', selElems);
+ svgCanvas.call("changed", selElems);
};
/**
- * @param {Float} n
- * @returns {Float}
- */
- const cot = (n) => (1 / Math.tan(n));
+ * @param {Float} n
+ * @returns {Float}
+ */
+ const cot = n => 1 / Math.tan(n);
/**
- * @param {Float} n
- * @returns {Float}
- */
- const sec = (n) => (1 / Math.cos(n));
+ * @param {Float} n
+ * @returns {Float}
+ */
+ const sec = n => 1 / Math.cos(n);
return {
- name: strings.name,
+ name: svgEditor.i18next.t(`${name}:name`),
// The callback should be used to load the DOM with the appropriate UI items
- callback () {
- // Add the button and its handler(s)
- // Note: the star extension may also add the same flying button so we check first
- if ($id('tools_polygon') === null) {
- const buttonTemplate = document.createElement("template");
- buttonTemplate.innerHTML = `
-
-
-
-
- `;
- $id('tools_left').append(buttonTemplate.content.cloneNode(true));
+ callback() {
+ if ($id("tools_polygon") === null) {
+ console.error(
+ "this polygon extension must be added after the star extension"
+ );
}
- $id('tool_polygon').addEventListener("click", () => {
- if (this.leftPanel.updateLeftPanel('tool_polygon')) {
- svgCanvas.setMode('polygon');
+ const title = svgEditor.i18next.t(`${name}:buttons.0.title`);
+ const buttonTemplate = document.createElement("template");
+ // eslint-disable-next-line no-unsanitized/property
+ buttonTemplate.innerHTML = `
+
+
+ `;
+ $id("tools_polygon").append(buttonTemplate.content.cloneNode(true));
+
+ $id("tool_polygon").addEventListener("click", () => {
+ if (this.leftPanel.updateLeftPanel("tool_polygon")) {
+ svgCanvas.setMode("polygon");
showPanel(true);
}
});
-
+ const label0 = svgEditor.i18next.t(`${name}:contextTools.0.label`);
+ const title0 = svgEditor.i18next.t(`${name}:contextTools.0.title`);
// Add the context panel and its handler(s)
const panelTemplate = document.createElement("template");
+ // eslint-disable-next-line no-unsanitized/property
panelTemplate.innerHTML = `
-
+
`;
- $id('tools_top').appendChild(panelTemplate.content.cloneNode(true));
- $id("polygon_panel").style.display = 'none';
- $id("polySides").addEventListener("change", (event) => {
- setAttr('sides', event.target.value);
+ $id("tools_top").appendChild(panelTemplate.content.cloneNode(true));
+ $id("polygon_panel").style.display = "none";
+ $id("polySides").addEventListener("change", event => {
+ setAttr("sides", event.target.value);
});
},
- mouseDown (opts) {
- if (svgCanvas.getMode() !== 'polygon') {
+ mouseDown(opts) {
+ if (svgCanvas.getMode() !== "polygon") {
return undefined;
}
// const e = opts.event;
- const rgb = svgCanvas.getColor('fill');
+ const rgb = svgCanvas.getColor("fill");
// const ccRgbEl = rgb.substring(1, rgb.length);
- const sRgb = svgCanvas.getColor('stroke');
+ const sRgb = svgCanvas.getColor("stroke");
// ccSRgbEl = sRgb.substring(1, rgb.length);
const sWidth = svgCanvas.getStrokeWidth();
started = true;
newFO = svgCanvas.addSVGElementFromJson({
- element: 'polygon',
+ element: "polygon",
attr: {
cx: opts.start_x,
cy: opts.start_y,
id: svgCanvas.getNextId(),
- shape: 'regularPoly',
- sides: document.getElementById('polySides').value,
- orient: 'x',
+ shape: "regularPoly",
+ sides: document.getElementById("polySides").value,
+ orient: "x",
edge: 0,
fill: rgb,
strokecolor: sRgb,
@@ -130,67 +125,67 @@ export default {
started: true
};
},
- mouseMove (opts) {
- if (!started || svgCanvas.getMode() !== 'polygon') {
+ mouseMove(opts) {
+ if (!started || svgCanvas.getMode() !== "polygon") {
return undefined;
}
- const cx = Number(newFO.getAttribute('cx'));
- const cy = Number(newFO.getAttribute('cy'));
- const sides = Number(newFO.getAttribute('sides'));
+ const cx = Number(newFO.getAttribute("cx"));
+ const cy = Number(newFO.getAttribute("cy"));
+ const sides = Number(newFO.getAttribute("sides"));
// const orient = newFO.getAttribute('orient');
- const fill = newFO.getAttribute('fill');
- const strokecolor = newFO.getAttribute('strokecolor');
- const strokeWidth = Number(newFO.getAttribute('strokeWidth'));
+ const fill = newFO.getAttribute("fill");
+ const strokecolor = newFO.getAttribute("strokecolor");
+ const strokeWidth = Number(newFO.getAttribute("strokeWidth"));
let x = opts.mouse_x;
let y = opts.mouse_y;
- const edg = (Math.sqrt((x - cx) * (x - cx) + (y - cy) * (y - cy))) / 1.5;
- newFO.setAttribute('edge', edg);
+ const edg = Math.sqrt((x - cx) * (x - cx) + (y - cy) * (y - cy)) / 1.5;
+ newFO.setAttribute("edge", edg);
const inradius = (edg / 2) * cot(Math.PI / sides);
const circumradius = inradius * sec(Math.PI / sides);
- let points = '';
+ let points = "";
for (let s = 0; sides >= s; s++) {
- const angle = 2.0 * Math.PI * s / sides;
- x = (circumradius * Math.cos(angle)) + cx;
- y = (circumradius * Math.sin(angle)) + cy;
+ const angle = (2.0 * Math.PI * s) / sides;
+ x = circumradius * Math.cos(angle) + cx;
+ y = circumradius * Math.sin(angle) + cy;
- points += x + ',' + y + ' ';
+ points += x + "," + y + " ";
}
// const poly = newFO.createElementNS(NS.SVG, 'polygon');
- newFO.setAttribute('points', points);
- newFO.setAttribute('fill', fill);
- newFO.setAttribute('stroke', strokecolor);
- newFO.setAttribute('stroke-width', strokeWidth);
+ newFO.setAttribute("points", points);
+ newFO.setAttribute("fill", fill);
+ newFO.setAttribute("stroke", strokecolor);
+ newFO.setAttribute("stroke-width", strokeWidth);
return {
started: true
};
},
- mouseUp () {
- if (svgCanvas.getMode() !== 'polygon') {
+ mouseUp() {
+ if (svgCanvas.getMode() !== "polygon") {
return undefined;
}
- const edge = newFO.getAttribute('edge');
- const keep = (edge !== '0');
+ const edge = newFO.getAttribute("edge");
+ const keep = edge !== "0";
// svgCanvas.addToSelection([newFO], true);
return {
keep,
element: newFO
};
},
- selectedChanged (opts) {
+ selectedChanged(opts) {
// Use this to update the current selected elements
selElems = opts.elems;
let i = selElems.length;
while (i--) {
const elem = selElems[i];
- if (elem && elem.getAttribute('shape') === 'regularPoly') {
+ if (elem && elem.getAttribute("shape") === "regularPoly") {
if (opts.selectedElement && !opts.multiselected) {
- $id('polySides').value = elem.getAttribute('sides');
+ $id("polySides").value = elem.getAttribute("sides");
showPanel(true);
} else {
@@ -201,7 +196,7 @@ export default {
}
}
},
- elementChanged () {
+ elementChanged() {
// const elem = opts.elems[0];
}
};
diff --git a/src/editor/extensions/ext-polygon/locale/fr.js b/src/editor/extensions/ext-polygon/locale/fr.js
new file mode 100644
index 00000000..9b503d8c
--- /dev/null
+++ b/src/editor/extensions/ext-polygon/locale/fr.js
@@ -0,0 +1,14 @@
+export default {
+ name: 'polygone',
+ buttons: [
+ {
+ title: 'Outil Polygone'
+ }
+ ],
+ contextTools: [
+ {
+ title: 'Nombre de côtés',
+ label: 'côtés'
+ }
+ ]
+};
diff --git a/src/editor/extensions/ext-star/ext-star.js b/src/editor/extensions/ext-star/ext-star.js
index bd044b86..7ab42b52 100644
--- a/src/editor/extensions/ext-star/ext-star.js
+++ b/src/editor/extensions/ext-star/ext-star.js
@@ -6,21 +6,12 @@
*
*/
-const loadExtensionTranslation = async function (lang) {
- let translationModule;
- try {
- // eslint-disable-next-line no-unsanitized/method
- translationModule = await import(`./locale/${encodeURIComponent(lang)}.js`);
- } catch (_error) {
- // eslint-disable-next-line no-console
- console.error(`Missing translation (${lang}) - using 'en'`);
- translationModule = await import(`./locale/en.js`);
- }
- return translationModule.default;
-};
+ import { loadExtensionTranslation } from '../../locale.js';
-export default {
- name: 'star',
+ const name = "star";
+
+ export default {
+ name,
async init (_S) {
const svgEditor = this;
const { svgCanvas } = svgEditor;
@@ -28,7 +19,7 @@ export default {
let selElems;
let started;
let newFO;
- const strings = await loadExtensionTranslation(svgEditor.configObj.pref('lang'));
+ await loadExtensionTranslation(svgEditor, name);
/**
*
@@ -51,21 +42,23 @@ export default {
};
return {
- name: strings.name,
+ name: svgEditor.i18next.t(`${name}:name`),
// The callback should be used to load the DOM with the appropriate UI items
callback () {
// Add the button and its handler(s)
- // Note: the star extension may also add the same flying button so we check first
- if ($id('tools_polygon') === null) {
- const buttonTemplate = document.createElement("template");
- buttonTemplate.innerHTML = `
-
-
-
+ // Note: the star extension needs to be loaded before the polygon extension
+ const fbtitle = svgEditor.i18next.t(`${name}:title`);
+ const title = svgEditor.i18next.t(`${name}:buttons.0.title`);
+ const buttonTemplate = document.createElement("template");
+ // eslint-disable-next-line no-unsanitized/property
+ buttonTemplate.innerHTML = `
+
+
+
`;
- $id('tools_left').append(buttonTemplate.content.cloneNode(true));
- }
+ $id('tools_left').append(buttonTemplate.content.cloneNode(true));
+ // handler
$id('tool_star').addEventListener("click", () => { showPanel(true);
if (this.leftPanel.updateLeftPanel('tool_polygon')) {
svgCanvas.setMode('star');
@@ -73,15 +66,22 @@ export default {
}
});
+ const label0 = svgEditor.i18next.t(`${name}:contextTools.0.label`);
+ const title0 = svgEditor.i18next.t(`${name}:contextTools.0.title`);
+ const label1 = svgEditor.i18next.t(`${name}:contextTools.1.label`);
+ const title1 = svgEditor.i18next.t(`${name}:contextTools.1.title`);
+ const label2 = svgEditor.i18next.t(`${name}:contextTools.2.label`);
+ const title2 = svgEditor.i18next.t(`${name}:contextTools.2.title`);
// Add the context panel and its handler(s)
const panelTemplate = document.createElement("template");
+ // eslint-disable-next-line no-unsanitized/property
panelTemplate.innerHTML = `
-
+
-
+
-
+
`;
diff --git a/src/editor/extensions/ext-star/locale/en.js b/src/editor/extensions/ext-star/locale/en.js
index da9d857c..080cc46c 100644
--- a/src/editor/extensions/ext-star/locale/en.js
+++ b/src/editor/extensions/ext-star/locale/en.js
@@ -1,5 +1,6 @@
export default {
name: 'star',
+ title: 'Polygone/Star Tool',
buttons: [
{
title: 'Star Tool'
diff --git a/src/editor/extensions/ext-star/locale/fr.js b/src/editor/extensions/ext-star/locale/fr.js
new file mode 100644
index 00000000..0526905b
--- /dev/null
+++ b/src/editor/extensions/ext-star/locale/fr.js
@@ -0,0 +1,23 @@
+export default {
+ name: 'etoile',
+ title: 'Outil Polygone/Etoile',
+ buttons: [
+ {
+ title: 'Outil Etoile'
+ }
+ ],
+ contextTools: [
+ {
+ title: 'Nombre de côtés',
+ label: 'points'
+ },
+ {
+ title: 'Précision',
+ label: 'Précision'
+ },
+ {
+ title: 'Torsion Etoile',
+ label: 'Décalage Radial'
+ }
+ ]
+};
diff --git a/src/editor/extensions/ext-star/locale/zh-CN.js b/src/editor/extensions/ext-star/locale/zh-CN.js
index d9ee06da..0d7b256d 100755
--- a/src/editor/extensions/ext-star/locale/zh-CN.js
+++ b/src/editor/extensions/ext-star/locale/zh-CN.js
@@ -1,5 +1,6 @@
export default {
name: '星形',
+ title: 'Polygone/Star Tool',
buttons: [
{
title: '星形工具'
diff --git a/src/editor/locale.js b/src/editor/locale.js
index 7c0976a9..b7a12d6f 100644
--- a/src/editor/locale.js
+++ b/src/editor/locale.js
@@ -86,3 +86,18 @@ export const putLocale = async function (givenParam, goodLangs) {
console.log(`Lang: ${i18next.t('lang')}`);
return { langParam, i18next };
};
+
+export const loadExtensionTranslation = async function (svgEditor, name) {
+ let translationModule;
+ const lang = svgEditor.configObj.pref('lang');
+ try {
+ // eslint-disable-next-line no-unsanitized/method
+ translationModule = await import(`./extensions/ext-${name}/locale/${lang}.js`);
+ } catch (_error) {
+ // eslint-disable-next-line no-console
+ console.warn(`Missing translation (${lang}) for ${name} - using 'en'`);
+ // eslint-disable-next-line no-unsanitized/method
+ translationModule = await import(`./extensions/ext-${name}/locale/en.js`);
+ }
+ svgEditor.i18next.addResourceBundle(lang, name, translationModule.default);
+};
From 8b82f1b4d5f871f759d1a2dc40643a1bac5d6e43 Mon Sep 17 00:00:00 2001
From: JFH <20402845+jfhenon@users.noreply.github.com>
Date: Fri, 14 May 2021 23:28:12 +0200
Subject: [PATCH 12/17] add more linter warnings
---
.eslintrc.js | 12 +++++++++---
src/editor/MainMenu.js | 2 +-
src/editor/components/jgraduate/Util.js | 2 +-
.../ext-overview_window/ext-overview_window.js | 2 +-
src/editor/extensions/ext-polygon/ext-polygon.js | 8 ++++----
src/editor/panels/LayersPanel.js | 12 ++++++------
src/editor/panels/LeftPanel.js | 2 +-
src/editor/panels/TopPanel.js | 8 ++++----
web-dev-server.config.mjs | 4 ++--
9 files changed, 29 insertions(+), 23 deletions(-)
diff --git a/.eslintrc.js b/.eslintrc.js
index ed2edc3a..48ad8a17 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -30,6 +30,14 @@ module.exports = {
"array-bracket-spacing": [ "error", "always" ],
"comma-spacing": "error",
"object-curly-spacing": [ "error", "always" ],
+ "valid-jsdoc": "warn",
+ "no-console": [
+ "warn",
+ { "allow": [ "warn", "error", "info", "table" ] }
+ ],
+ "no-param-reassign": [ "warn", { "props": false } ],
+ "max-len": [ "warn", { "code": 150 } ],
+ "arrow-parens": [ "error", "always" ],
},
overrides: [
{
@@ -41,9 +49,7 @@ module.exports = {
mocha: true,
node: true
},
- globals: {
- "assert": true
- },
+ globals: { "assert": true },
rules: {
// with ci, instrumented is not created before linter
"import/no-unresolved": [ 2, { ignore: [ 'instrumented' ] } ],
diff --git a/src/editor/MainMenu.js b/src/editor/MainMenu.js
index 644bc216..11f3581a 100644
--- a/src/editor/MainMenu.js
+++ b/src/editor/MainMenu.js
@@ -331,7 +331,7 @@ class MainMenu {
*/
$id("tool_clear").addEventListener("click", this.clickClear.bind(this));
- $id("tool_open").addEventListener("click", e => {
+ $id("tool_open").addEventListener("click", (e) => {
e.preventDefault();
this.clickOpen();
window.dispatchEvent(new CustomEvent("openImage"));
diff --git a/src/editor/components/jgraduate/Util.js b/src/editor/components/jgraduate/Util.js
index 05001789..ff29c194 100644
--- a/src/editor/components/jgraduate/Util.js
+++ b/src/editor/components/jgraduate/Util.js
@@ -23,7 +23,7 @@ export function isObject(item) {
export function mergeDeep(target, source) {
let output = Object.assign({}, target);
if (isObject(target) && isObject(source)) {
- Object.keys(source).forEach(key => {
+ Object.keys(source).forEach((key) => {
if (isObject(source[key])) {
if (!(key in target))
Object.assign(output, { [key]: source[key] });
diff --git a/src/editor/extensions/ext-overview_window/ext-overview_window.js b/src/editor/extensions/ext-overview_window/ext-overview_window.js
index b6e3d93e..7ae87b0f 100644
--- a/src/editor/extensions/ext-overview_window/ext-overview_window.js
+++ b/src/editor/extensions/ext-overview_window/ext-overview_window.js
@@ -136,7 +136,7 @@ export default {
const parentElem = document.querySelector("#overviewMiniView");
dragmove(dragElem, dragElem, parentElem, onStart, onEnd, onDrag);
- $id("overviewMiniView").addEventListener("click", evt => {
+ $id("overviewMiniView").addEventListener("click", (evt) => {
// Firefox doesn't support evt.offsetX and evt.offsetY.
const mouseX = (evt.offsetX || evt.originalEvent.layerX);
const mouseY = (evt.offsetY || evt.originalEvent.layerY);
diff --git a/src/editor/extensions/ext-polygon/ext-polygon.js b/src/editor/extensions/ext-polygon/ext-polygon.js
index a662e926..11b47f2d 100644
--- a/src/editor/extensions/ext-polygon/ext-polygon.js
+++ b/src/editor/extensions/ext-polygon/ext-polygon.js
@@ -25,7 +25,7 @@ export default {
* @param {boolean} on
* @returns {void}
*/
- const showPanel = on => {
+ const showPanel = (on) => {
$id("polygon_panel").style.display = on ? "block" : "none";
};
@@ -43,13 +43,13 @@ export default {
* @param {Float} n
* @returns {Float}
*/
- const cot = n => 1 / Math.tan(n);
+ const cot = (n) => 1 / Math.tan(n);
/**
* @param {Float} n
* @returns {Float}
*/
- const sec = n => 1 / Math.cos(n);
+ const sec = (n) => 1 / Math.cos(n);
return {
name: svgEditor.i18next.t(`${name}:name`),
@@ -88,7 +88,7 @@ export default {
`;
$id("tools_top").appendChild(panelTemplate.content.cloneNode(true));
$id("polygon_panel").style.display = "none";
- $id("polySides").addEventListener("change", event => {
+ $id("polySides").addEventListener("change", (event) => {
setAttr("sides", event.target.value);
});
},
diff --git a/src/editor/panels/LayersPanel.js b/src/editor/panels/LayersPanel.js
index bc700d4c..22b5c02d 100644
--- a/src/editor/panels/LayersPanel.js
+++ b/src/editor/panels/LayersPanel.js
@@ -173,7 +173,7 @@ class LayersPanel {
"change",
this.lmenuFunc.bind(this)
);
- $id("se-cmenu-layers-list").addEventListener("change", e => {
+ $id("se-cmenu-layers-list").addEventListener("change", (e) => {
this.lmenuFunc(e);
});
$id("sidepanel_handle").addEventListener(
@@ -183,7 +183,7 @@ class LayersPanel {
if (this.editor.configObj.curConfig.showlayers) {
this.toggleSidePanel();
}
- $id("sidepanel_handle").addEventListener("mousedown", evt => {
+ $id("sidepanel_handle").addEventListener("mousedown", (evt) => {
this.sidedrag = evt.pageX;
window.addEventListener("mousemove", this.resizeSidePanel.bind(this));
this.allowmove = false;
@@ -192,14 +192,14 @@ class LayersPanel {
this.allowmove = true;
}, 20);
});
- $id("sidepanel_handle").addEventListener("mouseup", _evt => {
+ $id("sidepanel_handle").addEventListener("mouseup", (_evt) => {
if (!this.sidedragging) {
this.toggleSidePanel();
}
this.sidedrag = -1;
this.sidedragging = false;
});
- window.addEventListener("mouseup", _evt => {
+ window.addEventListener("mouseup", (_evt) => {
this.sidedrag = -1;
this.sidedragging = false;
$id("svg_editor").removeEventListener(
@@ -353,7 +353,7 @@ class LayersPanel {
}
if (layerNameToHighlight) {
- curNames.forEach(curName => {
+ curNames.forEach((curName) => {
if (curName !== layerNameToHighlight) {
this.editor.svgCanvas
.getCurrentDrawing()
@@ -361,7 +361,7 @@ class LayersPanel {
}
});
} else {
- curNames.forEach(curName => {
+ curNames.forEach((curName) => {
this.editor.svgCanvas.getCurrentDrawing().setLayerOpacity(curName, 1.0);
});
}
diff --git a/src/editor/panels/LeftPanel.js b/src/editor/panels/LeftPanel.js
index 600c9157..88c5a122 100644
--- a/src/editor/panels/LeftPanel.js
+++ b/src/editor/panels/LeftPanel.js
@@ -28,7 +28,7 @@ class LeftPanel {
updateLeftPanel(button) {
if (button.disabled) return false;
// remove the pressed state on other(s) button(s)
- $qa("#tools_left *[pressed]").forEach(b => {
+ $qa("#tools_left *[pressed]").forEach((b) => {
b.pressed = false;
});
// pressed state for the clicked button
diff --git a/src/editor/panels/TopPanel.js b/src/editor/panels/TopPanel.js
index 39a07dbb..ac7f5e6f 100644
--- a/src/editor/panels/TopPanel.js
+++ b/src/editor/panels/TopPanel.js
@@ -152,7 +152,7 @@ class TopPanel {
* @returns {void}
*/
updateContextPanel() {
- const setInputWidth = elem => {
+ const setInputWidth = (elem) => {
const w = Math.min(Math.max(12 + elem.value.length * 6, 50), 300);
elem.style.width = w + 'px';
};
@@ -313,7 +313,7 @@ class TopPanel {
const curPanel = panels[tagName];
$id(tagName + "_panel").style.display = 'block';
- curPanel.forEach(item => {
+ curPanel.forEach((item) => {
let attrVal = elem.getAttribute(item);
if (this.editor.configObj.curConfig.baseUnit !== "px" && elem[item]) {
const bv = elem[item].baseVal.value;
@@ -1040,7 +1040,7 @@ class TopPanel {
"click",
this.clickGroup.bind(this)
);
- $id("tool_position").addEventListener("change", evt =>
+ $id("tool_position").addEventListener("change", (evt) =>
this.clickAlignEle.bind(this)(evt)
);
$id("tool_align_left").addEventListener("click", () =>
@@ -1130,7 +1130,7 @@ class TopPanel {
"image_height",
"path_node_x",
"path_node_y"
- ].forEach(attrId =>
+ ].forEach((attrId) =>
$id(attrId).addEventListener("change", this.attrChanger.bind(this))
);
}
diff --git a/web-dev-server.config.mjs b/web-dev-server.config.mjs
index 344e8d7c..5e97b828 100644
--- a/web-dev-server.config.mjs
+++ b/web-dev-server.config.mjs
@@ -1,4 +1,4 @@
-import {fromRollup} from '@web/dev-server-rollup';
+import { fromRollup } from '@web/dev-server-rollup';
// eslint-disable-next-line node/no-unpublished-import
import rollupCommonjs from '@rollup/plugin-commonjs';
@@ -7,7 +7,7 @@ const commonjs = fromRollup(rollupCommonjs);
export default {
plugins: [
commonjs({
- exclude: ['src', 'dist', 'instrumented']
+ exclude: [ 'src', 'dist', 'instrumented' ]
})
]
};
From d7b8ac58463d66238eb93d263e658369f178b65c Mon Sep 17 00:00:00 2001
From: JFH <20402845+jfhenon@users.noreply.github.com>
Date: Sat, 15 May 2021 00:23:53 +0200
Subject: [PATCH 13/17] upg
---
package-lock.json | 1468 +++++++++++++++++++++++----------------
package.json | 18 +-
src/editor/ConfigObj.js | 2 +-
3 files changed, 868 insertions(+), 620 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 6eea45a8..d8023e05 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -22,8 +22,8 @@
"svg2pdf.js": "2.1.0"
},
"devDependencies": {
- "@babel/core": "7.14.0",
- "@babel/preset-env": "7.14.1",
+ "@babel/core": "7.14.2",
+ "@babel/preset-env": "7.14.2",
"@babel/register": "7.13.16",
"@babel/runtime-corejs3": "7.14.0",
"@cypress/code-coverage": "3.9.5",
@@ -45,7 +45,7 @@
"coveradge": "0.6.0",
"cp-cli": "2.0.0",
"cross-var": "1.1.0",
- "cypress": "7.2.0",
+ "cypress": "7.3.0",
"cypress-axe": "0.12.2",
"cypress-multi-reporters": "1.5.0",
"cypress-plugin-snapshots": "1.4.4",
@@ -54,13 +54,13 @@
"eslint-plugin-array-func": "3.1.7",
"eslint-plugin-chai-expect": "2.2.0",
"eslint-plugin-chai-expect-keywords": "2.1.0",
- "eslint-plugin-chai-friendly": "0.6.0",
+ "eslint-plugin-chai-friendly": "0.7.1",
"eslint-plugin-compat": "^3.9.0",
"eslint-plugin-cypress": "2.11.3",
"eslint-plugin-eslint-comments": "3.2.0",
"eslint-plugin-html": "^6.1.2",
- "eslint-plugin-import": "^2.22.1",
- "eslint-plugin-jsdoc": "^33.1.1",
+ "eslint-plugin-import": "2.23.0",
+ "eslint-plugin-jsdoc": "34.2.2",
"eslint-plugin-markdown": "^2.1.0",
"eslint-plugin-mocha": "8.1.0",
"eslint-plugin-mocha-cleanup": "1.9.1",
@@ -70,7 +70,7 @@
"eslint-plugin-promise": "^5.1.0",
"eslint-plugin-sonarjs": "^0.7.0",
"eslint-plugin-standard": "4.1.0",
- "eslint-plugin-unicorn": "32.0.0",
+ "eslint-plugin-unicorn": "32.0.1",
"imageoptim-cli": "3.0.2",
"jamilih": "0.54.0",
"jsdoc": "3.6.6",
@@ -98,8 +98,8 @@
"rollup-plugin-re": "1.0.7",
"rollup-plugin-terser": "7.0.2",
"stackblur-canvas": "2.5.0",
- "start-server-and-test": "^1.12.1",
- "systemjs": "6.8.3",
+ "start-server-and-test": "^1.12.2",
+ "systemjs": "6.9.0",
"typescript": "4.2.4",
"underscore": "1.13.1"
},
@@ -123,20 +123,20 @@
"dev": true
},
"node_modules/@babel/core": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.0.tgz",
- "integrity": "sha512-8YqpRig5NmIHlMLw09zMlPTvUVMILjqCOtVgu+TVNWEBvy9b5I3RRyhqnrV4hjgEK7n8P9OqvkWJAFmEL6Wwfw==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.2.tgz",
+ "integrity": "sha512-OgC1mON+l4U4B4wiohJlQNUU3H73mpTyYY3j/c8U9dr9UagGGSm+WFpzjy/YLdoyjiG++c1kIDgxCo/mLwQJeQ==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.12.13",
- "@babel/generator": "^7.14.0",
+ "@babel/generator": "^7.14.2",
"@babel/helper-compilation-targets": "^7.13.16",
- "@babel/helper-module-transforms": "^7.14.0",
+ "@babel/helper-module-transforms": "^7.14.2",
"@babel/helpers": "^7.14.0",
- "@babel/parser": "^7.14.0",
+ "@babel/parser": "^7.14.2",
"@babel/template": "^7.12.13",
- "@babel/traverse": "^7.14.0",
- "@babel/types": "^7.14.0",
+ "@babel/traverse": "^7.14.2",
+ "@babel/types": "^7.14.2",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -203,12 +203,12 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.0.tgz",
- "integrity": "sha512-C6u00HbmsrNPug6A+CiNl8rEys7TsdcXwg12BHi2ca5rUfAs3+UwZsuDQSXnc+wCElCXMB8gMaJ3YXDdh8fAlg==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.2.tgz",
+ "integrity": "sha512-OnADYbKrffDVai5qcpkMxQ7caomHOoEwjkouqnN2QhydAjowFAZcsdecFIRUBdb+ZcruwYE4ythYmF1UBZU5xQ==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.14.0",
+ "@babel/types": "^7.14.2",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
}
@@ -284,17 +284,6 @@
"regexpu-core": "^4.7.0"
}
},
- "node_modules/@babel/helper-define-map": {
- "version": "7.10.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz",
- "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-function-name": "^7.10.4",
- "@babel/types": "^7.10.5",
- "lodash": "^4.17.19"
- }
- },
"node_modules/@babel/helper-define-polyfill-provider": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz",
@@ -357,14 +346,14 @@
}
},
"node_modules/@babel/helper-function-name": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz",
- "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz",
+ "integrity": "sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ==",
"dev": true,
"dependencies": {
"@babel/helper-get-function-arity": "^7.12.13",
"@babel/template": "^7.12.13",
- "@babel/types": "^7.12.13"
+ "@babel/types": "^7.14.2"
}
},
"node_modules/@babel/helper-get-function-arity": {
@@ -405,9 +394,9 @@
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz",
- "integrity": "sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz",
+ "integrity": "sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA==",
"dev": true,
"dependencies": {
"@babel/helper-module-imports": "^7.13.12",
@@ -416,8 +405,8 @@
"@babel/helper-split-export-declaration": "^7.12.13",
"@babel/helper-validator-identifier": "^7.14.0",
"@babel/template": "^7.12.13",
- "@babel/traverse": "^7.14.0",
- "@babel/types": "^7.14.0"
+ "@babel/traverse": "^7.14.2",
+ "@babel/types": "^7.14.2"
}
},
"node_modules/@babel/helper-optimise-call-expression": {
@@ -541,9 +530,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.0.tgz",
- "integrity": "sha512-AHbfoxesfBALg33idaTBVUkLnfXtsgvJREf93p4p0Lwsz4ppfE7g1tpEXVm4vrxUcH4DVhAa9Z1m1zqf9WUC7Q==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.2.tgz",
+ "integrity": "sha512-IoVDIHpsgE/fu7eXBeRWt8zLbDrSvD7H1gpomOkPpBoEN8KCruCqSDdqo8dddwQQrui30KSvQBaMUOJiuFu6QQ==",
"dev": true,
"bin": {
"parser": "bin/babel-parser.js"
@@ -567,9 +556,9 @@
}
},
"node_modules/@babel/plugin-proposal-async-generator-functions": {
- "version": "7.13.15",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz",
- "integrity": "sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.2.tgz",
+ "integrity": "sha512-b1AM4F6fwck4N8ItZ/AtC4FP/cqZqmKRQ4FaTDutwSYyjuhtvsGEMLK4N/ztV/ImP40BjIDyMgBQAeAMsQYVFQ==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.13.0",
@@ -604,92 +593,116 @@
}
},
"node_modules/@babel/plugin-proposal-dynamic-import": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz",
- "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.2.tgz",
+ "integrity": "sha512-oxVQZIWFh91vuNEMKltqNsKLFWkOIyJc95k2Gv9lWVyDfPUQGSSlbDEgWuJUU1afGE9WwlzpucMZ3yDRHIItkA==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.13.0",
"@babel/plugin-syntax-dynamic-import": "^7.8.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-proposal-export-namespace-from": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz",
- "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.2.tgz",
+ "integrity": "sha512-sRxW3z3Zp3pFfLAgVEvzTFutTXax837oOatUIvSG9o5gRj9mKwm3br1Se5f4QalTQs9x4AzlA/HrCWbQIHASUQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.12.13",
+ "@babel/helper-plugin-utils": "^7.13.0",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-proposal-json-strings": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz",
- "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.2.tgz",
+ "integrity": "sha512-w2DtsfXBBJddJacXMBhElGEYqCZQqN99Se1qeYn8DVLB33owlrlLftIbMzn5nz1OITfDVknXF433tBrLEAOEjA==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.13.0",
"@babel/plugin-syntax-json-strings": "^7.8.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-proposal-logical-assignment-operators": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz",
- "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.2.tgz",
+ "integrity": "sha512-1JAZtUrqYyGsS7IDmFeaem+/LJqujfLZ2weLR9ugB0ufUPjzf8cguyVT1g5im7f7RXxuLq1xUxEzvm68uYRtGg==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.13.0",
"@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-proposal-nullish-coalescing-operator": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz",
- "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.2.tgz",
+ "integrity": "sha512-ebR0zU9OvI2N4qiAC38KIAK75KItpIPTpAtd2r4OZmMFeKbKJpUFLYP2EuDut82+BmYi8sz42B+TfTptJ9iG5Q==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.13.0",
"@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-proposal-numeric-separator": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz",
- "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.2.tgz",
+ "integrity": "sha512-DcTQY9syxu9BpU3Uo94fjCB3LN9/hgPS8oUL7KrSW3bA2ePrKZZPJcc5y0hoJAM9dft3pGfErtEUvxXQcfLxUg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.12.13",
+ "@babel/helper-plugin-utils": "^7.13.0",
"@babel/plugin-syntax-numeric-separator": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-proposal-object-rest-spread": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz",
- "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.2.tgz",
+ "integrity": "sha512-hBIQFxwZi8GIp934+nj5uV31mqclC1aYDhctDu5khTi9PCCUOczyy0b34W0oE9U/eJXiqQaKyVsmjeagOaSlbw==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.13.8",
- "@babel/helper-compilation-targets": "^7.13.8",
+ "@babel/compat-data": "^7.14.0",
+ "@babel/helper-compilation-targets": "^7.13.16",
"@babel/helper-plugin-utils": "^7.13.0",
"@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.13.0"
+ "@babel/plugin-transform-parameters": "^7.14.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-proposal-optional-catch-binding": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz",
- "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.2.tgz",
+ "integrity": "sha512-XtkJsmJtBaUbOxZsNk0Fvrv8eiqgneug0A6aqLFZ4TSkar2L5dSXWcnUKHgmjJt49pyB/6ZHvkr3dPgl9MOWRQ==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.13.0",
"@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-proposal-optional-chaining": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz",
- "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.2.tgz",
+ "integrity": "sha512-qQByMRPwMZJainfig10BoaDldx/+VDtNcrA7qdNaEOAj6VXud+gfrkA8j4CRAU5HjnWREXqIpSpH30qZX1xivA==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.13.0",
@@ -775,6 +788,9 @@
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-syntax-export-namespace-from": {
@@ -784,6 +800,9 @@
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-syntax-json-strings": {
@@ -811,6 +830,9 @@
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
@@ -820,6 +842,9 @@
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-syntax-numeric-separator": {
@@ -829,6 +854,9 @@
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-syntax-object-rest-spread": {
@@ -912,9 +940,9 @@
}
},
"node_modules/@babel/plugin-transform-block-scoping": {
- "version": "7.14.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.1.tgz",
- "integrity": "sha512-2mQXd0zBrwfp0O1moWIhPpEeTKDvxyHcnma3JATVP1l+CctWBuot6OJG8LQ4DnBj4ZZPSmlb/fm4mu47EOAnVA==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.2.tgz",
+ "integrity": "sha512-neZZcP19NugZZqNwMTH+KoBjx5WyvESPSIOQb4JHpfd+zPfqcH65RMu5xJju5+6q/Y2VzYrleQTr+b6METyyxg==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.13.0"
@@ -924,19 +952,21 @@
}
},
"node_modules/@babel/plugin-transform-classes": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz",
- "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.2.tgz",
+ "integrity": "sha512-7oafAVcucHquA/VZCsXv/gmuiHeYd64UJyyTYU+MPfNu0KeNlxw06IeENBO8bJjXVbolu+j1MM5aKQtH1OMCNg==",
"dev": true,
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.10.4",
- "@babel/helper-define-map": "^7.10.4",
- "@babel/helper-function-name": "^7.10.4",
- "@babel/helper-optimise-call-expression": "^7.10.4",
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/helper-replace-supers": "^7.12.1",
- "@babel/helper-split-export-declaration": "^7.10.4",
+ "@babel/helper-annotate-as-pure": "^7.12.13",
+ "@babel/helper-function-name": "^7.14.2",
+ "@babel/helper-optimise-call-expression": "^7.12.13",
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/helper-replace-supers": "^7.13.12",
+ "@babel/helper-split-export-declaration": "^7.12.13",
"globals": "^11.1.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-transform-computed-properties": {
@@ -1027,12 +1057,12 @@
}
},
"node_modules/@babel/plugin-transform-modules-amd": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.0.tgz",
- "integrity": "sha512-CF4c5LX4LQ03LebQxJ5JZes2OYjzBuk1TdiF7cG7d5dK4lAdw9NZmaxq5K/mouUdNeqwz3TNjnW6v01UqUNgpQ==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.2.tgz",
+ "integrity": "sha512-hPC6XBswt8P3G2D1tSV2HzdKvkqOpmbyoy+g73JG0qlF/qx2y3KaMmXb1fLrpmWGLZYA0ojCvaHdzFWjlmV+Pw==",
"dev": true,
"dependencies": {
- "@babel/helper-module-transforms": "^7.14.0",
+ "@babel/helper-module-transforms": "^7.14.2",
"@babel/helper-plugin-utils": "^7.13.0",
"babel-plugin-dynamic-import-node": "^2.3.3"
},
@@ -1137,12 +1167,15 @@
}
},
"node_modules/@babel/plugin-transform-parameters": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz",
- "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.2.tgz",
+ "integrity": "sha512-NxoVmA3APNCC1JdMXkdYXuQS+EMdqy0vIwyDHeKHiJKRxmp1qGSdb0JLEIoPRhkx6H/8Qi3RJ3uqOCYw8giy9A==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.13.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-transform-property-literals": {
@@ -1334,9 +1367,9 @@
"integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg=="
},
"node_modules/@babel/preset-env": {
- "version": "7.14.1",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.1.tgz",
- "integrity": "sha512-0M4yL1l7V4l+j/UHvxcdvNfLB9pPtIooHTbEhgD/6UGyh8Hy3Bm1Mj0buzjDXATCSz3JFibVdnoJZCrlUCanrQ==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.2.tgz",
+ "integrity": "sha512-7dD7lVT8GMrE73v4lvDEb85cgcQhdES91BSD7jS/xjC6QY8PnRhux35ac+GCpbiRhp8crexBvZZqnaL6VrY8TQ==",
"dev": true,
"dependencies": {
"@babel/compat-data": "^7.14.0",
@@ -1344,18 +1377,18 @@
"@babel/helper-plugin-utils": "^7.13.0",
"@babel/helper-validator-option": "^7.12.17",
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12",
- "@babel/plugin-proposal-async-generator-functions": "^7.13.15",
+ "@babel/plugin-proposal-async-generator-functions": "^7.14.2",
"@babel/plugin-proposal-class-properties": "^7.13.0",
"@babel/plugin-proposal-class-static-block": "^7.13.11",
- "@babel/plugin-proposal-dynamic-import": "^7.13.8",
- "@babel/plugin-proposal-export-namespace-from": "^7.12.13",
- "@babel/plugin-proposal-json-strings": "^7.13.8",
- "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8",
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8",
- "@babel/plugin-proposal-numeric-separator": "^7.12.13",
- "@babel/plugin-proposal-object-rest-spread": "^7.13.8",
- "@babel/plugin-proposal-optional-catch-binding": "^7.13.8",
- "@babel/plugin-proposal-optional-chaining": "^7.13.12",
+ "@babel/plugin-proposal-dynamic-import": "^7.14.2",
+ "@babel/plugin-proposal-export-namespace-from": "^7.14.2",
+ "@babel/plugin-proposal-json-strings": "^7.14.2",
+ "@babel/plugin-proposal-logical-assignment-operators": "^7.14.2",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.2",
+ "@babel/plugin-proposal-numeric-separator": "^7.14.2",
+ "@babel/plugin-proposal-object-rest-spread": "^7.14.2",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.14.2",
+ "@babel/plugin-proposal-optional-chaining": "^7.14.2",
"@babel/plugin-proposal-private-methods": "^7.13.0",
"@babel/plugin-proposal-private-property-in-object": "^7.14.0",
"@babel/plugin-proposal-unicode-property-regex": "^7.12.13",
@@ -1376,8 +1409,8 @@
"@babel/plugin-transform-arrow-functions": "^7.13.0",
"@babel/plugin-transform-async-to-generator": "^7.13.0",
"@babel/plugin-transform-block-scoped-functions": "^7.12.13",
- "@babel/plugin-transform-block-scoping": "^7.14.1",
- "@babel/plugin-transform-classes": "^7.13.0",
+ "@babel/plugin-transform-block-scoping": "^7.14.2",
+ "@babel/plugin-transform-classes": "^7.14.2",
"@babel/plugin-transform-computed-properties": "^7.13.0",
"@babel/plugin-transform-destructuring": "^7.13.17",
"@babel/plugin-transform-dotall-regex": "^7.12.13",
@@ -1387,14 +1420,14 @@
"@babel/plugin-transform-function-name": "^7.12.13",
"@babel/plugin-transform-literals": "^7.12.13",
"@babel/plugin-transform-member-expression-literals": "^7.12.13",
- "@babel/plugin-transform-modules-amd": "^7.14.0",
+ "@babel/plugin-transform-modules-amd": "^7.14.2",
"@babel/plugin-transform-modules-commonjs": "^7.14.0",
"@babel/plugin-transform-modules-systemjs": "^7.13.8",
"@babel/plugin-transform-modules-umd": "^7.14.0",
"@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13",
"@babel/plugin-transform-new-target": "^7.12.13",
"@babel/plugin-transform-object-super": "^7.12.13",
- "@babel/plugin-transform-parameters": "^7.13.0",
+ "@babel/plugin-transform-parameters": "^7.14.2",
"@babel/plugin-transform-property-literals": "^7.12.13",
"@babel/plugin-transform-regenerator": "^7.13.15",
"@babel/plugin-transform-reserved-words": "^7.12.13",
@@ -1406,7 +1439,7 @@
"@babel/plugin-transform-unicode-escapes": "^7.12.13",
"@babel/plugin-transform-unicode-regex": "^7.12.13",
"@babel/preset-modules": "^0.1.4",
- "@babel/types": "^7.14.1",
+ "@babel/types": "^7.14.2",
"babel-plugin-polyfill-corejs2": "^0.2.0",
"babel-plugin-polyfill-corejs3": "^0.2.0",
"babel-plugin-polyfill-regenerator": "^0.2.0",
@@ -1488,21 +1521,6 @@
"@babel/helper-plugin-utils": "^7.12.13"
}
},
- "node_modules/@babel/preset-env/node_modules/@babel/plugin-transform-classes": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz",
- "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==",
- "dev": true,
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.12.13",
- "@babel/helper-function-name": "^7.12.13",
- "@babel/helper-optimise-call-expression": "^7.12.13",
- "@babel/helper-plugin-utils": "^7.13.0",
- "@babel/helper-replace-supers": "^7.13.0",
- "@babel/helper-split-export-declaration": "^7.12.13",
- "globals": "^11.1.0"
- }
- },
"node_modules/@babel/preset-env/node_modules/@babel/plugin-transform-computed-properties": {
"version": "7.13.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz",
@@ -1777,17 +1795,17 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz",
- "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.2.tgz",
+ "integrity": "sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.12.13",
- "@babel/generator": "^7.14.0",
- "@babel/helper-function-name": "^7.12.13",
+ "@babel/generator": "^7.14.2",
+ "@babel/helper-function-name": "^7.14.2",
"@babel/helper-split-export-declaration": "^7.12.13",
- "@babel/parser": "^7.14.0",
- "@babel/types": "^7.14.0",
+ "@babel/parser": "^7.14.2",
+ "@babel/types": "^7.14.2",
"debug": "^4.1.0",
"globals": "^11.1.0"
}
@@ -1808,9 +1826,9 @@
"dev": true
},
"node_modules/@babel/types": {
- "version": "7.14.1",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz",
- "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.2.tgz",
+ "integrity": "sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw==",
"dev": true,
"dependencies": {
"@babel/helper-validator-identifier": "^7.14.0",
@@ -5007,17 +5025,22 @@
}
},
"node_modules/array-includes": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz",
- "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==",
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz",
+ "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==",
"dev": true,
"dependencies": {
+ "call-bind": "^1.0.2",
"define-properties": "^1.1.3",
- "es-abstract": "^1.17.0",
+ "es-abstract": "^1.18.0-next.2",
+ "get-intrinsic": "^1.1.1",
"is-string": "^1.0.5"
},
"engines": {
"node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/array-union": {
@@ -5039,16 +5062,20 @@
}
},
"node_modules/array.prototype.flat": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz",
- "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==",
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz",
+ "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==",
"dev": true,
"dependencies": {
+ "call-bind": "^1.0.0",
"define-properties": "^1.1.3",
- "es-abstract": "^1.17.0-next.1"
+ "es-abstract": "^1.18.0-next.1"
},
"engines": {
"node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/arraybuffer.slice": {
@@ -7854,10 +7881,26 @@
"dev": true
},
"node_modules/contains-path": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
- "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-1.0.0.tgz",
+ "integrity": "sha1-NFizMhhWA+ju0Y9RjUoQiIo6vJE=",
"dev": true,
+ "dependencies": {
+ "normalize-path": "^2.1.1",
+ "path-starts-with": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/contains-path/node_modules/normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "dependencies": {
+ "remove-trailing-separator": "^1.0.1"
+ },
"engines": {
"node": ">=0.10.0"
}
@@ -8632,9 +8675,9 @@
"dev": true
},
"node_modules/cypress": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/cypress/-/cypress-7.2.0.tgz",
- "integrity": "sha512-lHHGay+YsffDn4M0bkkwezylBVHUpwwhtqte4LNPrFRCHy77X38+1PUe3neFb3glVTM+rbILtTN6FhO2djcOuQ==",
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/cypress/-/cypress-7.3.0.tgz",
+ "integrity": "sha512-aseRCH1tRVCrM6oEfja6fR/bo5l6e4SkHRRSATh27UeN4f/ANC8U7tGIulmrISJVy9xuOkOdbYKbUb2MNM+nrw==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
@@ -9993,18 +10036,27 @@
}
},
"node_modules/eslint-module-utils": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz",
- "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==",
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz",
+ "integrity": "sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A==",
"dev": true,
"dependencies": {
- "debug": "^2.6.9",
+ "debug": "^3.2.7",
"pkg-dir": "^2.0.0"
},
"engines": {
"node": ">=4"
}
},
+ "node_modules/eslint-module-utils/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
"node_modules/eslint-module-utils/node_modules/find-up": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
@@ -10030,6 +10082,12 @@
"node": ">=4"
}
},
+ "node_modules/eslint-module-utils/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
"node_modules/eslint-module-utils/node_modules/p-limit": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
@@ -10103,12 +10161,15 @@
}
},
"node_modules/eslint-plugin-chai-friendly": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-chai-friendly/-/eslint-plugin-chai-friendly-0.6.0.tgz",
- "integrity": "sha512-Uvvv1gkbRGp/qfN15B0kQyQWg+oFA8buDSqrwmW3egNSk/FpqH2MjQqKOuKwmEL6w4QIQrIjDp+gg6kGGmD3oQ==",
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-chai-friendly/-/eslint-plugin-chai-friendly-0.7.1.tgz",
+ "integrity": "sha512-0xhGiSQ+9oWtNc6IZPUR+6ChKbEvLXwT9oZZ5NcGlPzHVKGn1YKwQFj7a9yL3rnRKbWF7b3RkRYEP8kN6dPOwQ==",
"dev": true,
"engines": {
"node": ">=0.10.0"
+ },
+ "peerDependencies": {
+ "eslint": ">=3.0.0"
}
},
"node_modules/eslint-plugin-compat": {
@@ -10260,46 +10321,109 @@
}
},
"node_modules/eslint-plugin-import": {
- "version": "2.22.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz",
- "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==",
+ "version": "2.23.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.0.tgz",
+ "integrity": "sha512-W5v1f7Cbam6BwbSSKtN6+yoUAms07ozbqAEhLOtf5erEqRv7w67PeZuAuBThaUkzdq2GfBx/5GBvxF+NWJshrQ==",
"dev": true,
"dependencies": {
- "array-includes": "^3.1.1",
- "array.prototype.flat": "^1.2.3",
- "contains-path": "^0.1.0",
+ "array-includes": "^3.1.3",
+ "array.prototype.flat": "^1.2.4",
+ "contains-path": "^1.0.0",
"debug": "^2.6.9",
- "doctrine": "1.5.0",
+ "doctrine": "^2.1.0",
"eslint-import-resolver-node": "^0.3.4",
- "eslint-module-utils": "^2.6.0",
+ "eslint-module-utils": "^2.6.1",
+ "find-up": "^2.0.0",
"has": "^1.0.3",
+ "is-core-module": "^2.4.0",
"minimatch": "^3.0.4",
- "object.values": "^1.1.1",
- "read-pkg-up": "^2.0.0",
- "resolve": "^1.17.0",
+ "object.values": "^1.1.3",
+ "pkg-up": "^2.0.0",
+ "read-pkg-up": "^3.0.0",
+ "resolve": "^1.20.0",
"tsconfig-paths": "^3.9.0"
},
"engines": {
"node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0"
}
},
"node_modules/eslint-plugin-import/node_modules/doctrine": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
- "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
"dev": true,
"dependencies": {
- "esutils": "^2.0.2",
- "isarray": "^1.0.0"
+ "esutils": "^2.0.2"
},
"engines": {
"node": ">=0.10.0"
}
},
+ "node_modules/eslint-plugin-import/node_modules/find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/eslint-plugin-jsdoc": {
- "version": "33.1.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-33.1.1.tgz",
- "integrity": "sha512-6Avc2czg/mh0zmuU3H4v2xTXOALl9OiMGpn55nBDydhU684cVgvn2VtXm1JgH+2TW5SxEDnX3o/FUgda7LgVYA==",
+ "version": "34.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-34.2.2.tgz",
+ "integrity": "sha512-9JCeUUZ2MefGd/Pl3blx9/EDjCd7/Z2+fcVBuJdNdvSLApRqZ8CwjGjLHf5s4uVikqF968A0CfnID0WK9B/H/w==",
"dev": true,
"dependencies": {
"@es-joy/jsdoccomment": "^0.4.4",
@@ -10313,7 +10437,7 @@
"spdx-expression-parse": "^3.0.1"
},
"engines": {
- "node": ">=10"
+ "node": ">=12"
},
"peerDependencies": {
"eslint": "^6.0.0 || ^7.0.0"
@@ -10577,9 +10701,9 @@
"dev": true
},
"node_modules/eslint-plugin-unicorn": {
- "version": "32.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-32.0.0.tgz",
- "integrity": "sha512-VYE/XvZvdcY0RvOKGxsrVVWo8DaI/tGVYuhKzSd6Uuy69Ydc8zX+roZ/H9PgyykM4nuj8JDoOHSwVk9a4OYbCQ==",
+ "version": "32.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-32.0.1.tgz",
+ "integrity": "sha512-LaZ9utnXtOJjnoDkpm+nQsONUUmyRR0WD6PGROSdQRRW3LRmgK/ZP8wxjW+Ai+2uolKTtuJzLx2mvbIeIoLqpg==",
"dev": true,
"dependencies": {
"ci-info": "^3.1.1",
@@ -13526,12 +13650,15 @@
}
},
"node_modules/is-core-module": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz",
- "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==",
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz",
+ "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==",
"dev": true,
"dependencies": {
"has": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-data-descriptor": {
@@ -15134,39 +15261,27 @@
}
},
"node_modules/load-json-file": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
- "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
"dev": true,
"dependencies": {
"graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
"strip-bom": "^3.0.0"
},
"engines": {
"node": ">=4"
}
},
- "node_modules/load-json-file/node_modules/parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
- "dev": true,
- "dependencies": {
- "error-ex": "^1.2.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/load-json-file/node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
"dev": true,
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
"node_modules/load-json-file/node_modules/strip-bom": {
@@ -17585,21 +17700,6 @@
"node": ">=4.8"
}
},
- "node_modules/npm-run-all/node_modules/load-json-file": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
- "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0",
- "strip-bom": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/npm-run-all/node_modules/path-key": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
@@ -17609,41 +17709,6 @@
"node": ">=4"
}
},
- "node_modules/npm-run-all/node_modules/path-type": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
- "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
- "dev": true,
- "dependencies": {
- "pify": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-run-all/node_modules/pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-run-all/node_modules/read-pkg": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
- "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
- "dev": true,
- "dependencies": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/npm-run-all/node_modules/shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
@@ -17665,15 +17730,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/npm-run-all/node_modules/strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/npm-run-all/node_modules/which": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
@@ -18048,18 +18104,21 @@
}
},
"node_modules/object.values": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz",
- "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz",
+ "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==",
"dev": true,
"dependencies": {
+ "call-bind": "^1.0.2",
"define-properties": "^1.1.3",
- "es-abstract": "^1.17.0-next.1",
- "function-bind": "^1.1.1",
+ "es-abstract": "^1.18.0-next.2",
"has": "^1.0.3"
},
"engines": {
"node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/omggif": {
@@ -18089,15 +18148,18 @@
}
},
"node_modules/onetime": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
- "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
"dev": true,
"dependencies": {
"mimic-fn": "^2.1.0"
},
"engines": {
"node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/only": {
@@ -18704,6 +18766,30 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/path-starts-with": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/path-starts-with/-/path-starts-with-1.0.0.tgz",
+ "integrity": "sha1-soJDAV6LE43lcmgqxS2kLmRq2E4=",
+ "dev": true,
+ "dependencies": {
+ "normalize-path": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/path-starts-with/node_modules/normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "dependencies": {
+ "remove-trailing-separator": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/path-type": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
@@ -18834,6 +18920,76 @@
"node": ">=6"
}
},
+ "node_modules/pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz",
+ "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pkg-up/node_modules/find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pkg-up/node_modules/locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pkg-up/node_modules/p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pkg-up/node_modules/p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pkg-up/node_modules/p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/pluralize": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
@@ -19256,27 +19412,27 @@
}
},
"node_modules/read-pkg": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
- "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
"dev": true,
"dependencies": {
- "load-json-file": "^2.0.0",
+ "load-json-file": "^4.0.0",
"normalize-package-data": "^2.3.2",
- "path-type": "^2.0.0"
+ "path-type": "^3.0.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/read-pkg-up": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
- "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
+ "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
"dev": true,
"dependencies": {
"find-up": "^2.0.0",
- "read-pkg": "^2.0.0"
+ "read-pkg": "^3.0.0"
},
"engines": {
"node": ">=4"
@@ -19341,24 +19497,24 @@
}
},
"node_modules/read-pkg/node_modules/path-type": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
- "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
"dev": true,
"dependencies": {
- "pify": "^2.0.0"
+ "pify": "^3.0.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/read-pkg/node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
"dev": true,
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
"node_modules/readable-stream": {
@@ -21276,15 +21432,15 @@
}
},
"node_modules/start-server-and-test": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-1.12.1.tgz",
- "integrity": "sha512-qGQ2HQiF2yDIfyaHsXkHfoE5UOl4zJUbJ/gx2xOkfX7iPMXW9qHmoFyaMfIDJVLNkxCK7RxSrvWEI9hNVKQluw==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-1.12.2.tgz",
+ "integrity": "sha512-rjJF8N/8XVukEYR44Ehm8LAZIDjWCQKXX54W8UQ8pXz3yDKPCdqTqJy7VYnCAknPw65cmLfPxz8M2+K/zCAvVQ==",
"dev": true,
"dependencies": {
"bluebird": "3.7.2",
"check-more-types": "2.24.0",
"debug": "4.3.1",
- "execa": "3.4.0",
+ "execa": "5.0.0",
"lazy-ass": "1.6.0",
"ps-tree": "1.2.0",
"wait-on": "5.3.0"
@@ -21322,24 +21478,47 @@
}
},
"node_modules/start-server-and-test/node_modules/execa": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz",
- "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz",
+ "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==",
"dev": true,
"dependencies": {
- "cross-spawn": "^7.0.0",
- "get-stream": "^5.0.0",
- "human-signals": "^1.1.1",
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
"is-stream": "^2.0.0",
"merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.0",
- "onetime": "^5.1.0",
- "p-finally": "^2.0.0",
- "signal-exit": "^3.0.2",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
"strip-final-newline": "^2.0.0"
},
"engines": {
- "node": "^8.12.0 || >=9.7.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/start-server-and-test/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/start-server-and-test/node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.17.0"
}
},
"node_modules/start-server-and-test/node_modules/ms": {
@@ -21348,15 +21527,6 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
- "node_modules/start-server-and-test/node_modules/p-finally": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz",
- "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/state-toggle": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz",
@@ -21721,9 +21891,9 @@
}
},
"node_modules/systemjs": {
- "version": "6.8.3",
- "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.8.3.tgz",
- "integrity": "sha512-UcTY+FEA1B7e+bpJk1TI+a9Na6LG7wFEqW7ED16cLqLuQfI/9Ri0rsXm3tKlIgNoHyLHZycjdAOijzNbzelgwA==",
+ "version": "6.9.0",
+ "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.9.0.tgz",
+ "integrity": "sha512-THLzcb7WzoW0I+tHB4PQge0BqqN+CAUQJ9gPc1MieqD1gnhxNUKYrhRlN5ov94saOYVVR5NZFQqQhnxi9/WEGg==",
"dev": true
},
"node_modules/table": {
@@ -24148,20 +24318,20 @@
"dev": true
},
"@babel/core": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.0.tgz",
- "integrity": "sha512-8YqpRig5NmIHlMLw09zMlPTvUVMILjqCOtVgu+TVNWEBvy9b5I3RRyhqnrV4hjgEK7n8P9OqvkWJAFmEL6Wwfw==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.2.tgz",
+ "integrity": "sha512-OgC1mON+l4U4B4wiohJlQNUU3H73mpTyYY3j/c8U9dr9UagGGSm+WFpzjy/YLdoyjiG++c1kIDgxCo/mLwQJeQ==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.12.13",
- "@babel/generator": "^7.14.0",
+ "@babel/generator": "^7.14.2",
"@babel/helper-compilation-targets": "^7.13.16",
- "@babel/helper-module-transforms": "^7.14.0",
+ "@babel/helper-module-transforms": "^7.14.2",
"@babel/helpers": "^7.14.0",
- "@babel/parser": "^7.14.0",
+ "@babel/parser": "^7.14.2",
"@babel/template": "^7.12.13",
- "@babel/traverse": "^7.14.0",
- "@babel/types": "^7.14.0",
+ "@babel/traverse": "^7.14.2",
+ "@babel/types": "^7.14.2",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -24213,12 +24383,12 @@
}
},
"@babel/generator": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.0.tgz",
- "integrity": "sha512-C6u00HbmsrNPug6A+CiNl8rEys7TsdcXwg12BHi2ca5rUfAs3+UwZsuDQSXnc+wCElCXMB8gMaJ3YXDdh8fAlg==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.2.tgz",
+ "integrity": "sha512-OnADYbKrffDVai5qcpkMxQ7caomHOoEwjkouqnN2QhydAjowFAZcsdecFIRUBdb+ZcruwYE4ythYmF1UBZU5xQ==",
"dev": true,
"requires": {
- "@babel/types": "^7.14.0",
+ "@babel/types": "^7.14.2",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
}
@@ -24287,17 +24457,6 @@
"regexpu-core": "^4.7.0"
}
},
- "@babel/helper-define-map": {
- "version": "7.10.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz",
- "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==",
- "dev": true,
- "requires": {
- "@babel/helper-function-name": "^7.10.4",
- "@babel/types": "^7.10.5",
- "lodash": "^4.17.19"
- }
- },
"@babel/helper-define-polyfill-provider": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz",
@@ -24348,14 +24507,14 @@
}
},
"@babel/helper-function-name": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz",
- "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz",
+ "integrity": "sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ==",
"dev": true,
"requires": {
"@babel/helper-get-function-arity": "^7.12.13",
"@babel/template": "^7.12.13",
- "@babel/types": "^7.12.13"
+ "@babel/types": "^7.14.2"
}
},
"@babel/helper-get-function-arity": {
@@ -24396,9 +24555,9 @@
}
},
"@babel/helper-module-transforms": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz",
- "integrity": "sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz",
+ "integrity": "sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA==",
"dev": true,
"requires": {
"@babel/helper-module-imports": "^7.13.12",
@@ -24407,8 +24566,8 @@
"@babel/helper-split-export-declaration": "^7.12.13",
"@babel/helper-validator-identifier": "^7.14.0",
"@babel/template": "^7.12.13",
- "@babel/traverse": "^7.14.0",
- "@babel/types": "^7.14.0"
+ "@babel/traverse": "^7.14.2",
+ "@babel/types": "^7.14.2"
}
},
"@babel/helper-optimise-call-expression": {
@@ -24532,9 +24691,9 @@
}
},
"@babel/parser": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.0.tgz",
- "integrity": "sha512-AHbfoxesfBALg33idaTBVUkLnfXtsgvJREf93p4p0Lwsz4ppfE7g1tpEXVm4vrxUcH4DVhAa9Z1m1zqf9WUC7Q==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.2.tgz",
+ "integrity": "sha512-IoVDIHpsgE/fu7eXBeRWt8zLbDrSvD7H1gpomOkPpBoEN8KCruCqSDdqo8dddwQQrui30KSvQBaMUOJiuFu6QQ==",
"dev": true
},
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
@@ -24549,9 +24708,9 @@
}
},
"@babel/plugin-proposal-async-generator-functions": {
- "version": "7.13.15",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz",
- "integrity": "sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.2.tgz",
+ "integrity": "sha512-b1AM4F6fwck4N8ItZ/AtC4FP/cqZqmKRQ4FaTDutwSYyjuhtvsGEMLK4N/ztV/ImP40BjIDyMgBQAeAMsQYVFQ==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.13.0",
@@ -24580,9 +24739,9 @@
}
},
"@babel/plugin-proposal-dynamic-import": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz",
- "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.2.tgz",
+ "integrity": "sha512-oxVQZIWFh91vuNEMKltqNsKLFWkOIyJc95k2Gv9lWVyDfPUQGSSlbDEgWuJUU1afGE9WwlzpucMZ3yDRHIItkA==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.13.0",
@@ -24590,19 +24749,19 @@
}
},
"@babel/plugin-proposal-export-namespace-from": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz",
- "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.2.tgz",
+ "integrity": "sha512-sRxW3z3Zp3pFfLAgVEvzTFutTXax837oOatUIvSG9o5gRj9mKwm3br1Se5f4QalTQs9x4AzlA/HrCWbQIHASUQ==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.12.13",
+ "@babel/helper-plugin-utils": "^7.13.0",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3"
}
},
"@babel/plugin-proposal-json-strings": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz",
- "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.2.tgz",
+ "integrity": "sha512-w2DtsfXBBJddJacXMBhElGEYqCZQqN99Se1qeYn8DVLB33owlrlLftIbMzn5nz1OITfDVknXF433tBrLEAOEjA==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.13.0",
@@ -24610,9 +24769,9 @@
}
},
"@babel/plugin-proposal-logical-assignment-operators": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz",
- "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.2.tgz",
+ "integrity": "sha512-1JAZtUrqYyGsS7IDmFeaem+/LJqujfLZ2weLR9ugB0ufUPjzf8cguyVT1g5im7f7RXxuLq1xUxEzvm68uYRtGg==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.13.0",
@@ -24620,9 +24779,9 @@
}
},
"@babel/plugin-proposal-nullish-coalescing-operator": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz",
- "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.2.tgz",
+ "integrity": "sha512-ebR0zU9OvI2N4qiAC38KIAK75KItpIPTpAtd2r4OZmMFeKbKJpUFLYP2EuDut82+BmYi8sz42B+TfTptJ9iG5Q==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.13.0",
@@ -24630,32 +24789,32 @@
}
},
"@babel/plugin-proposal-numeric-separator": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz",
- "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.2.tgz",
+ "integrity": "sha512-DcTQY9syxu9BpU3Uo94fjCB3LN9/hgPS8oUL7KrSW3bA2ePrKZZPJcc5y0hoJAM9dft3pGfErtEUvxXQcfLxUg==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.12.13",
+ "@babel/helper-plugin-utils": "^7.13.0",
"@babel/plugin-syntax-numeric-separator": "^7.10.4"
}
},
"@babel/plugin-proposal-object-rest-spread": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz",
- "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.2.tgz",
+ "integrity": "sha512-hBIQFxwZi8GIp934+nj5uV31mqclC1aYDhctDu5khTi9PCCUOczyy0b34W0oE9U/eJXiqQaKyVsmjeagOaSlbw==",
"dev": true,
"requires": {
- "@babel/compat-data": "^7.13.8",
- "@babel/helper-compilation-targets": "^7.13.8",
+ "@babel/compat-data": "^7.14.0",
+ "@babel/helper-compilation-targets": "^7.13.16",
"@babel/helper-plugin-utils": "^7.13.0",
"@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.13.0"
+ "@babel/plugin-transform-parameters": "^7.14.2"
}
},
"@babel/plugin-proposal-optional-catch-binding": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz",
- "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.2.tgz",
+ "integrity": "sha512-XtkJsmJtBaUbOxZsNk0Fvrv8eiqgneug0A6aqLFZ4TSkar2L5dSXWcnUKHgmjJt49pyB/6ZHvkr3dPgl9MOWRQ==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.13.0",
@@ -24663,9 +24822,9 @@
}
},
"@babel/plugin-proposal-optional-chaining": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz",
- "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.2.tgz",
+ "integrity": "sha512-qQByMRPwMZJainfig10BoaDldx/+VDtNcrA7qdNaEOAj6VXud+gfrkA8j4CRAU5HjnWREXqIpSpH30qZX1xivA==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.13.0",
@@ -24870,27 +25029,26 @@
}
},
"@babel/plugin-transform-block-scoping": {
- "version": "7.14.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.1.tgz",
- "integrity": "sha512-2mQXd0zBrwfp0O1moWIhPpEeTKDvxyHcnma3JATVP1l+CctWBuot6OJG8LQ4DnBj4ZZPSmlb/fm4mu47EOAnVA==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.2.tgz",
+ "integrity": "sha512-neZZcP19NugZZqNwMTH+KoBjx5WyvESPSIOQb4JHpfd+zPfqcH65RMu5xJju5+6q/Y2VzYrleQTr+b6METyyxg==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.13.0"
}
},
"@babel/plugin-transform-classes": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz",
- "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.2.tgz",
+ "integrity": "sha512-7oafAVcucHquA/VZCsXv/gmuiHeYd64UJyyTYU+MPfNu0KeNlxw06IeENBO8bJjXVbolu+j1MM5aKQtH1OMCNg==",
"dev": true,
"requires": {
- "@babel/helper-annotate-as-pure": "^7.10.4",
- "@babel/helper-define-map": "^7.10.4",
- "@babel/helper-function-name": "^7.10.4",
- "@babel/helper-optimise-call-expression": "^7.10.4",
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/helper-replace-supers": "^7.12.1",
- "@babel/helper-split-export-declaration": "^7.10.4",
+ "@babel/helper-annotate-as-pure": "^7.12.13",
+ "@babel/helper-function-name": "^7.14.2",
+ "@babel/helper-optimise-call-expression": "^7.12.13",
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/helper-replace-supers": "^7.13.12",
+ "@babel/helper-split-export-declaration": "^7.12.13",
"globals": "^11.1.0"
}
},
@@ -24979,12 +25137,12 @@
}
},
"@babel/plugin-transform-modules-amd": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.0.tgz",
- "integrity": "sha512-CF4c5LX4LQ03LebQxJ5JZes2OYjzBuk1TdiF7cG7d5dK4lAdw9NZmaxq5K/mouUdNeqwz3TNjnW6v01UqUNgpQ==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.2.tgz",
+ "integrity": "sha512-hPC6XBswt8P3G2D1tSV2HzdKvkqOpmbyoy+g73JG0qlF/qx2y3KaMmXb1fLrpmWGLZYA0ojCvaHdzFWjlmV+Pw==",
"dev": true,
"requires": {
- "@babel/helper-module-transforms": "^7.14.0",
+ "@babel/helper-module-transforms": "^7.14.2",
"@babel/helper-plugin-utils": "^7.13.0",
"babel-plugin-dynamic-import-node": "^2.3.3"
}
@@ -25079,9 +25237,9 @@
}
},
"@babel/plugin-transform-parameters": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz",
- "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.2.tgz",
+ "integrity": "sha512-NxoVmA3APNCC1JdMXkdYXuQS+EMdqy0vIwyDHeKHiJKRxmp1qGSdb0JLEIoPRhkx6H/8Qi3RJ3uqOCYw8giy9A==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.13.0"
@@ -25274,9 +25432,9 @@
}
},
"@babel/preset-env": {
- "version": "7.14.1",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.1.tgz",
- "integrity": "sha512-0M4yL1l7V4l+j/UHvxcdvNfLB9pPtIooHTbEhgD/6UGyh8Hy3Bm1Mj0buzjDXATCSz3JFibVdnoJZCrlUCanrQ==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.2.tgz",
+ "integrity": "sha512-7dD7lVT8GMrE73v4lvDEb85cgcQhdES91BSD7jS/xjC6QY8PnRhux35ac+GCpbiRhp8crexBvZZqnaL6VrY8TQ==",
"dev": true,
"requires": {
"@babel/compat-data": "^7.14.0",
@@ -25284,18 +25442,18 @@
"@babel/helper-plugin-utils": "^7.13.0",
"@babel/helper-validator-option": "^7.12.17",
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12",
- "@babel/plugin-proposal-async-generator-functions": "^7.13.15",
+ "@babel/plugin-proposal-async-generator-functions": "^7.14.2",
"@babel/plugin-proposal-class-properties": "^7.13.0",
"@babel/plugin-proposal-class-static-block": "^7.13.11",
- "@babel/plugin-proposal-dynamic-import": "^7.13.8",
- "@babel/plugin-proposal-export-namespace-from": "^7.12.13",
- "@babel/plugin-proposal-json-strings": "^7.13.8",
- "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8",
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8",
- "@babel/plugin-proposal-numeric-separator": "^7.12.13",
- "@babel/plugin-proposal-object-rest-spread": "^7.13.8",
- "@babel/plugin-proposal-optional-catch-binding": "^7.13.8",
- "@babel/plugin-proposal-optional-chaining": "^7.13.12",
+ "@babel/plugin-proposal-dynamic-import": "^7.14.2",
+ "@babel/plugin-proposal-export-namespace-from": "^7.14.2",
+ "@babel/plugin-proposal-json-strings": "^7.14.2",
+ "@babel/plugin-proposal-logical-assignment-operators": "^7.14.2",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.2",
+ "@babel/plugin-proposal-numeric-separator": "^7.14.2",
+ "@babel/plugin-proposal-object-rest-spread": "^7.14.2",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.14.2",
+ "@babel/plugin-proposal-optional-chaining": "^7.14.2",
"@babel/plugin-proposal-private-methods": "^7.13.0",
"@babel/plugin-proposal-private-property-in-object": "^7.14.0",
"@babel/plugin-proposal-unicode-property-regex": "^7.12.13",
@@ -25316,8 +25474,8 @@
"@babel/plugin-transform-arrow-functions": "^7.13.0",
"@babel/plugin-transform-async-to-generator": "^7.13.0",
"@babel/plugin-transform-block-scoped-functions": "^7.12.13",
- "@babel/plugin-transform-block-scoping": "^7.14.1",
- "@babel/plugin-transform-classes": "^7.13.0",
+ "@babel/plugin-transform-block-scoping": "^7.14.2",
+ "@babel/plugin-transform-classes": "^7.14.2",
"@babel/plugin-transform-computed-properties": "^7.13.0",
"@babel/plugin-transform-destructuring": "^7.13.17",
"@babel/plugin-transform-dotall-regex": "^7.12.13",
@@ -25327,14 +25485,14 @@
"@babel/plugin-transform-function-name": "^7.12.13",
"@babel/plugin-transform-literals": "^7.12.13",
"@babel/plugin-transform-member-expression-literals": "^7.12.13",
- "@babel/plugin-transform-modules-amd": "^7.14.0",
+ "@babel/plugin-transform-modules-amd": "^7.14.2",
"@babel/plugin-transform-modules-commonjs": "^7.14.0",
"@babel/plugin-transform-modules-systemjs": "^7.13.8",
"@babel/plugin-transform-modules-umd": "^7.14.0",
"@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13",
"@babel/plugin-transform-new-target": "^7.12.13",
"@babel/plugin-transform-object-super": "^7.12.13",
- "@babel/plugin-transform-parameters": "^7.13.0",
+ "@babel/plugin-transform-parameters": "^7.14.2",
"@babel/plugin-transform-property-literals": "^7.12.13",
"@babel/plugin-transform-regenerator": "^7.13.15",
"@babel/plugin-transform-reserved-words": "^7.12.13",
@@ -25346,7 +25504,7 @@
"@babel/plugin-transform-unicode-escapes": "^7.12.13",
"@babel/plugin-transform-unicode-regex": "^7.12.13",
"@babel/preset-modules": "^0.1.4",
- "@babel/types": "^7.14.1",
+ "@babel/types": "^7.14.2",
"babel-plugin-polyfill-corejs2": "^0.2.0",
"babel-plugin-polyfill-corejs3": "^0.2.0",
"babel-plugin-polyfill-regenerator": "^0.2.0",
@@ -25422,21 +25580,6 @@
"@babel/helper-plugin-utils": "^7.12.13"
}
},
- "@babel/plugin-transform-classes": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz",
- "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.12.13",
- "@babel/helper-function-name": "^7.12.13",
- "@babel/helper-optimise-call-expression": "^7.12.13",
- "@babel/helper-plugin-utils": "^7.13.0",
- "@babel/helper-replace-supers": "^7.13.0",
- "@babel/helper-split-export-declaration": "^7.12.13",
- "globals": "^11.1.0"
- }
- },
"@babel/plugin-transform-computed-properties": {
"version": "7.13.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz",
@@ -25704,17 +25847,17 @@
}
},
"@babel/traverse": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz",
- "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.2.tgz",
+ "integrity": "sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.12.13",
- "@babel/generator": "^7.14.0",
- "@babel/helper-function-name": "^7.12.13",
+ "@babel/generator": "^7.14.2",
+ "@babel/helper-function-name": "^7.14.2",
"@babel/helper-split-export-declaration": "^7.12.13",
- "@babel/parser": "^7.14.0",
- "@babel/types": "^7.14.0",
+ "@babel/parser": "^7.14.2",
+ "@babel/types": "^7.14.2",
"debug": "^4.1.0",
"globals": "^11.1.0"
},
@@ -25737,9 +25880,9 @@
}
},
"@babel/types": {
- "version": "7.14.1",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz",
- "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.2.tgz",
+ "integrity": "sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.14.0",
@@ -28493,13 +28636,15 @@
"dev": true
},
"array-includes": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz",
- "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==",
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz",
+ "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==",
"dev": true,
"requires": {
+ "call-bind": "^1.0.2",
"define-properties": "^1.1.3",
- "es-abstract": "^1.17.0",
+ "es-abstract": "^1.18.0-next.2",
+ "get-intrinsic": "^1.1.1",
"is-string": "^1.0.5"
}
},
@@ -28516,13 +28661,14 @@
"dev": true
},
"array.prototype.flat": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz",
- "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==",
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz",
+ "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==",
"dev": true,
"requires": {
+ "call-bind": "^1.0.0",
"define-properties": "^1.1.3",
- "es-abstract": "^1.17.0-next.1"
+ "es-abstract": "^1.18.0-next.1"
}
},
"arraybuffer.slice": {
@@ -31031,10 +31177,25 @@
"dev": true
},
"contains-path": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
- "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
- "dev": true
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-1.0.0.tgz",
+ "integrity": "sha1-NFizMhhWA+ju0Y9RjUoQiIo6vJE=",
+ "dev": true,
+ "requires": {
+ "normalize-path": "^2.1.1",
+ "path-starts-with": "^1.0.0"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ }
+ }
},
"content-disposition": {
"version": "0.5.3",
@@ -31667,9 +31828,9 @@
}
},
"cypress": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/cypress/-/cypress-7.2.0.tgz",
- "integrity": "sha512-lHHGay+YsffDn4M0bkkwezylBVHUpwwhtqte4LNPrFRCHy77X38+1PUe3neFb3glVTM+rbILtTN6FhO2djcOuQ==",
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/cypress/-/cypress-7.3.0.tgz",
+ "integrity": "sha512-aseRCH1tRVCrM6oEfja6fR/bo5l6e4SkHRRSATh27UeN4f/ANC8U7tGIulmrISJVy9xuOkOdbYKbUb2MNM+nrw==",
"dev": true,
"requires": {
"@cypress/listr-verbose-renderer": "^0.4.1",
@@ -33086,15 +33247,24 @@
}
},
"eslint-module-utils": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz",
- "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==",
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz",
+ "integrity": "sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A==",
"dev": true,
"requires": {
- "debug": "^2.6.9",
+ "debug": "^3.2.7",
"pkg-dir": "^2.0.0"
},
"dependencies": {
+ "debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
"find-up": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
@@ -33114,6 +33284,12 @@
"path-exists": "^3.0.0"
}
},
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
"p-limit": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
@@ -33168,10 +33344,11 @@
"dev": true
},
"eslint-plugin-chai-friendly": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-chai-friendly/-/eslint-plugin-chai-friendly-0.6.0.tgz",
- "integrity": "sha512-Uvvv1gkbRGp/qfN15B0kQyQWg+oFA8buDSqrwmW3egNSk/FpqH2MjQqKOuKwmEL6w4QIQrIjDp+gg6kGGmD3oQ==",
- "dev": true
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-chai-friendly/-/eslint-plugin-chai-friendly-0.7.1.tgz",
+ "integrity": "sha512-0xhGiSQ+9oWtNc6IZPUR+6ChKbEvLXwT9oZZ5NcGlPzHVKGn1YKwQFj7a9yL3rnRKbWF7b3RkRYEP8kN6dPOwQ==",
+ "dev": true,
+ "requires": {}
},
"eslint-plugin-compat": {
"version": "3.9.0",
@@ -33290,42 +33467,87 @@
}
},
"eslint-plugin-import": {
- "version": "2.22.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz",
- "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==",
+ "version": "2.23.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.0.tgz",
+ "integrity": "sha512-W5v1f7Cbam6BwbSSKtN6+yoUAms07ozbqAEhLOtf5erEqRv7w67PeZuAuBThaUkzdq2GfBx/5GBvxF+NWJshrQ==",
"dev": true,
"requires": {
- "array-includes": "^3.1.1",
- "array.prototype.flat": "^1.2.3",
- "contains-path": "^0.1.0",
+ "array-includes": "^3.1.3",
+ "array.prototype.flat": "^1.2.4",
+ "contains-path": "^1.0.0",
"debug": "^2.6.9",
- "doctrine": "1.5.0",
+ "doctrine": "^2.1.0",
"eslint-import-resolver-node": "^0.3.4",
- "eslint-module-utils": "^2.6.0",
+ "eslint-module-utils": "^2.6.1",
+ "find-up": "^2.0.0",
"has": "^1.0.3",
+ "is-core-module": "^2.4.0",
"minimatch": "^3.0.4",
- "object.values": "^1.1.1",
- "read-pkg-up": "^2.0.0",
- "resolve": "^1.17.0",
+ "object.values": "^1.1.3",
+ "pkg-up": "^2.0.0",
+ "read-pkg-up": "^3.0.0",
+ "resolve": "^1.20.0",
"tsconfig-paths": "^3.9.0"
},
"dependencies": {
"doctrine": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
- "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
"dev": true,
"requires": {
- "esutils": "^2.0.2",
- "isarray": "^1.0.0"
+ "esutils": "^2.0.2"
}
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
}
}
},
"eslint-plugin-jsdoc": {
- "version": "33.1.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-33.1.1.tgz",
- "integrity": "sha512-6Avc2czg/mh0zmuU3H4v2xTXOALl9OiMGpn55nBDydhU684cVgvn2VtXm1JgH+2TW5SxEDnX3o/FUgda7LgVYA==",
+ "version": "34.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-34.2.2.tgz",
+ "integrity": "sha512-9JCeUUZ2MefGd/Pl3blx9/EDjCd7/Z2+fcVBuJdNdvSLApRqZ8CwjGjLHf5s4uVikqF968A0CfnID0WK9B/H/w==",
"dev": true,
"requires": {
"@es-joy/jsdoccomment": "^0.4.4",
@@ -33541,9 +33763,9 @@
"dev": true
},
"eslint-plugin-unicorn": {
- "version": "32.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-32.0.0.tgz",
- "integrity": "sha512-VYE/XvZvdcY0RvOKGxsrVVWo8DaI/tGVYuhKzSd6Uuy69Ydc8zX+roZ/H9PgyykM4nuj8JDoOHSwVk9a4OYbCQ==",
+ "version": "32.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-32.0.1.tgz",
+ "integrity": "sha512-LaZ9utnXtOJjnoDkpm+nQsONUUmyRR0WD6PGROSdQRRW3LRmgK/ZP8wxjW+Ai+2uolKTtuJzLx2mvbIeIoLqpg==",
"dev": true,
"requires": {
"ci-info": "^3.1.1",
@@ -35666,9 +35888,9 @@
}
},
"is-core-module": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz",
- "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==",
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz",
+ "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==",
"dev": true,
"requires": {
"has": "^1.0.3"
@@ -36966,30 +37188,21 @@
}
},
"load-json-file": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
- "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
"strip-bom": "^3.0.0"
},
"dependencies": {
- "parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
- "dev": true,
- "requires": {
- "error-ex": "^1.2.0"
- }
- },
"pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
"dev": true
},
"strip-bom": {
@@ -38967,50 +39180,12 @@
"which": "^1.2.9"
}
},
- "load-json-file": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
- "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0",
- "strip-bom": "^3.0.0"
- }
- },
"path-key": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
"dev": true
},
- "path-type": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
- "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
- "dev": true,
- "requires": {
- "pify": "^3.0.0"
- }
- },
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- },
- "read-pkg": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
- "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
- "dev": true,
- "requires": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
- }
- },
"shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
@@ -39026,12 +39201,6 @@
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
"dev": true
},
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
- "dev": true
- },
"which": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
@@ -39327,14 +39496,14 @@
}
},
"object.values": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz",
- "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz",
+ "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==",
"dev": true,
"requires": {
+ "call-bind": "^1.0.2",
"define-properties": "^1.1.3",
- "es-abstract": "^1.17.0-next.1",
- "function-bind": "^1.1.1",
+ "es-abstract": "^1.18.0-next.2",
"has": "^1.0.3"
}
},
@@ -39362,9 +39531,9 @@
}
},
"onetime": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
- "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
"dev": true,
"requires": {
"mimic-fn": "^2.1.0"
@@ -39861,6 +40030,26 @@
"integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=",
"dev": true
},
+ "path-starts-with": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/path-starts-with/-/path-starts-with-1.0.0.tgz",
+ "integrity": "sha1-soJDAV6LE43lcmgqxS2kLmRq2E4=",
+ "dev": true,
+ "requires": {
+ "normalize-path": "^2.1.1"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ }
+ }
+ },
"path-type": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
@@ -39961,6 +40150,60 @@
"find-up": "^3.0.0"
}
},
+ "pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz",
+ "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.1.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
+ }
+ }
+ },
"pluralize": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
@@ -40302,41 +40545,41 @@
}
},
"read-pkg": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
- "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
"dev": true,
"requires": {
- "load-json-file": "^2.0.0",
+ "load-json-file": "^4.0.0",
"normalize-package-data": "^2.3.2",
- "path-type": "^2.0.0"
+ "path-type": "^3.0.0"
},
"dependencies": {
"path-type": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
- "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
"dev": true,
"requires": {
- "pify": "^2.0.0"
+ "pify": "^3.0.0"
}
},
"pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
"dev": true
}
}
},
"read-pkg-up": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
- "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
+ "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
"dev": true,
"requires": {
"find-up": "^2.0.0",
- "read-pkg": "^2.0.0"
+ "read-pkg": "^3.0.0"
},
"dependencies": {
"find-up": {
@@ -42032,15 +42275,15 @@
"integrity": "sha512-EeNzTVfj+1In7aSLPKDD03F/ly4RxEuF/EX0YcOG0cKoPXs+SLZxDawQbexQDBzwROs4VKLWTOaZQlZkGBFEIQ=="
},
"start-server-and-test": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-1.12.1.tgz",
- "integrity": "sha512-qGQ2HQiF2yDIfyaHsXkHfoE5UOl4zJUbJ/gx2xOkfX7iPMXW9qHmoFyaMfIDJVLNkxCK7RxSrvWEI9hNVKQluw==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-1.12.2.tgz",
+ "integrity": "sha512-rjJF8N/8XVukEYR44Ehm8LAZIDjWCQKXX54W8UQ8pXz3yDKPCdqTqJy7VYnCAknPw65cmLfPxz8M2+K/zCAvVQ==",
"dev": true,
"requires": {
"bluebird": "3.7.2",
"check-more-types": "2.24.0",
"debug": "4.3.1",
- "execa": "3.4.0",
+ "execa": "5.0.0",
"lazy-ass": "1.6.0",
"ps-tree": "1.2.0",
"wait-on": "5.3.0"
@@ -42062,34 +42305,39 @@
}
},
"execa": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz",
- "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz",
+ "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==",
"dev": true,
"requires": {
- "cross-spawn": "^7.0.0",
- "get-stream": "^5.0.0",
- "human-signals": "^1.1.1",
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
"is-stream": "^2.0.0",
"merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.0",
- "onetime": "^5.1.0",
- "p-finally": "^2.0.0",
- "signal-exit": "^3.0.2",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
"strip-final-newline": "^2.0.0"
}
},
+ "get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true
+ },
+ "human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true
+ },
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
- },
- "p-finally": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz",
- "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==",
- "dev": true
}
}
},
@@ -42396,9 +42644,9 @@
}
},
"systemjs": {
- "version": "6.8.3",
- "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.8.3.tgz",
- "integrity": "sha512-UcTY+FEA1B7e+bpJk1TI+a9Na6LG7wFEqW7ED16cLqLuQfI/9Ri0rsXm3tKlIgNoHyLHZycjdAOijzNbzelgwA==",
+ "version": "6.9.0",
+ "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.9.0.tgz",
+ "integrity": "sha512-THLzcb7WzoW0I+tHB4PQge0BqqN+CAUQJ9gPc1MieqD1gnhxNUKYrhRlN5ov94saOYVVR5NZFQqQhnxi9/WEGg==",
"dev": true
},
"table": {
diff --git a/package.json b/package.json
index 60d20795..f33efbf3 100644
--- a/package.json
+++ b/package.json
@@ -117,8 +117,8 @@
"svg2pdf.js": "2.1.0"
},
"devDependencies": {
- "@babel/core": "7.14.0",
- "@babel/preset-env": "7.14.1",
+ "@babel/core": "7.14.2",
+ "@babel/preset-env": "7.14.2",
"@babel/register": "7.13.16",
"@babel/runtime-corejs3": "7.14.0",
"@cypress/code-coverage": "3.9.5",
@@ -140,7 +140,7 @@
"coveradge": "0.6.0",
"cp-cli": "2.0.0",
"cross-var": "1.1.0",
- "cypress": "7.2.0",
+ "cypress": "7.3.0",
"cypress-axe": "0.12.2",
"cypress-multi-reporters": "1.5.0",
"cypress-plugin-snapshots": "1.4.4",
@@ -149,13 +149,13 @@
"eslint-plugin-array-func": "3.1.7",
"eslint-plugin-chai-expect": "2.2.0",
"eslint-plugin-chai-expect-keywords": "2.1.0",
- "eslint-plugin-chai-friendly": "0.6.0",
+ "eslint-plugin-chai-friendly": "0.7.1",
"eslint-plugin-compat": "^3.9.0",
"eslint-plugin-cypress": "2.11.3",
"eslint-plugin-eslint-comments": "3.2.0",
"eslint-plugin-html": "^6.1.2",
- "eslint-plugin-import": "^2.22.1",
- "eslint-plugin-jsdoc": "^33.1.1",
+ "eslint-plugin-import": "2.23.0",
+ "eslint-plugin-jsdoc": "34.2.2",
"eslint-plugin-markdown": "^2.1.0",
"eslint-plugin-mocha": "8.1.0",
"eslint-plugin-mocha-cleanup": "1.9.1",
@@ -165,7 +165,7 @@
"eslint-plugin-promise": "^5.1.0",
"eslint-plugin-sonarjs": "^0.7.0",
"eslint-plugin-standard": "4.1.0",
- "eslint-plugin-unicorn": "32.0.0",
+ "eslint-plugin-unicorn": "32.0.1",
"imageoptim-cli": "3.0.2",
"jamilih": "0.54.0",
"jsdoc": "3.6.6",
@@ -193,8 +193,8 @@
"rollup-plugin-re": "1.0.7",
"rollup-plugin-terser": "7.0.2",
"stackblur-canvas": "2.5.0",
- "start-server-and-test": "^1.12.1",
- "systemjs": "6.8.3",
+ "start-server-and-test": "^1.12.2",
+ "systemjs": "6.9.0",
"typescript": "4.2.4",
"underscore": "1.13.1"
}
diff --git a/src/editor/ConfigObj.js b/src/editor/ConfigObj.js
index 1e701aec..0be639df 100644
--- a/src/editor/ConfigObj.js
+++ b/src/editor/ConfigObj.js
@@ -175,7 +175,7 @@ export default class ConfigObj {
'ext-polygon',
'ext-storage',
'ext-opensave',
- 'ext-helloworld',
+ // 'ext-helloworld',
];
this.curConfig = {
// We do not put on defaultConfig to simplify object copying
From d73e5cad5b6167c9c2f92c8a16afb2e9bbd5e08d Mon Sep 17 00:00:00 2001
From: JFH <20402845+jfhenon@users.noreply.github.com>
Date: Sat, 15 May 2021 00:51:22 +0200
Subject: [PATCH 14/17] Update TopPanel.js
---
src/editor/panels/TopPanel.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/editor/panels/TopPanel.js b/src/editor/panels/TopPanel.js
index ac7f5e6f..625c9ea3 100644
--- a/src/editor/panels/TopPanel.js
+++ b/src/editor/panels/TopPanel.js
@@ -553,10 +553,10 @@ class TopPanel {
attrChanger(e) {
const attr = e.target.getAttribute("data-attr");
let val = e.target.value;
- const valid = isValidUnit(attr, val, this.editor.selectedElement);
+ const valid = isValidUnit(attr, val, this.selectedElement);
if (!valid) {
- e.target.value = this.editor.selectedElement().getAttribute(attr);
+ e.target.value = this.selectedElement.getAttribute(attr);
// eslint-disable-next-line no-alert
alert(this.i18next.t('notification.invalidAttrValGiven'));
return false;
From 9a68ba6358ff246a9019e5df544c6c43b14bcf15 Mon Sep 17 00:00:00 2001
From: JFH <20402845+jfhenon@users.noreply.github.com>
Date: Sat, 15 May 2021 16:20:13 +0200
Subject: [PATCH 15/17] fix some useless console.log
---
cypress/integration/unit/draw.js | 1 -
cypress/integration/unit/test1.js | 2 -
docs/jsdoc-config.js | 53 +------------------
src/editor/Editor.js | 2 +-
src/editor/EditorStartup.js | 1 -
src/editor/contextmenu.js | 1 -
.../extensions/ext-imagelib/openclipart.js | 3 --
.../extensions/ext-markers/ext-markers.js | 3 --
.../extensions/ext-mathjax/ext-mathjax.js | 5 +-
.../extensions/ext-placemark/ext-placemark.js | 1 -
.../ext-webappfind/ext-webappfind.js | 1 -
src/editor/locale.js | 2 +-
src/svgcanvas/path-actions.js | 4 +-
13 files changed, 6 insertions(+), 73 deletions(-)
diff --git a/cypress/integration/unit/draw.js b/cypress/integration/unit/draw.js
index f18338e5..8164f80d 100644
--- a/cypress/integration/unit/draw.js
+++ b/cypress/integration/unit/draw.js
@@ -727,7 +727,6 @@ describe('draw.Drawing', function () {
drawing.setLayerOpacity(LAYER3, -1.4);
assert.strictEqual(drawing.getLayerOpacity(LAYER1), 0.4);
- // console.log('layer2 opacity ' + drawing.getLayerOpacity(LAYER2));
assert.strictEqual(drawing.getLayerOpacity(LAYER2), 1.0);
assert.strictEqual(drawing.getLayerOpacity(LAYER3), 1.0);
diff --git a/cypress/integration/unit/test1.js b/cypress/integration/unit/test1.js
index 64f2ee83..185964e3 100644
--- a/cypress/integration/unit/test1.js
+++ b/cypress/integration/unit/test1.js
@@ -159,8 +159,6 @@ describe('Basic Module', function () {
assert.strictEqual(attrVal, 'bar', true, 'Preserved namespaced attribute on import');
const output = svgCanvas.getSvgString();
- // } catch(e) {console.log(e)}
- // console.log('output',output);
const hasXlink = output.includes('xmlns:xlink="http://www.w3.org/1999/xlink"');
const hasSe = output.includes('xmlns:se=');
const hasFoo = output.includes('xmlns:foo=');
diff --git a/docs/jsdoc-config.js b/docs/jsdoc-config.js
index 5461f541..88c78af1 100644
--- a/docs/jsdoc-config.js
+++ b/docs/jsdoc-config.js
@@ -3,58 +3,7 @@
module.exports = {
plugins: [ 'plugins/markdown' ],
- markdown: {
- // tags: ['examples']
- /*
- // "The highlighter function should escape the code block's contents and wrap them in tags"
- highlight (code, language) {
- function ret () {
- // Default:
- return '' + code + ' in this language: ' + language + '
';
- }
- if (language !== 'js') { // E.g., we have one URL in some tutorial Markdown
- // Seems to be only for full triple-backticked fences
- // console.log('lll', code);
- return ret();
- }
-
- // Programmatic ESLint API: https://eslint.org/docs/developer-guide/nodejs-api
- const {CLIEngine} = require('eslint');
- const cli = new CLIEngine({
- useEslintrc: true,
- rules: {
- 'no-undef': 0, // Many variables in examples will be undefined
- 'padded-blocks': 0 // Can look nicer
- }
- });
-
- // Undo escaping done by node_modules/jsdoc/lib/jsdoc/util/markdown.js
- code = code
- .replace(/\s+$/, '')
- .replace(/'/g, "'")
- .replace(/(https?):\\\/\\\//g, '$1://')
- .replace(/\{@[^}\r\n]+\}/g, function (wholeMatch) {
- return wholeMatch.replace(/"/g, '"');
- });
-
- // lint the supplied text and optionally set
- // a filename that is displayed in the report
- const report = cli.executeOnText(code + '\n');
- if (!report.errorCount && !report.warningCount) {
- return ret();
- }
-
- // Although we don't get the file, at least we can report the source code
- const {messages} = report.results[0];
- messages.forEach(({message, line, column, severity, ruleId}) => {
- console.log(`${ruleId}: ${message} (Severity: ${severity}; ${line}:${column})`);
- });
- console.log('\n' + code);
-
- return ret();
- }
- */
- },
+ markdown: {},
recurseDepth: 10,
source: {
exclude: [
diff --git a/src/editor/Editor.js b/src/editor/Editor.js
index d8442f8b..1ad1a808 100644
--- a/src/editor/Editor.js
+++ b/src/editor/Editor.js
@@ -775,7 +775,7 @@ class Editor extends EditorStartup {
const icon = (typeof iconId === 'string') ? img : iconId.cloneNode(true);
if (!icon) {
// Todo: Investigate why this still occurs in some cases
- console.log('NOTE: Icon image missing: ' + iconId);
+ console.warn('NOTE: Icon image missing: ' + iconId);
return;
}
// empty()
diff --git a/src/editor/EditorStartup.js b/src/editor/EditorStartup.js
index 891f749a..7042b873 100644
--- a/src/editor/EditorStartup.js
+++ b/src/editor/EditorStartup.js
@@ -789,7 +789,6 @@ class EditorStartup {
* @returns {void}
*/
messageListener ({ data, origin }) {
- // console.log('data, origin, extensionsAdded', data, origin, extensionsAdded);
const messageObj = { data, origin };
if (!this.extensionsAdded) {
this.messageQueue.push(messageObj);
diff --git a/src/editor/contextmenu.js b/src/editor/contextmenu.js
index 145ee5b9..3322e080 100644
--- a/src/editor/contextmenu.js
+++ b/src/editor/contextmenu.js
@@ -48,7 +48,6 @@ export const add = function (menuItem) {
throw new Error('Cannot add extension "' + menuItem.id + '", an extension by that name already exists"');
}
// Register menuItem action, see below for deferred menu dom injection
- console.log('Registered contextmenu item: {id:' + menuItem.id + ', label:' + menuItem.label + '}');
contextMenuExtensions[menuItem.id] = menuItem;
// TODO: Need to consider how to handle custom enable/disable behavior
};
diff --git a/src/editor/extensions/ext-imagelib/openclipart.js b/src/editor/extensions/ext-imagelib/openclipart.js
index 0cd810b4..56563ffa 100644
--- a/src/editor/extensions/ext-imagelib/openclipart.js
+++ b/src/editor/extensions/ext-imagelib/openclipart.js
@@ -34,7 +34,6 @@ async function processResults (url) {
const r = await fetch(url);
const json = await r.json();
- // console.log('json', json);
if (!json || json.msg !== 'success') {
// Todo: This could use a generic alert library instead
@@ -87,7 +86,6 @@ async function processResults (url) {
async click (e) {
e.preventDefault();
const { value: svgurl } = this.dataset;
- // console.log('this', id, svgurl);
const post = (message) => {
// Todo: Make origin customizable as set by opening window
// Todo: If dropping IE9, avoid stringifying
@@ -103,7 +101,6 @@ async function processResults (url) {
});
const result = await fetch(svgurl);
const svg = await result.text();
- // console.log('url and svg', svgurl, svg);
post({
href: svgurl,
data: svg
diff --git a/src/editor/extensions/ext-markers/ext-markers.js b/src/editor/extensions/ext-markers/ext-markers.js
index c4148a7f..d1defea3 100644
--- a/src/editor/extensions/ext-markers/ext-markers.js
+++ b/src/editor/extensions/ext-markers/ext-markers.js
@@ -123,8 +123,6 @@ export default {
function setIcon (pos, id) {
if (id.substr(0, 1) !== '\\') { id = '\\textmarker'; }
const ci = idPrefix + pos + '_' + id.substr(1);
- console.log(ci);
- console.log('cur_' + pos + '_marker_list');
svgEditor.setIcon('cur_' + pos + '_marker_list', $id(ci).children);
$id(ci).classList.add('current');
const siblings = Array.prototype.filter.call($id(ci).parentNode.children, function(child){
@@ -585,7 +583,6 @@ export default {
},
selectedChanged (opts) {
// Use this to update the current selected elements
- // console.log('selectChanged',opts);
selElems = opts.elems;
const markerElems = [ 'line', 'path', 'polyline', 'polygon' ];
diff --git a/src/editor/extensions/ext-mathjax/ext-mathjax.js b/src/editor/extensions/ext-mathjax/ext-mathjax.js
index f5f891a3..dc65204d 100644
--- a/src/editor/extensions/ext-mathjax/ext-mathjax.js
+++ b/src/editor/extensions/ext-mathjax/ext-mathjax.js
@@ -191,12 +191,11 @@ export default {
// When MathJax is loaded get the div where the math will be rendered.
MathJax.Hub.queue.Push(function () {
math = MathJax.Hub.getAllJax('#mathjax_creator')[0];
- console.log(math);
mathjaxLoaded = true;
- console.log('MathJax Loaded');
+ console.info('MathJax Loaded');
});
} catch (e) {
- console.log('Failed loading MathJax.');
+ console.warn('Failed loading MathJax.');
// eslint-disable-next-line no-alert
alert('Failed loading MathJax. You will not be able to change the mathematics.');
}
diff --git a/src/editor/extensions/ext-placemark/ext-placemark.js b/src/editor/extensions/ext-placemark/ext-placemark.js
index 1be71c58..d2553640 100644
--- a/src/editor/extensions/ext-placemark/ext-placemark.js
+++ b/src/editor/extensions/ext-placemark/ext-placemark.js
@@ -223,7 +223,6 @@ export default {
function colorChanged (el) {
const color = el.getAttribute('stroke');
const marker = getLinked(el, 'marker-start');
- // console.log(marker);
if (!marker) { return; }
if (!marker.attributes.class) { return; } // not created by this extension
const ch = marker.lastElementChild;
diff --git a/src/editor/extensions/ext-webappfind/ext-webappfind.js b/src/editor/extensions/ext-webappfind/ext-webappfind.js
index a4c52a98..57ebc2cc 100644
--- a/src/editor/extensions/ext-webappfind/ext-webappfind.js
+++ b/src/editor/extensions/ext-webappfind/ext-webappfind.js
@@ -41,7 +41,6 @@ export default {
* @returns {void}
*/
(win, { data, origin }) => {
- // console.log('data, origin', data, origin);
let type, content;
try {
({ type, pathID, content } = data.webappfind); // May throw if data is not an object
diff --git a/src/editor/locale.js b/src/editor/locale.js
index b7a12d6f..f1cc897b 100644
--- a/src/editor/locale.js
+++ b/src/editor/locale.js
@@ -83,7 +83,7 @@ export const putLocale = async function (givenParam, goodLangs) {
}
}
});
- console.log(`Lang: ${i18next.t('lang')}`);
+ console.info(`Lang: ${i18next.t('lang')}`);
return { langParam, i18next };
};
diff --git a/src/svgcanvas/path-actions.js b/src/svgcanvas/path-actions.js
index 2feff101..a4b69975 100644
--- a/src/svgcanvas/path-actions.js
+++ b/src/svgcanvas/path-actions.js
@@ -318,8 +318,7 @@ export const pathActionsMethod = (function () {
}
return element;
};
- // console.log(pathActionsContext_);
- // const convertPath = pathActionsContext_.getConvertPath();
+
return (/** @lends module:path.pathActions */ {
/**
* @param {MouseEvent} evt
@@ -464,7 +463,6 @@ export const pathActionsMethod = (function () {
editorContext_.getMouseTarget(evt)
)) {
// Clicked outside canvas, so don't make point
- // console.log('Clicked outside canvas');
return false;
}
From 1337ce7a09743d3389a50e0f3a76bb73fc766700 Mon Sep 17 00:00:00 2001
From: JFH <20402845+jfhenon@users.noreply.github.com>
Date: Sat, 15 May 2021 17:48:53 +0200
Subject: [PATCH 16/17] merge poly/star into a single extension
---
.eslintrc.js | 9 +-
src/editor/ConfigObj.js | 3 +-
.../extensions/ext-polygon/ext-polygon.js | 204 ----------
.../extensions/ext-polygon/locale/en.js | 14 -
.../extensions/ext-polygon/locale/fr.js | 14 -
.../extensions/ext-polygon/locale/zh-CN.js | 14 -
.../extensions/ext-polystar/ext-polystar.js | 347 ++++++++++++++++++
.../{ext-star => ext-polystar}/locale/en.js | 7 +
.../{ext-star => ext-polystar}/locale/fr.js | 7 +
.../locale/zh-CN.js | 7 +
src/editor/extensions/ext-star/ext-star.js | 231 ------------
.../ext-webappfind/ext-webappfind.js | 16 +-
12 files changed, 382 insertions(+), 491 deletions(-)
delete mode 100644 src/editor/extensions/ext-polygon/ext-polygon.js
delete mode 100644 src/editor/extensions/ext-polygon/locale/en.js
delete mode 100644 src/editor/extensions/ext-polygon/locale/fr.js
delete mode 100755 src/editor/extensions/ext-polygon/locale/zh-CN.js
create mode 100644 src/editor/extensions/ext-polystar/ext-polystar.js
rename src/editor/extensions/{ext-star => ext-polystar}/locale/en.js (76%)
rename src/editor/extensions/{ext-star => ext-polystar}/locale/fr.js (76%)
rename src/editor/extensions/{ext-star => ext-polystar}/locale/zh-CN.js (75%)
delete mode 100644 src/editor/extensions/ext-star/ext-star.js
diff --git a/.eslintrc.js b/.eslintrc.js
index 48ad8a17..5a0771e1 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -21,22 +21,25 @@ module.exports = {
es6: true
},
rules: {
+ /** @todo len should probably more 120-150 */
+ "max-len": [ "warn", { "code": 250 } ],
+ /** @todo jsdoc should be made warn or error */
+ "valid-jsdoc": "off",
+ /** @todo cognitive complexity should be much lower (25-50?) */
+ "sonarjs/cognitive-complexity": [ "warn", 200 ],
"node/no-unsupported-features/es-syntax": 0,
"no-unused-vars": [ "error", { "argsIgnorePattern": "^_" } ],
- "sonarjs/cognitive-complexity": [ "warn", 40 ],
"sonarjs/no-duplicate-string": 0,
"semi" : "error",
"no-trailing-spaces": "error",
"array-bracket-spacing": [ "error", "always" ],
"comma-spacing": "error",
"object-curly-spacing": [ "error", "always" ],
- "valid-jsdoc": "warn",
"no-console": [
"warn",
{ "allow": [ "warn", "error", "info", "table" ] }
],
"no-param-reassign": [ "warn", { "props": false } ],
- "max-len": [ "warn", { "code": 150 } ],
"arrow-parens": [ "error", "always" ],
},
overrides: [
diff --git a/src/editor/ConfigObj.js b/src/editor/ConfigObj.js
index 0be639df..42bbee2f 100644
--- a/src/editor/ConfigObj.js
+++ b/src/editor/ConfigObj.js
@@ -171,8 +171,7 @@ export default class ConfigObj {
'ext-overview_window',
'ext-panning',
'ext-shapes',
- 'ext-star',
- 'ext-polygon',
+ 'ext-polystar',
'ext-storage',
'ext-opensave',
// 'ext-helloworld',
diff --git a/src/editor/extensions/ext-polygon/ext-polygon.js b/src/editor/extensions/ext-polygon/ext-polygon.js
deleted file mode 100644
index 11b47f2d..00000000
--- a/src/editor/extensions/ext-polygon/ext-polygon.js
+++ /dev/null
@@ -1,204 +0,0 @@
-/**
- * @file ext-polygon.js
- *
- *
- * @copyright 2010 CloudCanvas, Inc. All rights reserved
- *
- */
-
-import { loadExtensionTranslation } from "../../locale.js";
-
-const name = "polygon";
-
-export default {
- name,
- async init(_S) {
- const svgEditor = this;
- const { svgCanvas } = svgEditor;
- const { $id } = svgCanvas;
- // const editingitex = false;
- await loadExtensionTranslation(svgEditor, name);
- let selElems;
- let started;
- let newFO;
- /**
- * @param {boolean} on
- * @returns {void}
- */
- const showPanel = (on) => {
- $id("polygon_panel").style.display = on ? "block" : "none";
- };
-
- /**
- * @param {string} attr
- * @param {string|Float} val
- * @returns {void}
- */
- const setAttr = (attr, val) => {
- svgCanvas.changeSelectedAttribute(attr, val);
- svgCanvas.call("changed", selElems);
- };
-
- /**
- * @param {Float} n
- * @returns {Float}
- */
- const cot = (n) => 1 / Math.tan(n);
-
- /**
- * @param {Float} n
- * @returns {Float}
- */
- const sec = (n) => 1 / Math.cos(n);
-
- return {
- name: svgEditor.i18next.t(`${name}:name`),
- // The callback should be used to load the DOM with the appropriate UI items
- callback() {
- if ($id("tools_polygon") === null) {
- console.error(
- "this polygon extension must be added after the star extension"
- );
- }
- const title = svgEditor.i18next.t(`${name}:buttons.0.title`);
- const buttonTemplate = document.createElement("template");
- // eslint-disable-next-line no-unsanitized/property
- buttonTemplate.innerHTML = `
-
-
- `;
- $id("tools_polygon").append(buttonTemplate.content.cloneNode(true));
-
- $id("tool_polygon").addEventListener("click", () => {
- if (this.leftPanel.updateLeftPanel("tool_polygon")) {
- svgCanvas.setMode("polygon");
- showPanel(true);
- }
- });
- const label0 = svgEditor.i18next.t(`${name}:contextTools.0.label`);
- const title0 = svgEditor.i18next.t(`${name}:contextTools.0.title`);
- // Add the context panel and its handler(s)
- const panelTemplate = document.createElement("template");
- // eslint-disable-next-line no-unsanitized/property
- panelTemplate.innerHTML = `
-
-
-
-
- `;
- $id("tools_top").appendChild(panelTemplate.content.cloneNode(true));
- $id("polygon_panel").style.display = "none";
- $id("polySides").addEventListener("change", (event) => {
- setAttr("sides", event.target.value);
- });
- },
- mouseDown(opts) {
- if (svgCanvas.getMode() !== "polygon") {
- return undefined;
- }
- // const e = opts.event;
- const rgb = svgCanvas.getColor("fill");
- // const ccRgbEl = rgb.substring(1, rgb.length);
- const sRgb = svgCanvas.getColor("stroke");
- // ccSRgbEl = sRgb.substring(1, rgb.length);
- const sWidth = svgCanvas.getStrokeWidth();
-
- started = true;
-
- newFO = svgCanvas.addSVGElementFromJson({
- element: "polygon",
- attr: {
- cx: opts.start_x,
- cy: opts.start_y,
- id: svgCanvas.getNextId(),
- shape: "regularPoly",
- sides: document.getElementById("polySides").value,
- orient: "x",
- edge: 0,
- fill: rgb,
- strokecolor: sRgb,
- strokeWidth: sWidth
- }
- });
-
- return {
- started: true
- };
- },
- mouseMove(opts) {
- if (!started || svgCanvas.getMode() !== "polygon") {
- return undefined;
- }
- const cx = Number(newFO.getAttribute("cx"));
- const cy = Number(newFO.getAttribute("cy"));
- const sides = Number(newFO.getAttribute("sides"));
- // const orient = newFO.getAttribute('orient');
- const fill = newFO.getAttribute("fill");
- const strokecolor = newFO.getAttribute("strokecolor");
- const strokeWidth = Number(newFO.getAttribute("strokeWidth"));
-
- let x = opts.mouse_x;
- let y = opts.mouse_y;
-
- const edg = Math.sqrt((x - cx) * (x - cx) + (y - cy) * (y - cy)) / 1.5;
- newFO.setAttribute("edge", edg);
-
- const inradius = (edg / 2) * cot(Math.PI / sides);
- const circumradius = inradius * sec(Math.PI / sides);
- let points = "";
- for (let s = 0; sides >= s; s++) {
- const angle = (2.0 * Math.PI * s) / sides;
- x = circumradius * Math.cos(angle) + cx;
- y = circumradius * Math.sin(angle) + cy;
-
- points += x + "," + y + " ";
- }
-
- // const poly = newFO.createElementNS(NS.SVG, 'polygon');
- newFO.setAttribute("points", points);
- newFO.setAttribute("fill", fill);
- newFO.setAttribute("stroke", strokecolor);
- newFO.setAttribute("stroke-width", strokeWidth);
- return {
- started: true
- };
- },
-
- mouseUp() {
- if (svgCanvas.getMode() !== "polygon") {
- return undefined;
- }
- const edge = newFO.getAttribute("edge");
- const keep = edge !== "0";
- // svgCanvas.addToSelection([newFO], true);
- return {
- keep,
- element: newFO
- };
- },
- selectedChanged(opts) {
- // Use this to update the current selected elements
- selElems = opts.elems;
-
- let i = selElems.length;
- while (i--) {
- const elem = selElems[i];
- if (elem && elem.getAttribute("shape") === "regularPoly") {
- if (opts.selectedElement && !opts.multiselected) {
- $id("polySides").value = elem.getAttribute("sides");
-
- showPanel(true);
- } else {
- showPanel(false);
- }
- } else {
- showPanel(false);
- }
- }
- },
- elementChanged() {
- // const elem = opts.elems[0];
- }
- };
- }
-};
diff --git a/src/editor/extensions/ext-polygon/locale/en.js b/src/editor/extensions/ext-polygon/locale/en.js
deleted file mode 100644
index ddca9727..00000000
--- a/src/editor/extensions/ext-polygon/locale/en.js
+++ /dev/null
@@ -1,14 +0,0 @@
-export default {
- name: 'polygon',
- buttons: [
- {
- title: 'Polygon Tool'
- }
- ],
- contextTools: [
- {
- title: 'Number of Sides',
- label: 'sides'
- }
- ]
-};
diff --git a/src/editor/extensions/ext-polygon/locale/fr.js b/src/editor/extensions/ext-polygon/locale/fr.js
deleted file mode 100644
index 9b503d8c..00000000
--- a/src/editor/extensions/ext-polygon/locale/fr.js
+++ /dev/null
@@ -1,14 +0,0 @@
-export default {
- name: 'polygone',
- buttons: [
- {
- title: 'Outil Polygone'
- }
- ],
- contextTools: [
- {
- title: 'Nombre de côtés',
- label: 'côtés'
- }
- ]
-};
diff --git a/src/editor/extensions/ext-polygon/locale/zh-CN.js b/src/editor/extensions/ext-polygon/locale/zh-CN.js
deleted file mode 100755
index 6bfcc476..00000000
--- a/src/editor/extensions/ext-polygon/locale/zh-CN.js
+++ /dev/null
@@ -1,14 +0,0 @@
-export default {
- name: '多边形',
- buttons: [
- {
- title: '多边形工具'
- }
- ],
- contextTools: [
- {
- title: '边数',
- label: '边数'
- }
- ]
-};
diff --git a/src/editor/extensions/ext-polystar/ext-polystar.js b/src/editor/extensions/ext-polystar/ext-polystar.js
new file mode 100644
index 00000000..5ba1bf9c
--- /dev/null
+++ b/src/editor/extensions/ext-polystar/ext-polystar.js
@@ -0,0 +1,347 @@
+/**
+ * @file ext-polystar.js
+ *
+ *
+ * @copyright 2010 CloudCanvas, Inc. All rights reserved
+ * @copyright 2021 Optimistik SAS, Inc. All rights reserved
+ * @license MIT
+ *
+ */
+
+import { loadExtensionTranslation } from "../../locale.js";
+
+const name = "polystar";
+
+export default {
+ name,
+ async init(_S) {
+ const svgEditor = this;
+ const { svgCanvas } = svgEditor;
+ const { $id } = svgCanvas;
+ let selElems;
+ let started;
+ let newFO;
+ await loadExtensionTranslation(svgEditor, name);
+
+ /**
+ * @param {boolean} on true=display
+ * @param {string} tool "star" or "polygone"
+ * @returns {void}
+ */
+ const showPanel = (on, tool) => {
+ $id(`${tool}_panel`).style.display = on ? "block" : "none";
+ };
+
+ /**
+ *
+ * @param {string} attr attribute to change
+ * @param {string|Float} val new value
+ * @returns {void}
+ */
+ const setAttr = (attr, val) => {
+ svgCanvas.changeSelectedAttribute(attr, val);
+ svgCanvas.call("changed", selElems);
+ };
+
+ /**
+ * @param {Float} n angle
+ * @return {Float} cotangeante
+ */
+ const cot = (n) => 1 / Math.tan(n);
+
+ /**
+ * @param {Float} n angle
+ * @returns {Float} sec
+ */
+ const sec = (n) => 1 / Math.cos(n);
+
+ return {
+ name: svgEditor.i18next.t(`${name}:name`),
+ // The callback should be used to load the DOM with the appropriate UI items
+ callback() {
+ // Add the button and its handler(s)
+ // Note: the star extension needs to be loaded before the polygon extension
+ const fbtitle = svgEditor.i18next.t(`${name}:title`);
+ const title_star = svgEditor.i18next.t(`${name}:buttons.0.title`);
+ const title_polygon = svgEditor.i18next.t(`${name}:buttons.1.title`);
+ const buttonTemplate = document.createElement("template");
+ // eslint-disable-next-line no-unsanitized/property
+ buttonTemplate.innerHTML = `
+
+
+
+
+
+
+ `;
+ $id("tools_left").append(buttonTemplate.content.cloneNode(true));
+ // handler
+ $id("tool_star").addEventListener("click", () => {
+ if (this.leftPanel.updateLeftPanel("tool_star")) {
+ svgCanvas.setMode("star");
+ showPanel(true, "star");
+ showPanel(false, "polygon");
+ }
+ });
+ $id("tool_polygon").addEventListener("click", () => {
+ if (this.leftPanel.updateLeftPanel("tool_polygon")) {
+ svgCanvas.setMode("polygon");
+ showPanel(true, "polygon");
+ showPanel(false, "star");
+ }
+ });
+
+ const label0 = svgEditor.i18next.t(`${name}:contextTools.0.label`);
+ const title0 = svgEditor.i18next.t(`${name}:contextTools.0.title`);
+ const label1 = svgEditor.i18next.t(`${name}:contextTools.1.label`);
+ const title1 = svgEditor.i18next.t(`${name}:contextTools.1.title`);
+ const label2 = svgEditor.i18next.t(`${name}:contextTools.2.label`);
+ const title2 = svgEditor.i18next.t(`${name}:contextTools.2.title`);
+ const label3 = svgEditor.i18next.t(`${name}:contextTools.3.label`);
+ const title3 = svgEditor.i18next.t(`${name}:contextTools.3.title`);
+ // Add the context panel and its handler(s)
+ const panelTemplate = document.createElement("template");
+ // eslint-disable-next-line no-unsanitized/property
+ panelTemplate.innerHTML = `
+
+
+
+
+
+
+
+
+
+
+
+
+ `;
+ //add handlers for the panel
+ $id("tools_top").appendChild(panelTemplate.content.cloneNode(true));
+ // don't display the panels on start
+ showPanel(false, "star");
+ showPanel(false, "polygon");
+ $id("starNumPoints").addEventListener("change", (event) => {
+ setAttr("point", event.target.value);
+ });
+ $id("RadiusMultiplier").addEventListener("change", (event) => {
+ setAttr("starRadiusMultiplier", event.target.value);
+ });
+ $id("radialShift").addEventListener("change", (event) => {
+ setAttr("radialshift", event.target.value);
+ });
+ $id("polySides").addEventListener("change", (event) => {
+ setAttr("sides", event.target.value);
+ });
+ },
+ mouseDown(opts) {
+ if (svgCanvas.getMode() === "star") {
+ const rgb = svgCanvas.getColor("fill");
+ const sRgb = svgCanvas.getColor("stroke");
+ const sWidth = svgCanvas.getStrokeWidth();
+ started = true;
+ newFO = svgCanvas.addSVGElementFromJson({
+ element: "polygon",
+ attr: {
+ cx: opts.start_x,
+ cy: opts.start_y,
+ id: svgCanvas.getNextId(),
+ shape: "star",
+ point: document.getElementById("starNumPoints").value,
+ r: 0,
+ radialshift: document.getElementById("radialShift").value,
+ r2: 0,
+ orient: "point",
+ fill: rgb,
+ strokecolor: sRgb,
+ strokeWidth: sWidth
+ }
+ });
+ return {
+ started: true
+ };
+ }
+ if (svgCanvas.getMode() === "polygon") {
+ // const e = opts.event;
+ const rgb = svgCanvas.getColor("fill");
+ // const ccRgbEl = rgb.substring(1, rgb.length);
+ const sRgb = svgCanvas.getColor("stroke");
+ // ccSRgbEl = sRgb.substring(1, rgb.length);
+ const sWidth = svgCanvas.getStrokeWidth();
+ started = true;
+ newFO = svgCanvas.addSVGElementFromJson({
+ element: "polygon",
+ attr: {
+ cx: opts.start_x,
+ cy: opts.start_y,
+ id: svgCanvas.getNextId(),
+ shape: "regularPoly",
+ sides: document.getElementById("polySides").value,
+ orient: "x",
+ edge: 0,
+ fill: rgb,
+ strokecolor: sRgb,
+ strokeWidth: sWidth
+ }
+ });
+
+ return {
+ started: true
+ };
+ }
+ return undefined;
+ },
+ mouseMove(opts) {
+ if (!started) {
+ return undefined;
+ }
+ if (svgCanvas.getMode() === "star") {
+ const cx = Number(newFO.getAttribute("cx"));
+ const cy = Number(newFO.getAttribute("cy"));
+ const point = Number(newFO.getAttribute("point"));
+ const orient = newFO.getAttribute("orient");
+ const fill = newFO.getAttribute("fill");
+ const strokecolor = newFO.getAttribute("strokecolor");
+ const strokeWidth = Number(newFO.getAttribute("strokeWidth"));
+ const radialshift = Number(newFO.getAttribute("radialshift"));
+
+ let x = opts.mouse_x;
+ let y = opts.mouse_y;
+
+ const circumradius =
+ Math.sqrt((x - cx) * (x - cx) + (y - cy) * (y - cy)) / 1.5;
+ const inradius =
+ circumradius / document.getElementById("RadiusMultiplier").value;
+ newFO.setAttribute("r", circumradius);
+ newFO.setAttribute("r2", inradius);
+
+ let polyPoints = "";
+ for (let s = 0; point >= s; s++) {
+ let angle = 2.0 * Math.PI * (s / point);
+ if (orient === "point") {
+ angle -= Math.PI / 2;
+ } else if (orient === "edge") {
+ angle = angle + Math.PI / point - Math.PI / 2;
+ }
+
+ x = circumradius * Math.cos(angle) + cx;
+ y = circumradius * Math.sin(angle) + cy;
+
+ polyPoints += x + "," + y + " ";
+
+ if (!isNaN(inradius)) {
+ angle = 2.0 * Math.PI * (s / point) + Math.PI / point;
+ if (orient === "point") {
+ angle -= Math.PI / 2;
+ } else if (orient === "edge") {
+ angle = angle + Math.PI / point - Math.PI / 2;
+ }
+ angle += radialshift;
+
+ x = inradius * Math.cos(angle) + cx;
+ y = inradius * Math.sin(angle) + cy;
+
+ polyPoints += x + "," + y + " ";
+ }
+ }
+ newFO.setAttribute("points", polyPoints);
+ newFO.setAttribute("fill", fill);
+ newFO.setAttribute("stroke", strokecolor);
+ newFO.setAttribute("stroke-width", strokeWidth);
+ /* const shape = */ newFO.getAttribute("shape");
+
+ return {
+ started: true
+ };
+ }
+ if (svgCanvas.getMode() === "polygon") {
+ const cx = Number(newFO.getAttribute("cx"));
+ const cy = Number(newFO.getAttribute("cy"));
+ const sides = Number(newFO.getAttribute("sides"));
+ // const orient = newFO.getAttribute('orient');
+ const fill = newFO.getAttribute("fill");
+ const strokecolor = newFO.getAttribute("strokecolor");
+ const strokeWidth = Number(newFO.getAttribute("strokeWidth"));
+
+ let x = opts.mouse_x;
+ let y = opts.mouse_y;
+
+ const edg =
+ Math.sqrt((x - cx) * (x - cx) + (y - cy) * (y - cy)) / 1.5;
+ newFO.setAttribute("edge", edg);
+
+ const inradius = (edg / 2) * cot(Math.PI / sides);
+ const circumradius = inradius * sec(Math.PI / sides);
+ let points = "";
+ for (let s = 0; sides >= s; s++) {
+ const angle = (2.0 * Math.PI * s) / sides;
+ x = circumradius * Math.cos(angle) + cx;
+ y = circumradius * Math.sin(angle) + cy;
+
+ points += x + "," + y + " ";
+ }
+
+ // const poly = newFO.createElementNS(NS.SVG, 'polygon');
+ newFO.setAttribute("points", points);
+ newFO.setAttribute("fill", fill);
+ newFO.setAttribute("stroke", strokecolor);
+ newFO.setAttribute("stroke-width", strokeWidth);
+ return {
+ started: true
+ };
+ }
+ return undefined;
+ },
+ mouseUp() {
+ if (svgCanvas.getMode() === "star") {
+ const r = newFO.getAttribute("r");
+ return {
+ keep: r !== "0",
+ element: newFO
+ };
+ }
+ if (svgCanvas.getMode() === "polygon") {
+ const edge = newFO.getAttribute("edge");
+ const keep = edge !== "0";
+ // svgCanvas.addToSelection([newFO], true);
+ return {
+ keep,
+ element: newFO
+ };
+ }
+ return undefined;
+ },
+ selectedChanged(opts) {
+ // Use this to update the current selected elements
+ selElems = opts.elems;
+
+ let i = selElems.length;
+ while (i--) {
+ const elem = selElems[i];
+ if (elem && elem.getAttribute("shape") === "star") {
+ if (opts.selectedElement && !opts.multiselected) {
+ $id("starNumPoints").value = elem.getAttribute("point");
+ $id("radialShift").value = elem.getAttribute("radialshift");
+ showPanel(true, "star");
+ } else {
+ showPanel(false, "star");
+ }
+ } else if (elem && elem.getAttribute("shape") === "regularPoly") {
+ if (opts.selectedElement && !opts.multiselected) {
+ $id("polySides").value = elem.getAttribute("sides");
+ showPanel(true, "polygon");
+ } else {
+ showPanel(false, "polygon");
+ }
+ } else {
+ showPanel(false, "star");
+ showPanel(false, "polygon");
+ }
+ }
+ },
+ elementChanged(_opts) {
+ // const elem = opts.elems[0];
+ }
+ };
+ }
+};
diff --git a/src/editor/extensions/ext-star/locale/en.js b/src/editor/extensions/ext-polystar/locale/en.js
similarity index 76%
rename from src/editor/extensions/ext-star/locale/en.js
rename to src/editor/extensions/ext-polystar/locale/en.js
index 080cc46c..cbfd82a6 100644
--- a/src/editor/extensions/ext-star/locale/en.js
+++ b/src/editor/extensions/ext-polystar/locale/en.js
@@ -4,6 +4,9 @@ export default {
buttons: [
{
title: 'Star Tool'
+ },
+ {
+ title: 'Polygon Tool'
}
],
contextTools: [
@@ -18,6 +21,10 @@ export default {
{
title: 'Twists the star',
label: 'Radial Shift'
+ },
+ {
+ title: 'Number of Sides',
+ label: 'sides'
}
]
};
diff --git a/src/editor/extensions/ext-star/locale/fr.js b/src/editor/extensions/ext-polystar/locale/fr.js
similarity index 76%
rename from src/editor/extensions/ext-star/locale/fr.js
rename to src/editor/extensions/ext-polystar/locale/fr.js
index 0526905b..beac1c3a 100644
--- a/src/editor/extensions/ext-star/locale/fr.js
+++ b/src/editor/extensions/ext-polystar/locale/fr.js
@@ -4,6 +4,9 @@ export default {
buttons: [
{
title: 'Outil Etoile'
+ },
+ {
+ title: 'Outil Polygone'
}
],
contextTools: [
@@ -18,6 +21,10 @@ export default {
{
title: 'Torsion Etoile',
label: 'Décalage Radial'
+ },
+ {
+ title: 'Nombre de côtés',
+ label: 'côtés'
}
]
};
diff --git a/src/editor/extensions/ext-star/locale/zh-CN.js b/src/editor/extensions/ext-polystar/locale/zh-CN.js
similarity index 75%
rename from src/editor/extensions/ext-star/locale/zh-CN.js
rename to src/editor/extensions/ext-polystar/locale/zh-CN.js
index 0d7b256d..9e5cc31b 100755
--- a/src/editor/extensions/ext-star/locale/zh-CN.js
+++ b/src/editor/extensions/ext-polystar/locale/zh-CN.js
@@ -4,6 +4,9 @@ export default {
buttons: [
{
title: '星形工具'
+ },
+ {
+ title: '多边形工具'
}
],
contextTools: [
@@ -18,6 +21,10 @@ export default {
{
title: '径向',
label: '径向'
+ },
+ {
+ title: '边数',
+ label: '边数'
}
]
};
diff --git a/src/editor/extensions/ext-star/ext-star.js b/src/editor/extensions/ext-star/ext-star.js
deleted file mode 100644
index 7ab42b52..00000000
--- a/src/editor/extensions/ext-star/ext-star.js
+++ /dev/null
@@ -1,231 +0,0 @@
-/**
- * @file ext-star.js
- *
- *
- * @copyright 2010 CloudCanvas, Inc. All rights reserved
- *
- */
-
- import { loadExtensionTranslation } from '../../locale.js';
-
- const name = "star";
-
- export default {
- name,
- async init (_S) {
- const svgEditor = this;
- const { svgCanvas } = svgEditor;
- const { $id } = svgCanvas;
- let selElems;
- let started;
- let newFO;
- await loadExtensionTranslation(svgEditor, name);
-
- /**
- *
- * @param {boolean} on
- * @returns {void}
- */
- const showPanel = (on) => {
- $id('star_panel').style.display = (on) ? 'block' : 'none';
- };
-
- /**
- *
- * @param {string} attr
- * @param {string|Float} val
- * @returns {void}
- */
- const setAttr = (attr, val) => {
- svgCanvas.changeSelectedAttribute(attr, val);
- svgCanvas.call('changed', selElems);
- };
-
- return {
- name: svgEditor.i18next.t(`${name}:name`),
- // The callback should be used to load the DOM with the appropriate UI items
- callback () {
- // Add the button and its handler(s)
- // Note: the star extension needs to be loaded before the polygon extension
- const fbtitle = svgEditor.i18next.t(`${name}:title`);
- const title = svgEditor.i18next.t(`${name}:buttons.0.title`);
- const buttonTemplate = document.createElement("template");
- // eslint-disable-next-line no-unsanitized/property
- buttonTemplate.innerHTML = `
-
-
-
-
- `;
- $id('tools_left').append(buttonTemplate.content.cloneNode(true));
- // handler
- $id('tool_star').addEventListener("click", () => { showPanel(true);
- if (this.leftPanel.updateLeftPanel('tool_polygon')) {
- svgCanvas.setMode('star');
- showPanel(true);
- }
- });
-
- const label0 = svgEditor.i18next.t(`${name}:contextTools.0.label`);
- const title0 = svgEditor.i18next.t(`${name}:contextTools.0.title`);
- const label1 = svgEditor.i18next.t(`${name}:contextTools.1.label`);
- const title1 = svgEditor.i18next.t(`${name}:contextTools.1.title`);
- const label2 = svgEditor.i18next.t(`${name}:contextTools.2.label`);
- const title2 = svgEditor.i18next.t(`${name}:contextTools.2.title`);
- // Add the context panel and its handler(s)
- const panelTemplate = document.createElement("template");
- // eslint-disable-next-line no-unsanitized/property
- panelTemplate.innerHTML = `
-
-
-
-
-
-
-
-
- `;
- //add handlers for the panel
- $id('tools_top').appendChild(panelTemplate.content.cloneNode(true));
- $id("starNumPoints").addEventListener("change", (event) => {
- setAttr('point', event.target.value);
- });
- $id("RadiusMultiplier").addEventListener("change", (event) => {
- setAttr('starRadiusMultiplier', event.target.value);
- });
- $id("radialShift").addEventListener("change", (event) => {
- setAttr('radialshift', event.target.value);
- });
- // don't display the star panel on start
- $id("star_panel").style.display = 'none';
- },
- mouseDown (opts) {
- const rgb = svgCanvas.getColor('fill');
- const sRgb = svgCanvas.getColor('stroke');
- const sWidth = svgCanvas.getStrokeWidth();
-
- if (svgCanvas.getMode() === 'star') {
- started = true;
-
- newFO = svgCanvas.addSVGElementFromJson({
- element: 'polygon',
- attr: {
- cx: opts.start_x,
- cy: opts.start_y,
- id: svgCanvas.getNextId(),
- shape: 'star',
- point: document.getElementById('starNumPoints').value,
- r: 0,
- radialshift: document.getElementById('radialShift').value,
- r2: 0,
- orient: 'point',
- fill: rgb,
- strokecolor: sRgb,
- strokeWidth: sWidth
- }
- });
- return {
- started: true
- };
- }
- return undefined;
- },
- mouseMove (opts) {
- if (!started) {
- return undefined;
- }
- if (svgCanvas.getMode() === 'star') {
- const cx = Number(newFO.getAttribute('cx'));
- const cy = Number(newFO.getAttribute('cy'));
- const point = Number(newFO.getAttribute('point'));
- const orient = newFO.getAttribute('orient');
- const fill = newFO.getAttribute('fill');
- const strokecolor = newFO.getAttribute('strokecolor');
- const strokeWidth = Number(newFO.getAttribute('strokeWidth'));
- const radialshift = Number(newFO.getAttribute('radialshift'));
-
- let x = opts.mouse_x;
- let y = opts.mouse_y;
-
- const circumradius = (Math.sqrt((x - cx) * (x - cx) + (y - cy) * (y - cy))) / 1.5;
- const inradius = circumradius / document.getElementById('RadiusMultiplier').value;
- newFO.setAttribute('r', circumradius);
- newFO.setAttribute('r2', inradius);
-
- let polyPoints = '';
- for (let s = 0; point >= s; s++) {
- let angle = 2.0 * Math.PI * (s / point);
- if (orient === 'point') {
- angle -= (Math.PI / 2);
- } else if (orient === 'edge') {
- angle = (angle + (Math.PI / point)) - (Math.PI / 2);
- }
-
- x = (circumradius * Math.cos(angle)) + cx;
- y = (circumradius * Math.sin(angle)) + cy;
-
- polyPoints += x + ',' + y + ' ';
-
- if (!isNaN(inradius)) {
- angle = (2.0 * Math.PI * (s / point)) + (Math.PI / point);
- if (orient === 'point') {
- angle -= (Math.PI / 2);
- } else if (orient === 'edge') {
- angle = (angle + (Math.PI / point)) - (Math.PI / 2);
- }
- angle += radialshift;
-
- x = (inradius * Math.cos(angle)) + cx;
- y = (inradius * Math.sin(angle)) + cy;
-
- polyPoints += x + ',' + y + ' ';
- }
- }
- newFO.setAttribute('points', polyPoints);
- newFO.setAttribute('fill', fill);
- newFO.setAttribute('stroke', strokecolor);
- newFO.setAttribute('stroke-width', strokeWidth);
- /* const shape = */ newFO.getAttribute('shape');
-
- return {
- started: true
- };
- }
- return undefined;
- },
- mouseUp () {
- if (svgCanvas.getMode() === 'star') {
- const r = newFO.getAttribute('r');
- return {
- keep: (r !== '0'),
- element: newFO
- };
- }
- return undefined;
- },
- selectedChanged (opts) {
- // Use this to update the current selected elements
- selElems = opts.elems;
-
- let i = selElems.length;
- while (i--) {
- const elem = selElems[i];
- if (elem && elem.getAttribute('shape') === 'star') {
- if (opts.selectedElement && !opts.multiselected) {
- $id('starNumPoints').value = elem.getAttribute('point');
- $id('radialShift').value = elem.getAttribute('radialshift');
- showPanel(true);
- } else {
- showPanel(false);
- }
- } else {
- showPanel(false);
- }
- }
- },
- elementChanged (_opts) {
- // const elem = opts.elems[0];
- }
- };
- }
-};
diff --git a/src/editor/extensions/ext-webappfind/ext-webappfind.js b/src/editor/extensions/ext-webappfind/ext-webappfind.js
index 57ebc2cc..a65543f9 100644
--- a/src/editor/extensions/ext-webappfind/ext-webappfind.js
+++ b/src/editor/extensions/ext-webappfind/ext-webappfind.js
@@ -32,20 +32,18 @@ export default {
this.canvas.bind(
'message',
/**
- * @param {external:Window} win
- * @param {PlainObject} info
- * @param {module:svgcanvas.SvgCanvas#event:message} info.data
- * @param {string} info.origin
- * @listens module:svgcanvas.SvgCanvas#event:message
- * @throws {Error} Unexpected event type
- * @returns {void}
- */
+ *
+ * @param {external:Window} win external Window handler
+ * @param {*} param1 info
+ * @returns {void}
+ */
(win, { data, origin }) => {
let type, content;
try {
({ type, pathID, content } = data.webappfind); // May throw if data is not an object
if (origin !== location.origin || // We are only interested in a message sent as though within this URL by our browser add-on
- excludedMessages.includes(type) // Avoid our post below (other messages might be possible in the future which may also need to be excluded if your subsequent code makes assumptions on the type of message this is)
+ // Avoid our post below (other msgs might be possible which may need to be excluded if code makes assumptions on the type of message)
+ excludedMessages.includes(type)
) {
return;
}
From 858dba04b0c6ea8f583cf6803f41135b827a13b7 Mon Sep 17 00:00:00 2001
From: JFH <20402845+jfhenon@users.noreply.github.com>
Date: Sat, 15 May 2021 17:55:21 +0200
Subject: [PATCH 17/17] Update scenario.js.snap
---
cypress/integration/ui/__snapshots__/scenario.js.snap | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/cypress/integration/ui/__snapshots__/scenario.js.snap b/cypress/integration/ui/__snapshots__/scenario.js.snap
index ba1acc15..37b89438 100644
--- a/cypress/integration/ui/__snapshots__/scenario.js.snap
+++ b/cypress/integration/ui/__snapshots__/scenario.js.snap
@@ -623,12 +623,12 @@ exports[`use various parts of svg-edit > check tool_star #0`] = `
point="5"
r="66.66666666666667"
radialshift="0"
- r2="13.333333333333334"
+ r2="22.222222222222225"
orient="point"
fill="#ffff00"
strokecolor="#000000"
strokewidth="0"
- points="370,135.33333333333331 377.83713669723295,191.21310674166736 433.40376775301024,181.39886704167017 382.68075355060205,206.12022659166595 409.18568348616486,255.93446629166317 370,215.33333333333334 330.81431651383514,255.93446629166317 357.31924644939795,206.12022659166595 306.59623224698976,181.39886704167017 362.16286330276705,191.21310674166736 370,135.33333333333331 377.83713669723295,191.21310674166736 "
+ points="370,135.33333333333331 383.0618944953883,184.02184456944562 433.40376775301024,181.39886704167017 391.13458925100343,208.86704431944327 409.18568348616486,255.93446629166317 370,224.22222222222223 330.81431651383514,255.93446629166317 348.86541074899657,208.86704431944327 306.59623224698976,181.39886704167017 356.9381055046117,184.02184456944562 370,135.33333333333331 383.0618944953883,184.02184456944562 "
stroke="#000000"
stroke-width="0"
>
@@ -713,12 +713,12 @@ exports[`use various parts of svg-edit > check tool_polygon #0`] = `
point="5"
r="66.66666666666667"
radialshift="0"
- r2="13.333333333333334"
+ r2="22.222222222222225"
orient="point"
fill="#ffff00"
strokecolor="#000000"
strokewidth="0"
- points="370,135.33333333333331 377.83713669723295,191.21310674166736 433.40376775301024,181.39886704167017 382.68075355060205,206.12022659166595 409.18568348616486,255.93446629166317 370,215.33333333333334 330.81431651383514,255.93446629166317 357.31924644939795,206.12022659166595 306.59623224698976,181.39886704167017 362.16286330276705,191.21310674166736 370,135.33333333333331 377.83713669723295,191.21310674166736 "
+ points="370,135.33333333333331 383.0618944953883,184.02184456944562 433.40376775301024,181.39886704167017 391.13458925100343,208.86704431944327 409.18568348616486,255.93446629166317 370,224.22222222222223 330.81431651383514,255.93446629166317 348.86541074899657,208.86704431944327 306.59623224698976,181.39886704167017 356.9381055046117,184.02184456944562 370,135.33333333333331 383.0618944953883,184.02184456944562 "
stroke="#000000"
stroke-width="0"
fill-opacity="1"