UNPKG

react-planner-viewer

Version:

react-planner-viewer is a React Component for view plans builded with react-planner in 2D mode

92 lines (69 loc) 10.1 kB
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); import { addPointSnap, addLineSnap, addLineSegmentSnap, addGridSnap } from './snap'; import * as Geometry from './geometry'; import { Map, List } from 'immutable'; import { SNAP_POINT, SNAP_LINE, SNAP_SEGMENT, SNAP_GRID } from './snap'; export function sceneSnapElements(scene) { var snapElements = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new List(); var snapMask = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Map(); var a = void 0, b = void 0, c = void 0; return snapElements.withMutations(function (snapElements) { scene.layers.forEach(function (layer) { var lines = layer.lines, vertices = layer.vertices; vertices.forEach(function (_ref) { var vertexID = _ref.id, x = _ref.x, y = _ref.y; if (snapMask.get(SNAP_POINT)) { addPointSnap(snapElements, x, y, 10, 10, vertexID); } if (snapMask.get(SNAP_LINE)) { var _Geometry$horizontalL = Geometry.horizontalLine(y); a = _Geometry$horizontalL.a; b = _Geometry$horizontalL.b; c = _Geometry$horizontalL.c; addLineSnap(snapElements, a, b, c, 10, 1, vertexID); var _Geometry$verticalLin = Geometry.verticalLine(x); a = _Geometry$verticalLin.a; b = _Geometry$verticalLin.b; c = _Geometry$verticalLin.c; addLineSnap(snapElements, a, b, c, 10, 1, vertexID); } }); if (snapMask.get(SNAP_SEGMENT)) { lines.forEach(function (_ref2) { var lineID = _ref2.id, _ref2$vertices = _slicedToArray(_ref2.vertices, 2), v0 = _ref2$vertices[0], v1 = _ref2$vertices[1]; var _vertices$get = vertices.get(v0), x1 = _vertices$get.x, y1 = _vertices$get.y; var _vertices$get2 = vertices.get(v1), x2 = _vertices$get2.x, y2 = _vertices$get2.y; addLineSegmentSnap(snapElements, x1, y1, x2, y2, 20, 1, lineID); }); } }); if (snapMask.get(SNAP_GRID)) { var divider = 5; var gridCellSize = 100 / divider; var xCycle = scene.get('width') / gridCellSize; var yCycle = scene.get('height') / gridCellSize; for (var x = 0; x < xCycle; x++) { var xMul = x * gridCellSize; for (var y = 0; y < yCycle; y++) { var yMul = y * gridCellSize; var onXCross = !(x % divider) ? true : false; var onYCross = !(y % divider) ? true : false; addGridSnap(snapElements, xMul, yMul, 10, onXCross && onYCross ? 15 : 10, null); } } } }); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zbmFwLXNjZW5lLmpzIl0sIm5hbWVzIjpbImFkZFBvaW50U25hcCIsImFkZExpbmVTbmFwIiwiYWRkTGluZVNlZ21lbnRTbmFwIiwiYWRkR3JpZFNuYXAiLCJHZW9tZXRyeSIsIk1hcCIsIkxpc3QiLCJTTkFQX1BPSU5UIiwiU05BUF9MSU5FIiwiU05BUF9TRUdNRU5UIiwiU05BUF9HUklEIiwic2NlbmVTbmFwRWxlbWVudHMiLCJzY2VuZSIsInNuYXBFbGVtZW50cyIsInNuYXBNYXNrIiwiYSIsImIiLCJjIiwid2l0aE11dGF0aW9ucyIsImxheWVycyIsImZvckVhY2giLCJsaW5lcyIsImxheWVyIiwidmVydGljZXMiLCJ2ZXJ0ZXhJRCIsImlkIiwieCIsInkiLCJnZXQiLCJob3Jpem9udGFsTGluZSIsInZlcnRpY2FsTGluZSIsImxpbmVJRCIsInYwIiwidjEiLCJ4MSIsInkxIiwieDIiLCJ5MiIsImRpdmlkZXIiLCJncmlkQ2VsbFNpemUiLCJ4Q3ljbGUiLCJ5Q3ljbGUiLCJ4TXVsIiwieU11bCIsIm9uWENyb3NzIiwib25ZQ3Jvc3MiXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsWUFBVCxFQUF1QkMsV0FBdkIsRUFBb0NDLGtCQUFwQyxFQUF3REMsV0FBeEQsUUFBMkUsUUFBM0U7QUFDQSxPQUFPLEtBQUtDLFFBQVosTUFBMEIsWUFBMUI7QUFDQSxTQUFTQyxHQUFULEVBQWNDLElBQWQsUUFBMEIsV0FBMUI7QUFDQSxTQUFTQyxVQUFULEVBQXFCQyxTQUFyQixFQUFnQ0MsWUFBaEMsRUFBOENDLFNBQTlDLFFBQStELFFBQS9EOztBQUVBLE9BQU8sU0FBU0MsaUJBQVQsQ0FBMkJDLEtBQTNCLEVBQW1GO0FBQUEsTUFBakRDLFlBQWlELHVFQUFsQyxJQUFJUCxJQUFKLEVBQWtDO0FBQUEsTUFBdEJRLFFBQXNCLHVFQUFYLElBQUlULEdBQUosRUFBVzs7O0FBRXhGLE1BQUlVLFVBQUo7QUFBQSxNQUFPQyxVQUFQO0FBQUEs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O0FBQy9CLGNBQUlnQixPQUFPaEIsSUFBSVksWUFBZjs7QUFFQSxjQUFJSyxXQUFXLEVBQUVsQixJQUFJWSxPQUFOLElBQWlCLElBQWpCLEdBQXdCLEtBQXZDO0FBQ0EsY0FBSU8sV0FBVyxFQUFFbEIsSUFBSVcsT0FBTixJQUFpQixJQUFqQixHQUF3QixLQUF2Qzs7QUFFQW5DLHNCQUFZVSxZQUFaLEVBQTBCNkIsSUFBMUIsRUFBZ0NDLElBQWhDLEVBQXNDLEVBQXRDLEVBQTBDQyxZQUFZQyxRQUFaLEdBQXVCLEVBQXZCLEdBQTRCLEVBQXRFLEVBQTBFLElBQTFFO0FBQ0Q7QUFDRjtBQUNGO0FBRUYsR0FuRE0sQ0FBUDtBQW9ERCIsImZpbGUiOiJzbmFwLXNjZW5lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWRkUG9pbnRTbmFwLCBhZGRMaW5lU25hcCwgYWRkTGluZVNlZ21lbnRTbmFwLCBhZGRHcmlkU25hcCB9IGZyb20gJy4vc25hcCc7XG5pbXBvcnQgKiBhcyBHZW9tZXRyeSBmcm9tICcuL2dlb21ldHJ5JztcbmltcG9ydCB7IE1hcCwgTGlzdCB9IGZyb20gJ2ltbXV0YWJsZSc7XG5pbXBvcnQgeyBTTkFQX1BPSU5ULCBTTkFQX0xJTkUsIFNOQVBfU0VHTUVOVCwgU05BUF9HUklEIH0gZnJvbSAnLi9zbmFwJztcblxuZXhwb3J0IGZ1bmN0aW9uIHNjZW5lU25hcEVsZW1lbnRzKHNjZW5lLCBzbmFwRWxlbWVudHMgPSBuZXcgTGlzdCgpLCBzbmFwTWFzayA9IG5ldyBNYXAoKSkge1xuXG4gIGxldCBhLCBiLCBjO1xuICByZXR1cm4gc25hcEVsZW1lbnRzLndpdGhNdXRhdGlvbnMoc25hcEVsZW1lbnRzID0+IHtcbiAgICBzY2VuZS5sYXllcnMuZm9yRWFjaChsYXllciA9PiB7XG5cbiAgICAgIGxldCB7IGxpbmVzLCB2ZXJ0aWNlcyB9ID0gbGF5ZXI7XG5cbiAgICAgIHZlcnRpY2VzLmZvckVhY2goKHsgaWQ6IHZlcnRleElELCB4LCB5IH0pID0+IHtcblxuICAgICAgICBpZiAoc25hcE1hc2suZ2V0KFNOQVBfUE9JTlQpKSB7XG4gICAgICAgICAgYWRkUG9pbnRTbmFwKHNuYXBFbGVtZW50cywgeCwgeSwgMTAsIDEwLCB2ZXJ0ZXhJRCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc25hcE1hc2suZ2V0KFNOQVBfTElORSkpIHtcbiAgICAgICAgICAoeyBhLCBiLCBjIH0gPSBHZW9tZXRyeS5ob3Jpem9udGFsTGluZSh5KSk7XG4gICAgICAgICAgYWRkTGluZVNuYXAoc25hcEVsZW1lbnRzLCBhLCBiLCBjLCAxMCwgMSwgdmVydGV4SUQpO1xuICAgICAgICAgICh7IGEsIGIsIGMgfSA9IEdlb21ldHJ5LnZlcnRpY2FsTGluZSh4KSk7XG4gICAgICAgICAgYWRkTGluZVNuYXAoc25hcEVsZW1lbnRzLCBhLCBiLCBjLCAxMCwgMSwgdmVydGV4SUQpO1xuICAgICAgICB9XG5cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoc25hcE1hc2suZ2V0KFNOQVBfU0VHTUVOVCkpIHtcbiAgICAgICAgbGluZXMuZm9yRWFjaCgoeyBpZDogbGluZUlELCB2ZXJ0aWNlczogW3YwLCB2MV0gfSkgPT4ge1xuICAgICAgICAgIGxldCB7IHg6IHgxLCB5OiB5MSB9ID0gdmVydGljZXMuZ2V0KHYwKTtcbiAgICAgICAgICBsZXQgeyB4OiB4MiwgeTogeTIgfSA9IHZlcnRpY2VzLmdldCh2MSk7XG5cbiAgICAgICAgICBhZGRMaW5lU2VnbWVudFNuYXAoc25hcEVsZW1lbnRzLCB4MSwgeTEsIHgyLCB5MiwgMjAsIDEsIGxpbmVJRCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgfSk7XG5cbiAgICBpZiAoc25hcE1hc2suZ2V0KFNOQVBfR1JJRCkpIHtcbiAgICAgIGxldCBkaXZpZGVyID0gNTtcbiAgICAgIGxldCBncmlkQ2VsbFNpemUgPSAxMDAgLyBkaXZpZGVyO1xuICAgICAgbGV0IHhDeWNsZSA9IHNjZW5lLmdldCgnd2lkdGgnKSAvIGdyaWRDZWxsU2l6ZTtcbiAgICAgIGxldCB5Q3ljbGUgPSBzY2VuZS5nZXQoJ2hlaWdodCcpIC8gZ3JpZENlbGxTaXplO1xuXG4gICAgICBmb3IgKGxldCB4ID0gMDsgeCA8IHhDeWNsZTsgeCsrKSB7XG4gICAgICAgIGxldCB4TXVsID0geCAqIGdyaWRDZWxsU2l6ZTtcblxuICAgICAgICBmb3IgKGxldCB5ID0gMDsgeSA8IHlDeWNsZTsgeSsrKSB7XG4gICAgICAgICAgbGV0IHlNdWwgPSB5ICogZ3JpZENlbGxTaXplO1xuXG4gICAgICAgICAgbGV0IG9uWENyb3NzID0gISh4ICUgZGl2aWRlcikgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgICAgbGV0IG9uWUNyb3NzID0gISh5ICUgZGl2aWRlcikgPyB0cnVlIDogZmFsc2U7XG5cbiAgICAgICAgICBhZGRHcmlkU25hcChzbmFwRWxlbWVudHMsIHhNdWwsIHlNdWwsIDEwLCBvblhDcm9zcyAmJiBvbllDcm9zcyA/IDE1IDogMTAsIG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gIH0pXG59XG4iXX0=