react-planner-viewer
Version:
react-planner-viewer is a React Component for view plans builded with react-planner in 2D mode
134 lines (121 loc) • 12.4 kB
JavaScript
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
import React from 'react';
import PropTypes from 'prop-types';
import { UNITS_LENGTH, UNIT_CENTIMETER } from './../../constants';
import convert from 'convert-units';
import { FormLabel, FormNumberInput, FormSelect } from '../../components/style/export';
import { Map } from 'immutable';
import { toFixedFloat } from '../../utils/math';
import PropertyStyle from './shared-property-style';
var internalTableStyle = { borderCollapse: 'collapse' };
var secondTdStyle = { padding: 0 };
var unitContainerStyle = { width: '5em' };
export default function PropertyLengthMeasure(_ref, _ref2) {
var value = _ref.value,
onUpdate = _ref.onUpdate,
onValid = _ref.onValid,
configs = _ref.configs,
sourceElement = _ref.sourceElement,
internalState = _ref.internalState,
state = _ref.state;
var catalog = _ref2.catalog;
var length = value.get('length') || 0;
var _length = value.get('_length') || length;
var _unit = value.get('_unit') || UNIT_CENTIMETER;
var hook = configs.hook,
label = configs.label,
configRest = _objectWithoutProperties(configs, ['hook', 'label']);
var update = function update(lengthInput, unitInput) {
var newLength = toFixedFloat(lengthInput);
var merged = value.merge({
length: unitInput !== UNIT_CENTIMETER ? convert(newLength).from(unitInput).to(UNIT_CENTIMETER) : newLength,
_length: lengthInput,
_unit: unitInput
});
if (hook) {
return hook(merged, sourceElement, internalState, state).then(function (val) {
return onUpdate(val);
});
}
return onUpdate(merged);
};
return React.createElement(
'table',
{ className: 'PropertyLengthMeasure', style: PropertyStyle.tableStyle },
React.createElement(
'tbody',
null,
React.createElement(
'tr',
null,
React.createElement(
'td',
{ style: PropertyStyle.firstTdStyle },
React.createElement(
FormLabel,
null,
label
)
),
React.createElement(
'td',
{ style: secondTdStyle },
React.createElement(
'table',
{ style: internalTableStyle },
React.createElement(
'tbody',
null,
React.createElement(
'tr',
null,
React.createElement(
'td',
null,
React.createElement(FormNumberInput, {
value: _length,
onChange: function onChange(event) {
return update(event.target.value, _unit);
},
onValid: onValid,
configs: configs
})
),
React.createElement(
'td',
{ style: unitContainerStyle },
React.createElement(
FormSelect,
{ value: _unit, onChange: function onChange(event) {
return update(_length, event.target.value);
} },
UNITS_LENGTH.map(function (el) {
return React.createElement(
'option',
{ key: el, value: el },
el
);
})
)
)
)
)
)
)
)
)
);
}
PropertyLengthMeasure.propTypes = {
value: PropTypes.instanceOf(Map).isRequired,
onUpdate: PropTypes.func.isRequired,
onValid: PropTypes.func,
configs: PropTypes.object.isRequired,
sourceElement: PropTypes.object,
internalState: PropTypes.object,
state: PropTypes.object.isRequired
};
PropertyLengthMeasure.contextTypes = {
catalog: PropTypes.object.isRequired
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jYXRhbG9nL3Byb3BlcnRpZXMvcHJvcGVydHktbGVuZ2h0LW1lYXN1cmUuanN4Il0sIm5hbWVzIjpbIlJlYWN0IiwiUHJvcFR5cGVzIiwiVU5JVFNfTEVOR1RIIiwiVU5JVF9DRU5USU1FVEVSIiwiY29udmVydCIsIkZvcm1MYWJlbCIsIkZvcm1OdW1iZXJJbnB1dCIsIkZvcm1TZWxlY3QiLCJNYXAiLCJ0b0ZpeGVkRmxvYXQiLCJQcm9wZXJ0eVN0eWxlIiwiaW50ZXJuYWxUYWJsZVN0eWxlIiwiYm9yZGVyQ29sbGFwc2UiLCJzZWNvbmRUZFN0eWxlIiwicGFkZGluZyIsInVuaXRDb250YWluZXJTdHlsZSIsIndpZHRoIiwiUHJvcGVydHlMZW5ndGhNZWFzdXJlIiwidmFsdWUiLCJvblVwZGF0ZSIsIm9uVmFsaWQiLCJjb25maWdzIiwic291cmNlRWxlbWVudCIsImludGVybmFsU3RhdGUiLCJzdGF0ZSIsImNhdGFsb2ciLCJsZW5ndGgiLCJnZXQiLCJfbGVuZ3RoIiwiX3VuaXQiLCJob29rIiwibGFiZWwiLCJjb25maWdSZXN0IiwidXBkYXRlIiwibGVuZ3RoSW5wdXQiLCJ1bml0SW5wdXQiLCJuZXdMZW5ndGgiLCJtZXJnZWQiLCJtZXJnZSIsImZyb20iLCJ0byIsInRoZW4iLCJ2YWwiLCJ0YWJsZVN0eWxlIiwiZmlyc3RUZFN0eWxlIiwiZXZlbnQiLCJ0YXJnZXQiLCJtYXAiLCJlbCIsInByb3BUeXBlcyIsImluc3RhbmNlT2YiLCJpc1JlcXVpcmVkIiwiZnVuYyIsIm9iamVjdCIsImNvbnRleHRUeXBlcyJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPQSxLQUFQLE1BQWtCLE9BQWxCO0FBQ0EsT0FBT0MsU0FBUCxNQUFzQixZQUF0QjtBQUNBLFNBQVFDLFlBQVIsRUFBc0JDLGVBQXRCLFFBQTRDLG1CQUE1QztBQUNBLE9BQU9DLE9BQVAsTUFBb0IsZUFBcEI7QUFDQSxTQUFTQyxTQUFULEVBQW9CQyxlQUFwQixFQUFxQ0MsVUFB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O0FBQUEsK0JBQVNJLE9BQU9MLE9BQVAsRUFBZ0JpQixNQUFNQyxNQUFOLENBQWE1QixLQUE3QixDQUFUO0FBQUEsdUJBQXBDO0FBRUloQixpQ0FBYTZDLEdBQWIsQ0FBaUI7QUFBQSw2QkFBTTtBQUFBO0FBQUEsMEJBQVEsS0FBS0MsRUFBYixFQUFpQixPQUFPQSxFQUF4QjtBQUE2QkE7QUFBN0IsdUJBQU47QUFBQSxxQkFBakI7QUFGSjtBQURGO0FBVEY7QUFEQTtBQURGO0FBREY7QUFGRjtBQURBO0FBREYsR0FERjtBQWlDRDs7QUFFRC9CLHNCQUFzQmdDLFNBQXRCLEdBQWtDO0FBQ2hDL0IsU0FBT2pCLFVBQVVpRCxVQUFWLENBQXFCMUMsR0FBckIsRUFBMEIyQyxVQUREO0FBRWhDaEMsWUFBVWxCLFVBQVVtRCxJQUFWLENBQWVELFVBRk87QUFHaEMvQixXQUFTbkIsVUFBVW1ELElBSGE7QUFJaEMvQixXQUFTcEIsVUFBVW9ELE1BQVYsQ0FBaUJGLFVBSk07QUFLaEM3QixpQkFBZXJCLFVBQVVvRCxNQUxPO0FBTWhDOUIsaUJBQWV0QixVQUFVb0QsTUFOTztBQU9oQzdCLFNBQU92QixVQUFVb0QsTUFBVixDQUFpQkY7QUFQUSxDQUFsQzs7QUFVQWxDLHNCQUFzQnFDLFlBQXRCLEdBQXFDO0FBQ25DN0IsV0FBU3hCLFVBQVVvRCxNQUFWLENBQWlCRjtBQURTLENBQXJDIiwiZmlsZSI6InByb3BlcnR5LWxlbmdodC1tZWFzdXJlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQge1VOSVRTX0xFTkdUSCwgVU5JVF9DRU5USU1FVEVSfSBmcm9tICcuLy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgY29udmVydCBmcm9tICdjb252ZXJ0LXVuaXRzJztcbmltcG9ydCB7IEZvcm1MYWJlbCwgRm9ybU51bWJlcklucHV0LCBGb3JtU2VsZWN0IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9zdHlsZS9leHBvcnQnO1xuaW1wb3J0IHtNYXB9IGZyb20gJ2ltbXV0YWJsZSc7XG5pbXBvcnQge3RvRml4ZWRGbG9hdH0gZnJvbSAnLi4vLi4vdXRpbHMvbWF0aCc7XG5pbXBvcnQgUHJvcGVydHlTdHlsZSBmcm9tICcuL3NoYXJlZC1wcm9wZXJ0eS1zdHlsZSc7XG5cbmNvbnN0IGludGVybmFsVGFibGVTdHlsZSA9IHtib3JkZXJDb2xsYXBzZTogJ2NvbGxhcHNlJ307XG5jb25zdCBzZWNvbmRUZFN0eWxlID0ge3BhZGRpbmc6IDB9O1xuY29uc3QgdW5pdENvbnRhaW5lclN0eWxlID0ge3dpZHRoOiAnNWVtJ307XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFByb3BlcnR5TGVuZ3RoTWVhc3VyZSh7dmFsdWUsIG9uVXBkYXRlLCBvblZhbGlkLCBjb25maWdzLCBzb3VyY2VFbGVtZW50LCBpbnRlcm5hbFN0YXRlLCBzdGF0ZX0sIHtjYXRhbG9nfSkge1xuXG4gIGxldCBsZW5ndGggPSB2YWx1ZS5nZXQoJ2xlbmd0aCcpIHx8IDA7XG4gIGxldCBfbGVuZ3RoID0gdmFsdWUuZ2V0KCdfbGVuZ3RoJykgfHwgbGVuZ3RoO1xuICBsZXQgX3VuaXQgPSB2YWx1ZS5nZXQoJ191bml0JykgfHwgVU5JVF9DRU5USU1FVEVSO1xuICBsZXQgeyBob29rLCBsYWJlbCwgLi4uY29uZmlnUmVzdH0gPSBjb25maWdzO1xuXG4gIGxldCB1cGRhdGUgPSAobGVuZ3RoSW5wdXQsIHVuaXRJbnB1dCkgPT4ge1xuXG4gICAgbGV0IG5ld0xlbmd0aCA9IHRvRml4ZWRGbG9hdChsZW5ndGhJbnB1dCk7XG4gICAgbGV0IG1lcmdlZCA9IHZhbHVlLm1lcmdlKHtcbiAgICAgIGxlbmd0aDogdW5pdElucHV0ICE9PSBVTklUX0NFTlRJTUVURVIgPyBjb252ZXJ0KG5ld0xlbmd0aCkuZnJvbSh1bml0SW5wdXQpLnRvKFVOSVRfQ0VOVElNRVRFUikgOiBuZXdMZW5ndGgsXG4gICAgICBfbGVuZ3RoOiBsZW5ndGhJbnB1dCxcbiAgICAgIF91bml0OiB1bml0SW5wdXRcbiAgICB9KTtcblxuICAgIGlmIChob29rKSB7XG4gICAgICByZXR1cm4gaG9vayhtZXJnZWQsIHNvdXJjZUVsZW1lbnQsIGludGVybmFsU3RhdGUsIHN0YXRlKS50aGVuKHZhbCA9PiB7XG4gICAgICAgIHJldHVybiBvblVwZGF0ZSh2YWwpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9uVXBkYXRlKG1lcmdlZCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8dGFibGUgY2xhc3NOYW1lPVwiUHJvcGVydHlMZW5ndGhNZWFzdXJlXCIgc3R5bGU9e1Byb3BlcnR5U3R5bGUudGFibGVTdHlsZX0+XG4gICAgICA8dGJvZHk+XG4gICAgICA8dHI+XG4gICAgICAgIDx0ZCBzdHlsZT17UHJvcGVydHlTdHlsZS5maXJzdFRkU3R5bGV9PjxGb3JtTGFiZWw+e2xhYmVsfTwvRm9ybUxhYmVsPjwvdGQ+XG4gICAgICAgIDx0ZCBzdHlsZT17c2Vjb25kVGRTdHlsZX0+XG4gICAgICAgICAgPHRhYmxlIHN0eWxlPXtpbnRlcm5hbFRhYmxlU3R5bGV9PlxuICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgPEZvcm1OdW1iZXJJbnB1dFxuICAgICAgICAgICAgICAgICAgdmFsdWU9e19sZW5ndGh9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ZXZlbnQgPT4gdXBkYXRlKGV2ZW50LnRhcmdldC52YWx1ZSwgX3VuaXQpfVxuICAgICAgICAgICAgICAgICAgb25WYWxpZD17b25WYWxpZH1cbiAgICAgICAgICAgICAgICAgIGNvbmZpZ3M9e2NvbmZpZ3N9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIHN0eWxlPXt1bml0Q29udGFpbmVyU3R5bGV9PlxuICAgICAgICAgICAgICAgIDxGb3JtU2VsZWN0IHZhbHVlPXtfdW5pdH0gb25DaGFuZ2U9e2V2ZW50ID0+IHVwZGF0ZShfbGVuZ3RoLCBldmVudC50YXJnZXQudmFsdWUpIH0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFVOSVRTX0xFTkdUSC5tYXAoZWwgPT4gPG9wdGlvbiBrZXk9e2VsfSB2YWx1ZT17ZWx9PntlbH08L29wdGlvbj4pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9Gb3JtU2VsZWN0PlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gICk7XG5cbn1cblxuUHJvcGVydHlMZW5ndGhNZWFzdXJlLnByb3BUeXBlcyA9IHtcbiAgdmFsdWU6IFByb3BUeXBlcy5pbnN0YW5jZU9mKE1hcCkuaXNSZXF1aXJlZCxcbiAgb25VcGRhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uVmFsaWQ6IFByb3BUeXBlcy5mdW5jLFxuICBjb25maWdzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHNvdXJjZUVsZW1lbnQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGludGVybmFsU3RhdGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIHN0YXRlOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWRcbn07XG5cblByb3BlcnR5TGVuZ3RoTWVhc3VyZS5jb250ZXh0VHlwZXMgPSB7XG4gIGNhdGFsb2c6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxufTtcbiJdfQ==