core-graphics
Version:
A core library for creating shape-based graphic editors
45 lines (37 loc) • 1.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getShapesSelectedWithRubberBand = getShapesSelectedWithRubberBand;
exports.getResultingRubberBandSelectedShapes = getResultingRubberBandSelectedShapes;
var _boundingBox = require('../utils/bounding-box');
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
function getShapesSelectedWithRubberBand(payload) {
var pStart = payload.pStart;
var pEnd = payload.pEnd;
var shapesData = payload.shapesData;
var shapesDeclarations = payload.shapesDeclarations;
var indexedBoundingBoxes = shapesData.map(function (shapeData) {
var id = shapeData.id;
var type = shapeData.type;
return { id: id, bb: shapesDeclarations[type].getBoundingBox(shapeData) };
});
var rubberBandBB = (0, _boundingBox.getBoundingBoxFromTwoPoints)(pStart, pEnd);
return indexedBoundingBoxes.filter(function (_ref) {
var bb = _ref.bb;
return (0, _boundingBox.doBoundingBoxesCollide)(rubberBandBB, bb);
}).map(function (_ref2) {
var id = _ref2.id;
return id;
});
}
function getResultingRubberBandSelectedShapes(payload) {
if (!payload) {
return [];
}
var _payload$newlySelecte = payload.newlySelectedShapes;
var newlySelectedShapes = _payload$newlySelecte === undefined ? [] : _payload$newlySelecte;
var _payload$previouslySe = payload.previouslySelectedShapes;
var previouslySelectedShapes = _payload$previouslySe === undefined ? [] : _payload$previouslySe;
return [].concat(_toConsumableArray(previouslySelectedShapes), _toConsumableArray(newlySelectedShapes));
}