UNPKG

awv3

Version:
121 lines (93 loc) 3.84 kB
'use strict'; 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;