diff --git a/.eslintignore b/.eslintignore index d58eb9c1..d5d7c931 100644 --- a/.eslintignore +++ b/.eslintignore @@ -25,7 +25,12 @@ src/editor/jspdf/underscore-min.js src/editor/extensions/mathjax # Todo: We should at least check `compat/compat` in our other files, however -src/external +## Two "external" items are modified locally, so we undo their ignoring +src/external/* +!src/external/dom-polyfill +src/external/dom-polyfill/* +!src/external/dom-polyfill/dom-polyfill.js +!src/external/dynamic-import-polyfill mochawesome-report releases diff --git a/.eslintrc.js b/.eslintrc.js index 52e284cb..44f15d2e 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -47,7 +47,7 @@ module.exports = { 'src/editor/typedefs.js', 'src/editor/redirect-on-no-module-support.js', 'src/editor/extensions/imagelib/index.js', - 'src/editor/external/dom-polyfill/dom-polyfill.js', + 'src/external/dom-polyfill/dom-polyfill.js', 'docs/screencasts/svgopen2010/script.js' ], rules: { @@ -121,7 +121,7 @@ module.exports = { // Dis-apply Node rules mistakenly giving errors with browser files, // and treating Node global `root` as being present for shadowing { - files: ['src/editor/**'], + files: ['src/editor/**', 'src/external/**'], globals: { root: 'off' }, diff --git a/build/build-html.js b/build/build-html.js index 393f6db1..bf95ef7a 100644 --- a/build/build-html.js +++ b/build/build-html.js @@ -3,18 +3,18 @@ import fs from 'promise-fs'; const filesAndReplacements = [ { - input: 'editor/svg-editor-es.html', - output: 'editor/xdomain-svg-editor-es.html', + input: 'src/editor/svg-editor-es.html', + output: 'src/editor/xdomain-svg-editor-es.html', replacements: [ [ - '', + '', '' ] ] }, { - input: 'editor/xdomain-svg-editor-es.html', - output: 'editor/xdomain-svg-editor.html', + input: 'src/editor/xdomain-svg-editor-es.html', + output: 'src/editor/xdomain-svg-editor.html', replacements: [ [ '', @@ -23,15 +23,15 @@ const filesAndReplacements = [ ], [ '', - '' + '' ], [ '', '' ], [ - '', - '' + '', + '' ], [ '', @@ -41,8 +41,8 @@ const filesAndReplacements = [ }, // Now that file has copied, we can replace the DOCTYPE in xdomain { - input: 'editor/xdomain-svg-editor-es.html', - output: 'editor/xdomain-svg-editor-es.html', + input: 'src/editor/xdomain-svg-editor-es.html', + output: 'src/editor/xdomain-svg-editor-es.html', replacements: [ [ '', @@ -52,8 +52,8 @@ const filesAndReplacements = [ ] }, { - input: 'editor/svg-editor-es.html', - output: 'editor/svg-editor.html', + input: 'src/editor/svg-editor-es.html', + output: 'src/editor/svg-editor.html', replacements: [ [ '', @@ -62,15 +62,15 @@ const filesAndReplacements = [ ], [ '', - '' + '' ], [ - '', - '' + '', + '' ], [ - '', - '' + '', + '' ], [ '', @@ -79,8 +79,8 @@ const filesAndReplacements = [ ] }, { - input: 'editor/extensions/imagelib/openclipart-es.html', - output: 'editor/extensions/imagelib/openclipart.html', + input: 'src/editor/extensions/imagelib/openclipart-es.html', + output: 'src/editor/extensions/imagelib/openclipart.html', replacements: [ [ '', @@ -89,11 +89,11 @@ const filesAndReplacements = [ ], [ '', - '' + '' ], [ '', - '' + '' ], [ '', @@ -102,8 +102,8 @@ const filesAndReplacements = [ ] }, { - input: 'editor/extensions/imagelib/index-es.html', - output: 'editor/extensions/imagelib/index.html', + input: 'src/editor/extensions/imagelib/index-es.html', + output: 'src/editor/extensions/imagelib/index.html', replacements: [ [ '', @@ -112,7 +112,7 @@ const filesAndReplacements = [ ], [ '', - '' + '' ], [ '', diff --git a/docs/jsdoc-config.js b/docs/jsdoc-config.js index 38974102..2bef4b19 100644 --- a/docs/jsdoc-config.js +++ b/docs/jsdoc-config.js @@ -61,7 +61,7 @@ module.exports = { 'cypress', 'node_modules', 'dist', - 'editor/external', + 'external', 'screencasts', 'test' ], diff --git a/licenseInfo.json b/licenseInfo.json index a5050316..4744dc1e 100644 --- a/licenseInfo.json +++ b/licenseInfo.json @@ -11,11 +11,11 @@ "deparam" ], "filesByLicense": { - "(MIT OR GPL-2.0)": ["editor/jquery-ui/jquery-ui-1.8.17.custom.min.js", "editor/jquerybbq/jquery.bbq.min.js", "editor/js-hotkeys/jquery.hotkeys.min.js"], - "(MIT OR GPL-2.0-or-later)": ["editor/contextmenu/jQuery.contextMenu.js", "editor/extensions/ext-server_moinsave.js"], - "Apache-2.0": ["editor/contextmenu.js", "editor/extensions/ext-foreignobject.js", "editor/extensions/ext-grid.js", "editor/extensions/ext-markers.js", "screencasts/svgopen2010/index.html", "editor/jgraduate/jQuery.jGraduate.js", "editor/extensions/mathjax/MathJax.min.js", "editor/extensions/mathjax/TeX-AMS-MML_SVG.js"], - "ISC": ["editor/external/query-result/esm/index.js"], - "LGPL-3.0-or-later": ["editor/jspdf/jspdf.plugin.svgToPdf.js"], - "X11": ["editor/jspdf/jspdf.min.js"] + "(MIT OR GPL-2.0)": ["src/editor/jquery-ui/jquery-ui-1.8.17.custom.min.js", "src/editor/jquerybbq/jquery.bbq.min.js", "src/editor/js-hotkeys/jquery.hotkeys.min.js"], + "(MIT OR GPL-2.0-or-later)": ["src/editor/contextmenu/jQuery.contextMenu.js", "src/editor/extensions/ext-server_moinsave.js"], + "Apache-2.0": ["src/editor/contextmenu.js", "src/editor/extensions/ext-foreignobject.js", "src/editor/extensions/ext-grid.js", "src/editor/extensions/ext-markers.js", "screencasts/svgopen2010/index.html", "src/editor/jgraduate/jQuery.jGraduate.js", "src/editor/extensions/mathjax/MathJax.min.js", "src/editor/extensions/mathjax/TeX-AMS-MML_SVG.js"], + "ISC": ["external/query-result/esm/index.js"], + "LGPL-3.0-or-later": ["src/editor/jspdf/jspdf.plugin.svgToPdf.js"], + "X11": ["src/editor/jspdf/jspdf.min.js"] } } diff --git a/package.json b/package.json index 71683870..0583b061 100644 --- a/package.json +++ b/package.json @@ -40,9 +40,9 @@ "open-cov-no-start": "open-cli http://localhost:8000/coverage/", "open-cov": "run-p start open-cov-no-start", "instrument:replace-html": "frs-replace \"../svgedit-config-es.js\" \"svgedit-config-es.js\" -i instrumented/svg-editor-es.html -o instrumented/svg-editor-es.html", - "instrument:replace-js": "frs-replace \"editor/svg-editor.js\" \"svg-editor.js\" -i svgedit-config-es.js -o instrumented/svgedit-config-es.js", + "instrument:replace-js": "frs-replace \"src/editor/svg-editor.js\" \"svg-editor.js\" -i svgedit-config-es.js -o instrumented/svgedit-config-es.js", "instrument:copy-excluded": "node cypress/support/copy.js", - "copy-instrumented": "copyfiles -e \"**/*.js\" -u 1 \"editor/**/*\" instrumented && npm run instrument:replace-html && npm run instrument:replace-js && npm run instrument:copy-excluded", + "copy-instrumented": "copyfiles -e \"**/*.js\" -u 1 \"src/editor/**/*\" instrumented && npm run instrument:replace-html && npm run instrument:replace-js && npm run instrument:copy-excluded", "instrument": "rimraf instrumented && nyc instrument editor instrumented && npm run copy-instrumented", "report": "run-s report-no-mochawesome mochawesome-cli", "report-summary": "run-s report-text-summary mochawesome-cli-dot", @@ -50,8 +50,8 @@ "license-badge-dev": "license-badger --corrections --filteredTypes=nonempty --textTemplate \"License types\n(all devDeps)\" --allDevelopment badges/licenses-badge-dev.svg", "license-badges": "run-s license-badge license-badge-dev", "coverage-badge": "coveradge badges/coverage-badge", - "compress-images": "imageoptim \"editor/extensions/*.png\" \"editor/spinbtn/*.png\" \"editor/jgraduate/images/*.{png,gif}\" \"editor/images/*.png\"", - "copy": "copyfiles -f node_modules/load-stylesheets/dist/index-es.js editor/external/load-stylesheets && copyfiles -f node_modules/jamilih/dist/jml-es.js editor/external/jamilih && copyfiles -f node_modules/query-result/esm/index.js editor/external/query-result/esm && copyfiles -f node_modules/qr-manipulation/dist/index-es.js editor/external/qr-manipulation/dist && copyfiles -f node_modules/stackblur-canvas/dist/stackblur-es.js editor/external/stackblur-canvas/dist && copyfiles -f node_modules/regenerator-runtime/runtime.js editor/external/regenerator-runtime && copyfiles -f \"node_modules/core-js-bundle//minified*\" editor/external/core-js-bundle && copyfiles -f \"node_modules/underscore/underscore-*\" editor/jspdf && copyfiles -f \"node_modules/deparam/dist/deparam.esm.js\" editor/external/deparam", + "compress-images": "imageoptim \"src/editor/extensions/*.png\" \"src/editor/spinbtn/*.png\" \"src/editor/jgraduate/images/*.{png,gif}\" \"src/editor/images/*.png\"", + "copy": "copyfiles -f node_modules/load-stylesheets/dist/index-es.js src/external/load-stylesheets && copyfiles -f node_modules/jamilih/dist/jml-es.js editor/external/jamilih && copyfiles -f node_modules/query-result/esm/index.js editor/external/query-result/esm && copyfiles -f node_modules/qr-manipulation/dist/index-es.js editor/external/qr-manipulation/dist && copyfiles -f node_modules/stackblur-canvas/dist/stackblur-es.js editor/external/stackblur-canvas/dist && copyfiles -f node_modules/regenerator-runtime/runtime.js editor/external/regenerator-runtime && copyfiles -f \"node_modules/core-js-bundle//minified*\" editor/external/core-js-bundle && copyfiles -f \"node_modules/underscore/underscore-*\" editor/jspdf && copyfiles -f \"node_modules/deparam/dist/deparam.esm.js\" editor/external/deparam", "remark": "remark -q -f .", "build-html": "babel-node --plugins @babel/plugin-transform-modules-commonjs build/build-html.js", "eslint-fix": "eslint --cache --fix --ext js,md,html .", @@ -83,13 +83,13 @@ }, "nyc": { "exclude": [ - "editor/external/**", - "editor/jquery.min.js", - "editor/jquery-ui/**", - "editor/js-hotkeys/**", - "editor/jspdf/jspdf.min.js", - "editor/jspdf/underscore-min.js", - "editor/spinbtn/**" + "src/external/**", + "src/editor/jquery.min.js", + "src/editor/jquery-ui/**", + "src/editor/js-hotkeys/**", + "src/editor/jspdf/jspdf.min.js", + "src/editor/jspdf/underscore-min.js", + "src/editor/spinbtn/**" ], "reporter": [ "json-summary", diff --git a/rollup-config.config.js b/rollup-config.config.js index 6b5bb5db..cb9d9ff9 100644 --- a/rollup-config.config.js +++ b/rollup-config.config.js @@ -45,10 +45,10 @@ export default [ plugins }, { - input: 'editor/xdomain-svgedit-config-es.js', + input: 'src/editor/xdomain-svgedit-config-es.js', output: { format: 'iife', - file: 'editor/xdomain-svgedit-config-iife.js' + file: 'src/editor/xdomain-svgedit-config-iife.js' }, plugins } diff --git a/rollup.config.js b/rollup.config.js index fd1b1abd..a767716d 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -10,8 +10,8 @@ import babel from '@rollup/plugin-babel'; import {terser} from 'rollup-plugin-terser'; import replace from 'rollup-plugin-re'; -const localeFiles = readdirSync('editor/locale'); -const extensionFiles = readdirSync('editor/extensions'); +const localeFiles = readdirSync('src/editor/locale'); +const extensionFiles = readdirSync('src/editor/extensions'); const isDirectory = (source) => { return lstatSync(source).isDirectory(); @@ -19,7 +19,7 @@ const isDirectory = (source) => { const getDirectories = (source) => { return readdirSync(source).map((nme) => join(source, nme)).filter((i) => isDirectory(i)); }; -const extensionLocaleDirs = getDirectories('editor/extensions/ext-locale'); +const extensionLocaleDirs = getDirectories('src/editor/extensions/ext-locale'); const extensionLocaleFiles = []; extensionLocaleDirs.forEach((dir) => { readdirSync(dir).forEach((file) => { @@ -41,7 +41,7 @@ extensionLocaleDirs.forEach((dir) => { */ function getRollupObject ({minifying, format = 'umd'} = {}) { const nonMinified = { - input: 'editor/svg-editor.js', + input: 'src/editor/svg-editor.js', output: { format, sourcemap: minifying, @@ -78,7 +78,7 @@ export default [ // **/ ...[true, false].map((min) => { return { - input: 'editor/svgcanvas.js', + input: 'src/svgcanvas/svgcanvas.js', output: { format: 'iife', sourcemap: min, @@ -109,7 +109,7 @@ export default [ }; }), { - input: 'editor/redirect-on-lacking-support.js', + input: 'src/editor/redirect-on-lacking-support.js', output: { format: 'iife', file: 'dist/redirect-on-lacking-support.js' @@ -119,7 +119,7 @@ export default [ })] }, { - input: 'editor/jspdf/jspdf.plugin.svgToPdf.js', + input: 'src/editor/jspdf/jspdf.plugin.svgToPdf.js', output: { format: 'iife', file: 'dist/jspdf.plugin.svgToPdf.js' @@ -129,7 +129,7 @@ export default [ })] }, { - input: 'editor/extensions/imagelib/index.js', + input: 'src/editor/extensions/imagelib/index.js', output: { format: 'iife', file: 'dist/extensions/imagelib/index.js' @@ -142,7 +142,7 @@ export default [ ] }, { - input: 'editor/extensions/imagelib/openclipart.js', + input: 'src/editor/extensions/imagelib/openclipart.js', output: { format: 'iife', file: 'dist/extensions/imagelib/openclipart.js' @@ -155,7 +155,7 @@ export default [ ] }, { - input: 'editor/external/dom-polyfill/dom-polyfill.js', + input: 'src/external/dom-polyfill/dom-polyfill.js', output: { format: 'iife', file: 'dist/dom-polyfill.js' @@ -165,7 +165,7 @@ export default [ })] }, { - input: 'editor/canvg/canvg.js', + input: 'src/editor/canvg/canvg.js', output: { format: 'iife', name: 'canvg', @@ -183,7 +183,7 @@ export default [ return undefined; } return { - input: 'editor/locale/' + localeFile, + input: 'src/editor/locale/' + localeFile, output: { format: 'iife', name: 'svgEditorLang_' + lang[1].replace(/-/g, '_'), @@ -201,7 +201,7 @@ export default [ if (extensionFile.match(/\.php$/)) { mkdirSync('dist/extensions', {recursive: true}); copyFileSync( - join('editor/extensions', extensionFile), + join('src/editor/extensions', extensionFile), join('dist/extensions', extensionFile) ); return undefined; @@ -212,7 +212,7 @@ export default [ return undefined; } return { - input: 'editor/extensions/' + extensionFile, + input: 'src/editor/extensions/' + extensionFile, output: { format: 'iife', name: 'svgEditorExtension_' + extensionName[1].replace(/-/g, '_'), diff --git a/src/editor/extensions/imagelib/index.html b/src/editor/extensions/imagelib/index.html index 12a0c89e..9aec0ecd 100644 --- a/src/editor/extensions/imagelib/index.html +++ b/src/editor/extensions/imagelib/index.html @@ -17,7 +17,7 @@ - +
diff --git a/src/editor/extensions/imagelib/openclipart.html b/src/editor/extensions/imagelib/openclipart.html index 78616166..866a8d17 100644 --- a/src/editor/extensions/imagelib/openclipart.html +++ b/src/editor/extensions/imagelib/openclipart.html @@ -11,13 +11,13 @@ - + - + diff --git a/src/editor/svg-editor.html b/src/editor/svg-editor.html index 5c208ea8..a3b94a95 100644 --- a/src/editor/svg-editor.html +++ b/src/editor/svg-editor.html @@ -25,21 +25,21 @@ - + - + - - + + - + - + - - + + diff --git a/src/editor/xdomain-svg-editor.html b/src/editor/xdomain-svg-editor.html index 2a97354b..587adc86 100644 --- a/src/editor/xdomain-svg-editor.html +++ b/src/editor/xdomain-svg-editor.html @@ -25,17 +25,17 @@ - + - + - - + + diff --git a/src/editor/xdomain-svgedit-config-iife.js b/src/editor/xdomain-svgedit-config-iife.js index 7a3abeb7..6c21074f 100644 --- a/src/editor/xdomain-svgedit-config-iife.js +++ b/src/editor/xdomain-svgedit-config-iife.js @@ -1,306 +1,6 @@ (function () { 'use strict'; - function _typeof(obj) { - "@babel/helpers - typeof"; - - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function (obj) { - return typeof obj; - }; - } else { - _typeof = function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - - return _typeof(obj); - } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - function _asyncToGenerator(fn) { - return function () { - var self = this, - args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function _extends() { - _extends = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - - return target; - }; - - return _extends.apply(this, arguments); - } - - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - - return _setPrototypeOf(o, p); - } - - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) return false; - if (Reflect.construct.sham) return false; - if (typeof Proxy === "function") return true; - - try { - Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); - return true; - } catch (e) { - return false; - } - } - - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - - return self; - } - - function _possibleConstructorReturn(self, call) { - if (call && (typeof call === "object" || typeof call === "function")) { - return call; - } - - return _assertThisInitialized(self); - } - - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), - result; - - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - - return _possibleConstructorReturn(this, result); - }; - } - - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } - - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - function _iterableToArray(iter) { - if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); - } - - function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - - return _arr; - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - - for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; - - return arr2; - } - - function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function _createForOfIteratorHelper(o, allowArrayLike) { - var it; - - if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - - var F = function () {}; - - return { - s: F, - n: function () { - if (i >= o.length) return { - done: true - }; - return { - done: false, - value: o[i++] - }; - }, - e: function (e) { - throw e; - }, - f: F - }; - } - - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - var normalCompletion = true, - didErr = false, - err; - return { - s: function () { - it = o[Symbol.iterator](); - }, - n: function () { - var step = it.next(); - normalCompletion = step.done; - return step; - }, - e: function (e) { - didErr = true; - err = e; - }, - f: function () { - try { - if (!normalCompletion && it.return != null) it.return(); - } finally { - if (didErr) throw err; - } - } - }; - } - // http://ross.posterous.com/2008/08/19/iphone-touch-events-in-javascript/ /** @@ -309,9 +9,11 @@ * @returns {void} */ function touchHandler(ev) { - var changedTouches = ev.changedTouches, - first = changedTouches[0]; - var type = ''; + const { + changedTouches + } = ev, + first = changedTouches[0]; + let type = ''; switch (ev.type) { case 'touchstart': @@ -330,12 +32,14 @@ return; } - var screenX = first.screenX, - screenY = first.screenY, - clientX = first.clientX, - clientY = first.clientY; // eslint-disable-line no-shadow + const { + screenX, + screenY, + clientX, + clientY + } = first; // eslint-disable-line no-shadow - var simulatedEvent = new MouseEvent(type, { + const simulatedEvent = new MouseEvent(type, { // Event interface bubbles: true, cancelable: true, @@ -344,10 +48,10 @@ detail: 1, // click count // MouseEvent interface (customized) - screenX: screenX, - screenY: screenY, - clientX: clientX, - clientY: clientY, + screenX, + screenY, + clientX, + clientY, // MouseEvent interface (defaults) - these could be removed ctrlKey: false, altKey: false, @@ -381,7 +85,7 @@ * @type {PlainObject} * @memberof module:namespaces */ - var NS = { + const NS = { HTML: 'http://www.w3.org/1999/xhtml', MATH: 'http://www.w3.org/1998/Math/MathML', SE: 'http://svg-edit.googlecode.com', @@ -396,18 +100,16 @@ * @returns {string} The NS with key values switched and lowercase */ - var getReverseNS = function getReverseNS() { - var reverseNS = {}; - Object.entries(NS).forEach(function (_ref) { - var _ref2 = _slicedToArray(_ref, 2), - name = _ref2[0], - URI = _ref2[1]; - + const getReverseNS = function () { + const reverseNS = {}; + Object.entries(NS).forEach(([name, URI]) => { reverseNS[URI] = name.toLowerCase(); }); return reverseNS; }; + /* eslint-disable import/unambiguous */ + /* globals SVGPathSeg, SVGPathSegMovetoRel, SVGPathSegMovetoAbs, SVGPathSegMovetoRel, SVGPathSegLinetoRel, SVGPathSegLinetoAbs, SVGPathSegLinetoHorizontalRel, SVGPathSegLinetoHorizontalAbs, @@ -432,1513 +134,1341 @@ // Linting: We avoid `no-shadow` as ESLint thinks these are still available globals // Linting: We avoid `class-methods-use-this` as this is a polyfill that must // follow the conventions - (function () { + (() => { if (!('SVGPathSeg' in window)) { // Spec: https://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSeg - var _SVGPathSeg = /*#__PURE__*/function () { - function _SVGPathSeg(type, typeAsLetter, owningPathSegList) { - _classCallCheck(this, _SVGPathSeg); - + class SVGPathSeg { + constructor(type, typeAsLetter, owningPathSegList) { this.pathSegType = type; this.pathSegTypeAsLetter = typeAsLetter; this._owningPathSegList = owningPathSegList; } // Notify owning PathSegList on any changes so they can be synchronized back to the path element. - _createClass(_SVGPathSeg, [{ - key: "_segmentChanged", - value: function _segmentChanged() { - if (this._owningPathSegList) { - this._owningPathSegList.segmentChanged(this); - } + _segmentChanged() { + if (this._owningPathSegList) { + this._owningPathSegList.segmentChanged(this); } - }]); - - return _SVGPathSeg; - }(); - - _SVGPathSeg.prototype.classname = 'SVGPathSeg'; - _SVGPathSeg.PATHSEG_UNKNOWN = 0; - _SVGPathSeg.PATHSEG_CLOSEPATH = 1; - _SVGPathSeg.PATHSEG_MOVETO_ABS = 2; - _SVGPathSeg.PATHSEG_MOVETO_REL = 3; - _SVGPathSeg.PATHSEG_LINETO_ABS = 4; - _SVGPathSeg.PATHSEG_LINETO_REL = 5; - _SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS = 6; - _SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL = 7; - _SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS = 8; - _SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL = 9; - _SVGPathSeg.PATHSEG_ARC_ABS = 10; - _SVGPathSeg.PATHSEG_ARC_REL = 11; - _SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS = 12; - _SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL = 13; - _SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS = 14; - _SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL = 15; - _SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16; - _SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17; - _SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18; - _SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19; - - var _SVGPathSegClosePath = /*#__PURE__*/function (_SVGPathSeg2) { - _inherits(_SVGPathSegClosePath, _SVGPathSeg2); - - var _super = _createSuper(_SVGPathSegClosePath); - - function _SVGPathSegClosePath(owningPathSegList) { - _classCallCheck(this, _SVGPathSegClosePath); - - return _super.call(this, _SVGPathSeg.PATHSEG_CLOSEPATH, 'z', owningPathSegList); } - _createClass(_SVGPathSegClosePath, [{ - key: "toString", - value: function toString() { - return '[object SVGPathSegClosePath]'; - } - }, { - key: "_asPathString", - value: function _asPathString() { - return this.pathSegTypeAsLetter; - } - }, { - key: "clone", - value: function clone() { - return new _SVGPathSegClosePath(undefined); - } - }]); + } - return _SVGPathSegClosePath; - }(_SVGPathSeg); + SVGPathSeg.prototype.classname = 'SVGPathSeg'; + SVGPathSeg.PATHSEG_UNKNOWN = 0; + SVGPathSeg.PATHSEG_CLOSEPATH = 1; + SVGPathSeg.PATHSEG_MOVETO_ABS = 2; + SVGPathSeg.PATHSEG_MOVETO_REL = 3; + SVGPathSeg.PATHSEG_LINETO_ABS = 4; + SVGPathSeg.PATHSEG_LINETO_REL = 5; + SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS = 6; + SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL = 7; + SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS = 8; + SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL = 9; + SVGPathSeg.PATHSEG_ARC_ABS = 10; + SVGPathSeg.PATHSEG_ARC_REL = 11; + SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS = 12; + SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL = 13; + SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS = 14; + SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL = 15; + SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16; + SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17; + SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18; + SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19; - var _SVGPathSegMovetoAbs = /*#__PURE__*/function (_SVGPathSeg3) { - _inherits(_SVGPathSegMovetoAbs, _SVGPathSeg3); - - var _super2 = _createSuper(_SVGPathSegMovetoAbs); - - function _SVGPathSegMovetoAbs(owningPathSegList, x, y) { - var _this; - - _classCallCheck(this, _SVGPathSegMovetoAbs); - - _this = _super2.call(this, _SVGPathSeg.PATHSEG_MOVETO_ABS, 'M', owningPathSegList); - _this._x = x; - _this._y = y; - return _this; + class SVGPathSegClosePath extends SVGPathSeg { + constructor(owningPathSegList) { + super(SVGPathSeg.PATHSEG_CLOSEPATH, 'z', owningPathSegList); } - _createClass(_SVGPathSegMovetoAbs, [{ - key: "toString", - value: function toString() { - return '[object SVGPathSegMovetoAbs]'; - } - }, { - key: "_asPathString", - value: function _asPathString() { - return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; - } - }, { - key: "clone", - value: function clone() { - return new _SVGPathSegMovetoAbs(undefined, this._x, this._y); - } - }]); + toString() { + return '[object SVGPathSegClosePath]'; + } - return _SVGPathSegMovetoAbs; - }(_SVGPathSeg); + _asPathString() { + return this.pathSegTypeAsLetter; + } - Object.defineProperties(_SVGPathSegMovetoAbs.prototype, { + clone() { + return new SVGPathSegClosePath(undefined); + } + + } + + class SVGPathSegMovetoAbs extends SVGPathSeg { + constructor(owningPathSegList, x, y) { + super(SVGPathSeg.PATHSEG_MOVETO_ABS, 'M', owningPathSegList); + this._x = x; + this._y = y; + } + + toString() { + return '[object SVGPathSegMovetoAbs]'; + } + + _asPathString() { + return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; + } + + clone() { + return new SVGPathSegMovetoAbs(undefined, this._x, this._y); + } + + } + + Object.defineProperties(SVGPathSegMovetoAbs.prototype, { x: { - get: function get() { + get() { return this._x; }, - set: function set(x) { + + set(x) { this._x = x; this._segmentChanged(); }, + enumerable: true }, y: { - get: function get() { + get() { return this._y; }, - set: function set(y) { + + set(y) { this._y = y; this._segmentChanged(); }, + enumerable: true } }); - var _SVGPathSegMovetoRel = /*#__PURE__*/function (_SVGPathSeg4) { - _inherits(_SVGPathSegMovetoRel, _SVGPathSeg4); - - var _super3 = _createSuper(_SVGPathSegMovetoRel); - - function _SVGPathSegMovetoRel(owningPathSegList, x, y) { - var _this2; - - _classCallCheck(this, _SVGPathSegMovetoRel); - - _this2 = _super3.call(this, _SVGPathSeg.PATHSEG_MOVETO_REL, 'm', owningPathSegList); - _this2._x = x; - _this2._y = y; - return _this2; + class SVGPathSegMovetoRel extends SVGPathSeg { + constructor(owningPathSegList, x, y) { + super(SVGPathSeg.PATHSEG_MOVETO_REL, 'm', owningPathSegList); + this._x = x; + this._y = y; } - _createClass(_SVGPathSegMovetoRel, [{ - key: "toString", - value: function toString() { - return '[object SVGPathSegMovetoRel]'; - } - }, { - key: "_asPathString", - value: function _asPathString() { - return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; - } - }, { - key: "clone", - value: function clone() { - return new _SVGPathSegMovetoRel(undefined, this._x, this._y); - } - }]); + toString() { + return '[object SVGPathSegMovetoRel]'; + } - return _SVGPathSegMovetoRel; - }(_SVGPathSeg); + _asPathString() { + return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; + } - Object.defineProperties(_SVGPathSegMovetoRel.prototype, { + clone() { + return new SVGPathSegMovetoRel(undefined, this._x, this._y); + } + + } + + Object.defineProperties(SVGPathSegMovetoRel.prototype, { x: { - get: function get() { + get() { return this._x; }, - set: function set(x) { + + set(x) { this._x = x; this._segmentChanged(); }, + enumerable: true }, y: { - get: function get() { + get() { return this._y; }, - set: function set(y) { + + set(y) { this._y = y; this._segmentChanged(); }, + enumerable: true } }); - var _SVGPathSegLinetoAbs = /*#__PURE__*/function (_SVGPathSeg5) { - _inherits(_SVGPathSegLinetoAbs, _SVGPathSeg5); - - var _super4 = _createSuper(_SVGPathSegLinetoAbs); - - function _SVGPathSegLinetoAbs(owningPathSegList, x, y) { - var _this3; - - _classCallCheck(this, _SVGPathSegLinetoAbs); - - _this3 = _super4.call(this, _SVGPathSeg.PATHSEG_LINETO_ABS, 'L', owningPathSegList); - _this3._x = x; - _this3._y = y; - return _this3; + class SVGPathSegLinetoAbs extends SVGPathSeg { + constructor(owningPathSegList, x, y) { + super(SVGPathSeg.PATHSEG_LINETO_ABS, 'L', owningPathSegList); + this._x = x; + this._y = y; } - _createClass(_SVGPathSegLinetoAbs, [{ - key: "toString", - value: function toString() { - return '[object SVGPathSegLinetoAbs]'; - } - }, { - key: "_asPathString", - value: function _asPathString() { - return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; - } - }, { - key: "clone", - value: function clone() { - return new _SVGPathSegLinetoAbs(undefined, this._x, this._y); - } - }]); + toString() { + return '[object SVGPathSegLinetoAbs]'; + } - return _SVGPathSegLinetoAbs; - }(_SVGPathSeg); + _asPathString() { + return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; + } - Object.defineProperties(_SVGPathSegLinetoAbs.prototype, { + clone() { + return new SVGPathSegLinetoAbs(undefined, this._x, this._y); + } + + } + + Object.defineProperties(SVGPathSegLinetoAbs.prototype, { x: { - get: function get() { + get() { return this._x; }, - set: function set(x) { + + set(x) { this._x = x; this._segmentChanged(); }, + enumerable: true }, y: { - get: function get() { + get() { return this._y; }, - set: function set(y) { + + set(y) { this._y = y; this._segmentChanged(); }, + enumerable: true } }); - var _SVGPathSegLinetoRel = /*#__PURE__*/function (_SVGPathSeg6) { - _inherits(_SVGPathSegLinetoRel, _SVGPathSeg6); - - var _super5 = _createSuper(_SVGPathSegLinetoRel); - - function _SVGPathSegLinetoRel(owningPathSegList, x, y) { - var _this4; - - _classCallCheck(this, _SVGPathSegLinetoRel); - - _this4 = _super5.call(this, _SVGPathSeg.PATHSEG_LINETO_REL, 'l', owningPathSegList); - _this4._x = x; - _this4._y = y; - return _this4; + class SVGPathSegLinetoRel extends SVGPathSeg { + constructor(owningPathSegList, x, y) { + super(SVGPathSeg.PATHSEG_LINETO_REL, 'l', owningPathSegList); + this._x = x; + this._y = y; } - _createClass(_SVGPathSegLinetoRel, [{ - key: "toString", - value: function toString() { - return '[object SVGPathSegLinetoRel]'; - } - }, { - key: "_asPathString", - value: function _asPathString() { - return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; - } - }, { - key: "clone", - value: function clone() { - return new _SVGPathSegLinetoRel(undefined, this._x, this._y); - } - }]); + toString() { + return '[object SVGPathSegLinetoRel]'; + } - return _SVGPathSegLinetoRel; - }(_SVGPathSeg); + _asPathString() { + return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; + } - Object.defineProperties(_SVGPathSegLinetoRel.prototype, { + clone() { + return new SVGPathSegLinetoRel(undefined, this._x, this._y); + } + + } + + Object.defineProperties(SVGPathSegLinetoRel.prototype, { x: { - get: function get() { + get() { return this._x; }, - set: function set(x) { + + set(x) { this._x = x; this._segmentChanged(); }, + enumerable: true }, y: { - get: function get() { + get() { return this._y; }, - set: function set(y) { + + set(y) { this._y = y; this._segmentChanged(); }, + enumerable: true } }); - var _SVGPathSegCurvetoCubicAbs = /*#__PURE__*/function (_SVGPathSeg7) { - _inherits(_SVGPathSegCurvetoCubicAbs, _SVGPathSeg7); - - var _super6 = _createSuper(_SVGPathSegCurvetoCubicAbs); - - function _SVGPathSegCurvetoCubicAbs(owningPathSegList, x, y, x1, y1, x2, y2) { - var _this5; - - _classCallCheck(this, _SVGPathSegCurvetoCubicAbs); - - _this5 = _super6.call(this, _SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS, 'C', owningPathSegList); - _this5._x = x; - _this5._y = y; - _this5._x1 = x1; - _this5._y1 = y1; - _this5._x2 = x2; - _this5._y2 = y2; - return _this5; + class SVGPathSegCurvetoCubicAbs extends SVGPathSeg { + constructor(owningPathSegList, x, y, x1, y1, x2, y2) { + super(SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS, 'C', owningPathSegList); + this._x = x; + this._y = y; + this._x1 = x1; + this._y1 = y1; + this._x2 = x2; + this._y2 = y2; } - _createClass(_SVGPathSegCurvetoCubicAbs, [{ - key: "toString", - value: function toString() { - return '[object SVGPathSegCurvetoCubicAbs]'; - } - }, { - key: "_asPathString", - value: function _asPathString() { - return this.pathSegTypeAsLetter + ' ' + this._x1 + ' ' + this._y1 + ' ' + this._x2 + ' ' + this._y2 + ' ' + this._x + ' ' + this._y; - } - }, { - key: "clone", - value: function clone() { - return new _SVGPathSegCurvetoCubicAbs(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2); - } - }]); + toString() { + return '[object SVGPathSegCurvetoCubicAbs]'; + } - return _SVGPathSegCurvetoCubicAbs; - }(_SVGPathSeg); + _asPathString() { + return this.pathSegTypeAsLetter + ' ' + this._x1 + ' ' + this._y1 + ' ' + this._x2 + ' ' + this._y2 + ' ' + this._x + ' ' + this._y; + } - Object.defineProperties(_SVGPathSegCurvetoCubicAbs.prototype, { + clone() { + return new SVGPathSegCurvetoCubicAbs(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2); + } + + } + + Object.defineProperties(SVGPathSegCurvetoCubicAbs.prototype, { x: { - get: function get() { + get() { return this._x; }, - set: function set(x) { + + set(x) { this._x = x; this._segmentChanged(); }, + enumerable: true }, y: { - get: function get() { + get() { return this._y; }, - set: function set(y) { + + set(y) { this._y = y; this._segmentChanged(); }, + enumerable: true }, x1: { - get: function get() { + get() { return this._x1; }, - set: function set(x1) { + + set(x1) { this._x1 = x1; this._segmentChanged(); }, + enumerable: true }, y1: { - get: function get() { + get() { return this._y1; }, - set: function set(y1) { + + set(y1) { this._y1 = y1; this._segmentChanged(); }, + enumerable: true }, x2: { - get: function get() { + get() { return this._x2; }, - set: function set(x2) { + + set(x2) { this._x2 = x2; this._segmentChanged(); }, + enumerable: true }, y2: { - get: function get() { + get() { return this._y2; }, - set: function set(y2) { + + set(y2) { this._y2 = y2; this._segmentChanged(); }, + enumerable: true } }); - var _SVGPathSegCurvetoCubicRel = /*#__PURE__*/function (_SVGPathSeg8) { - _inherits(_SVGPathSegCurvetoCubicRel, _SVGPathSeg8); - - var _super7 = _createSuper(_SVGPathSegCurvetoCubicRel); - - function _SVGPathSegCurvetoCubicRel(owningPathSegList, x, y, x1, y1, x2, y2) { - var _this6; - - _classCallCheck(this, _SVGPathSegCurvetoCubicRel); - - _this6 = _super7.call(this, _SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL, 'c', owningPathSegList); - _this6._x = x; - _this6._y = y; - _this6._x1 = x1; - _this6._y1 = y1; - _this6._x2 = x2; - _this6._y2 = y2; - return _this6; + class SVGPathSegCurvetoCubicRel extends SVGPathSeg { + constructor(owningPathSegList, x, y, x1, y1, x2, y2) { + super(SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL, 'c', owningPathSegList); + this._x = x; + this._y = y; + this._x1 = x1; + this._y1 = y1; + this._x2 = x2; + this._y2 = y2; } - _createClass(_SVGPathSegCurvetoCubicRel, [{ - key: "toString", - value: function toString() { - return '[object SVGPathSegCurvetoCubicRel]'; - } - }, { - key: "_asPathString", - value: function _asPathString() { - return this.pathSegTypeAsLetter + ' ' + this._x1 + ' ' + this._y1 + ' ' + this._x2 + ' ' + this._y2 + ' ' + this._x + ' ' + this._y; - } - }, { - key: "clone", - value: function clone() { - return new _SVGPathSegCurvetoCubicRel(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2); - } - }]); + toString() { + return '[object SVGPathSegCurvetoCubicRel]'; + } - return _SVGPathSegCurvetoCubicRel; - }(_SVGPathSeg); + _asPathString() { + return this.pathSegTypeAsLetter + ' ' + this._x1 + ' ' + this._y1 + ' ' + this._x2 + ' ' + this._y2 + ' ' + this._x + ' ' + this._y; + } - Object.defineProperties(_SVGPathSegCurvetoCubicRel.prototype, { + clone() { + return new SVGPathSegCurvetoCubicRel(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2); + } + + } + + Object.defineProperties(SVGPathSegCurvetoCubicRel.prototype, { x: { - get: function get() { + get() { return this._x; }, - set: function set(x) { + + set(x) { this._x = x; this._segmentChanged(); }, + enumerable: true }, y: { - get: function get() { + get() { return this._y; }, - set: function set(y) { + + set(y) { this._y = y; this._segmentChanged(); }, + enumerable: true }, x1: { - get: function get() { + get() { return this._x1; }, - set: function set(x1) { + + set(x1) { this._x1 = x1; this._segmentChanged(); }, + enumerable: true }, y1: { - get: function get() { + get() { return this._y1; }, - set: function set(y1) { + + set(y1) { this._y1 = y1; this._segmentChanged(); }, + enumerable: true }, x2: { - get: function get() { + get() { return this._x2; }, - set: function set(x2) { + + set(x2) { this._x2 = x2; this._segmentChanged(); }, + enumerable: true }, y2: { - get: function get() { + get() { return this._y2; }, - set: function set(y2) { + + set(y2) { this._y2 = y2; this._segmentChanged(); }, + enumerable: true } }); - var _SVGPathSegCurvetoQuadraticAbs = /*#__PURE__*/function (_SVGPathSeg9) { - _inherits(_SVGPathSegCurvetoQuadraticAbs, _SVGPathSeg9); - - var _super8 = _createSuper(_SVGPathSegCurvetoQuadraticAbs); - - function _SVGPathSegCurvetoQuadraticAbs(owningPathSegList, x, y, x1, y1) { - var _this7; - - _classCallCheck(this, _SVGPathSegCurvetoQuadraticAbs); - - _this7 = _super8.call(this, _SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS, 'Q', owningPathSegList); - _this7._x = x; - _this7._y = y; - _this7._x1 = x1; - _this7._y1 = y1; - return _this7; + class SVGPathSegCurvetoQuadraticAbs extends SVGPathSeg { + constructor(owningPathSegList, x, y, x1, y1) { + super(SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS, 'Q', owningPathSegList); + this._x = x; + this._y = y; + this._x1 = x1; + this._y1 = y1; } - _createClass(_SVGPathSegCurvetoQuadraticAbs, [{ - key: "toString", - value: function toString() { - return '[object SVGPathSegCurvetoQuadraticAbs]'; - } - }, { - key: "_asPathString", - value: function _asPathString() { - return this.pathSegTypeAsLetter + ' ' + this._x1 + ' ' + this._y1 + ' ' + this._x + ' ' + this._y; - } - }, { - key: "clone", - value: function clone() { - return new _SVGPathSegCurvetoQuadraticAbs(undefined, this._x, this._y, this._x1, this._y1); - } - }]); + toString() { + return '[object SVGPathSegCurvetoQuadraticAbs]'; + } - return _SVGPathSegCurvetoQuadraticAbs; - }(_SVGPathSeg); + _asPathString() { + return this.pathSegTypeAsLetter + ' ' + this._x1 + ' ' + this._y1 + ' ' + this._x + ' ' + this._y; + } - Object.defineProperties(_SVGPathSegCurvetoQuadraticAbs.prototype, { + clone() { + return new SVGPathSegCurvetoQuadraticAbs(undefined, this._x, this._y, this._x1, this._y1); + } + + } + + Object.defineProperties(SVGPathSegCurvetoQuadraticAbs.prototype, { x: { - get: function get() { + get() { return this._x; }, - set: function set(x) { + + set(x) { this._x = x; this._segmentChanged(); }, + enumerable: true }, y: { - get: function get() { + get() { return this._y; }, - set: function set(y) { + + set(y) { this._y = y; this._segmentChanged(); }, + enumerable: true }, x1: { - get: function get() { + get() { return this._x1; }, - set: function set(x1) { + + set(x1) { this._x1 = x1; this._segmentChanged(); }, + enumerable: true }, y1: { - get: function get() { + get() { return this._y1; }, - set: function set(y1) { + + set(y1) { this._y1 = y1; this._segmentChanged(); }, + enumerable: true } }); - var _SVGPathSegCurvetoQuadraticRel = /*#__PURE__*/function (_SVGPathSeg10) { - _inherits(_SVGPathSegCurvetoQuadraticRel, _SVGPathSeg10); - - var _super9 = _createSuper(_SVGPathSegCurvetoQuadraticRel); - - function _SVGPathSegCurvetoQuadraticRel(owningPathSegList, x, y, x1, y1) { - var _this8; - - _classCallCheck(this, _SVGPathSegCurvetoQuadraticRel); - - _this8 = _super9.call(this, _SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL, 'q', owningPathSegList); - _this8._x = x; - _this8._y = y; - _this8._x1 = x1; - _this8._y1 = y1; - return _this8; + class SVGPathSegCurvetoQuadraticRel extends SVGPathSeg { + constructor(owningPathSegList, x, y, x1, y1) { + super(SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL, 'q', owningPathSegList); + this._x = x; + this._y = y; + this._x1 = x1; + this._y1 = y1; } - _createClass(_SVGPathSegCurvetoQuadraticRel, [{ - key: "toString", - value: function toString() { - return '[object SVGPathSegCurvetoQuadraticRel]'; - } - }, { - key: "_asPathString", - value: function _asPathString() { - return this.pathSegTypeAsLetter + ' ' + this._x1 + ' ' + this._y1 + ' ' + this._x + ' ' + this._y; - } - }, { - key: "clone", - value: function clone() { - return new _SVGPathSegCurvetoQuadraticRel(undefined, this._x, this._y, this._x1, this._y1); - } - }]); + toString() { + return '[object SVGPathSegCurvetoQuadraticRel]'; + } - return _SVGPathSegCurvetoQuadraticRel; - }(_SVGPathSeg); + _asPathString() { + return this.pathSegTypeAsLetter + ' ' + this._x1 + ' ' + this._y1 + ' ' + this._x + ' ' + this._y; + } - Object.defineProperties(_SVGPathSegCurvetoQuadraticRel.prototype, { + clone() { + return new SVGPathSegCurvetoQuadraticRel(undefined, this._x, this._y, this._x1, this._y1); + } + + } + + Object.defineProperties(SVGPathSegCurvetoQuadraticRel.prototype, { x: { - get: function get() { + get() { return this._x; }, - set: function set(x) { + + set(x) { this._x = x; this._segmentChanged(); }, + enumerable: true }, y: { - get: function get() { + get() { return this._y; }, - set: function set(y) { + + set(y) { this._y = y; this._segmentChanged(); }, + enumerable: true }, x1: { - get: function get() { + get() { return this._x1; }, - set: function set(x1) { + + set(x1) { this._x1 = x1; this._segmentChanged(); }, + enumerable: true }, y1: { - get: function get() { + get() { return this._y1; }, - set: function set(y1) { + + set(y1) { this._y1 = y1; this._segmentChanged(); }, + enumerable: true } }); - var _SVGPathSegArcAbs = /*#__PURE__*/function (_SVGPathSeg11) { - _inherits(_SVGPathSegArcAbs, _SVGPathSeg11); - - var _super10 = _createSuper(_SVGPathSegArcAbs); - - function _SVGPathSegArcAbs(owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) { - var _this9; - - _classCallCheck(this, _SVGPathSegArcAbs); - - _this9 = _super10.call(this, _SVGPathSeg.PATHSEG_ARC_ABS, 'A', owningPathSegList); - _this9._x = x; - _this9._y = y; - _this9._r1 = r1; - _this9._r2 = r2; - _this9._angle = angle; - _this9._largeArcFlag = largeArcFlag; - _this9._sweepFlag = sweepFlag; - return _this9; + class SVGPathSegArcAbs extends SVGPathSeg { + constructor(owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) { + super(SVGPathSeg.PATHSEG_ARC_ABS, 'A', owningPathSegList); + this._x = x; + this._y = y; + this._r1 = r1; + this._r2 = r2; + this._angle = angle; + this._largeArcFlag = largeArcFlag; + this._sweepFlag = sweepFlag; } - _createClass(_SVGPathSegArcAbs, [{ - key: "toString", - value: function toString() { - return '[object SVGPathSegArcAbs]'; - } - }, { - key: "_asPathString", - value: function _asPathString() { - return this.pathSegTypeAsLetter + ' ' + this._r1 + ' ' + this._r2 + ' ' + this._angle + ' ' + (this._largeArcFlag ? '1' : '0') + ' ' + (this._sweepFlag ? '1' : '0') + ' ' + this._x + ' ' + this._y; - } - }, { - key: "clone", - value: function clone() { - return new _SVGPathSegArcAbs(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag); - } - }]); + toString() { + return '[object SVGPathSegArcAbs]'; + } - return _SVGPathSegArcAbs; - }(_SVGPathSeg); + _asPathString() { + return this.pathSegTypeAsLetter + ' ' + this._r1 + ' ' + this._r2 + ' ' + this._angle + ' ' + (this._largeArcFlag ? '1' : '0') + ' ' + (this._sweepFlag ? '1' : '0') + ' ' + this._x + ' ' + this._y; + } - Object.defineProperties(_SVGPathSegArcAbs.prototype, { + clone() { + return new SVGPathSegArcAbs(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag); + } + + } + + Object.defineProperties(SVGPathSegArcAbs.prototype, { x: { - get: function get() { + get() { return this._x; }, - set: function set(x) { + + set(x) { this._x = x; this._segmentChanged(); }, + enumerable: true }, y: { - get: function get() { + get() { return this._y; }, - set: function set(y) { + + set(y) { this._y = y; this._segmentChanged(); }, + enumerable: true }, r1: { - get: function get() { + get() { return this._r1; }, - set: function set(r1) { + + set(r1) { this._r1 = r1; this._segmentChanged(); }, + enumerable: true }, r2: { - get: function get() { + get() { return this._r2; }, - set: function set(r2) { + + set(r2) { this._r2 = r2; this._segmentChanged(); }, + enumerable: true }, angle: { - get: function get() { + get() { return this._angle; }, - set: function set(angle) { + + set(angle) { this._angle = angle; this._segmentChanged(); }, + enumerable: true }, largeArcFlag: { - get: function get() { + get() { return this._largeArcFlag; }, - set: function set(largeArcFlag) { + + set(largeArcFlag) { this._largeArcFlag = largeArcFlag; this._segmentChanged(); }, + enumerable: true }, sweepFlag: { - get: function get() { + get() { return this._sweepFlag; }, - set: function set(sweepFlag) { + + set(sweepFlag) { this._sweepFlag = sweepFlag; this._segmentChanged(); }, + enumerable: true } }); - var _SVGPathSegArcRel = /*#__PURE__*/function (_SVGPathSeg12) { - _inherits(_SVGPathSegArcRel, _SVGPathSeg12); - - var _super11 = _createSuper(_SVGPathSegArcRel); - - function _SVGPathSegArcRel(owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) { - var _this10; - - _classCallCheck(this, _SVGPathSegArcRel); - - _this10 = _super11.call(this, _SVGPathSeg.PATHSEG_ARC_REL, 'a', owningPathSegList); - _this10._x = x; - _this10._y = y; - _this10._r1 = r1; - _this10._r2 = r2; - _this10._angle = angle; - _this10._largeArcFlag = largeArcFlag; - _this10._sweepFlag = sweepFlag; - return _this10; + class SVGPathSegArcRel extends SVGPathSeg { + constructor(owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) { + super(SVGPathSeg.PATHSEG_ARC_REL, 'a', owningPathSegList); + this._x = x; + this._y = y; + this._r1 = r1; + this._r2 = r2; + this._angle = angle; + this._largeArcFlag = largeArcFlag; + this._sweepFlag = sweepFlag; } - _createClass(_SVGPathSegArcRel, [{ - key: "toString", - value: function toString() { - return '[object SVGPathSegArcRel]'; - } - }, { - key: "_asPathString", - value: function _asPathString() { - return this.pathSegTypeAsLetter + ' ' + this._r1 + ' ' + this._r2 + ' ' + this._angle + ' ' + (this._largeArcFlag ? '1' : '0') + ' ' + (this._sweepFlag ? '1' : '0') + ' ' + this._x + ' ' + this._y; - } - }, { - key: "clone", - value: function clone() { - return new _SVGPathSegArcRel(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag); - } - }]); + toString() { + return '[object SVGPathSegArcRel]'; + } - return _SVGPathSegArcRel; - }(_SVGPathSeg); + _asPathString() { + return this.pathSegTypeAsLetter + ' ' + this._r1 + ' ' + this._r2 + ' ' + this._angle + ' ' + (this._largeArcFlag ? '1' : '0') + ' ' + (this._sweepFlag ? '1' : '0') + ' ' + this._x + ' ' + this._y; + } - Object.defineProperties(_SVGPathSegArcRel.prototype, { + clone() { + return new SVGPathSegArcRel(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag); + } + + } + + Object.defineProperties(SVGPathSegArcRel.prototype, { x: { - get: function get() { + get() { return this._x; }, - set: function set(x) { + + set(x) { this._x = x; this._segmentChanged(); }, + enumerable: true }, y: { - get: function get() { + get() { return this._y; }, - set: function set(y) { + + set(y) { this._y = y; this._segmentChanged(); }, + enumerable: true }, r1: { - get: function get() { + get() { return this._r1; }, - set: function set(r1) { + + set(r1) { this._r1 = r1; this._segmentChanged(); }, + enumerable: true }, r2: { - get: function get() { + get() { return this._r2; }, - set: function set(r2) { + + set(r2) { this._r2 = r2; this._segmentChanged(); }, + enumerable: true }, angle: { - get: function get() { + get() { return this._angle; }, - set: function set(angle) { + + set(angle) { this._angle = angle; this._segmentChanged(); }, + enumerable: true }, largeArcFlag: { - get: function get() { + get() { return this._largeArcFlag; }, - set: function set(largeArcFlag) { + + set(largeArcFlag) { this._largeArcFlag = largeArcFlag; this._segmentChanged(); }, + enumerable: true }, sweepFlag: { - get: function get() { + get() { return this._sweepFlag; }, - set: function set(sweepFlag) { + + set(sweepFlag) { this._sweepFlag = sweepFlag; this._segmentChanged(); }, + enumerable: true } }); - var _SVGPathSegLinetoHorizontalAbs = /*#__PURE__*/function (_SVGPathSeg13) { - _inherits(_SVGPathSegLinetoHorizontalAbs, _SVGPathSeg13); - - var _super12 = _createSuper(_SVGPathSegLinetoHorizontalAbs); - - function _SVGPathSegLinetoHorizontalAbs(owningPathSegList, x) { - var _this11; - - _classCallCheck(this, _SVGPathSegLinetoHorizontalAbs); - - _this11 = _super12.call(this, _SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS, 'H', owningPathSegList); - _this11._x = x; - return _this11; + class SVGPathSegLinetoHorizontalAbs extends SVGPathSeg { + constructor(owningPathSegList, x) { + super(SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS, 'H', owningPathSegList); + this._x = x; } - _createClass(_SVGPathSegLinetoHorizontalAbs, [{ - key: "toString", - value: function toString() { - return '[object SVGPathSegLinetoHorizontalAbs]'; - } - }, { - key: "_asPathString", - value: function _asPathString() { - return this.pathSegTypeAsLetter + ' ' + this._x; - } - }, { - key: "clone", - value: function clone() { - return new _SVGPathSegLinetoHorizontalAbs(undefined, this._x); - } - }]); + toString() { + return '[object SVGPathSegLinetoHorizontalAbs]'; + } - return _SVGPathSegLinetoHorizontalAbs; - }(_SVGPathSeg); + _asPathString() { + return this.pathSegTypeAsLetter + ' ' + this._x; + } - Object.defineProperty(_SVGPathSegLinetoHorizontalAbs.prototype, 'x', { - get: function get() { + clone() { + return new SVGPathSegLinetoHorizontalAbs(undefined, this._x); + } + + } + + Object.defineProperty(SVGPathSegLinetoHorizontalAbs.prototype, 'x', { + get() { return this._x; }, - set: function set(x) { + + set(x) { this._x = x; this._segmentChanged(); }, + enumerable: true }); - var _SVGPathSegLinetoHorizontalRel = /*#__PURE__*/function (_SVGPathSeg14) { - _inherits(_SVGPathSegLinetoHorizontalRel, _SVGPathSeg14); - - var _super13 = _createSuper(_SVGPathSegLinetoHorizontalRel); - - function _SVGPathSegLinetoHorizontalRel(owningPathSegList, x) { - var _this12; - - _classCallCheck(this, _SVGPathSegLinetoHorizontalRel); - - _this12 = _super13.call(this, _SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL, 'h', owningPathSegList); - _this12._x = x; - return _this12; + class SVGPathSegLinetoHorizontalRel extends SVGPathSeg { + constructor(owningPathSegList, x) { + super(SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL, 'h', owningPathSegList); + this._x = x; } - _createClass(_SVGPathSegLinetoHorizontalRel, [{ - key: "toString", - value: function toString() { - return '[object SVGPathSegLinetoHorizontalRel]'; - } - }, { - key: "_asPathString", - value: function _asPathString() { - return this.pathSegTypeAsLetter + ' ' + this._x; - } - }, { - key: "clone", - value: function clone() { - return new _SVGPathSegLinetoHorizontalRel(undefined, this._x); - } - }]); + toString() { + return '[object SVGPathSegLinetoHorizontalRel]'; + } - return _SVGPathSegLinetoHorizontalRel; - }(_SVGPathSeg); + _asPathString() { + return this.pathSegTypeAsLetter + ' ' + this._x; + } - Object.defineProperty(_SVGPathSegLinetoHorizontalRel.prototype, 'x', { - get: function get() { + clone() { + return new SVGPathSegLinetoHorizontalRel(undefined, this._x); + } + + } + + Object.defineProperty(SVGPathSegLinetoHorizontalRel.prototype, 'x', { + get() { return this._x; }, - set: function set(x) { + + set(x) { this._x = x; this._segmentChanged(); }, + enumerable: true }); - var _SVGPathSegLinetoVerticalAbs = /*#__PURE__*/function (_SVGPathSeg15) { - _inherits(_SVGPathSegLinetoVerticalAbs, _SVGPathSeg15); - - var _super14 = _createSuper(_SVGPathSegLinetoVerticalAbs); - - function _SVGPathSegLinetoVerticalAbs(owningPathSegList, y) { - var _this13; - - _classCallCheck(this, _SVGPathSegLinetoVerticalAbs); - - _this13 = _super14.call(this, _SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS, 'V', owningPathSegList); - _this13._y = y; - return _this13; + class SVGPathSegLinetoVerticalAbs extends SVGPathSeg { + constructor(owningPathSegList, y) { + super(SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS, 'V', owningPathSegList); + this._y = y; } - _createClass(_SVGPathSegLinetoVerticalAbs, [{ - key: "toString", - value: function toString() { - return '[object SVGPathSegLinetoVerticalAbs]'; - } - }, { - key: "_asPathString", - value: function _asPathString() { - return this.pathSegTypeAsLetter + ' ' + this._y; - } - }, { - key: "clone", - value: function clone() { - return new _SVGPathSegLinetoVerticalAbs(undefined, this._y); - } - }]); + toString() { + return '[object SVGPathSegLinetoVerticalAbs]'; + } - return _SVGPathSegLinetoVerticalAbs; - }(_SVGPathSeg); + _asPathString() { + return this.pathSegTypeAsLetter + ' ' + this._y; + } - Object.defineProperty(_SVGPathSegLinetoVerticalAbs.prototype, 'y', { - get: function get() { + clone() { + return new SVGPathSegLinetoVerticalAbs(undefined, this._y); + } + + } + + Object.defineProperty(SVGPathSegLinetoVerticalAbs.prototype, 'y', { + get() { return this._y; }, - set: function set(y) { + + set(y) { this._y = y; this._segmentChanged(); }, + enumerable: true }); - var _SVGPathSegLinetoVerticalRel = /*#__PURE__*/function (_SVGPathSeg16) { - _inherits(_SVGPathSegLinetoVerticalRel, _SVGPathSeg16); - - var _super15 = _createSuper(_SVGPathSegLinetoVerticalRel); - - function _SVGPathSegLinetoVerticalRel(owningPathSegList, y) { - var _this14; - - _classCallCheck(this, _SVGPathSegLinetoVerticalRel); - - _this14 = _super15.call(this, _SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL, 'v', owningPathSegList); - _this14._y = y; - return _this14; + class SVGPathSegLinetoVerticalRel extends SVGPathSeg { + constructor(owningPathSegList, y) { + super(SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL, 'v', owningPathSegList); + this._y = y; } - _createClass(_SVGPathSegLinetoVerticalRel, [{ - key: "toString", - value: function toString() { - return '[object SVGPathSegLinetoVerticalRel]'; - } - }, { - key: "_asPathString", - value: function _asPathString() { - return this.pathSegTypeAsLetter + ' ' + this._y; - } - }, { - key: "clone", - value: function clone() { - return new _SVGPathSegLinetoVerticalRel(undefined, this._y); - } - }]); + toString() { + return '[object SVGPathSegLinetoVerticalRel]'; + } - return _SVGPathSegLinetoVerticalRel; - }(_SVGPathSeg); + _asPathString() { + return this.pathSegTypeAsLetter + ' ' + this._y; + } - Object.defineProperty(_SVGPathSegLinetoVerticalRel.prototype, 'y', { - get: function get() { + clone() { + return new SVGPathSegLinetoVerticalRel(undefined, this._y); + } + + } + + Object.defineProperty(SVGPathSegLinetoVerticalRel.prototype, 'y', { + get() { return this._y; }, - set: function set(y) { + + set(y) { this._y = y; this._segmentChanged(); }, + enumerable: true }); - var _SVGPathSegCurvetoCubicSmoothAbs = /*#__PURE__*/function (_SVGPathSeg17) { - _inherits(_SVGPathSegCurvetoCubicSmoothAbs, _SVGPathSeg17); - - var _super16 = _createSuper(_SVGPathSegCurvetoCubicSmoothAbs); - - function _SVGPathSegCurvetoCubicSmoothAbs(owningPathSegList, x, y, x2, y2) { - var _this15; - - _classCallCheck(this, _SVGPathSegCurvetoCubicSmoothAbs); - - _this15 = _super16.call(this, _SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS, 'S', owningPathSegList); - _this15._x = x; - _this15._y = y; - _this15._x2 = x2; - _this15._y2 = y2; - return _this15; + class SVGPathSegCurvetoCubicSmoothAbs extends SVGPathSeg { + constructor(owningPathSegList, x, y, x2, y2) { + super(SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS, 'S', owningPathSegList); + this._x = x; + this._y = y; + this._x2 = x2; + this._y2 = y2; } - _createClass(_SVGPathSegCurvetoCubicSmoothAbs, [{ - key: "toString", - value: function toString() { - return '[object SVGPathSegCurvetoCubicSmoothAbs]'; - } - }, { - key: "_asPathString", - value: function _asPathString() { - return this.pathSegTypeAsLetter + ' ' + this._x2 + ' ' + this._y2 + ' ' + this._x + ' ' + this._y; - } - }, { - key: "clone", - value: function clone() { - return new _SVGPathSegCurvetoCubicSmoothAbs(undefined, this._x, this._y, this._x2, this._y2); - } - }]); + toString() { + return '[object SVGPathSegCurvetoCubicSmoothAbs]'; + } - return _SVGPathSegCurvetoCubicSmoothAbs; - }(_SVGPathSeg); + _asPathString() { + return this.pathSegTypeAsLetter + ' ' + this._x2 + ' ' + this._y2 + ' ' + this._x + ' ' + this._y; + } - Object.defineProperties(_SVGPathSegCurvetoCubicSmoothAbs.prototype, { + clone() { + return new SVGPathSegCurvetoCubicSmoothAbs(undefined, this._x, this._y, this._x2, this._y2); + } + + } + + Object.defineProperties(SVGPathSegCurvetoCubicSmoothAbs.prototype, { x: { - get: function get() { + get() { return this._x; }, - set: function set(x) { + + set(x) { this._x = x; this._segmentChanged(); }, + enumerable: true }, y: { - get: function get() { + get() { return this._y; }, - set: function set(y) { + + set(y) { this._y = y; this._segmentChanged(); }, + enumerable: true }, x2: { - get: function get() { + get() { return this._x2; }, - set: function set(x2) { + + set(x2) { this._x2 = x2; this._segmentChanged(); }, + enumerable: true }, y2: { - get: function get() { + get() { return this._y2; }, - set: function set(y2) { + + set(y2) { this._y2 = y2; this._segmentChanged(); }, + enumerable: true } }); - var _SVGPathSegCurvetoCubicSmoothRel = /*#__PURE__*/function (_SVGPathSeg18) { - _inherits(_SVGPathSegCurvetoCubicSmoothRel, _SVGPathSeg18); - - var _super17 = _createSuper(_SVGPathSegCurvetoCubicSmoothRel); - - function _SVGPathSegCurvetoCubicSmoothRel(owningPathSegList, x, y, x2, y2) { - var _this16; - - _classCallCheck(this, _SVGPathSegCurvetoCubicSmoothRel); - - _this16 = _super17.call(this, _SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL, 's', owningPathSegList); - _this16._x = x; - _this16._y = y; - _this16._x2 = x2; - _this16._y2 = y2; - return _this16; + class SVGPathSegCurvetoCubicSmoothRel extends SVGPathSeg { + constructor(owningPathSegList, x, y, x2, y2) { + super(SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL, 's', owningPathSegList); + this._x = x; + this._y = y; + this._x2 = x2; + this._y2 = y2; } - _createClass(_SVGPathSegCurvetoCubicSmoothRel, [{ - key: "toString", - value: function toString() { - return '[object SVGPathSegCurvetoCubicSmoothRel]'; - } - }, { - key: "_asPathString", - value: function _asPathString() { - return this.pathSegTypeAsLetter + ' ' + this._x2 + ' ' + this._y2 + ' ' + this._x + ' ' + this._y; - } - }, { - key: "clone", - value: function clone() { - return new _SVGPathSegCurvetoCubicSmoothRel(undefined, this._x, this._y, this._x2, this._y2); - } - }]); + toString() { + return '[object SVGPathSegCurvetoCubicSmoothRel]'; + } - return _SVGPathSegCurvetoCubicSmoothRel; - }(_SVGPathSeg); + _asPathString() { + return this.pathSegTypeAsLetter + ' ' + this._x2 + ' ' + this._y2 + ' ' + this._x + ' ' + this._y; + } - Object.defineProperties(_SVGPathSegCurvetoCubicSmoothRel.prototype, { + clone() { + return new SVGPathSegCurvetoCubicSmoothRel(undefined, this._x, this._y, this._x2, this._y2); + } + + } + + Object.defineProperties(SVGPathSegCurvetoCubicSmoothRel.prototype, { x: { - get: function get() { + get() { return this._x; }, - set: function set(x) { + + set(x) { this._x = x; this._segmentChanged(); }, + enumerable: true }, y: { - get: function get() { + get() { return this._y; }, - set: function set(y) { + + set(y) { this._y = y; this._segmentChanged(); }, + enumerable: true }, x2: { - get: function get() { + get() { return this._x2; }, - set: function set(x2) { + + set(x2) { this._x2 = x2; this._segmentChanged(); }, + enumerable: true }, y2: { - get: function get() { + get() { return this._y2; }, - set: function set(y2) { + + set(y2) { this._y2 = y2; this._segmentChanged(); }, + enumerable: true } }); - var _SVGPathSegCurvetoQuadraticSmoothAbs = /*#__PURE__*/function (_SVGPathSeg19) { - _inherits(_SVGPathSegCurvetoQuadraticSmoothAbs, _SVGPathSeg19); - - var _super18 = _createSuper(_SVGPathSegCurvetoQuadraticSmoothAbs); - - function _SVGPathSegCurvetoQuadraticSmoothAbs(owningPathSegList, x, y) { - var _this17; - - _classCallCheck(this, _SVGPathSegCurvetoQuadraticSmoothAbs); - - _this17 = _super18.call(this, _SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS, 'T', owningPathSegList); - _this17._x = x; - _this17._y = y; - return _this17; + class SVGPathSegCurvetoQuadraticSmoothAbs extends SVGPathSeg { + constructor(owningPathSegList, x, y) { + super(SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS, 'T', owningPathSegList); + this._x = x; + this._y = y; } - _createClass(_SVGPathSegCurvetoQuadraticSmoothAbs, [{ - key: "toString", - value: function toString() { - return '[object SVGPathSegCurvetoQuadraticSmoothAbs]'; - } - }, { - key: "_asPathString", - value: function _asPathString() { - return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; - } - }, { - key: "clone", - value: function clone() { - return new _SVGPathSegCurvetoQuadraticSmoothAbs(undefined, this._x, this._y); - } - }]); + toString() { + return '[object SVGPathSegCurvetoQuadraticSmoothAbs]'; + } - return _SVGPathSegCurvetoQuadraticSmoothAbs; - }(_SVGPathSeg); + _asPathString() { + return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; + } - Object.defineProperties(_SVGPathSegCurvetoQuadraticSmoothAbs.prototype, { + clone() { + return new SVGPathSegCurvetoQuadraticSmoothAbs(undefined, this._x, this._y); + } + + } + + Object.defineProperties(SVGPathSegCurvetoQuadraticSmoothAbs.prototype, { x: { - get: function get() { + get() { return this._x; }, - set: function set(x) { + + set(x) { this._x = x; this._segmentChanged(); }, + enumerable: true }, y: { - get: function get() { + get() { return this._y; }, - set: function set(y) { + + set(y) { this._y = y; this._segmentChanged(); }, + enumerable: true } }); - var _SVGPathSegCurvetoQuadraticSmoothRel = /*#__PURE__*/function (_SVGPathSeg20) { - _inherits(_SVGPathSegCurvetoQuadraticSmoothRel, _SVGPathSeg20); - - var _super19 = _createSuper(_SVGPathSegCurvetoQuadraticSmoothRel); - - function _SVGPathSegCurvetoQuadraticSmoothRel(owningPathSegList, x, y) { - var _this18; - - _classCallCheck(this, _SVGPathSegCurvetoQuadraticSmoothRel); - - _this18 = _super19.call(this, _SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, 't', owningPathSegList); - _this18._x = x; - _this18._y = y; - return _this18; + class SVGPathSegCurvetoQuadraticSmoothRel extends SVGPathSeg { + constructor(owningPathSegList, x, y) { + super(SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, 't', owningPathSegList); + this._x = x; + this._y = y; } - _createClass(_SVGPathSegCurvetoQuadraticSmoothRel, [{ - key: "toString", - value: function toString() { - return '[object SVGPathSegCurvetoQuadraticSmoothRel]'; - } - }, { - key: "_asPathString", - value: function _asPathString() { - return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; - } - }, { - key: "clone", - value: function clone() { - return new _SVGPathSegCurvetoQuadraticSmoothRel(undefined, this._x, this._y); - } - }]); + toString() { + return '[object SVGPathSegCurvetoQuadraticSmoothRel]'; + } - return _SVGPathSegCurvetoQuadraticSmoothRel; - }(_SVGPathSeg); + _asPathString() { + return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; + } - Object.defineProperties(_SVGPathSegCurvetoQuadraticSmoothRel.prototype, { + clone() { + return new SVGPathSegCurvetoQuadraticSmoothRel(undefined, this._x, this._y); + } + + } + + Object.defineProperties(SVGPathSegCurvetoQuadraticSmoothRel.prototype, { x: { - get: function get() { + get() { return this._x; }, - set: function set(x) { + + set(x) { this._x = x; this._segmentChanged(); }, + enumerable: true }, y: { - get: function get() { + get() { return this._y; }, - set: function set(y) { + + set(y) { this._y = y; this._segmentChanged(); }, + enumerable: true } }); // Add createSVGPathSeg* functions to SVGPathElement. // Spec: https://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathElement. SVGPathElement.prototype.createSVGPathSegClosePath = function () { - return new _SVGPathSegClosePath(undefined); + return new SVGPathSegClosePath(undefined); }; SVGPathElement.prototype.createSVGPathSegMovetoAbs = function (x, y) { - return new _SVGPathSegMovetoAbs(undefined, x, y); + return new SVGPathSegMovetoAbs(undefined, x, y); }; SVGPathElement.prototype.createSVGPathSegMovetoRel = function (x, y) { - return new _SVGPathSegMovetoRel(undefined, x, y); + return new SVGPathSegMovetoRel(undefined, x, y); }; SVGPathElement.prototype.createSVGPathSegLinetoAbs = function (x, y) { - return new _SVGPathSegLinetoAbs(undefined, x, y); + return new SVGPathSegLinetoAbs(undefined, x, y); }; SVGPathElement.prototype.createSVGPathSegLinetoRel = function (x, y) { - return new _SVGPathSegLinetoRel(undefined, x, y); + return new SVGPathSegLinetoRel(undefined, x, y); }; SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs = function (x, y, x1, y1, x2, y2) { - return new _SVGPathSegCurvetoCubicAbs(undefined, x, y, x1, y1, x2, y2); + return new SVGPathSegCurvetoCubicAbs(undefined, x, y, x1, y1, x2, y2); }; SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel = function (x, y, x1, y1, x2, y2) { - return new _SVGPathSegCurvetoCubicRel(undefined, x, y, x1, y1, x2, y2); + return new SVGPathSegCurvetoCubicRel(undefined, x, y, x1, y1, x2, y2); }; SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs = function (x, y, x1, y1) { - return new _SVGPathSegCurvetoQuadraticAbs(undefined, x, y, x1, y1); + return new SVGPathSegCurvetoQuadraticAbs(undefined, x, y, x1, y1); }; SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel = function (x, y, x1, y1) { - return new _SVGPathSegCurvetoQuadraticRel(undefined, x, y, x1, y1); + return new SVGPathSegCurvetoQuadraticRel(undefined, x, y, x1, y1); }; SVGPathElement.prototype.createSVGPathSegArcAbs = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) { - return new _SVGPathSegArcAbs(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag); + return new SVGPathSegArcAbs(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag); }; SVGPathElement.prototype.createSVGPathSegArcRel = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) { - return new _SVGPathSegArcRel(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag); + return new SVGPathSegArcRel(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag); }; SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs = function (x) { - return new _SVGPathSegLinetoHorizontalAbs(undefined, x); + return new SVGPathSegLinetoHorizontalAbs(undefined, x); }; SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel = function (x) { - return new _SVGPathSegLinetoHorizontalRel(undefined, x); + return new SVGPathSegLinetoHorizontalRel(undefined, x); }; SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs = function (y) { - return new _SVGPathSegLinetoVerticalAbs(undefined, y); + return new SVGPathSegLinetoVerticalAbs(undefined, y); }; SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel = function (y) { - return new _SVGPathSegLinetoVerticalRel(undefined, y); + return new SVGPathSegLinetoVerticalRel(undefined, y); }; SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs = function (x, y, x2, y2) { - return new _SVGPathSegCurvetoCubicSmoothAbs(undefined, x, y, x2, y2); + return new SVGPathSegCurvetoCubicSmoothAbs(undefined, x, y, x2, y2); }; SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel = function (x, y, x2, y2) { - return new _SVGPathSegCurvetoCubicSmoothRel(undefined, x, y, x2, y2); + return new SVGPathSegCurvetoCubicSmoothRel(undefined, x, y, x2, y2); }; SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs = function (x, y) { - return new _SVGPathSegCurvetoQuadraticSmoothAbs(undefined, x, y); + return new SVGPathSegCurvetoQuadraticSmoothAbs(undefined, x, y); }; SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel = function (x, y) { - return new _SVGPathSegCurvetoQuadraticSmoothRel(undefined, x, y); + return new SVGPathSegCurvetoQuadraticSmoothRel(undefined, x, y); }; if (!('getPathSegAtLength' in SVGPathElement.prototype)) { @@ -1950,9 +1480,9 @@ throw new Error('Invalid arguments.'); } - var measurementElement = document.createElementNS('http://www.w3.org/2000/svg', 'path'); + const measurementElement = document.createElementNS('http://www.w3.org/2000/svg', 'path'); measurementElement.setAttribute('d', this.getAttribute('d')); - var lastPathSegment = measurementElement.pathSegList.numberOfItems - 1; // If the path is empty, return 0. + let lastPathSegment = measurementElement.pathSegList.numberOfItems - 1; // If the path is empty, return 0. if (lastPathSegment <= 0) { return 0; @@ -1972,26 +1502,26 @@ }; } - window.SVGPathSeg = _SVGPathSeg; - window.SVGPathSegClosePath = _SVGPathSegClosePath; - window.SVGPathSegMovetoAbs = _SVGPathSegMovetoAbs; - window.SVGPathSegMovetoRel = _SVGPathSegMovetoRel; - window.SVGPathSegLinetoAbs = _SVGPathSegLinetoAbs; - window.SVGPathSegLinetoRel = _SVGPathSegLinetoRel; - window.SVGPathSegCurvetoCubicAbs = _SVGPathSegCurvetoCubicAbs; - window.SVGPathSegCurvetoCubicRel = _SVGPathSegCurvetoCubicRel; - window.SVGPathSegCurvetoQuadraticAbs = _SVGPathSegCurvetoQuadraticAbs; - window.SVGPathSegCurvetoQuadraticRel = _SVGPathSegCurvetoQuadraticRel; - window.SVGPathSegArcAbs = _SVGPathSegArcAbs; - window.SVGPathSegArcRel = _SVGPathSegArcRel; - window.SVGPathSegLinetoHorizontalAbs = _SVGPathSegLinetoHorizontalAbs; - window.SVGPathSegLinetoHorizontalRel = _SVGPathSegLinetoHorizontalRel; - window.SVGPathSegLinetoVerticalAbs = _SVGPathSegLinetoVerticalAbs; - window.SVGPathSegLinetoVerticalRel = _SVGPathSegLinetoVerticalRel; - window.SVGPathSegCurvetoCubicSmoothAbs = _SVGPathSegCurvetoCubicSmoothAbs; - window.SVGPathSegCurvetoCubicSmoothRel = _SVGPathSegCurvetoCubicSmoothRel; - window.SVGPathSegCurvetoQuadraticSmoothAbs = _SVGPathSegCurvetoQuadraticSmoothAbs; - window.SVGPathSegCurvetoQuadraticSmoothRel = _SVGPathSegCurvetoQuadraticSmoothRel; + window.SVGPathSeg = SVGPathSeg; + window.SVGPathSegClosePath = SVGPathSegClosePath; + window.SVGPathSegMovetoAbs = SVGPathSegMovetoAbs; + window.SVGPathSegMovetoRel = SVGPathSegMovetoRel; + window.SVGPathSegLinetoAbs = SVGPathSegLinetoAbs; + window.SVGPathSegLinetoRel = SVGPathSegLinetoRel; + window.SVGPathSegCurvetoCubicAbs = SVGPathSegCurvetoCubicAbs; + window.SVGPathSegCurvetoCubicRel = SVGPathSegCurvetoCubicRel; + window.SVGPathSegCurvetoQuadraticAbs = SVGPathSegCurvetoQuadraticAbs; + window.SVGPathSegCurvetoQuadraticRel = SVGPathSegCurvetoQuadraticRel; + window.SVGPathSegArcAbs = SVGPathSegArcAbs; + window.SVGPathSegArcRel = SVGPathSegArcRel; + window.SVGPathSegLinetoHorizontalAbs = SVGPathSegLinetoHorizontalAbs; + window.SVGPathSegLinetoHorizontalRel = SVGPathSegLinetoHorizontalRel; + window.SVGPathSegLinetoVerticalAbs = SVGPathSegLinetoVerticalAbs; + window.SVGPathSegLinetoVerticalRel = SVGPathSegLinetoVerticalRel; + window.SVGPathSegCurvetoCubicSmoothAbs = SVGPathSegCurvetoCubicSmoothAbs; + window.SVGPathSegCurvetoCubicSmoothRel = SVGPathSegCurvetoCubicSmoothRel; + window.SVGPathSegCurvetoQuadraticSmoothAbs = SVGPathSegCurvetoQuadraticSmoothAbs; + window.SVGPathSegCurvetoQuadraticSmoothRel = SVGPathSegCurvetoQuadraticSmoothRel; } // Checking for SVGPathSegList in window checks for the case of an implementation without the // SVGPathSegList API. // The second check for appendItem is specific to Firefox 59+ which removed only parts of the @@ -2001,10 +1531,8 @@ if (!('SVGPathSegList' in window) || !('appendItem' in window.SVGPathSegList.prototype)) { // Spec: https://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSegList - var SVGPathSegList = /*#__PURE__*/function () { - function SVGPathSegList(pathElement) { - _classCallCheck(this, SVGPathSegList); - + class SVGPathSegList { + constructor(pathElement) { this._pathElement = pathElement; this._list = this._parsePath(this._pathElement.getAttribute('d')); // Use a MutationObserver to catch changes to the path's "d" attribute. @@ -2020,706 +1548,672 @@ // MutationObservers are not synchronous so we can have pending asynchronous mutations. - _createClass(SVGPathSegList, [{ - key: "_checkPathSynchronizedToList", - value: function _checkPathSynchronizedToList() { - this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords()); + _checkPathSynchronizedToList() { + this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords()); + } + + _updateListFromPathMutations(mutationRecords) { + if (!this._pathElement) { + return; } - }, { - key: "_updateListFromPathMutations", - value: function _updateListFromPathMutations(mutationRecords) { - if (!this._pathElement) { - return; + + let hasPathMutations = false; + mutationRecords.forEach(record => { + if (record.attributeName === 'd') { + hasPathMutations = true; + } + }); + + if (hasPathMutations) { + this._list = this._parsePath(this._pathElement.getAttribute('d')); + } + } // Serialize the list and update the path's 'd' attribute. + + + _writeListToPath() { + this._pathElementMutationObserver.disconnect(); + + this._pathElement.setAttribute('d', SVGPathSegList._pathSegArrayAsString(this._list)); + + this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig); + } // When a path segment changes the list needs to be synchronized back to the path element. + + + segmentChanged(pathSeg) { + this._writeListToPath(); + } + + clear() { + this._checkPathSynchronizedToList(); + + this._list.forEach(pathSeg => { + pathSeg._owningPathSegList = null; + }); + + this._list = []; + + this._writeListToPath(); + } + + initialize(newItem) { + this._checkPathSynchronizedToList(); + + this._list = [newItem]; + newItem._owningPathSegList = this; + + this._writeListToPath(); + + return newItem; + } + + _checkValidIndex(index) { + if (isNaN(index) || index < 0 || index >= this.numberOfItems) { + throw new Error('INDEX_SIZE_ERR'); + } + } + + getItem(index) { + this._checkPathSynchronizedToList(); + + this._checkValidIndex(index); + + return this._list[index]; + } + + insertItemBefore(newItem, index) { + this._checkPathSynchronizedToList(); // Spec: If the index is greater than or equal to numberOfItems, then the new item is appended to the end of the list. + + + if (index > this.numberOfItems) { + index = this.numberOfItems; + } + + if (newItem._owningPathSegList) { + // SVG2 spec says to make a copy. + newItem = newItem.clone(); + } + + this._list.splice(index, 0, newItem); + + newItem._owningPathSegList = this; + + this._writeListToPath(); + + return newItem; + } + + replaceItem(newItem, index) { + this._checkPathSynchronizedToList(); + + if (newItem._owningPathSegList) { + // SVG2 spec says to make a copy. + newItem = newItem.clone(); + } + + this._checkValidIndex(index); + + this._list[index] = newItem; + newItem._owningPathSegList = this; + + this._writeListToPath(); + + return newItem; + } + + removeItem(index) { + this._checkPathSynchronizedToList(); + + this._checkValidIndex(index); + + const item = this._list[index]; + + this._list.splice(index, 1); + + this._writeListToPath(); + + return item; + } + + appendItem(newItem) { + this._checkPathSynchronizedToList(); + + if (newItem._owningPathSegList) { + // SVG2 spec says to make a copy. + newItem = newItem.clone(); + } + + this._list.push(newItem); + + newItem._owningPathSegList = this; // TODO: Optimize this to just append to the existing attribute. + + this._writeListToPath(); + + return newItem; + } // This closely follows SVGPathParser::parsePath from Source/core/svg/SVGPathParser.cpp. + + + _parsePath(string) { + if (!string || !string.length) { + return []; + } + + const owningPathSegList = this; // eslint-disable-line consistent-this + + class Builder { + constructor() { + this.pathSegList = []; } - var hasPathMutations = false; - mutationRecords.forEach(function (record) { - if (record.attributeName === 'd') { - hasPathMutations = true; - } - }); - - if (hasPathMutations) { - this._list = this._parsePath(this._pathElement.getAttribute('d')); - } - } // Serialize the list and update the path's 'd' attribute. - - }, { - key: "_writeListToPath", - value: function _writeListToPath() { - this._pathElementMutationObserver.disconnect(); - - this._pathElement.setAttribute('d', SVGPathSegList._pathSegArrayAsString(this._list)); - - this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig); - } // When a path segment changes the list needs to be synchronized back to the path element. - - }, { - key: "segmentChanged", - value: function segmentChanged(pathSeg) { - this._writeListToPath(); - } - }, { - key: "clear", - value: function clear() { - this._checkPathSynchronizedToList(); - - this._list.forEach(function (pathSeg) { - pathSeg._owningPathSegList = null; - }); - - this._list = []; - - this._writeListToPath(); - } - }, { - key: "initialize", - value: function initialize(newItem) { - this._checkPathSynchronizedToList(); - - this._list = [newItem]; - newItem._owningPathSegList = this; - - this._writeListToPath(); - - return newItem; - } - }, { - key: "_checkValidIndex", - value: function _checkValidIndex(index) { - if (isNaN(index) || index < 0 || index >= this.numberOfItems) { - throw new Error('INDEX_SIZE_ERR'); - } - } - }, { - key: "getItem", - value: function getItem(index) { - this._checkPathSynchronizedToList(); - - this._checkValidIndex(index); - - return this._list[index]; - } - }, { - key: "insertItemBefore", - value: function insertItemBefore(newItem, index) { - this._checkPathSynchronizedToList(); // Spec: If the index is greater than or equal to numberOfItems, then the new item is appended to the end of the list. - - - if (index > this.numberOfItems) { - index = this.numberOfItems; + appendSegment(pathSeg) { + this.pathSegList.push(pathSeg); } - if (newItem._owningPathSegList) { - // SVG2 spec says to make a copy. - newItem = newItem.clone(); - } - - this._list.splice(index, 0, newItem); - - newItem._owningPathSegList = this; - - this._writeListToPath(); - - return newItem; } - }, { - key: "replaceItem", - value: function replaceItem(newItem, index) { - this._checkPathSynchronizedToList(); - if (newItem._owningPathSegList) { - // SVG2 spec says to make a copy. - newItem = newItem.clone(); + class Source { + constructor(string) { + this._string = string; + this._currentIndex = 0; + this._endIndex = this._string.length; + this._previousCommand = SVGPathSeg.PATHSEG_UNKNOWN; + + this._skipOptionalSpaces(); } - this._checkValidIndex(index); - - this._list[index] = newItem; - newItem._owningPathSegList = this; - - this._writeListToPath(); - - return newItem; - } - }, { - key: "removeItem", - value: function removeItem(index) { - this._checkPathSynchronizedToList(); - - this._checkValidIndex(index); - - var item = this._list[index]; - - this._list.splice(index, 1); - - this._writeListToPath(); - - return item; - } - }, { - key: "appendItem", - value: function appendItem(newItem) { - this._checkPathSynchronizedToList(); - - if (newItem._owningPathSegList) { - // SVG2 spec says to make a copy. - newItem = newItem.clone(); + _isCurrentSpace() { + const character = this._string[this._currentIndex]; + return character <= ' ' && (character === ' ' || character === '\n' || character === '\t' || character === '\r' || character === '\f'); } - this._list.push(newItem); - - newItem._owningPathSegList = this; // TODO: Optimize this to just append to the existing attribute. - - this._writeListToPath(); - - return newItem; - } // This closely follows SVGPathParser::parsePath from Source/core/svg/SVGPathParser.cpp. - - }, { - key: "_parsePath", - value: function _parsePath(string) { - if (!string || !string.length) { - return []; - } - - var owningPathSegList = this; // eslint-disable-line consistent-this - - var Builder = /*#__PURE__*/function () { - function Builder() { - _classCallCheck(this, Builder); - - this.pathSegList = []; + _skipOptionalSpaces() { + while (this._currentIndex < this._endIndex && this._isCurrentSpace()) { + this._currentIndex++; } - _createClass(Builder, [{ - key: "appendSegment", - value: function appendSegment(pathSeg) { - this.pathSegList.push(pathSeg); - } - }]); + return this._currentIndex < this._endIndex; + } - return Builder; - }(); - - var Source = /*#__PURE__*/function () { - function Source(string) { - _classCallCheck(this, Source); - - this._string = string; - this._currentIndex = 0; - this._endIndex = this._string.length; - this._previousCommand = SVGPathSeg.PATHSEG_UNKNOWN; - - this._skipOptionalSpaces(); + _skipOptionalSpacesOrDelimiter() { + if (this._currentIndex < this._endIndex && !this._isCurrentSpace() && this._string.charAt(this._currentIndex) !== ',') { + return false; } - _createClass(Source, [{ - key: "_isCurrentSpace", - value: function _isCurrentSpace() { - var character = this._string[this._currentIndex]; - return character <= ' ' && (character === ' ' || character === '\n' || character === '\t' || character === '\r' || character === '\f'); + if (this._skipOptionalSpaces()) { + if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) === ',') { + this._currentIndex++; + + this._skipOptionalSpaces(); } - }, { - key: "_skipOptionalSpaces", - value: function _skipOptionalSpaces() { - while (this._currentIndex < this._endIndex && this._isCurrentSpace()) { - this._currentIndex++; - } + } - return this._currentIndex < this._endIndex; - } - }, { - key: "_skipOptionalSpacesOrDelimiter", - value: function _skipOptionalSpacesOrDelimiter() { - if (this._currentIndex < this._endIndex && !this._isCurrentSpace() && this._string.charAt(this._currentIndex) !== ',') { - return false; - } + return this._currentIndex < this._endIndex; + } - if (this._skipOptionalSpaces()) { - if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) === ',') { - this._currentIndex++; + hasMoreData() { + return this._currentIndex < this._endIndex; + } - this._skipOptionalSpaces(); - } - } + peekSegmentType() { + const lookahead = this._string[this._currentIndex]; + return this._pathSegTypeFromChar(lookahead); + } - return this._currentIndex < this._endIndex; - } - }, { - key: "hasMoreData", - value: function hasMoreData() { - return this._currentIndex < this._endIndex; - } - }, { - key: "peekSegmentType", - value: function peekSegmentType() { - var lookahead = this._string[this._currentIndex]; - return this._pathSegTypeFromChar(lookahead); - } - }, { - key: "_pathSegTypeFromChar", - value: function _pathSegTypeFromChar(lookahead) { - switch (lookahead) { - case 'Z': - case 'z': - return SVGPathSeg.PATHSEG_CLOSEPATH; + _pathSegTypeFromChar(lookahead) { + switch (lookahead) { + case 'Z': + case 'z': + return SVGPathSeg.PATHSEG_CLOSEPATH; - case 'M': - return SVGPathSeg.PATHSEG_MOVETO_ABS; + case 'M': + return SVGPathSeg.PATHSEG_MOVETO_ABS; - case 'm': - return SVGPathSeg.PATHSEG_MOVETO_REL; + case 'm': + return SVGPathSeg.PATHSEG_MOVETO_REL; - case 'L': - return SVGPathSeg.PATHSEG_LINETO_ABS; + case 'L': + return SVGPathSeg.PATHSEG_LINETO_ABS; - case 'l': - return SVGPathSeg.PATHSEG_LINETO_REL; + case 'l': + return SVGPathSeg.PATHSEG_LINETO_REL; - case 'C': - return SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS; + case 'C': + return SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS; - case 'c': - return SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL; + case 'c': + return SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL; - case 'Q': - return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS; + case 'Q': + return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS; - case 'q': - return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL; + case 'q': + return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL; - case 'A': - return SVGPathSeg.PATHSEG_ARC_ABS; + case 'A': + return SVGPathSeg.PATHSEG_ARC_ABS; - case 'a': - return SVGPathSeg.PATHSEG_ARC_REL; + case 'a': + return SVGPathSeg.PATHSEG_ARC_REL; - case 'H': - return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS; + case 'H': + return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS; - case 'h': - return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL; + case 'h': + return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL; - case 'V': - return SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS; + case 'V': + return SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS; - case 'v': - return SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL; + case 'v': + return SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL; - case 'S': - return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS; + case 'S': + return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS; - case 's': - return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL; + case 's': + return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL; - case 'T': - return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS; + case 'T': + return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS; - case 't': - return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL; - - default: - return SVGPathSeg.PATHSEG_UNKNOWN; - } - } - }, { - key: "_nextCommandHelper", - value: function _nextCommandHelper(lookahead, previousCommand) { - // Check for remaining coordinates in the current command. - if ((lookahead === '+' || lookahead === '-' || lookahead === '.' || lookahead >= '0' && lookahead <= '9') && previousCommand !== SVGPathSeg.PATHSEG_CLOSEPATH) { - if (previousCommand === SVGPathSeg.PATHSEG_MOVETO_ABS) { - return SVGPathSeg.PATHSEG_LINETO_ABS; - } - - if (previousCommand === SVGPathSeg.PATHSEG_MOVETO_REL) { - return SVGPathSeg.PATHSEG_LINETO_REL; - } - - return previousCommand; - } + case 't': + return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL; + default: return SVGPathSeg.PATHSEG_UNKNOWN; + } + } + + _nextCommandHelper(lookahead, previousCommand) { + // Check for remaining coordinates in the current command. + if ((lookahead === '+' || lookahead === '-' || lookahead === '.' || lookahead >= '0' && lookahead <= '9') && previousCommand !== SVGPathSeg.PATHSEG_CLOSEPATH) { + if (previousCommand === SVGPathSeg.PATHSEG_MOVETO_ABS) { + return SVGPathSeg.PATHSEG_LINETO_ABS; } - }, { - key: "initialCommandIsMoveTo", - value: function initialCommandIsMoveTo() { - // If the path is empty it is still valid, so return true. - if (!this.hasMoreData()) { - return true; - } - var command = this.peekSegmentType(); // Path must start with moveTo. - - return command === SVGPathSeg.PATHSEG_MOVETO_ABS || command === SVGPathSeg.PATHSEG_MOVETO_REL; - } // Parse a number from an SVG path. This very closely follows genericParseNumber(...) from Source/core/svg/SVGParserUtilities.cpp. - // Spec: https://www.w3.org/TR/SVG11/single-page.html#paths-PathDataBNF - - }, { - key: "_parseNumber", - value: function _parseNumber() { - var exponent = 0; - var integer = 0; - var frac = 1; - var decimal = 0; - var sign = 1; - var expsign = 1; - var startIndex = this._currentIndex; - - this._skipOptionalSpaces(); // Read the sign. - - - if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) === '+') { - this._currentIndex++; - } else if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) === '-') { - this._currentIndex++; - sign = -1; - } - - if (this._currentIndex === this._endIndex || (this._string.charAt(this._currentIndex) < '0' || this._string.charAt(this._currentIndex) > '9') && this._string.charAt(this._currentIndex) !== '.') { - // The first character of a number must be one of [0-9+-.]. - return undefined; - } // Read the integer part, build right-to-left. - - - var startIntPartIndex = this._currentIndex; - - while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= '0' && this._string.charAt(this._currentIndex) <= '9') { - this._currentIndex++; // Advance to first non-digit. - } - - if (this._currentIndex !== startIntPartIndex) { - var scanIntPartIndex = this._currentIndex - 1; - var multiplier = 1; - - while (scanIntPartIndex >= startIntPartIndex) { - integer += multiplier * (this._string.charAt(scanIntPartIndex--) - '0'); - multiplier *= 10; - } - } // Read the decimals. - - - if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) === '.') { - this._currentIndex++; // There must be a least one digit following the . - - if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < '0' || this._string.charAt(this._currentIndex) > '9') { - return undefined; - } - - while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= '0' && this._string.charAt(this._currentIndex) <= '9') { - frac *= 10; - decimal += (this._string.charAt(this._currentIndex) - '0') / frac; - this._currentIndex += 1; - } - } // Read the exponent part. - - - if (this._currentIndex !== startIndex && this._currentIndex + 1 < this._endIndex && (this._string.charAt(this._currentIndex) === 'e' || this._string.charAt(this._currentIndex) === 'E') && this._string.charAt(this._currentIndex + 1) !== 'x' && this._string.charAt(this._currentIndex + 1) !== 'm') { - this._currentIndex++; // Read the sign of the exponent. - - if (this._string.charAt(this._currentIndex) === '+') { - this._currentIndex++; - } else if (this._string.charAt(this._currentIndex) === '-') { - this._currentIndex++; - expsign = -1; - } // There must be an exponent. - - - if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < '0' || this._string.charAt(this._currentIndex) > '9') { - return undefined; - } - - while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= '0' && this._string.charAt(this._currentIndex) <= '9') { - exponent *= 10; - exponent += this._string.charAt(this._currentIndex) - '0'; - this._currentIndex++; - } - } - - var number = integer + decimal; - number *= sign; - - if (exponent) { - number *= Math.pow(10, expsign * exponent); - } - - if (startIndex === this._currentIndex) { - return undefined; - } - - this._skipOptionalSpacesOrDelimiter(); - - return number; + if (previousCommand === SVGPathSeg.PATHSEG_MOVETO_REL) { + return SVGPathSeg.PATHSEG_LINETO_REL; } - }, { - key: "_parseArcFlag", - value: function _parseArcFlag() { - if (this._currentIndex >= this._endIndex) { - return undefined; - } - var flag = false; + return previousCommand; + } - var flagChar = this._string.charAt(this._currentIndex++); + return SVGPathSeg.PATHSEG_UNKNOWN; + } - if (flagChar === '0') { - flag = false; - } else if (flagChar === '1') { - flag = true; - } else { - return undefined; - } + initialCommandIsMoveTo() { + // If the path is empty it is still valid, so return true. + if (!this.hasMoreData()) { + return true; + } - this._skipOptionalSpacesOrDelimiter(); + const command = this.peekSegmentType(); // Path must start with moveTo. - return flag; + return command === SVGPathSeg.PATHSEG_MOVETO_ABS || command === SVGPathSeg.PATHSEG_MOVETO_REL; + } // Parse a number from an SVG path. This very closely follows genericParseNumber(...) from Source/core/svg/SVGParserUtilities.cpp. + // Spec: https://www.w3.org/TR/SVG11/single-page.html#paths-PathDataBNF + + + _parseNumber() { + let exponent = 0; + let integer = 0; + let frac = 1; + let decimal = 0; + let sign = 1; + let expsign = 1; + const startIndex = this._currentIndex; + + this._skipOptionalSpaces(); // Read the sign. + + + if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) === '+') { + this._currentIndex++; + } else if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) === '-') { + this._currentIndex++; + sign = -1; + } + + if (this._currentIndex === this._endIndex || (this._string.charAt(this._currentIndex) < '0' || this._string.charAt(this._currentIndex) > '9') && this._string.charAt(this._currentIndex) !== '.') { + // The first character of a number must be one of [0-9+-.]. + return undefined; + } // Read the integer part, build right-to-left. + + + const startIntPartIndex = this._currentIndex; + + while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= '0' && this._string.charAt(this._currentIndex) <= '9') { + this._currentIndex++; // Advance to first non-digit. + } + + if (this._currentIndex !== startIntPartIndex) { + let scanIntPartIndex = this._currentIndex - 1; + let multiplier = 1; + + while (scanIntPartIndex >= startIntPartIndex) { + integer += multiplier * (this._string.charAt(scanIntPartIndex--) - '0'); + multiplier *= 10; } - }, { - key: "parseSegment", - value: function parseSegment() { - var lookahead = this._string[this._currentIndex]; + } // Read the decimals. - var command = this._pathSegTypeFromChar(lookahead); - if (command === SVGPathSeg.PATHSEG_UNKNOWN) { - // Possibly an implicit command. Not allowed if this is the first command. - if (this._previousCommand === SVGPathSeg.PATHSEG_UNKNOWN) { - return null; - } + if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) === '.') { + this._currentIndex++; // There must be a least one digit following the . - command = this._nextCommandHelper(lookahead, this._previousCommand); - - if (command === SVGPathSeg.PATHSEG_UNKNOWN) { - return null; - } - } else { - this._currentIndex++; - } - - this._previousCommand = command; - - switch (command) { - case SVGPathSeg.PATHSEG_MOVETO_REL: - return new SVGPathSegMovetoRel(owningPathSegList, this._parseNumber(), this._parseNumber()); - - case SVGPathSeg.PATHSEG_MOVETO_ABS: - return new SVGPathSegMovetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber()); - - case SVGPathSeg.PATHSEG_LINETO_REL: - return new SVGPathSegLinetoRel(owningPathSegList, this._parseNumber(), this._parseNumber()); - - case SVGPathSeg.PATHSEG_LINETO_ABS: - return new SVGPathSegLinetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber()); - - case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL: - return new SVGPathSegLinetoHorizontalRel(owningPathSegList, this._parseNumber()); - - case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS: - return new SVGPathSegLinetoHorizontalAbs(owningPathSegList, this._parseNumber()); - - case SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL: - return new SVGPathSegLinetoVerticalRel(owningPathSegList, this._parseNumber()); - - case SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS: - return new SVGPathSegLinetoVerticalAbs(owningPathSegList, this._parseNumber()); - - case SVGPathSeg.PATHSEG_CLOSEPATH: - this._skipOptionalSpaces(); - - return new SVGPathSegClosePath(owningPathSegList); - - case SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL: - { - var points = { - x1: this._parseNumber(), - y1: this._parseNumber(), - x2: this._parseNumber(), - y2: this._parseNumber(), - x: this._parseNumber(), - y: this._parseNumber() - }; - return new SVGPathSegCurvetoCubicRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2); - } - - case SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS: - { - var _points = { - x1: this._parseNumber(), - y1: this._parseNumber(), - x2: this._parseNumber(), - y2: this._parseNumber(), - x: this._parseNumber(), - y: this._parseNumber() - }; - return new SVGPathSegCurvetoCubicAbs(owningPathSegList, _points.x, _points.y, _points.x1, _points.y1, _points.x2, _points.y2); - } - - case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL: - { - var _points2 = { - x2: this._parseNumber(), - y2: this._parseNumber(), - x: this._parseNumber(), - y: this._parseNumber() - }; - return new SVGPathSegCurvetoCubicSmoothRel(owningPathSegList, _points2.x, _points2.y, _points2.x2, _points2.y2); - } - - case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: - { - var _points3 = { - x2: this._parseNumber(), - y2: this._parseNumber(), - x: this._parseNumber(), - y: this._parseNumber() - }; - return new SVGPathSegCurvetoCubicSmoothAbs(owningPathSegList, _points3.x, _points3.y, _points3.x2, _points3.y2); - } - - case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL: - { - var _points4 = { - x1: this._parseNumber(), - y1: this._parseNumber(), - x: this._parseNumber(), - y: this._parseNumber() - }; - return new SVGPathSegCurvetoQuadraticRel(owningPathSegList, _points4.x, _points4.y, _points4.x1, _points4.y1); - } - - case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS: - { - var _points5 = { - x1: this._parseNumber(), - y1: this._parseNumber(), - x: this._parseNumber(), - y: this._parseNumber() - }; - return new SVGPathSegCurvetoQuadraticAbs(owningPathSegList, _points5.x, _points5.y, _points5.x1, _points5.y1); - } - - case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: - return new SVGPathSegCurvetoQuadraticSmoothRel(owningPathSegList, this._parseNumber(), this._parseNumber()); - - case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: - return new SVGPathSegCurvetoQuadraticSmoothAbs(owningPathSegList, this._parseNumber(), this._parseNumber()); - - case SVGPathSeg.PATHSEG_ARC_REL: - { - var _points6 = { - x1: this._parseNumber(), - y1: this._parseNumber(), - arcAngle: this._parseNumber(), - arcLarge: this._parseArcFlag(), - arcSweep: this._parseArcFlag(), - x: this._parseNumber(), - y: this._parseNumber() - }; - return new SVGPathSegArcRel(owningPathSegList, _points6.x, _points6.y, _points6.x1, _points6.y1, _points6.arcAngle, _points6.arcLarge, _points6.arcSweep); - } - - case SVGPathSeg.PATHSEG_ARC_ABS: - { - var _points7 = { - x1: this._parseNumber(), - y1: this._parseNumber(), - arcAngle: this._parseNumber(), - arcLarge: this._parseArcFlag(), - arcSweep: this._parseArcFlag(), - x: this._parseNumber(), - y: this._parseNumber() - }; - return new SVGPathSegArcAbs(owningPathSegList, _points7.x, _points7.y, _points7.x1, _points7.y1, _points7.arcAngle, _points7.arcLarge, _points7.arcSweep); - } - - default: - throw new Error('Unknown path seg type.'); - } + if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < '0' || this._string.charAt(this._currentIndex) > '9') { + return undefined; } - }]); - return Source; - }(); + while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= '0' && this._string.charAt(this._currentIndex) <= '9') { + frac *= 10; + decimal += (this._string.charAt(this._currentIndex) - '0') / frac; + this._currentIndex += 1; + } + } // Read the exponent part. - var builder = new Builder(); - var source = new Source(string); - if (!source.initialCommandIsMoveTo()) { + if (this._currentIndex !== startIndex && this._currentIndex + 1 < this._endIndex && (this._string.charAt(this._currentIndex) === 'e' || this._string.charAt(this._currentIndex) === 'E') && this._string.charAt(this._currentIndex + 1) !== 'x' && this._string.charAt(this._currentIndex + 1) !== 'm') { + this._currentIndex++; // Read the sign of the exponent. + + if (this._string.charAt(this._currentIndex) === '+') { + this._currentIndex++; + } else if (this._string.charAt(this._currentIndex) === '-') { + this._currentIndex++; + expsign = -1; + } // There must be an exponent. + + + if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < '0' || this._string.charAt(this._currentIndex) > '9') { + return undefined; + } + + while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= '0' && this._string.charAt(this._currentIndex) <= '9') { + exponent *= 10; + exponent += this._string.charAt(this._currentIndex) - '0'; + this._currentIndex++; + } + } + + let number = integer + decimal; + number *= sign; + + if (exponent) { + number *= 10 ** (expsign * exponent); + } + + if (startIndex === this._currentIndex) { + return undefined; + } + + this._skipOptionalSpacesOrDelimiter(); + + return number; + } + + _parseArcFlag() { + if (this._currentIndex >= this._endIndex) { + return undefined; + } + + let flag = false; + + const flagChar = this._string.charAt(this._currentIndex++); + + if (flagChar === '0') { + flag = false; + } else if (flagChar === '1') { + flag = true; + } else { + return undefined; + } + + this._skipOptionalSpacesOrDelimiter(); + + return flag; + } + + parseSegment() { + const lookahead = this._string[this._currentIndex]; + + let command = this._pathSegTypeFromChar(lookahead); + + if (command === SVGPathSeg.PATHSEG_UNKNOWN) { + // Possibly an implicit command. Not allowed if this is the first command. + if (this._previousCommand === SVGPathSeg.PATHSEG_UNKNOWN) { + return null; + } + + command = this._nextCommandHelper(lookahead, this._previousCommand); + + if (command === SVGPathSeg.PATHSEG_UNKNOWN) { + return null; + } + } else { + this._currentIndex++; + } + + this._previousCommand = command; + + switch (command) { + case SVGPathSeg.PATHSEG_MOVETO_REL: + return new SVGPathSegMovetoRel(owningPathSegList, this._parseNumber(), this._parseNumber()); + + case SVGPathSeg.PATHSEG_MOVETO_ABS: + return new SVGPathSegMovetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber()); + + case SVGPathSeg.PATHSEG_LINETO_REL: + return new SVGPathSegLinetoRel(owningPathSegList, this._parseNumber(), this._parseNumber()); + + case SVGPathSeg.PATHSEG_LINETO_ABS: + return new SVGPathSegLinetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber()); + + case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL: + return new SVGPathSegLinetoHorizontalRel(owningPathSegList, this._parseNumber()); + + case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS: + return new SVGPathSegLinetoHorizontalAbs(owningPathSegList, this._parseNumber()); + + case SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL: + return new SVGPathSegLinetoVerticalRel(owningPathSegList, this._parseNumber()); + + case SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS: + return new SVGPathSegLinetoVerticalAbs(owningPathSegList, this._parseNumber()); + + case SVGPathSeg.PATHSEG_CLOSEPATH: + this._skipOptionalSpaces(); + + return new SVGPathSegClosePath(owningPathSegList); + + case SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL: + { + const points = { + x1: this._parseNumber(), + y1: this._parseNumber(), + x2: this._parseNumber(), + y2: this._parseNumber(), + x: this._parseNumber(), + y: this._parseNumber() + }; + return new SVGPathSegCurvetoCubicRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2); + } + + case SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS: + { + const points = { + x1: this._parseNumber(), + y1: this._parseNumber(), + x2: this._parseNumber(), + y2: this._parseNumber(), + x: this._parseNumber(), + y: this._parseNumber() + }; + return new SVGPathSegCurvetoCubicAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2); + } + + case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL: + { + const points = { + x2: this._parseNumber(), + y2: this._parseNumber(), + x: this._parseNumber(), + y: this._parseNumber() + }; + return new SVGPathSegCurvetoCubicSmoothRel(owningPathSegList, points.x, points.y, points.x2, points.y2); + } + + case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: + { + const points = { + x2: this._parseNumber(), + y2: this._parseNumber(), + x: this._parseNumber(), + y: this._parseNumber() + }; + return new SVGPathSegCurvetoCubicSmoothAbs(owningPathSegList, points.x, points.y, points.x2, points.y2); + } + + case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL: + { + const points = { + x1: this._parseNumber(), + y1: this._parseNumber(), + x: this._parseNumber(), + y: this._parseNumber() + }; + return new SVGPathSegCurvetoQuadraticRel(owningPathSegList, points.x, points.y, points.x1, points.y1); + } + + case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS: + { + const points = { + x1: this._parseNumber(), + y1: this._parseNumber(), + x: this._parseNumber(), + y: this._parseNumber() + }; + return new SVGPathSegCurvetoQuadraticAbs(owningPathSegList, points.x, points.y, points.x1, points.y1); + } + + case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: + return new SVGPathSegCurvetoQuadraticSmoothRel(owningPathSegList, this._parseNumber(), this._parseNumber()); + + case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: + return new SVGPathSegCurvetoQuadraticSmoothAbs(owningPathSegList, this._parseNumber(), this._parseNumber()); + + case SVGPathSeg.PATHSEG_ARC_REL: + { + const points = { + x1: this._parseNumber(), + y1: this._parseNumber(), + arcAngle: this._parseNumber(), + arcLarge: this._parseArcFlag(), + arcSweep: this._parseArcFlag(), + x: this._parseNumber(), + y: this._parseNumber() + }; + return new SVGPathSegArcRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep); + } + + case SVGPathSeg.PATHSEG_ARC_ABS: + { + const points = { + x1: this._parseNumber(), + y1: this._parseNumber(), + arcAngle: this._parseNumber(), + arcLarge: this._parseArcFlag(), + arcSweep: this._parseArcFlag(), + x: this._parseNumber(), + y: this._parseNumber() + }; + return new SVGPathSegArcAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep); + } + + default: + throw new Error('Unknown path seg type.'); + } + } + + } + + const builder = new Builder(); + const source = new Source(string); + + if (!source.initialCommandIsMoveTo()) { + return []; + } + + while (source.hasMoreData()) { + const pathSeg = source.parseSegment(); + + if (!pathSeg) { return []; } - while (source.hasMoreData()) { - var pathSeg = source.parseSegment(); - - if (!pathSeg) { - return []; - } - - builder.appendSegment(pathSeg); - } - - return builder.pathSegList; - } // STATIC - - }], [{ - key: "_pathSegArrayAsString", - value: function _pathSegArrayAsString(pathSegArray) { - var string = ''; - var first = true; - pathSegArray.forEach(function (pathSeg) { - if (first) { - first = false; - string += pathSeg._asPathString(); - } else { - string += ' ' + pathSeg._asPathString(); - } - }); - return string; + builder.appendSegment(pathSeg); } - }]); - return SVGPathSegList; - }(); + return builder.pathSegList; + } // STATIC + + + static _pathSegArrayAsString(pathSegArray) { + let string = ''; + let first = true; + pathSegArray.forEach(pathSeg => { + if (first) { + first = false; + string += pathSeg._asPathString(); + } else { + string += ' ' + pathSeg._asPathString(); + } + }); + return string; + } + + } SVGPathSegList.prototype.classname = 'SVGPathSegList'; Object.defineProperty(SVGPathSegList.prototype, 'numberOfItems', { - get: function get() { + get() { this._checkPathSynchronizedToList(); return this._list.length; }, + enumerable: true }); // Add the pathSegList accessors to SVGPathElement. // Spec: https://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGAnimatedPathData Object.defineProperties(SVGPathElement.prototype, { pathSegList: { - get: function get() { + get() { if (!this._pathSegList) { this._pathSegList = new SVGPathSegList(this); } return this._pathSegList; }, + enumerable: true }, // TODO: The following are not implemented and simply return SVGPathElement.pathSegList. normalizedPathSegList: { - get: function get() { + get() { return this.pathSegList; }, + enumerable: true }, animatedPathSegList: { - get: function get() { + get() { return this.pathSegList; }, + enumerable: true }, animatedNormalizedPathSegList: { - get: function get() { + get() { return this.pathSegList; }, + enumerable: true } }); @@ -2727,38 +2221,40 @@ } })(); - var $ = jQuery; + /* globals jQuery */ + const $ = jQuery; - var supportsSVG_ = function () { + const supportsSVG_ = function () { return Boolean(document.createElementNS && document.createElementNS(NS.SVG, 'svg').createSVGRect); }(); - var _navigator = navigator, - userAgent = _navigator.userAgent; - var svg = document.createElementNS(NS.SVG, 'svg'); // Note: Browser sniffing should only be used if no other detection method is possible + const { + userAgent + } = navigator; + const svg = document.createElementNS(NS.SVG, 'svg'); // Note: Browser sniffing should only be used if no other detection method is possible - var isOpera_ = Boolean(window.opera); - var isWebkit_ = userAgent.includes('AppleWebKit'); - var isGecko_ = userAgent.includes('Gecko/'); - var isIE_ = userAgent.includes('MSIE'); - var isChrome_ = userAgent.includes('Chrome/'); - var isWindows_ = userAgent.includes('Windows'); - var isMac_ = userAgent.includes('Macintosh'); - var isTouch_ = ('ontouchstart' in window); + const isOpera_ = Boolean(window.opera); + const isWebkit_ = userAgent.includes('AppleWebKit'); + const isGecko_ = userAgent.includes('Gecko/'); + const isIE_ = userAgent.includes('MSIE'); + const isChrome_ = userAgent.includes('Chrome/'); + const isWindows_ = userAgent.includes('Windows'); + const isMac_ = userAgent.includes('Macintosh'); + const isTouch_ = ('ontouchstart' in window); - var supportsSelectors_ = function () { + const supportsSelectors_ = function () { return Boolean(svg.querySelector); }(); - var supportsXpath_ = function () { + const supportsXpath_ = function () { return Boolean(document.evaluate); }(); // segList functions (for FF1.5 and 2.0) - var supportsPathReplaceItem_ = function () { - var path = document.createElementNS(NS.SVG, 'path'); + const supportsPathReplaceItem_ = function () { + const path = document.createElementNS(NS.SVG, 'path'); path.setAttribute('d', 'M0,0 10,10'); - var seglist = path.pathSegList; - var seg = path.createSVGPathSegLinetoAbs(5, 5); + const seglist = path.pathSegList; + const seg = path.createSVGPathSegLinetoAbs(5, 5); try { seglist.replaceItem(seg, 1); @@ -2768,11 +2264,11 @@ return false; }(); - var supportsPathInsertItemBefore_ = function () { - var path = document.createElementNS(NS.SVG, 'path'); + const supportsPathInsertItemBefore_ = function () { + const path = document.createElementNS(NS.SVG, 'path'); path.setAttribute('d', 'M0,0 10,10'); - var seglist = path.pathSegList; - var seg = path.createSVGPathSegLinetoAbs(5, 5); + const seglist = path.pathSegList; + const seg = path.createSVGPathSegLinetoAbs(5, 5); try { seglist.insertItemBefore(seg, 1); @@ -2783,19 +2279,19 @@ }(); // text character positioning (for IE9 and now Chrome) - var supportsGoodTextCharPos_ = function () { - var svgroot = document.createElementNS(NS.SVG, 'svg'); - var svgcontent = document.createElementNS(NS.SVG, 'svg'); + const supportsGoodTextCharPos_ = function () { + const svgroot = document.createElementNS(NS.SVG, 'svg'); + const svgcontent = document.createElementNS(NS.SVG, 'svg'); document.documentElement.append(svgroot); svgcontent.setAttribute('x', 5); svgroot.append(svgcontent); - var text = document.createElementNS(NS.SVG, 'text'); + const text = document.createElementNS(NS.SVG, 'text'); text.textContent = 'a'; svgcontent.append(text); try { // Chrome now fails here - var pos = text.getStartPositionOfChar(0).x; + const pos = text.getStartPositionOfChar(0).x; return pos === 0; } catch (err) { return false; @@ -2804,40 +2300,40 @@ } }(); - var supportsPathBBox_ = function () { - var svgcontent = document.createElementNS(NS.SVG, 'svg'); + const supportsPathBBox_ = function () { + const svgcontent = document.createElementNS(NS.SVG, 'svg'); document.documentElement.append(svgcontent); - var path = document.createElementNS(NS.SVG, 'path'); + const path = document.createElementNS(NS.SVG, 'path'); path.setAttribute('d', 'M0,0 C0,0 10,10 10,0'); svgcontent.append(path); - var bbox = path.getBBox(); + const bbox = path.getBBox(); svgcontent.remove(); return bbox.height > 4 && bbox.height < 5; }(); // Support for correct bbox sizing on groups with horizontal/vertical lines - var supportsHVLineContainerBBox_ = function () { - var svgcontent = document.createElementNS(NS.SVG, 'svg'); + const supportsHVLineContainerBBox_ = function () { + const svgcontent = document.createElementNS(NS.SVG, 'svg'); document.documentElement.append(svgcontent); - var path = document.createElementNS(NS.SVG, 'path'); + const path = document.createElementNS(NS.SVG, 'path'); path.setAttribute('d', 'M0,0 10,0'); - var path2 = document.createElementNS(NS.SVG, 'path'); + const path2 = document.createElementNS(NS.SVG, 'path'); path2.setAttribute('d', 'M5,0 15,0'); - var g = document.createElementNS(NS.SVG, 'g'); + const g = document.createElementNS(NS.SVG, 'g'); g.append(path, path2); svgcontent.append(g); - var bbox = g.getBBox(); + const bbox = g.getBBox(); svgcontent.remove(); // Webkit gives 0, FF gives 10, Opera (correctly) gives 15 return bbox.width === 15; }(); - var supportsGoodDecimals_ = function () { + const supportsGoodDecimals_ = function () { // Correct decimals on clone attributes (Opera < 10.5/win/non-en) - var rect = document.createElementNS(NS.SVG, 'rect'); + const rect = document.createElementNS(NS.SVG, 'rect'); rect.setAttribute('x', 0.1); - var crect = rect.cloneNode(false); - var retValue = !crect.getAttribute('x').includes(','); + const crect = rect.cloneNode(false); + const retValue = !crect.getAttribute('x').includes(','); if (!retValue) { // Todo: i18nize or remove @@ -2847,22 +2343,22 @@ return retValue; }(); - var supportsNonScalingStroke_ = function () { - var rect = document.createElementNS(NS.SVG, 'rect'); + const supportsNonScalingStroke_ = function () { + const rect = document.createElementNS(NS.SVG, 'rect'); rect.setAttribute('style', 'vector-effect:non-scaling-stroke'); return rect.style.vectorEffect === 'non-scaling-stroke'; }(); - var supportsNativeSVGTransformLists_ = function () { - var rect = document.createElementNS(NS.SVG, 'rect'); - var rxform = rect.transform.baseVal; - var t1 = svg.createSVGTransform(); + let supportsNativeSVGTransformLists_ = function () { + const rect = document.createElementNS(NS.SVG, 'rect'); + const rxform = rect.transform.baseVal; + const t1 = svg.createSVGTransform(); rxform.appendItem(t1); - var r1 = rxform.getItem(0); + const r1 = rxform.getItem(0); - var isSVGTransform = function isSVGTransform(o) { + const isSVGTransform = o => { // https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform - return o && _typeof(o) === 'object' && typeof o.setMatrix === 'function' && 'angle' in o; + return o && typeof o === 'object' && typeof o.setMatrix === 'function' && 'angle' in o; }; return isSVGTransform(r1) && isSVGTransform(t1) && r1.type === t1.type && r1.angle === t1.angle && r1.matrix.a === t1.matrix.a && r1.matrix.b === t1.matrix.b && r1.matrix.c === t1.matrix.c && r1.matrix.d === t1.matrix.d && r1.matrix.e === t1.matrix.e && r1.matrix.f === t1.matrix.f; @@ -2874,129 +2370,97 @@ */ - var isOpera = function isOpera() { - return isOpera_; - }; + const isOpera = () => isOpera_; /** * @function module:browser.isWebkit * @returns {boolean} */ - var isWebkit = function isWebkit() { - return isWebkit_; - }; + const isWebkit = () => isWebkit_; /** * @function module:browser.isGecko * @returns {boolean} */ - var isGecko = function isGecko() { - return isGecko_; - }; + const isGecko = () => isGecko_; /** * @function module:browser.isIE * @returns {boolean} */ - var isIE = function isIE() { - return isIE_; - }; + const isIE = () => isIE_; /** * @function module:browser.isChrome * @returns {boolean} */ - var isChrome = function isChrome() { - return isChrome_; - }; + const isChrome = () => isChrome_; /** * @function module:browser.isMac * @returns {boolean} */ - var isMac = function isMac() { - return isMac_; - }; + const isMac = () => isMac_; /** * @function module:browser.isTouch * @returns {boolean} */ - var isTouch = function isTouch() { - return isTouch_; - }; + const isTouch = () => isTouch_; /** * @function module:browser.supportsSelectors * @returns {boolean} */ - var supportsSelectors = function supportsSelectors() { - return supportsSelectors_; - }; + const supportsSelectors = () => supportsSelectors_; /** * @function module:browser.supportsXpath * @returns {boolean} */ - var supportsXpath = function supportsXpath() { - return supportsXpath_; - }; + const supportsXpath = () => supportsXpath_; /** * @function module:browser.supportsPathReplaceItem * @returns {boolean} */ - var supportsPathReplaceItem = function supportsPathReplaceItem() { - return supportsPathReplaceItem_; - }; + const supportsPathReplaceItem = () => supportsPathReplaceItem_; /** * @function module:browser.supportsPathInsertItemBefore * @returns {boolean} */ - var supportsPathInsertItemBefore = function supportsPathInsertItemBefore() { - return supportsPathInsertItemBefore_; - }; + const supportsPathInsertItemBefore = () => supportsPathInsertItemBefore_; /** * @function module:browser.supportsPathBBox * @returns {boolean} */ - var supportsPathBBox = function supportsPathBBox() { - return supportsPathBBox_; - }; + const supportsPathBBox = () => supportsPathBBox_; /** * @function module:browser.supportsHVLineContainerBBox * @returns {boolean} */ - var supportsHVLineContainerBBox = function supportsHVLineContainerBBox() { - return supportsHVLineContainerBBox_; - }; + const supportsHVLineContainerBBox = () => supportsHVLineContainerBBox_; /** * @function module:browser.supportsGoodTextCharPos * @returns {boolean} */ - var supportsGoodTextCharPos = function supportsGoodTextCharPos() { - return supportsGoodTextCharPos_; - }; + const supportsGoodTextCharPos = () => supportsGoodTextCharPos_; /** * @function module:browser.supportsNonScalingStroke * @returns {boolean} */ - var supportsNonScalingStroke = function supportsNonScalingStroke() { - return supportsNonScalingStroke_; - }; + const supportsNonScalingStroke = () => supportsNonScalingStroke_; /** * @function module:browser.supportsNativeTransformLists * @returns {boolean} */ - var supportsNativeTransformLists = function supportsNativeTransformLists() { - return supportsNativeSVGTransformLists_; - }; + const supportsNativeTransformLists = () => supportsNativeSVGTransformLists_; /** * A jQuery module to work with SVG attributes. @@ -3019,8 +2483,8 @@ * @returns {external:jQuery} */ function jQueryPluginSVG($) { - var proxied = $.fn.attr, - svgns = 'http://www.w3.org/2000/svg'; + const proxied = $.fn.attr, + svgns = 'http://www.w3.org/2000/svg'; /** * @typedef {PlainObject