Merged in bugfix/build-fix (pull request #28)
CI build fix (lint + snapshots) * update snapshots * Add lint to TS + lint fixes Approved-by: Paulo Veiga
@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
"parser": "@typescript-eslint/parser",
|
||||||
"env": {
|
"env": {
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"commonjs": true,
|
"commonjs": true,
|
||||||
@ -6,7 +7,9 @@
|
|||||||
},
|
},
|
||||||
"extends": [
|
"extends": [
|
||||||
"airbnb-base",
|
"airbnb-base",
|
||||||
"plugin:cypress/recommended"
|
"plugin:cypress/recommended",
|
||||||
|
"plugin:@typescript-eslint/eslint-recommended",
|
||||||
|
"plugin:@typescript-eslint/recommended"
|
||||||
],
|
],
|
||||||
"parserOptions": {
|
"parserOptions": {
|
||||||
"ecmaVersion": 11
|
"ecmaVersion": 11
|
||||||
@ -15,6 +18,9 @@
|
|||||||
// designer is a global currently used as a hack. Remove this when fixing the hack.
|
// designer is a global currently used as a hack. Remove this when fixing the hack.
|
||||||
"designer": true
|
"designer": true
|
||||||
},
|
},
|
||||||
|
"plugins": [
|
||||||
|
"@typescript-eslint"
|
||||||
|
],
|
||||||
"rules": {
|
"rules": {
|
||||||
"no-underscore-dangle": "off",
|
"no-underscore-dangle": "off",
|
||||||
"no-plusplus": "off",
|
"no-plusplus": "off",
|
||||||
@ -22,8 +28,17 @@
|
|||||||
"max-len": [1,300],
|
"max-len": [1,300],
|
||||||
"class-methods-use-this": "off",
|
"class-methods-use-this": "off",
|
||||||
"no-console" : "off",
|
"no-console" : "off",
|
||||||
"no-unused-vars": ["error", { "args": "none" }]
|
"no-unused-vars": ["error", { "args": "none" }],
|
||||||
|
"import/extensions": ["error", {
|
||||||
|
"ts": "never"
|
||||||
|
}],
|
||||||
|
// codebase contains many this aliases, fix in the future?
|
||||||
|
"@typescript-eslint/no-this-alias": "off",
|
||||||
|
// no-unused-vars already used
|
||||||
|
"@typescript-eslint/no-unused-vars": "off",
|
||||||
|
"@typescript-eslint/ban-ts-comment": "warn",
|
||||||
|
"@typescript-eslint/no-empty-function": "warn",
|
||||||
|
"import/no-extraneous-dependencies": ["warn", {"packageDir": "./", "devDependencies": false, "optionalDependencies": false, "peerDependencies": false}]
|
||||||
},
|
},
|
||||||
"settings": {
|
"settings": {
|
||||||
"import/resolver": {
|
"import/resolver": {
|
||||||
|
Before Width: | Height: | Size: 209 KiB After Width: | Height: | Size: 202 KiB |
Before Width: | Height: | Size: 136 KiB After Width: | Height: | Size: 102 KiB |
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 95 KiB |
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 106 KiB |
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 188 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 119 KiB After Width: | Height: | Size: 135 KiB |
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 98 KiB |
@ -23,7 +23,7 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "webpack --config webpack.prod.js",
|
"build": "webpack --config webpack.prod.js",
|
||||||
"dev": "webpack serve --config webpack.dev.js",
|
"dev": "webpack serve --config webpack.dev.js",
|
||||||
"lint": "eslint src",
|
"lint": "eslint src --ext js,ts",
|
||||||
"playground": "webpack serve --config webpack.playground.js",
|
"playground": "webpack serve --config webpack.playground.js",
|
||||||
"cy:run": "cypress run",
|
"cy:run": "cypress run",
|
||||||
"test:unit": "jest ./test/unit/export/*.ts ./test/unit/layout/*.js",
|
"test:unit": "jest ./test/unit/export/*.ts ./test/unit/layout/*.js",
|
||||||
@ -45,6 +45,8 @@
|
|||||||
"@babel/preset-typescript": "^7.16.5",
|
"@babel/preset-typescript": "^7.16.5",
|
||||||
"@babel/register": "^7.16.0",
|
"@babel/register": "^7.16.0",
|
||||||
"@types/jest": "^27.0.3",
|
"@types/jest": "^27.0.3",
|
||||||
|
"@typescript-eslint/eslint-plugin": "^5.9.1",
|
||||||
|
"@typescript-eslint/parser": "^5.9.1",
|
||||||
"babel-loader": "^8.2.2",
|
"babel-loader": "^8.2.2",
|
||||||
"blob-polyfill": "^6.0.20211015",
|
"blob-polyfill": "^6.0.20211015",
|
||||||
"clean-webpack-plugin": "^4.0.0-alpha.0",
|
"clean-webpack-plugin": "^4.0.0-alpha.0",
|
||||||
@ -58,7 +60,7 @@
|
|||||||
"eslint-config-standard": "^16.0.3",
|
"eslint-config-standard": "^16.0.3",
|
||||||
"eslint-nibble": "^8.0.0",
|
"eslint-nibble": "^8.0.0",
|
||||||
"eslint-plugin-cypress": "^2.12.1",
|
"eslint-plugin-cypress": "^2.12.1",
|
||||||
"eslint-plugin-import": "^2.24.2",
|
"eslint-plugin-import": "^2.25.4",
|
||||||
"html-webpack-plugin": "^5.3.2",
|
"html-webpack-plugin": "^5.3.2",
|
||||||
"jest-diff": "^27.4.2",
|
"jest-diff": "^27.4.2",
|
||||||
"jest-webpack": "^0.5.1",
|
"jest-webpack": "^0.5.1",
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
import { $assert, $defined } from '@wisemapping/core-js';
|
import { $assert, $defined } from '@wisemapping/core-js';
|
||||||
|
import Point from '@wisemapping/web2d';
|
||||||
import Messages, { $msg } from './Messages';
|
import Messages, { $msg } from './Messages';
|
||||||
|
|
||||||
import Events from './Events';
|
import Events from './Events';
|
||||||
@ -50,25 +51,32 @@ import { $notify } from './widget/ToolbarNotifier';
|
|||||||
import ImageExpoterFactory from './export/ImageExporterFactory';
|
import ImageExpoterFactory from './export/ImageExporterFactory';
|
||||||
import TextExporterFactory from './export/TextExporterFactory';
|
import TextExporterFactory from './export/TextExporterFactory';
|
||||||
import RelationshipModel from './model/RelationshipModel';
|
import RelationshipModel from './model/RelationshipModel';
|
||||||
import { Mindmap } from '..';
|
import Mindmap from './model/Mindmap';
|
||||||
import NodeModel from './model/NodeModel';
|
import NodeModel from './model/NodeModel';
|
||||||
import Topic from './Topic';
|
import Topic from './Topic';
|
||||||
import Point from '@wisemapping/web2d';
|
|
||||||
import { DesignerOptions } from './DesignerOptionsBuilder';
|
import { DesignerOptions } from './DesignerOptionsBuilder';
|
||||||
import MainTopic from './MainTopic';
|
import MainTopic from './MainTopic';
|
||||||
import DragTopic from './DragTopic';
|
import DragTopic from './DragTopic';
|
||||||
import NodeGraph from './NodeGraph';
|
|
||||||
|
|
||||||
class Designer extends Events {
|
class Designer extends Events {
|
||||||
private _mindmap: Mindmap;
|
private _mindmap: Mindmap;
|
||||||
|
|
||||||
private _options: DesignerOptions;
|
private _options: DesignerOptions;
|
||||||
|
|
||||||
private _actionDispatcher: StandaloneActionDispatcher;
|
private _actionDispatcher: StandaloneActionDispatcher;
|
||||||
|
|
||||||
private _model: DesignerModel;
|
private _model: DesignerModel;
|
||||||
|
|
||||||
private _workspace: Workspace;
|
private _workspace: Workspace;
|
||||||
|
|
||||||
private _eventBussDispatcher: EventBusDispatcher;
|
private _eventBussDispatcher: EventBusDispatcher;
|
||||||
|
|
||||||
private _dragManager: DragManager;
|
private _dragManager: DragManager;
|
||||||
|
|
||||||
private _relPivot: RelationshipPivot;
|
private _relPivot: RelationshipPivot;
|
||||||
|
|
||||||
private _clipboard: any[];
|
private _clipboard: any[];
|
||||||
|
|
||||||
private _cleanScreen: any;
|
private _cleanScreen: any;
|
||||||
|
|
||||||
constructor(options: DesignerOptions, divElement: JQuery) {
|
constructor(options: DesignerOptions, divElement: JQuery) {
|
||||||
@ -124,7 +132,6 @@ class Designer extends Events {
|
|||||||
|
|
||||||
// Hack: There are static reference to designer variable. Needs to be reviewed.
|
// Hack: There are static reference to designer variable. Needs to be reviewed.
|
||||||
global.designer = this;
|
global.designer = this;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private _registerWheelEvents(): void {
|
private _registerWheelEvents(): void {
|
||||||
@ -140,6 +147,7 @@ class Designer extends Events {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
||||||
addEvent(type: string, listener: Function): void {
|
addEvent(type: string, listener: Function): void {
|
||||||
if (type === TopicEvent.EDIT || type === TopicEvent.CLICK) {
|
if (type === TopicEvent.EDIT || type === TopicEvent.CLICK) {
|
||||||
const editor = TopicEventDispatcher.getInstance();
|
const editor = TopicEventDispatcher.getInstance();
|
||||||
@ -323,7 +331,7 @@ class Designer extends Events {
|
|||||||
this._workspace.setZoom(1, true);
|
this._workspace.setZoom(1, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
zoomOut(factor: number = 1.2) {
|
zoomOut(factor = 1.2) {
|
||||||
const model = this.getModel();
|
const model = this.getModel();
|
||||||
const scale = model.getZoom() * factor;
|
const scale = model.getZoom() * factor;
|
||||||
if (scale <= 1.9) {
|
if (scale <= 1.9) {
|
||||||
@ -334,7 +342,7 @@ class Designer extends Events {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export(formatType: 'png' | 'svg' | 'jpg' | 'wxml'): Promise<String> {
|
export(formatType: 'png' | 'svg' | 'jpg' | 'wxml'): Promise<string> {
|
||||||
const workspace = this._workspace;
|
const workspace = this._workspace;
|
||||||
const svgElement = workspace.getSVGElement();
|
const svgElement = workspace.getSVGElement();
|
||||||
const size = workspace.getSize();
|
const size = workspace.getSize();
|
||||||
@ -358,8 +366,7 @@ class Designer extends Events {
|
|||||||
return exporter.export();
|
return exporter.export();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
zoomIn(factor = 1.2): void {
|
||||||
zoomIn(factor: number = 1.2): void {
|
|
||||||
const model = this.getModel();
|
const model = this.getModel();
|
||||||
const scale = model.getZoom() / factor;
|
const scale = model.getZoom() / factor;
|
||||||
|
|
||||||
|
@ -75,3 +75,4 @@ export function buildDesigner(options: DesignerOptions): Designer {
|
|||||||
return designer;
|
return designer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export default buildDesigner;
|
||||||
|
@ -25,7 +25,9 @@ import { $notify } from './widget/ToolbarNotifier';
|
|||||||
|
|
||||||
class DesignerModel extends Events {
|
class DesignerModel extends Events {
|
||||||
_zoom: number;
|
_zoom: number;
|
||||||
|
|
||||||
_topics: Topic[];
|
_topics: Topic[];
|
||||||
|
|
||||||
_relationships: Relationship[];
|
_relationships: Relationship[];
|
||||||
|
|
||||||
constructor(options: DesignerOptions) {
|
constructor(options: DesignerOptions) {
|
||||||
@ -109,7 +111,7 @@ class DesignerModel extends Events {
|
|||||||
const topics = this.filterSelectedTopics();
|
const topics = this.filterSelectedTopics();
|
||||||
|
|
||||||
let isValid = true;
|
let isValid = true;
|
||||||
topics.forEach(topic => {
|
topics.forEach((topic) => {
|
||||||
if ($defined(validate)) {
|
if ($defined(validate)) {
|
||||||
isValid = validate(topic);
|
isValid = validate(topic);
|
||||||
}
|
}
|
||||||
@ -130,7 +132,7 @@ class DesignerModel extends Events {
|
|||||||
return (topics.length > 0) ? topics[0] : null;
|
return (topics.length > 0) ? topics[0] : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
findTopicById(id: Number): Topic {
|
findTopicById(id: number): Topic {
|
||||||
let result = null;
|
let result = null;
|
||||||
for (let i = 0; i < this._topics.length; i++) {
|
for (let i = 0; i < this._topics.length; i++) {
|
||||||
const topic = this._topics[i];
|
const topic = this._topics[i];
|
||||||
|
@ -34,21 +34,21 @@ class OptionsBuilder {
|
|||||||
static buildOptions(options: DesignerOptions): DesignerOptions {
|
static buildOptions(options: DesignerOptions): DesignerOptions {
|
||||||
$assert(options.persistenceManager, 'persistence must be defined');
|
$assert(options.persistenceManager, 'persistence must be defined');
|
||||||
|
|
||||||
let containerSize = options.containerSize;
|
let { containerSize } = options;
|
||||||
if (options.containerSize == null) {
|
if (options.containerSize == null) {
|
||||||
// If it has not been defined, use browser size ...
|
// If it has not been defined, use browser size ...
|
||||||
containerSize = {
|
containerSize = {
|
||||||
width: window.screen.width,
|
width: window.screen.width,
|
||||||
height: window.screen.height,
|
height: window.screen.height,
|
||||||
}
|
};
|
||||||
console.log("height:"+containerSize.height);
|
console.log(`height:${containerSize.height}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
const defaultOptions: DesignerOptions = {
|
const defaultOptions: DesignerOptions = {
|
||||||
readOnly: false,
|
readOnly: false,
|
||||||
zoom: 0.85,
|
zoom: 0.85,
|
||||||
saveOnLoad: true,
|
saveOnLoad: true,
|
||||||
containerSize: containerSize,
|
containerSize,
|
||||||
container: 'mindplot',
|
container: 'mindplot',
|
||||||
locale: 'en',
|
locale: 'en',
|
||||||
};
|
};
|
||||||
|
@ -20,7 +20,6 @@ import { Point, CurvedLine, Rect } from '@wisemapping/web2d';
|
|||||||
|
|
||||||
import DragTopicConfig from './DragTopicConfig';
|
import DragTopicConfig from './DragTopicConfig';
|
||||||
import Shape from './util/Shape';
|
import Shape from './util/Shape';
|
||||||
import INodeModel from './model/INodeModel';
|
|
||||||
|
|
||||||
class DragPivot {
|
class DragPivot {
|
||||||
constructor() {
|
constructor() {
|
||||||
|
@ -18,10 +18,10 @@
|
|||||||
// eslint-disable-next-line max-classes-per-file
|
// eslint-disable-next-line max-classes-per-file
|
||||||
import {
|
import {
|
||||||
$assert,
|
$assert,
|
||||||
$defined
|
$defined,
|
||||||
} from '@wisemapping/core-js';
|
} from '@wisemapping/core-js';
|
||||||
import {
|
import {
|
||||||
Group
|
Group,
|
||||||
} from '@wisemapping/web2d';
|
} from '@wisemapping/web2d';
|
||||||
import IconGroupRemoveTip from './IconGroupRemoveTip';
|
import IconGroupRemoveTip from './IconGroupRemoveTip';
|
||||||
|
|
||||||
|
@ -2,7 +2,6 @@ import { $assert } from '@wisemapping/core-js';
|
|||||||
|
|
||||||
import CentralTopic from './CentralTopic';
|
import CentralTopic from './CentralTopic';
|
||||||
import MainTopic from './MainTopic';
|
import MainTopic from './MainTopic';
|
||||||
import INodeModel from './model/INodeModel';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* creates a new topic from the given node model
|
* creates a new topic from the given node model
|
||||||
|
@ -21,8 +21,6 @@ import { $assert, $defined } from '@wisemapping/core-js';
|
|||||||
import ConnectionLine from './ConnectionLine';
|
import ConnectionLine from './ConnectionLine';
|
||||||
import ControlPoint from './ControlPoint';
|
import ControlPoint from './ControlPoint';
|
||||||
|
|
||||||
import INodeModel from './model/INodeModel';
|
|
||||||
|
|
||||||
import Shape from './util/Shape';
|
import Shape from './util/Shape';
|
||||||
|
|
||||||
class Relationship extends ConnectionLine {
|
class Relationship extends ConnectionLine {
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
import { CurvedLine, Arrow, Point } from '@wisemapping/web2d';
|
import { CurvedLine, Arrow, Point } from '@wisemapping/web2d';
|
||||||
import { $assert } from '@wisemapping/core-js';
|
import { $assert } from '@wisemapping/core-js';
|
||||||
import Relationship from './Relationship';
|
import Relationship from './Relationship';
|
||||||
import INodeModel from './model/INodeModel';
|
|
||||||
import Shape from './util/Shape';
|
import Shape from './util/Shape';
|
||||||
|
|
||||||
class RelationshipPivot {
|
class RelationshipPivot {
|
||||||
|
@ -20,8 +20,11 @@ import { Point } from '@wisemapping/web2d';
|
|||||||
|
|
||||||
class ScreenManager {
|
class ScreenManager {
|
||||||
private _divContainer: JQuery;
|
private _divContainer: JQuery;
|
||||||
|
|
||||||
private _padding: { x: number; y: number; };
|
private _padding: { x: number; y: number; };
|
||||||
|
|
||||||
private _clickEvents: ((event: UIEvent)=>void)[];
|
private _clickEvents: ((event: UIEvent)=>void)[];
|
||||||
|
|
||||||
private _scale: number;
|
private _scale: number;
|
||||||
|
|
||||||
constructor(divElement: JQuery) {
|
constructor(divElement: JQuery) {
|
||||||
@ -48,7 +51,7 @@ class ScreenManager {
|
|||||||
return {
|
return {
|
||||||
width: window.innerWidth,
|
width: window.innerWidth,
|
||||||
height: window.innerHeight - Number.parseInt(this._divContainer.css('top'), 10),
|
height: window.innerHeight - Number.parseInt(this._divContainer.css('top'), 10),
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
setScale(scale: number) {
|
setScale(scale: number) {
|
||||||
@ -140,8 +143,8 @@ class ScreenManager {
|
|||||||
|
|
||||||
// Adjust the deviation of the container positioning ...
|
// Adjust the deviation of the container positioning ...
|
||||||
const containerPosition = this.getContainer().position();
|
const containerPosition = this.getContainer().position();
|
||||||
x = x - containerPosition.left;
|
x -= containerPosition.left;
|
||||||
y = y - containerPosition.top;
|
y -= containerPosition.top;
|
||||||
|
|
||||||
// Scale coordinate in order to be relative to the workspace. That's coordSize/size;
|
// Scale coordinate in order to be relative to the workspace. That's coordSize/size;
|
||||||
x *= this._scale;
|
x *= this._scale;
|
||||||
|
@ -16,18 +16,23 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
import { $assert, $defined } from '@wisemapping/core-js';
|
import { $assert, $defined } from '@wisemapping/core-js';
|
||||||
import { Workspace as Workspace2D } from '@wisemapping/web2d';
|
import { Workspace as Workspace2D, ElementClass as Element2D } from '@wisemapping/web2d';
|
||||||
import { ElementClass as Element2D} from '@wisemapping/web2d';
|
|
||||||
import ScreenManager from './ScreenManager';
|
import ScreenManager from './ScreenManager';
|
||||||
import { Size } from './Size';
|
import { Size } from './Size';
|
||||||
|
|
||||||
class Workspace {
|
class Workspace {
|
||||||
private _zoom: number;
|
private _zoom: number;
|
||||||
|
|
||||||
private _screenManager: ScreenManager;
|
private _screenManager: ScreenManager;
|
||||||
|
|
||||||
private _isReadOnly: boolean;
|
private _isReadOnly: boolean;
|
||||||
|
|
||||||
private _containerSize: Size;
|
private _containerSize: Size;
|
||||||
|
|
||||||
private _workspace: Workspace2D;
|
private _workspace: Workspace2D;
|
||||||
|
|
||||||
private _eventsEnabled: boolean;
|
private _eventsEnabled: boolean;
|
||||||
|
|
||||||
private _visibleAreaSize: Size;
|
private _visibleAreaSize: Size;
|
||||||
|
|
||||||
constructor(screenManager: ScreenManager, zoom: number, isReadOnly: boolean) {
|
constructor(screenManager: ScreenManager, zoom: number, isReadOnly: boolean) {
|
||||||
@ -42,8 +47,8 @@ class Workspace {
|
|||||||
const divContainer = screenManager.getContainer();
|
const divContainer = screenManager.getContainer();
|
||||||
this._containerSize = {
|
this._containerSize = {
|
||||||
width: Number.parseInt(divContainer.css('width'), 10),
|
width: Number.parseInt(divContainer.css('width'), 10),
|
||||||
height: Number.parseInt(divContainer.css('height'), 10)
|
height: Number.parseInt(divContainer.css('height'), 10),
|
||||||
}
|
};
|
||||||
// Initialize web2d workspace.
|
// Initialize web2d workspace.
|
||||||
const workspace = this._createWorkspace();
|
const workspace = this._createWorkspace();
|
||||||
this._workspace = workspace;
|
this._workspace = workspace;
|
||||||
@ -122,7 +127,7 @@ class Workspace {
|
|||||||
return this._workspace.getCoordSize();
|
return this._workspace.getCoordSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
setZoom(zoom: number, center: boolean = false): void {
|
setZoom(zoom: number, center = false): void {
|
||||||
this._zoom = zoom;
|
this._zoom = zoom;
|
||||||
const workspace = this._workspace;
|
const workspace = this._workspace;
|
||||||
const newVisibleAreaSize = this._screenManager.getVisibleBrowserSize();
|
const newVisibleAreaSize = this._screenManager.getVisibleBrowserSize();
|
||||||
@ -137,9 +142,7 @@ class Workspace {
|
|||||||
// Center and define a new center of coordinates ...
|
// Center and define a new center of coordinates ...
|
||||||
coordOriginX = -(newVisibleAreaSize.width / 2) * zoom;
|
coordOriginX = -(newVisibleAreaSize.width / 2) * zoom;
|
||||||
coordOriginY = -(newVisibleAreaSize.height / 2) * zoom;
|
coordOriginY = -(newVisibleAreaSize.height / 2) * zoom;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
const oldCoordOrigin = workspace.getCoordOrigin();
|
const oldCoordOrigin = workspace.getCoordOrigin();
|
||||||
|
|
||||||
// Next coordSize is always centered in the middle of the visible area ...
|
// Next coordSize is always centered in the middle of the visible area ...
|
||||||
|
@ -15,17 +15,21 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
import { Mindmap } from "../..";
|
import { Mindmap } from '../..';
|
||||||
import Exporter from "./Exporter";
|
import Exporter from './Exporter';
|
||||||
import SVGExporter from "./SVGExporter";
|
import SVGExporter from './SVGExporter';
|
||||||
/**
|
/**
|
||||||
* Based on https://mybyways.com/blog/convert-svg-to-png-using-your-browser
|
* Based on https://mybyways.com/blog/convert-svg-to-png-using-your-browser
|
||||||
*/
|
*/
|
||||||
class BinaryImageExporter implements Exporter {
|
class BinaryImageExporter implements Exporter {
|
||||||
svgElement: Element;
|
svgElement: Element;
|
||||||
|
|
||||||
mindmap: Mindmap;
|
mindmap: Mindmap;
|
||||||
|
|
||||||
width: number;
|
width: number;
|
||||||
|
|
||||||
height: number;
|
height: number;
|
||||||
|
|
||||||
imgFormat: string;
|
imgFormat: string;
|
||||||
|
|
||||||
constructor(mindmap: Mindmap, svgElement: Element, width: number, height: number, imgFormat: 'image/png' | 'image/jpeg') {
|
constructor(mindmap: Mindmap, svgElement: Element, width: number, height: number, imgFormat: 'image/png' | 'image/jpeg') {
|
||||||
@ -36,6 +40,7 @@ class BinaryImageExporter implements Exporter {
|
|||||||
this.width = width;
|
this.width = width;
|
||||||
this.height = height;
|
this.height = height;
|
||||||
}
|
}
|
||||||
|
|
||||||
extension(): string {
|
extension(): string {
|
||||||
return this.imgFormat.split['/'][0];
|
return this.imgFormat.split['/'][0];
|
||||||
}
|
}
|
||||||
@ -55,7 +60,6 @@ class BinaryImageExporter implements Exporter {
|
|||||||
// Render the image and wait for the response ...
|
// Render the image and wait for the response ...
|
||||||
const img = new Image();
|
const img = new Image();
|
||||||
const result = new Promise<string>((resolve, reject) => {
|
const result = new Promise<string>((resolve, reject) => {
|
||||||
|
|
||||||
img.onload = () => {
|
img.onload = () => {
|
||||||
const ctx = canvas.getContext('2d');
|
const ctx = canvas.getContext('2d');
|
||||||
// Scale for retina ...
|
// Scale for retina ...
|
||||||
@ -68,7 +72,7 @@ class BinaryImageExporter implements Exporter {
|
|||||||
|
|
||||||
URL.revokeObjectURL(svgUrl);
|
URL.revokeObjectURL(svgUrl);
|
||||||
resolve(imgDataUri);
|
resolve(imgDataUri);
|
||||||
}
|
};
|
||||||
});
|
});
|
||||||
img.src = svgUrl;
|
img.src = svgUrl;
|
||||||
return result;
|
return result;
|
||||||
|
@ -15,14 +15,14 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
import { Mindmap } from "../..";
|
import { Mindmap } from '../..';
|
||||||
import BinaryImageExporter from "./BinaryImageExporter";
|
import BinaryImageExporter from './BinaryImageExporter';
|
||||||
import Exporter from "./Exporter";
|
import Exporter from './Exporter';
|
||||||
import SVGExporter from "./SVGExporter";
|
import SVGExporter from './SVGExporter';
|
||||||
|
|
||||||
type type = 'svg' | 'png' | 'jpg';
|
type imageType = 'svg' | 'png' | 'jpg';
|
||||||
class ImageExpoterFactory {
|
class ImageExpoterFactory {
|
||||||
static create(type: type, mindmap: Mindmap, svgElement: Element, width: number, height: number, isCenter: boolean = false): Exporter {
|
static create(type: imageType, mindmap: Mindmap, svgElement: Element, width: number, height: number, isCenter = false): Exporter {
|
||||||
let result;
|
let result;
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'svg': {
|
case 'svg': {
|
||||||
@ -43,4 +43,4 @@ class ImageExpoterFactory {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
export default ImageExpoterFactory
|
export default ImageExpoterFactory;
|
||||||
|
@ -15,16 +15,16 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
import { Mindmap } from "../..";
|
import { Mindmap } from '../..';
|
||||||
import IconModel from "../model/IconModel";
|
import INodeModel from '../model/INodeModel';
|
||||||
import INodeModel from "../model/INodeModel";
|
import LinkModel from '../model/LinkModel';
|
||||||
import LinkModel from "../model/LinkModel";
|
import NoteModel from '../model/NoteModel';
|
||||||
import NoteModel from "../model/NoteModel";
|
import Exporter from './Exporter';
|
||||||
import Exporter from "./Exporter";
|
|
||||||
|
|
||||||
class MDExporter implements Exporter {
|
class MDExporter implements Exporter {
|
||||||
private mindmap: Mindmap;
|
private mindmap: Mindmap;
|
||||||
private footNotes = []
|
|
||||||
|
private footNotes = [];
|
||||||
|
|
||||||
constructor(mindmap: Mindmap) {
|
constructor(mindmap: Mindmap) {
|
||||||
this.mindmap = mindmap;
|
this.mindmap = mindmap;
|
||||||
@ -40,14 +40,13 @@ class MDExporter implements Exporter {
|
|||||||
|
|
||||||
export(): Promise<string> {
|
export(): Promise<string> {
|
||||||
this.footNotes = [];
|
this.footNotes = [];
|
||||||
const mindmap = this.mindmap;
|
|
||||||
|
|
||||||
// Add cental node as text ...
|
// Add cental node as text ...
|
||||||
const centralTopic = this.mindmap.getCentralTopic();
|
const centralTopic = this.mindmap.getCentralTopic();
|
||||||
const centralText = this.normalizeText(centralTopic.getText());
|
const centralText = this.normalizeText(centralTopic.getText());
|
||||||
|
|
||||||
// Traverse all the branches ...
|
// Traverse all the branches ...
|
||||||
let result = `# ${centralText}\n\n`
|
let result = `# ${centralText}\n\n`;
|
||||||
result += this.traverseBranch('', centralTopic.getChildren());
|
result += this.traverseBranch('', centralTopic.getChildren());
|
||||||
|
|
||||||
// White footnotes:
|
// White footnotes:
|
||||||
@ -65,18 +64,18 @@ class MDExporter implements Exporter {
|
|||||||
private traverseBranch(prefix: string, branches: Array<INodeModel>) {
|
private traverseBranch(prefix: string, branches: Array<INodeModel>) {
|
||||||
let result = '';
|
let result = '';
|
||||||
branches.forEach((node) => {
|
branches.forEach((node) => {
|
||||||
result = result + `${prefix}- ${node.getText()}`;
|
result = `${result}${prefix}- ${node.getText()}`;
|
||||||
node.getFeatures().forEach((f) => {
|
node.getFeatures().forEach((f) => {
|
||||||
const type = f.getType();
|
const type = f.getType();
|
||||||
// Dump all features ...
|
// Dump all features ...
|
||||||
if (type === 'link') {
|
if (type === 'link') {
|
||||||
result = result + ` ( [link](${(f as LinkModel).getUrl()}) )`
|
result = `${result} ( [link](${(f as LinkModel).getUrl()}) )`;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type === 'note') {
|
if (type === 'note') {
|
||||||
const note = f as NoteModel;
|
const note = f as NoteModel;
|
||||||
this.footNotes.push(note.getText());
|
this.footNotes.push(note.getText());
|
||||||
result = result + `[^${this.footNotes.length}] `
|
result = `${result}[^${this.footNotes.length}] `;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if(type === 'icon'){
|
// if(type === 'icon'){
|
||||||
@ -84,15 +83,13 @@ class MDExporter implements Exporter {
|
|||||||
// result = result + ` ![${icon.getIconType().replace('_','')}!](https://app.wisemapping.com/images/${icon.getIconType()}.svg )`
|
// result = result + ` ![${icon.getIconType().replace('_','')}!](https://app.wisemapping.com/images/${icon.getIconType()}.svg )`
|
||||||
// }
|
// }
|
||||||
});
|
});
|
||||||
result = result + '\n';
|
result = `${result}\n`;
|
||||||
|
|
||||||
if (node.getChildren().length > 0) {
|
if (node.getChildren().length > 0) {
|
||||||
result = result + this.traverseBranch(`${prefix}\t`, node.getChildren());
|
result += this.traverseBranch(`${prefix}\t`, node.getChildren());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
export default MDExporter;
|
export default MDExporter;
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright [2021] [wisemapping]
|
* Copyright [2021] [wisemapping]
|
||||||
*
|
*
|
||||||
@ -16,16 +15,18 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
import { Mindmap } from "../..";
|
import { Mindmap } from '../..';
|
||||||
import Exporter from "./Exporter";
|
import Exporter from './Exporter';
|
||||||
|
|
||||||
class SVGExporter implements Exporter {
|
class SVGExporter implements Exporter {
|
||||||
private svgElement: Element;
|
private svgElement: Element;
|
||||||
private prolog: string = '<?xml version="1.0" encoding="utf-8" standalone="yes"?>\n';
|
|
||||||
|
|
||||||
constructor(mindmap: Mindmap, svgElement: Element, centerImgage: boolean = false) {
|
private prolog = '<?xml version="1.0" encoding="utf-8" standalone="yes"?>\n';
|
||||||
|
|
||||||
|
constructor(mindmap: Mindmap, svgElement: Element, centerImgage = false) {
|
||||||
this.svgElement = svgElement;
|
this.svgElement = svgElement;
|
||||||
}
|
}
|
||||||
|
|
||||||
extension(): string {
|
extension(): string {
|
||||||
return 'svg';
|
return 'svg';
|
||||||
}
|
}
|
||||||
@ -38,7 +39,7 @@ class SVGExporter implements Exporter {
|
|||||||
|
|
||||||
// Are namespace declared ?. Otherwise, force the declaration ...
|
// Are namespace declared ?. Otherwise, force the declaration ...
|
||||||
if (svgTxt.indexOf('xmlns:xlink=') === -1) {
|
if (svgTxt.indexOf('xmlns:xlink=') === -1) {
|
||||||
svgTxt = svgTxt.replace('<svg ', '<svg xmlns:xlink="http://www.w3.org/1999/xlink" ')
|
svgTxt = svgTxt.replace('<svg ', '<svg xmlns:xlink="http://www.w3.org/1999/xlink" ');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add white background. This is mainly for PNG export ...
|
// Add white background. This is mainly for PNG export ...
|
||||||
@ -58,13 +59,13 @@ class SVGExporter implements Exporter {
|
|||||||
const xmlDoc = parser.parseFromString(xmlStr, mimeType);
|
const xmlDoc = parser.parseFromString(xmlStr, mimeType);
|
||||||
|
|
||||||
// Is there any parsing error ?.
|
// Is there any parsing error ?.
|
||||||
if (xmlDoc.getElementsByTagName("parsererror").length > 0) {
|
if (xmlDoc.getElementsByTagName('parsererror').length > 0) {
|
||||||
const xmmStr = new XMLSerializer().serializeToString(xmlDoc);
|
const xmmStr = new XMLSerializer().serializeToString(xmlDoc);
|
||||||
console.log(xmmStr);
|
console.log(xmmStr);
|
||||||
throw new Error(`Unexpected error parsing: ${xmlStr}. Error: ${xmmStr}`);
|
throw new Error(`Unexpected error parsing: ${xmlStr}. Error: ${xmmStr}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
return xmlDoc;
|
return xmlDoc;
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
export default SVGExporter;
|
export default SVGExporter;
|
@ -15,16 +15,16 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
import { Mindmap } from "../..";
|
import { Mindmap } from '../..';
|
||||||
import Exporter from "./Exporter";
|
import Exporter from './Exporter';
|
||||||
import MDExporter from "./MDExporter";
|
import MDExporter from './MDExporter';
|
||||||
import TxtExporter from "./TxtExporter";
|
import TxtExporter from './TxtExporter';
|
||||||
import WiseXMLExporter from "./WiseXMLExporter";
|
import WiseXMLExporter from './WiseXMLExporter';
|
||||||
|
|
||||||
type type = 'wxml' | 'txt' | 'mm' | 'csv' | 'md';
|
type textType = 'wxml' | 'txt' | 'mm' | 'csv' | 'md';
|
||||||
|
|
||||||
class TextExporterFactory {
|
class TextExporterFactory {
|
||||||
static create(type: type, mindmap: Mindmap): Exporter {
|
static create(type: textType, mindmap: Mindmap): Exporter {
|
||||||
let result: Exporter;
|
let result: Exporter;
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'wxml':
|
case 'wxml':
|
||||||
@ -40,7 +40,6 @@ class TextExporterFactory {
|
|||||||
throw new Error(`Unsupported type ${type}`);
|
throw new Error(`Unsupported type ${type}`);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
export default TextExporterFactory;
|
export default TextExporterFactory;
|
||||||
|
@ -15,10 +15,10 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
import { Mindmap } from "../..";
|
import { Mindmap } from '../..';
|
||||||
import INodeModel from "../model/INodeModel";
|
import INodeModel from '../model/INodeModel';
|
||||||
import LinkModel from "../model/LinkModel";
|
import LinkModel from '../model/LinkModel';
|
||||||
import Exporter from "./Exporter";
|
import Exporter from './Exporter';
|
||||||
|
|
||||||
class TxtExporter implements Exporter {
|
class TxtExporter implements Exporter {
|
||||||
private mindmap: Mindmap;
|
private mindmap: Mindmap;
|
||||||
@ -32,7 +32,7 @@ class TxtExporter implements Exporter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export(): Promise<string> {
|
export(): Promise<string> {
|
||||||
const mindmap = this.mindmap;
|
const { mindmap } = this;
|
||||||
|
|
||||||
const branches = mindmap.getBranches();
|
const branches = mindmap.getBranches();
|
||||||
const retult = this.traverseBranch('', branches);
|
const retult = this.traverseBranch('', branches);
|
||||||
@ -42,22 +42,20 @@ class TxtExporter implements Exporter {
|
|||||||
private traverseBranch(prefix: string, branches: Array<INodeModel>) {
|
private traverseBranch(prefix: string, branches: Array<INodeModel>) {
|
||||||
let result = '';
|
let result = '';
|
||||||
branches.forEach((node, index) => {
|
branches.forEach((node, index) => {
|
||||||
result = result + `${prefix}${index+1} ${node.getText()}`;
|
result = `${result}${prefix}${index + 1} ${node.getText()}`;
|
||||||
node.getFeatures().forEach((f) => {
|
node.getFeatures().forEach((f) => {
|
||||||
const type = f.getType();
|
const type = f.getType();
|
||||||
if (type === 'link') {
|
if (type === 'link') {
|
||||||
result = result + ` [link: ${(f as LinkModel).getUrl()}]`
|
result = `${result} [link: ${(f as LinkModel).getUrl()}]`;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
result = result + '\n';
|
result = `${result}\n`;
|
||||||
|
|
||||||
if (node.getChildren().length > 0) {
|
if (node.getChildren().length > 0) {
|
||||||
result = result + this.traverseBranch(`\t${prefix}${index+1}.`, node.getChildren());
|
result += this.traverseBranch(`\t${prefix}${index + 1}.`, node.getChildren());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
export default TxtExporter;
|
export default TxtExporter;
|
@ -15,12 +15,13 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
import { Mindmap } from "../..";
|
import { Mindmap } from '../..';
|
||||||
import XMLSerializerFactory from "../persistence/XMLSerializerFactory";
|
import XMLSerializerFactory from '../persistence/XMLSerializerFactory';
|
||||||
import Exporter from "./Exporter";
|
import Exporter from './Exporter';
|
||||||
|
|
||||||
class WiseXMLExporter implements Exporter {
|
class WiseXMLExporter implements Exporter {
|
||||||
mindmap: Mindmap;
|
mindmap: Mindmap;
|
||||||
|
|
||||||
constructor(mindmap: Mindmap) {
|
constructor(mindmap: Mindmap) {
|
||||||
this.mindmap = mindmap;
|
this.mindmap = mindmap;
|
||||||
}
|
}
|
||||||
@ -30,18 +31,16 @@ class WiseXMLExporter implements Exporter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export(): Promise<string> {
|
export(): Promise<string> {
|
||||||
|
const { mindmap } = this;
|
||||||
const mindmap = this.mindmap;
|
|
||||||
const serializer = XMLSerializerFactory
|
const serializer = XMLSerializerFactory
|
||||||
.createInstanceFromMindmap(mindmap);
|
.createInstanceFromMindmap(mindmap);
|
||||||
const document: Document = serializer.toXML(mindmap);
|
const document: Document = serializer.toXML(mindmap);
|
||||||
|
|
||||||
const xmlStr: string = new XMLSerializer()
|
const xmlStr: string = new XMLSerializer()
|
||||||
.serializeToString(document)
|
.serializeToString(document);
|
||||||
const blob = new Blob([xmlStr], { type: 'application/xml' });
|
const blob = new Blob([xmlStr], { type: 'application/xml' });
|
||||||
const result = URL.createObjectURL(blob);
|
const result = URL.createObjectURL(blob);
|
||||||
return Promise.resolve(result);
|
return Promise.resolve(result);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
export default WiseXMLExporter;
|
export default WiseXMLExporter;
|
@ -21,9 +21,12 @@ export type FeatureType = 'note' | 'link' | 'icon';
|
|||||||
|
|
||||||
class FeatureModel {
|
class FeatureModel {
|
||||||
static _next_id = 0;
|
static _next_id = 0;
|
||||||
|
|
||||||
private _id: number;
|
private _id: number;
|
||||||
|
|
||||||
private _type: FeatureType;
|
private _type: FeatureType;
|
||||||
private _attributes: {};
|
|
||||||
|
private _attributes: Record<string, unknown>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @constructs
|
* @constructs
|
||||||
@ -58,7 +61,7 @@ class FeatureModel {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
setAttribute(key: string, value: any) {
|
setAttribute(key: string, value: unknown) {
|
||||||
$assert(key, 'key id can not be null');
|
$assert(key, 'key id can not be null');
|
||||||
this._attributes[key] = value;
|
this._attributes[key] = value;
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@ import LinkModel from './LinkModel';
|
|||||||
import NoteModel from './NoteModel';
|
import NoteModel from './NoteModel';
|
||||||
import FeatureModel, { FeatureType } from './FeatureModel';
|
import FeatureModel, { FeatureType } from './FeatureModel';
|
||||||
|
|
||||||
|
|
||||||
interface NodeById {
|
interface NodeById {
|
||||||
id: FeatureType,
|
id: FeatureType,
|
||||||
model: typeof FeatureModel;
|
model: typeof FeatureModel;
|
||||||
@ -30,6 +29,7 @@ class FeatureModelFactory {
|
|||||||
.filter((elem) => elem.id === type)[0];
|
.filter((elem) => elem.id === type)[0];
|
||||||
return new Model(attributes);
|
return new Model(attributes);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param id the feature metadata id
|
* @param id the feature metadata id
|
||||||
* @return {Boolean} returns true if the given id is contained in the metadata array
|
* @return {Boolean} returns true if the given id is contained in the metadata array
|
||||||
@ -37,6 +37,6 @@ class FeatureModelFactory {
|
|||||||
static isSupported(type: string): boolean {
|
static isSupported(type: string): boolean {
|
||||||
return FeatureModelFactory.modelById.some((elem) => elem.id === type);
|
return FeatureModelFactory.modelById.some((elem) => elem.id === type);
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
export default FeatureModelFactory;
|
export default FeatureModelFactory;
|
||||||
|
@ -21,12 +21,15 @@ import FeatureModel from './FeatureModel';
|
|||||||
import IMindmap from './IMindmap';
|
import IMindmap from './IMindmap';
|
||||||
import Mindmap from './Mindmap';
|
import Mindmap from './Mindmap';
|
||||||
|
|
||||||
|
export type NodeModelType = 'CentralTopic' | 'MainTopic';
|
||||||
|
|
||||||
// regex taken from https://stackoverflow.com/a/34763398/58128
|
// regex taken from https://stackoverflow.com/a/34763398/58128
|
||||||
const parseJsObject = (str: string) => JSON.parse(str.replace(/(['"])?([a-z0-9A-Z_]+)(['"])?:/g, '"$2": '));
|
const parseJsObject = (str: string) => JSON.parse(str.replace(/(['"])?([a-z0-9A-Z_]+)(['"])?:/g, '"$2": '));
|
||||||
|
|
||||||
abstract class INodeModel {
|
abstract class INodeModel {
|
||||||
static MAIN_TOPIC_TO_MAIN_TOPIC_DISTANCE: number = 220;
|
static MAIN_TOPIC_TO_MAIN_TOPIC_DISTANCE = 220;
|
||||||
static _next_uuid: number = 0;
|
|
||||||
|
static _next_uuid = 0;
|
||||||
|
|
||||||
protected _mindmap: Mindmap;
|
protected _mindmap: Mindmap;
|
||||||
|
|
||||||
@ -38,6 +41,7 @@ abstract class INodeModel {
|
|||||||
getId(): number {
|
getId(): number {
|
||||||
return this.getProperty('id');
|
return this.getProperty('id');
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract getFeatures(): FeatureModel[];
|
abstract getFeatures(): FeatureModel[];
|
||||||
|
|
||||||
/** */
|
/** */
|
||||||
@ -360,7 +364,7 @@ abstract class INodeModel {
|
|||||||
static _nextUUID(): number {
|
static _nextUUID(): number {
|
||||||
INodeModel._next_uuid += 1;
|
INodeModel._next_uuid += 1;
|
||||||
return INodeModel._next_uuid;
|
return INodeModel._next_uuid;
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const TopicShape = {
|
const TopicShape = {
|
||||||
@ -371,8 +375,6 @@ const TopicShape = {
|
|||||||
IMAGE: 'image',
|
IMAGE: 'image',
|
||||||
};
|
};
|
||||||
|
|
||||||
export type NodeModelType = 'CentralTopic' | 'MainTopic';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @todo: This method must be implemented. (unascribed)
|
* @todo: This method must be implemented. (unascribed)
|
||||||
*/
|
*/
|
||||||
|
@ -25,7 +25,7 @@ class IconModel extends FeatureModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getIconType(): string {
|
getIconType(): string {
|
||||||
return this.getAttribute('id');
|
return this.getAttribute('id') as string;
|
||||||
}
|
}
|
||||||
|
|
||||||
setIconType(iconType: string):void {
|
setIconType(iconType: string):void {
|
||||||
|
@ -25,7 +25,7 @@ class LinkModel extends FeatureModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getUrl(): string {
|
getUrl(): string {
|
||||||
return this.getAttribute('url');
|
return this.getAttribute('url') as string;
|
||||||
}
|
}
|
||||||
|
|
||||||
setUrl(url: string): void {
|
setUrl(url: string): void {
|
||||||
|
@ -24,9 +24,13 @@ import ModelCodeName from '../persistence/ModelCodeName';
|
|||||||
|
|
||||||
class Mindmap extends IMindmap {
|
class Mindmap extends IMindmap {
|
||||||
private _description: string;
|
private _description: string;
|
||||||
|
|
||||||
private _version: string;
|
private _version: string;
|
||||||
|
|
||||||
private _id: string;
|
private _id: string;
|
||||||
|
|
||||||
private _branches: Array<NodeModel>;
|
private _branches: Array<NodeModel>;
|
||||||
|
|
||||||
private _relationships: Array<RelationshipModel>;
|
private _relationships: Array<RelationshipModel>;
|
||||||
|
|
||||||
constructor(id: string, version: string = ModelCodeName.TANGO) {
|
constructor(id: string, version: string = ModelCodeName.TANGO) {
|
||||||
@ -104,7 +108,6 @@ class Mindmap extends IMindmap {
|
|||||||
return this._relationships;
|
return this._relationships;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
hasAlreadyAdded(node: NodeModel): boolean {
|
hasAlreadyAdded(node: NodeModel): boolean {
|
||||||
let result = false;
|
let result = false;
|
||||||
|
|
||||||
|
@ -23,9 +23,14 @@ import FeatureModel, { FeatureType } from './FeatureModel';
|
|||||||
import Mindmap from './Mindmap';
|
import Mindmap from './Mindmap';
|
||||||
|
|
||||||
class NodeModel extends INodeModel {
|
class NodeModel extends INodeModel {
|
||||||
private _properties: {};
|
private _properties: Record<string, string | number | boolean>;
|
||||||
|
|
||||||
|
// eslint-disable-next-line no-use-before-define
|
||||||
private _children: NodeModel[];
|
private _children: NodeModel[];
|
||||||
|
|
||||||
private _features: FeatureModel[];
|
private _features: FeatureModel[];
|
||||||
|
|
||||||
|
// eslint-disable-next-line no-use-before-define
|
||||||
private _parent: NodeModel;
|
private _parent: NodeModel;
|
||||||
|
|
||||||
constructor(type: NodeModelType, mindmap: Mindmap, id: number) {
|
constructor(type: NodeModelType, mindmap: Mindmap, id: number) {
|
||||||
@ -150,7 +155,7 @@ class NodeModel extends INodeModel {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const id = result.getId();
|
const id = result.getId();
|
||||||
result._properties = Object.assign({}, this._properties);
|
result._properties = { ...this._properties };
|
||||||
result.setId(id);
|
result.setId(id);
|
||||||
|
|
||||||
result._features = cloneDeep(this._features);
|
result._features = cloneDeep(this._features);
|
||||||
@ -189,7 +194,6 @@ class NodeModel extends INodeModel {
|
|||||||
$assert(parent !== this, 'The same node can not be parent and child if itself.');
|
$assert(parent !== this, 'The same node can not be parent and child if itself.');
|
||||||
this._parent = parent;
|
this._parent = parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default NodeModel;
|
export default NodeModel;
|
||||||
|
@ -27,7 +27,7 @@ class NoteModel extends FeatureModel {
|
|||||||
|
|
||||||
/** */
|
/** */
|
||||||
getText():string {
|
getText():string {
|
||||||
return this.getAttribute('text');
|
return this.getAttribute('text') as string;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** */
|
/** */
|
||||||
|
@ -20,14 +20,22 @@ import Point from '@wisemapping/web2d';
|
|||||||
import ConnectionLine from '../ConnectionLine';
|
import ConnectionLine from '../ConnectionLine';
|
||||||
|
|
||||||
class RelationshipModel {
|
class RelationshipModel {
|
||||||
static _next_uuid: number = 0;
|
static _next_uuid = 0;
|
||||||
|
|
||||||
private _id: number;
|
private _id: number;
|
||||||
|
|
||||||
private _sourceTargetId: number;
|
private _sourceTargetId: number;
|
||||||
|
|
||||||
private _targetTopicId: number;
|
private _targetTopicId: number;
|
||||||
|
|
||||||
private _lineType: number;
|
private _lineType: number;
|
||||||
|
|
||||||
private _srcCtrlPoint: Point;
|
private _srcCtrlPoint: Point;
|
||||||
|
|
||||||
private _destCtrlPoint: Point;
|
private _destCtrlPoint: Point;
|
||||||
|
|
||||||
private _endArrow: boolean;
|
private _endArrow: boolean;
|
||||||
|
|
||||||
private _startArrow: boolean;
|
private _startArrow: boolean;
|
||||||
|
|
||||||
constructor(sourceTopicId: number, targetTopicId: number) {
|
constructor(sourceTopicId: number, targetTopicId: number) {
|
||||||
@ -130,5 +138,4 @@ class RelationshipModel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export default RelationshipModel;
|
export default RelationshipModel;
|
||||||
|
@ -24,7 +24,9 @@ import XMLSerializerPela from './XMLSerializerPela';
|
|||||||
|
|
||||||
class Beta2PelaMigrator implements XMLMindmapSerializer {
|
class Beta2PelaMigrator implements XMLMindmapSerializer {
|
||||||
private _betaSerializer: XMLMindmapSerializer;
|
private _betaSerializer: XMLMindmapSerializer;
|
||||||
|
|
||||||
private _pelaSerializer: XMLSerializerPela;
|
private _pelaSerializer: XMLSerializerPela;
|
||||||
|
|
||||||
constructor(betaSerializer: XMLSerializerPela) {
|
constructor(betaSerializer: XMLSerializerPela) {
|
||||||
this._betaSerializer = betaSerializer;
|
this._betaSerializer = betaSerializer;
|
||||||
this._pelaSerializer = new XMLSerializerPela();
|
this._pelaSerializer = new XMLSerializerPela();
|
||||||
|
@ -24,7 +24,9 @@ import NodeModel from '../model/NodeModel';
|
|||||||
|
|
||||||
class Pela2TangoMigrator implements XMLMindmapSerializer {
|
class Pela2TangoMigrator implements XMLMindmapSerializer {
|
||||||
private _pelaSerializer: XMLMindmapSerializer;
|
private _pelaSerializer: XMLMindmapSerializer;
|
||||||
|
|
||||||
private _tangoSerializer: XMLSerializer;
|
private _tangoSerializer: XMLSerializer;
|
||||||
|
|
||||||
constructor(pelaSerializer: XMLMindmapSerializer) {
|
constructor(pelaSerializer: XMLMindmapSerializer) {
|
||||||
this._pelaSerializer = pelaSerializer;
|
this._pelaSerializer = pelaSerializer;
|
||||||
this._tangoSerializer = new XMLSerializer();
|
this._tangoSerializer = new XMLSerializer();
|
||||||
|
@ -16,8 +16,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import Mindmap from "../model/Mindmap";
|
import Mindmap from '../model/Mindmap';
|
||||||
|
|
||||||
|
|
||||||
interface XMLMindmapSerializer {
|
interface XMLMindmapSerializer {
|
||||||
toXML(mindmap: Mindmap): Document;
|
toXML(mindmap: Mindmap): Document;
|
||||||
|
@ -54,7 +54,7 @@ class XMLSerializerBeta implements XMLMindmapSerializer {
|
|||||||
|
|
||||||
// Set topic attributes...
|
// Set topic attributes...
|
||||||
if (topic.getType() === 'CentralTopic') {
|
if (topic.getType() === 'CentralTopic') {
|
||||||
parentTopic.setAttribute('central', new Boolean(true).toString());
|
parentTopic.setAttribute('central', true.toString());
|
||||||
} else {
|
} else {
|
||||||
const parent = topic.getParent();
|
const parent = topic.getParent();
|
||||||
if (parent == null || parent.getType() === 'CentralTopic') {
|
if (parent == null || parent.getType() === 'CentralTopic') {
|
||||||
@ -77,7 +77,7 @@ class XMLSerializerBeta implements XMLMindmapSerializer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (topic.areChildrenShrunken()) {
|
if (topic.areChildrenShrunken()) {
|
||||||
parentTopic.setAttribute('shrink', new Boolean(true).toString());
|
parentTopic.setAttribute('shrink', true.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Font properties ...
|
// Font properties ...
|
||||||
@ -127,7 +127,7 @@ class XMLSerializerBeta implements XMLMindmapSerializer {
|
|||||||
|
|
||||||
// LINKS
|
// LINKS
|
||||||
const links = topic.findFeatureByType('links');
|
const links = topic.findFeatureByType('links');
|
||||||
icons.forEach((link) => {
|
links.forEach((link) => {
|
||||||
const linkDom = this._linkToXML(document, link);
|
const linkDom = this._linkToXML(document, link);
|
||||||
parentTopic.append(linkDom);
|
parentTopic.append(linkDom);
|
||||||
});
|
});
|
||||||
@ -316,5 +316,4 @@ class XMLSerializerBeta implements XMLMindmapSerializer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export default XMLSerializerBeta;
|
export default XMLSerializerBeta;
|
||||||
|
@ -22,7 +22,7 @@ import Pela2TangoMigrator from './Pela2TangoMigrator';
|
|||||||
import XMLSerializerBeta from './XMLSerializerBeta';
|
import XMLSerializerBeta from './XMLSerializerBeta';
|
||||||
import XMLSerializerPela from './XMLSerializerPela';
|
import XMLSerializerPela from './XMLSerializerPela';
|
||||||
import XMLSerializerTango from './XMLSerializerTango';
|
import XMLSerializerTango from './XMLSerializerTango';
|
||||||
import { Mindmap } from '../..';
|
import Mindmap from '../model/Mindmap';
|
||||||
import XMLMindmapSerializer from './XMLMindmapSerializer';
|
import XMLMindmapSerializer from './XMLMindmapSerializer';
|
||||||
|
|
||||||
const codeToSerializer = [
|
const codeToSerializer = [
|
||||||
|
@ -28,7 +28,8 @@ import XMLMindmapSerializer from './XMLMindmapSerializer';
|
|||||||
|
|
||||||
class XMLSerializerPela implements XMLMindmapSerializer {
|
class XMLSerializerPela implements XMLMindmapSerializer {
|
||||||
private static MAP_ROOT_NODE = 'map';
|
private static MAP_ROOT_NODE = 'map';
|
||||||
private _idsMap: {};
|
|
||||||
|
private _idsMap: Record<number, Element>;
|
||||||
|
|
||||||
toXML(mindmap: Mindmap): Document {
|
toXML(mindmap: Mindmap): Document {
|
||||||
$assert(mindmap, 'Can not save a null mindmap');
|
$assert(mindmap, 'Can not save a null mindmap');
|
||||||
@ -251,8 +252,8 @@ class XMLSerializerPela implements XMLMindmapSerializer {
|
|||||||
|
|
||||||
// Add all the topics nodes ...
|
// Add all the topics nodes ...
|
||||||
const childNodes = Array.from(rootElem.childNodes);
|
const childNodes = Array.from(rootElem.childNodes);
|
||||||
const topicsNodes = childNodes.
|
const topicsNodes = childNodes
|
||||||
filter((child: ChildNode) => (child.nodeType === 1 && (child as Element).tagName === 'topic'))
|
.filter((child: ChildNode) => (child.nodeType === 1 && (child as Element).tagName === 'topic'))
|
||||||
.map((c) => c as Element);
|
.map((c) => c as Element);
|
||||||
topicsNodes.forEach((child) => {
|
topicsNodes.forEach((child) => {
|
||||||
const topic = this._deserializeNode(child, mindmap);
|
const topic = this._deserializeNode(child, mindmap);
|
||||||
@ -260,8 +261,8 @@ class XMLSerializerPela implements XMLMindmapSerializer {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Then all relationshops, they are connected to topics ...
|
// Then all relationshops, they are connected to topics ...
|
||||||
const relationshipsNodes = childNodes.
|
const relationshipsNodes = childNodes
|
||||||
filter((child: ChildNode) => (child.nodeType === 1 && (child as Element).tagName === 'relationship'))
|
.filter((child: ChildNode) => (child.nodeType === 1 && (child as Element).tagName === 'relationship'))
|
||||||
.map((c) => c as Element);
|
.map((c) => c as Element);
|
||||||
relationshipsNodes.forEach((child) => {
|
relationshipsNodes.forEach((child) => {
|
||||||
try {
|
try {
|
||||||
@ -284,7 +285,7 @@ class XMLSerializerPela implements XMLMindmapSerializer {
|
|||||||
: 'MainTopic';
|
: 'MainTopic';
|
||||||
|
|
||||||
// Load attributes...
|
// Load attributes...
|
||||||
let id = null;
|
let id: number | null = null;
|
||||||
if ($defined(domElem.getAttribute('id'))) {
|
if ($defined(domElem.getAttribute('id'))) {
|
||||||
id = Number.parseInt(domElem.getAttribute('id'), 10);
|
id = Number.parseInt(domElem.getAttribute('id'), 10);
|
||||||
}
|
}
|
||||||
@ -368,7 +369,7 @@ class XMLSerializerPela implements XMLMindmapSerializer {
|
|||||||
const position = domElem.getAttribute('position');
|
const position = domElem.getAttribute('position');
|
||||||
if ($defined(position)) {
|
if ($defined(position)) {
|
||||||
const pos = position.split(',');
|
const pos = position.split(',');
|
||||||
topic.setPosition(Number.parseInt(pos[0]), Number.parseInt(pos[1]));
|
topic.setPosition(Number.parseInt(pos[0], 10), Number.parseInt(pos[1], 10));
|
||||||
}
|
}
|
||||||
|
|
||||||
const metadata = domElem.getAttribute('metadata');
|
const metadata = domElem.getAttribute('metadata');
|
||||||
@ -387,7 +388,7 @@ class XMLSerializerPela implements XMLMindmapSerializer {
|
|||||||
} else if (FeatureModelFactory.isSupported(elem.tagName)) {
|
} else if (FeatureModelFactory.isSupported(elem.tagName)) {
|
||||||
// Load attributes ...
|
// Load attributes ...
|
||||||
const namedNodeMap = elem.attributes;
|
const namedNodeMap = elem.attributes;
|
||||||
const attributes = {};
|
const attributes: Record<string, string> = {};
|
||||||
|
|
||||||
for (let j = 0; j < namedNodeMap.length; j++) {
|
for (let j = 0; j < namedNodeMap.length; j++) {
|
||||||
const attribute = namedNodeMap.item(j);
|
const attribute = namedNodeMap.item(j);
|
||||||
@ -397,7 +398,7 @@ class XMLSerializerPela implements XMLMindmapSerializer {
|
|||||||
// Has text node ?.
|
// Has text node ?.
|
||||||
const textAttr = XMLSerializerPela._deserializeTextAttr(elem);
|
const textAttr = XMLSerializerPela._deserializeTextAttr(elem);
|
||||||
if (textAttr) {
|
if (textAttr) {
|
||||||
attributes['text'] = textAttr;
|
attributes.text = textAttr;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a new element ....
|
// Create a new element ....
|
||||||
@ -511,5 +512,4 @@ class XMLSerializerPela implements XMLMindmapSerializer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export default XMLSerializerPela;
|
export default XMLSerializerPela;
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
/* eslint-disable no-new */
|
||||||
/*
|
/*
|
||||||
* Copyright [2021] [wisemapping]
|
* Copyright [2021] [wisemapping]
|
||||||
*
|
*
|
||||||
@ -29,10 +30,9 @@ import KeyboardShortcutTooltip from './KeyboardShortcutTooltip';
|
|||||||
import KeyboardShortcutDialog from './KeyboardShortcutDialog';
|
import KeyboardShortcutDialog from './KeyboardShortcutDialog';
|
||||||
import AccountSettingsPanel from './AccountSettingsPanel';
|
import AccountSettingsPanel from './AccountSettingsPanel';
|
||||||
import Designer from '../Designer';
|
import Designer from '../Designer';
|
||||||
import Topic from '../Topic';
|
|
||||||
|
|
||||||
class Menu extends IMenu {
|
class Menu extends IMenu {
|
||||||
constructor(designer: Designer, containerId: string, mapId: string, readOnly: boolean = false, baseUrl:string = '') {
|
constructor(designer: Designer, containerId: string, mapId: string, readOnly = false, baseUrl = '') {
|
||||||
super(designer, containerId, mapId);
|
super(designer, containerId, mapId);
|
||||||
const saveElem = $('#save');
|
const saveElem = $('#save');
|
||||||
|
|
||||||
@ -265,7 +265,6 @@ class Menu extends IMenu {
|
|||||||
});
|
});
|
||||||
Menu._registerTooltip('position', $msg('CENTER_POSITION'));
|
Menu._registerTooltip('position', $msg('CENTER_POSITION'));
|
||||||
|
|
||||||
|
|
||||||
const undoButton = this._addButton('undoEdition', false, false, () => {
|
const undoButton = this._addButton('undoEdition', false, false, () => {
|
||||||
designer.undo();
|
designer.undo();
|
||||||
});
|
});
|
||||||
@ -361,7 +360,7 @@ class Menu extends IMenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const discardElem = $('#discard');
|
const discardElem = $('#discard');
|
||||||
if (discardElem.length!=0) {
|
if (discardElem.length !== 0) {
|
||||||
this._addButton('discard', false, false, () => {
|
this._addButton('discard', false, false, () => {
|
||||||
this.discardChanges(designer);
|
this.discardChanges(designer);
|
||||||
});
|
});
|
||||||
@ -369,9 +368,9 @@ class Menu extends IMenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const shareElem = $('#shareIt');
|
const shareElem = $('#shareIt');
|
||||||
if (shareElem.length!=0) {
|
if (shareElem.length !== 0) {
|
||||||
this._addButton('shareIt', false, false, () => {
|
this._addButton('shareIt', false, false, () => {
|
||||||
const dialog = new BootstrapDialogRequest(`c/maps/${mapId}/sharef`, $msg('COLLABORATE'), {
|
new BootstrapDialogRequest(`c/maps/${mapId}/sharef`, $msg('COLLABORATE'), {
|
||||||
closeButton: true,
|
closeButton: true,
|
||||||
cancelButton: true,
|
cancelButton: true,
|
||||||
});
|
});
|
||||||
@ -381,9 +380,9 @@ class Menu extends IMenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const publishElem = $('#publishIt');
|
const publishElem = $('#publishIt');
|
||||||
if (publishElem.length!=0) {
|
if (publishElem.length !== 0) {
|
||||||
this._addButton('publishIt', false, false, () => {
|
this._addButton('publishIt', false, false, () => {
|
||||||
const dialog = new BootstrapDialogRequest(`c/maps/${mapId}/publishf`, $msg('PUBLISH'), {
|
new BootstrapDialogRequest(`c/maps/${mapId}/publishf`, $msg('PUBLISH'), {
|
||||||
closeButton: true,
|
closeButton: true,
|
||||||
cancelButton: true,
|
cancelButton: true,
|
||||||
});
|
});
|
||||||
@ -393,9 +392,9 @@ class Menu extends IMenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const historyElem = $('#history');
|
const historyElem = $('#history');
|
||||||
if (historyElem.length!=0) {
|
if (historyElem.length !== 0) {
|
||||||
this._addButton('history', false, false, () => {
|
this._addButton('history', false, false, () => {
|
||||||
const dialog = new BootstrapDialogRequest(`c/maps/${mapId}/historyf`, $msg('HISTORY'), {
|
new BootstrapDialogRequest(`c/maps/${mapId}/historyf`, $msg('HISTORY'), {
|
||||||
closeButton: true,
|
closeButton: true,
|
||||||
cancelButton: true,
|
cancelButton: true,
|
||||||
});
|
});
|
||||||
@ -406,9 +405,9 @@ class Menu extends IMenu {
|
|||||||
|
|
||||||
// Keyboard Shortcuts Action ...
|
// Keyboard Shortcuts Action ...
|
||||||
const keyboardShortcut = $('#keyboardShortcuts');
|
const keyboardShortcut = $('#keyboardShortcuts');
|
||||||
if (keyboardShortcut) {
|
if (keyboardShortcut.length !== 0) {
|
||||||
keyboardShortcut.bind('click', (event) => {
|
keyboardShortcut.bind('click', (event) => {
|
||||||
const dialog = new KeyboardShortcutDialog();
|
new KeyboardShortcutDialog();
|
||||||
designer.onObjectFocusEvent();
|
designer.onObjectFocusEvent();
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
});
|
});
|
||||||
@ -416,7 +415,7 @@ class Menu extends IMenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const backTolist = $('#backToList');
|
const backTolist = $('#backToList');
|
||||||
if (backTolist) {
|
if (backTolist.length !== 0) {
|
||||||
backTolist.bind('click', (event) => {
|
backTolist.bind('click', (event) => {
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
window.location.href = '/c/maps/';
|
window.location.href = '/c/maps/';
|
||||||
@ -427,7 +426,7 @@ class Menu extends IMenu {
|
|||||||
|
|
||||||
// Account dialog ...
|
// Account dialog ...
|
||||||
const accountSettings = $('#account');
|
const accountSettings = $('#account');
|
||||||
if (accountSettings.length!=0) {
|
if (accountSettings.length !== 0) {
|
||||||
accountSettings.bind('click', (event) => {
|
accountSettings.bind('click', (event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
});
|
});
|
||||||
|
@ -30,7 +30,6 @@ import PersistenceManager from './components/PersistenceManager';
|
|||||||
import LocalStorageManager from './components/LocalStorageManager';
|
import LocalStorageManager from './components/LocalStorageManager';
|
||||||
import DesignerOptionsBuilder from './components/DesignerOptionsBuilder';
|
import DesignerOptionsBuilder from './components/DesignerOptionsBuilder';
|
||||||
|
|
||||||
|
|
||||||
// This hack is required to initialize Bootstrap. In future, this should be removed.
|
// This hack is required to initialize Bootstrap. In future, this should be removed.
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
global.jQuery = jquery;
|
global.jQuery = jquery;
|
||||||
@ -62,7 +61,8 @@ const options = DesignerOptionsBuilder.buildOptions(
|
|||||||
container: 'mindplot',
|
container: 'mindplot',
|
||||||
zoom: zoomParam || global.userOptions.zoom,
|
zoom: zoomParam || global.userOptions.zoom,
|
||||||
locale: global.locale,
|
locale: global.locale,
|
||||||
});
|
},
|
||||||
|
);
|
||||||
|
|
||||||
// Build designer ...
|
// Build designer ...
|
||||||
const designer = buildDesigner(options);
|
const designer = buildDesigner(options);
|
||||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 151 KiB After Width: | Height: | Size: 148 KiB |
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 86 KiB |
Before Width: | Height: | Size: 321 KiB After Width: | Height: | Size: 325 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 296 KiB After Width: | Height: | Size: 301 KiB |
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
209
yarn.lock
@ -2783,6 +2783,21 @@
|
|||||||
semver "^7.3.5"
|
semver "^7.3.5"
|
||||||
tsutils "^3.21.0"
|
tsutils "^3.21.0"
|
||||||
|
|
||||||
|
"@typescript-eslint/eslint-plugin@^5.9.1":
|
||||||
|
version "5.9.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.9.1.tgz#e5a86d7e1f9dc0b3df1e6d94feaf20dd838d066c"
|
||||||
|
integrity sha512-Xv9tkFlyD4MQGpJgTo6wqDqGvHIRmRgah/2Sjz1PUnJTawjHWIwBivUE9x0QtU2WVii9baYgavo/bHjrZJkqTw==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/experimental-utils" "5.9.1"
|
||||||
|
"@typescript-eslint/scope-manager" "5.9.1"
|
||||||
|
"@typescript-eslint/type-utils" "5.9.1"
|
||||||
|
debug "^4.3.2"
|
||||||
|
functional-red-black-tree "^1.0.1"
|
||||||
|
ignore "^5.1.8"
|
||||||
|
regexpp "^3.2.0"
|
||||||
|
semver "^7.3.5"
|
||||||
|
tsutils "^3.21.0"
|
||||||
|
|
||||||
"@typescript-eslint/experimental-utils@4.33.0":
|
"@typescript-eslint/experimental-utils@4.33.0":
|
||||||
version "4.33.0"
|
version "4.33.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd"
|
||||||
@ -2795,6 +2810,18 @@
|
|||||||
eslint-scope "^5.1.1"
|
eslint-scope "^5.1.1"
|
||||||
eslint-utils "^3.0.0"
|
eslint-utils "^3.0.0"
|
||||||
|
|
||||||
|
"@typescript-eslint/experimental-utils@5.9.1":
|
||||||
|
version "5.9.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.1.tgz#8c407c4dd5ffe522329df6e4c9c2b52206d5f7f1"
|
||||||
|
integrity sha512-cb1Njyss0mLL9kLXgS/eEY53SZQ9sT519wpX3i+U457l2UXRDuo87hgKfgRazmu9/tQb0x2sr3Y0yrU+Zz0y+w==
|
||||||
|
dependencies:
|
||||||
|
"@types/json-schema" "^7.0.9"
|
||||||
|
"@typescript-eslint/scope-manager" "5.9.1"
|
||||||
|
"@typescript-eslint/types" "5.9.1"
|
||||||
|
"@typescript-eslint/typescript-estree" "5.9.1"
|
||||||
|
eslint-scope "^5.1.1"
|
||||||
|
eslint-utils "^3.0.0"
|
||||||
|
|
||||||
"@typescript-eslint/parser@^4.8.1":
|
"@typescript-eslint/parser@^4.8.1":
|
||||||
version "4.33.0"
|
version "4.33.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899"
|
||||||
@ -2805,6 +2832,16 @@
|
|||||||
"@typescript-eslint/typescript-estree" "4.33.0"
|
"@typescript-eslint/typescript-estree" "4.33.0"
|
||||||
debug "^4.3.1"
|
debug "^4.3.1"
|
||||||
|
|
||||||
|
"@typescript-eslint/parser@^5.9.1":
|
||||||
|
version "5.9.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.9.1.tgz#b114011010a87e17b3265ca715e16c76a9834cef"
|
||||||
|
integrity sha512-PLYO0AmwD6s6n0ZQB5kqPgfvh73p0+VqopQQLuNfi7Lm0EpfKyDalchpVwkE+81k5HeiRrTV/9w1aNHzjD7C4g==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/scope-manager" "5.9.1"
|
||||||
|
"@typescript-eslint/types" "5.9.1"
|
||||||
|
"@typescript-eslint/typescript-estree" "5.9.1"
|
||||||
|
debug "^4.3.2"
|
||||||
|
|
||||||
"@typescript-eslint/scope-manager@4.33.0":
|
"@typescript-eslint/scope-manager@4.33.0":
|
||||||
version "4.33.0"
|
version "4.33.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3"
|
||||||
@ -2813,11 +2850,33 @@
|
|||||||
"@typescript-eslint/types" "4.33.0"
|
"@typescript-eslint/types" "4.33.0"
|
||||||
"@typescript-eslint/visitor-keys" "4.33.0"
|
"@typescript-eslint/visitor-keys" "4.33.0"
|
||||||
|
|
||||||
|
"@typescript-eslint/scope-manager@5.9.1":
|
||||||
|
version "5.9.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.9.1.tgz#6c27be89f1a9409f284d95dfa08ee3400166fe69"
|
||||||
|
integrity sha512-8BwvWkho3B/UOtzRyW07ffJXPaLSUKFBjpq8aqsRvu6HdEuzCY57+ffT7QoV4QXJXWSU1+7g3wE4AlgImmQ9pQ==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/types" "5.9.1"
|
||||||
|
"@typescript-eslint/visitor-keys" "5.9.1"
|
||||||
|
|
||||||
|
"@typescript-eslint/type-utils@5.9.1":
|
||||||
|
version "5.9.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.9.1.tgz#c6832ffe655b9b1fec642d36db1a262d721193de"
|
||||||
|
integrity sha512-tRSpdBnPRssjlUh35rE9ug5HrUvaB9ntREy7gPXXKwmIx61TNN7+l5YKgi1hMKxo5NvqZCfYhA5FvyuJG6X6vg==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/experimental-utils" "5.9.1"
|
||||||
|
debug "^4.3.2"
|
||||||
|
tsutils "^3.21.0"
|
||||||
|
|
||||||
"@typescript-eslint/types@4.33.0":
|
"@typescript-eslint/types@4.33.0":
|
||||||
version "4.33.0"
|
version "4.33.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72"
|
||||||
integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==
|
integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==
|
||||||
|
|
||||||
|
"@typescript-eslint/types@5.9.1":
|
||||||
|
version "5.9.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.9.1.tgz#1bef8f238a2fb32ebc6ff6d75020d9f47a1593c6"
|
||||||
|
integrity sha512-SsWegWudWpkZCwwYcKoDwuAjoZXnM1y2EbEerTHho19Hmm+bQ56QG4L4jrtCu0bI5STaRTvRTZmjprWlTw/5NQ==
|
||||||
|
|
||||||
"@typescript-eslint/typescript-estree@4.33.0":
|
"@typescript-eslint/typescript-estree@4.33.0":
|
||||||
version "4.33.0"
|
version "4.33.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609"
|
||||||
@ -2831,6 +2890,19 @@
|
|||||||
semver "^7.3.5"
|
semver "^7.3.5"
|
||||||
tsutils "^3.21.0"
|
tsutils "^3.21.0"
|
||||||
|
|
||||||
|
"@typescript-eslint/typescript-estree@5.9.1":
|
||||||
|
version "5.9.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.1.tgz#d5b996f49476495070d2b8dd354861cf33c005d6"
|
||||||
|
integrity sha512-gL1sP6A/KG0HwrahVXI9fZyeVTxEYV//6PmcOn1tD0rw8VhUWYeZeuWHwwhnewnvEMcHjhnJLOBhA9rK4vmb8A==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/types" "5.9.1"
|
||||||
|
"@typescript-eslint/visitor-keys" "5.9.1"
|
||||||
|
debug "^4.3.2"
|
||||||
|
globby "^11.0.4"
|
||||||
|
is-glob "^4.0.3"
|
||||||
|
semver "^7.3.5"
|
||||||
|
tsutils "^3.21.0"
|
||||||
|
|
||||||
"@typescript-eslint/visitor-keys@4.33.0":
|
"@typescript-eslint/visitor-keys@4.33.0":
|
||||||
version "4.33.0"
|
version "4.33.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd"
|
||||||
@ -2839,6 +2911,14 @@
|
|||||||
"@typescript-eslint/types" "4.33.0"
|
"@typescript-eslint/types" "4.33.0"
|
||||||
eslint-visitor-keys "^2.0.0"
|
eslint-visitor-keys "^2.0.0"
|
||||||
|
|
||||||
|
"@typescript-eslint/visitor-keys@5.9.1":
|
||||||
|
version "5.9.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.1.tgz#f52206f38128dd4f675cf28070a41596eee985b7"
|
||||||
|
integrity sha512-Xh37pNz9e9ryW4TVdwiFzmr4hloty8cFj8GTWMXh3Z8swGwyQWeCcNgF0hm6t09iZd6eiZmIf4zHedQVP6TVtg==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/types" "5.9.1"
|
||||||
|
eslint-visitor-keys "^3.0.0"
|
||||||
|
|
||||||
"@ungap/promise-all-settled@1.1.2":
|
"@ungap/promise-all-settled@1.1.2":
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44"
|
resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44"
|
||||||
@ -4725,13 +4805,6 @@ cookie@0.4.0:
|
|||||||
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
|
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
|
||||||
integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
|
integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
|
||||||
|
|
||||||
copy-anything@^2.0.1:
|
|
||||||
version "2.0.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.3.tgz#842407ba02466b0df844819bbe3baebbe5d45d87"
|
|
||||||
integrity sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==
|
|
||||||
dependencies:
|
|
||||||
is-what "^3.12.0"
|
|
||||||
|
|
||||||
copy-concurrently@^1.0.0:
|
copy-concurrently@^1.0.0:
|
||||||
version "1.0.5"
|
version "1.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
|
resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
|
||||||
@ -5609,7 +5682,7 @@ err-code@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960"
|
resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960"
|
||||||
integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=
|
integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=
|
||||||
|
|
||||||
errno@^0.1.1, errno@^0.1.3:
|
errno@^0.1.3:
|
||||||
version "0.1.8"
|
version "0.1.8"
|
||||||
resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
|
resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
|
||||||
integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
|
integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
|
||||||
@ -5788,6 +5861,14 @@ eslint-module-utils@^2.7.1:
|
|||||||
find-up "^2.1.0"
|
find-up "^2.1.0"
|
||||||
pkg-dir "^2.0.0"
|
pkg-dir "^2.0.0"
|
||||||
|
|
||||||
|
eslint-module-utils@^2.7.2:
|
||||||
|
version "2.7.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz#1d0aa455dcf41052339b63cada8ab5fd57577129"
|
||||||
|
integrity sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg==
|
||||||
|
dependencies:
|
||||||
|
debug "^3.2.7"
|
||||||
|
find-up "^2.1.0"
|
||||||
|
|
||||||
eslint-nibble@^8.0.0:
|
eslint-nibble@^8.0.0:
|
||||||
version "8.0.0"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-nibble/-/eslint-nibble-8.0.0.tgz#667e1f9b64492c90058c1f9b2236a97682d83924"
|
resolved "https://registry.yarnpkg.com/eslint-nibble/-/eslint-nibble-8.0.0.tgz#667e1f9b64492c90058c1f9b2236a97682d83924"
|
||||||
@ -5808,7 +5889,7 @@ eslint-plugin-cypress@^2.12.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
globals "^11.12.0"
|
globals "^11.12.0"
|
||||||
|
|
||||||
eslint-plugin-import@^2.24.2, eslint-plugin-import@^2.25.3:
|
eslint-plugin-import@^2.25.3:
|
||||||
version "2.25.3"
|
version "2.25.3"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz#a554b5f66e08fb4f6dc99221866e57cfff824766"
|
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz#a554b5f66e08fb4f6dc99221866e57cfff824766"
|
||||||
integrity sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg==
|
integrity sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg==
|
||||||
@ -5827,6 +5908,25 @@ eslint-plugin-import@^2.24.2, eslint-plugin-import@^2.25.3:
|
|||||||
resolve "^1.20.0"
|
resolve "^1.20.0"
|
||||||
tsconfig-paths "^3.11.0"
|
tsconfig-paths "^3.11.0"
|
||||||
|
|
||||||
|
eslint-plugin-import@^2.25.4:
|
||||||
|
version "2.25.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz#322f3f916a4e9e991ac7af32032c25ce313209f1"
|
||||||
|
integrity sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==
|
||||||
|
dependencies:
|
||||||
|
array-includes "^3.1.4"
|
||||||
|
array.prototype.flat "^1.2.5"
|
||||||
|
debug "^2.6.9"
|
||||||
|
doctrine "^2.1.0"
|
||||||
|
eslint-import-resolver-node "^0.3.6"
|
||||||
|
eslint-module-utils "^2.7.2"
|
||||||
|
has "^1.0.3"
|
||||||
|
is-core-module "^2.8.0"
|
||||||
|
is-glob "^4.0.3"
|
||||||
|
minimatch "^3.0.4"
|
||||||
|
object.values "^1.1.5"
|
||||||
|
resolve "^1.20.0"
|
||||||
|
tsconfig-paths "^3.12.0"
|
||||||
|
|
||||||
eslint-plugin-react-hooks@^4.2.0:
|
eslint-plugin-react-hooks@^4.2.0:
|
||||||
version "4.3.0"
|
version "4.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz#318dbf312e06fab1c835a4abef00121751ac1172"
|
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz#318dbf312e06fab1c835a4abef00121751ac1172"
|
||||||
@ -5915,7 +6015,7 @@ eslint-visitor-keys@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
|
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
|
||||||
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
|
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
|
||||||
|
|
||||||
eslint-visitor-keys@^3.1.0:
|
eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.1.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz#eee4acea891814cda67a7d8812d9647dd0179af2"
|
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz#eee4acea891814cda67a7d8812d9647dd0179af2"
|
||||||
integrity sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==
|
integrity sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==
|
||||||
@ -6389,6 +6489,17 @@ fast-glob@^3.1.1, fast-glob@^3.2.4, fast-glob@^3.2.7:
|
|||||||
merge2 "^1.3.0"
|
merge2 "^1.3.0"
|
||||||
micromatch "^4.0.4"
|
micromatch "^4.0.4"
|
||||||
|
|
||||||
|
fast-glob@^3.2.9:
|
||||||
|
version "3.2.10"
|
||||||
|
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.10.tgz#2734f83baa7f43b7fd41e13bc34438f4ffe284ee"
|
||||||
|
integrity sha512-s9nFhFnvR63wls6/kM88kQqDhMu0AfdjqouE2l5GVQPbqLgyFjjU5ry/r2yKsJxpb9Py1EYNqieFrmMaX4v++A==
|
||||||
|
dependencies:
|
||||||
|
"@nodelib/fs.stat" "^2.0.2"
|
||||||
|
"@nodelib/fs.walk" "^1.2.3"
|
||||||
|
glob-parent "^5.1.2"
|
||||||
|
merge2 "^1.3.0"
|
||||||
|
micromatch "^4.0.4"
|
||||||
|
|
||||||
fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0:
|
fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
|
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
|
||||||
@ -7033,6 +7144,18 @@ globby@^11.0.1, globby@^11.0.3:
|
|||||||
merge2 "^1.3.0"
|
merge2 "^1.3.0"
|
||||||
slash "^3.0.0"
|
slash "^3.0.0"
|
||||||
|
|
||||||
|
globby@^11.0.4:
|
||||||
|
version "11.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
|
||||||
|
integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
|
||||||
|
dependencies:
|
||||||
|
array-union "^2.1.0"
|
||||||
|
dir-glob "^3.0.1"
|
||||||
|
fast-glob "^3.2.9"
|
||||||
|
ignore "^5.2.0"
|
||||||
|
merge2 "^1.4.1"
|
||||||
|
slash "^3.0.0"
|
||||||
|
|
||||||
globby@^12.0.2:
|
globby@^12.0.2:
|
||||||
version "12.0.2"
|
version "12.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/globby/-/globby-12.0.2.tgz#53788b2adf235602ed4cabfea5c70a1139e1ab11"
|
resolved "https://registry.yarnpkg.com/globby/-/globby-12.0.2.tgz#53788b2adf235602ed4cabfea5c70a1139e1ab11"
|
||||||
@ -7491,7 +7614,7 @@ hyphenate-style-name@^1.0.3:
|
|||||||
resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d"
|
resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d"
|
||||||
integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==
|
integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==
|
||||||
|
|
||||||
iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4:
|
iconv-lite@0.4.24, iconv-lite@^0.4.24:
|
||||||
version "0.4.24"
|
version "0.4.24"
|
||||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
|
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
|
||||||
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
|
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
|
||||||
@ -7542,6 +7665,11 @@ ignore@^5.1.4, ignore@^5.1.8:
|
|||||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.9.tgz#9ec1a5cbe8e1446ec60d4420060d43aa6e7382fb"
|
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.9.tgz#9ec1a5cbe8e1446ec60d4420060d43aa6e7382fb"
|
||||||
integrity sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==
|
integrity sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==
|
||||||
|
|
||||||
|
ignore@^5.2.0:
|
||||||
|
version "5.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
|
||||||
|
integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
|
||||||
|
|
||||||
iltorb@^2.0.1:
|
iltorb@^2.0.1:
|
||||||
version "2.4.5"
|
version "2.4.5"
|
||||||
resolved "https://registry.yarnpkg.com/iltorb/-/iltorb-2.4.5.tgz#d64434b527099125c6839ed48b666247a172ef87"
|
resolved "https://registry.yarnpkg.com/iltorb/-/iltorb-2.4.5.tgz#d64434b527099125c6839ed48b666247a172ef87"
|
||||||
@ -7553,11 +7681,6 @@ iltorb@^2.0.1:
|
|||||||
prebuild-install "^5.3.3"
|
prebuild-install "^5.3.3"
|
||||||
which-pm-runs "^1.0.0"
|
which-pm-runs "^1.0.0"
|
||||||
|
|
||||||
image-size@~0.5.0:
|
|
||||||
version "0.5.5"
|
|
||||||
resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
|
|
||||||
integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=
|
|
||||||
|
|
||||||
immer@^9.0.6:
|
immer@^9.0.6:
|
||||||
version "9.0.7"
|
version "9.0.7"
|
||||||
resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.7.tgz#b6156bd7db55db7abc73fd2fdadf4e579a701075"
|
resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.7.tgz#b6156bd7db55db7abc73fd2fdadf4e579a701075"
|
||||||
@ -8163,11 +8286,6 @@ is-weakref@^1.0.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
call-bind "^1.0.0"
|
call-bind "^1.0.0"
|
||||||
|
|
||||||
is-what@^3.12.0:
|
|
||||||
version "3.14.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1"
|
|
||||||
integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==
|
|
||||||
|
|
||||||
is-windows@^1.0.0, is-windows@^1.0.2:
|
is-windows@^1.0.0, is-windows@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
|
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
|
||||||
@ -9091,30 +9209,6 @@ lerna@^3.16.4:
|
|||||||
import-local "^2.0.0"
|
import-local "^2.0.0"
|
||||||
npmlog "^4.1.2"
|
npmlog "^4.1.2"
|
||||||
|
|
||||||
less-loader@^10.2.0:
|
|
||||||
version "10.2.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-10.2.0.tgz#97286d8797dc3dc05b1d16b0ecec5f968bdd4e32"
|
|
||||||
integrity sha512-AV5KHWvCezW27GT90WATaDnfXBv99llDbtaj4bshq6DvAihMdNjaPDcUMa6EXKLRF+P2opFenJp89BXg91XLYg==
|
|
||||||
dependencies:
|
|
||||||
klona "^2.0.4"
|
|
||||||
|
|
||||||
less@^4.1.2:
|
|
||||||
version "4.1.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/less/-/less-4.1.2.tgz#6099ee584999750c2624b65f80145f8674e4b4b0"
|
|
||||||
integrity sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA==
|
|
||||||
dependencies:
|
|
||||||
copy-anything "^2.0.1"
|
|
||||||
parse-node-version "^1.0.1"
|
|
||||||
tslib "^2.3.0"
|
|
||||||
optionalDependencies:
|
|
||||||
errno "^0.1.1"
|
|
||||||
graceful-fs "^4.1.2"
|
|
||||||
image-size "~0.5.0"
|
|
||||||
make-dir "^2.1.0"
|
|
||||||
mime "^1.4.1"
|
|
||||||
needle "^2.5.2"
|
|
||||||
source-map "~0.6.0"
|
|
||||||
|
|
||||||
leven@^3.1.0:
|
leven@^3.1.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
|
resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
|
||||||
@ -9679,7 +9773,7 @@ mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.19,
|
|||||||
dependencies:
|
dependencies:
|
||||||
mime-db "1.51.0"
|
mime-db "1.51.0"
|
||||||
|
|
||||||
mime@1.6.0, mime@^1.4.1:
|
mime@1.6.0:
|
||||||
version "1.6.0"
|
version "1.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
|
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
|
||||||
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
|
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
|
||||||
@ -9982,15 +10076,6 @@ natural-compare@^1.4.0:
|
|||||||
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
||||||
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
|
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
|
||||||
|
|
||||||
needle@^2.5.2:
|
|
||||||
version "2.9.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/needle/-/needle-2.9.1.tgz#22d1dffbe3490c2b83e301f7709b6736cd8f2684"
|
|
||||||
integrity sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==
|
|
||||||
dependencies:
|
|
||||||
debug "^3.2.6"
|
|
||||||
iconv-lite "^0.4.4"
|
|
||||||
sax "^1.2.4"
|
|
||||||
|
|
||||||
negotiator@0.6.2:
|
negotiator@0.6.2:
|
||||||
version "0.6.2"
|
version "0.6.2"
|
||||||
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
|
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
|
||||||
@ -10686,11 +10771,6 @@ parse-json@^5.0.0:
|
|||||||
json-parse-even-better-errors "^2.3.0"
|
json-parse-even-better-errors "^2.3.0"
|
||||||
lines-and-columns "^1.1.6"
|
lines-and-columns "^1.1.6"
|
||||||
|
|
||||||
parse-node-version@^1.0.1:
|
|
||||||
version "1.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b"
|
|
||||||
integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==
|
|
||||||
|
|
||||||
parse-path@^4.0.0:
|
parse-path@^4.0.0:
|
||||||
version "4.0.3"
|
version "4.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.3.tgz#82d81ec3e071dcc4ab49aa9f2c9c0b8966bb22bf"
|
resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.3.tgz#82d81ec3e071dcc4ab49aa9f2c9c0b8966bb22bf"
|
||||||
@ -12025,11 +12105,6 @@ sass-loader@^10.1.0:
|
|||||||
schema-utils "^3.0.0"
|
schema-utils "^3.0.0"
|
||||||
semver "^7.3.2"
|
semver "^7.3.2"
|
||||||
|
|
||||||
sax@^1.2.4:
|
|
||||||
version "1.2.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
|
|
||||||
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
|
|
||||||
|
|
||||||
saxes@^5.0.1:
|
saxes@^5.0.1:
|
||||||
version "5.0.1"
|
version "5.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d"
|
resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d"
|
||||||
@ -13305,7 +13380,7 @@ ts-node@^9.0.0:
|
|||||||
source-map-support "^0.5.17"
|
source-map-support "^0.5.17"
|
||||||
yn "3.1.1"
|
yn "3.1.1"
|
||||||
|
|
||||||
tsconfig-paths@^3.11.0:
|
tsconfig-paths@^3.11.0, tsconfig-paths@^3.12.0:
|
||||||
version "3.12.0"
|
version "3.12.0"
|
||||||
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b"
|
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b"
|
||||||
integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==
|
integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==
|
||||||
@ -13320,7 +13395,7 @@ tslib@^1.8.1, tslib@^1.9.0:
|
|||||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
||||||
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
|
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
|
||||||
|
|
||||||
tslib@^2.0.1, tslib@^2.0.3, tslib@^2.2.0, tslib@^2.3.0:
|
tslib@^2.0.1, tslib@^2.0.3, tslib@^2.2.0:
|
||||||
version "2.3.1"
|
version "2.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
|
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
|
||||||
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
|
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
|
||||||
|