awv3
Version:
⚡ AWV3 embedded CAD
121 lines (93 loc) • 3.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
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 _lifecycle = require('./lifecycle.js');
var _lifecycle2 = _interopRequireDefault(_lifecycle);
var _error = require('../core/error');
var _elements = require('./store/elements');
var _plugins = require('./store/plugins');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Element = function (_Lifecycle) {
(0, _inherits3.default)(Element, _Lifecycle);
function Element() {
var plugin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : (0, _error.halt)("element must be initialized with a plugin");
var props = arguments[1];
(0, _classCallCheck3.default)(this, Element);
var reflectedProps = (0, _extends3.default)({
name: "",
type: "",
visible: true,
active: true,
collapsed: false,
children: [],
color: undefined,
focus: false,
flex: 1,
margin: true,
lastEvent: {},
index: 0
}, props, {
plugin: plugin.id
});
// TODO: see todo below
var _this = (0, _possibleConstructorReturn3.default)(this, (Element.__proto__ || (0, _getPrototypeOf2.default)(Element)).call(this, plugin.session, _elements.actions, function (state) {
return state.elements[_this.id];
}, reflectedProps));
_this.__plugin = plugin;
plugin.dependencies.push(_this);
return _this;
}
(0, _createClass3.default)(Element, [{
key: 'addChild',
value: function addChild(element) {
this.store.dispatch(_elements.actions.addChild(this.id, element instanceof Element ? element.id : element));
}
}, {
key: 'removeChild',
value: function removeChild(element) {
this.store.dispatch(_elements.actions.removeChild(this.id, element instanceof Element ? element.id : element));
}
}, {
key: 'removeAllChilds',
value: function removeAllChilds() {
this.store.dispatch(_elements.actions.removeAllChilds(this.id));
}
// TODO: this can (and should) be abstracted in lifecycle and in the store via thunk
}, {
key: '__onDestroyed',
value: function __onDestroyed() {
var index = this.__plugin.dependencies.indexOf(this);
if (index > -1) this.__plugin.dependencies.splice(index, 1);
this.store.dispatch(_plugins.actions.removeElement(this.__plugin.id, this.id));
}
}]);
return Element;
}((0, _lifecycle2.default)());
Element.Type = {
Group: 'Group',
Label: 'Label',
Input: 'Input',
Button: 'Button',
Checkbox: 'Checkbox',
Dropdown: 'Dropdown',
Selection: 'Selection',
Console: 'Console',
Spacer: 'Spacer',
Divider: 'Divider',
Slider: 'Slider',
Link: 'Link'
};
exports.default = Element;