react-planner-viewer
Version:
react-planner-viewer is a React Component for view plans builded with react-planner in 2D mode
87 lines (76 loc) • 10.6 kB
JavaScript
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; };
import React from 'react';
import path from 'path';
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'
};
export 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 React.createElement(
'g',
{ transform: 'translate(' + -length / 2 + ', 0)' },
React.createElement(
'text',
{ x: holeWidth / 2, y: '-10', transform: 'scale(1, -1)', style: _extends({}, STYLE_TEXT, { fontSize: fontSize + 'px' }) },
element.getIn(['properties', 'gate'])
),
React.createElement('line', { key: '1', x1: 0, y1: holeWidth / 6 - epsilon, x2: 0, y2: -holeWidth / 6 + epsilon, style: holeStyle,
transform: 'scale(' + -1 + ',' + 1 + ')' }),
React.createElement('line', { key: '2', x1: -holeWidth, y1: holeWidth / 6 - epsilon, x2: -holeWidth, y2: -holeWidth / 6 + epsilon, style: holeStyle,
transform: 'scale(' + -1 + ',' + 1 + ')' }),
React.createElement('path', { key: '3', d: arcPath, style: arcStyle })
);
}
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jYXRhbG9nL215Q2F0YWxvZy9ob2xlcy9nYXRlL3BsYW5uZXItZWxlbWVudC5qc3giXSwibmFtZXMiOlsiUmVhY3QiLCJwYXRoIiwiU1RZTEVfVEVYVCIsInRleHRBbmNob3IiLCJmb250U2l6ZSIsImZvbnRGYW1pbHkiLCJwb2ludGVyRXZlbnRzIiwiZm9udFdlaWdodCIsInpJbmRleCIsIldlYmtpdFRvdWNoQ2FsbG91dCIsIldlYmtpdFVzZXJTZWxlY3QiLCJNb3pVc2VyU2VsZWN0IiwiTXNVc2VyU2VsZWN0IiwidXNlclNlbGVjdCIsIm5hbWUiLCJwcm90b3R5cGUiLCJpbmZvIiwidGFnIiwiZ3JvdXAiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwiaW1hZ2UiLCJyZXF1aXJlIiwicHJvcGVydGllcyIsIndpZHRoIiwibGFiZWwiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwibGVuZ3RoIiwiZ2F0ZSIsInNlbGVjdEFyZWFzIiwicmVuZGVyMkQiLCJlbGVtZW50IiwibGF5ZXIiLCJzY2VuZSIsIlNUWUxFX0hPTEVfQkFTRSIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwiZmlsbCIsIlNUWUxFX0hPTEVfU0VMRUNURUQiLCJjdXJzb3IiLCJTVFlMRV9BUkNfQkFTRSIsInN0cm9rZURhc2hhcnJheSIsIlNUWUxFX0FSQ19TRUxFQ1RFRCIsImVwc2lsb24iLCJob2xlV2lkdGgiLCJnZXQiLCJhcmNQYXRoIiwiaG9sZVN0eWxlIiwic2VsZWN0ZWQiLCJhcmNTdHlsZSIsImdldEluIl0sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU9BLEtBQVAsTUFBa0IsT0FBbEI7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLE1BQWpCOztBQUVBLElBQUlDLGFBQWE7QUFDZkMsY0FBWSxRQURHO0FBRWZDLFlBQVUsTUFGSztBQUdmQyxjQUFZLG1DQUhHO0FBSWZDLGlCQUFlLE1BSkE7QUFLZkMsY0FBWSxNQUxHO0FBTWZDLFVBQVEsR0FOTzs7QUFRZjtBQUNBQyxzQkFBb0IsTUFUTCxFQVNhO0FBQzVCQyxvQkFBa0IsTUFWSCxFQVVXO0FBQzFCQyxpQkFBZSxNQVhBLEVBV1E7QUFDdkJDLGdCQUFjLE1BWkMsRUFZTztBQUN0QkMsY0FBWTtBQWJHLENBQWpCOztBQWdCQSxlQUFlO0FBQ2JDLFFBQU0sUUFETztBQUViQyxhQUFXLE9BRkU7QUFHYkMsUUFBTTtBQUNKQyxTQUFLLENBQUMsUUFBRCxDQUREO0FBRUpDLFdBQU8sUUFGSDtBQUdKQyxXQUFPLFFBSEg7QUFJSkMsaUJBQWEsa0JBSlQ7QUFLSkMsV0FBT0MsUUFBUSxZQUFSO0FBTEgsR0FITzs7QUFXYkMsY0FBWTtBQUNWQyxXQUFPO0FBQ0xDLGFBQU8sT0FERjtBQUVMQyxZQUFNLGdCQUZEO0FBR0xDLG9CQUFjO0FBQ1pDLGdCQUFRO0FBREk7QUFIVCxLQURHO0FBUVZDLFVBQU07QUFDSkosYUFBTyxNQURIO0FBRUpDLFlBQU0sUUFGRjtBQUdKSSxtQkFBYSxJQUhUO0FBSUpILG9CQUFjO0FBSlY7O0FBUkksR0FYQzs7QUE0QmJJLFlBQVUsa0JBQVVDLE9BQVYsRUFBbUJDLEtBQW5CLEVBQTBCQyxLQUExQixFQUFpQzlCLFFBQWpDLEVBQTJDO0FBQ25ELFFBQU0rQixrQkFBa0IsRUFBRUMsUUFBUSxNQUFWLEVBQWtCQyxhQUFhLEtBQS9CLEVBQXNDQyxNQUFNLE1BQTVDLEVBQXhCO0FBQ0EsUUFBTUMsc0JBQXNCLEVBQUVILFFBQVEsU0FBVixFQUFxQkMsYUFBYSxLQUFsQyxFQUF5Q0MsTUFBTSxTQUEvQyxFQUEwREUsUUFBUSxNQUFsRSxFQUE1QjtBQUNBLFFBQU1DLGlCQUFpQixFQUFFTCxRQUFRLE1BQVYsRUFBa0JDLGFBQWEsS0FBL0IsRUFBc0NLLGlCQUFpQixLQUF2RCxFQUE4REosTUFBTSxNQUFwRSxFQUF2QjtBQUNBLFFBQU1LLHFCQUFxQjtBQUN6QlAsY0FBUSxTQURpQjtBQUV6QkMsbUJBQWEsS0FGWTtBQUd6QkssdUJBQWlCLEtBSFE7QUFJekJKLFlBQU0sTUFKbUI7QUFLekJFLGNBQVE7QUFMaUIsS0FBM0I7O0FBUUEsUUFBSUksVUFBVSxDQUFkOztBQUVBLFFBQUlDLFlBQVliLFFBQVFULFVBQVIsQ0FBbUJ1QixHQUFuQixDQUF1QixPQUF2QixFQUFnQ0EsR0FBaEMsQ0FBb0MsUUFBcEMsQ0FBaEI7QUFDQSxRQUFJQyxnQkFBYyxDQUFkLFNBQW1CLENBQW5CLFdBQTBCLENBQTFCLFNBQStCLENBQS9CLGVBQTBDRixTQUExQyxTQUF1RCxDQUEzRDtBQUNBLFFBQUlHLFlBQVloQixRQUFRaUIsUUFBUixHQUFtQlYsbUJBQW5CLEdBQXlDSixlQUF6RDtBQUNBLFFBQUllLFdBQVdsQixRQUFRaUIsUUFBUixHQUFtQk4sa0JBQW5CLEdBQXdDRixjQUF2RDtBQUNBLFFBQUliLFNBQVNJLFFBQVFULFVBQVIsQ0FBbUJ1QixHQUFuQixDQUF1QixPQUF2QixFQUFnQ0EsR0FBaEMsQ0FBb0MsUUFBcEMsQ0FBYjs7QUFHQSxXQUNFO0FBQUE7QUFBQSxRQUFHLDBCQUF3QixDQUFDbEIsTUFBRCxHQUFVLENBQWxDLFNBQUg7QUFDRTtBQUFBO0FBQUEsVUFBTSxHQUFHaUIsWUFBVSxDQUFuQixFQUFzQixHQUFFLEtBQXhCLEVBQThCLHlCQUE5QixFQUF5RCxvQkFBWTNDLFVBQVosSUFBd0JFLFVBQVVBLFdBQVcsSUFBN0MsR0FBekQ7QUFDRzRCLGdCQUFRbUIsS0FBUixDQUFjLENBQUMsWUFBRCxFQUFlLE1BQWYsQ0FBZDtBQURILE9BREY7QUFJRSxvQ0FBTSxLQUFJLEdBQVYsRUFBYyxJQUFJLENBQWxCLEVBQXFCLElBQUlOLFlBQVksQ0FBWixHQUFnQkQsT0FBekMsRUFBa0QsSUFBSSxDQUF0RCxFQUF5RCxJQUFJLENBQUNDLFNBQUQsR0FBYSxDQUFiLEdBQWlCRCxPQUE5RSxFQUF1RixPQUFPSSxTQUE5RjtBQUNFLDhCQUFvQixDQUFDLENBQXJCLFNBQTBCLENBQTFCLE1BREYsR0FKRjtBQU1FLG9DQUFNLEtBQUksR0FBVixFQUFjLElBQUksQ0FBQ0gsU0FBbkIsRUFBOEIsSUFBSUEsWUFBWSxDQUFaLEdBQWdCRCxPQUFsRCxFQUEyRCxJQUFJLENBQUNDLFNBQWhFLEVBQTJFLElBQUksQ0FBQ0EsU0FBRCxHQUFhLENBQWIsR0FBaUJELE9BQWhHLEVBQXlHLE9BQU9JLFNBQWhIO0FBQ0UsOEJBQW9CLENBQUMsQ0FBckIsU0FBMEIsQ0FBMUIsTUFERixHQU5GO0FBUUUsb0NBQU0sS0FBSSxHQUFWLEVBQWMsR0FBR0QsT0FBakIsRUFBMEIsT0FBT0csUUFBakM7QUFSRixLQURGO0FBWUQ7O0FBN0RZLENBQWYiLCJmaWxlIjoicGxhbm5lci1lbGVtZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG52YXIgU1RZTEVfVEVYVCA9IHtcbiAgdGV4dEFuY2hvcjogJ21pZGRsZScsXG4gIGZvbnRTaXplOiAnMTJweCcsXG4gIGZvbnRGYW1pbHk6ICdcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIG1vbm9zcGFjZScsXG4gIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgZm9udFdlaWdodDogJ2JvbGQnLFxuICB6SW5kZXg6IDEwMCxcblxuICAvL2h0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvODI2NzgyL2hvdy10by1kaXNhYmxlLXRleHQtc2VsZWN0aW9uLWhpZ2hsaWdodGluZy11c2luZy1jc3NcbiAgV2Via2l0VG91Y2hDYWxsb3V0OiAnbm9uZScsIC8qIGlPUyBTYWZhcmkgKi9cbiAgV2Via2l0VXNlclNlbGVjdDogJ25vbmUnLCAvKiBDaHJvbWUvU2FmYXJpL09wZXJhICovXG4gIE1velVzZXJTZWxlY3Q6ICdub25lJywgLyogRmlyZWZveCAqL1xuICBNc1VzZXJTZWxlY3Q6ICdub25lJywgLyogSW50ZXJuZXQgRXhwbG9yZXIvRWRnZSAqL1xuICB1c2VyU2VsZWN0OiAnbm9uZSdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2FjY2VzcycsXG4gIHByb3RvdHlwZTogJ2hvbGVzJyxcbiAgaW5mbzoge1xuICAgIHRhZzogWydhY2Nlc3MnXSxcbiAgICBncm91cDogJ2FjY2VzcycsXG4gICAgdGl0bGU6ICdhY2Nlc3MnLFxuICAgIGRlc2NyaXB0aW9uOiAnaG9sZSBpbiB0aGUgd2FsbCcsXG4gICAgaW1hZ2U6IHJlcXVpcmUoJy4vZ2F0ZS5wbmcnKVxuICB9LFxuXG4gIHByb3BlcnRpZXM6IHtcbiAgICB3aWR0aDoge1xuICAgICAgbGFiZWw6ICd3aWR0aCcsXG4gICAgICB0eXBlOiAnbGVuZ3RoLW1lYXN1cmUnLFxuICAgICAgZGVmYXVsdFZhbHVlOiB7XG4gICAgICAgIGxlbmd0aDogODBcbiAgICAgIH1cbiAgICB9LFxuICAgIGdhdGU6IHtcbiAgICAgIGxhYmVsOiAnZ2F0ZScsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIHNlbGVjdEFyZWFzOiB0cnVlLFxuICAgICAgZGVmYXVsdFZhbHVlOiBcIm5vbmVcIixcbiAgICB9LFxuXG4gIH0sXG5cbiAgcmVuZGVyMkQ6IGZ1bmN0aW9uIChlbGVtZW50LCBsYXllciwgc2NlbmUsIGZvbnRTaXplKSB7XG4gICAgY29uc3QgU1RZTEVfSE9MRV9CQVNFID0geyBzdHJva2U6ICcjMDAwJywgc3Ryb2tlV2lkdGg6ICczcHgnLCBmaWxsOiAnIzAwMCcgfTtcbiAgICBjb25zdCBTVFlMRV9IT0xFX1NFTEVDVEVEID0geyBzdHJva2U6ICcjMDA5NmZkJywgc3Ryb2tlV2lkdGg6ICc0cHgnLCBmaWxsOiAnIzAwOTZmZCcsIGN1cnNvcjogJ21vdmUnIH07XG4gICAgY29uc3QgU1RZTEVfQVJDX0JBU0UgPSB7IHN0cm9rZTogJyMwMDAnLCBzdHJva2VXaWR0aDogJzNweCcsIHN0cm9rZURhc2hhcnJheTogJzUsNScsIGZpbGw6ICdub25lJyB9O1xuICAgIGNvbnN0IFNUWUxFX0FSQ19TRUxFQ1RFRCA9IHtcbiAgICAgIHN0cm9rZTogJyMwMDk2ZmQnLFxuICAgICAgc3Ryb2tlV2lkdGg6ICc0cHgnLFxuICAgICAgc3Ryb2tlRGFzaGFycmF5OiAnNSw1JyxcbiAgICAgIGZpbGw6ICdub25lJyxcbiAgICAgIGN1cnNvcjogJ21vdmUnXG4gICAgfTtcblxuICAgIGxldCBlcHNpbG9uID0gMztcblxuICAgIGxldCBob2xlV2lkdGggPSBlbGVtZW50LnByb3BlcnRpZXMuZ2V0KCd3aWR0aCcpLmdldCgnbGVuZ3RoJyk7XG4gICAgbGV0IGFyY1BhdGggPSBgTSR7MH0sJHswfSAgQSR7MH0sJHswfSAwIDAsMSAke2hvbGVXaWR0aH0sJHswfWA7XG4gICAgbGV0IGhvbGVTdHlsZSA9IGVsZW1lbnQuc2VsZWN0ZWQgPyBTVFlMRV9IT0xFX1NFTEVDVEVEIDogU1RZTEVfSE9MRV9CQVNFO1xuICAgIGxldCBhcmNTdHlsZSA9IGVsZW1lbnQuc2VsZWN0ZWQgPyBTVFlMRV9BUkNfU0VMRUNURUQgOiBTVFlMRV9BUkNfQkFTRTtcbiAgICBsZXQgbGVuZ3RoID0gZWxlbWVudC5wcm9wZXJ0aWVzLmdldCgnd2lkdGgnKS5nZXQoJ2xlbmd0aCcpO1xuXG5cbiAgICByZXR1cm4gKFxuICAgICAgPGcgdHJhbnNmb3JtPXtgdHJhbnNsYXRlKCR7LWxlbmd0aCAvIDJ9LCAwKWB9PlxuICAgICAgICA8dGV4dCB4PXtob2xlV2lkdGgvMn0geT1cIi0xMFwiIHRyYW5zZm9ybT17YHNjYWxlKDEsIC0xKWB9IHN0eWxlPXt7IC4uLlNUWUxFX1RFWFQsIGZvbnRTaXplOiBmb250U2l6ZSArICdweCcgfX0+XG4gICAgICAgICAge2VsZW1lbnQuZ2V0SW4oWydwcm9wZXJ0aWVzJywgJ2dhdGUnXSl9XG4gICAgICAgIDwvdGV4dD5cbiAgICAgICAgPGxpbmUga2V5PScxJyB4MT17MH0geTE9e2hvbGVXaWR0aCAvIDYgLSBlcHNpbG9ufSB4Mj17MH0geTI9ey1ob2xlV2lkdGggLyA2ICsgZXBzaWxvbn0gc3R5bGU9e2hvbGVTdHlsZX1cbiAgICAgICAgICB0cmFuc2Zvcm09e2BzY2FsZSgkey0xfSwkezF9KWB9IC8+XG4gICAgICAgIDxsaW5lIGtleT0nMicgeDE9ey1ob2xlV2lkdGh9IHkxPXtob2xlV2lkdGggLyA2IC0gZXBzaWxvbn0geDI9ey1ob2xlV2lkdGh9IHkyPXstaG9sZVdpZHRoIC8gNiArIGVwc2lsb259IHN0eWxlPXtob2xlU3R5bGV9XG4gICAgICAgICAgdHJhbnNmb3JtPXtgc2NhbGUoJHstMX0sJHsxfSlgfSAvPlxuICAgICAgICA8cGF0aCBrZXk9JzMnIGQ9e2FyY1BhdGh9IHN0eWxlPXthcmNTdHlsZX0gLz5cbiAgICAgIDwvZz5cbiAgICApXG4gIH1cblxufVxuXG4iXX0=