awv3
Version:
⚡ AWV3 embedded CAD
191 lines (170 loc) • 5.96 kB
JavaScript
import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose";
import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
import _extends from "@babel/runtime/helpers/extends";
var _dec, _class, _class2, _temp, _class3, _temp2;
import React from 'react';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import Plugin from '../../session/plugin';
import Dimensions from '../dimensions/';
var resources = ['extrusion'].reduce(function (prev, item) {
var _extends2;
return _extends({}, prev, (_extends2 = {}, _extends2[item] = require('!!url-loader!awv3-icons/32x32/' + item + '.png'), _extends2));
}, {});
var BooleanOp = (_dec = connect(function (state, props) {
var tree = state.connections[props.connection].tree;
var feature = tree[props.id];
return {
feature: feature
};
}), _dec(_class = (_temp = _class2 =
/*#__PURE__*/
function (_React$Component) {
_inheritsLoose(BooleanOp, _React$Component);
function BooleanOp(props) {
var _this;
_this = _React$Component.call(this, props) || this;
Object.defineProperty(_assertThisInitialized(_this), "setBody1", {
configurable: true,
enumerable: true,
writable: true,
value: function value(arg1) {
var session = _this.context.plugin.session;
if (session) {
var object = session.selector.selectedObjects[0];
var body1ToSet = object.material[0].meta.owner;
var newState = _extends({}, _this.state, {
body1ToSet: body1ToSet
});
_this.setState(newState);
}
}
});
Object.defineProperty(_assertThisInitialized(_this), "setBody2", {
configurable: true,
enumerable: true,
writable: true,
value: function value(arg1) {
var session = _this.context.plugin.session;
if (session) {
var object = session.selector.selectedObjects[0];
var body2ToSet = _this.state.body2ToSet;
body2ToSet.push(object.material[0].meta.owner);
_this.setState(_extends({}, _this.state, {
body2ToSet: body2ToSet
}));
}
}
});
Object.defineProperty(_assertThisInitialized(_this), "apply", {
configurable: true,
enumerable: true,
writable: true,
value: function value() {
var changeTypeCommand = "_C.CADApplication.SetBoolType(" + _this.context.plugin.connection.activeFeature + ", \"CC_" + _this.state.type + "\");";
var setBodiesCommand = "_C.CADApplication.SetBoolBodies(\n " + _this.context.plugin.connection.activeFeature + ",\n " + _this.state.body1ToSet + ",\n [" + _this.state.body2ToSet.join(',') + "]);";
if (_this.editMode) {
_this.context.plugin.connection.execute(setBodiesCommand);
} else {
_this.context.plugin.connection.execute(changeTypeCommand).then(function () {
return _this.context.plugin.connection.execute(setBodiesCommand);
});
}
}
});
_this.state = props.feature.members;
_this.state.type = 'Union';
_this.state.body1ToSet = undefined;
_this.state.body2ToSet = [];
_this.editMode = props.feature.class !== "CC_BooleanOperation";
return _this;
}
var _proto = BooleanOp.prototype;
_proto.render = function render() {
var _this2 = this;
var canBeApplied = this.state.body1ToSet !== undefined && this.state.body2ToSet.length > 0;
return React.createElement("group", {
format: "Table"
}, React.createElement("dropdown", {
name: "type",
items: ['Union', 'Intersection', 'Subtraction'],
value: this.state.type,
disabled: this.editMode,
onValue: function onValue(type) {
return _this2.state.type = type;
}
}), React.createElement("selection", {
name: "body1",
types: ['Mesh', 'Model'],
value: this.state.Body1.value,
limit: "1",
onItems: this.setBody1
}), React.createElement("selection", {
name: "body2",
types: ['Mesh', 'Model'],
onItems: this.setBody2
}), React.createElement("button", {
name: "Apply",
format: "Default",
onLastEvent: this.apply,
disabled: !canBeApplied
}));
};
return BooleanOp;
}(React.Component), Object.defineProperty(_class2, "contextTypes", {
configurable: true,
enumerable: true,
writable: true,
value: {
plugin: PropTypes.object
}
}), _temp)) || _class);
var Feature = (_temp2 = _class3 =
/*#__PURE__*/
function (_Plugin) {
_inheritsLoose(Feature, _Plugin);
function Feature(session, args) {
return _Plugin.call(this, session, _extends({
type: args.feature.class,
icon: args.name.toLowerCase(),
resources: resources
}, args)) || this;
}
var _proto2 = Feature.prototype;
_proto2.render = function render() {
return React.createElement("group", null, React.createElement(BooleanOp, {
connection: this.connection.id,
id: this.feature
}), React.createElement("spacer", null), React.createElement("link", {
value: this.dimensions.id,
collapsable: true
}));
};
_proto2.onEnabled = function onEnabled() {
this.dimensions = new Dimensions(this.session, {
name: 'Dimensions',
collapsed: true,
closeable: false,
parent: this.id
});
this.dimensions.enabled = true;
};
_proto2.onDisabled = function onDisabled() {
this.dimensions.destroy();
};
return Feature;
}(Plugin), Object.defineProperty(_class3, "contextMenuItems", {
configurable: true,
enumerable: true,
writable: true,
value: _extends({}, Plugin.contextMenuItems, {
customItem: {
name: "Extrude custom item",
callback: function callback(feature) {
console.log('!!!! Custom Item callback called');
console.log(feature);
}
}
})
}), _temp2);
export { Feature as default };