awv3
Version:
⚡ AWV3 embedded CAD
287 lines (225 loc) • 11.2 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = undefined;
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
var _entries = require('babel-runtime/core-js/object/entries');
var _entries2 = _interopRequireDefault(_entries);
var _stringify = require('babel-runtime/core-js/json/stringify');
var _stringify2 = _interopRequireDefault(_stringify);
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _extends3 = require('babel-runtime/helpers/extends');
var _extends4 = _interopRequireDefault(_extends3);
var _dec, _class2;
var _debounce = require('lodash/debounce');
var _debounce2 = _interopRequireDefault(_debounce);
var _plugin = require('../../session/plugin');
var _plugin2 = _interopRequireDefault(_plugin);
var _renderer = require('../../session/renderer');
var _renderer2 = _interopRequireDefault(_renderer);
var _dimensions = require('../dimensions/');
var _dimensions2 = _interopRequireDefault(_dimensions);
var _elements = require('../../session/elements');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var resources = ['extrusion'].reduce(function (prev, item) {
return (0, _extends4.default)({}, prev, (0, _defineProperty3.default)({}, item, require('!!url-loader!awv3-icons/32x32/' + item + '.png')));
}, {});
var MemberRow = function (_Component) {
(0, _inherits3.default)(MemberRow, _Component);
function MemberRow() {
var _ref;
var _temp, _this, _ret;
(0, _classCallCheck3.default)(this, MemberRow);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = MemberRow.__proto__ || (0, _getPrototypeOf2.default)(MemberRow)).call.apply(_ref, [this].concat(args))), _this), _this.state = { value: undefined }, _this.update = (0, _debounce2.default)(function (value) {
var id = _this.props.id,
m = (0, _stringify2.default)(_this.props.key),
v = (0, _stringify2.default)(value);
console.log('_C.CADApplication.SetExpressions(' + id + ', [' + m + '], [' + v + '], ' + f + ');');
_this.plugin.connection.execute('_C.CADApplication.SetExpressions(' + id + ', [' + m + '], [' + v + '], 1);');
}, 500), _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);
}
(0, _createClass3.default)(MemberRow, [{
key: 'render',
value: function render(_ref2, _ref3, set) {
var key = _ref2.key,
member = _ref2.member;
var _this2 = this;
var value = _ref3.value;
var displayVal = value === undefined ? member.expression || member.value : value;
if (Array.isArray(displayVal)) displayVal = displayVal.join(',');
if (key === 'color') return _renderer2.default.createElement(_elements.Button, { name: key, format: _elements.Button.Format.Color });else if (key === 'extrudeType') return _renderer2.default.createElement(_elements.Slider, {
name: key,
value: Number(displayVal) || 0,
max: 2,
positions: (0, _extends4.default)({}, ['up', 'down', 'symmetric']),
onValue: this.update
});else if (key.endsWith('Angle')) return _renderer2.default.createElement(_elements.Slider, {
name: key,
value: Number(displayVal) || 0,
onValue: this.update,
max: 45,
step: 1,
positions: { 0: '0°', 45: '45' }
});else if (key.startsWith('invert')) return _renderer2.default.createElement(_elements.Checkbox, { name: key, value: Boolean(displayVal), onValue: function onValue(value) {
return _this2.update(value ? 1 : 0);
} });else if (member.type === 'point') return _renderer2.default.createElement(_elements.Input, {
name: key,
value: displayVal,
onValue: function onValue(value) {
return set({ value: value });
},
format: _elements.Input.Format.Vector,
onLastEvent: function onLastEvent(e) {
return e.key === 'Enter' && _this2.update(value.split(',').map(Number));
}
});else if (member.type === 'real') return _renderer2.default.createElement(_elements.Input, {
name: key,
value: displayVal,
onValue: function onValue(value) {
return set({ value: value });
},
onLastEvent: function onLastEvent(e) {
return e.key === 'Enter' && _this2.update(value);
}
});else return _renderer2.default.createElement(_elements.Label, { name: key, value: displayVal });
}
}]);
return MemberRow;
}(_renderer.Component);
var SketchRow = function (_Component2) {
(0, _inherits3.default)(SketchRow, _Component2);
function SketchRow() {
(0, _classCallCheck3.default)(this, SketchRow);
return (0, _possibleConstructorReturn3.default)(this, (SketchRow.__proto__ || (0, _getPrototypeOf2.default)(SketchRow)).apply(this, arguments));
}
(0, _createClass3.default)(SketchRow, [{
key: 'render',
value: function render(_ref4) {
var _this4 = this;
var name = _ref4.name,
value = _ref4.value.value;
console.log(value);
return _renderer2.default.createElement(_elements.Dropdown, { name: name, items: [String(value)], value: String(value), onValue: function onValue(v) {
return _this4.set(v);
} });
}
}, {
key: 'set',
value: function set(value) {
var _this5 = this;
if (true) return; // TODO
var sketches = this.tree[this.tree.root].features.map(function (x) {
return _this5.tree[x];
}).filter(function (x) {
return x.class === 'CC_Sketch';
});
var items = sketches.map(function (x) {
return x.name;
});
var t2e = function t2e(t) {
return t ? _this5.tree[t].name : '';
};
var e2t = function e2t(e) {
return (sketches.find(function (x) {
return x.name === e;
}) || { id: 0 }).id;
};
this.connection.execute('VAR region, sketch;\n region = CADH_RealToId(' + region + ');\n sketch = CADH_RealToId(' + e2t(e) + ');\n region.SetCurves(sketch.GetCCCurves());');
}
}]);
return SketchRow;
}(_renderer.Component);
var Extrusion = (_dec = (0, _renderer.connect)(function (state, props) {
var tree = state.connections[props.connection].tree;
var extrusion = tree[props.id];
var region = extrusion.children.map(function (x) {
return tree[x];
}).find(function (x) {
return x.class === 'CC_SketchRegion';
});
return { extrusion: extrusion, region: region };
}), _dec(_class2 = function (_Component3) {
(0, _inherits3.default)(Extrusion, _Component3);
function Extrusion() {
(0, _classCallCheck3.default)(this, Extrusion);
return (0, _possibleConstructorReturn3.default)(this, (Extrusion.__proto__ || (0, _getPrototypeOf2.default)(Extrusion)).apply(this, arguments));
}
(0, _createClass3.default)(Extrusion, [{
key: 'render',
value: function render(_ref5) {
var extrusion = _ref5.extrusion,
region = _ref5.region;
var id = extrusion.id;
return _renderer2.default.createElement(
_elements.Group,
{ format: _elements.Group.Format.Table },
(0, _entries2.default)(extrusion.members).filter(function (_ref6) {
var _ref7 = (0, _slicedToArray3.default)(_ref6, 1),
name = _ref7[0];
return !name.startsWith('_');
}).map(function (_ref8) {
var _ref9 = (0, _slicedToArray3.default)(_ref8, 2),
key = _ref9[0],
member = _ref9[1];
return _renderer2.default.createElement(MemberRow, { id: id, key: key, member: member });
}),
_renderer2.default.createElement(SketchRow, { id: region.id, name: 'sketch', value: region.members.sketch })
);
}
}]);
return Extrusion;
}(_renderer.Component)) || _class2);
var Feature = function (_Plugin) {
(0, _inherits3.default)(Feature, _Plugin);
function Feature(session, args) {
(0, _classCallCheck3.default)(this, Feature);
var _this7 = (0, _possibleConstructorReturn3.default)(this, (Feature.__proto__ || (0, _getPrototypeOf2.default)(Feature)).call(this, session, (0, _extends4.default)({ type: 'Extrusion', icon: 'extrusion', resources: resources }, args)));
_this7.dimensions = new _dimensions2.default(_this7.session, {
name: 'Dimensions',
collapsed: true,
closeable: false,
parent: _this7.id
});
return _this7;
}
(0, _createClass3.default)(Feature, [{
key: 'render',
value: function render() {
return _renderer2.default.createElement(
_elements.Group,
null,
_renderer2.default.createElement(Extrusion, { connection: this.connection.id, id: this.feature }),
_renderer2.default.createElement(_elements.Spacer, null),
_renderer2.default.createElement(_elements.Link, { value: this.dimensions.id, collapsable: true })
);
}
}, {
key: 'onEnabled',
value: function onEnabled() {
this.dimensions.enabled = true;
}
}, {
key: 'onDisabled',
value: function onDisabled() {
this.dimensions.destroy();
}
}]);
return Feature;
}(_plugin2.default);
exports.default = Feature;