UNPKG

virtex

Version:

Small, focused virtual dom library.

75 lines (60 loc) 1.88 kB
'use strict'; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; Object.defineProperty(exports, "__esModule", { value: true }); var _isUndefined = require('@f/is-undefined'); var _isUndefined2 = _interopRequireDefault(_isUndefined); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function element(type, props) { if (!type) throw new Error('Virtex error: Invalid component. Did you import a component that doesn\'t exist?'); var len = arguments.length; var children = []; for (var i = 2, j = 0; i < len; ++i) { j += filterFlatten(arguments[i], children, j); } var key = void 0; if (props && !(0, _isUndefined2.default)(props.key)) { key = props.key; if (Object.keys(props).length === 1) { props = undefined; } else { props.key = undefined; } } return { key: key, type: type, props: props, children: children }; } function filterFlatten(item, arr, arrStart) { var added = 0; switch (type(item)) { case 'array': var len = item.length; for (var i = 0; i < len; ++i) { added += filterFlatten(item[i], arr, arrStart + added); } return added; case 'boolean': case 'null': case 'undefined': return 0; case 'string': case 'number': arr[arrStart] = element('#text', { nodeValue: item }); break; default: arr[arrStart] = item; break; } return 1; } function type(val) { if (Array.isArray(val)) return 'array'; if (val === null) return 'null'; return typeof val === 'undefined' ? 'undefined' : _typeof(val); } exports.default = element;