react-planner-viewer
Version:
react-planner-viewer is a React Component for view plans builded with react-planner in 2D mode
100 lines (83 loc) • 10.8 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var STYLE_TEXT = {
textAnchor: 'middle',
fontSize: '12px',
fontFamily: '"Courier New", Courier, monospace',
pointerEvents: 'none',
fontWeight: 'bold',
zIndex: 100,
//http://stackoverflow.com/questions/826782/how-to-disable-text-selection-highlighting-using-css
WebkitTouchCallout: 'none', /* iOS Safari */
WebkitUserSelect: 'none', /* Chrome/Safari/Opera */
MozUserSelect: 'none', /* Firefox */
MsUserSelect: 'none', /* Internet Explorer/Edge */
userSelect: 'none'
};
exports.default = {
name: 'access',
prototype: 'holes',
info: {
tag: ['access'],
group: 'access',
title: 'access',
description: 'hole in the wall',
image: require('./gate.png')
},
properties: {
width: {
label: 'width',
type: 'length-measure',
defaultValue: {
length: 80
}
},
gate: {
label: 'gate',
type: 'string',
selectAreas: true,
defaultValue: "none"
}
},
render2D: function render2D(element, layer, scene, fontSize) {
var STYLE_HOLE_BASE = { stroke: '#000', strokeWidth: '3px', fill: '#000' };
var STYLE_HOLE_SELECTED = { stroke: '#0096fd', strokeWidth: '4px', fill: '#0096fd', cursor: 'move' };
var STYLE_ARC_BASE = { stroke: '#000', strokeWidth: '3px', strokeDasharray: '5,5', fill: 'none' };
var STYLE_ARC_SELECTED = {
stroke: '#0096fd',
strokeWidth: '4px',
strokeDasharray: '5,5',
fill: 'none',
cursor: 'move'
};
var epsilon = 3;
var holeWidth = element.properties.get('width').get('length');
var arcPath = 'M' + 0 + ',' + 0 + ' A' + 0 + ',' + 0 + ' 0 0,1 ' + holeWidth + ',' + 0;
var holeStyle = element.selected ? STYLE_HOLE_SELECTED : STYLE_HOLE_BASE;
var arcStyle = element.selected ? STYLE_ARC_SELECTED : STYLE_ARC_BASE;
var length = element.properties.get('width').get('length');
return _react2.default.createElement(
'g',
{ transform: 'translate(' + -length / 2 + ', 0)' },
_react2.default.createElement(
'text',
{ x: holeWidth / 2, y: '-10', transform: 'scale(1, -1)', style: _extends({}, STYLE_TEXT, { fontSize: fontSize + 'px' }) },
element.getIn(['properties', 'gate'])
),
_react2.default.createElement('line', { key: '1', x1: 0, y1: holeWidth / 6 - epsilon, x2: 0, y2: -holeWidth / 6 + epsilon, style: holeStyle,
transform: 'scale(' + -1 + ',' + 1 + ')' }),
_react2.default.createElement('line', { key: '2', x1: -holeWidth, y1: holeWidth / 6 - epsilon, x2: -holeWidth, y2: -holeWidth / 6 + epsilon, style: holeStyle,
transform: 'scale(' + -1 + ',' + 1 + ')' }),
_react2.default.createElement('path', { key: '3', d: arcPath, style: arcStyle })
);
}
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jYXRhbG9nL215Q2F0YWxvZy9ob2xlcy9nYXRlL3BsYW5uZXItZWxlbWVudC5qc3giXSwibmFtZXMiOlsiU1RZTEVfVEVYVCIsInRleHRBbmNob3IiLCJmb250U2l6ZSIsImZvbnRGYW1pbHkiLCJwb2ludGVyRXZlbnRzIiwiZm9udFdlaWdodCIsInpJbmRleCIsIldlYmtpdFRvdWNoQ2FsbG91dCIsIldlYmtpdFVzZXJTZWxlY3QiLCJNb3pVc2VyU2VsZWN0IiwiTXNVc2VyU2VsZWN0IiwidXNlclNlbGVjdCIsIm5hbWUiLCJwcm90b3R5cGUiLCJpbmZvIiwidGFnIiwiZ3JvdXAiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwiaW1hZ2UiLCJyZXF1aXJlIiwicHJvcGVydGllcyIsIndpZHRoIiwibGFiZWwiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwibGVuZ3RoIiwiZ2F0ZSIsInNlbGVjdEFyZWFzIiwicmVuZGVyMkQiLCJlbGVtZW50IiwibGF5ZXIiLCJzY2VuZSIsIlNUWUxFX0hPTEVfQkFTRSIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwiZmlsbCIsIlNUWUxFX0hPTEVfU0VMRUNURUQiLCJjdXJzb3IiLCJTVFlMRV9BUkNfQkFTRSIsInN0cm9rZURhc2hhcnJheSIsIlNUWUxFX0FSQ19TRUxFQ1RFRCIsImVwc2lsb24iLCJob2xlV2lkdGgiLCJnZXQiLCJhcmNQYXRoIiwiaG9sZVN0eWxlIiwic2VsZWN0ZWQiLCJhcmNTdHlsZSIsImdldEluIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7OztBQUVBLElBQUlBLGFBQWE7QUFDZkMsY0FBWSxRQURHO0FBRWZDLFlBQVUsTUFGSztBQUdmQyxjQUFZLG1DQUhHO0FBSWZDLGlCQUFlLE1BSkE7QUFLZkMsY0FBWSxNQUxHO0FBTWZDLFVBQVEsR0FOTzs7QUFRZjtBQUNBQyxzQkFBb0IsTUFUTCxFQVNhO0FBQzVCQyxvQkFBa0IsTUFWSCxFQVVXO0FBQzFC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QSxTQUFELEdBQWEsQ0FBYixHQUFpQkQsT0FBaEcsRUFBeUcsT0FBT0ksU0FBaEg7QUFDRSw4QkFBb0IsQ0FBQyxDQUFyQixTQUEwQixDQUExQixNQURGLEdBTkY7QUFRRSw4Q0FBTSxLQUFJLEdBQVYsRUFBYyxHQUFHRCxPQUFqQixFQUEwQixPQUFPRyxRQUFqQztBQVJGLEtBREY7QUFZRDs7QUE3RFksQyIsImZpbGUiOiJwbGFubmVyLWVsZW1lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbnZhciBTVFlMRV9URVhUID0ge1xuICB0ZXh0QW5jaG9yOiAnbWlkZGxlJyxcbiAgZm9udFNpemU6ICcxMnB4JyxcbiAgZm9udEZhbWlseTogJ1wiQ291cmllciBOZXdcIiwgQ291cmllciwgbW9ub3NwYWNlJyxcbiAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICBmb250V2VpZ2h0OiAnYm9sZCcsXG4gIHpJbmRleDogMTAwLFxuXG4gIC8vaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy84MjY3ODIvaG93LXRvLWRpc2FibGUtdGV4dC1zZWxlY3Rpb24taGlnaGxpZ2h0aW5nLXVzaW5nLWNzc1xuICBXZWJraXRUb3VjaENhbGxvdXQ6ICdub25lJywgLyogaU9TIFNhZmFyaSAqL1xuICBXZWJraXRVc2VyU2VsZWN0OiAnbm9uZScsIC8qIENocm9tZS9TYWZhcmkvT3BlcmEgKi9cbiAgTW96VXNlclNlbGVjdDogJ25vbmUnLCAvKiBGaXJlZm94ICovXG4gIE1zVXNlclNlbGVjdDogJ25vbmUnLCAvKiBJbnRlcm5ldCBFeHBsb3Jlci9FZGdlICovXG4gIHVzZXJTZWxlY3Q6ICdub25lJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnYWNjZXNzJyxcbiAgcHJvdG90eXBlOiAnaG9sZXMnLFxuICBpbmZvOiB7XG4gICAgdGFnOiBbJ2FjY2VzcyddLFxuICAgIGdyb3VwOiAnYWNjZXNzJyxcbiAgICB0aXRsZTogJ2FjY2VzcycsXG4gICAgZGVzY3JpcHRpb246ICdob2xlIGluIHRoZSB3YWxsJyxcbiAgICBpbWFnZTogcmVxdWlyZSgnLi9nYXRlLnBuZycpXG4gIH0sXG5cbiAgcHJvcGVydGllczoge1xuICAgIHdpZHRoOiB7XG4gICAgICBsYWJlbDogJ3dpZHRoJyxcbiAgICAgIHR5cGU6ICdsZW5ndGgtbWVhc3VyZScsXG4gICAgICBkZWZhdWx0VmFsdWU6IHtcbiAgICAgICAgbGVuZ3RoOiA4MFxuICAgICAgfVxuICAgIH0sXG4gICAgZ2F0ZToge1xuICAgICAgbGFiZWw6ICdnYXRlJyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgc2VsZWN0QXJlYXM6IHRydWUsXG4gICAgICBkZWZhdWx0VmFsdWU6IFwibm9uZVwiLFxuICAgIH0sXG5cbiAgfSxcblxuICByZW5kZXIyRDogZnVuY3Rpb24gKGVsZW1lbnQsIGxheWVyLCBzY2VuZSwgZm9udFNpemUpIHtcbiAgICBjb25zdCBTVFlMRV9IT0xFX0JBU0UgPSB7IHN0cm9rZTogJyMwMDAnLCBzdHJva2VXaWR0aDogJzNweCcsIGZpbGw6ICcjMDAwJyB9O1xuICAgIGNvbnN0IFNUWUxFX0hPTEVfU0VMRUNURUQgPSB7IHN0cm9rZTogJyMwMDk2ZmQnLCBzdHJva2VXaWR0aDogJzRweCcsIGZpbGw6ICcjMDA5NmZkJywgY3Vyc29yOiAnbW92ZScgfTtcbiAgICBjb25zdCBTVFlMRV9BUkNfQkFTRSA9IHsgc3Ryb2tlOiAnIzAwMCcsIHN0cm9rZVdpZHRoOiAnM3B4Jywgc3Ryb2tlRGFzaGFycmF5OiAnNSw1JywgZmlsbDogJ25vbmUnIH07XG4gICAgY29uc3QgU1RZTEVfQVJDX1NFTEVDVEVEID0ge1xuICAgICAgc3Ryb2tlOiAnIzAwOTZmZCcsXG4gICAgICBzdHJva2VXaWR0aDogJzRweCcsXG4gICAgICBzdHJva2VEYXNoYXJyYXk6ICc1LDUnLFxuICAgICAgZmlsbDogJ25vbmUnLFxuICAgICAgY3Vyc29yOiAnbW92ZSdcbiAgICB9O1xuXG4gICAgbGV0IGVwc2lsb24gPSAzO1xuXG4gICAgbGV0IGhvbGVXaWR0aCA9IGVsZW1lbnQucHJvcGVydGllcy5nZXQoJ3dpZHRoJykuZ2V0KCdsZW5ndGgnKTtcbiAgICBsZXQgYXJjUGF0aCA9IGBNJHswfSwkezB9ICBBJHswfSwkezB9IDAgMCwxICR7aG9sZVdpZHRofSwkezB9YDtcbiAgICBsZXQgaG9sZVN0eWxlID0gZWxlbWVudC5zZWxlY3RlZCA/IFNUWUxFX0hPTEVfU0VMRUNURUQgOiBTVFlMRV9IT0xFX0JBU0U7XG4gICAgbGV0IGFyY1N0eWxlID0gZWxlbWVudC5zZWxlY3RlZCA/IFNUWUxFX0FSQ19TRUxFQ1RFRCA6IFNUWUxFX0FSQ19CQVNFO1xuICAgIGxldCBsZW5ndGggPSBlbGVtZW50LnByb3BlcnRpZXMuZ2V0KCd3aWR0aCcpLmdldCgnbGVuZ3RoJyk7XG5cblxuICAgIHJldHVybiAoXG4gICAgICA8ZyB0cmFuc2Zvcm09e2B0cmFuc2xhdGUoJHstbGVuZ3RoIC8gMn0sIDApYH0+XG4gICAgICAgIDx0ZXh0IHg9e2hvbGVXaWR0aC8yfSB5PVwiLTEwXCIgdHJhbnNmb3JtPXtgc2NhbGUoMSwgLTEpYH0gc3R5bGU9e3sgLi4uU1RZTEVfVEVYVCwgZm9udFNpemU6IGZvbnRTaXplICsgJ3B4JyB9fT5cbiAgICAgICAgICB7ZWxlbWVudC5nZXRJbihbJ3Byb3BlcnRpZXMnLCAnZ2F0ZSddKX1cbiAgICAgICAgPC90ZXh0PlxuICAgICAgICA8bGluZSBrZXk9JzEnIHgxPXswfSB5MT17aG9sZVdpZHRoIC8gNiAtIGVwc2lsb259IHgyPXswfSB5Mj17LWhvbGVXaWR0aCAvIDYgKyBlcHNpbG9ufSBzdHlsZT17aG9sZVN0eWxlfVxuICAgICAgICAgIHRyYW5zZm9ybT17YHNjYWxlKCR7LTF9LCR7MX0pYH0gLz5cbiAgICAgICAgPGxpbmUga2V5PScyJyB4MT17LWhvbGVXaWR0aH0geTE9e2hvbGVXaWR0aCAvIDYgLSBlcHNpbG9ufSB4Mj17LWhvbGVXaWR0aH0geTI9ey1ob2xlV2lkdGggLyA2ICsgZXBzaWxvbn0gc3R5bGU9e2hvbGVTdHlsZX1cbiAgICAgICAgICB0cmFuc2Zvcm09e2BzY2FsZSgkey0xfSwkezF9KWB9IC8+XG4gICAgICAgIDxwYXRoIGtleT0nMycgZD17YXJjUGF0aH0gc3R5bGU9e2FyY1N0eWxlfSAvPlxuICAgICAgPC9nPlxuICAgIClcbiAgfVxuXG59XG5cbiJdfQ==