UNPKG

js2flowchart

Version:

> Why? While I've been working on [Under-the-hood-ReactJS](https://github.com/Bogdan-Lyashenko/Under-the-hood-ReactJS) I spent enormous amount of time on creating schemes. Each change in code or flowchart affects all entire scheme instantly, forcing you t

1,675 lines (1,397 loc) 1.2 MB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define("js2flowchart", [], factory); else if(typeof exports === 'object') exports["js2flowchart"] = factory(); else root["js2flowchart"] = 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] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = 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; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 187); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; exports.createTypeAnnotationBasedOnTypeof = exports.removeTypeDuplicates = exports.createUnionTypeAnnotation = exports.valueToNode = exports.toBlock = exports.toExpression = exports.toStatement = exports.toBindingIdentifierName = exports.toIdentifier = exports.toKeyAlias = exports.toSequenceExpression = exports.toComputedKey = exports.isNodesEquivalent = exports.isImmutable = exports.isScope = exports.isSpecifierDefault = exports.isVar = exports.isBlockScoped = exports.isLet = exports.isValidIdentifier = exports.isReferenced = exports.isBinding = exports.getOuterBindingIdentifiers = exports.getBindingIdentifiers = exports.TYPES = exports.react = exports.DEPRECATED_KEYS = exports.BUILDER_KEYS = exports.NODE_FIELDS = exports.ALIAS_KEYS = exports.VISITOR_KEYS = exports.NOT_LOCAL_BINDING = exports.BLOCK_SCOPED_SYMBOL = exports.INHERIT_KEYS = exports.UNARY_OPERATORS = exports.STRING_UNARY_OPERATORS = exports.NUMBER_UNARY_OPERATORS = exports.BOOLEAN_UNARY_OPERATORS = exports.BINARY_OPERATORS = exports.NUMBER_BINARY_OPERATORS = exports.BOOLEAN_BINARY_OPERATORS = exports.COMPARISON_BINARY_OPERATORS = exports.EQUALITY_BINARY_OPERATORS = exports.BOOLEAN_NUMBER_BINARY_OPERATORS = exports.UPDATE_OPERATORS = exports.LOGICAL_OPERATORS = exports.COMMENT_KEYS = exports.FOR_INIT_KEYS = exports.FLATTENABLE_KEYS = exports.STATEMENT_OR_BLOCK_KEYS = undefined; var _getOwnPropertySymbols = __webpack_require__(200); var _getOwnPropertySymbols2 = _interopRequireDefault(_getOwnPropertySymbols); var _getIterator2 = __webpack_require__(1); var _getIterator3 = _interopRequireDefault(_getIterator2); var _keys = __webpack_require__(33); var _keys2 = _interopRequireDefault(_keys); var _stringify = __webpack_require__(39); var _stringify2 = _interopRequireDefault(_stringify); var _constants = __webpack_require__(88); Object.defineProperty(exports, "STATEMENT_OR_BLOCK_KEYS", { enumerable: true, get: function get() { return _constants.STATEMENT_OR_BLOCK_KEYS; } }); Object.defineProperty(exports, "FLATTENABLE_KEYS", { enumerable: true, get: function get() { return _constants.FLATTENABLE_KEYS; } }); Object.defineProperty(exports, "FOR_INIT_KEYS", { enumerable: true, get: function get() { return _constants.FOR_INIT_KEYS; } }); Object.defineProperty(exports, "COMMENT_KEYS", { enumerable: true, get: function get() { return _constants.COMMENT_KEYS; } }); Object.defineProperty(exports, "LOGICAL_OPERATORS", { enumerable: true, get: function get() { return _constants.LOGICAL_OPERATORS; } }); Object.defineProperty(exports, "UPDATE_OPERATORS", { enumerable: true, get: function get() { return _constants.UPDATE_OPERATORS; } }); Object.defineProperty(exports, "BOOLEAN_NUMBER_BINARY_OPERATORS", { enumerable: true, get: function get() { return _constants.BOOLEAN_NUMBER_BINARY_OPERATORS; } }); Object.defineProperty(exports, "EQUALITY_BINARY_OPERATORS", { enumerable: true, get: function get() { return _constants.EQUALITY_BINARY_OPERATORS; } }); Object.defineProperty(exports, "COMPARISON_BINARY_OPERATORS", { enumerable: true, get: function get() { return _constants.COMPARISON_BINARY_OPERATORS; } }); Object.defineProperty(exports, "BOOLEAN_BINARY_OPERATORS", { enumerable: true, get: function get() { return _constants.BOOLEAN_BINARY_OPERATORS; } }); Object.defineProperty(exports, "NUMBER_BINARY_OPERATORS", { enumerable: true, get: function get() { return _constants.NUMBER_BINARY_OPERATORS; } }); Object.defineProperty(exports, "BINARY_OPERATORS", { enumerable: true, get: function get() { return _constants.BINARY_OPERATORS; } }); Object.defineProperty(exports, "BOOLEAN_UNARY_OPERATORS", { enumerable: true, get: function get() { return _constants.BOOLEAN_UNARY_OPERATORS; } }); Object.defineProperty(exports, "NUMBER_UNARY_OPERATORS", { enumerable: true, get: function get() { return _constants.NUMBER_UNARY_OPERATORS; } }); Object.defineProperty(exports, "STRING_UNARY_OPERATORS", { enumerable: true, get: function get() { return _constants.STRING_UNARY_OPERATORS; } }); Object.defineProperty(exports, "UNARY_OPERATORS", { enumerable: true, get: function get() { return _constants.UNARY_OPERATORS; } }); Object.defineProperty(exports, "INHERIT_KEYS", { enumerable: true, get: function get() { return _constants.INHERIT_KEYS; } }); Object.defineProperty(exports, "BLOCK_SCOPED_SYMBOL", { enumerable: true, get: function get() { return _constants.BLOCK_SCOPED_SYMBOL; } }); Object.defineProperty(exports, "NOT_LOCAL_BINDING", { enumerable: true, get: function get() { return _constants.NOT_LOCAL_BINDING; } }); exports.is = is; exports.isType = isType; exports.validate = validate; exports.shallowEqual = shallowEqual; exports.appendToMemberExpression = appendToMemberExpression; exports.prependToMemberExpression = prependToMemberExpression; exports.ensureBlock = ensureBlock; exports.clone = clone; exports.cloneWithoutLoc = cloneWithoutLoc; exports.cloneDeep = cloneDeep; exports.buildMatchMemberExpression = buildMatchMemberExpression; exports.removeComments = removeComments; exports.inheritsComments = inheritsComments; exports.inheritTrailingComments = inheritTrailingComments; exports.inheritLeadingComments = inheritLeadingComments; exports.inheritInnerComments = inheritInnerComments; exports.inherits = inherits; exports.assertNode = assertNode; exports.isNode = isNode; exports.traverseFast = traverseFast; exports.removeProperties = removeProperties; exports.removePropertiesDeep = removePropertiesDeep; var _retrievers = __webpack_require__(125); Object.defineProperty(exports, "getBindingIdentifiers", { enumerable: true, get: function get() { return _retrievers.getBindingIdentifiers; } }); Object.defineProperty(exports, "getOuterBindingIdentifiers", { enumerable: true, get: function get() { return _retrievers.getOuterBindingIdentifiers; } }); var _validators = __webpack_require__(213); Object.defineProperty(exports, "isBinding", { enumerable: true, get: function get() { return _validators.isBinding; } }); Object.defineProperty(exports, "isReferenced", { enumerable: true, get: function get() { return _validators.isReferenced; } }); Object.defineProperty(exports, "isValidIdentifier", { enumerable: true, get: function get() { return _validators.isValidIdentifier; } }); Object.defineProperty(exports, "isLet", { enumerable: true, get: function get() { return _validators.isLet; } }); Object.defineProperty(exports, "isBlockScoped", { enumerable: true, get: function get() { return _validators.isBlockScoped; } }); Object.defineProperty(exports, "isVar", { enumerable: true, get: function get() { return _validators.isVar; } }); Object.defineProperty(exports, "isSpecifierDefault", { enumerable: true, get: function get() { return _validators.isSpecifierDefault; } }); Object.defineProperty(exports, "isScope", { enumerable: true, get: function get() { return _validators.isScope; } }); Object.defineProperty(exports, "isImmutable", { enumerable: true, get: function get() { return _validators.isImmutable; } }); Object.defineProperty(exports, "isNodesEquivalent", { enumerable: true, get: function get() { return _validators.isNodesEquivalent; } }); var _converters = __webpack_require__(222); Object.defineProperty(exports, "toComputedKey", { enumerable: true, get: function get() { return _converters.toComputedKey; } }); Object.defineProperty(exports, "toSequenceExpression", { enumerable: true, get: function get() { return _converters.toSequenceExpression; } }); Object.defineProperty(exports, "toKeyAlias", { enumerable: true, get: function get() { return _converters.toKeyAlias; } }); Object.defineProperty(exports, "toIdentifier", { enumerable: true, get: function get() { return _converters.toIdentifier; } }); Object.defineProperty(exports, "toBindingIdentifierName", { enumerable: true, get: function get() { return _converters.toBindingIdentifierName; } }); Object.defineProperty(exports, "toStatement", { enumerable: true, get: function get() { return _converters.toStatement; } }); Object.defineProperty(exports, "toExpression", { enumerable: true, get: function get() { return _converters.toExpression; } }); Object.defineProperty(exports, "toBlock", { enumerable: true, get: function get() { return _converters.toBlock; } }); Object.defineProperty(exports, "valueToNode", { enumerable: true, get: function get() { return _converters.valueToNode; } }); var _flow = __webpack_require__(231); Object.defineProperty(exports, "createUnionTypeAnnotation", { enumerable: true, get: function get() { return _flow.createUnionTypeAnnotation; } }); Object.defineProperty(exports, "removeTypeDuplicates", { enumerable: true, get: function get() { return _flow.removeTypeDuplicates; } }); Object.defineProperty(exports, "createTypeAnnotationBasedOnTypeof", { enumerable: true, get: function get() { return _flow.createTypeAnnotationBasedOnTypeof; } }); var _toFastProperties = __webpack_require__(232); var _toFastProperties2 = _interopRequireDefault(_toFastProperties); var _clone = __webpack_require__(132); var _clone2 = _interopRequireDefault(_clone); var _uniq = __webpack_require__(292); var _uniq2 = _interopRequireDefault(_uniq); __webpack_require__(302); var _definitions = __webpack_require__(24); var _react2 = __webpack_require__(309); var _react = _interopRequireWildcard(_react2); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var t = exports; function registerType(type) { var is = t["is" + type]; if (!is) { is = t["is" + type] = function (node, opts) { return t.is(type, node, opts); }; } t["assert" + type] = function (node, opts) { opts = opts || {}; if (!is(node, opts)) { throw new Error("Expected type " + (0, _stringify2.default)(type) + " with option " + (0, _stringify2.default)(opts)); } }; } exports.VISITOR_KEYS = _definitions.VISITOR_KEYS; exports.ALIAS_KEYS = _definitions.ALIAS_KEYS; exports.NODE_FIELDS = _definitions.NODE_FIELDS; exports.BUILDER_KEYS = _definitions.BUILDER_KEYS; exports.DEPRECATED_KEYS = _definitions.DEPRECATED_KEYS; exports.react = _react; for (var type in t.VISITOR_KEYS) { registerType(type); } t.FLIPPED_ALIAS_KEYS = {}; (0, _keys2.default)(t.ALIAS_KEYS).forEach(function (type) { t.ALIAS_KEYS[type].forEach(function (alias) { var types = t.FLIPPED_ALIAS_KEYS[alias] = t.FLIPPED_ALIAS_KEYS[alias] || []; types.push(type); }); }); (0, _keys2.default)(t.FLIPPED_ALIAS_KEYS).forEach(function (type) { t[type.toUpperCase() + "_TYPES"] = t.FLIPPED_ALIAS_KEYS[type]; registerType(type); }); var TYPES = exports.TYPES = (0, _keys2.default)(t.VISITOR_KEYS).concat((0, _keys2.default)(t.FLIPPED_ALIAS_KEYS)).concat((0, _keys2.default)(t.DEPRECATED_KEYS)); function is(type, node, opts) { if (!node) return false; var matches = isType(node.type, type); if (!matches) return false; if (typeof opts === "undefined") { return true; } else { return t.shallowEqual(node, opts); } } function isType(nodeType, targetType) { if (nodeType === targetType) return true; if (t.ALIAS_KEYS[targetType]) return false; var aliases = t.FLIPPED_ALIAS_KEYS[targetType]; if (aliases) { if (aliases[0] === nodeType) return true; for (var _iterator = aliases, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) { var _ref; if (_isArray) { if (_i >= _iterator.length) break; _ref = _iterator[_i++]; } else { _i = _iterator.next(); if (_i.done) break; _ref = _i.value; } var alias = _ref; if (nodeType === alias) return true; } } return false; } (0, _keys2.default)(t.BUILDER_KEYS).forEach(function (type) { var keys = t.BUILDER_KEYS[type]; function builder() { if (arguments.length > keys.length) { throw new Error("t." + type + ": Too many arguments passed. Received " + arguments.length + " but can receive " + ("no more than " + keys.length)); } var node = {}; node.type = type; var i = 0; for (var _iterator2 = keys, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, _getIterator3.default)(_iterator2);;) { var _ref2; if (_isArray2) { if (_i2 >= _iterator2.length) break; _ref2 = _iterator2[_i2++]; } else { _i2 = _iterator2.next(); if (_i2.done) break; _ref2 = _i2.value; } var _key = _ref2; var field = t.NODE_FIELDS[type][_key]; var arg = arguments[i++]; if (arg === undefined) arg = (0, _clone2.default)(field.default); node[_key] = arg; } for (var key in node) { validate(node, key, node[key]); } return node; } t[type] = builder; t[type[0].toLowerCase() + type.slice(1)] = builder; }); var _loop = function _loop(_type) { var newType = t.DEPRECATED_KEYS[_type]; function proxy(fn) { return function () { console.trace("The node type " + _type + " has been renamed to " + newType); return fn.apply(this, arguments); }; } t[_type] = t[_type[0].toLowerCase() + _type.slice(1)] = proxy(t[newType]); t["is" + _type] = proxy(t["is" + newType]); t["assert" + _type] = proxy(t["assert" + newType]); }; for (var _type in t.DEPRECATED_KEYS) { _loop(_type); } function validate(node, key, val) { if (!node) return; var fields = t.NODE_FIELDS[node.type]; if (!fields) return; var field = fields[key]; if (!field || !field.validate) return; if (field.optional && val == null) return; field.validate(node, key, val); } function shallowEqual(actual, expected) { var keys = (0, _keys2.default)(expected); for (var _iterator3 = keys, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, _getIterator3.default)(_iterator3);;) { var _ref3; if (_isArray3) { if (_i3 >= _iterator3.length) break; _ref3 = _iterator3[_i3++]; } else { _i3 = _iterator3.next(); if (_i3.done) break; _ref3 = _i3.value; } var key = _ref3; if (actual[key] !== expected[key]) { return false; } } return true; } function appendToMemberExpression(member, append, computed) { member.object = t.memberExpression(member.object, member.property, member.computed); member.property = append; member.computed = !!computed; return member; } function prependToMemberExpression(member, prepend) { member.object = t.memberExpression(prepend, member.object); return member; } function ensureBlock(node) { var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "body"; return node[key] = t.toBlock(node[key], node); } function clone(node) { if (!node) return node; var newNode = {}; for (var key in node) { if (key[0] === "_") continue; newNode[key] = node[key]; } return newNode; } function cloneWithoutLoc(node) { var newNode = clone(node); delete newNode.loc; return newNode; } function cloneDeep(node) { if (!node) return node; var newNode = {}; for (var key in node) { if (key[0] === "_") continue; var val = node[key]; if (val) { if (val.type) { val = t.cloneDeep(val); } else if (Array.isArray(val)) { val = val.map(t.cloneDeep); } } newNode[key] = val; } return newNode; } function buildMatchMemberExpression(match, allowPartial) { var parts = match.split("."); return function (member) { if (!t.isMemberExpression(member)) return false; var search = [member]; var i = 0; while (search.length) { var node = search.shift(); if (allowPartial && i === parts.length) { return true; } if (t.isIdentifier(node)) { if (parts[i] !== node.name) return false; } else if (t.isStringLiteral(node)) { if (parts[i] !== node.value) return false; } else if (t.isMemberExpression(node)) { if (node.computed && !t.isStringLiteral(node.property)) { return false; } else { search.push(node.object); search.push(node.property); continue; } } else { return false; } if (++i > parts.length) { return false; } } return true; }; } function removeComments(node) { for (var _iterator4 = t.COMMENT_KEYS, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : (0, _getIterator3.default)(_iterator4);;) { var _ref4; if (_isArray4) { if (_i4 >= _iterator4.length) break; _ref4 = _iterator4[_i4++]; } else { _i4 = _iterator4.next(); if (_i4.done) break; _ref4 = _i4.value; } var key = _ref4; delete node[key]; } return node; } function inheritsComments(child, parent) { inheritTrailingComments(child, parent); inheritLeadingComments(child, parent); inheritInnerComments(child, parent); return child; } function inheritTrailingComments(child, parent) { _inheritComments("trailingComments", child, parent); } function inheritLeadingComments(child, parent) { _inheritComments("leadingComments", child, parent); } function inheritInnerComments(child, parent) { _inheritComments("innerComments", child, parent); } function _inheritComments(key, child, parent) { if (child && parent) { child[key] = (0, _uniq2.default)([].concat(child[key], parent[key]).filter(Boolean)); } } function inherits(child, parent) { if (!child || !parent) return child; for (var _iterator5 = t.INHERIT_KEYS.optional, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : (0, _getIterator3.default)(_iterator5);;) { var _ref5; if (_isArray5) { if (_i5 >= _iterator5.length) break; _ref5 = _iterator5[_i5++]; } else { _i5 = _iterator5.next(); if (_i5.done) break; _ref5 = _i5.value; } var _key2 = _ref5; if (child[_key2] == null) { child[_key2] = parent[_key2]; } } for (var key in parent) { if (key[0] === "_") child[key] = parent[key]; } for (var _iterator6 = t.INHERIT_KEYS.force, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : (0, _getIterator3.default)(_iterator6);;) { var _ref6; if (_isArray6) { if (_i6 >= _iterator6.length) break; _ref6 = _iterator6[_i6++]; } else { _i6 = _iterator6.next(); if (_i6.done) break; _ref6 = _i6.value; } var _key3 = _ref6; child[_key3] = parent[_key3]; } t.inheritsComments(child, parent); return child; } function assertNode(node) { if (!isNode(node)) { throw new TypeError("Not a valid node " + (node && node.type)); } } function isNode(node) { return !!(node && _definitions.VISITOR_KEYS[node.type]); } (0, _toFastProperties2.default)(t); (0, _toFastProperties2.default)(t.VISITOR_KEYS); function traverseFast(node, enter, opts) { if (!node) return; var keys = t.VISITOR_KEYS[node.type]; if (!keys) return; opts = opts || {}; enter(node, opts); for (var _iterator7 = keys, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : (0, _getIterator3.default)(_iterator7);;) { var _ref7; if (_isArray7) { if (_i7 >= _iterator7.length) break; _ref7 = _iterator7[_i7++]; } else { _i7 = _iterator7.next(); if (_i7.done) break; _ref7 = _i7.value; } var key = _ref7; var subNode = node[key]; if (Array.isArray(subNode)) { for (var _iterator8 = subNode, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : (0, _getIterator3.default)(_iterator8);;) { var _ref8; if (_isArray8) { if (_i8 >= _iterator8.length) break; _ref8 = _iterator8[_i8++]; } else { _i8 = _iterator8.next(); if (_i8.done) break; _ref8 = _i8.value; } var _node = _ref8; traverseFast(_node, enter, opts); } } else { traverseFast(subNode, enter, opts); } } } var CLEAR_KEYS = ["tokens", "start", "end", "loc", "raw", "rawValue"]; var CLEAR_KEYS_PLUS_COMMENTS = t.COMMENT_KEYS.concat(["comments"]).concat(CLEAR_KEYS); function removeProperties(node, opts) { opts = opts || {}; var map = opts.preserveComments ? CLEAR_KEYS : CLEAR_KEYS_PLUS_COMMENTS; for (var _iterator9 = map, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : (0, _getIterator3.default)(_iterator9);;) { var _ref9; if (_isArray9) { if (_i9 >= _iterator9.length) break; _ref9 = _iterator9[_i9++]; } else { _i9 = _iterator9.next(); if (_i9.done) break; _ref9 = _i9.value; } var _key4 = _ref9; if (node[_key4] != null) node[_key4] = undefined; } for (var key in node) { if (key[0] === "_" && node[key] != null) node[key] = undefined; } var syms = (0, _getOwnPropertySymbols2.default)(node); for (var _iterator10 = syms, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : (0, _getIterator3.default)(_iterator10);;) { var _ref10; if (_isArray10) { if (_i10 >= _iterator10.length) break; _ref10 = _iterator10[_i10++]; } else { _i10 = _iterator10.next(); if (_i10.done) break; _ref10 = _i10.value; } var sym = _ref10; node[sym] = null; } } function removePropertiesDeep(tree, opts) { traverseFast(tree, removeProperties, opts); return tree; } /***/ }), /* 1 */ /***/ (function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(188), __esModule: true }; /***/ }), /* 2 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.calculateBoundaries = exports.calculateChildOffsetPoint = exports.calculateBackPoint = exports.calculateToPoint = exports.calculateFromPoint = exports.calculatePosition = exports.calculateDimensions = exports.calculateHeight = exports.calculateWidth = exports.calculateNameBasedHeight = exports.calculateNameBasedWidth = exports.setupCompleteState = exports.setupBasicBehaviour = exports.setupStateModifiers = exports.setupGetChildBoundaries = exports.setupSharedPrint = exports.setupInitialSelectors = exports.extractBasicState = exports.setupInitialProperties = exports.getInitialState = exports.delegateInit = undefined; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _xmlEscape = __webpack_require__(460); var _xmlEscape2 = _interopRequireDefault(_xmlEscape); var _composition = __webpack_require__(8); var _string = __webpack_require__(461); var _flatten = __webpack_require__(184); var _geometry = __webpack_require__(46); var _TextContentConfigurator = __webpack_require__(464); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var delegateInit = exports.delegateInit = function delegateInit(shape, themeFieldName) { function init(node, position, theme) { return shape(getInitialState(node, position, theme, themeFieldName)); } init.getThemeFieldName = function () { return themeFieldName; }; return init; }; var getInitialState = exports.getInitialState = function getInitialState(node, _ref, theme, type) { var x = _ref.x, y = _ref.y; var nameParts = (0, _string.splitNameString)(node.name, _TextContentConfigurator.MAX_NAME_STR_LENGTH, (0, _TextContentConfigurator.getNameSplitterTokensIterator)()), totalNamePartsNumber = nameParts.length, maxNamePartLength = (0, _string.getMaxStringLengthFromList)(nameParts); return { id: (0, _string.generateId)(), nodePathId: (0, _string.getPathId)(node), type: type, body: [], theme: theme, originalTheme: theme, node: node, name: node.name, prefixName: node.prefixName, nameParts: nameParts, totalNamePartsNumber: totalNamePartsNumber, maxNamePartLength: maxNamePartLength, initialPosition: { x: x, y: y } }; }; var setupInitialProperties = exports.setupInitialProperties = function setupInitialProperties(state) { return { fromPoint: calculateFromPoint(state), toPoint: calculateToPoint(state), backPoint: calculateBackPoint(state), childOffsetPoint: calculateChildOffsetPoint(state), boundaries: calculateBoundaries(state) }; }; var extractBasicState = exports.extractBasicState = function extractBasicState(state) { return _extends({}, state, { position: calculatePosition(state), dimensions: calculateDimensions(state) }); }; var setupInitialSelectors = exports.setupInitialSelectors = function setupInitialSelectors(state) { return { getBody: function getBody() { return state.body; }, getBoundaries: function getBoundaries() { return state.boundaries; }, getBackPoint: function getBackPoint() { return state.backPoint; }, getAssignedConnectionArrow: function getAssignedConnectionArrow() { return state.connectionArrow; }, getChildOffsetPoint: function getChildOffsetPoint() { return state.childOffsetPoint; }, getDimensions: function getDimensions() { return state.dimensions; }, getId: function getId() { return state.id; }, getFromPoint: function getFromPoint() { return state.fromPoint; }, getMargin: function getMargin() { return state.theme.margin; }, getName: function getName() { return state.name; }, getNode: function getNode() { return state.node; }, getNodeType: function getNodeType() { return state.node.type; }, getNodePathId: function getNodePathId() { return state.nodePathId; }, getNodeKey: function getNodeKey() { return state.node.key; }, getParent: function getParent() { return state.parent; }, getPosition: function getPosition() { return state.position; }, getToPoint: function getToPoint() { return state.toPoint; }, getShapeType: function getShapeType() { return state.type; } }; }; var setupSharedPrint = exports.setupSharedPrint = function setupSharedPrint(state) { return { //TODO: fix spacing for multi line name printName: function printName(newPosition) { var position = state.position, theme = state.theme, nameParts = state.nameParts; var _ref2 = newPosition ? newPosition : position, x = _ref2.x, y = _ref2.y; var name = nameParts.map(function (part, i) { return '<tspan x="' + (x + theme.horizontalPadding) + '" y="' + (y + 2 * theme.verticalPadding * (i + 1)) + '">' + (0, _xmlEscape2.default)(part) + '</tspan>'; }).join(''); //TODO: move to svg primitives // 3 because of ellipsis 3 dots return (nameParts[0].length <= state.name.length + 3 ? '<title>' + (0, _xmlEscape2.default)(state.name) + '</title>' : '') + '\n <text x="' + (x + theme.horizontalPadding) + '" y="' + (y + 2 * theme.verticalPadding) + '"\n font-family="' + theme.fontFamily + '" font-size="' + theme.fontSize + '" fill="' + theme.textColor + '">\n ' + name + '\n </text>'; }, printDebugInfo: function printDebugInfo() { var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, debug = _ref3.debug; if (!debug) return ''; var position = state.position, dimensions = state.dimensions, theme = state.theme, nodePathId = state.nodePathId; return '<text x="' + (position.x + 3 * theme.horizontalPadding) + '" y="' + (position.y + dimensions.h + theme.verticalPadding) + '"\n font-family="' + theme.fontFamily + '" font-size="' + theme.debugFontSize + '" fill="' + theme.debugTextColor + '">\n ' + nodePathId + '\n </text>'; } }; }; var setupGetChildBoundaries = exports.setupGetChildBoundaries = function setupGetChildBoundaries(state) { return { getChildBoundaries: function getChildBoundaries(filterFn) { var body = state.body, boundaries = state.boundaries; if (!body.length) { return boundaries; } var flattedTree = (0, _flatten.flatTree)({ getBody: function getBody() { return filterFn ? body.filter(filterFn) : body; }, getBoundaries: function getBoundaries() { return boundaries; } }, function (node) { return node.getBody(); }); return (0, _geometry.calculateShapesBoundaries)(flattedTree.map(function (item) { return item.getBoundaries(); })); } }; }; var setupStateModifiers = exports.setupStateModifiers = function setupStateModifiers(state) { return { addChild: function addChild(child) { state.body.push(child); }, setParent: function setParent(parent) { state.parent = parent; }, connectChild: function connectChild(child) { this.addChild(child); child.setParent(this); }, updateTheme: function updateTheme(newTheme) { state.theme = (0, _composition.mergeObjectStructures)(state.theme, newTheme); }, assignConnectionArrow: function assignConnectionArrow(connectionArrow) { state.connectionArrow = connectionArrow; } }; }; var setupBasicBehaviour = exports.setupBasicBehaviour = function setupBasicBehaviour(state) { return Object.assign({}, setupSharedPrint(state), setupGetChildBoundaries(state), setupStateModifiers(state)); }; var setupCompleteState = exports.setupCompleteState = function setupCompleteState(initialState) { var state = extractBasicState(initialState); return _extends({}, state, setupInitialProperties(state)); }; var calculateNameBasedWidth = exports.calculateNameBasedWidth = function calculateNameBasedWidth(_ref4) { var maxNamePartLength = _ref4.maxNamePartLength, theme = _ref4.theme; return maxNamePartLength * theme.symbolWidth; }; var calculateNameBasedHeight = exports.calculateNameBasedHeight = function calculateNameBasedHeight(_ref5) { var totalNamePartsNumber = _ref5.totalNamePartsNumber, theme = _ref5.theme; return totalNamePartsNumber * theme.symbolHeight + (totalNamePartsNumber - 1) * theme.lineHeight; }; var calculateWidth = exports.calculateWidth = function calculateWidth(state) { return 2 * state.theme.horizontalPadding + calculateNameBasedWidth(state); }; var calculateHeight = exports.calculateHeight = function calculateHeight(state) { return 2 * state.theme.verticalPadding + calculateNameBasedHeight(state); }; var calculateDimensions = exports.calculateDimensions = function calculateDimensions(state) { return { w: calculateWidth(state), h: calculateHeight(state) }; }; var calculatePosition = exports.calculatePosition = function calculatePosition(state) { return _extends({}, state.initialPosition); }; var calculateFromPoint = exports.calculateFromPoint = function calculateFromPoint(_ref6) { var position = _ref6.position, dimensions = _ref6.dimensions, theme = _ref6.theme; return { x: position.x + theme.childOffset / 2, y: position.y + dimensions.h }; }; var calculateToPoint = exports.calculateToPoint = function calculateToPoint(_ref7) { var position = _ref7.position, dimensions = _ref7.dimensions; return { x: position.x, y: position.y + dimensions.h / 2 }; }; var calculateBackPoint = exports.calculateBackPoint = function calculateBackPoint(_ref8) { var position = _ref8.position, dimensions = _ref8.dimensions; return { x: position.x + dimensions.w, y: position.y + dimensions.h / 2 }; }; var calculateChildOffsetPoint = exports.calculateChildOffsetPoint = function calculateChildOffsetPoint(_ref9) { var theme = _ref9.theme, dimensions = _ref9.dimensions; return { x: theme.childOffset, y: dimensions.h + theme.childOffset / 2 }; }; var calculateBoundaries = exports.calculateBoundaries = function calculateBoundaries(_ref10) { var position = _ref10.position, dimensions = _ref10.dimensions; return { min: { x: position.x, y: position.y }, max: { x: position.x + dimensions.w, y: position.y + dimensions.h } }; }; /***/ }), /* 3 */ /***/ (function(module, exports) { var core = module.exports = {version: '2.4.0'}; if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef /***/ }), /* 4 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var TOKEN_TYPES = exports.TOKEN_TYPES = { FUNCTION: 'Function', FUNCTION_EXPRESSION: 'FunctionExpression', FUNCTION_DECLARATION: 'FunctionDeclaration', VARIABLE_DECLARATOR: 'VariableDeclarator', ASSIGNMENT_EXPRESSION: 'AssignmentExpression', MEMBER_EXPRESSION: 'MemberExpression', VARIABLE_DECLARATION: 'VariableDeclaration', UPDATE_EXPRESSION: 'UpdateExpression', CALL_EXPRESSION: 'CallExpression', NEW_EXPRESSION: 'NewExpression', LOOP: 'Loop', FOR_IN_STATEMENT: 'ForInStatement', FOR_STATEMENT: 'ForStatement', WHILE_STATEMENT: 'WhileStatement', DO_WHILE_STATEMENT: 'DoWhileStatement', CONTINUE: 'ContinueStatement', CONDITIONAL: 'Conditional', SWITCH_CASE: 'SwitchCase', SWITCH_STATEMENT: 'SwitchStatement', PROGRAM: 'Program', RETURN: 'ReturnStatement', BREAK: 'BreakStatement', TRY_STATEMENT: 'TryStatement', CATCH_CLAUSE: 'CatchClause', WITH_STATEMENT: 'WithStatement', THROW_STATEMENT: 'ThrowStatement', DEBUGGER_STATEMENT: 'DebuggerStatement', IDENTIFIER: 'Identifier', ARRAY_EXPRESSION: 'ArrayExpression', OBJECT_EXPRESSION: 'ObjectExpression', OBJECT_PROPERTY: 'ObjectProperty', OBJECT_METHOD: 'ObjectMethod', BINARY_EXPRESSION: 'BinaryExpression', EXPRESSION_STATEMENT: 'ExpressionStatement', UNARY_EXPRESSION: 'UnaryExpression', CONDITIONAL_EXPRESSION: 'ConditionalExpression', STRING_LITERAL: 'StringLiteral', NUMERIC_LITERAL: 'NumericLiteral', THIS_EXPRESSION: 'ThisExpression', LOGICAL_EXPRESSION: 'LogicalExpression', //ES Harmony features ARROW_FUNCTION_EXPRESSION: 'ArrowFunctionExpression', IMPORT_DECLARATION: 'ImportDeclaration', IMPORT_DEFAULT_SPECIFIER: 'ImportDefaultSpecifier', IMPORT_SPECIFIER: 'ImportSpecifier', EXPORT_NAMED_DECLARATION: 'ExportNamedDeclaration', EXPORT_DEFAULT_DECLARATION: 'ExportDefaultDeclaration', CLASS_DECLARATION: 'ClassDeclaration', CLASS_METHOD: 'ClassMethod', FOR_OF_STATEMENT: 'ForOfStatement', SPREAD_ELEMENT: 'SpreadElement', SPREAD_PROPERTY: 'SpreadProperty', REST_PROPERTY: 'RestProperty', OBJECT_PATTERN: 'ObjectPattern', ARRAY_PATTERN: 'ArrayPattern', ASSIGNMENT_PATTERN: 'AssignmentPattern' }; var TOKEN_KEYS = exports.TOKEN_KEYS = { BODY: 'body', PROGRAM: 'program', CONSEQUENT: 'consequent', ALTERNATE: 'alternate', TEST: 'test' }; var ARROW_TYPE = exports.ARROW_TYPE = { RIGHT: 'RIGHT', LEFT: 'LEFT', UP: 'UP', DOWN: 'DOWN' }; var CLASS_FUNCTION_KINDS = exports.CLASS_FUNCTION_KINDS = { CONSTRUCTOR: 'constructor', METHOD: 'method' }; var MODIFIED_TYPES = exports.MODIFIED_TYPES = { DESTRUCTED: 'DESTRUCTED', CUSTOM: 'CUSTOM' }; /***/ }), /* 5 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; exports.default = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }; /***/ }), /* 6 */ /***/ (function(module, exports, __webpack_require__) { var store = __webpack_require__(81)('wks') , uid = __webpack_require__(51) , Symbol = __webpack_require__(9).Symbol , USE_SYMBOL = typeof Symbol == 'function'; var $exports = module.exports = function(name){ return store[name] || (store[name] = USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); }; $exports.store = store; /***/ }), /* 7 */ /***/ (function(module, exports) { /** * Checks if `value` is classified as an `Array` object. * * @static * @memberOf _ * @since 0.1.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is an array, else `false`. * @example * * _.isArray([1, 2, 3]); * // => true * * _.isArray(document.body.children); * // => false * * _.isArray('abc'); * // => false * * _.isArray(_.noop); * // => false */ var isArray = Array.isArray; module.exports = isArray; /***/ }), /* 8 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mergeObjectStructures = exports.assignState = undefined; var _deepmerge = __webpack_require__(445); var _deepmerge2 = _interopRequireDefault(_deepmerge); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } var assignState = exports.assignState = function assignState(state, extensionsList) { return Object.assign.apply(null, [{ state: state }].concat(_toConsumableArray(extensionsList.map(function (fn) { return fn(state); })))); }; var mergeObjectStructures = exports.mergeObjectStructures = function mergeObjectStructures(destination, source) { return (0, _deepmerge2.default)(destination, source); }; /***/ }), /* 9 */ /***/ (function(module, exports) { // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef /***/ }), /* 10 */ /***/ (function(module, exports, __webpack_require__) { var freeGlobal = __webpack_require__(128); /** Detect free variable `self`. */ var freeSelf = typeof self == 'object' && self && self.Object === Object && self; /** Used as a reference to the global object. */ var root = freeGlobal || freeSelf || Function('return this')(); module.exports = root; /***/ }), /* 11 */ /***/ (function(module, exports, __webpack_require__) { var global = __webpack_require__(9) , core = __webpack_require__(3) , ctx = __webpack_require__(37) , hide = __webpack_require__(16) , PROTOTYPE = 'prototype'; var $export = function(type, name, source){ var IS_FORCED = type & $export.F , IS_GLOBAL = type & $export.G , IS_STATIC = type & $export.S , IS_PROTO = type & $export.P , IS_BIND = type & $export.B , IS_WRAP = type & $export.W , exports = IS_GLOBAL ? core : core[name] || (core[name] = {}) , expProto = exports[PROTOTYPE] , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE] , key, own, out; if(IS_GLOBAL)source = name; for(key in source){ // contains in native own = !IS_FORCED && target && target[key] !== undefined; if(own && key in exports)continue; // export native or passed out = own ? target[key] : source[key]; // prevent global pollution for namespaces exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] // bind timers to global for call from export context : IS_BIND && own ? ctx(out, global) // wrap global constructors for prevent change them in library : IS_WRAP && target[key] == out ? (function(C){ var F = function(a, b, c){ if(this instanceof C){ switch(arguments.length){ case 0: return new C; case 1: return new C(a); case 2: return new C(a, b); } return new C(a, b, c); } return C.apply(this, arguments); }; F[PROTOTYPE] = C[PROTOTYPE]; return F; // make static versions for prototype methods })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% if(IS_PROTO){ (exports.virtual || (exports.virtual = {}))[key] = out; // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out); } } }; // type bitmap $export.F = 1; // forced $export.G = 2; // global $export.S = 4; // static $export.P = 8; // proto $export.B = 16; // bind $export.W = 32; // wrap $export.U = 64; // safe $export.R = 128; // real proto method for `library` module.exports = $export; /***/ }), /* 12 */ /***/ (function(module, exports, __webpack_require__) { var anObject = __webpack_require__(13) , IE8_DOM_DEFINE = __webpack_require__(116) , toPrimitive = __webpack_require__(76) , dP = Object.defineProperty; exports.f = __webpack_require__(15) ? Object.defineProperty : function defineProperty(O, P, Attributes){ anObject(O); P = toPrimitive(P, true); anObject(Attributes); if(IE8_DOM_DEFINE)try { return dP(O, P, Attributes); } catch(e){ /* empty */ } if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!'); if('value' in Attributes)O[P] = Attributes.value; return O; }; /***/ }), /* 13 */ /***/ (function(module, exports, __webpack_require__) { var isObject = __webpack_require__(14); module.exports = function(it){ if(!isObject(it))throw TypeError(it + ' is not an object!'); return it; }; /***/ }), /* 14 */ /***/ (function(module, exports) { module.exports = function(it){ return typeof it === 'object' ? it !== null : typeof it === 'function'; }; /***/ }), /* 15 */ /***/ (function(module, exports, __webpack_require__) { // Thank's IE8 for his funny defineProperty module.exports = !__webpack_require__(28)(function(){ return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7; }); /***/ }), /* 16 */ /***/ (function(module, exports, __webpack_require__) { var dP = __webpack_require__(12) , createDesc = __webpack_require__(49); module.exports = __webpack_require__(15) ? function(object, key, value){ return dP.f(object, key, createDesc(1, value)); } : function(object, key, value){ object[key] = value; return object; }; /***/ }), /* 17 */ /***/ (function(module, exports) { var hasOwnProperty = {}.hasOwnProperty; module.exports = function(it, key){ return hasOwnProperty.call(it, key); }; /***/ }), /* 18 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; var _iterator = __webpack_require__(214); var _iterator2 = _interopRequireDefault(_iterator); var _symbol = __webpack_require__(216); var _symbol2 = _interopRequireDefault(_symbol); var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) { return typeof obj === "undefined" ? "undefined" : _typeof(obj); } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj); }; /***/ }), /* 19 */ /***/ (function(module, exports, __webpack_require__) { var Symbol = __webpack_require__(40), getRawTag = __webpack_require__(227), objectToString = __webpack_require__(228); /** `Object#toString` result references. */ var nullTag = '[object Null]', undefinedTag = '[object Undefined]'; /** Built-in value references. */ var symToStringTag = Symbol ? Symbol.toStringTag : undefined; /** * The base implementation of `getTag` without fallbacks for buggy environments. * * @private * @param {*} value The value to query. * @returns {string} Returns the `toStringTag`. */ function baseGetTag(value) { if (value == null) { return value === undefined ? undefinedTag : nullTag; } return (symToStringTag && symToStringTag in Object(value)) ? getRawTag(value) : objectToString(value); } module.exports = baseGetTag; /***/ }), /* 20 */ /***/ (function(module, exports) { /** * Checks if `value` is object-like. A value is object-like if it's not `null` * and has a `typeof` result of "object". * * @static * @memberOf _ * @since 4.0.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is object-like, else `false`. * @example * * _.isObjectLike({}); * // => true * * _.isObjectLike([1, 2, 3]);