UNPKG

dompro

Version:
287 lines (228 loc) 8.13 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else if(typeof exports === 'object') exports["Dompro"] = factory(); else root["Dompro"] = factory(); })(this, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.updateDOM = exports.compileJSX = undefined; var _compileJSX = __webpack_require__(2); var _updateDOM = __webpack_require__(6); exports.compileJSX = _compileJSX.compileJSX; exports.updateDOM = _updateDOM.updateDOM; /***/ }, /* 1 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.setBooleanProp = setBooleanProp; exports.removeBooleanProp = removeBooleanProp; exports.isEventProp = isEventProp; exports.isCustomProp = isCustomProp; exports.setProp = setProp; exports.removeProp = removeProp; exports.setProps = setProps; exports.updateProp = updateProp; exports.updateProps = updateProps; function setBooleanProp($target, name, value) { if (value) { $target.setAttribute(name, value); $target[name] = true; } else { $target[name] = false; } } function removeBooleanProp($target, name) { $target.removeAttribute(name); $target[name] = false; } function isEventProp(name) { return (/^on/.test(name) ); } function isCustomProp(name) { return isEventProp(name) || name === 'forceUpdate'; } function setProp($target, name, value) { if (isCustomProp(name)) { return; } else if (name === 'className') { $target.setAttribute('class', value); } else if (typeof value === 'boolean') { setBooleanProp($target, name, value); } else { $target.setAttribute(name, value); } } function removeProp($target, name, value) { if (isCustomProp(name)) { return; } else if (name === 'className') { $target.removeAttribute('class'); } else if (typeof value === 'boolean') { removeBooleanProp($target, name); } else { $target.removeAttribute(name); } } function setProps($target, props) { Object.keys(props).forEach(function (name) { setProp($target, name, props[name]); }); } function updateProp($target, name, newVal, oldVal) { if (!newVal) { removeProp($target, name, oldVal); } else if (!oldVal || newVal !== oldVal) { setProp($target, name, newVal); } } function updateProps($target, newProps) { var oldProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var props = Object.assign({}, newProps, oldProps); Object.keys(props).forEach(function (name) { updateProp($target, name, newProps[name], oldProps[name]); }); } /***/ }, /* 2 */ /***/ function(module, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.compileJSX = compileJSX; /** @jsx compileJSX */ function compileJSX(type, props) { for (var _len = arguments.length, children = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { children[_key - 2] = arguments[_key]; } return { type: type, props: props || {}, children: children }; } /***/ }, /* 3 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.createElement = createElement; var _propHandler = __webpack_require__(1); var _eventHandler = __webpack_require__(4); function createElement(node) { if (typeof node === 'string') { return document.createTextNode(node); } var $el = document.createElement(node.type); (0, _propHandler.setProps)($el, node.props); (0, _eventHandler.addEventListeners)($el, node.props); node.children.map(createElement).forEach($el.appendChild.bind($el)); return $el; } /***/ }, /* 4 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.extractEventName = extractEventName; exports.addEventListeners = addEventListeners; var _propHandler = __webpack_require__(1); function extractEventName(name) { return name.slice(2).toLowerCase(); } function addEventListeners($target, props) { Object.keys(props).forEach(function (name) { if ((0, _propHandler.isEventProp)(name)) { $target.addEventListener(extractEventName(name), props[name]); } }); } /***/ }, /* 5 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); 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; }; exports.hasChanged = hasChanged; function hasChanged(node1, node2) { return (typeof node1 === 'undefined' ? 'undefined' : _typeof(node1)) !== (typeof node2 === 'undefined' ? 'undefined' : _typeof(node2)) || typeof node1 === 'string' && node1 !== node2 || node1.type !== node2.type || node1.props && node1.props.forceUpdate; } /***/ }, /* 6 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.updateDOM = updateDOM; var _createElement = __webpack_require__(3); var _hasChanged = __webpack_require__(5); var _propHandler = __webpack_require__(1); function updateDOM($parent, newNode, oldNode) { var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0; if (!oldNode) { $parent.appendChild((0, _createElement.createElement)(newNode)); } else if (!newNode) { $parent.removeChild($parent.childNodes[index]); } else if ((0, _hasChanged.hasChanged)(newNode, oldNode)) { $parent.replaceChild((0, _createElement.createElement)(newNode), $parent.childNodes[index]); } else if (newNode.type) { (0, _propHandler.updateProps)($parent.childNodes[index], newNode.props, oldNode.props); var newLength = newNode.children.length; var oldLength = oldNode.children.length; for (var i = 0; i < newLength || i < oldLength; i++) { updateDOM($parent.childNodes[index], newNode.children[i], oldNode.children[i], i); } } } /***/ } /******/ ]) }); ;