@yorab/react-paint 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Changelog.md +26 -0
- package/README.md +99 -0
- package/dist/components/App.d.ts +20 -0
- package/dist/components/App.js +533 -0
- package/dist/components/Canvas.d.ts +28 -0
- package/dist/components/Canvas.js +188 -0
- package/dist/components/common/Button.d.ts +14 -0
- package/dist/components/common/Button.js +97 -0
- package/dist/components/common/Loading.d.ts +6 -0
- package/dist/components/common/Loading.js +66 -0
- package/dist/components/common/Modal.d.ts +8 -0
- package/dist/components/common/Modal.js +41 -0
- package/dist/components/common/Panel.d.ts +10 -0
- package/dist/components/common/Panel.js +48 -0
- package/dist/components/common/Snackbar.d.ts +7 -0
- package/dist/components/common/Snackbar.js +75 -0
- package/dist/components/settings/ColorField.d.ts +12 -0
- package/dist/components/settings/ColorField.js +128 -0
- package/dist/components/settings/DeleteButton.d.ts +9 -0
- package/dist/components/settings/DeleteButton.js +36 -0
- package/dist/components/settings/FontFamilyField.d.ts +10 -0
- package/dist/components/settings/FontFamilyField.js +57 -0
- package/dist/components/settings/LayoutButton.d.ts +8 -0
- package/dist/components/settings/LayoutButton.js +37 -0
- package/dist/components/settings/Layouts.d.ts +18 -0
- package/dist/components/settings/Layouts.js +218 -0
- package/dist/components/settings/LineArrowField.d.ts +10 -0
- package/dist/components/settings/LineArrowField.js +59 -0
- package/dist/components/settings/LineTypeField.d.ts +14 -0
- package/dist/components/settings/LineTypeField.js +57 -0
- package/dist/components/settings/PointsNumberField.d.ts +11 -0
- package/dist/components/settings/PointsNumberField.js +51 -0
- package/dist/components/settings/RangeField.d.ts +16 -0
- package/dist/components/settings/RangeField.js +90 -0
- package/dist/components/settings/SelectField.d.ts +16 -0
- package/dist/components/settings/SelectField.js +82 -0
- package/dist/components/settings/SettingsBar.d.ts +16 -0
- package/dist/components/settings/SettingsBar.js +262 -0
- package/dist/components/toolbox/EditTextBox.d.ts +10 -0
- package/dist/components/toolbox/EditTextBox.js +89 -0
- package/dist/components/toolbox/LoadFileTool.d.ts +11 -0
- package/dist/components/toolbox/LoadFileTool.js +58 -0
- package/dist/components/toolbox/MenuGroup.d.ts +23 -0
- package/dist/components/toolbox/MenuGroup.js +173 -0
- package/dist/components/toolbox/PictureUrlInput.d.ts +7 -0
- package/dist/components/toolbox/PictureUrlInput.js +96 -0
- package/dist/components/toolbox/Tool.d.ts +13 -0
- package/dist/components/toolbox/Tool.js +41 -0
- package/dist/components/toolbox/Toolbar.d.ts +20 -0
- package/dist/components/toolbox/Toolbar.js +205 -0
- package/dist/components/toolbox/ToolbarGroup.d.ts +18 -0
- package/dist/components/toolbox/ToolbarGroup.js +139 -0
- package/dist/constants/draw.d.ts +2 -0
- package/dist/constants/draw.js +10 -0
- package/dist/constants/icons.d.ts +36 -0
- package/dist/constants/icons.js +80 -0
- package/dist/constants/shapes.d.ts +5 -0
- package/dist/constants/shapes.js +14 -0
- package/dist/constants/snackbar.d.ts +11 -0
- package/dist/constants/snackbar.js +23 -0
- package/dist/constants/style.d.ts +12 -0
- package/dist/constants/style.js +30 -0
- package/dist/hooks/useComponent.d.ts +9 -0
- package/dist/hooks/useComponent.js +48 -0
- package/dist/hooks/useDrag.d.ts +15 -0
- package/dist/hooks/useDrag.js +100 -0
- package/dist/hooks/useDrawableCanvas.d.ts +30 -0
- package/dist/hooks/useDrawableCanvas.js +250 -0
- package/dist/hooks/useKeyboard.d.ts +15 -0
- package/dist/hooks/useKeyboard.js +123 -0
- package/dist/hooks/useShapes.d.ts +22 -0
- package/dist/hooks/useShapes.js +229 -0
- package/dist/hooks/useSnackbar.d.ts +16 -0
- package/dist/hooks/useSnackbar.js +86 -0
- package/dist/schemas/drawableShape.json +1021 -0
- package/dist/styles.css +88 -0
- package/dist/types/Mode.d.ts +51 -0
- package/dist/types/Mode.js +17 -0
- package/dist/types/Shapes.d.ts +122 -0
- package/dist/types/Shapes.js +35 -0
- package/dist/types/keyboard.d.ts +15 -0
- package/dist/types/keyboard.js +28 -0
- package/dist/utils/data.d.ts +4 -0
- package/dist/utils/data.js +178 -0
- package/dist/utils/draw.d.ts +18 -0
- package/dist/utils/draw.js +422 -0
- package/dist/utils/file.d.ts +33 -0
- package/dist/utils/file.js +220 -0
- package/dist/utils/intersect.d.ts +8 -0
- package/dist/utils/intersect.js +194 -0
- package/dist/utils/selection.d.ts +7 -0
- package/dist/utils/selection.js +88 -0
- package/dist/utils/shapeData.d.ts +5 -0
- package/dist/utils/shapeData.js +178 -0
- package/dist/utils/string.d.ts +3 -0
- package/dist/utils/string.js +42 -0
- package/dist/utils/style.d.ts +2 -0
- package/dist/utils/style.js +46 -0
- package/dist/utils/toolbar.d.ts +12 -0
- package/dist/utils/toolbar.js +37 -0
- package/dist/utils/transform.d.ts +271 -0
- package/dist/utils/transform.js +371 -0
- package/package.json +79 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.getSettingsPosition = exports.getPointPositionBeforeCanvasTransformation = exports.getPointPositionAfterCanvasTransformation = exports.getCursorPosition = exports.checkPositionIntersection = exports.applyRotationToVector = void 0;
|
|
9
|
+
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
|
|
12
|
+
var _shapes = require("../constants/shapes");
|
|
13
|
+
|
|
14
|
+
var _fp = _interopRequireDefault(require("lodash/fp"));
|
|
15
|
+
|
|
16
|
+
var _Mode = require("../types/Mode");
|
|
17
|
+
|
|
18
|
+
var _Shapes = require("../types/Shapes");
|
|
19
|
+
|
|
20
|
+
var _shapeData = require("./shapeData");
|
|
21
|
+
|
|
22
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
23
|
+
|
|
24
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
25
|
+
|
|
26
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
27
|
+
|
|
28
|
+
var getCursorPosition = function getCursorPosition(e, canvas, givenWidth, givenHeight) {
|
|
29
|
+
var _canvas$getBoundingCl;
|
|
30
|
+
|
|
31
|
+
var _$getOr = _fp["default"].getOr(_fp["default"].getOr(e, 'changedTouches[0]', e), 'touches[0]', e),
|
|
32
|
+
clientX = _$getOr.clientX,
|
|
33
|
+
clientY = _$getOr.clientY;
|
|
34
|
+
|
|
35
|
+
var canvasBoundingRect = (_canvas$getBoundingCl = canvas === null || canvas === void 0 ? void 0 : canvas.getBoundingClientRect()) !== null && _canvas$getBoundingCl !== void 0 ? _canvas$getBoundingCl : {
|
|
36
|
+
left: 0,
|
|
37
|
+
top: 0,
|
|
38
|
+
width: givenWidth,
|
|
39
|
+
height: givenHeight
|
|
40
|
+
};
|
|
41
|
+
return [(clientX - canvasBoundingRect.left) * (givenWidth / canvasBoundingRect.width), (clientY - canvasBoundingRect.top) * (givenHeight / canvasBoundingRect.height)];
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
exports.getCursorPosition = getCursorPosition;
|
|
45
|
+
|
|
46
|
+
var getSettingsPosition = function getSettingsPosition(shape, canvas, givenWidth, givenHeight) {
|
|
47
|
+
var _canvas$getBoundingCl2;
|
|
48
|
+
|
|
49
|
+
var shapeInfos = (0, _shapeData.getShapeInfos)(shape);
|
|
50
|
+
var positionInCanvas = getPointPositionBeforeCanvasTransformation(shapeInfos.center, [-shape.translation[0], -shape.translation[1]], shape.rotation, shapeInfos.center);
|
|
51
|
+
var canvasBoundingRect = (_canvas$getBoundingCl2 = canvas === null || canvas === void 0 ? void 0 : canvas.getBoundingClientRect()) !== null && _canvas$getBoundingCl2 !== void 0 ? _canvas$getBoundingCl2 : {
|
|
52
|
+
left: 0,
|
|
53
|
+
top: 0,
|
|
54
|
+
width: givenWidth,
|
|
55
|
+
height: givenHeight
|
|
56
|
+
};
|
|
57
|
+
return [canvasBoundingRect.left + positionInCanvas[0] * (canvasBoundingRect.width / givenWidth), canvasBoundingRect.top + positionInCanvas[1] * (canvasBoundingRect.height / givenHeight)];
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
exports.getSettingsPosition = getSettingsPosition;
|
|
61
|
+
|
|
62
|
+
var isPointInsideRect = function isPointInsideRect(rect, point) {
|
|
63
|
+
return point[0] >= rect.x && point[0] <= rect.x + rect.width && point[1] >= rect.y && point[1] <= rect.y + rect.height;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
var getPointPositionAfterCanvasTransformation = function getPointPositionAfterCanvasTransformation(_ref, _ref2, _ref3, shapeRotation, _ref4) {
|
|
67
|
+
var _ref5 = (0, _slicedToArray2["default"])(_ref, 2),
|
|
68
|
+
positionX = _ref5[0],
|
|
69
|
+
positionY = _ref5[1];
|
|
70
|
+
|
|
71
|
+
var _ref6 = (0, _slicedToArray2["default"])(_ref2, 2),
|
|
72
|
+
canvasOffsetX = _ref6[0],
|
|
73
|
+
canvasOffsetY = _ref6[1];
|
|
74
|
+
|
|
75
|
+
var _ref7 = (0, _slicedToArray2["default"])(_ref3, 2),
|
|
76
|
+
translationX = _ref7[0],
|
|
77
|
+
translationY = _ref7[1];
|
|
78
|
+
|
|
79
|
+
var _ref8 = (0, _slicedToArray2["default"])(_ref4, 2),
|
|
80
|
+
centerX = _ref8[0],
|
|
81
|
+
centerY = _ref8[1];
|
|
82
|
+
|
|
83
|
+
var newX = positionX + canvasOffsetX - centerX - translationX;
|
|
84
|
+
var newY = positionY + canvasOffsetY - centerY - translationY;
|
|
85
|
+
var rotatedY = newY * Math.cos(shapeRotation) - newX * Math.sin(shapeRotation);
|
|
86
|
+
var rotatedX = newY * Math.sin(shapeRotation) + newX * Math.cos(shapeRotation);
|
|
87
|
+
var translatedX = rotatedX + centerX;
|
|
88
|
+
var translatedY = rotatedY + centerY;
|
|
89
|
+
return [translatedX, translatedY];
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
exports.getPointPositionAfterCanvasTransformation = getPointPositionAfterCanvasTransformation;
|
|
93
|
+
|
|
94
|
+
var getPointPositionBeforeCanvasTransformation = function getPointPositionBeforeCanvasTransformation(_ref9, _ref10, shapeRotation, _ref11) {
|
|
95
|
+
var _ref12 = (0, _slicedToArray2["default"])(_ref9, 2),
|
|
96
|
+
positionX = _ref12[0],
|
|
97
|
+
positionY = _ref12[1];
|
|
98
|
+
|
|
99
|
+
var _ref13 = (0, _slicedToArray2["default"])(_ref10, 2),
|
|
100
|
+
translationX = _ref13[0],
|
|
101
|
+
translationY = _ref13[1];
|
|
102
|
+
|
|
103
|
+
var _ref14 = (0, _slicedToArray2["default"])(_ref11, 2),
|
|
104
|
+
centerX = _ref14[0],
|
|
105
|
+
centerY = _ref14[1];
|
|
106
|
+
|
|
107
|
+
var newX = positionX - centerX;
|
|
108
|
+
var newY = positionY - centerY;
|
|
109
|
+
var rotatedY = newY * Math.cos(-shapeRotation) - newX * Math.sin(-shapeRotation);
|
|
110
|
+
var rotatedX = newY * Math.sin(-shapeRotation) + newX * Math.cos(-shapeRotation);
|
|
111
|
+
var translatedX = rotatedX + centerX;
|
|
112
|
+
var translatedY = rotatedY + centerY;
|
|
113
|
+
return [translatedX - translationX, translatedY - translationY];
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
exports.getPointPositionBeforeCanvasTransformation = getPointPositionBeforeCanvasTransformation;
|
|
117
|
+
|
|
118
|
+
var applyRotationToVector = function applyRotationToVector(vector, shapeRotation) {
|
|
119
|
+
var rotatedY = vector[1] * Math.cos(shapeRotation) - vector[0] * Math.sin(shapeRotation);
|
|
120
|
+
var rotatedX = vector[1] * Math.sin(shapeRotation) + vector[0] * Math.cos(shapeRotation);
|
|
121
|
+
return [rotatedX, rotatedY];
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
exports.applyRotationToVector = applyRotationToVector;
|
|
125
|
+
|
|
126
|
+
var checkPositionIntersection = function checkPositionIntersection(shape, position, canvasOffset) {
|
|
127
|
+
var checkAnchors = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
128
|
+
|
|
129
|
+
var _getShapeInfos = (0, _shapeData.getShapeInfos)(shape),
|
|
130
|
+
borders = _getShapeInfos.borders,
|
|
131
|
+
center = _getShapeInfos.center;
|
|
132
|
+
|
|
133
|
+
var newPosition = getPointPositionAfterCanvasTransformation(position, canvasOffset, shape.translation, shape.rotation, center);
|
|
134
|
+
|
|
135
|
+
if (checkAnchors) {
|
|
136
|
+
if (shape.type === _Shapes.ShapeEnum.line || shape.type === _Shapes.ShapeEnum.polygon || shape.type === _Shapes.ShapeEnum.curve) {
|
|
137
|
+
for (var i = 0; i < shape.points.length; i++) {
|
|
138
|
+
if (isPointInsideRect({
|
|
139
|
+
x: shape.points[i][0] - _shapes.SELECTION_ANCHOR_SIZE / 2,
|
|
140
|
+
y: shape.points[i][1] - _shapes.SELECTION_ANCHOR_SIZE / 2,
|
|
141
|
+
width: _shapes.SELECTION_ANCHOR_SIZE,
|
|
142
|
+
height: _shapes.SELECTION_ANCHOR_SIZE
|
|
143
|
+
}, newPosition)) {
|
|
144
|
+
return {
|
|
145
|
+
mode: _Mode.SelectionModeLib.resize,
|
|
146
|
+
anchor: i
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
} else {
|
|
151
|
+
if (isPointInsideRect({
|
|
152
|
+
x: borders.x + borders.width / 2 - _shapes.SELECTION_ANCHOR_SIZE / 2,
|
|
153
|
+
y: borders.y - _shapes.SELECTION_ANCHOR_SIZE - _shapes.SELECTION_ROTATED_ANCHOR_POSITION,
|
|
154
|
+
width: _shapes.SELECTION_ANCHOR_SIZE,
|
|
155
|
+
height: _shapes.SELECTION_ANCHOR_SIZE
|
|
156
|
+
}, newPosition)) {
|
|
157
|
+
return {
|
|
158
|
+
mode: _Mode.SelectionModeLib.rotate
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
var _iterator = _createForOfIteratorHelper(_shapes.SELECTION_RESIZE_ANCHOR_POSITIONS),
|
|
163
|
+
_step;
|
|
164
|
+
|
|
165
|
+
try {
|
|
166
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
167
|
+
var anchorPosition = _step.value;
|
|
168
|
+
|
|
169
|
+
if (isPointInsideRect({
|
|
170
|
+
x: borders.x + borders.width * anchorPosition[0] - _shapes.SELECTION_ANCHOR_SIZE / 2,
|
|
171
|
+
y: borders.y + borders.height * anchorPosition[1] - _shapes.SELECTION_ANCHOR_SIZE / 2,
|
|
172
|
+
width: _shapes.SELECTION_ANCHOR_SIZE,
|
|
173
|
+
height: _shapes.SELECTION_ANCHOR_SIZE
|
|
174
|
+
}, newPosition)) {
|
|
175
|
+
return {
|
|
176
|
+
mode: _Mode.SelectionModeLib.resize,
|
|
177
|
+
anchor: anchorPosition
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
} catch (err) {
|
|
182
|
+
_iterator.e(err);
|
|
183
|
+
} finally {
|
|
184
|
+
_iterator.f();
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
return isPointInsideRect(borders, newPosition) ? {
|
|
190
|
+
mode: _Mode.SelectionModeLib.translate
|
|
191
|
+
} : false;
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
exports.checkPositionIntersection = checkPositionIntersection;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { HoverModeData, SelectionModeData } from 'types/Mode';
|
|
2
|
+
import { Point, DrawableShape } from 'types/Shapes';
|
|
3
|
+
export declare const getNewSelectionData: (hoverMode: HoverModeData, selectedShape: DrawableShape, cursorPosition: Point) => SelectionModeData<Point | number> | undefined;
|
|
4
|
+
export declare const selectShape: (shapes: DrawableShape[], cursorPosition: Point, canvasOffset: Point, selectedShape: DrawableShape | undefined) => {
|
|
5
|
+
mode: SelectionModeData<Point | number>;
|
|
6
|
+
shape: DrawableShape | undefined;
|
|
7
|
+
};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.selectShape = exports.getNewSelectionData = void 0;
|
|
9
|
+
|
|
10
|
+
var _fp = _interopRequireDefault(require("lodash/fp"));
|
|
11
|
+
|
|
12
|
+
var _Mode = require("../types/Mode");
|
|
13
|
+
|
|
14
|
+
var _intersect = require("./intersect");
|
|
15
|
+
|
|
16
|
+
var _shapeData = require("./shapeData");
|
|
17
|
+
|
|
18
|
+
var getNewSelectionData = function getNewSelectionData(hoverMode, selectedShape, cursorPosition) {
|
|
19
|
+
if (hoverMode.mode === 'translate') {
|
|
20
|
+
return {
|
|
21
|
+
mode: _Mode.SelectionModeLib.translate,
|
|
22
|
+
cursorStartPosition: cursorPosition,
|
|
23
|
+
originalShape: selectedShape
|
|
24
|
+
};
|
|
25
|
+
} else if (hoverMode.mode === 'rotate') {
|
|
26
|
+
var _getShapeInfos = (0, _shapeData.getShapeInfos)(selectedShape),
|
|
27
|
+
centerBeforeResize = _getShapeInfos.center;
|
|
28
|
+
|
|
29
|
+
var center = [centerBeforeResize[0], centerBeforeResize[1]];
|
|
30
|
+
return {
|
|
31
|
+
mode: _Mode.SelectionModeLib.rotate,
|
|
32
|
+
cursorStartPosition: cursorPosition,
|
|
33
|
+
originalShape: selectedShape,
|
|
34
|
+
center: center
|
|
35
|
+
};
|
|
36
|
+
} else if (hoverMode.mode === 'resize') {
|
|
37
|
+
return {
|
|
38
|
+
mode: _Mode.SelectionModeLib.resize,
|
|
39
|
+
cursorStartPosition: cursorPosition,
|
|
40
|
+
originalShape: selectedShape,
|
|
41
|
+
anchor: hoverMode.anchor
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return undefined;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
exports.getNewSelectionData = getNewSelectionData;
|
|
49
|
+
|
|
50
|
+
var selectShape = function selectShape(shapes, cursorPosition, canvasOffset, selectedShape) {
|
|
51
|
+
if (selectedShape) {
|
|
52
|
+
var positionIntersection = (0, _intersect.checkPositionIntersection)(selectedShape, cursorPosition, canvasOffset, true) || {
|
|
53
|
+
mode: _Mode.SelectionModeLib["default"]
|
|
54
|
+
};
|
|
55
|
+
var newSelectionMode = getNewSelectionData(positionIntersection, selectedShape, cursorPosition);
|
|
56
|
+
|
|
57
|
+
if (newSelectionMode) {
|
|
58
|
+
return {
|
|
59
|
+
shape: selectedShape,
|
|
60
|
+
mode: newSelectionMode
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
var foundShape = _fp["default"].find(function (shape) {
|
|
66
|
+
return !!(0, _intersect.checkPositionIntersection)(shape, cursorPosition, canvasOffset, false);
|
|
67
|
+
}, shapes);
|
|
68
|
+
|
|
69
|
+
if (!!foundShape) {
|
|
70
|
+
return {
|
|
71
|
+
shape: foundShape,
|
|
72
|
+
mode: {
|
|
73
|
+
mode: _Mode.SelectionModeLib.translate,
|
|
74
|
+
cursorStartPosition: cursorPosition,
|
|
75
|
+
originalShape: foundShape
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
} else {
|
|
79
|
+
return {
|
|
80
|
+
shape: undefined,
|
|
81
|
+
mode: {
|
|
82
|
+
mode: _Mode.SelectionModeLib["default"]
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
exports.selectShape = selectShape;
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.getShapeInfos = void 0;
|
|
9
|
+
|
|
10
|
+
var _shapes = require("../constants/shapes");
|
|
11
|
+
|
|
12
|
+
var _fp = _interopRequireDefault(require("lodash/fp"));
|
|
13
|
+
|
|
14
|
+
var getLineBorder = function getLineBorder(line) {
|
|
15
|
+
var x = Math.min(line.points[0][0], line.points[1][0]) - _shapes.SELECTION_PADDING;
|
|
16
|
+
|
|
17
|
+
var width = Math.abs(line.points[0][0] - line.points[1][0]) + _shapes.SELECTION_PADDING * 2;
|
|
18
|
+
|
|
19
|
+
var y = Math.min(line.points[0][1], line.points[1][1]) - _shapes.SELECTION_PADDING;
|
|
20
|
+
|
|
21
|
+
var height = Math.abs(line.points[0][1] - line.points[1][1]) + _shapes.SELECTION_PADDING * 2;
|
|
22
|
+
return {
|
|
23
|
+
x: x,
|
|
24
|
+
width: width,
|
|
25
|
+
y: y,
|
|
26
|
+
height: height
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
var getBrushBorder = function getBrushBorder(brush) {
|
|
31
|
+
var brushPoints = _fp["default"].flatMap(function (points) {
|
|
32
|
+
return points;
|
|
33
|
+
}, brush.points);
|
|
34
|
+
|
|
35
|
+
var minX = _fp["default"].flow(_fp["default"].map(function (point) {
|
|
36
|
+
return point[0];
|
|
37
|
+
}), _fp["default"].min, _fp["default"].add(-_shapes.SELECTION_PADDING))(brushPoints);
|
|
38
|
+
|
|
39
|
+
var maxX = _fp["default"].flow(_fp["default"].map(function (point) {
|
|
40
|
+
return point[0];
|
|
41
|
+
}), _fp["default"].max, _fp["default"].add(_shapes.SELECTION_PADDING))(brushPoints);
|
|
42
|
+
|
|
43
|
+
var minY = _fp["default"].flow(_fp["default"].map(function (point) {
|
|
44
|
+
return point[1];
|
|
45
|
+
}), _fp["default"].min, _fp["default"].add(-_shapes.SELECTION_PADDING))(brushPoints);
|
|
46
|
+
|
|
47
|
+
var maxY = _fp["default"].flow(_fp["default"].map(function (point) {
|
|
48
|
+
return point[1];
|
|
49
|
+
}), _fp["default"].max, _fp["default"].add(_shapes.SELECTION_PADDING))(brushPoints);
|
|
50
|
+
|
|
51
|
+
return {
|
|
52
|
+
x: minX,
|
|
53
|
+
width: maxX - minX,
|
|
54
|
+
y: minY,
|
|
55
|
+
height: maxY - minY
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
var getPolygonBorder = function getPolygonBorder(polygon) {
|
|
60
|
+
var minX = _fp["default"].flow(_fp["default"].map(function (point) {
|
|
61
|
+
return point[0];
|
|
62
|
+
}), _fp["default"].min, _fp["default"].add(-_shapes.SELECTION_PADDING))(polygon.points);
|
|
63
|
+
|
|
64
|
+
var maxX = _fp["default"].flow(_fp["default"].map(function (point) {
|
|
65
|
+
return point[0];
|
|
66
|
+
}), _fp["default"].max, _fp["default"].add(_shapes.SELECTION_PADDING))(polygon.points);
|
|
67
|
+
|
|
68
|
+
var minY = _fp["default"].flow(_fp["default"].map(function (point) {
|
|
69
|
+
return point[1];
|
|
70
|
+
}), _fp["default"].min, _fp["default"].add(-_shapes.SELECTION_PADDING))(polygon.points);
|
|
71
|
+
|
|
72
|
+
var maxY = _fp["default"].flow(_fp["default"].map(function (point) {
|
|
73
|
+
return point[1];
|
|
74
|
+
}), _fp["default"].max, _fp["default"].add(_shapes.SELECTION_PADDING))(polygon.points);
|
|
75
|
+
|
|
76
|
+
return {
|
|
77
|
+
x: minX,
|
|
78
|
+
width: maxX - minX,
|
|
79
|
+
y: minY,
|
|
80
|
+
height: maxY - minY
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
var getCurveBorder = getPolygonBorder;
|
|
85
|
+
|
|
86
|
+
var getRectBorder = function getRectBorder(rect) {
|
|
87
|
+
return {
|
|
88
|
+
x: rect.x - _shapes.SELECTION_PADDING,
|
|
89
|
+
width: rect.width + _shapes.SELECTION_PADDING * 2,
|
|
90
|
+
y: rect.y - _shapes.SELECTION_PADDING,
|
|
91
|
+
height: rect.height + _shapes.SELECTION_PADDING * 2
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
var getTextBorder = function getTextBorder(text) {
|
|
96
|
+
return {
|
|
97
|
+
x: text.x - _shapes.SELECTION_PADDING,
|
|
98
|
+
width: text.width + _shapes.SELECTION_PADDING * 2,
|
|
99
|
+
y: text.y - _shapes.SELECTION_PADDING,
|
|
100
|
+
height: text.height + _shapes.SELECTION_PADDING * 2
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
var getPictureBorder = function getPictureBorder(picture) {
|
|
105
|
+
return getRectBorder(picture);
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
var getCircleBorder = function getCircleBorder(circle) {
|
|
109
|
+
return {
|
|
110
|
+
x: circle.x - circle.radius - _shapes.SELECTION_PADDING,
|
|
111
|
+
width: (circle.radius + _shapes.SELECTION_PADDING) * 2,
|
|
112
|
+
y: circle.y - circle.radius - _shapes.SELECTION_PADDING,
|
|
113
|
+
height: (circle.radius + _shapes.SELECTION_PADDING) * 2
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
var getEllipseBorder = function getEllipseBorder(ellipse) {
|
|
118
|
+
return {
|
|
119
|
+
x: ellipse.x - ellipse.radiusX - _shapes.SELECTION_PADDING,
|
|
120
|
+
width: (ellipse.radiusX + _shapes.SELECTION_PADDING) * 2,
|
|
121
|
+
y: ellipse.y - ellipse.radiusY - _shapes.SELECTION_PADDING,
|
|
122
|
+
height: (ellipse.radiusY + _shapes.SELECTION_PADDING) * 2
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
var getShapeBorders = function getShapeBorders(marker) {
|
|
127
|
+
switch (marker.type) {
|
|
128
|
+
case 'brush':
|
|
129
|
+
return getBrushBorder(marker);
|
|
130
|
+
|
|
131
|
+
case 'line':
|
|
132
|
+
return getLineBorder(marker);
|
|
133
|
+
|
|
134
|
+
case 'polygon':
|
|
135
|
+
return getPolygonBorder(marker);
|
|
136
|
+
|
|
137
|
+
case 'curve':
|
|
138
|
+
return getCurveBorder(marker);
|
|
139
|
+
|
|
140
|
+
case 'circle':
|
|
141
|
+
return getCircleBorder(marker);
|
|
142
|
+
|
|
143
|
+
case 'ellipse':
|
|
144
|
+
return getEllipseBorder(marker);
|
|
145
|
+
|
|
146
|
+
case 'rect':
|
|
147
|
+
case 'square':
|
|
148
|
+
return getRectBorder(marker);
|
|
149
|
+
|
|
150
|
+
case 'text':
|
|
151
|
+
return getTextBorder(marker);
|
|
152
|
+
|
|
153
|
+
case 'picture':
|
|
154
|
+
return getPictureBorder(marker);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
return {
|
|
158
|
+
x: 0,
|
|
159
|
+
y: 0,
|
|
160
|
+
width: 0,
|
|
161
|
+
height: 0
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
var getShapeCenter = function getShapeCenter(borders) {
|
|
166
|
+
return [borders.x + borders.width / 2, borders.y + borders.height / 2];
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
var getShapeInfos = function getShapeInfos(shape) {
|
|
170
|
+
var borders = getShapeBorders(shape);
|
|
171
|
+
var center = getShapeCenter(borders);
|
|
172
|
+
return {
|
|
173
|
+
borders: borders,
|
|
174
|
+
center: center
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
exports.getShapeInfos = getShapeInfos;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.decodeHtmlEntities = exports.convertStringArrayToDivContent = exports.convertDivContentToStringArray = void 0;
|
|
9
|
+
|
|
10
|
+
var _fp = _interopRequireDefault(require("lodash/fp"));
|
|
11
|
+
|
|
12
|
+
var stripBrRegexp = /<br(\/?\s?)>/g;
|
|
13
|
+
var stripDivRegexp = /<(\/)?div(\/?\s?)>/g;
|
|
14
|
+
|
|
15
|
+
var convertStringArrayToDivContent = function convertStringArrayToDivContent(toConvert) {
|
|
16
|
+
return toConvert.map(function (val) {
|
|
17
|
+
return "<div>".concat(val === '' ? '<br/>' : val, "</div>");
|
|
18
|
+
}).join('');
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
exports.convertStringArrayToDivContent = convertStringArrayToDivContent;
|
|
22
|
+
|
|
23
|
+
var decodeHtmlEntities = function decodeHtmlEntities(html) {
|
|
24
|
+
var textareaElement = document.createElement('textarea');
|
|
25
|
+
textareaElement.innerHTML = html;
|
|
26
|
+
return textareaElement.value;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
exports.decodeHtmlEntities = decodeHtmlEntities;
|
|
30
|
+
|
|
31
|
+
var convertDivContentToStringArray = function convertDivContentToStringArray(toConvert) {
|
|
32
|
+
return _fp["default"].flow(function (divContent) {
|
|
33
|
+
return decodeHtmlEntities(divContent);
|
|
34
|
+
}, function (divContent) {
|
|
35
|
+
return divContent.split('<div>');
|
|
36
|
+
}, _fp["default"].flatMap(function (val) {
|
|
37
|
+
var newVal = val.replaceAll(stripDivRegexp, '');
|
|
38
|
+
return newVal === '' ? undefined : newVal.replaceAll(stripBrRegexp, '');
|
|
39
|
+
}), _fp["default"].reject(_fp["default"].isUndefined))(toConvert);
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
exports.convertDivContentToStringArray = convertDivContentToStringArray;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { ShapeEnum } from 'types/Shapes';
|
|
2
|
+
export declare const getShapePicture: (shape: ShapeEnum) => "<svg><path d=\"M5.146 17.5Q4.146 17.5 3.208 17Q2.271 16.5 1.667 15.708Q2.208 15.75 2.802 15.344Q3.396 14.938 3.396 14.104Q3.396 13.042 4.135 12.292Q4.875 11.542 5.958 11.542Q7.021 11.542 7.76 12.292Q8.5 13.042 8.5 14.104Q8.5 15.5 7.51 16.5Q6.521 17.5 5.146 17.5ZM9.917 12.5 7.562 10.146 14.917 2.729Q15.146 2.5 15.469 2.5Q15.792 2.5 16.021 2.729L17.271 3.958Q17.5 4.188 17.5 4.531Q17.5 4.875 17.271 5.125Z\"/></svg>" | "<svg><path d=\"M2.5 17.5V2.5H17.5V17.5ZM4.25 15.75H15.75V4.25H4.25ZM4.25 15.75V4.25V15.75Z\"/></svg>" | "<svg><path d=\"M4.25 15.833Q3.521 15.833 3.01 15.323Q2.5 14.812 2.5 14.083V5.917Q2.5 5.188 3.01 4.677Q3.521 4.167 4.25 4.167H15.75Q16.479 4.167 16.99 4.677Q17.5 5.188 17.5 5.917V14.083Q17.5 14.812 16.99 15.323Q16.479 15.833 15.75 15.833ZM4.25 14.083H15.75Q15.75 14.083 15.75 14.083Q15.75 14.083 15.75 14.083V5.917Q15.75 5.917 15.75 5.917Q15.75 5.917 15.75 5.917H4.25Q4.25 5.917 4.25 5.917Q4.25 5.917 4.25 5.917V14.083Q4.25 14.083 4.25 14.083Q4.25 14.083 4.25 14.083ZM4.25 14.083Q4.25 14.083 4.25 14.083Q4.25 14.083 4.25 14.083V5.917Q4.25 5.917 4.25 5.917Q4.25 5.917 4.25 5.917Q4.25 5.917 4.25 5.917Q4.25 5.917 4.25 5.917V14.083Q4.25 14.083 4.25 14.083Q4.25 14.083 4.25 14.083Z\"/></svg>" | "<svg><path d=\"M10 18.333Q8.271 18.333 6.75 17.677Q5.229 17.021 4.104 15.896Q2.979 14.771 2.323 13.25Q1.667 11.729 1.667 10Q1.667 8.271 2.323 6.75Q2.979 5.229 4.104 4.104Q5.229 2.979 6.75 2.323Q8.271 1.667 10 1.667Q11.729 1.667 13.25 2.323Q14.771 2.979 15.896 4.104Q17.021 5.229 17.677 6.75Q18.333 8.271 18.333 10Q18.333 11.729 17.677 13.25Q17.021 14.771 15.896 15.896Q14.771 17.021 13.25 17.677Q11.729 18.333 10 18.333ZM10 16.583Q12.75 16.583 14.667 14.667Q16.583 12.75 16.583 10Q16.583 7.25 14.667 5.333Q12.75 3.417 10 3.417Q7.25 3.417 5.333 5.333Q3.417 7.25 3.417 10Q3.417 12.75 5.333 14.667Q7.25 16.583 10 16.583ZM10 10Q10 10 10 10Q10 10 10 10Q10 10 10 10Q10 10 10 10Q10 10 10 10Q10 10 10 10Q10 10 10 10Q10 10 10 10Z\"/></svg>" | "<svg><path d=\"M12.25 18.333V16.167L6.833 13.458H2.5V8.208H6.25L8.25 5.917V1.667H13.5V6.917H9.708L7.75 9.146V11.958L12.25 14.208V13.083H17.5V18.333Z\"/></svg>" | "<svg><path d=\"M4.792 15.083 8.333 11.542 9.833 13.021 11.667 10.708 15.167 15.083ZM6.667 8.417Q5.938 8.417 5.427 7.906Q4.917 7.396 4.917 6.667Q4.917 5.938 5.427 5.427Q5.938 4.917 6.667 4.917Q7.396 4.917 7.906 5.427Q8.417 5.938 8.417 6.667Q8.417 7.396 7.906 7.906Q7.396 8.417 6.667 8.417ZM4.167 18.333Q3.125 18.333 2.396 17.604Q1.667 16.875 1.667 15.833V4.167Q1.667 3.125 2.396 2.396Q3.125 1.667 4.167 1.667H15.833Q16.875 1.667 17.604 2.396Q18.333 3.125 18.333 4.167V15.833Q18.333 16.875 17.604 17.604Q16.875 18.333 15.833 18.333ZM4.167 16.583H15.833Q16.146 16.583 16.365 16.365Q16.583 16.146 16.583 15.833V4.167Q16.583 3.854 16.365 3.635Q16.146 3.417 15.833 3.417H4.167Q3.854 3.417 3.635 3.635Q3.417 3.854 3.417 4.167V15.833Q3.417 16.146 3.635 16.365Q3.854 16.583 4.167 16.583Z\"/></svg>" | "<svg><path d=\"M8.708 16.667V5.917H4.167V3.333H15.833V5.917H11.292V16.667Z\"/></svg>" | "<svg><path d=\"M7.5 15.833V14.083H12.833L3.333 4.583L4.583 3.333L14.083 12.833V7.5H15.833V15.833Z\"/></svg>" | "<svg><path d=\"M10 15.833Q7.917 15.833 6.667 14.177Q5.417 12.521 5.417 10Q5.417 7.479 6.667 5.823Q7.917 4.167 10 4.167Q12.083 4.167 13.333 5.823Q14.583 7.479 14.583 10Q14.583 12.521 13.333 14.177Q12.083 15.833 10 15.833ZM10 14.042Q11.375 14.042 12.021 12.833Q12.667 11.625 12.667 10Q12.667 8.375 12.021 7.167Q11.375 5.958 10 5.958Q8.625 5.958 7.979 7.167Q7.333 8.375 7.333 10Q7.333 11.625 7.979 12.833Q8.625 14.042 10 14.042Z\"/></svg>" | "<svg><path d=\"M7.521 17.5Q6.125 17.5 5.146 16.51Q4.167 15.521 4.167 14.125V7.417Q3.438 7.125 2.969 6.49Q2.5 5.854 2.5 5.042Q2.5 3.979 3.24 3.24Q3.979 2.5 5.042 2.5Q6.104 2.5 6.844 3.24Q7.583 3.979 7.583 5.042Q7.583 5.854 7.115 6.49Q6.646 7.125 5.917 7.417V14.125Q5.917 14.792 6.385 15.271Q6.854 15.75 7.521 15.75Q8.188 15.75 8.656 15.271Q9.125 14.792 9.125 14.125V5.875Q9.125 4.479 10.104 3.49Q11.083 2.5 12.479 2.5Q13.875 2.5 14.854 3.49Q15.833 4.479 15.833 5.875V12.583Q16.562 12.875 17.031 13.51Q17.5 14.146 17.5 14.958Q17.5 16.021 16.76 16.76Q16.021 17.5 14.958 17.5Q13.896 17.5 13.156 16.76Q12.417 16.021 12.417 14.958Q12.417 14.146 12.885 13.5Q13.354 12.854 14.083 12.583V5.875Q14.083 5.208 13.615 4.729Q13.146 4.25 12.479 4.25Q11.812 4.25 11.344 4.729Q10.875 5.208 10.875 5.875V14.125Q10.875 15.521 9.896 16.51Q8.917 17.5 7.521 17.5Z\"/></svg>";
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getShapePicture = void 0;
|
|
7
|
+
|
|
8
|
+
var _Shapes = require("../types/Shapes");
|
|
9
|
+
|
|
10
|
+
var _icons = require("../constants/icons");
|
|
11
|
+
|
|
12
|
+
var getShapePicture = function getShapePicture(shape) {
|
|
13
|
+
switch (shape) {
|
|
14
|
+
case _Shapes.ShapeEnum.brush:
|
|
15
|
+
return _icons.brushIcon;
|
|
16
|
+
|
|
17
|
+
case _Shapes.ShapeEnum.line:
|
|
18
|
+
return _icons.arrowIcon;
|
|
19
|
+
|
|
20
|
+
case _Shapes.ShapeEnum.polygon:
|
|
21
|
+
return _icons.polygonIcon;
|
|
22
|
+
|
|
23
|
+
case _Shapes.ShapeEnum.curve:
|
|
24
|
+
return _icons.curveIcon;
|
|
25
|
+
|
|
26
|
+
case _Shapes.ShapeEnum.rect:
|
|
27
|
+
return _icons.recIcon;
|
|
28
|
+
|
|
29
|
+
case _Shapes.ShapeEnum.square:
|
|
30
|
+
return _icons.squareIcon;
|
|
31
|
+
|
|
32
|
+
case _Shapes.ShapeEnum.circle:
|
|
33
|
+
return _icons.circleIcon;
|
|
34
|
+
|
|
35
|
+
case _Shapes.ShapeEnum.ellipse:
|
|
36
|
+
return _icons.ellipseIcon;
|
|
37
|
+
|
|
38
|
+
case _Shapes.ShapeEnum.text:
|
|
39
|
+
return _icons.textIcon;
|
|
40
|
+
|
|
41
|
+
case _Shapes.ShapeEnum.picture:
|
|
42
|
+
return _icons.pictureIcon;
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
exports.getShapePicture = getShapePicture;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ShapeEnum } from 'types/Shapes';
|
|
2
|
+
export declare const getCurrentStructure: (availableTools: ShapeEnum[], defaultStructure: (ShapeEnum | {
|
|
3
|
+
title: string;
|
|
4
|
+
img: string;
|
|
5
|
+
tools: ShapeEnum[];
|
|
6
|
+
vertical: boolean;
|
|
7
|
+
})[]) => (ShapeEnum | {
|
|
8
|
+
tools: ShapeEnum[];
|
|
9
|
+
title: string;
|
|
10
|
+
vertical: boolean;
|
|
11
|
+
img: string;
|
|
12
|
+
})[];
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.getCurrentStructure = void 0;
|
|
9
|
+
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
|
|
12
|
+
var _fp = _interopRequireDefault(require("lodash/fp"));
|
|
13
|
+
|
|
14
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
15
|
+
|
|
16
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
17
|
+
|
|
18
|
+
var getCurrentStructure = function getCurrentStructure(availableTools, defaultStructure) {
|
|
19
|
+
return _fp["default"].flow(_fp["default"].map(function (group) {
|
|
20
|
+
if (!_fp["default"].isObject(group)) {
|
|
21
|
+
if (_fp["default"].includes(group, availableTools)) {
|
|
22
|
+
return group;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
var tools = _fp["default"].intersection(availableTools, group.tools);
|
|
29
|
+
|
|
30
|
+
if (!tools) return null;
|
|
31
|
+
return _objectSpread(_objectSpread({}, group), {}, {
|
|
32
|
+
tools: tools
|
|
33
|
+
});
|
|
34
|
+
}), _fp["default"].compact)(defaultStructure);
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
exports.getCurrentStructure = getCurrentStructure;
|