UNPKG

awv3

Version:
191 lines (170 loc) 5.96 kB
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 };