mirror of
https://bitbucket.org/wisemapping/wisemapping-frontend.git
synced 2024-11-25 15:47:55 +01:00
Merged in feature/mindplot-lint (pull request #11)
mindplot lint * fix eqeqeq * fix max-len * fix max-len, guard-for-in * fix import/no-named-as-default-member * misc fixes * fix no-shadow * fix no-param-reassign * fix issues introduced with "fix no-param-reassign" * Merge 'origin/develop' into feature/mindplot-lint * lint and docs fixes after merge Approved-by: Paulo Veiga
This commit is contained in:
parent
c6caa3a420
commit
b5fd708971
@ -1 +0,0 @@
|
|||||||
[{"/Users/pveiga/repos/wisemapping-react/src/Footer.js":"1","/Users/pveiga/repos/wisemapping-react/src/Header.js":"2","/Users/pveiga/repos/wisemapping-react/src/index.js":"3","/Users/pveiga/repos/wisemapping-react/src/LoginPage.js":"4","/Users/pveiga/repos/wisemapping-react/src/RegistrationPage.js":"5"},{"size":1609,"mtime":1607011308675,"results":"6","hashOfConfig":"7"},{"size":1924,"mtime":1607015196109,"results":"8","hashOfConfig":"7"},{"size":1385,"mtime":1607144319143,"results":"9","hashOfConfig":"7"},{"size":3345,"mtime":1607147386381,"results":"10","hashOfConfig":"7"},{"size":4573,"mtime":1607143971378,"results":"11","hashOfConfig":"7"},{"filePath":"12","messages":"13","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1xegajf",{"filePath":"14","messages":"15","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16","messages":"17","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18","messages":"19","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20","messages":"21","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Users/pveiga/repos/wisemapping-react/src/Footer.js",[],"/Users/pveiga/repos/wisemapping-react/src/Header.js",[],"/Users/pveiga/repos/wisemapping-react/src/index.js",[],"/Users/pveiga/repos/wisemapping-react/src/LoginPage.js",[],"/Users/pveiga/repos/wisemapping-react/src/RegistrationPage.js",[]]
|
|
@ -21,7 +21,7 @@ If you want to contribute, please check out [CONTRIBUTING.md](./CONTRIBUTING.md)
|
|||||||
## Scripts
|
## Scripts
|
||||||
|
|
||||||
Each package might provide the following scripts.
|
Each package might provide the following scripts.
|
||||||
You can run these for all packages by running it from the root folder. Alternatively you can run it for a specific package from inside the package folder you want to.
|
You can run these for all packages by running it from the root folder. Alternatively you can run it for a specific package by passing the `--scope` option.
|
||||||
|
|
||||||
### build
|
### build
|
||||||
|
|
||||||
@ -39,7 +39,8 @@ You can run these for all packages by running it from the root folder. Alternati
|
|||||||
|
|
||||||
> start a devServer with some browsable examples
|
> start a devServer with some browsable examples
|
||||||
|
|
||||||
`yarn playground`
|
`yarn playground --scope @wisemapping/web2d`
|
||||||
|
`yarn playground --scope @wisemapping/mindplot`
|
||||||
|
|
||||||
## test
|
## test
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
"build": "lerna run build",
|
"build": "lerna run build",
|
||||||
"clean": "lerna clean && rm -rf node_modules",
|
"clean": "lerna clean && rm -rf node_modules",
|
||||||
"lint": "lerna run lint --stream",
|
"lint": "lerna run lint --stream",
|
||||||
|
"playground": "lerna run playground --stream",
|
||||||
"test": "lerna run test --stream",
|
"test": "lerna run test --stream",
|
||||||
"test:unit": "lerna run test:unit --stream",
|
"test:unit": "lerna run test:unit --stream",
|
||||||
"test:integration": "lerna run test:integration --stream"
|
"test:integration": "lerna run test:integration --stream"
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
dist/
|
dist/
|
||||||
node_modules/
|
node_modules/
|
||||||
|
src/components/libraries/bootstrap/js
|
@ -8,14 +8,23 @@
|
|||||||
"airbnb-base",
|
"airbnb-base",
|
||||||
"plugin:cypress/recommended"
|
"plugin:cypress/recommended"
|
||||||
],
|
],
|
||||||
"plugins": ["only-warn"],
|
"globals": {
|
||||||
|
// Browser is a mootools polyfill. Remove when moving from browser checks to feature detection
|
||||||
|
"Browser": true,
|
||||||
|
// designer is a global currently used as a hack. Remove this when fixing the hack.
|
||||||
|
"designer": true
|
||||||
|
},
|
||||||
"rules": {
|
"rules": {
|
||||||
"no-underscore-dangle": "off",
|
"no-underscore-dangle": "off",
|
||||||
"no-plusplus": "off",
|
"no-plusplus": "off",
|
||||||
"no-param-reassign": "off",
|
"no-param-reassign": "off",
|
||||||
"max-len": [1,250],
|
"max-len": [1,250],
|
||||||
"class-methods-use-this": "off",
|
"class-methods-use-this": "off",
|
||||||
"import/no-extraneous-dependencies": ["error", {"devDependencies": ["!cypress/**/*.js"]}]
|
"import/no-extraneous-dependencies": ["error", {"devDependencies": ["!cypress/**/*.js"]}],
|
||||||
|
"func-names": ["error", "as-needed"],
|
||||||
|
"no-unused-vars": ["error", { "args": "none" }],
|
||||||
|
"camelcase": ["error", {"allow": ["XML"]}],
|
||||||
|
"new-cap": ["error", { "properties": false }]
|
||||||
},
|
},
|
||||||
"settings": {
|
"settings": {
|
||||||
"import/resolver": {
|
"import/resolver": {
|
||||||
|
@ -46,13 +46,12 @@
|
|||||||
"core-js": "^3.15.2",
|
"core-js": "^3.15.2",
|
||||||
"cypress": "^8.4.1",
|
"cypress": "^8.4.1",
|
||||||
"cypress-image-snapshot": "^4.0.1",
|
"cypress-image-snapshot": "^4.0.1",
|
||||||
"eslint": "^5.16.0",
|
"eslint": "^8.4.1",
|
||||||
"eslint-config-airbnb-base": "^14.2.1",
|
"eslint-config-airbnb-base": "^14.2.1",
|
||||||
"eslint-config-standard": "^16.0.3",
|
"eslint-config-standard": "^16.0.3",
|
||||||
"eslint-loader": "^4.0.2",
|
"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.24.2",
|
||||||
"eslint-plugin-only-warn": "^1.0.3",
|
|
||||||
"html-webpack-plugin": "^5.3.2",
|
"html-webpack-plugin": "^5.3.2",
|
||||||
"jest-webpack": "^0.5.1",
|
"jest-webpack": "^0.5.1",
|
||||||
"less": "^4.1.2",
|
"less": "^4.1.2",
|
||||||
|
@ -26,12 +26,9 @@ class CommandContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** */
|
/** */
|
||||||
findTopics(topicsIds) {
|
findTopics(topicIds) {
|
||||||
$assert($defined(topicsIds), 'topicsIds can not be null');
|
$assert($defined(topicIds), 'topicsIds can not be null');
|
||||||
if (!(topicsIds instanceof Array)) {
|
const topicsIds = Array.isArray(topicIds) ? topicIds : [topicIds];
|
||||||
topicsIds = [topicsIds];
|
|
||||||
}
|
|
||||||
|
|
||||||
const designerTopics = this._designer.getModel().getTopics();
|
const designerTopics = this._designer.getModel().getTopics();
|
||||||
const result = designerTopics.filter((topic) => topicsIds.includes(topic.getId()));
|
const result = designerTopics.filter((topic) => topicsIds.includes(topic.getId()));
|
||||||
|
|
||||||
@ -93,11 +90,9 @@ class CommandContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** */
|
/** */
|
||||||
findRelationships(relIds) {
|
findRelationships(relationshipIds) {
|
||||||
$assert($defined(relIds), 'relId can not be null');
|
$assert($defined(relationshipIds), 'relId can not be null');
|
||||||
if (!(relIds instanceof Array)) {
|
const relIds = Array.isArray(relationshipIds) ? relationshipIds : [relationshipIds];
|
||||||
relIds = [relIds];
|
|
||||||
}
|
|
||||||
|
|
||||||
const designerRel = this._designer.getModel().getRelationships();
|
const designerRel = this._designer.getModel().getRelationships();
|
||||||
return designerRel.filter((rel) => relIds.includes(rel.getId()));
|
return designerRel.filter((rel) => relIds.includes(rel.getId()));
|
||||||
|
@ -58,11 +58,8 @@ class ConnectionLine {
|
|||||||
return [new Point(deltaX, 0), new Point(-deltaX, 0)];
|
return [new Point(deltaX, 0), new Point(-deltaX, 0)];
|
||||||
}
|
}
|
||||||
|
|
||||||
_createLine(lineType, defaultStyle) {
|
_createLine(lineTypeParam, defaultStyle) {
|
||||||
if (!$defined(lineType)) {
|
const lineType = $defined(lineTypeParam) ? parseInt(lineTypeParam, 10) : defaultStyle;
|
||||||
lineType = defaultStyle;
|
|
||||||
}
|
|
||||||
lineType = parseInt(lineType, 10);
|
|
||||||
this._lineType = lineType;
|
this._lineType = lineType;
|
||||||
let line = null;
|
let line = null;
|
||||||
switch (lineType) {
|
switch (lineType) {
|
||||||
|
@ -137,7 +137,7 @@ class ControlPoint {
|
|||||||
const pos = screen.getWorkspaceMousePosition(event);
|
const pos = screen.getWorkspaceMousePosition(event);
|
||||||
|
|
||||||
let cords;
|
let cords;
|
||||||
if (point == 0) {
|
if (point === 0) {
|
||||||
cords = Shape.calculateRelationShipPointCoordinates(this._line.getSourceTopic(), pos);
|
cords = Shape.calculateRelationShipPointCoordinates(this._line.getSourceTopic(), pos);
|
||||||
this._line.setFrom(cords.x, cords.y);
|
this._line.setFrom(cords.x, cords.y);
|
||||||
this._line.setSrcControlPoint(new Point(pos.x - cords.x, pos.y - cords.y));
|
this._line.setSrcControlPoint(new Point(pos.x - cords.x, pos.y - cords.y));
|
||||||
|
@ -342,11 +342,7 @@ class Designer extends Events {
|
|||||||
* @param {Number=} factor
|
* @param {Number=} factor
|
||||||
* zoom out by the given factor, or 1.2, if undefined
|
* zoom out by the given factor, or 1.2, if undefined
|
||||||
*/
|
*/
|
||||||
zoomOut(factor) {
|
zoomOut(factor = 1.2) {
|
||||||
if (!factor) {
|
|
||||||
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) {
|
||||||
@ -361,9 +357,7 @@ class Designer extends Events {
|
|||||||
* @param {Number=} factor
|
* @param {Number=} factor
|
||||||
* zoom in by the given factor, or 1.2, if undefined
|
* zoom in by the given factor, or 1.2, if undefined
|
||||||
*/
|
*/
|
||||||
zoomIn(factor) {
|
zoomIn(factor = 1.2) {
|
||||||
if (!factor) factor = 1.2;
|
|
||||||
|
|
||||||
const model = this.getModel();
|
const model = this.getModel();
|
||||||
const scale = model.getZoom() / factor;
|
const scale = model.getZoom() / factor;
|
||||||
|
|
||||||
@ -935,7 +929,8 @@ class Designer extends Events {
|
|||||||
|
|
||||||
/** */
|
/** */
|
||||||
changeTopicShape(shape) {
|
changeTopicShape(shape) {
|
||||||
const validateFunc = (topic) => !(topic.getType() === INodeModel.CENTRAL_TOPIC_TYPE && shape === TopicShape.LINE
|
const validateFunc = (topic) => !(
|
||||||
|
topic.getType() === INodeModel.CENTRAL_TOPIC_TYPE && shape === TopicShape.LINE
|
||||||
);
|
);
|
||||||
|
|
||||||
const validateError = 'Central Topic shape can not be changed to line figure.';
|
const validateError = 'Central Topic shape can not be changed to line figure.';
|
||||||
|
@ -15,8 +15,8 @@
|
|||||||
* 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 { $assert } from '@wisemapping/core-js';
|
|
||||||
import $ from 'jquery';
|
import $ from 'jquery';
|
||||||
|
import { $assert } from '@wisemapping/core-js';
|
||||||
import Keyboard from './Keyboard';
|
import Keyboard from './Keyboard';
|
||||||
|
|
||||||
class DesignerKeyboard extends Keyboard {
|
class DesignerKeyboard extends Keyboard {
|
||||||
|
@ -30,7 +30,7 @@ class DesignerUndoManager {
|
|||||||
if (command.discardDuplicated && length > 0) {
|
if (command.discardDuplicated && length > 0) {
|
||||||
// Skip duplicated events ...
|
// Skip duplicated events ...
|
||||||
const lastItem = this._undoQueue[length - 1];
|
const lastItem = this._undoQueue[length - 1];
|
||||||
if (lastItem.discardDuplicated != command.discardDuplicated) {
|
if (lastItem.discardDuplicated !== command.discardDuplicated) {
|
||||||
this._undoQueue.push(command);
|
this._undoQueue.push(command);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -73,11 +73,11 @@ class DesignerUndoManager {
|
|||||||
hasBeenChanged() {
|
hasBeenChanged() {
|
||||||
let result = true;
|
let result = true;
|
||||||
const undoLength = this._undoQueue.length;
|
const undoLength = this._undoQueue.length;
|
||||||
if (undoLength == 0 && this._baseId == 0) {
|
if (undoLength === 0 && this._baseId === 0) {
|
||||||
result = false;
|
result = false;
|
||||||
} else if (undoLength > 0) {
|
} else if (undoLength > 0) {
|
||||||
const command = this._undoQueue[undoLength - 1];
|
const command = this._undoQueue[undoLength - 1];
|
||||||
result = (this._baseId != command.getId());
|
result = (this._baseId !== command.getId());
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -28,13 +28,11 @@ class DragConnector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
checkConnection(dragTopic) {
|
checkConnection(dragTopic) {
|
||||||
const topics = this._designerModel.getTopics();
|
|
||||||
|
|
||||||
// Must be disconnected from their current connection ?.
|
// Must be disconnected from their current connection ?.
|
||||||
const candidates = this._searchConnectionCandidates(dragTopic);
|
const candidates = this._searchConnectionCandidates(dragTopic);
|
||||||
const currentConnection = dragTopic.getConnectedToTopic();
|
const currentConnection = dragTopic.getConnectedToTopic();
|
||||||
|
|
||||||
if (currentConnection && (candidates.length == 0 || candidates[0] != currentConnection)) {
|
if (currentConnection && (candidates.length === 0 || candidates[0] !== currentConnection)) {
|
||||||
dragTopic.disconnect(this._workspace);
|
dragTopic.disconnect(this._workspace);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,7 +69,8 @@ class DragConnector {
|
|||||||
// * The x distance greater the vertical tolerated distance
|
// * The x distance greater the vertical tolerated distance
|
||||||
topics = topics.filter((topic) => {
|
topics = topics.filter((topic) => {
|
||||||
const tpos = topic.getPosition();
|
const tpos = topic.getPosition();
|
||||||
// Center topic has different alignment than the rest of the nodes. That's why i need to divide it by two...
|
// Center topic has different alignment than the rest of the nodes.
|
||||||
|
// That's why i need to divide it by two...
|
||||||
const txborder = tpos.x + (topic.getSize().width / 2) * Math.sign(sPos.x);
|
const txborder = tpos.x + (topic.getSize().width / 2) * Math.sign(sPos.x);
|
||||||
const distance = (sPos.x - txborder) * Math.sign(sPos.x);
|
const distance = (sPos.x - txborder) * Math.sign(sPos.x);
|
||||||
return distance > 0 && (distance < DragConnector.MAX_VERTICAL_CONNECTION_TOLERANCE);
|
return distance > 0 && (distance < DragConnector.MAX_VERTICAL_CONNECTION_TOLERANCE);
|
||||||
@ -90,14 +89,16 @@ class DragConnector {
|
|||||||
|
|
||||||
const av = me._isVerticallyAligned(a.getSize(), aPos, sPos);
|
const av = me._isVerticallyAligned(a.getSize(), aPos, sPos);
|
||||||
const bv = me._isVerticallyAligned(b.getSize(), bPos, sPos);
|
const bv = me._isVerticallyAligned(b.getSize(), bPos, sPos);
|
||||||
return me._proximityWeight(av, a, sPos, currentConnection) - me._proximityWeight(bv, b, sPos, currentConnection);
|
return me._proximityWeight(av, a, sPos, currentConnection)
|
||||||
|
- me._proximityWeight(bv, b, sPos, currentConnection);
|
||||||
});
|
});
|
||||||
return topics;
|
return topics;
|
||||||
}
|
}
|
||||||
|
|
||||||
_proximityWeight(isAligned, target, sPos, currentConnection) {
|
_proximityWeight(isAligned, target, sPos, currentConnection) {
|
||||||
const tPos = target.getPosition();
|
const tPos = target.getPosition();
|
||||||
return (isAligned ? 0 : 200) + Math.abs(tPos.x - sPos.x) + Math.abs(tPos.y - sPos.y) + (currentConnection == target ? 0 : 100);
|
return (isAligned ? 0 : 200) + Math.abs(tPos.x - sPos.x)
|
||||||
|
+ Math.abs(tPos.y - sPos.y) + (currentConnection === target ? 0 : 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
_isVerticallyAligned(targetSize, targetPosition, sourcePosition) {
|
_isVerticallyAligned(targetSize, targetPosition, sourcePosition) {
|
||||||
|
@ -44,11 +44,15 @@ class DragManager {
|
|||||||
const dragNode = node.createDragNode(layoutManager);
|
const dragNode = node.createDragNode(layoutManager);
|
||||||
|
|
||||||
// Register mouse move listener ...
|
// Register mouse move listener ...
|
||||||
const mouseMoveListener = dragManager._buildMouseMoveListener(workspace, dragNode, dragManager);
|
const mouseMoveListener = dragManager._buildMouseMoveListener(
|
||||||
|
workspace, dragNode, dragManager,
|
||||||
|
);
|
||||||
screen.addEvent('mousemove', mouseMoveListener);
|
screen.addEvent('mousemove', mouseMoveListener);
|
||||||
|
|
||||||
// Register mouse up listeners ...
|
// Register mouse up listeners ...
|
||||||
const mouseUpListener = dragManager._buildMouseUpListener(workspace, node, dragNode, dragManager);
|
const mouseUpListener = dragManager._buildMouseUpListener(
|
||||||
|
workspace, node, dragNode, dragManager,
|
||||||
|
);
|
||||||
screen.addEvent('mouseup', mouseUpListener);
|
screen.addEvent('mouseup', mouseUpListener);
|
||||||
|
|
||||||
// Change cursor.
|
// Change cursor.
|
||||||
@ -59,15 +63,7 @@ class DragManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
remove(node) {
|
remove(node) {
|
||||||
const nodes = this._topics;
|
throw new Error('Not implemented: DragManager.prototype.remove');
|
||||||
let contained = false;
|
|
||||||
let index = -1;
|
|
||||||
for (let i = 0; i < nodes.length; i++) {
|
|
||||||
if (nodes[i] == node) {
|
|
||||||
contained = true;
|
|
||||||
index = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_buildMouseMoveListener(workspace, dragNode, dragManager) {
|
_buildMouseMoveListener(workspace, dragNode, dragManager) {
|
||||||
@ -96,6 +92,8 @@ class DragManager {
|
|||||||
|
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
};
|
};
|
||||||
|
// allowed param reassign to avoid risks of existing code relying in this side-effect
|
||||||
|
// eslint-disable-next-line no-param-reassign
|
||||||
dragManager._mouseMoveListener = result;
|
dragManager._mouseMoveListener = result;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -111,8 +109,11 @@ class DragManager {
|
|||||||
screen.removeEvent('mouseup', dragManager._mouseUpListener);
|
screen.removeEvent('mouseup', dragManager._mouseUpListener);
|
||||||
|
|
||||||
// Help GC
|
// Help GC
|
||||||
|
// allowed param reassign to avoid risks of existing code relying in this side-effect
|
||||||
|
/* eslint-disable no-param-reassign */
|
||||||
dragManager._mouseMoveListener = null;
|
dragManager._mouseMoveListener = null;
|
||||||
dragManager._mouseUpListener = null;
|
dragManager._mouseUpListener = null;
|
||||||
|
/* eslint-enable no-param-reassign */
|
||||||
|
|
||||||
workspace.enableWorkspaceEvents(true);
|
workspace.enableWorkspaceEvents(true);
|
||||||
// Change the cursor to the default.
|
// Change the cursor to the default.
|
||||||
@ -129,6 +130,7 @@ class DragManager {
|
|||||||
me._isDragInProcess = false;
|
me._isDragInProcess = false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
// eslint-disable-next-line no-param-reassign
|
||||||
dragManager._mouseUpListener = result;
|
dragManager._mouseUpListener = result;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -125,7 +125,7 @@ class DragPivot {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setVisibility(value) {
|
setVisibility(value) {
|
||||||
if (this.isVisible() != value) {
|
if (this.isVisible() !== value) {
|
||||||
const pivotRect = this._getPivotRect();
|
const pivotRect = this._getPivotRect();
|
||||||
pivotRect.setVisibility(value);
|
pivotRect.setVisibility(value);
|
||||||
|
|
||||||
@ -145,7 +145,7 @@ class DragPivot {
|
|||||||
let result = null;
|
let result = null;
|
||||||
const parentTopic = this._targetTopic;
|
const parentTopic = this._targetTopic;
|
||||||
if (parentTopic) {
|
if (parentTopic) {
|
||||||
if (parentTopic.getType() == INodeModel.CENTRAL_TOPIC_TYPE) {
|
if (parentTopic.getType() === INodeModel.CENTRAL_TOPIC_TYPE) {
|
||||||
result = this._straightLine;
|
result = this._straightLine;
|
||||||
} else {
|
} else {
|
||||||
result = this._curvedLine;
|
result = this._curvedLine;
|
||||||
@ -198,7 +198,7 @@ class DragPivot {
|
|||||||
|
|
||||||
connectTo(targetTopic, position) {
|
connectTo(targetTopic, position) {
|
||||||
$assert(!this._outgoingLine, 'Could not connect an already connected node');
|
$assert(!this._outgoingLine, 'Could not connect an already connected node');
|
||||||
$assert(targetTopic != this, 'Circular connection are not allowed');
|
$assert(targetTopic !== this, 'Circular connection are not allowed');
|
||||||
$assert(position, 'position can not be null');
|
$assert(position, 'position can not be null');
|
||||||
$assert(targetTopic, 'parent can not be null');
|
$assert(targetTopic, 'parent can not be null');
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ class DragTopic {
|
|||||||
this._draggedNode.getId(),
|
this._draggedNode.getId(),
|
||||||
this.getPosition(),
|
this.getPosition(),
|
||||||
);
|
);
|
||||||
if (this._order != predict.order) {
|
if (this._order !== predict.order) {
|
||||||
const dragPivot = this._getDragPivot();
|
const dragPivot = this._getDragPivot();
|
||||||
const pivotPosition = predict.position;
|
const pivotPosition = predict.position;
|
||||||
dragPivot.connectTo(parent, pivotPosition);
|
dragPivot.connectTo(parent, pivotPosition);
|
||||||
@ -81,8 +81,10 @@ class DragTopic {
|
|||||||
}
|
}
|
||||||
|
|
||||||
updateFreeLayout(event) {
|
updateFreeLayout(event) {
|
||||||
const isFreeEnabled = (event.metaKey && Browser.Platform.mac) || (event.ctrlKey && !Browser.Platform.mac);
|
const isFreeEnabled = (event.metaKey && Browser.Platform.mac)
|
||||||
if (this.isFreeLayoutOn() != isFreeEnabled) {
|
|| (event.ctrlKey && !Browser.Platform.mac);
|
||||||
|
|
||||||
|
if (this.isFreeLayoutOn() !== isFreeEnabled) {
|
||||||
const dragPivot = this._getDragPivot();
|
const dragPivot = this._getDragPivot();
|
||||||
dragPivot.setVisibility(!isFreeEnabled);
|
dragPivot.setVisibility(!isFreeEnabled);
|
||||||
this._isFreeLayoutEnabled = isFreeEnabled;
|
this._isFreeLayoutEnabled = isFreeEnabled;
|
||||||
@ -114,7 +116,8 @@ class DragTopic {
|
|||||||
|
|
||||||
// Where it should be connected ?
|
// Where it should be connected ?
|
||||||
|
|
||||||
// @todo: This is a hack for the access of the editor. It's required to review why this is needed forcing the declaration of a global variable.
|
// @todo: This is a hack for the access of the editor.
|
||||||
|
// It's required to review why this is needed forcing the declaration of a global variable.
|
||||||
const predict = designer._eventBussDispatcher._layoutManager.predict(
|
const predict = designer._eventBussDispatcher._layoutManager.predict(
|
||||||
parent.getId(),
|
parent.getId(),
|
||||||
this._draggedNode.getId(),
|
this._draggedNode.getId(),
|
||||||
@ -139,7 +142,8 @@ class DragTopic {
|
|||||||
// Remove drag shadow.
|
// Remove drag shadow.
|
||||||
workspace.removeChild(this._elem2d);
|
workspace.removeChild(this._elem2d);
|
||||||
|
|
||||||
// Remove pivot shape. To improve performance it will not be removed. Only the visibility will be changed.
|
// Remove pivot shape. To improve performance it will not be removed.
|
||||||
|
// Only the visibility will be changed.
|
||||||
const dragPivot = this._getDragPivot();
|
const dragPivot = this._getDragPivot();
|
||||||
dragPivot.setVisibility(false);
|
dragPivot.setVisibility(false);
|
||||||
|
|
||||||
@ -213,13 +217,13 @@ class DragTopic {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DragTopic.init = function (workspace) {
|
DragTopic.init = function init(workspace) {
|
||||||
$assert(workspace, 'workspace can not be null');
|
$assert(workspace, 'workspace can not be null');
|
||||||
const pivot = DragTopic.__getDragPivot();
|
const pivot = DragTopic.__getDragPivot();
|
||||||
workspace.append(pivot);
|
workspace.append(pivot);
|
||||||
};
|
};
|
||||||
|
|
||||||
DragTopic.__getDragPivot = function () {
|
DragTopic.__getDragPivot = function __getDragPivot() {
|
||||||
let result = DragTopic._dragPivot;
|
let result = DragTopic._dragPivot;
|
||||||
if (!$defined(result)) {
|
if (!$defined(result)) {
|
||||||
result = new DragPivot();
|
result = new DragPivot();
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
export const PIVOT_SIZE = { width: 50, height: 6 };
|
const PIVOT_SIZE = { width: 50, height: 6 };
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
PIVOT_SIZE,
|
PIVOT_SIZE,
|
||||||
|
@ -1,26 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright [2015] [wisemapping]
|
|
||||||
*
|
|
||||||
* Licensed under WiseMapping Public License, Version 1.0 (the "License").
|
|
||||||
* It is basically the Apache License, Version 2.0 (the "License") plus the
|
|
||||||
* "powered by wisemapping" text requirement on every single page;
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the license at
|
|
||||||
*
|
|
||||||
* http://www.wisemapping.org/license
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
const EditorOptions = {
|
|
||||||
LayoutManager: 'OriginalLayout',
|
|
||||||
// LayoutManager:"FreeMindLayout",
|
|
||||||
textEditor: 'TextEditor',
|
|
||||||
// textEditor:"RichTextEditor"
|
|
||||||
};
|
|
||||||
|
|
||||||
export default EditorOptions;
|
|
@ -41,12 +41,12 @@ class Events {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
fireEvent(typeName, args, delay) {
|
fireEvent(typeName, eventArgs, delay) {
|
||||||
const type = Events._removeOn(typeName);
|
const type = Events._removeOn(typeName);
|
||||||
const events = this.$events[type];
|
const events = this.$events[type];
|
||||||
if (!events) return this;
|
if (!events) return this;
|
||||||
|
|
||||||
args = Array.isArray(args) ? args : [args];
|
const args = Array.isArray(eventArgs) ? eventArgs : [eventArgs];
|
||||||
events.forEach(((fn) => {
|
events.forEach(((fn) => {
|
||||||
if (delay) {
|
if (delay) {
|
||||||
fn.delay(delay, this, args);
|
fn.delay(delay, this, args);
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
// eslint-disable-next-line max-classes-per-file
|
// eslint-disable-next-line max-classes-per-file
|
||||||
import { $assert, $defined } from '@wisemapping/core-js';
|
import { $assert, $defined } from '@wisemapping/core-js';
|
||||||
import { Group, Rect, Line } from '@wisemapping/web2d';
|
import { Group } from '@wisemapping/web2d';
|
||||||
import IconGroupRemoveTip from './IconGroupRemoveTip';
|
import IconGroupRemoveTip from './IconGroupRemoveTip';
|
||||||
|
|
||||||
import Icon from './Icon';
|
import Icon from './Icon';
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { Group, Rect, Line } from '@wisemapping/web2d';
|
|
||||||
import $ from 'jquery';
|
import $ from 'jquery';
|
||||||
import { $assert, $defined } from '@wisemapping/core-js';
|
import { $assert, $defined } from '@wisemapping/core-js';
|
||||||
|
import { Group, Rect, Line } from '@wisemapping/web2d';
|
||||||
|
|
||||||
export default class RemoveTip {
|
export default class RemoveTip {
|
||||||
/** @lends IconGroup.RemoveTip */
|
/** @lends IconGroup.RemoveTip */
|
||||||
@ -160,6 +160,7 @@ export default class RemoveTip {
|
|||||||
icon.addEvent('mouseout', () => {
|
icon.addEvent('mouseout', () => {
|
||||||
me.hide();
|
me.hide();
|
||||||
});
|
});
|
||||||
|
// eslint-disable-next-line no-param-reassign
|
||||||
icon.__remove = true;
|
icon.__remove = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -37,12 +37,11 @@ class ImageIcon extends Icon {
|
|||||||
const image = this.getImage();
|
const image = this.getImage();
|
||||||
const me = this;
|
const me = this;
|
||||||
image.addEvent('click', () => {
|
image.addEvent('click', () => {
|
||||||
const iconType = iconModel.getIconType();
|
const iconTypeClick = iconModel.getIconType();
|
||||||
const newIconType = ImageIcon._getNextFamilyIconId(iconType);
|
const newIconType = ImageIcon._getNextFamilyIconId(iconTypeClick);
|
||||||
iconModel.setIconType(newIconType);
|
iconModel.setIconType(newIconType);
|
||||||
|
|
||||||
const imgUrl = ImageIcon._getImageUrl(newIconType);
|
me._image.setHref(ImageIcon._getImageUrl(newIconType));
|
||||||
me._image.setHref(imgUrl);
|
|
||||||
});
|
});
|
||||||
this._image.setCursor('pointer');
|
this._image.setCursor('pointer');
|
||||||
}
|
}
|
||||||
@ -65,7 +64,7 @@ class ImageIcon extends Icon {
|
|||||||
if (familyIcons[i] === iconId) {
|
if (familyIcons[i] === iconId) {
|
||||||
// Is last one?
|
// Is last one?
|
||||||
if (i === (familyIcons.length - 1)) {
|
if (i === (familyIcons.length - 1)) {
|
||||||
result = familyIcons[0];
|
[result] = familyIcons;
|
||||||
} else {
|
} else {
|
||||||
result = familyIcons[i + 1];
|
result = familyIcons[i + 1];
|
||||||
}
|
}
|
||||||
@ -150,7 +149,8 @@ ImageIcon.prototype.ICON_FAMILIES = [
|
|||||||
{ id: 'tag', icons: ['tag_blue', 'tag_green', 'tag_orange', 'tag_red', 'tag_pink', 'tag_yellow'] },
|
{ id: 'tag', icons: ['tag_blue', 'tag_green', 'tag_orange', 'tag_red', 'tag_pink', 'tag_yellow'] },
|
||||||
{
|
{
|
||||||
id: 'object',
|
id: 'object',
|
||||||
icons: ['object_bell', 'object_clanbomber', 'object_key', 'object_pencil', 'object_phone', 'object_magnifier', 'object_clip', 'object_music', 'object_star', 'object_wizard', 'object_house', 'object_cake', 'object_camera', 'object_palette', 'object_rainbow'],
|
icons: ['object_bell', 'object_clanbomber', 'object_key', 'object_pencil', 'object_phone', 'object_magnifier', 'object_clip',
|
||||||
|
'object_music', 'object_star', 'object_wizard', 'object_house', 'object_cake', 'object_camera', 'object_palette', 'object_rainbow'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'weather',
|
id: 'weather',
|
||||||
|
@ -18,12 +18,9 @@
|
|||||||
import $ from 'jquery';
|
import $ from 'jquery';
|
||||||
|
|
||||||
class Keyboard {
|
class Keyboard {
|
||||||
// eslint-disable-next-line class-methods-use-this
|
|
||||||
addShortcut(shortcuts, callback) {
|
addShortcut(shortcuts, callback) {
|
||||||
if (!Array.isArray(shortcuts)) {
|
const shortcutsArray = Array.isArray(shortcuts) ? shortcuts : [shortcuts];
|
||||||
shortcuts = [shortcuts];
|
shortcutsArray.forEach((shortcut) => {
|
||||||
}
|
|
||||||
shortcuts.forEach((shortcut) => {
|
|
||||||
$(document).bind('keydown', shortcut, callback);
|
$(document).bind('keydown', shortcut, callback);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,8 @@
|
|||||||
*/
|
*/
|
||||||
import { $defined } from '@wisemapping/core-js';
|
import { $defined } from '@wisemapping/core-js';
|
||||||
import $ from 'jquery';
|
import $ from 'jquery';
|
||||||
|
// TODO: use jquery.hotkeys from npm or setup eslint-import-resolver-alias plugin
|
||||||
|
// eslint-disable-next-line import/no-unresolved, import/no-extraneous-dependencies
|
||||||
import initHotKeyPluggin from '@libraries/jquery.hotkeys';
|
import initHotKeyPluggin from '@libraries/jquery.hotkeys';
|
||||||
import Events from './Events';
|
import Events from './Events';
|
||||||
import ActionDispatcher from './ActionDispatcher';
|
import ActionDispatcher from './ActionDispatcher';
|
||||||
@ -56,6 +58,8 @@ class MultilineTextEditor extends Events {
|
|||||||
_registerEvents(containerElem) {
|
_registerEvents(containerElem) {
|
||||||
const textareaElem = this._getTextareaElem();
|
const textareaElem = this._getTextareaElem();
|
||||||
const me = this;
|
const me = this;
|
||||||
|
let start;
|
||||||
|
let end;
|
||||||
textareaElem.on('keydown', function keydown(event) {
|
textareaElem.on('keydown', function keydown(event) {
|
||||||
switch ($.hotkeys.specialKeys[event.keyCode]) {
|
switch ($.hotkeys.specialKeys[event.keyCode]) {
|
||||||
case 'esc':
|
case 'esc':
|
||||||
@ -92,8 +96,8 @@ class MultilineTextEditor extends Events {
|
|||||||
break;
|
break;
|
||||||
case 'tab': {
|
case 'tab': {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
const start = $(this).get(0).selectionStart;
|
start = $(this).get(0).selectionStart;
|
||||||
const end = $(this).get(0).selectionEnd;
|
end = $(this).get(0).selectionEnd;
|
||||||
|
|
||||||
// set textarea value to: text before caret + tab + text after caret
|
// set textarea value to: text before caret + tab + text after caret
|
||||||
$(this).val(`${$(this).val().substring(0, start)}\t${$(this).val().substring(end)}`);
|
$(this).val(`${$(this).val().substring(0, start)}\t${$(this).val().substring(end)}`);
|
||||||
@ -157,7 +161,7 @@ class MultilineTextEditor extends Events {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_updateModel() {
|
_updateModel() {
|
||||||
if (this._topic.getText() != this._getText()) {
|
if (this._topic.getText() !== this._getText()) {
|
||||||
const text = this._getText();
|
const text = this._getText();
|
||||||
const topicId = this._topic.getId();
|
const topicId = this._topic.getId();
|
||||||
|
|
||||||
@ -223,6 +227,8 @@ class MultilineTextEditor extends Events {
|
|||||||
|
|
||||||
_setStyle(fontStyle) {
|
_setStyle(fontStyle) {
|
||||||
const inputField = this._getTextareaElem();
|
const inputField = this._getTextareaElem();
|
||||||
|
// allowed param reassign to avoid risks of existing code relying in this side-effect
|
||||||
|
/* eslint-disable no-param-reassign */
|
||||||
if (!$defined(fontStyle.font)) {
|
if (!$defined(fontStyle.font)) {
|
||||||
fontStyle.font = 'Arial';
|
fontStyle.font = 'Arial';
|
||||||
}
|
}
|
||||||
@ -235,6 +241,7 @@ class MultilineTextEditor extends Events {
|
|||||||
if (!$defined(fontStyle.size)) {
|
if (!$defined(fontStyle.size)) {
|
||||||
fontStyle.size = 12;
|
fontStyle.size = 12;
|
||||||
}
|
}
|
||||||
|
/* eslint-enable no-param-reassign */
|
||||||
const style = {
|
const style = {
|
||||||
fontSize: `${fontStyle.size}px`,
|
fontSize: `${fontStyle.size}px`,
|
||||||
fontFamily: fontStyle.font,
|
fontFamily: fontStyle.font,
|
||||||
@ -276,8 +283,12 @@ class MultilineTextEditor extends Events {
|
|||||||
const range = textareaElem.createTextRange();
|
const range = textareaElem.createTextRange();
|
||||||
range.move('character', lengh);
|
range.move('character', lengh);
|
||||||
} else {
|
} else {
|
||||||
|
// allowed param reassign to avoid risks of existing code relying in this side-effect
|
||||||
|
/* eslint-disable no-param-reassign */
|
||||||
textareaElem.selectionStart = lengh;
|
textareaElem.selectionStart = lengh;
|
||||||
textareaElem.selectionEnd = lengh;
|
textareaElem.selectionEnd = lengh;
|
||||||
|
/* eslint-enable no-param-reassign */
|
||||||
|
|
||||||
textareaElem.focus();
|
textareaElem.focus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ class NodeGraph {
|
|||||||
* @throws will throw an error if the topic id is not a number
|
* @throws will throw an error if the topic id is not a number
|
||||||
*/
|
*/
|
||||||
setId(id) {
|
setId(id) {
|
||||||
$assert(typeof topic.getId() === 'number', `id is not a number:${id}`);
|
$assert(typeof id === 'number', `id is not a number:${id}`);
|
||||||
this.getModel().setId(id);
|
this.getModel().setId(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,7 +61,8 @@ class NoteIcon extends Icon {
|
|||||||
if ($('body').find('#textPopoverNote').length === 1) {
|
if ($('body').find('#textPopoverNote').length === 1) {
|
||||||
const text = $('body').find('#textPopoverNote');
|
const text = $('body').find('#textPopoverNote');
|
||||||
text.text(this._linksModel.getText());
|
text.text(this._linksModel.getText());
|
||||||
} else {
|
return text;
|
||||||
|
}
|
||||||
const result = $('<div id="textPopoverNote"></div>').css({ padding: '5px' });
|
const result = $('<div id="textPopoverNote"></div>').css({ padding: '5px' });
|
||||||
|
|
||||||
const text = $('<div></div>').text(this._linksModel.getText())
|
const text = $('<div></div>').text(this._linksModel.getText())
|
||||||
@ -72,7 +73,6 @@ class NoteIcon extends Icon {
|
|||||||
result.append(text);
|
result.append(text);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
getModel() {
|
getModel() {
|
||||||
return this._linksModel;
|
return this._linksModel;
|
||||||
|
@ -6,14 +6,15 @@ class Options {
|
|||||||
this.options = options;
|
this.options = options;
|
||||||
|
|
||||||
if (this.addEvent) {
|
if (this.addEvent) {
|
||||||
for (const option in options) {
|
const optionsKeys = Object.keys(options);
|
||||||
if (typeof (options[option]) !== 'function' || !(/^on[A-Z]/).test(option)) {
|
for (let index = 0; index < optionsKeys.length; index++) {
|
||||||
continue;
|
const option = optionsKeys[index];
|
||||||
}
|
if (typeof (options[option]) === 'function' && (/^on[A-Z]/).test(option)) {
|
||||||
this.addEvent(option, options[option]);
|
this.addEvent(option, options[option]);
|
||||||
delete options[option];
|
delete options[option];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -63,13 +63,11 @@ class PersistenceManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PersistenceManager.init = function init(instance) {
|
PersistenceManager.init = (instance) => {
|
||||||
PersistenceManager._instance = instance;
|
PersistenceManager._instance = instance;
|
||||||
};
|
};
|
||||||
|
|
||||||
PersistenceManager.getInstance = function getInstance() {
|
PersistenceManager.getInstance = () => PersistenceManager._instance;
|
||||||
return PersistenceManager._instance;
|
|
||||||
};
|
|
||||||
|
|
||||||
PersistenceManager.loadFromDom = function loadFromDom(mapId, mapDom) {
|
PersistenceManager.loadFromDom = function loadFromDom(mapId, mapDom) {
|
||||||
$assert(mapId, 'mapId can not be null');
|
$assert(mapId, 'mapId can not be null');
|
||||||
|
@ -229,7 +229,8 @@ class Relationship extends ConnectionLine {
|
|||||||
this._focusShape.updateLine();
|
this._focusShape.updateLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
addEvent(type, listener) {
|
addEvent(eventType, listener) {
|
||||||
|
let type = eventType;
|
||||||
// Translate to web 2d events ...
|
// Translate to web 2d events ...
|
||||||
if (type === 'onfocus') {
|
if (type === 'onfocus') {
|
||||||
type = 'mousedown';
|
type = 'mousedown';
|
||||||
|
@ -64,8 +64,8 @@ class RESTPersistenceManager extends PersistenceManager {
|
|||||||
contentType: 'application/json; charset=utf-8',
|
contentType: 'application/json; charset=utf-8',
|
||||||
async: !sync,
|
async: !sync,
|
||||||
|
|
||||||
success(data, textStatus, jqXHRresponseText) {
|
success(successData, textStatus, jqXHRresponseText) {
|
||||||
persistence.timestamp = data;
|
persistence.timestamp = successData;
|
||||||
events.onSuccess();
|
events.onSuccess();
|
||||||
},
|
},
|
||||||
error(jqXHR, textStatus, errorThrown) {
|
error(jqXHR, textStatus, errorThrown) {
|
||||||
@ -92,7 +92,7 @@ class RESTPersistenceManager extends PersistenceManager {
|
|||||||
// Message could not be decoded ...
|
// Message could not be decoded ...
|
||||||
}
|
}
|
||||||
userMsg = persistence._buildError(serverMsg);
|
userMsg = persistence._buildError(serverMsg);
|
||||||
} else if (this.status == 405) {
|
} else if (this.status === 405) {
|
||||||
userMsg = { severity: 'SEVERE', message: $msg('SESSION_EXPIRED') };
|
userMsg = { severity: 'SEVERE', message: $msg('SESSION_EXPIRED') };
|
||||||
}
|
}
|
||||||
events.onError(userMsg);
|
events.onError(userMsg);
|
||||||
|
@ -115,9 +115,9 @@ class StandaloneActionDispatcher extends ActionDispatcher {
|
|||||||
$assert(topicIds, 'topicIds can not be null');
|
$assert(topicIds, 'topicIds can not be null');
|
||||||
$assert(fontFamily, 'fontFamily can not be null');
|
$assert(fontFamily, 'fontFamily can not be null');
|
||||||
|
|
||||||
const commandFunc = (topic, fontFamily) => {
|
const commandFunc = (topic, commandFontFamily) => {
|
||||||
const result = topic.getFontFamily();
|
const result = topic.getFontFamily();
|
||||||
topic.setFontFamily(fontFamily, true);
|
topic.setFontFamily(commandFontFamily, true);
|
||||||
|
|
||||||
topic._adjustShapes();
|
topic._adjustShapes();
|
||||||
return result;
|
return result;
|
||||||
@ -132,9 +132,9 @@ class StandaloneActionDispatcher extends ActionDispatcher {
|
|||||||
$assert(topicsIds, 'topicIds can not be null');
|
$assert(topicsIds, 'topicIds can not be null');
|
||||||
$assert(color, 'color can not be null');
|
$assert(color, 'color can not be null');
|
||||||
|
|
||||||
const commandFunc = (topic, color) => {
|
const commandFunc = (topic, commandColor) => {
|
||||||
const result = topic.getFontColor();
|
const result = topic.getFontColor();
|
||||||
topic.setFontColor(color, true);
|
topic.setFontColor(commandColor, true);
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -148,9 +148,9 @@ class StandaloneActionDispatcher extends ActionDispatcher {
|
|||||||
$assert(topicsIds, 'topicIds can not be null');
|
$assert(topicsIds, 'topicIds can not be null');
|
||||||
$assert(color, 'color can not be null');
|
$assert(color, 'color can not be null');
|
||||||
|
|
||||||
const commandFunc = (topic, color) => {
|
const commandFunc = (topic, commandColor) => {
|
||||||
const result = topic.getBackgroundColor();
|
const result = topic.getBackgroundColor();
|
||||||
topic.setBackgroundColor(color);
|
topic.setBackgroundColor(commandColor);
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -164,9 +164,9 @@ class StandaloneActionDispatcher extends ActionDispatcher {
|
|||||||
$assert(topicsIds, 'topicIds can not be null');
|
$assert(topicsIds, 'topicIds can not be null');
|
||||||
$assert(color, 'topicIds can not be null');
|
$assert(color, 'topicIds can not be null');
|
||||||
|
|
||||||
const commandFunc = (topic, color) => {
|
const commandFunc = (topic, commandColor) => {
|
||||||
const result = topic.getBorderColor();
|
const result = topic.getBorderColor();
|
||||||
topic.setBorderColor(color);
|
topic.setBorderColor(commandColor);
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -180,9 +180,9 @@ class StandaloneActionDispatcher extends ActionDispatcher {
|
|||||||
$assert(topicsIds, 'topicIds can not be null');
|
$assert(topicsIds, 'topicIds can not be null');
|
||||||
$assert(size, 'size can not be null');
|
$assert(size, 'size can not be null');
|
||||||
|
|
||||||
const commandFunc = (topic, size) => {
|
const commandFunc = (topic, commandSize) => {
|
||||||
const result = topic.getFontSize();
|
const result = topic.getFontSize();
|
||||||
topic.setFontSize(size, true);
|
topic.setFontSize(commandSize, true);
|
||||||
|
|
||||||
topic._adjustShapes();
|
topic._adjustShapes();
|
||||||
return result;
|
return result;
|
||||||
@ -197,9 +197,9 @@ class StandaloneActionDispatcher extends ActionDispatcher {
|
|||||||
$assert(topicsIds, 'topicsIds can not be null');
|
$assert(topicsIds, 'topicsIds can not be null');
|
||||||
$assert(shapeType, 'shapeType can not be null');
|
$assert(shapeType, 'shapeType can not be null');
|
||||||
|
|
||||||
const commandFunc = (topic, shapeType) => {
|
const commandFunc = (topic, commandShapeType) => {
|
||||||
const result = topic.getShapeType();
|
const result = topic.getShapeType();
|
||||||
topic.setShapeType(shapeType, true);
|
topic.setShapeType(commandShapeType, true);
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,259 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright [2015] [wisemapping]
|
|
||||||
*
|
|
||||||
* Licensed under WiseMapping Public License, Version 1.0 (the "License").
|
|
||||||
* It is basically the Apache License, Version 2.0 (the "License") plus the
|
|
||||||
* "powered by wisemapping" text requirement on every single page;
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the license at
|
|
||||||
*
|
|
||||||
* http://www.wisemapping.org/license
|
|
||||||
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
import { $defined } from '@wisemapping/core-js';
|
|
||||||
import { TransformUtil } from '@wisemapping/web2d';
|
|
||||||
import ActionDispatcher from './ActionDispatcher';
|
|
||||||
|
|
||||||
// FIXME: Not used!
|
|
||||||
class TextEditor {
|
|
||||||
constructor(topic) {
|
|
||||||
this._topic = topic;
|
|
||||||
}
|
|
||||||
|
|
||||||
_buildEditor() {
|
|
||||||
this._size = { width: 500, height: 100 };
|
|
||||||
const result = new Element('div');
|
|
||||||
result.setStyles({
|
|
||||||
position: 'absolute',
|
|
||||||
display: 'none',
|
|
||||||
zIndex: '8',
|
|
||||||
width: '500px',
|
|
||||||
height: '100px',
|
|
||||||
});
|
|
||||||
|
|
||||||
const inputContainer = new Element('div');
|
|
||||||
inputContainer.setStyles({
|
|
||||||
border: 'none',
|
|
||||||
overflow: 'auto',
|
|
||||||
});
|
|
||||||
inputContainer.inject(result);
|
|
||||||
|
|
||||||
const inputText = new Element('input', {
|
|
||||||
type: 'text',
|
|
||||||
tabindex: '-1',
|
|
||||||
value: '',
|
|
||||||
});
|
|
||||||
inputText.setStyles({
|
|
||||||
border: 'none',
|
|
||||||
background: 'transparent',
|
|
||||||
});
|
|
||||||
inputText.inject(inputContainer);
|
|
||||||
|
|
||||||
const spanContainer = new Element('div');
|
|
||||||
spanContainer.setStyle('visibility', 'hidden');
|
|
||||||
spanContainer.inject(result);
|
|
||||||
|
|
||||||
const spanElem = new Element('span', { tabindex: '-1' });
|
|
||||||
spanElem.setStyle('white-space', 'nowrap');
|
|
||||||
spanElem.setStyle('nowrap', 'nowrap');
|
|
||||||
spanElem.inject(spanContainer);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
_registerEvents(divElem) {
|
|
||||||
const inputElem = this._getTextareaElem();
|
|
||||||
const spanElem = this._getSpanElem();
|
|
||||||
const me = this;
|
|
||||||
|
|
||||||
divElem.addEvent('keydown', (event) => {
|
|
||||||
switch (event.key) {
|
|
||||||
case 'esc':
|
|
||||||
me.close(false);
|
|
||||||
break;
|
|
||||||
case 'enter':
|
|
||||||
me.close(true);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
spanElem.innerHTML = inputElem.value;
|
|
||||||
var size = inputElem.value.length + 1;
|
|
||||||
|
|
||||||
inputElem.size = size;
|
|
||||||
if (spanElem.offsetWidth > parseInt(divElem.style.width, 10) - 100) {
|
|
||||||
divElem.style.width = `${spanElem.offsetWidth + 100}px`;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
event.stopPropagation();
|
|
||||||
});
|
|
||||||
|
|
||||||
// If the user clicks on the input, all event must be ignored ...
|
|
||||||
divElem.addEvent('click', (event) => {
|
|
||||||
event.stopPropagation();
|
|
||||||
});
|
|
||||||
divElem.addEvent('dblclick', (event) => {
|
|
||||||
event.stopPropagation();
|
|
||||||
});
|
|
||||||
divElem.addEvent('mousedown', (event) => {
|
|
||||||
event.stopPropagation();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
isVisible() {
|
|
||||||
return $defined(this._containerElem) && this._containerElem.getStyle('display') === 'block';
|
|
||||||
}
|
|
||||||
|
|
||||||
_updateModel() {
|
|
||||||
if (this._topic.getText() !== this._getText()) {
|
|
||||||
const text = this._getText();
|
|
||||||
const topicId = this._topic.getId();
|
|
||||||
|
|
||||||
const actionDispatcher = ActionDispatcher.getInstance();
|
|
||||||
actionDispatcher.changeTextToTopic([topicId], text);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
show(text) {
|
|
||||||
if (!this.isVisible()) {
|
|
||||||
// Create editor ui
|
|
||||||
const editorElem = this._buildEditor();
|
|
||||||
editorElem.inject($(document.body)[0]);
|
|
||||||
|
|
||||||
this._containerElem = editorElem;
|
|
||||||
this._registerEvents(editorElem);
|
|
||||||
this._showEditor(text);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_showEditor(defaultText) {
|
|
||||||
const topic = this._topic;
|
|
||||||
|
|
||||||
// Hide topic text ...
|
|
||||||
topic.getTextShape().setVisibility(false);
|
|
||||||
|
|
||||||
// Set Editor Style
|
|
||||||
const nodeText = topic.getTextShape();
|
|
||||||
const font = nodeText.getFont();
|
|
||||||
font.size = nodeText.getHtmlFontSize();
|
|
||||||
font.color = nodeText.getColor();
|
|
||||||
this._setStyle(font);
|
|
||||||
|
|
||||||
// Set editor's initial text
|
|
||||||
const text = $defined(defaultText) ? defaultText : topic.getText();
|
|
||||||
this._setText(text);
|
|
||||||
|
|
||||||
const me = this;
|
|
||||||
// Set editor's initial size
|
|
||||||
const displayFunc = function () {
|
|
||||||
// Position the editor and set the size...
|
|
||||||
const textShape = me._topic.getTextShape();
|
|
||||||
|
|
||||||
me._containerElem.css('display', 'block');
|
|
||||||
|
|
||||||
me._containerElem.offset(textShape.getNativePosition());
|
|
||||||
// Set size ...
|
|
||||||
const elemSize = topic.getSize();
|
|
||||||
me._setEditorSize(elemSize.width, elemSize.height);
|
|
||||||
|
|
||||||
const textareaElem = me._getTextareaElem();
|
|
||||||
textareaElem.focus();
|
|
||||||
me._positionCursor(textareaElem, !$defined(defaultText));
|
|
||||||
};
|
|
||||||
|
|
||||||
displayFunc.delay(10);
|
|
||||||
}
|
|
||||||
|
|
||||||
_setStyle(fontStyle) {
|
|
||||||
const inputField = this._getTextareaElem();
|
|
||||||
const spanField = this._getSpanElem();
|
|
||||||
if (!$defined(fontStyle.font)) {
|
|
||||||
fontStyle.font = 'Arial';
|
|
||||||
}
|
|
||||||
if (!$defined(fontStyle.style)) {
|
|
||||||
fontStyle.style = 'normal';
|
|
||||||
}
|
|
||||||
if (!$defined(fontStyle.weight)) {
|
|
||||||
fontStyle.weight = 'normal';
|
|
||||||
}
|
|
||||||
if (!$defined(fontStyle.size)) {
|
|
||||||
fontStyle.size = 12;
|
|
||||||
}
|
|
||||||
inputField.style.fontSize = `${fontStyle.size}px`;
|
|
||||||
inputField.style.fontFamily = fontStyle.font;
|
|
||||||
inputField.style.fontStyle = fontStyle.style;
|
|
||||||
inputField.style.fontWeight = fontStyle.weight;
|
|
||||||
inputField.style.color = fontStyle.color;
|
|
||||||
spanField.style.fontFamily = fontStyle.font;
|
|
||||||
spanField.style.fontStyle = fontStyle.style;
|
|
||||||
spanField.style.fontWeight = fontStyle.weight;
|
|
||||||
spanField.style.fontSize = `${fontStyle.size}px`;
|
|
||||||
}
|
|
||||||
|
|
||||||
_setText(text) {
|
|
||||||
const inputField = this._getTextareaElem();
|
|
||||||
inputField.size = text.length + 1;
|
|
||||||
this._containerElem.style.width = `${inputField.size * parseInt(inputField.style.fontSize, 10) + 100
|
|
||||||
}px`;
|
|
||||||
const spanField = this._getSpanElem();
|
|
||||||
spanField.innerHTML = text;
|
|
||||||
inputField.value = text;
|
|
||||||
}
|
|
||||||
|
|
||||||
_getText() {
|
|
||||||
return this._getTextareaElem().value;
|
|
||||||
}
|
|
||||||
|
|
||||||
_getTextareaElem() {
|
|
||||||
return this._containerElem.getElement('input');
|
|
||||||
}
|
|
||||||
|
|
||||||
_getSpanElem() {
|
|
||||||
return this._containerElem.getElement('span');
|
|
||||||
}
|
|
||||||
|
|
||||||
_setEditorSize(width, height) {
|
|
||||||
const textShape = this._topic.getTextShape();
|
|
||||||
const scale = TransformUtil.workoutScale(textShape.peer);
|
|
||||||
this._size = { width: width * scale.width, height: height * scale.height };
|
|
||||||
this._containerElem.style.width = `${this._size.width * 2}px`;
|
|
||||||
this._containerElem.style.height = `${this._size.height}px`;
|
|
||||||
}
|
|
||||||
|
|
||||||
_positionCursor(inputElem, selectText) {
|
|
||||||
// Select text if it's required ...
|
|
||||||
if (inputElem.createTextRange) {
|
|
||||||
// ie
|
|
||||||
const range = inputElem.createTextRange();
|
|
||||||
const pos = inputElem.value.length;
|
|
||||||
if (!selectText) {
|
|
||||||
range.select();
|
|
||||||
range.move('character', pos);
|
|
||||||
} else {
|
|
||||||
range.move('character', pos);
|
|
||||||
range.select();
|
|
||||||
}
|
|
||||||
} else if (!selectText) {
|
|
||||||
inputElem.setSelectionRange(0, inputElem.value.length);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
close(update) {
|
|
||||||
if (this.isVisible()) {
|
|
||||||
// Update changes ...
|
|
||||||
if (!$defined(update) || update) {
|
|
||||||
this._updateModel();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Let make the visible text in the node visible again ...
|
|
||||||
this._topic.getTextShape().setVisibility(true);
|
|
||||||
|
|
||||||
// Remove it form the screen ...
|
|
||||||
this._containerElem.dispose();
|
|
||||||
this._containerElem = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default TextEditor;
|
|
@ -1,30 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright [2015] [wisemapping]
|
|
||||||
*
|
|
||||||
* Licensed under WiseMapping Public License, Version 1.0 (the "License").
|
|
||||||
* It is basically the Apache License, Version 2.0 (the "License") plus the
|
|
||||||
* "powered by wisemapping" text requirement on every single page;
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the license at
|
|
||||||
*
|
|
||||||
* http://www.wisemapping.org/license
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
import TextEditor from './TextEditor';
|
|
||||||
|
|
||||||
const TextEditorFactory = {};
|
|
||||||
|
|
||||||
TextEditorFactory.getTextEditorFromName = function (name) {
|
|
||||||
let editorClass = null;
|
|
||||||
if (name == 'RichTextEditor') {
|
|
||||||
editorClass = RichTextEditor;
|
|
||||||
} else {
|
|
||||||
editorClass = TextEditor;
|
|
||||||
}
|
|
||||||
return editorClass;
|
|
||||||
};
|
|
@ -15,9 +15,11 @@
|
|||||||
* 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 { $assert, $defined } from '@wisemapping/core-js';
|
|
||||||
import { Rect, Image, Line, Text, Group } from '@wisemapping/web2d';
|
|
||||||
import $ from 'jquery';
|
import $ from 'jquery';
|
||||||
|
import { $assert, $defined } from '@wisemapping/core-js';
|
||||||
|
import {
|
||||||
|
Rect, Image, Line, Text, Group,
|
||||||
|
} from '@wisemapping/web2d';
|
||||||
|
|
||||||
import NodeGraph from './NodeGraph';
|
import NodeGraph from './NodeGraph';
|
||||||
import TopicConfig from './TopicConfig';
|
import TopicConfig from './TopicConfig';
|
||||||
@ -507,10 +509,11 @@ class Topic extends NodeGraph {
|
|||||||
setText(text) {
|
setText(text) {
|
||||||
// Avoid empty nodes ...
|
// Avoid empty nodes ...
|
||||||
if (!text || $.trim(text).length === 0) {
|
if (!text || $.trim(text).length === 0) {
|
||||||
text = null;
|
this._setText(null, true);
|
||||||
|
} else {
|
||||||
|
this._setText(text, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
this._setText(text, true);
|
|
||||||
this._adjustShapes();
|
this._adjustShapes();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -825,7 +828,10 @@ class Topic extends NodeGraph {
|
|||||||
*/
|
*/
|
||||||
setPosition(point) {
|
setPosition(point) {
|
||||||
$assert(point, 'position can not be null');
|
$assert(point, 'position can not be null');
|
||||||
|
// allowed param reassign to avoid risks of existing code relying in this side-effect
|
||||||
|
// eslint-disable-next-line no-param-reassign
|
||||||
point.x = Math.ceil(point.x);
|
point.x = Math.ceil(point.x);
|
||||||
|
// eslint-disable-next-line no-param-reassign
|
||||||
point.y = Math.ceil(point.y);
|
point.y = Math.ceil(point.y);
|
||||||
|
|
||||||
// Update model's position ...
|
// Update model's position ...
|
||||||
@ -1006,11 +1012,11 @@ class Topic extends NodeGraph {
|
|||||||
const children = this.getChildren();
|
const children = this.getChildren();
|
||||||
const model = this.getModel();
|
const model = this.getModel();
|
||||||
|
|
||||||
isVisible = isVisible ? !model.areChildrenShrunken() : isVisible;
|
const visibility = isVisible ? !model.areChildrenShrunken() : isVisible;
|
||||||
children.forEach((child) => {
|
children.forEach((child) => {
|
||||||
child.setVisibility(isVisible);
|
child.setVisibility(visibility);
|
||||||
const outgoingLine = child.getOutgoingLine();
|
const outgoingLine = child.getOutgoingLine();
|
||||||
outgoingLine.setVisibility(isVisible);
|
outgoingLine.setVisibility(visibility);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1030,26 +1036,27 @@ class Topic extends NodeGraph {
|
|||||||
setSize(size, force) {
|
setSize(size, force) {
|
||||||
$assert(size, 'size can not be null');
|
$assert(size, 'size can not be null');
|
||||||
$assert($defined(size.width), 'size seem not to be a valid element');
|
$assert($defined(size.width), 'size seem not to be a valid element');
|
||||||
size = { width: Math.ceil(size.width), height: Math.ceil(size.height) };
|
const roundedSize = { width: Math.ceil(size.width), height: Math.ceil(size.height) };
|
||||||
|
|
||||||
const oldSize = this.getSize();
|
const oldSize = this.getSize();
|
||||||
const hasSizeChanged = oldSize.width !== size.width || oldSize.height !== size.height;
|
const hasSizeChanged = oldSize.width !== roundedSize.width
|
||||||
|
|| oldSize.height !== roundedSize.height;
|
||||||
if (hasSizeChanged || force) {
|
if (hasSizeChanged || force) {
|
||||||
NodeGraph.prototype.setSize.call(this, size);
|
NodeGraph.prototype.setSize.call(this, roundedSize);
|
||||||
|
|
||||||
const outerShape = this.getOuterShape();
|
const outerShape = this.getOuterShape();
|
||||||
const innerShape = this.getInnerShape();
|
const innerShape = this.getInnerShape();
|
||||||
|
|
||||||
outerShape.setSize(size.width + 4, size.height + 6);
|
outerShape.setSize(roundedSize.width + 4, roundedSize.height + 6);
|
||||||
innerShape.setSize(size.width, size.height);
|
innerShape.setSize(roundedSize.width, roundedSize.height);
|
||||||
|
|
||||||
// Update the figure position(ej: central topic must be centered) and children position.
|
// Update the figure position(ej: central topic must be centered) and children position.
|
||||||
this._updatePositionOnChangeSize(oldSize, size);
|
this._updatePositionOnChangeSize(oldSize, roundedSize);
|
||||||
|
|
||||||
if (hasSizeChanged) {
|
if (hasSizeChanged) {
|
||||||
EventBus.instance.fireEvent(EventBus.events.NodeResizeEvent, {
|
EventBus.instance.fireEvent(EventBus.events.NodeResizeEvent, {
|
||||||
node: this.getModel(),
|
node: this.getModel(),
|
||||||
size,
|
size: roundedSize,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,13 +3,13 @@
|
|||||||
* @type {Number}
|
* @type {Number}
|
||||||
* @default
|
* @default
|
||||||
*/
|
*/
|
||||||
export const CONNECTOR_WIDTH = 6;
|
const CONNECTOR_WIDTH = 6;
|
||||||
/**
|
/**
|
||||||
* @constant
|
* @constant
|
||||||
* @type {Object<String, Number>}
|
* @type {Object<String, Number>}
|
||||||
* @default
|
* @default
|
||||||
*/
|
*/
|
||||||
export const OUTER_SHAPE_ATTRIBUTES = {
|
const OUTER_SHAPE_ATTRIBUTES = {
|
||||||
fillColor: 'rgb(252,235,192)',
|
fillColor: 'rgb(252,235,192)',
|
||||||
stroke: '1 dot rgb(241,163,39)',
|
stroke: '1 dot rgb(241,163,39)',
|
||||||
x: 0,
|
x: 0,
|
||||||
@ -20,13 +20,13 @@ export const OUTER_SHAPE_ATTRIBUTES = {
|
|||||||
* @type {Object<String, Number>}
|
* @type {Object<String, Number>}
|
||||||
* @default
|
* @default
|
||||||
*/
|
*/
|
||||||
export const OUTER_SHAPE_ATTRIBUTES_FOCUS = { fillColor: 'rgb(244,184,45)', x: 0, y: 0 };
|
const OUTER_SHAPE_ATTRIBUTES_FOCUS = { fillColor: 'rgb(244,184,45)', x: 0, y: 0 };
|
||||||
/**
|
/**
|
||||||
* @constant
|
* @constant
|
||||||
* @type {Object<String>}
|
* @type {Object<String>}
|
||||||
* @default
|
* @default
|
||||||
* */
|
* */
|
||||||
export const INNER_RECT_ATTRIBUTES = { stroke: '2 solid' };
|
const INNER_RECT_ATTRIBUTES = { stroke: '2 solid' };
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
CONNECTOR_WIDTH,
|
CONNECTOR_WIDTH,
|
||||||
|
@ -66,9 +66,9 @@ const TopicFeature = {
|
|||||||
$assert(type, 'type can not be null');
|
$assert(type, 'type can not be null');
|
||||||
$assert(attributes, 'attributes can not be null');
|
$assert(attributes, 'attributes can not be null');
|
||||||
|
|
||||||
const { model } = TopicFeature._featuresMetadataById.filter((elem) => elem.id === type)[0];
|
const { model: Model } = TopicFeature._featuresMetadataById
|
||||||
// eslint-disable-next-line new-cap
|
.filter((elem) => elem.id === type)[0];
|
||||||
return new model(attributes);
|
return new Model(attributes);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -83,9 +83,9 @@ const TopicFeature = {
|
|||||||
$assert(topic, 'topic can not be null');
|
$assert(topic, 'topic can not be null');
|
||||||
$assert(model, 'model can not be null');
|
$assert(model, 'model can not be null');
|
||||||
|
|
||||||
const { icon } = TopicFeature._featuresMetadataById.filter((elem) => elem.id === model.getType())[0];
|
const { icon: Icon } = TopicFeature._featuresMetadataById
|
||||||
// eslint-disable-next-line new-cap
|
.filter((elem) => elem.id === model.getType())[0];
|
||||||
return new icon(topic, model, readOnly);
|
return new Icon(topic, model, readOnly);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -105,8 +105,8 @@ class Workspace {
|
|||||||
|
|
||||||
// View port coords ...
|
// View port coords ...
|
||||||
if (this._viewPort) {
|
if (this._viewPort) {
|
||||||
this._viewPort.width = this._viewPort.width * zoom;
|
this._viewPort.width *= zoom;
|
||||||
this._viewPort.height = this._viewPort.height * zoom;
|
this._viewPort.height *= zoom;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Center topic....
|
// Center topic....
|
||||||
@ -166,8 +166,8 @@ class Workspace {
|
|||||||
const originalCoordOrigin = workspace.getCoordOrigin();
|
const originalCoordOrigin = workspace.getCoordOrigin();
|
||||||
|
|
||||||
let wasDragged = false;
|
let wasDragged = false;
|
||||||
workspace._mouseMoveListener = function _mouseMoveListener(event) {
|
workspace._mouseMoveListener = (mouseMoveEvent) => {
|
||||||
const currentMousePosition = screenManager.getWorkspaceMousePosition(event);
|
const currentMousePosition = screenManager.getWorkspaceMousePosition(mouseMoveEvent);
|
||||||
|
|
||||||
const offsetX = currentMousePosition.x - mouseDownPosition.x;
|
const offsetX = currentMousePosition.x - mouseDownPosition.x;
|
||||||
const coordOriginX = -offsetX + originalCoordOrigin.x;
|
const coordOriginX = -offsetX + originalCoordOrigin.x;
|
||||||
@ -183,7 +183,7 @@ class Workspace {
|
|||||||
} else {
|
} else {
|
||||||
window.document.body.style.cursor = 'move';
|
window.document.body.style.cursor = 'move';
|
||||||
}
|
}
|
||||||
event.preventDefault();
|
mouseMoveEvent.preventDefault();
|
||||||
|
|
||||||
// Fire drag event ...
|
// Fire drag event ...
|
||||||
screenManager.fireEvent('update');
|
screenManager.fireEvent('update');
|
||||||
@ -192,7 +192,7 @@ class Workspace {
|
|||||||
screenManager.addEvent('mousemove', workspace._mouseMoveListener);
|
screenManager.addEvent('mousemove', workspace._mouseMoveListener);
|
||||||
|
|
||||||
// Register mouse up listeners ...
|
// Register mouse up listeners ...
|
||||||
workspace._mouseUpListener = function mouseUpListener() {
|
workspace._mouseUpListener = () => {
|
||||||
screenManager.removeEvent('mousemove', workspace._mouseMoveListener);
|
screenManager.removeEvent('mousemove', workspace._mouseMoveListener);
|
||||||
screenManager.removeEvent('mouseup', workspace._mouseUpListener);
|
screenManager.removeEvent('mouseup', workspace._mouseUpListener);
|
||||||
workspace._mouseUpListener = null;
|
workspace._mouseUpListener = null;
|
||||||
|
@ -53,7 +53,9 @@ class DeleteCommand extends Command {
|
|||||||
|
|
||||||
// Delete relationships
|
// Delete relationships
|
||||||
const relationships = this._collectInDepthRelationships(topic);
|
const relationships = this._collectInDepthRelationships(topic);
|
||||||
this._deletedRelModel = this._deletedRelModel.concat(relationships.map((rel) => rel.getModel().clone()));
|
this._deletedRelModel = this._deletedRelModel.concat(
|
||||||
|
relationships.map((rel) => rel.getModel().clone()),
|
||||||
|
);
|
||||||
|
|
||||||
relationships.forEach((relationship) => {
|
relationships.forEach((relationship) => {
|
||||||
commandContext.deleteRelationship(relationship);
|
commandContext.deleteRelationship(relationship);
|
||||||
@ -162,7 +164,8 @@ class DeleteCommand extends Command {
|
|||||||
// Filter for unique ...
|
// Filter for unique ...
|
||||||
result = result.sort((a, b) => a.getModel().getId() - b.getModel().getId());
|
result = result.sort((a, b) => a.getModel().getId() - b.getModel().getId());
|
||||||
const ret = [result[0]];
|
const ret = [result[0]];
|
||||||
for (let i = 1; i < result.length; i++) { // start loop at 1 as element 0 can never be a duplicate
|
// start loop at 1 as element 0 can never be a duplicate
|
||||||
|
for (let i = 1; i < result.length; i++) {
|
||||||
if (result[i - 1] !== result[i]) {
|
if (result[i - 1] !== result[i]) {
|
||||||
ret.push(result[i]);
|
ret.push(result[i]);
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ class DragTopicCommand extends Command {
|
|||||||
* @constructs
|
* @constructs
|
||||||
* @param {String} topicId id of the topic to drag
|
* @param {String} topicId id of the topic to drag
|
||||||
* @param {Object} position
|
* @param {Object} position
|
||||||
* @param {Number} order the order property (children of one node are displayed in order from 0 to n)
|
* @param {Number} order the order property (children are displayed in order from 0 to n)
|
||||||
* @param {mindplot.Topic} parentTopic the topic to be made the dragged topic's new parent
|
* @param {mindplot.Topic} parentTopic the topic to be made the dragged topic's new parent
|
||||||
* @extends mindplot.Command
|
* @extends mindplot.Command
|
||||||
*/
|
*/
|
||||||
|
@ -50,11 +50,12 @@ class GenericFunctionCommand extends Command {
|
|||||||
try {
|
try {
|
||||||
topics = commandContext.findTopics(this._topicsId);
|
topics = commandContext.findTopics(this._topicsId);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (this._commandFunc.commandType != 'changeTextToTopic') {
|
if (this._commandFunc.commandType !== 'changeTextToTopic') {
|
||||||
// Workaround: For some reason, there is a combination of events that involves
|
// Workaround: For some reason, there is a combination of events that involves
|
||||||
// making some modification and firing out of focus event. This is causing
|
// making some modification and firing out of focus event. This is causing
|
||||||
// that a remove node try to be removed. In some other life, I will come with the solution.
|
// that a remove node try to be removed.
|
||||||
// Almost aways occurs with IE9. I could be related with some change of order in sets o something similar.
|
// In some other life, I will come with the solution. Almost aways occurs with IE9.
|
||||||
|
// I could be related with some change of order in sets o something similar.
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
/* eslint-disable camelcase */
|
||||||
/*
|
/*
|
||||||
* Copyright [2015] [wisemapping]
|
* Copyright [2015] [wisemapping]
|
||||||
*
|
*
|
||||||
|
@ -34,7 +34,8 @@ class AbstractBasicSorter extends ChildrenSorterStrategy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_computeChildrenHeight(treeSet, node, heightCache) {
|
_computeChildrenHeight(treeSet, node, heightCache) {
|
||||||
const height = node.getSize().height + this._getVerticalPadding() * 2; // 2* Top and down padding;
|
// 2* Top and down padding;
|
||||||
|
const height = node.getSize().height + this._getVerticalPadding() * 2;
|
||||||
|
|
||||||
let result;
|
let result;
|
||||||
const children = treeSet.getChildren(node);
|
const children = treeSet.getChildren(node);
|
||||||
@ -51,6 +52,7 @@ class AbstractBasicSorter extends ChildrenSorterStrategy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (heightCache) {
|
if (heightCache) {
|
||||||
|
// eslint-disable-next-line no-param-reassign
|
||||||
heightCache[node.getId()] = result;
|
heightCache[node.getId()] = result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,14 +42,16 @@ class BalancedSorter extends AbstractBasicSorter {
|
|||||||
+ node.getSize().width / 2
|
+ node.getSize().width / 2
|
||||||
+ BalancedSorter.INTERNODE_HORIZONTAL_PADDING);
|
+ BalancedSorter.INTERNODE_HORIZONTAL_PADDING);
|
||||||
|
|
||||||
const xPos = direction > 0
|
let xPos;
|
||||||
? position.x >= limitXPos
|
if (direction > 0) {
|
||||||
? position.x
|
xPos = position.x >= limitXPos
|
||||||
: limitXPos
|
|
||||||
: position.x <= limitXPos
|
|
||||||
? position.x
|
? position.x
|
||||||
: limitXPos;
|
: limitXPos;
|
||||||
|
} else {
|
||||||
|
xPos = position.x <= limitXPos
|
||||||
|
? position.x
|
||||||
|
: limitXPos;
|
||||||
|
}
|
||||||
return [0, { x: xPos, y: position.y }];
|
return [0, { x: xPos, y: position.y }];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,17 +82,21 @@ class BalancedSorter extends AbstractBasicSorter {
|
|||||||
left = this._getChildrenForOrder(parent, graph, 1);
|
left = this._getChildrenForOrder(parent, graph, 1);
|
||||||
}
|
}
|
||||||
// Filter nodes on one side..
|
// Filter nodes on one side..
|
||||||
const order = position
|
let order;
|
||||||
? position.x > rootNode.getPosition().x
|
if (position) {
|
||||||
|
order = position.x > rootNode.getPosition().x
|
||||||
? 0
|
? 0
|
||||||
: 1
|
: 1;
|
||||||
: right.length - left.length > 0
|
} else {
|
||||||
|
order = right.length - left.length > 0
|
||||||
? 1
|
? 1
|
||||||
: 0;
|
: 0;
|
||||||
|
}
|
||||||
const direction = order % 2 === 0 ? 1 : -1;
|
const direction = order % 2 === 0 ? 1 : -1;
|
||||||
|
|
||||||
// Exclude the dragged node (if set)
|
// Exclude the dragged node (if set)
|
||||||
const children = this._getChildrenForOrder(parent, graph, order).filter((child) => child !== node);
|
const children = this._getChildrenForOrder(parent, graph, order)
|
||||||
|
.filter((child) => child !== node);
|
||||||
|
|
||||||
// No children?
|
// No children?
|
||||||
if (children.length === 0) {
|
if (children.length === 0) {
|
||||||
@ -110,10 +116,10 @@ class BalancedSorter extends AbstractBasicSorter {
|
|||||||
// Try to fit within ...
|
// Try to fit within ...
|
||||||
let result = null;
|
let result = null;
|
||||||
const last = children[children.length - 1];
|
const last = children[children.length - 1];
|
||||||
position = position || { x: last.getPosition().x, y: last.getPosition().y + 1 };
|
const newestPosition = position || { x: last.getPosition().x, y: last.getPosition().y + 1 };
|
||||||
children.forEach((child, index) => {
|
children.forEach((child, index) => {
|
||||||
const cpos = child.getPosition();
|
const cpos = child.getPosition();
|
||||||
if (position.y > cpos.y) {
|
if (newestPosition.y > cpos.y) {
|
||||||
const yOffset = child === last
|
const yOffset = child === last
|
||||||
? child.getSize().height + BalancedSorter.INTERNODE_VERTICAL_PADDING * 2
|
? child.getSize().height + BalancedSorter.INTERNODE_VERTICAL_PADDING * 2
|
||||||
: (children[index + 1].getPosition().y - child.getPosition().y) / 2;
|
: (children[index + 1].getPosition().y - child.getPosition().y) / 2;
|
||||||
@ -205,7 +211,8 @@ class BalancedSorter extends AbstractBasicSorter {
|
|||||||
order: child.getOrder(),
|
order: child.getOrder(),
|
||||||
width: child.getSize().width,
|
width: child.getSize().width,
|
||||||
height: this._computeChildrenHeight(treeSet, child),
|
height: this._computeChildrenHeight(treeSet, child),
|
||||||
})).reverse();
|
}))
|
||||||
|
.reverse();
|
||||||
|
|
||||||
// Compute the center of the branch ...
|
// Compute the center of the branch ...
|
||||||
let totalPHeight = 0;
|
let totalPHeight = 0;
|
||||||
@ -289,7 +296,8 @@ class BalancedSorter extends AbstractBasicSorter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_getChildrenForOrder(parent, graph, order) {
|
_getChildrenForOrder(parent, graph, order) {
|
||||||
return this._getSortedChildren(graph, parent).filter((child) => child.getOrder() % 2 === order % 2);
|
return this._getSortedChildren(graph, parent)
|
||||||
|
.filter((child) => child.getOrder() % 2 === order % 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
_getVerticalPadding() {
|
_getVerticalPadding() {
|
||||||
|
@ -37,7 +37,9 @@ class EventBusDispatcher {
|
|||||||
EventBus.instance.addEvent(EventBus.events.NodeRemoved, this._nodeRemoved.bind(this));
|
EventBus.instance.addEvent(EventBus.events.NodeRemoved, this._nodeRemoved.bind(this));
|
||||||
EventBus.instance.addEvent(EventBus.events.NodeResizeEvent, this._nodeResizeEvent.bind(this));
|
EventBus.instance.addEvent(EventBus.events.NodeResizeEvent, this._nodeResizeEvent.bind(this));
|
||||||
EventBus.instance.addEvent(EventBus.events.NodeMoveEvent, this._nodeMoveEvent.bind(this));
|
EventBus.instance.addEvent(EventBus.events.NodeMoveEvent, this._nodeMoveEvent.bind(this));
|
||||||
EventBus.instance.addEvent(EventBus.events.NodeDisconnectEvent, this._nodeDisconnectEvent.bind(this));
|
EventBus.instance.addEvent(
|
||||||
|
EventBus.events.NodeDisconnectEvent, this._nodeDisconnectEvent.bind(this),
|
||||||
|
);
|
||||||
EventBus.instance.addEvent(EventBus.events.NodeConnectEvent, this._nodeConnectEvent.bind(this));
|
EventBus.instance.addEvent(EventBus.events.NodeConnectEvent, this._nodeConnectEvent.bind(this));
|
||||||
EventBus.instance.addEvent(EventBus.events.NodeShrinkEvent, this._nodeShrinkEvent.bind(this));
|
EventBus.instance.addEvent(EventBus.events.NodeShrinkEvent, this._nodeShrinkEvent.bind(this));
|
||||||
EventBus.instance.addEvent(EventBus.events.DoLayout, this._doLayout.bind(this));
|
EventBus.instance.addEvent(EventBus.events.DoLayout, this._doLayout.bind(this));
|
||||||
@ -56,7 +58,9 @@ class EventBusDispatcher {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_nodeConnectEvent(args) {
|
_nodeConnectEvent(args) {
|
||||||
this._layoutManager.connectNode(args.parentNode.getId(), args.childNode.getId(), args.childNode.getOrder());
|
this._layoutManager.connectNode(
|
||||||
|
args.parentNode.getId(), args.childNode.getId(), args.childNode.getOrder(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
_nodeShrinkEvent(node) {
|
_nodeShrinkEvent(node) {
|
||||||
|
@ -40,14 +40,14 @@ class GridSorter extends AbstractBasicSorter {
|
|||||||
// Calculate the offsets ...
|
// Calculate the offsets ...
|
||||||
const result = {};
|
const result = {};
|
||||||
for (let i = 0; i < heights.length; i++) {
|
for (let i = 0; i < heights.length; i++) {
|
||||||
const even = i % 2 == 0 ? 1 : -1;
|
const even = i % 2 === 0 ? 1 : -1;
|
||||||
|
|
||||||
const zeroHeight = i == 0 ? 0 : heights[0].height / 2 * even;
|
const zeroHeight = i === 0 ? 0 : ((heights[0].height / 2) * even);
|
||||||
let middleHeight = 0;
|
let middleHeight = 0;
|
||||||
for (let j = i - 2; j > 0; j -= 2) {
|
for (let j = i - 2; j > 0; j -= 2) {
|
||||||
middleHeight += heights[j].height * even;
|
middleHeight += heights[j].height * even;
|
||||||
}
|
}
|
||||||
const finalHeight = i == 0 ? 0 : heights[i].height / 2 * even;
|
const finalHeight = i === 0 ? 0 : ((heights[i].height / 2) * even);
|
||||||
|
|
||||||
const yOffset = zeroHeight + middleHeight + finalHeight;
|
const yOffset = zeroHeight + middleHeight + finalHeight;
|
||||||
const xOffset = node.getSize().width + GridSorter.GRID_HORIZONTAR_SIZE;
|
const xOffset = node.getSize().width + GridSorter.GRID_HORIZONTAR_SIZE;
|
||||||
|
@ -90,7 +90,9 @@ class LayoutManager extends Events {
|
|||||||
const node = this._treeSet.find(id);
|
const node = this._treeSet.find(id);
|
||||||
// @Todo: this should not be here. This is broking the isolated node support...
|
// @Todo: this should not be here. This is broking the isolated node support...
|
||||||
// node.setFree(true);
|
// node.setFree(true);
|
||||||
// node.setFreeDisplacement({x:position.x - node.getPosition().x, y:position.y - node.getPosition().y});
|
// node.setFreeDisplacement(
|
||||||
|
// {x:position.x - node.getPosition().x, y:position.y - node.getPosition().y}
|
||||||
|
// );
|
||||||
node.setPosition(position);
|
node.setPosition(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -193,14 +195,13 @@ class LayoutManager extends Events {
|
|||||||
* @throws will throw an error if containerId is null or undefined
|
* @throws will throw an error if containerId is null or undefined
|
||||||
* @return canvas
|
* @return canvas
|
||||||
*/
|
*/
|
||||||
plot(containerId, size) {
|
plot(containerId, size = { width: 200, height: 200 }) {
|
||||||
// this method is only used from tests that include Raphael
|
// this method is only used from tests that include Raphael
|
||||||
if (!global.Raphael) {
|
if (!global.Raphael) {
|
||||||
console.warn('Raphael.js not found, exiting plot()');
|
console.warn('Raphael.js not found, exiting plot()');
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
$assert(containerId, 'containerId cannot be null');
|
$assert(containerId, 'containerId cannot be null');
|
||||||
size = size || { width: 200, height: 200 };
|
|
||||||
const squaresize = 10;
|
const squaresize = 10;
|
||||||
const canvas = global.Raphael(containerId, size.width, size.height);
|
const canvas = global.Raphael(containerId, size.width, size.height);
|
||||||
canvas.drawGrid(
|
canvas.drawGrid(
|
||||||
@ -243,11 +244,9 @@ class LayoutManager extends Events {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_collectChanges(nodes) {
|
_collectChanges(nodes) {
|
||||||
if (!nodes) {
|
const nodesToCollect = nodes || this._treeSet.getTreeRoots();
|
||||||
nodes = this._treeSet.getTreeRoots();
|
|
||||||
}
|
|
||||||
|
|
||||||
nodes.forEach(((node) => {
|
nodesToCollect.forEach(((node) => {
|
||||||
if (node.hasOrderChanged() || node.hasPositionChanged()) {
|
if (node.hasOrderChanged() || node.hasPositionChanged()) {
|
||||||
// Find or create a event ...
|
// Find or create a event ...
|
||||||
const id = node.getId();
|
const id = node.getId();
|
||||||
|
@ -101,6 +101,7 @@ class OriginalLayout {
|
|||||||
|
|
||||||
const parentHeightChanged = $defined(parent) ? parent._heightChanged : false;
|
const parentHeightChanged = $defined(parent) ? parent._heightChanged : false;
|
||||||
const heightChanged = node._branchHeight !== newBranchHeight;
|
const heightChanged = node._branchHeight !== newBranchHeight;
|
||||||
|
// eslint-disable-next-line no-param-reassign
|
||||||
node._heightChanged = heightChanged || parentHeightChanged;
|
node._heightChanged = heightChanged || parentHeightChanged;
|
||||||
|
|
||||||
if (childrenOrderMoved || childrenSizeChanged || heightChanged || parentHeightChanged) {
|
if (childrenOrderMoved || childrenSizeChanged || heightChanged || parentHeightChanged) {
|
||||||
@ -139,6 +140,7 @@ class OriginalLayout {
|
|||||||
me._treeSet.updateBranchPosition(child, newPos);
|
me._treeSet.updateBranchPosition(child, newPos);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// eslint-disable-next-line no-param-reassign
|
||||||
node._branchHeight = newBranchHeight;
|
node._branchHeight = newBranchHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -212,9 +214,9 @@ class OriginalLayout {
|
|||||||
);
|
);
|
||||||
|
|
||||||
siblingsToShift.forEach(((sibling) => {
|
siblingsToShift.forEach(((sibling) => {
|
||||||
const overlappingOccurs = shiftedBranches
|
const overlappingOccurs = shiftedBranches.some(
|
||||||
// eslint-disable-next-line max-len
|
((shiftedBranch) => OriginalLayout._branchesOverlap(shiftedBranch, sibling, heightById)),
|
||||||
.some(((shiftedBranch) => OriginalLayout._branchesOverlap(shiftedBranch, sibling, heightById)));
|
);
|
||||||
|
|
||||||
if (!sibling.isFree() || overlappingOccurs) {
|
if (!sibling.isFree() || overlappingOccurs) {
|
||||||
const sAmount = node.getFreeDisplacement().y;
|
const sAmount = node.getFreeDisplacement().y;
|
||||||
|
@ -37,6 +37,7 @@ class RootedTreeSet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_decodate(node) {
|
_decodate(node) {
|
||||||
|
// eslint-disable-next-line no-param-reassign
|
||||||
node._children = [];
|
node._children = [];
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
@ -112,7 +113,7 @@ class RootedTreeSet {
|
|||||||
* @throws will throw an error if node cannot be found
|
* @throws will throw an error if node cannot be found
|
||||||
* @return node
|
* @return node
|
||||||
*/
|
*/
|
||||||
find(id, validate) {
|
find(id, validate = true) {
|
||||||
$assert($defined(id), 'id can not be null');
|
$assert($defined(id), 'id can not be null');
|
||||||
|
|
||||||
const graphs = this._rootNodes;
|
const graphs = this._rootNodes;
|
||||||
@ -124,7 +125,6 @@ class RootedTreeSet {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
validate = !$defined(validate) ? true : validate;
|
|
||||||
$assert(
|
$assert(
|
||||||
validate ? result : true,
|
validate ? result : true,
|
||||||
`node could not be found id:${id}\n,RootedTreeSet${this.dump()}`,
|
`node could not be found id:${id}\n,RootedTreeSet${this.dump()}`,
|
||||||
@ -299,11 +299,14 @@ class RootedTreeSet {
|
|||||||
`${node.getId()}[${order}]`,
|
`${node.getId()}[${order}]`,
|
||||||
);
|
);
|
||||||
text.attr('fill', '#FFF');
|
text.attr('fill', '#FFF');
|
||||||
const fillColor = this._rootNodes.includes(node)
|
let fillColor;
|
||||||
? '#000'
|
if (this._rootNodes.includes(node)) {
|
||||||
: node.isFree()
|
fillColor = '#000';
|
||||||
|
} else {
|
||||||
|
fillColor = node.isFree()
|
||||||
? '#abc'
|
? '#abc'
|
||||||
: '#c00';
|
: '#c00';
|
||||||
|
}
|
||||||
rect.attr('fill', fillColor);
|
rect.attr('fill', fillColor);
|
||||||
|
|
||||||
const rectPosition = {
|
const rectPosition = {
|
||||||
@ -397,10 +400,11 @@ class RootedTreeSet {
|
|||||||
/**
|
/**
|
||||||
* @param node
|
* @param node
|
||||||
* @param yOffset
|
* @param yOffset
|
||||||
* @return siblings in the offset (vertical) direction, i.e. with lower or higher order, respectively
|
* @return siblings in the offset (vertical) direction, i.e. with lower or higher order
|
||||||
*/
|
*/
|
||||||
getSiblingsInVerticalDirection(node, yOffset) {
|
getSiblingsInVerticalDirection(node, yOffset) {
|
||||||
// siblings with lower or higher order, depending on the direction of the offset and on the same side as their parent
|
// siblings with lower or higher order
|
||||||
|
// (depending on the direction of the offset and on the same side as their parent)
|
||||||
const parent = this.getParent(node);
|
const parent = this.getParent(node);
|
||||||
const siblings = this.getSiblings(node).filter((sibling) => {
|
const siblings = this.getSiblings(node).filter((sibling) => {
|
||||||
const sameSide = node.getPosition().x > parent.getPosition().x
|
const sameSide = node.getPosition().x > parent.getPosition().x
|
||||||
@ -429,7 +433,8 @@ class RootedTreeSet {
|
|||||||
// direct descendants of the root that do not contain the node and are on the same side
|
// direct descendants of the root that do not contain the node and are on the same side
|
||||||
// and on the direction of the offset
|
// and on the direction of the offset
|
||||||
const rootNode = this.getRootNode(node);
|
const rootNode = this.getRootNode(node);
|
||||||
const branches = this.getChildren(rootNode).filter(((child) => this._find(node.getId(), child)));
|
const branches = this.getChildren(rootNode)
|
||||||
|
.filter(((child) => this._find(node.getId(), child)));
|
||||||
|
|
||||||
const branch = branches[0];
|
const branch = branches[0];
|
||||||
const rootDescendants = this.getSiblings(branch).filter((sibling) => {
|
const rootDescendants = this.getSiblings(branch).filter((sibling) => {
|
||||||
|
@ -49,15 +49,16 @@ class SymmetricSorter extends AbstractBasicSorter {
|
|||||||
+ node.getSize().width / 2
|
+ node.getSize().width / 2
|
||||||
+ SymmetricSorter.INTERNODE_HORIZONTAL_PADDING);
|
+ SymmetricSorter.INTERNODE_HORIZONTAL_PADDING);
|
||||||
|
|
||||||
// eslint-disable-next-line no-nested-ternary
|
let xPos;
|
||||||
const xPos = direction > 0
|
if (direction > 0) {
|
||||||
? position.x >= limitXPos
|
xPos = position.x >= limitXPos
|
||||||
? position.x
|
|
||||||
: limitXPos
|
|
||||||
: position.x <= limitXPos
|
|
||||||
? position.x
|
? position.x
|
||||||
: limitXPos;
|
: limitXPos;
|
||||||
|
} else {
|
||||||
|
xPos = position.x <= limitXPos
|
||||||
|
? position.x
|
||||||
|
: limitXPos;
|
||||||
|
}
|
||||||
return [0, { x: xPos, y: position.y }];
|
return [0, { x: xPos, y: position.y }];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,7 +98,9 @@ class SymmetricSorter extends AbstractBasicSorter {
|
|||||||
if (parentChildren.length === 0) {
|
if (parentChildren.length === 0) {
|
||||||
// Fit as a child of the parent node...
|
// Fit as a child of the parent node...
|
||||||
const result = {
|
const result = {
|
||||||
x: parent.getPosition().x + positionDirection * (parent.getSize().width + SymmetricSorter.INTERNODE_HORIZONTAL_PADDING),
|
x: parent.getPosition().x
|
||||||
|
+ positionDirection
|
||||||
|
* (parent.getSize().width + SymmetricSorter.INTERNODE_HORIZONTAL_PADDING),
|
||||||
y: parent.getPosition().y,
|
y: parent.getPosition().y,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -97,13 +97,13 @@ class BootstrapDialog extends Options {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onAcceptClick(event) {
|
onAcceptClick(event) {
|
||||||
throw 'Unsupported operation';
|
throw new Error('Unsupported operation');
|
||||||
}
|
}
|
||||||
|
|
||||||
onDialogShown() {}
|
onDialogShown() {}
|
||||||
|
|
||||||
onRemoveClick(event) {
|
onRemoveClick(event) {
|
||||||
throw 'Unsupported operation';
|
throw new Error('Unsupported operation');
|
||||||
}
|
}
|
||||||
|
|
||||||
show() {
|
show() {
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
import $ from 'jquery';
|
import $ from 'jquery';
|
||||||
|
import { $defined } from '@wisemapping/core-js';
|
||||||
import BootstrapDialog from './BootstrapDialog';
|
import BootstrapDialog from './BootstrapDialog';
|
||||||
|
|
||||||
class BootstrapDialogRequest extends BootstrapDialog {
|
class BootstrapDialogRequest extends BootstrapDialog {
|
||||||
@ -48,9 +49,11 @@ class BootstrapDialogRequest extends BootstrapDialog {
|
|||||||
|
|
||||||
this._native.find('.modal-body').load(url, () => {
|
this._native.find('.modal-body').load(url, () => {
|
||||||
me.acceptButton.unbind('click').click(() => {
|
me.acceptButton.unbind('click').click(() => {
|
||||||
submitDialogForm();
|
if ($defined(global.submitDialogForm) && typeof (global.submitDialogForm) === 'function') {
|
||||||
|
global.submitDialogForm();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
me._native.on('hidden.bs.modal', () => {
|
me._native.on('hidden.bs.modal', function onModalHide() {
|
||||||
$(this).remove();
|
$(this).remove();
|
||||||
});
|
});
|
||||||
me.show();
|
me.show();
|
||||||
@ -58,8 +61,8 @@ class BootstrapDialogRequest extends BootstrapDialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onDialogShown() {
|
onDialogShown() {
|
||||||
if (onDialogShown instanceof Function) {
|
if ($defined(global.onDialogShown) && typeof (global.onDialogShown) === 'function') {
|
||||||
onDialogShown();
|
global.onDialogShown();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,9 @@
|
|||||||
*/
|
*/
|
||||||
import { $assert, $defined } from '@wisemapping/core-js';
|
import { $assert, $defined } from '@wisemapping/core-js';
|
||||||
|
|
||||||
|
// regex taken from https://stackoverflow.com/a/34763398/58128
|
||||||
|
const parseJsObject = (str) => JSON.parse(str.replace(/(['"])?([a-z0-9A-Z_]+)(['"])?:/g, '"$2": '));
|
||||||
|
|
||||||
class INodeModel {
|
class INodeModel {
|
||||||
constructor(mindmap) {
|
constructor(mindmap) {
|
||||||
$assert(mindmap && mindmap.getBranches, 'mindmap can not be null');
|
$assert(mindmap && mindmap.getBranches, 'mindmap can not be null');
|
||||||
@ -31,16 +34,17 @@ class INodeModel {
|
|||||||
|
|
||||||
/** */
|
/** */
|
||||||
setId(id) {
|
setId(id) {
|
||||||
if ($defined(id) && id > INodeModel._uuid) {
|
if (!$defined(id)) {
|
||||||
|
const newId = INodeModel._nextUUID();
|
||||||
|
this.putProperty('id', newId);
|
||||||
|
} else {
|
||||||
|
if (id > INodeModel._uuid) {
|
||||||
$assert(Number.isFinite(id));
|
$assert(Number.isFinite(id));
|
||||||
INodeModel._uuid = id;
|
INodeModel._uuid = id;
|
||||||
}
|
}
|
||||||
if (!$defined(id)) {
|
|
||||||
id = INodeModel._nextUUID();
|
|
||||||
}
|
|
||||||
|
|
||||||
this.putProperty('id', id);
|
this.putProperty('id', id);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** */
|
/** */
|
||||||
getType() {
|
getType() {
|
||||||
@ -74,7 +78,7 @@ class INodeModel {
|
|||||||
const value = this.getProperty('position');
|
const value = this.getProperty('position');
|
||||||
let result = null;
|
let result = null;
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
result = eval(`(${value})`);
|
result = parseJsObject(value);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -89,7 +93,7 @@ class INodeModel {
|
|||||||
const value = this.getProperty('imageSize');
|
const value = this.getProperty('imageSize');
|
||||||
let result = null;
|
let result = null;
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
result = eval(`(${value})`);
|
result = parseJsObject(value);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -121,8 +121,7 @@ class Mindmap extends IMindmap {
|
|||||||
* @param id
|
* @param id
|
||||||
* @return the node model created
|
* @return the node model created
|
||||||
*/
|
*/
|
||||||
createNode(type, id) {
|
createNode(type = INodeModel.MAIN_TOPIC_TYPE, id) {
|
||||||
type = !$defined(type) ? INodeModel.MAIN_TOPIC_TYPE : type;
|
|
||||||
return new NodeModel(type, this, id);
|
return new NodeModel(type, this, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,6 +152,7 @@ class NodeModel extends INodeModel {
|
|||||||
append(child) {
|
append(child) {
|
||||||
$assert(child && child.isNodeModel(), 'Only NodeModel can be appended to Mindmap object');
|
$assert(child && child.isNodeModel(), 'Only NodeModel can be appended to Mindmap object');
|
||||||
this._children.push(child);
|
this._children.push(child);
|
||||||
|
// eslint-disable-next-line no-param-reassign
|
||||||
child._parent = this;
|
child._parent = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -162,6 +163,7 @@ class NodeModel extends INodeModel {
|
|||||||
removeChild(child) {
|
removeChild(child) {
|
||||||
$assert(child && child.isNodeModel(), 'Only NodeModel can be appended to Mindmap object.');
|
$assert(child && child.isNodeModel(), 'Only NodeModel can be appended to Mindmap object.');
|
||||||
this._children = this._children.filter((c) => c !== child);
|
this._children = this._children.filter((c) => c !== child);
|
||||||
|
// eslint-disable-next-line no-param-reassign
|
||||||
child._parent = null;
|
child._parent = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
* 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 { $defined } from '@wisemapping/core-js';
|
|
||||||
import ModelCodeName from './ModelCodeName';
|
import ModelCodeName from './ModelCodeName';
|
||||||
import Beta2PelaMigrator from './Beta2PelaMigrator';
|
import Beta2PelaMigrator from './Beta2PelaMigrator';
|
||||||
import Pela2TangoMigrator from './Pela2TangoMigrator';
|
import Pela2TangoMigrator from './Pela2TangoMigrator';
|
||||||
@ -33,15 +32,14 @@ const XMLSerializerFactory = {};
|
|||||||
* @return {mindplot.persistence.XMLSerializer_Beta|mindplot.persistence.XMLSerializer_Pela|
|
* @return {mindplot.persistence.XMLSerializer_Beta|mindplot.persistence.XMLSerializer_Pela|
|
||||||
* mindplot.persistence.XMLSerializer_Tango} serializer corresponding to the mindmap's version
|
* mindplot.persistence.XMLSerializer_Tango} serializer corresponding to the mindmap's version
|
||||||
*/
|
*/
|
||||||
XMLSerializerFactory.getSerializerFromMindmap = function getSerializerFromMindmap(mindmap) {
|
XMLSerializerFactory.getSerializerFromMindmap = (mindmap) => XMLSerializerFactory
|
||||||
return XMLSerializerFactory.getSerializer(mindmap.getVersion());
|
.getSerializer(mindmap.getVersion());
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param domDocument
|
* @param domDocument
|
||||||
* @return serializer corresponding to the mindmap's version
|
* @return serializer corresponding to the mindmap's version
|
||||||
*/
|
*/
|
||||||
XMLSerializerFactory.getSerializerFromDocument = function getSerializerFromDocument(domDocument) {
|
XMLSerializerFactory.getSerializerFromDocument = (domDocument) => {
|
||||||
const rootElem = domDocument.documentElement;
|
const rootElem = domDocument.documentElement;
|
||||||
return XMLSerializerFactory.getSerializer(rootElem.getAttribute('version'));
|
return XMLSerializerFactory.getSerializer(rootElem.getAttribute('version'));
|
||||||
};
|
};
|
||||||
@ -53,20 +51,17 @@ XMLSerializerFactory.getSerializerFromDocument = function getSerializerFromDocum
|
|||||||
* @param {String} version the version name
|
* @param {String} version the version name
|
||||||
* @return serializer
|
* @return serializer
|
||||||
*/
|
*/
|
||||||
XMLSerializerFactory.getSerializer = function getSerializer(version) {
|
XMLSerializerFactory.getSerializer = function getSerializer(version = ModelCodeName.BETA) {
|
||||||
if (!$defined(version)) {
|
|
||||||
version = ModelCodeName.BETA;
|
|
||||||
}
|
|
||||||
const codeNames = XMLSerializerFactory._codeNames;
|
const codeNames = XMLSerializerFactory._codeNames;
|
||||||
let found = false;
|
let found = false;
|
||||||
let serializer = null;
|
let serializer = null;
|
||||||
for (let i = 0; i < codeNames.length; i++) {
|
for (let i = 0; i < codeNames.length; i++) {
|
||||||
if (!found) {
|
if (!found) {
|
||||||
found = codeNames[i].codeName == version;
|
found = codeNames[i].codeName === version;
|
||||||
if (found) serializer = new (codeNames[i].serializer)();
|
if (found) serializer = new (codeNames[i].serializer)();
|
||||||
} else {
|
} else {
|
||||||
const { migrator } = codeNames[i];
|
const { migrator: Migrator } = codeNames[i];
|
||||||
serializer = new migrator(serializer);
|
serializer = new Migrator(serializer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,7 +157,9 @@ class XMLSerializer_Pela {
|
|||||||
const featureDom = document.createElement(featureType);
|
const featureDom = document.createElement(featureType);
|
||||||
const attributes = feature.getAttributes();
|
const attributes = feature.getAttributes();
|
||||||
|
|
||||||
for (const key in attributes) {
|
const attributesKeys = Object.keys(attributes);
|
||||||
|
for (let attrIndex = 0; attrIndex < attributesKeys.length; attrIndex++) {
|
||||||
|
const key = attributesKeys[attrIndex];
|
||||||
const value = attributes[key];
|
const value = attributes[key];
|
||||||
if (key === 'text') {
|
if (key === 'text') {
|
||||||
const cdata = document.createCDATASection(this.rmXmlInv(value));
|
const cdata = document.createCDATASection(this.rmXmlInv(value));
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
import { Point } from '@wisemapping/web2d';
|
import { Point } from '@wisemapping/web2d';
|
||||||
import { $assert, $defined } from '@wisemapping/core-js';
|
import { $assert, $defined } from '@wisemapping/core-js';
|
||||||
import { TopicShape } from '../model/INodeModel';
|
import { TopicShape } from '../model/INodeModel';
|
||||||
import { CONNECTOR_WIDTH } from '../TopicConfig';
|
import TopicConfig from '../TopicConfig';
|
||||||
|
|
||||||
const Shape = {
|
const Shape = {
|
||||||
isAtRight(sourcePoint, targetPoint) {
|
isAtRight(sourcePoint, targetPoint) {
|
||||||
@ -124,7 +124,7 @@ const Shape = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Move a little the position...
|
// Move a little the position...
|
||||||
const offset = CONNECTOR_WIDTH / 2;
|
const offset = TopicConfig.CONNECTOR_WIDTH / 2;
|
||||||
if (!isAtRight) {
|
if (!isAtRight) {
|
||||||
result.x += offset;
|
result.x += offset;
|
||||||
} else {
|
} else {
|
||||||
|
@ -31,12 +31,11 @@ class IconPanel extends ToolbarPaneItem {
|
|||||||
});
|
});
|
||||||
|
|
||||||
let count = 0;
|
let count = 0;
|
||||||
|
let familyContent;
|
||||||
for (let i = 0; i < ImageIcon.prototype.ICON_FAMILIES.length; i += 1) {
|
for (let i = 0; i < ImageIcon.prototype.ICON_FAMILIES.length; i += 1) {
|
||||||
const familyIcons = ImageIcon.prototype.ICON_FAMILIES[i].icons;
|
const familyIcons = ImageIcon.prototype.ICON_FAMILIES[i].icons;
|
||||||
for (let j = 0; j < familyIcons.length; j += 1) {
|
for (let j = 0; j < familyIcons.length; j += 1) {
|
||||||
// @TODO: This is a bug, for some reason is working because is a var. This must change to let.
|
if ((count % 12) === 0) {
|
||||||
var familyContent;
|
|
||||||
if ((count % 12) == 0) {
|
|
||||||
familyContent = $('<div></div>');
|
familyContent = $('<div></div>');
|
||||||
content.append(familyContent);
|
content.append(familyContent);
|
||||||
}
|
}
|
||||||
|
@ -115,7 +115,7 @@ class LinkEditor extends BootstrapDialog {
|
|||||||
* @return {Boolean} true if the url is valid
|
* @return {Boolean} true if the url is valid
|
||||||
*/
|
*/
|
||||||
checkURL(url) {
|
checkURL(url) {
|
||||||
const regex = /^(http|https|ftp):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/i;
|
const regex = /^(http|https|ftp):\/\/[a-z0-9]+([-.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/i;
|
||||||
return (regex.test(url));
|
return (regex.test(url));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
import $ from 'jquery';
|
import $ from 'jquery';
|
||||||
import { $defined } from '@wisemapping/core-js';
|
|
||||||
import { $msg } from '../Messages';
|
import { $msg } from '../Messages';
|
||||||
import BootstrapDialogRequest from '../libraries/bootstrap/BootstrapDialogRequest';
|
import BootstrapDialogRequest from '../libraries/bootstrap/BootstrapDialogRequest';
|
||||||
import IMenu from './IMenu';
|
import IMenu from './IMenu';
|
||||||
@ -29,11 +28,10 @@ import ToolbarItem from './ToolbarItem';
|
|||||||
import KeyboardShortcutTooltip from './KeyboardShortcutTooltip';
|
import KeyboardShortcutTooltip from './KeyboardShortcutTooltip';
|
||||||
|
|
||||||
class Menu extends IMenu {
|
class Menu extends IMenu {
|
||||||
constructor(designer, containerId, mapId, readOnly, baseUrl) {
|
constructor(designer, containerId, mapId, readOnly, baseUrl = '') {
|
||||||
super(designer, containerId, mapId);
|
super(designer, containerId, mapId);
|
||||||
const saveElem = $('#save');
|
const saveElem = $('#save');
|
||||||
|
|
||||||
baseUrl = !$defined(baseUrl) ? '' : baseUrl;
|
|
||||||
const widgetsBaseUrl = `${baseUrl}css/widget`;
|
const widgetsBaseUrl = `${baseUrl}css/widget`;
|
||||||
|
|
||||||
// Stop event propagation ...
|
// Stop event propagation ...
|
||||||
@ -225,8 +223,8 @@ class Menu extends IMenu {
|
|||||||
|
|
||||||
this._addButton('print', false, false, () => {
|
this._addButton('print', false, false, () => {
|
||||||
me.save(saveElem, designer, false);
|
me.save(saveElem, designer, false);
|
||||||
const url = window.location.href.substring(0, window.location.href.lastIndexOf('c/maps/'));
|
const urlPrefix = window.location.href.substring(0, window.location.href.lastIndexOf('c/maps/'));
|
||||||
window.open(`${url}c/maps/${mapId}/print`);
|
window.open(`${urlPrefix}c/maps/${mapId}/print`);
|
||||||
});
|
});
|
||||||
|
|
||||||
Menu._registerTooltip('print', $msg('PRINT'));
|
Menu._registerTooltip('print', $msg('PRINT'));
|
||||||
@ -398,8 +396,8 @@ class Menu extends IMenu {
|
|||||||
if (videoElem) {
|
if (videoElem) {
|
||||||
const width = 900;
|
const width = 900;
|
||||||
const height = 500;
|
const height = 500;
|
||||||
const left = (screen.width / 2) - (width / 2);
|
const left = (window.screen.width / 2) - (width / 2);
|
||||||
const top = (screen.height / 2) - (height / 2);
|
const top = (window.screen.height / 2) - (height / 2);
|
||||||
|
|
||||||
videoElem.bind('click', (event) => {
|
videoElem.bind('click', (event) => {
|
||||||
window.open('https://www.youtube.com/tv?vq=medium#/watch?v=rKxZwNKs9cE', '_blank', `toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=yes, copyhistory=no, width=${width}, height=${height}, top=${top}, left=${left}`);
|
window.open('https://www.youtube.com/tv?vq=medium#/watch?v=rKxZwNKs9cE', '_blank', `toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=yes, copyhistory=no, width=${width}, height=${height}, top=${top}, left=${left}`);
|
||||||
@ -476,11 +474,14 @@ class Menu extends IMenu {
|
|||||||
if ($(`#${buttonId}`)) {
|
if ($(`#${buttonId}`)) {
|
||||||
let tooltip = text;
|
let tooltip = text;
|
||||||
if (shortcut) {
|
if (shortcut) {
|
||||||
shortcut = navigator.appVersion.indexOf('Mac') !== -1 ? shortcut.replace('meta+', '⌘') : shortcut.replace('meta+', 'ctrl+');
|
const platformedShortcut = navigator.appVersion.indexOf('Mac') !== -1
|
||||||
tooltip = `${tooltip} (${shortcut})`;
|
? shortcut.replace('meta+', '⌘')
|
||||||
|
: shortcut.replace('meta+', 'ctrl+');
|
||||||
|
tooltip = `${tooltip} (${platformedShortcut})`;
|
||||||
}
|
}
|
||||||
return new KeyboardShortcutTooltip($(`#${buttonId}`), tooltip);
|
return new KeyboardShortcutTooltip($(`#${buttonId}`), tooltip);
|
||||||
}
|
}
|
||||||
|
return undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ module.exports = {
|
|||||||
module: {
|
module: {
|
||||||
rules: [
|
rules: [
|
||||||
{
|
{
|
||||||
use: ['babel-loader', 'eslint-loader'],
|
use: ['babel-loader'],
|
||||||
test: /.(js$)/,
|
test: /.(js$)/,
|
||||||
exclude: [
|
exclude: [
|
||||||
/node_modules/,
|
/node_modules/,
|
||||||
|
@ -37,7 +37,6 @@
|
|||||||
"eslint-config-airbnb-base": "^14.2.1",
|
"eslint-config-airbnb-base": "^14.2.1",
|
||||||
"eslint-config-standard": "^16.0.3",
|
"eslint-config-standard": "^16.0.3",
|
||||||
"eslint-import-resolver-webpack": "^0.13.2",
|
"eslint-import-resolver-webpack": "^0.13.2",
|
||||||
"eslint-loader": "^4.0.2",
|
|
||||||
"eslint-plugin-cypress": "^2.12.1",
|
"eslint-plugin-cypress": "^2.12.1",
|
||||||
"eslint-plugin-import": "^2.25.3",
|
"eslint-plugin-import": "^2.25.3",
|
||||||
"nodemon": "^2.0.12",
|
"nodemon": "^2.0.12",
|
||||||
|
@ -16,7 +16,7 @@ module.exports = {
|
|||||||
module: {
|
module: {
|
||||||
rules: [
|
rules: [
|
||||||
{
|
{
|
||||||
use: ['babel-loader', 'eslint-loader'],
|
use: ['babel-loader'],
|
||||||
test: /.(js)$/,
|
test: /.(js)$/,
|
||||||
exclude: [
|
exclude: [
|
||||||
/node_modules/,
|
/node_modules/,
|
||||||
|
305
yarn.lock
305
yarn.lock
@ -2,6 +2,13 @@
|
|||||||
# yarn lockfile v1
|
# yarn lockfile v1
|
||||||
|
|
||||||
|
|
||||||
|
"@babel/code-frame@7.0.0":
|
||||||
|
version "7.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8"
|
||||||
|
integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==
|
||||||
|
dependencies:
|
||||||
|
"@babel/highlight" "^7.0.0"
|
||||||
|
|
||||||
"@babel/code-frame@7.12.11":
|
"@babel/code-frame@7.12.11":
|
||||||
version "7.12.11"
|
version "7.12.11"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
|
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
|
||||||
@ -249,7 +256,7 @@
|
|||||||
"@babel/traverse" "^7.16.3"
|
"@babel/traverse" "^7.16.3"
|
||||||
"@babel/types" "^7.16.0"
|
"@babel/types" "^7.16.0"
|
||||||
|
|
||||||
"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.0":
|
"@babel/highlight@^7.0.0", "@babel/highlight@^7.10.4", "@babel/highlight@^7.16.0":
|
||||||
version "7.16.0"
|
version "7.16.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a"
|
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a"
|
||||||
integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==
|
integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==
|
||||||
@ -1007,6 +1014,21 @@
|
|||||||
minimatch "^3.0.4"
|
minimatch "^3.0.4"
|
||||||
strip-json-comments "^3.1.1"
|
strip-json-comments "^3.1.1"
|
||||||
|
|
||||||
|
"@eslint/eslintrc@^1.0.5":
|
||||||
|
version "1.0.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.0.5.tgz#33f1b838dbf1f923bfa517e008362b78ddbbf318"
|
||||||
|
integrity sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==
|
||||||
|
dependencies:
|
||||||
|
ajv "^6.12.4"
|
||||||
|
debug "^4.3.2"
|
||||||
|
espree "^9.2.0"
|
||||||
|
globals "^13.9.0"
|
||||||
|
ignore "^4.0.6"
|
||||||
|
import-fresh "^3.2.1"
|
||||||
|
js-yaml "^4.1.0"
|
||||||
|
minimatch "^3.0.4"
|
||||||
|
strip-json-comments "^3.1.1"
|
||||||
|
|
||||||
"@evocateur/libnpmaccess@^3.1.2":
|
"@evocateur/libnpmaccess@^3.1.2":
|
||||||
version "3.1.2"
|
version "3.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz#ecf7f6ce6b004e9f942b098d92200be4a4b1c845"
|
resolved "https://registry.yarnpkg.com/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz#ecf7f6ce6b004e9f942b098d92200be4a4b1c845"
|
||||||
@ -1174,11 +1196,28 @@
|
|||||||
debug "^4.1.1"
|
debug "^4.1.1"
|
||||||
minimatch "^3.0.4"
|
minimatch "^3.0.4"
|
||||||
|
|
||||||
"@humanwhocodes/object-schema@^1.2.0":
|
"@humanwhocodes/config-array@^0.9.2":
|
||||||
|
version "0.9.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.2.tgz#68be55c737023009dfc5fe245d51181bb6476914"
|
||||||
|
integrity sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==
|
||||||
|
dependencies:
|
||||||
|
"@humanwhocodes/object-schema" "^1.2.1"
|
||||||
|
debug "^4.1.1"
|
||||||
|
minimatch "^3.0.4"
|
||||||
|
|
||||||
|
"@humanwhocodes/object-schema@^1.2.0", "@humanwhocodes/object-schema@^1.2.1":
|
||||||
version "1.2.1"
|
version "1.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
|
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
|
||||||
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
|
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
|
||||||
|
|
||||||
|
"@ianvs/eslint-stats@^2.0.0":
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@ianvs/eslint-stats/-/eslint-stats-2.0.0.tgz#068a4a1508cfdfc21fd0b9931ae0921c5053ac29"
|
||||||
|
integrity sha512-DnIVVAiXR4tfWERTiQxr1Prrs/uFEbC1C4gTGORMvbF4k7ENyVQeLcoUfNyhlAj2MB/OeorCrN3wSnYuDOUS6Q==
|
||||||
|
dependencies:
|
||||||
|
chalk "^2.4.2"
|
||||||
|
lodash "^4.17.15"
|
||||||
|
|
||||||
"@istanbuljs/load-nyc-config@^1.0.0":
|
"@istanbuljs/load-nyc-config@^1.0.0":
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced"
|
resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced"
|
||||||
@ -2447,7 +2486,7 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
"@types/hoist-non-react-statics@^3.3.0", "@types/hoist-non-react-statics@^3.3.1":
|
"@types/hoist-non-react-statics@*", "@types/hoist-non-react-statics@^3.3.0", "@types/hoist-non-react-statics@^3.3.1":
|
||||||
version "3.3.1"
|
version "3.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f"
|
resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f"
|
||||||
integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==
|
integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==
|
||||||
@ -2551,6 +2590,13 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11"
|
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11"
|
||||||
integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==
|
integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==
|
||||||
|
|
||||||
|
"@types/react-dom@^17.0.0":
|
||||||
|
version "17.0.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.11.tgz#e1eadc3c5e86bdb5f7684e00274ae228e7bcc466"
|
||||||
|
integrity sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q==
|
||||||
|
dependencies:
|
||||||
|
"@types/react" "*"
|
||||||
|
|
||||||
"@types/react-redux@^7.1.20":
|
"@types/react-redux@^7.1.20":
|
||||||
version "7.1.20"
|
version "7.1.20"
|
||||||
resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.20.tgz#42f0e61ababb621e12c66c96dda94c58423bd7df"
|
resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.20.tgz#42f0e61ababb621e12c66c96dda94c58423bd7df"
|
||||||
@ -2568,7 +2614,7 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/react" "*"
|
"@types/react" "*"
|
||||||
|
|
||||||
"@types/react@*":
|
"@types/react@*", "@types/react@^17.0.0":
|
||||||
version "17.0.37"
|
version "17.0.37"
|
||||||
resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.37.tgz#6884d0aa402605935c397ae689deed115caad959"
|
resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.37.tgz#6884d0aa402605935c397ae689deed115caad959"
|
||||||
integrity sha512-2FS1oTqBGcH/s0E+CjrCCR9+JMpsu9b69RTFO+40ua43ZqP5MmQ4iUde/dMjWR909KxZwmOQIFq6AV6NjEG5xg==
|
integrity sha512-2FS1oTqBGcH/s0E+CjrCCR9+JMpsu9b69RTFO+40ua43ZqP5MmQ4iUde/dMjWR909KxZwmOQIFq6AV6NjEG5xg==
|
||||||
@ -2602,6 +2648,15 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c"
|
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c"
|
||||||
integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==
|
integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==
|
||||||
|
|
||||||
|
"@types/styled-components@^5.1.4":
|
||||||
|
version "5.1.18"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-5.1.18.tgz#1c361130f76a52f1cb4851c2a32aa328267e5b78"
|
||||||
|
integrity sha512-xPTYmWP7Mxk5TAD3pYsqjwA9G5fAI8e/S51QUJEl7EQD1siKCdiYXIWiH2lzoHRl+QqbQCJMcGv3YTF3OmyPdQ==
|
||||||
|
dependencies:
|
||||||
|
"@types/hoist-non-react-statics" "*"
|
||||||
|
"@types/react" "*"
|
||||||
|
csstype "^3.0.2"
|
||||||
|
|
||||||
"@types/tapable@^1":
|
"@types/tapable@^1":
|
||||||
version "1.0.8"
|
version "1.0.8"
|
||||||
resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310"
|
resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310"
|
||||||
@ -3023,7 +3078,7 @@ acorn@^7.1.1, acorn@^7.4.0:
|
|||||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
|
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
|
||||||
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
|
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
|
||||||
|
|
||||||
acorn@^8.0.4, acorn@^8.2.4, acorn@^8.4.1:
|
acorn@^8.0.4, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.6.0:
|
||||||
version "8.6.0"
|
version "8.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.6.0.tgz#e3692ba0eb1a0c83eaa4f37f5fa7368dd7142895"
|
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.6.0.tgz#e3692ba0eb1a0c83eaa4f37f5fa7368dd7142895"
|
||||||
integrity sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==
|
integrity sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==
|
||||||
@ -3643,7 +3698,7 @@ bindings@^1.5.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
file-uri-to-path "1.0.0"
|
file-uri-to-path "1.0.0"
|
||||||
|
|
||||||
bl@^4.0.3:
|
bl@^4.0.3, bl@^4.1.0:
|
||||||
version "4.1.0"
|
version "4.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
|
resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
|
||||||
integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
|
integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
|
||||||
@ -4013,7 +4068,16 @@ caseless@~0.12.0:
|
|||||||
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
|
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
|
||||||
integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
|
integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
|
||||||
|
|
||||||
chalk@^1.1.3:
|
chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2:
|
||||||
|
version "2.4.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
|
||||||
|
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
|
||||||
|
dependencies:
|
||||||
|
ansi-styles "^3.2.1"
|
||||||
|
escape-string-regexp "^1.0.5"
|
||||||
|
supports-color "^5.3.0"
|
||||||
|
|
||||||
|
chalk@^1.0.0, chalk@^1.1.3:
|
||||||
version "1.1.3"
|
version "1.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
|
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
|
||||||
integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
|
integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
|
||||||
@ -4024,16 +4088,7 @@ chalk@^1.1.3:
|
|||||||
strip-ansi "^3.0.0"
|
strip-ansi "^3.0.0"
|
||||||
supports-color "^2.0.0"
|
supports-color "^2.0.0"
|
||||||
|
|
||||||
chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2:
|
chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1:
|
||||||
version "2.4.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
|
|
||||||
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
|
|
||||||
dependencies:
|
|
||||||
ansi-styles "^3.2.1"
|
|
||||||
escape-string-regexp "^1.0.5"
|
|
||||||
supports-color "^5.3.0"
|
|
||||||
|
|
||||||
chalk@^4.0.0, chalk@^4.1.0:
|
|
||||||
version "4.1.2"
|
version "4.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
|
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
|
||||||
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
|
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
|
||||||
@ -4195,6 +4250,11 @@ cli-cursor@^3.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
restore-cursor "^3.1.0"
|
restore-cursor "^3.1.0"
|
||||||
|
|
||||||
|
cli-spinners@^2.5.0:
|
||||||
|
version "2.6.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d"
|
||||||
|
integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==
|
||||||
|
|
||||||
cli-table3@~0.6.0:
|
cli-table3@~0.6.0:
|
||||||
version "0.6.0"
|
version "0.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee"
|
resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee"
|
||||||
@ -4218,6 +4278,11 @@ cli-width@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48"
|
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48"
|
||||||
integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==
|
integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==
|
||||||
|
|
||||||
|
cli-width@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6"
|
||||||
|
integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==
|
||||||
|
|
||||||
cliui@^4.0.0:
|
cliui@^4.0.0:
|
||||||
version "4.1.0"
|
version "4.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
|
resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
|
||||||
@ -5606,6 +5671,24 @@ eslint-config-standard@^16.0.3:
|
|||||||
resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz#6c8761e544e96c531ff92642eeb87842b8488516"
|
resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz#6c8761e544e96c531ff92642eeb87842b8488516"
|
||||||
integrity sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==
|
integrity sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==
|
||||||
|
|
||||||
|
eslint-filtered-fix@^0.2.0:
|
||||||
|
version "0.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint-filtered-fix/-/eslint-filtered-fix-0.2.0.tgz#f3d9e10c028ef74b878296948f9c20e836816203"
|
||||||
|
integrity sha512-XdaG7foK2Xu4EORAwtgBRv25eLv50XGbeiCDVeUui8Mp51HBd1h+HR/Od40U2rhQmFqnCK0hIPknltoCKq8xew==
|
||||||
|
dependencies:
|
||||||
|
optionator "^0.9.1"
|
||||||
|
|
||||||
|
eslint-formatter-friendly@^7.0.0:
|
||||||
|
version "7.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint-formatter-friendly/-/eslint-formatter-friendly-7.0.0.tgz#32a4998ababa0a39994aed629b831fda7dabc864"
|
||||||
|
integrity sha512-WXg2D5kMHcRxIZA3ulxdevi8/BGTXu72pfOO5vXHqcAfClfIWDSlOljROjCSOCcKvilgmHz1jDWbvFCZHjMQ5w==
|
||||||
|
dependencies:
|
||||||
|
"@babel/code-frame" "7.0.0"
|
||||||
|
chalk "2.4.2"
|
||||||
|
extend "3.0.2"
|
||||||
|
strip-ansi "5.2.0"
|
||||||
|
text-table "0.2.0"
|
||||||
|
|
||||||
eslint-import-resolver-node@^0.3.6:
|
eslint-import-resolver-node@^0.3.6:
|
||||||
version "0.3.6"
|
version "0.3.6"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd"
|
resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd"
|
||||||
@ -5631,17 +5714,6 @@ eslint-import-resolver-webpack@^0.13.2:
|
|||||||
resolve "^1.20.0"
|
resolve "^1.20.0"
|
||||||
semver "^5.7.1"
|
semver "^5.7.1"
|
||||||
|
|
||||||
eslint-loader@^4.0.2:
|
|
||||||
version "4.0.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-4.0.2.tgz#386a1e21bcb613b3cf2d252a3b708023ccfb41ec"
|
|
||||||
integrity sha512-EDpXor6lsjtTzZpLUn7KmXs02+nIjGcgees9BYjNkWra3jVq5vVa8IoCKgzT2M7dNNeoMBtaSG83Bd40N3poLw==
|
|
||||||
dependencies:
|
|
||||||
find-cache-dir "^3.3.1"
|
|
||||||
fs-extra "^8.1.0"
|
|
||||||
loader-utils "^2.0.0"
|
|
||||||
object-hash "^2.0.3"
|
|
||||||
schema-utils "^2.6.5"
|
|
||||||
|
|
||||||
eslint-module-utils@^2.7.1:
|
eslint-module-utils@^2.7.1:
|
||||||
version "2.7.1"
|
version "2.7.1"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz#b435001c9f8dd4ab7f6d0efcae4b9696d4c24b7c"
|
resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz#b435001c9f8dd4ab7f6d0efcae4b9696d4c24b7c"
|
||||||
@ -5651,6 +5723,19 @@ 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-nibble@^8.0.0:
|
||||||
|
version "8.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint-nibble/-/eslint-nibble-8.0.0.tgz#667e1f9b64492c90058c1f9b2236a97682d83924"
|
||||||
|
integrity sha512-Og/0EGKxwEtNPNN4eo84GxgzpD4a4+LcvBd72j0OL55aTHtfR7vdnp3qJ9RQ0Qh4mXLUlC0O13sQZxLtx9ZDvA==
|
||||||
|
dependencies:
|
||||||
|
"@ianvs/eslint-stats" "^2.0.0"
|
||||||
|
chalk "^4.1.1"
|
||||||
|
eslint-filtered-fix "^0.2.0"
|
||||||
|
eslint-formatter-friendly "^7.0.0"
|
||||||
|
eslint-summary "^1.0.0"
|
||||||
|
inquirer "8.1.1"
|
||||||
|
optionator "^0.9.1"
|
||||||
|
|
||||||
eslint-plugin-cypress@^2.12.1:
|
eslint-plugin-cypress@^2.12.1:
|
||||||
version "2.12.1"
|
version "2.12.1"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.12.1.tgz#9aeee700708ca8c058e00cdafe215199918c2632"
|
resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.12.1.tgz#9aeee700708ca8c058e00cdafe215199918c2632"
|
||||||
@ -5677,11 +5762,6 @@ 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-only-warn@^1.0.3:
|
|
||||||
version "1.0.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-only-warn/-/eslint-plugin-only-warn-1.0.3.tgz#a75f3a9ded7f03e9808e75ec27f22b644084506e"
|
|
||||||
integrity sha512-XQOX/TfLoLw6h8ky51d29uUjXRTQHqBGXPylDEmy5fe/w7LIOnp8MA24b1OSMEn9BQoKow1q3g1kLe5/9uBTvw==
|
|
||||||
|
|
||||||
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"
|
||||||
@ -5723,6 +5803,22 @@ eslint-scope@^4.0.3:
|
|||||||
esrecurse "^4.1.0"
|
esrecurse "^4.1.0"
|
||||||
estraverse "^4.1.1"
|
estraverse "^4.1.1"
|
||||||
|
|
||||||
|
eslint-scope@^7.1.0:
|
||||||
|
version "7.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.0.tgz#c1f6ea30ac583031f203d65c73e723b01298f153"
|
||||||
|
integrity sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==
|
||||||
|
dependencies:
|
||||||
|
esrecurse "^4.3.0"
|
||||||
|
estraverse "^5.2.0"
|
||||||
|
|
||||||
|
eslint-summary@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint-summary/-/eslint-summary-1.0.0.tgz#b811f00437016b20c0f6f5234479bd6395b57886"
|
||||||
|
integrity sha1-uBHwBDcBayDA9vUjRHm9Y5W1eIY=
|
||||||
|
dependencies:
|
||||||
|
chalk "^1.0.0"
|
||||||
|
text-table "^0.2.0"
|
||||||
|
|
||||||
eslint-utils@^1.3.1:
|
eslint-utils@^1.3.1:
|
||||||
version "1.4.3"
|
version "1.4.3"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f"
|
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f"
|
||||||
@ -5754,6 +5850,11 @@ 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:
|
||||||
|
version "3.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz#eee4acea891814cda67a7d8812d9647dd0179af2"
|
||||||
|
integrity sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==
|
||||||
|
|
||||||
eslint@^5.16.0:
|
eslint@^5.16.0:
|
||||||
version "5.16.0"
|
version "5.16.0"
|
||||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea"
|
resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea"
|
||||||
@ -5842,6 +5943,50 @@ eslint@^7.14.0:
|
|||||||
text-table "^0.2.0"
|
text-table "^0.2.0"
|
||||||
v8-compile-cache "^2.0.3"
|
v8-compile-cache "^2.0.3"
|
||||||
|
|
||||||
|
eslint@^8.4.1:
|
||||||
|
version "8.4.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.4.1.tgz#d6531bbf3e598dffd7c0c7d35ec52a0b30fdfa2d"
|
||||||
|
integrity sha512-TxU/p7LB1KxQ6+7aztTnO7K0i+h0tDi81YRY9VzB6Id71kNz+fFYnf5HD5UOQmxkzcoa0TlVZf9dpMtUv0GpWg==
|
||||||
|
dependencies:
|
||||||
|
"@eslint/eslintrc" "^1.0.5"
|
||||||
|
"@humanwhocodes/config-array" "^0.9.2"
|
||||||
|
ajv "^6.10.0"
|
||||||
|
chalk "^4.0.0"
|
||||||
|
cross-spawn "^7.0.2"
|
||||||
|
debug "^4.3.2"
|
||||||
|
doctrine "^3.0.0"
|
||||||
|
enquirer "^2.3.5"
|
||||||
|
escape-string-regexp "^4.0.0"
|
||||||
|
eslint-scope "^7.1.0"
|
||||||
|
eslint-utils "^3.0.0"
|
||||||
|
eslint-visitor-keys "^3.1.0"
|
||||||
|
espree "^9.2.0"
|
||||||
|
esquery "^1.4.0"
|
||||||
|
esutils "^2.0.2"
|
||||||
|
fast-deep-equal "^3.1.3"
|
||||||
|
file-entry-cache "^6.0.1"
|
||||||
|
functional-red-black-tree "^1.0.1"
|
||||||
|
glob-parent "^6.0.1"
|
||||||
|
globals "^13.6.0"
|
||||||
|
ignore "^4.0.6"
|
||||||
|
import-fresh "^3.0.0"
|
||||||
|
imurmurhash "^0.1.4"
|
||||||
|
is-glob "^4.0.0"
|
||||||
|
js-yaml "^4.1.0"
|
||||||
|
json-stable-stringify-without-jsonify "^1.0.1"
|
||||||
|
levn "^0.4.1"
|
||||||
|
lodash.merge "^4.6.2"
|
||||||
|
minimatch "^3.0.4"
|
||||||
|
natural-compare "^1.4.0"
|
||||||
|
optionator "^0.9.1"
|
||||||
|
progress "^2.0.0"
|
||||||
|
regexpp "^3.2.0"
|
||||||
|
semver "^7.2.1"
|
||||||
|
strip-ansi "^6.0.1"
|
||||||
|
strip-json-comments "^3.1.0"
|
||||||
|
text-table "^0.2.0"
|
||||||
|
v8-compile-cache "^2.0.3"
|
||||||
|
|
||||||
espree@^5.0.1:
|
espree@^5.0.1:
|
||||||
version "5.0.1"
|
version "5.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a"
|
resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a"
|
||||||
@ -5860,6 +6005,15 @@ espree@^7.3.0, espree@^7.3.1:
|
|||||||
acorn-jsx "^5.3.1"
|
acorn-jsx "^5.3.1"
|
||||||
eslint-visitor-keys "^1.3.0"
|
eslint-visitor-keys "^1.3.0"
|
||||||
|
|
||||||
|
espree@^9.2.0:
|
||||||
|
version "9.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/espree/-/espree-9.2.0.tgz#c50814e01611c2d0f8bd4daa83c369eabba80dbc"
|
||||||
|
integrity sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg==
|
||||||
|
dependencies:
|
||||||
|
acorn "^8.6.0"
|
||||||
|
acorn-jsx "^5.3.1"
|
||||||
|
eslint-visitor-keys "^3.1.0"
|
||||||
|
|
||||||
esprima@^4.0.0, esprima@^4.0.1:
|
esprima@^4.0.0, esprima@^4.0.1:
|
||||||
version "4.0.1"
|
version "4.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
|
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
|
||||||
@ -6093,7 +6247,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2:
|
|||||||
assign-symbols "^1.0.0"
|
assign-symbols "^1.0.0"
|
||||||
is-extendable "^1.0.1"
|
is-extendable "^1.0.1"
|
||||||
|
|
||||||
extend@~3.0.2:
|
extend@3.0.2, extend@~3.0.2:
|
||||||
version "3.0.2"
|
version "3.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
|
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
|
||||||
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
|
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
|
||||||
@ -6225,7 +6379,7 @@ figures@^2.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
escape-string-regexp "^1.0.5"
|
escape-string-regexp "^1.0.5"
|
||||||
|
|
||||||
figures@^3.2.0:
|
figures@^3.0.0, figures@^3.2.0:
|
||||||
version "3.2.0"
|
version "3.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
|
resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
|
||||||
integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
|
integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
|
||||||
@ -7450,6 +7604,26 @@ init-package-json@^1.10.3:
|
|||||||
validate-npm-package-license "^3.0.1"
|
validate-npm-package-license "^3.0.1"
|
||||||
validate-npm-package-name "^3.0.0"
|
validate-npm-package-name "^3.0.0"
|
||||||
|
|
||||||
|
inquirer@8.1.1:
|
||||||
|
version "8.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.1.1.tgz#7c53d94c6d03011c7bb2a947f0dca3b98246c26a"
|
||||||
|
integrity sha512-hUDjc3vBkh/uk1gPfMAD/7Z188Q8cvTGl0nxwaCdwSbzFh6ZKkZh+s2ozVxbE5G9ZNRyeY0+lgbAIOUFsFf98w==
|
||||||
|
dependencies:
|
||||||
|
ansi-escapes "^4.2.1"
|
||||||
|
chalk "^4.1.1"
|
||||||
|
cli-cursor "^3.1.0"
|
||||||
|
cli-width "^3.0.0"
|
||||||
|
external-editor "^3.0.3"
|
||||||
|
figures "^3.0.0"
|
||||||
|
lodash "^4.17.21"
|
||||||
|
mute-stream "0.0.8"
|
||||||
|
ora "^5.3.0"
|
||||||
|
run-async "^2.4.0"
|
||||||
|
rxjs "^6.6.6"
|
||||||
|
string-width "^4.1.0"
|
||||||
|
strip-ansi "^6.0.0"
|
||||||
|
through "^2.3.6"
|
||||||
|
|
||||||
inquirer@^6.2.0, inquirer@^6.2.2:
|
inquirer@^6.2.0, inquirer@^6.2.2:
|
||||||
version "6.5.2"
|
version "6.5.2"
|
||||||
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca"
|
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca"
|
||||||
@ -7751,6 +7925,11 @@ is-installed-globally@^0.4.0, is-installed-globally@~0.4.0:
|
|||||||
global-dirs "^3.0.0"
|
global-dirs "^3.0.0"
|
||||||
is-path-inside "^3.0.2"
|
is-path-inside "^3.0.2"
|
||||||
|
|
||||||
|
is-interactive@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e"
|
||||||
|
integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==
|
||||||
|
|
||||||
is-negative-zero@^2.0.1:
|
is-negative-zero@^2.0.1:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
|
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
|
||||||
@ -8496,7 +8675,7 @@ js-sha3@0.8.0:
|
|||||||
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
|
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
|
||||||
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
|
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
|
||||||
|
|
||||||
js-yaml@4.1.0:
|
js-yaml@4.1.0, js-yaml@^4.1.0:
|
||||||
version "4.1.0"
|
version "4.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
|
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
|
||||||
integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
|
integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
|
||||||
@ -9083,7 +9262,7 @@ lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17
|
|||||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||||
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||||
|
|
||||||
log-symbols@4.1.0, log-symbols@^4.0.0:
|
log-symbols@4.1.0, log-symbols@^4.0.0, log-symbols@^4.1.0:
|
||||||
version "4.1.0"
|
version "4.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
|
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
|
||||||
integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
|
integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
|
||||||
@ -9661,7 +9840,7 @@ mute-stream@0.0.7:
|
|||||||
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
|
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
|
||||||
integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
|
integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
|
||||||
|
|
||||||
mute-stream@~0.0.4:
|
mute-stream@0.0.8, mute-stream@~0.0.4:
|
||||||
version "0.0.8"
|
version "0.0.8"
|
||||||
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
|
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
|
||||||
integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
|
integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
|
||||||
@ -10008,11 +10187,6 @@ object-copy@^0.1.0:
|
|||||||
define-property "^0.2.5"
|
define-property "^0.2.5"
|
||||||
kind-of "^3.0.3"
|
kind-of "^3.0.3"
|
||||||
|
|
||||||
object-hash@^2.0.3:
|
|
||||||
version "2.2.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5"
|
|
||||||
integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==
|
|
||||||
|
|
||||||
object-inspect@^1.11.0, object-inspect@^1.9.0:
|
object-inspect@^1.11.0, object-inspect@^1.9.0:
|
||||||
version "1.11.1"
|
version "1.11.1"
|
||||||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.1.tgz#d4bd7d7de54b9a75599f59a00bd698c1f1c6549b"
|
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.1.tgz#d4bd7d7de54b9a75599f59a00bd698c1f1c6549b"
|
||||||
@ -10188,6 +10362,21 @@ optionator@^0.9.1:
|
|||||||
type-check "^0.4.0"
|
type-check "^0.4.0"
|
||||||
word-wrap "^1.2.3"
|
word-wrap "^1.2.3"
|
||||||
|
|
||||||
|
ora@^5.3.0:
|
||||||
|
version "5.4.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18"
|
||||||
|
integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==
|
||||||
|
dependencies:
|
||||||
|
bl "^4.1.0"
|
||||||
|
chalk "^4.1.0"
|
||||||
|
cli-cursor "^3.1.0"
|
||||||
|
cli-spinners "^2.5.0"
|
||||||
|
is-interactive "^1.0.0"
|
||||||
|
is-unicode-supported "^0.1.0"
|
||||||
|
log-symbols "^4.1.0"
|
||||||
|
strip-ansi "^6.0.0"
|
||||||
|
wcwidth "^1.0.1"
|
||||||
|
|
||||||
original@^1.0.0:
|
original@^1.0.0:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f"
|
resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f"
|
||||||
@ -11068,7 +11257,7 @@ react-async-script@^1.1.1:
|
|||||||
hoist-non-react-statics "^3.3.0"
|
hoist-non-react-statics "^3.3.0"
|
||||||
prop-types "^15.5.0"
|
prop-types "^15.5.0"
|
||||||
|
|
||||||
react-dom@^17.0.0:
|
react-dom@^17.0.0, react-dom@^17.0.1:
|
||||||
version "17.0.2"
|
version "17.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23"
|
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23"
|
||||||
integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==
|
integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==
|
||||||
@ -11178,7 +11367,7 @@ react-transition-group@^4.4.0:
|
|||||||
loose-envify "^1.4.0"
|
loose-envify "^1.4.0"
|
||||||
prop-types "^15.6.2"
|
prop-types "^15.6.2"
|
||||||
|
|
||||||
react@^17.0.0:
|
react@^17.0.0, react@^17.0.1:
|
||||||
version "17.0.2"
|
version "17.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
|
resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
|
||||||
integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==
|
integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==
|
||||||
@ -11413,7 +11602,7 @@ regexpp@^2.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
|
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
|
||||||
integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
|
integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
|
||||||
|
|
||||||
regexpp@^3.1.0:
|
regexpp@^3.1.0, regexpp@^3.2.0:
|
||||||
version "3.2.0"
|
version "3.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
|
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
|
||||||
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
|
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
|
||||||
@ -11691,7 +11880,7 @@ rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3:
|
|||||||
dependencies:
|
dependencies:
|
||||||
glob "^7.1.3"
|
glob "^7.1.3"
|
||||||
|
|
||||||
run-async@^2.2.0:
|
run-async@^2.2.0, run-async@^2.4.0:
|
||||||
version "2.4.1"
|
version "2.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
|
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
|
||||||
integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
|
integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
|
||||||
@ -11710,7 +11899,7 @@ run-queue@^1.0.0, run-queue@^1.0.3:
|
|||||||
dependencies:
|
dependencies:
|
||||||
aproba "^1.1.1"
|
aproba "^1.1.1"
|
||||||
|
|
||||||
rxjs@^6.4.0:
|
rxjs@^6.4.0, rxjs@^6.6.6:
|
||||||
version "6.6.7"
|
version "6.6.7"
|
||||||
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9"
|
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9"
|
||||||
integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==
|
integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==
|
||||||
@ -12489,6 +12678,13 @@ stringify-object@^3.3.0:
|
|||||||
is-obj "^1.0.1"
|
is-obj "^1.0.1"
|
||||||
is-regexp "^1.0.0"
|
is-regexp "^1.0.0"
|
||||||
|
|
||||||
|
strip-ansi@5.2.0, strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
|
||||||
|
version "5.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
|
||||||
|
integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
|
||||||
|
dependencies:
|
||||||
|
ansi-regex "^4.1.0"
|
||||||
|
|
||||||
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
|
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
|
||||||
version "3.0.1"
|
version "3.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
|
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
|
||||||
@ -12503,13 +12699,6 @@ strip-ansi@^4.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ansi-regex "^3.0.0"
|
ansi-regex "^3.0.0"
|
||||||
|
|
||||||
strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
|
|
||||||
version "5.2.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
|
|
||||||
integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
|
|
||||||
dependencies:
|
|
||||||
ansi-regex "^4.1.0"
|
|
||||||
|
|
||||||
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
||||||
version "6.0.1"
|
version "6.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||||
@ -12590,7 +12779,7 @@ style-loader@^2.0.0:
|
|||||||
loader-utils "^2.0.0"
|
loader-utils "^2.0.0"
|
||||||
schema-utils "^3.0.0"
|
schema-utils "^3.0.0"
|
||||||
|
|
||||||
styled-components@^5.1.7:
|
styled-components@^5.1.7, styled-components@^5.2.1:
|
||||||
version "5.3.3"
|
version "5.3.3"
|
||||||
resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.3.tgz#312a3d9a549f4708f0fb0edc829eb34bde032743"
|
resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.3.tgz#312a3d9a549f4708f0fb0edc829eb34bde032743"
|
||||||
integrity sha512-++4iHwBM7ZN+x6DtPPWkCI4vdtwumQ+inA/DdAsqYd4SVgUKJie5vXyzotA00ttcFdQkCng7zc6grwlfIfw+lw==
|
integrity sha512-++4iHwBM7ZN+x6DtPPWkCI4vdtwumQ+inA/DdAsqYd4SVgUKJie5vXyzotA00ttcFdQkCng7zc6grwlfIfw+lw==
|
||||||
@ -12789,7 +12978,7 @@ text-extensions@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26"
|
resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26"
|
||||||
integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==
|
integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==
|
||||||
|
|
||||||
text-table@^0.2.0:
|
text-table@0.2.0, text-table@^0.2.0:
|
||||||
version "0.2.0"
|
version "0.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
|
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
|
||||||
integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
|
integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
|
||||||
@ -13464,7 +13653,7 @@ wbuf@^1.1.0, wbuf@^1.7.3:
|
|||||||
dependencies:
|
dependencies:
|
||||||
minimalistic-assert "^1.0.0"
|
minimalistic-assert "^1.0.0"
|
||||||
|
|
||||||
wcwidth@^1.0.0:
|
wcwidth@^1.0.0, wcwidth@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
|
resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
|
||||||
integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=
|
integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=
|
||||||
|
Loading…
Reference in New Issue
Block a user