From c7f6067505172f6d160cfacfa6d7d6fc7c00fd3d Mon Sep 17 00:00:00 2001 From: Ian Storm Taylor Date: Thu, 16 Jun 2016 10:56:25 -0700 Subject: [PATCH] remove build --- examples/basic/build.js | 29714 -------------------------------------- 1 file changed, 29714 deletions(-) delete mode 100644 examples/basic/build.js diff --git a/examples/basic/build.js b/examples/basic/build.js deleted file mode 100644 index ffa4f6788..000000000 --- a/examples/basic/build.js +++ /dev/null @@ -1,29714 +0,0 @@ -(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o focus.offset; - - selection = selection.set('anchorKey', anchor.key); - selection = selection.set('anchorOffset', anchor.offset); - selection = selection.set('focusKey', focus.key); - selection = selection.set('focusOffset', focus.offset); - selection = selection.set('isBackward', isBackward); - selection = selection.set('isFocused', true); - state = state.set('selection', selection); - _this3.onChange(state); - return { - v: void 0 - }; - }(); - - if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v; - } - } - - /** - * Render the editor content. - * - * @return {Component} component - */ - - }, { - key: 'render', - value: function render() { - var _this4 = this; - - var state = this.props.state; - var nodes = state.nodes; - - var children = nodes.toArray().map(function (node) { - return _this4.renderNode(node); - }); - - return _react2.default.createElement( - 'div', - { - contentEditable: true, - suppressContentEditableWarning: true, - 'data-type': 'content', - onKeyDown: function onKeyDown(e) { - return _this4.onKeyDown(e); - }, - onSelect: function onSelect(e) { - return _this4.onSelect(e); - } - }, - children - ); - } - - /** - * Render a single `node`. - * - * @param {Node} node - * @return {Component} component - */ - - }, { - key: 'renderNode', - value: function renderNode(node) { - var _this5 = this; - - var _props = this.props; - var renderMark = _props.renderMark; - var renderNode = _props.renderNode; - var state = _props.state; - - - if (node instanceof _text4.default) { - return _react2.default.createElement(_text2.default, { - key: node.key, - node: node, - renderMark: renderMark, - state: state - }); - } - - var Component = renderNode(node); - var children = node.children.toArray().map(function (child) { - return _this5.renderNode(child); - }); - - return _react2.default.createElement(Component, _extends({}, node, { - key: node.key, - children: children, - state: state - })); - } - }]); - - return Content; -}(_react2.default.Component); - -/** - * Export. - */ - -Content.propTypes = { - onChange: _react2.default.PropTypes.func, - onKeyDown: _react2.default.PropTypes.func, - onSelect: _react2.default.PropTypes.func, - renderMark: _react2.default.PropTypes.func.isRequired, - renderNode: _react2.default.PropTypes.func.isRequired, - state: _react2.default.PropTypes.object.isRequired -}; -exports.default = Content; - -},{"../models/text":11,"../utils/find-selection":18,"./text":5,"keycode":48,"react":256,"react-dom":118}],3:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _content = require('./content'); - -var _content2 = _interopRequireDefault(_content); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _core = require('../plugins/core'); - -var _core2 = _interopRequireDefault(_core); - -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); } } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/** - * Editor. - */ - -var Editor = function (_React$Component) { - _inherits(Editor, _React$Component); - - function Editor(props) { - _classCallCheck(this, Editor); - - var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Editor).call(this, props)); - - _this.state = { - plugins: _this.resolvePlugins(props), - state: props.state - }; - return _this; - } - - _createClass(Editor, [{ - key: 'componentWillReceiveProps', - value: function componentWillReceiveProps(props) { - var plugins = this.resolvePlugins(props); - this.setState({ plugins: plugins }); - } - }, { - key: 'onChange', - value: function onChange(state) { - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = this.state.plugins[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var plugin = _step.value; - - if (!plugin.onChange) continue; - var newState = plugin.onChange(state, this); - if (newState == null) continue; - state = newState; - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - this.props.onChange(state); - } - - /** - * Get the editor's current `state`. - * - * @return {State} state - */ - - }, { - key: 'getState', - value: function getState() { - return this.state.state; - } - - /** - * Handle the `keydown` event. - * - * @param {Event} e - */ - - }, { - key: 'onKeyDown', - value: function onKeyDown(e) { - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - for (var _iterator2 = this.state.plugins[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var plugin = _step2.value; - - if (plugin.onKeyDown) { - var newState = plugin.onKeyDown(e, this); - if (newState == null) continue; - this.props.onChange(newState); - break; - } - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2.return) { - _iterator2.return(); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - } - - /** - * Render the editor. - * - * @return {Component} component - */ - - }, { - key: 'render', - value: function render() { - var _this2 = this; - - return _react2.default.createElement(_content2.default, { - renderMark: this.props.renderMark, - renderNode: this.props.renderNode, - state: this.props.state, - onChange: function onChange(state) { - return _this2.onChange(state); - }, - onKeyDown: function onKeyDown(e) { - return _this2.onKeyDown(e); - } - }); - } - }, { - key: 'resolvePlugins', - value: function resolvePlugins(props) { - return [].concat(_toConsumableArray(props.plugins), [_core2.default]); - } - }]); - - return Editor; -}(_react2.default.Component); - -/** - * Export. - */ - -Editor.propTypes = { - plugins: _react2.default.PropTypes.array, - renderMark: _react2.default.PropTypes.func, - renderNode: _react2.default.PropTypes.func, - state: _react2.default.PropTypes.object, - onChange: _react2.default.PropTypes.func.isRequired -}; -Editor.defaultProps = { - plugins: [], - state: {} -}; -exports.default = Editor; - -},{"../plugins/core":12,"./content":2,"react":256}],4:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _reactDom = require('react-dom'); - -var _reactDom2 = _interopRequireDefault(_reactDom); - -var _createOffsetKey = require('../utils/create-offset-key'); - -var _createOffsetKey2 = _interopRequireDefault(_createOffsetKey); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/** - * LeafNode. - */ - -var LeafNode = function (_React$Component) { - _inherits(LeafNode, _React$Component); - - function LeafNode() { - _classCallCheck(this, LeafNode); - - return _possibleConstructorReturn(this, Object.getPrototypeOf(LeafNode).apply(this, arguments)); - } - - _createClass(LeafNode, [{ - key: 'componentDidUpdate', - value: function componentDidUpdate() { - this.updateSelection(); - } - }, { - key: 'componentDidMount', - value: function componentDidMount() { - this.updateSelection(); - } - }, { - key: 'updateSelection', - value: function updateSelection() { - var state = this.props.state; - var selection = state.selection; - - // If the selection is not focused we have nothing to do. - - if (!selection.isFocused) return; - - var anchorKey = selection.anchorKey; - var anchorOffset = selection.anchorOffset; - var focusKey = selection.focusKey; - var focusOffset = selection.focusOffset; - var _props = this.props; - var node = _props.node; - var range = _props.range; - var key = node.key; - var offset = range.offset; - var text = range.text; - - var start = offset; - var end = offset + text.length; - - // If neither matches, the selection doesn't start or end here, so exit. - var hasStart = key == anchorKey && start <= anchorOffset && anchorOffset <= end; - var hasEnd = key == focusKey && start <= focusOffset && focusOffset <= end; - if (!hasStart && !hasEnd) return; - - // We have a selection to render, so prepare a few things... - var native = window.getSelection(); - var el = _reactDom2.default.findDOMNode(this).firstChild; - - // If both the start and end are here, set the selection all at once. - if (hasStart && hasEnd) { - native.removeAllRanges(); - var _range = document.createRange(); - _range.setStart(el, anchorOffset - offset); - native.addRange(_range); - native.extend(el, focusOffset - offset); - return; - } - - // If the selection is forward, we can set things in sequence. In - // the first leaf to render, reset the selection and set the new start. And - // then in the second leaf to render, extend to the new end. - if (selection.isForward) { - if (hasStart) { - native.removeAllRanges(); - var _range2 = document.createRange(); - _range2.setStart(el, anchorOffset - offset); - native.addRange(_range2); - } else if (hasEnd) { - native.extend(el, focusOffset - offset); - } - } - - // Otherwise, if the selection is backward, we need to hack the order a bit. - // In the first leaf to render, set a phony start anchor to store the true - // end position. And then in the second leaf to render, set the start and - // extend the end to the stored value. - else { - if (hasEnd) { - native.removeAllRanges(); - var _range3 = document.createRange(); - _range3.setStart(el, focusOffset - offset); - native.addRange(_range3); - } else if (hasStart) { - var endNode = native.focusNode; - var endOffset = native.focusOffset; - native.removeAllRanges(); - var _range4 = document.createRange(); - _range4.setStart(el, anchorOffset - offset); - native.addRange(_range4); - native.extend(endNode, endOffset); - } - } - } - }, { - key: 'render', - value: function render() { - var _props2 = this.props; - var node = _props2.node; - var range = _props2.range; - var text = range.text; - - var offsetKey = (0, _createOffsetKey2.default)(node, range); - var styles = this.renderStyles(); - - return _react2.default.createElement( - 'span', - { - style: styles, - 'data-key': offsetKey, - 'data-type': 'leaf' - }, - text - ); - } - }, { - key: 'renderOffsetKey', - value: function renderOffsetKey() { - var _props3 = this.props; - var node = _props3.node; - var offset = _props3.offset; - var text = _props3.text; - - var key = node.key + '.' + offset + '-' + (offset + text.length); - return key; - } - }, { - key: 'renderStyles', - value: function renderStyles() { - var _props4 = this.props; - var range = _props4.range; - var renderMark = _props4.renderMark; - var marks = range.marks; - - return marks.reduce(function (styles, mark) { - return _extends({}, styles, renderMark(mark)); - }, {}); - } - }]); - - return LeafNode; -}(_react2.default.Component); - -/** - * Export. - */ - -LeafNode.propTypes = { - node: _react2.default.PropTypes.object.isRequired, - range: _react2.default.PropTypes.object.isRequired, - renderMark: _react2.default.PropTypes.func.isRequired, - state: _react2.default.PropTypes.object.isRequired -}; -exports.default = LeafNode; - -},{"../utils/create-offset-key":15,"react":256,"react-dom":118}],5:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _leaf = require('./leaf'); - -var _leaf2 = _interopRequireDefault(_leaf); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _convertCharactersToRanges = require('../utils/convert-characters-to-ranges'); - -var _convertCharactersToRanges2 = _interopRequireDefault(_convertCharactersToRanges); - -var _createOffsetKey = require('../utils/create-offset-key'); - -var _createOffsetKey2 = _interopRequireDefault(_createOffsetKey); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/** - * TextNode. - */ - -var TextNode = function (_React$Component) { - _inherits(TextNode, _React$Component); - - function TextNode() { - _classCallCheck(this, TextNode); - - return _possibleConstructorReturn(this, Object.getPrototypeOf(TextNode).apply(this, arguments)); - } - - _createClass(TextNode, [{ - key: 'render', - value: function render() { - var _this2 = this; - - var node = this.props.node; - var characters = node.characters; - - var ranges = (0, _convertCharactersToRanges2.default)(characters); - var leaves = ranges.map(function (range) { - return _this2.renderLeaf(range); - }); - - return _react2.default.createElement( - 'span', - { - key: node.key, - 'data-key': node.key, - 'data-type': 'text' - }, - leaves - ); - } - }, { - key: 'renderLeaf', - value: function renderLeaf(range) { - var _props = this.props; - var node = _props.node; - var renderMark = _props.renderMark; - var state = _props.state; - - var key = (0, _createOffsetKey2.default)(node, range); - return _react2.default.createElement(_leaf2.default, { - key: key, - range: range, - node: node, - renderMark: renderMark, - state: state - }); - } - }]); - - return TextNode; -}(_react2.default.Component); - -/** - * Export. - */ - -TextNode.propTypes = { - node: _react2.default.PropTypes.object.isRequired, - renderMark: _react2.default.PropTypes.func.isRequired, - state: _react2.default.PropTypes.object.isRequired -}; -exports.default = TextNode; - -},{"../utils/convert-characters-to-ranges":13,"../utils/create-offset-key":15,"./leaf":4,"react":256}],6:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Text = exports.State = exports.Selection = exports.Node = exports.Character = undefined; - -var _editor = require('./components/editor'); - -var _editor2 = _interopRequireDefault(_editor); - -var _character = require('./models/character'); - -var _character2 = _interopRequireDefault(_character); - -var _node = require('./models/node'); - -var _node2 = _interopRequireDefault(_node); - -var _selection = require('./models/selection'); - -var _selection2 = _interopRequireDefault(_selection); - -var _state = require('./models/state'); - -var _state2 = _interopRequireDefault(_state); - -var _text = require('./models/text'); - -var _text2 = _interopRequireDefault(_text); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Export. - */ - -/** - * Components. - */ - -exports.default = _editor2.default; - -/** - * Models. - */ - -exports.Character = _character2.default; -exports.Node = _node2.default; -exports.Selection = _selection2.default; -exports.State = _state2.default; -exports.Text = _text2.default; - -},{"./components/editor":3,"./models/character":7,"./models/node":8,"./models/selection":9,"./models/state":10,"./models/text":11}],7:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _immutable = require('immutable'); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/** - * Record. - */ - -var CharacterRecord = new _immutable.Record({ - marks: new _immutable.List(), - text: '' -}); - -/** - * Character. - */ - -var Character = function (_CharacterRecord) { - _inherits(Character, _CharacterRecord); - - function Character() { - _classCallCheck(this, Character); - - return _possibleConstructorReturn(this, Object.getPrototypeOf(Character).apply(this, arguments)); - } - - _createClass(Character, null, [{ - key: 'create', - - - /** - * Create a character record from a Javascript `object`. - * - * @param {Object} object - * @return {Character} character - */ - - value: function create(object) { - return new Character({ - text: object.text, - marks: new _immutable.List(object.marks) - }); - } - - /** - * Create a list of characters from a Javascript `array`. - * - * @param {Array} array - * @return {List} characters - */ - - }, { - key: 'createList', - value: function createList(array) { - return new _immutable.List(array.map(function (object) { - return Character.create(object); - })); - } - }]); - - return Character; -}(CharacterRecord); - -/** - * Export. - */ - -exports.default = Character; - -},{"immutable":47}],8:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _text = require('./text'); - -var _text2 = _interopRequireDefault(_text); - -var _uid = require('uid'); - -var _uid2 = _interopRequireDefault(_uid); - -var _immutable = require('immutable'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/** - * Record. - */ - -var NodeRecord = new _immutable.Record({ - children: new _immutable.OrderedMap(), - data: new _immutable.Map(), - key: null, - type: null -}); - -/** - * Node. - */ - -var Node = function (_NodeRecord) { - _inherits(Node, _NodeRecord); - - function Node() { - _classCallCheck(this, Node); - - return _possibleConstructorReturn(this, Object.getPrototypeOf(Node).apply(this, arguments)); - } - - _createClass(Node, [{ - key: 'filterNodes', - - - /** - * Recursively filter children nodes with `iterator`. - * - * @param {Function} iterator - * @return {OrderedMap} matches - */ - - value: function filterNodes(iterator) { - var shallow = this.children.filter(iterator); - var deep = this.children.map(function (node) { - return node instanceof Node ? node.filterNodes(iterator) : null; - }).filter(function (node) { - return node; - }).reduce(function (all, map) { - return all.concat(map); - }, shallow); - - return deep; - } - }], [{ - key: 'create', - - - /** - * Create a node record from a Javascript `object`. - * - * @param {Object} object - * @return {Node} node - */ - - value: function create(object) { - return new Node({ - children: Node.createMap(object.children), - data: new _immutable.Map(object.data), - key: (0, _uid2.default)(4), - type: object.type - }); - } - - /** - * Create an ordered map of nodes from a Javascript `array` of nodes. - * - * @param {Array} array - * @return {OrderedMap} nodes - */ - - }, { - key: 'createMap', - value: function createMap(array) { - return new _immutable.OrderedMap(array.reduce(function (map, object) { - var node = object.type == 'text' ? _text2.default.create(object) : Node.create(object); - map[node.key] = node; - return map; - }, {})); - } - }]); - - return Node; -}(NodeRecord); - -/** - * Export. - */ - -exports.default = Node; - -},{"./text":11,"immutable":47,"uid":261}],9:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _immutable = require('immutable'); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/** - * Record. - */ - -var SelectionRecord = new _immutable.Record({ - anchorKey: null, - anchorOffset: 0, - focusKey: null, - focusOffset: 0, - isBackward: false, - isFocused: false -}); - -/** - * Selection. - */ - -var Selection = function (_SelectionRecord) { - _inherits(Selection, _SelectionRecord); - - function Selection() { - _classCallCheck(this, Selection); - - return _possibleConstructorReturn(this, Object.getPrototypeOf(Selection).apply(this, arguments)); - } - - _createClass(Selection, [{ - key: 'isAtStartOf', - - - /** - * Check whether the selection is at the start of a `state`. - * - * @param {State} state - * @return {Boolean} isAtStart - */ - - value: function isAtStartOf(state) { - var nodes = state.nodes; - var startKey = this.startKey; - - var first = nodes.first(); - return startKey == first.key; - } - - /** - * Check whether the selection is at the end of a `state`. - * - * @param {State} state - * @return {Boolean} isAtEnd - */ - - }, { - key: 'isAtEndOf', - value: function isAtEndOf(state) { - var nodes = state.nodes; - var endKey = this.endKey; - - var last = nodes.last(); - return endKey == last.key; - } - }, { - key: 'isCollapsed', - get: function get() { - return this.anchorKey === this.focusKey && this.anchorOffset === this.focusOffset; - } - }, { - key: 'isForward', - get: function get() { - return !this.isBackward; - } - }, { - key: 'startKey', - get: function get() { - return this.isBackward ? this.focusKey : this.anchorKey; - } - }, { - key: 'startOffset', - get: function get() { - return this.isBackward ? this.focusOffset : this.anchorOffset; - } - }, { - key: 'endKey', - get: function get() { - return this.isBackward ? this.anchorKey : this.focusKey; - } - }, { - key: 'endOffset', - get: function get() { - return this.isBackward ? this.anchorOffset : this.focusOffset; - } - }], [{ - key: 'create', - value: function create(attrs) { - return new Selection(attrs); - } - }]); - - return Selection; -}(SelectionRecord); - -/** - * Export. - */ - -exports.default = Selection; - -},{"immutable":47}],10:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _selection = require('./selection'); - -var _selection2 = _interopRequireDefault(_selection); - -var _node2 = require('./node'); - -var _node3 = _interopRequireDefault(_node2); - -var _toCamelCase = require('to-camel-case'); - -var _toCamelCase2 = _interopRequireDefault(_toCamelCase); - -var _immutable = require('immutable'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/** - * Record. - */ - -var StateRecord = new _immutable.Record({ - nodes: new _immutable.OrderedMap(), - selection: new _selection2.default() -}); - -/** - * State. - */ - -var State = function (_StateRecord) { - _inherits(State, _StateRecord); - - function State() { - _classCallCheck(this, State); - - return _possibleConstructorReturn(this, Object.getPrototypeOf(State).apply(this, arguments)); - } - - _createClass(State, [{ - key: 'filterNodes', - - - /** - * Recursively filter children nodes with `iterator`. - * - * @param {Function} iterator - * @return {OrderedMap} matches - */ - - value: function filterNodes(iterator) { - var shallow = this.nodes.filter(iterator); - var deep = this.nodes.map(function (node) { - return node instanceof _node3.default ? node.filterNodes(iterator) : null; - }).filter(function (node) { - return node; - }).reduce(function (all, map) { - return all.concat(map); - }, shallow); - - return deep; - } - - /** - * Delete a single character. - * - * @param {Selection} selection (optional) - * @return {State} state - */ - - }, { - key: 'delete', - value: function _delete() { - var selection = arguments.length <= 0 || arguments[0] === undefined ? this.selection : arguments[0]; - - // when not collapsed, remove the entire selection - if (!selection.isCollapsed) return this.removeSelection(selection); - - // when already at the end of the content, there's nothing to do - if (selection.isAtEndOf(this)) return this; - - // otherwise, remove one character ahead of the cursor - var startKey = selection.startKey; - var startOffset = selection.startOffset; - var nodes = this.nodes; - - var node = nodes.get(startKey); - var endOffset = startOffset + 1; - return this.removeText(node, startOffset, endOffset); - } - - /** - * Remove the existing selection's content. - * - * @param {Selection} selection (optional) - * @return {State} state - */ - - }, { - key: 'removeSelection', - value: function removeSelection() { - var selection = arguments.length <= 0 || arguments[0] === undefined ? this.selection : arguments[0]; - - // if already collapsed, there's nothing to remove - if (selection.isCollapsed) return this; - - // if the start and end nodes are the same, just remove the matching text - var nodes = this.nodes; - var startKey = selection.startKey; - var startOffset = selection.startOffset; - var endKey = selection.endKey; - var endOffset = selection.endOffset; - - var startNode = nodes.get(startKey); - var endNode = nodes.get(endKey); - if (startNode == endNode) return this.removeText(startNode, startOffset, endOffset); - - // otherwise, remove all of the other nodes between them... - nodes = nodes.takeUntil(function (node) { - return node.key == startKey; - }).take(1).skipUntil(function (node) { - return node.key == endKey; - }).take(Infinity); - - // ...and remove the text from the first and last nodes - var state = this.set('nodes', nodes); - state = state.removeText(startNode, startOffset, startNode.text.length); - state = state.removeText(endNode, 0, endOffset); - return state; - } - - /** - * Remove the text from a `node`. - * - * @param {Node} node - * @param {Number} startOffset - * @param {Number} endOffset - * @return {State} state - */ - - }, { - key: 'removeText', - value: function removeText(node, startOffset, endOffset) { - var nodes = this.nodes; - var _node = node; - var text = _node.text; - - - text = text.filter(function (char, i) { - return i > startOffset && i < endOffset; - }); - - node = node.set('text', text); - nodes = nodes.set(node.key, node); - var state = this.set('nodes', nodes); - return state; - } - }], [{ - key: 'create', - - - /** - * Create a new `state` from `attrs`. - * - * @return {State} state - */ - - value: function create(attrs) { - return new State({ - nodes: _node3.default.createMap(attrs.nodes), - selection: _selection2.default.create(attrs.selection) - }); - } - }]); - - return State; -}(StateRecord); - -/** - * Export. - */ - -exports.default = State; - -},{"./node":8,"./selection":9,"immutable":47,"to-camel-case":257}],11:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _convertRangesToCharacters = require('../utils/convert-ranges-to-characters'); - -var _convertRangesToCharacters2 = _interopRequireDefault(_convertRangesToCharacters); - -var _uid = require('uid'); - -var _uid2 = _interopRequireDefault(_uid); - -var _immutable = require('immutable'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/** - * Record. - */ - -var TextRecord = new _immutable.Record({ - characters: new _immutable.List(), - key: null -}); - -/** - * Text. - */ - -var Text = function (_TextRecord) { - _inherits(Text, _TextRecord); - - function Text() { - _classCallCheck(this, Text); - - return _possibleConstructorReturn(this, Object.getPrototypeOf(Text).apply(this, arguments)); - } - - _createClass(Text, null, [{ - key: 'create', - - - /** - * Create a text record from a Javascript `object`. - * - * @param {Object} object - * @return {Node} node - */ - - value: function create(attrs) { - var characters = (0, _convertRangesToCharacters2.default)(attrs.ranges); - return new Text({ - key: (0, _uid2.default)(4), - characters: characters - }); - } - }]); - - return Text; -}(TextRecord); - -/** - * Export. - */ - -exports.default = Text; - -},{"../utils/convert-ranges-to-characters":14,"immutable":47,"uid":261}],12:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _keycode = require('keycode'); - -var _keycode2 = _interopRequireDefault(_keycode); - -var _environment = require('../utils/environment'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The core plugin. - */ - -var CORE_PLUGIN = { - - /** - * The core `onKeyDown` handler. - * - * @param {Event} e - * @param {Editor} editor - * @return {State or Null} newState - */ - - onKeyDown: function onKeyDown(e, editor) { - var state = editor.getState(); - var key = (0, _keycode2.default)(e.which); - - switch (key) { - case 'enter': - { - return state.split(); - } - - case 'backspace': - { - // COMPAT: Windows has a special "cut" behavior for the shift key. - if (_environment.IS_WINDOWS && e.shiftKey) return; - return isWord(e) ? state.backspaceWord() : state.backspace(); - } - - case 'delete': - { - // COMPAT: Windows has a special "cut" behavior for the shift key. - if (_environment.IS_WINDOWS && e.shiftKey) return; - return isWord(e) ? state.deleteWord() : state.delete(); - } - - case 'y': - { - if (!isCtrl(e) || !_environment.IS_WINDOWS) return; - return state.redo(); - } - - case 'z': - { - if (!isCommand(e)) return; - return _environment.IS_MAC && e.shiftKey ? state.redo() : state.undo(); - } - - default: - { - console.log('Unhandled key down.'); - } - } - } -}; - -/** - * Does an `e` have the the word-level modifier? - * - * @param {Event} e - * @return {Boolean} - */ - -function isWord(e) { - if (_environment.IS_MAC && e.altKey) return true; - if (e.ctrlKey) return true; - return false; -} - -/** - * Does an `e` have the the control modifier? - * - * @param {Event} e - * @return {Boolean} - */ - -function isCtrl(e) { - return e.ctrlKey && !e.altKey; -} - -/** - * Does an `e` have the the option modifier? - * - * @param {Event} e - * @return {Boolean} - */ - -function isOption(e) { - return _environment.IS_MAC && e.altKey; -} - -/** - * Does an `e` have the shift modifier? - * - * @param {Event} e - * @return {Boolean} - */ - -function isShift(e) { - return e.shiftKey; -} - -/** - * Does an `e` have the the command modifier? - * - * @param {Event} e - * @return {Boolean} - */ - -function isCommand(e) { - return _environment.IS_MAC ? e.metaKey && !e.altKey : e.ctrlKey && !e.altKey; -} - -/** - * Export. - */ - -exports.default = CORE_PLUGIN; - -},{"../utils/environment":16,"keycode":48}],13:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = convertCharactersToRanges; - -var _xor = require('lodash/xor'); - -var _xor2 = _interopRequireDefault(_xor); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Convert a `characters` list to `ranges`. - * - * @param {CharacterList} characters - * @return {Array} ranges - */ - -function convertCharactersToRanges(characters) { - return characters.toArray().reduce(function (ranges, char, i) { - var previous = i == 0 ? null : characters.get(i - 1); - var text = char.text; - - var marks = char.marks.toArray(); - - if (previous) { - var previousMarks = previous.marks.toArray(); - var diff = (0, _xor2.default)(marks, previousMarks); - if (!diff.length) { - var previousRange = ranges[ranges.length - 1]; - previousRange.text += text; - return ranges; - } - } - - var offset = ranges.map(function (range) { - return range.text; - }).join('').length; - ranges.push({ text: text, marks: marks, offset: offset }); - return ranges; - }, []); -} - -},{"lodash/xor":115}],14:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = convertRangesToCharacters; - -var _character = require('../models/character'); - -var _character2 = _interopRequireDefault(_character); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Convert a `characters` list to `ranges`. - * - * @param {CharacterList} characters - * @return {Array} ranges - */ - -function convertRangesToCharacters(ranges) { - return _character2.default.createList(ranges.reduce(function (characters, range) { - var chars = range.text.split('').map(function (char) { - return { - text: char, - marks: range.marks - }; - }); - return characters.concat(chars); - }, [])); -} - -},{"../models/character":7}],15:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = createOffsetKey; - -/** - * Create an offset key from a `node` and a `range`. - * - * @param {Node} node - * @param {Object} range - * @property {Number} offset - * @property {String} text - * @return {String} offsetKey - */ - -function createOffsetKey(node, range) { - var start = range.offset; - var end = range.offset + range.text.length; - return node.key + "." + start + "-" + end; -} - -},{}],16:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.IS_WINDOWS = exports.IS_SAFARI = exports.IS_UBUNTU = exports.IS_MAC = exports.IS_IOS = exports.IS_IE = exports.IS_FIREFOX = exports.IS_EDGE = exports.IS_CHROME = exports.IS_ANDROID = undefined; - -var _detectBrowser = require('detect-browser'); - -var _detectBrowser2 = _interopRequireDefault(_detectBrowser); - -var _uaParserJs = require('ua-parser-js'); - -var _uaParserJs2 = _interopRequireDefault(_uaParserJs); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Detections. - */ - -var IS_ANDROID = exports.IS_ANDROID = _detectBrowser2.default.name === 'android'; -var IS_CHROME = exports.IS_CHROME = _detectBrowser2.default.name === 'chrome'; -var IS_EDGE = exports.IS_EDGE = _detectBrowser2.default.name === 'edge'; -var IS_FIREFOX = exports.IS_FIREFOX = _detectBrowser2.default.name === 'firefox'; -var IS_IE = exports.IS_IE = _detectBrowser2.default.name === 'ie'; -var IS_IOS = exports.IS_IOS = _detectBrowser2.default.name === 'ios'; -var IS_MAC = exports.IS_MAC = new _uaParserJs2.default().getOS().name === 'Mac OS'; -var IS_UBUNTU = exports.IS_UBUNTU = new _uaParserJs2.default().getOS().name === 'Ubuntu'; -var IS_SAFARI = exports.IS_SAFARI = _detectBrowser2.default.name === 'safari'; -var IS_WINDOWS = exports.IS_WINDOWS = new _uaParserJs2.default().getOS().name.includes('Windows'); - -},{"detect-browser":19,"ua-parser-js":260}],17:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = findOffsetKey; - -/** - * Find the nearest parent of a `node` and return their offset key. - * - * @param {Node} node - * @return {String} key - */ - -function findOffsetKey(node) { - var match = node; - - while (match && match != document.documentElement) { - if (match instanceof Element && match.hasAttribute('data-key')) { - return match.getAttribute('data-key'); - } - - match = match.parentNode; - } - - return null; -} - -},{}],18:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -exports.default = findSelection; - -var _findOffsetKey = require('./find-offset-key'); - -var _findOffsetKey2 = _interopRequireDefault(_findOffsetKey); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Offset key splitter. - */ - -var SPLITTER = /^(\w+)(?:\.(\d+)-(\d+))?$/; - -/** - * Find the selection anchor properties from a `node`. - * - * @param {Node} node - * @param {Number} nodeOffset - * @return {Object} anchor - * @property {String} anchorKey - * @property {Number} anchorOffset - */ - -function findSelection(node, nodeOffset) { - var offsetKey = (0, _findOffsetKey2.default)(node); - if (!offsetKey) return null; - - var matches = SPLITTER.exec(offsetKey); - if (!matches) throw new Error('Unknown offset key "' + offsetKey + '".'); - - var _matches = _slicedToArray(matches, 4); - - var all = _matches[0]; - var key = _matches[1]; - var offsetStart = _matches[2]; - var offsetEnd = _matches[3]; - - offsetStart = parseInt(offsetStart, 10); - offsetEnd = parseInt(offsetEnd, 10); - - return { - key: key, - offset: offsetStart + nodeOffset - }; -} - -},{"./find-offset-key":17}],19:[function(require,module,exports){ -var detectBrowser = require('./lib/detectBrowser'); - -module.exports = detectBrowser(navigator.userAgent); - -},{"./lib/detectBrowser":20}],20:[function(require,module,exports){ -module.exports = function detectBrowser(userAgentString) { - var browsers = [ - [ 'edge', /Edge\/([0-9\._]+)/ ], - [ 'chrome', /Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/ ], - [ 'firefox', /Firefox\/([0-9\.]+)(?:\s|$)/ ], - [ 'opera', /Opera\/([0-9\.]+)(?:\s|$)/ ], - [ 'ie', /Trident\/7\.0.*rv\:([0-9\.]+)\).*Gecko$/ ], - [ 'ie', /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/ ], - [ 'ie', /MSIE\s(7\.0)/ ], - [ 'bb10', /BB10;\sTouch.*Version\/([0-9\.]+)/ ], - [ 'android', /Android\s([0-9\.]+)/ ], - [ 'ios', /iPad.*Version\/([0-9\._]+)/ ], - [ 'ios', /iPhone.*Version\/([0-9\._]+)/ ], - [ 'safari', /Version\/([0-9\._]+).*Safari/ ] - ]; - - var i = 0, mapped =[]; - for (i = 0; i < browsers.length; i++) { - browsers[i] = createMatch(browsers[i]); - if (isMatch(browsers[i])) { - mapped.push(browsers[i]); - } - } - - var match = mapped[0]; - var parts = match && match[3].split(/[._]/).slice(0,3); - - while (parts && parts.length < 3) { - parts.push('0'); - } - - function createMatch(pair) { - return pair.concat(pair[1].exec(userAgentString)); - } - - function isMatch(pair) { - return !!pair[2]; - } - - // return the name and version - return { - name: match && match[0], - version: parts && parts.join('.'), - }; -}; - -},{}],21:[function(require,module,exports){ -(function (process){ -'use strict'; - -/** - * Copyright (c) 2013-present, Facebook, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @typechecks - */ - -var emptyFunction = require('./emptyFunction'); - -/** - * Upstream version of event listener. Does not take into account specific - * nature of platform. - */ -var EventListener = { - /** - * Listen to DOM events during the bubble phase. - * - * @param {DOMEventTarget} target DOM element to register listener on. - * @param {string} eventType Event type, e.g. 'click' or 'mouseover'. - * @param {function} callback Callback function. - * @return {object} Object with a `remove` method. - */ - listen: function listen(target, eventType, callback) { - if (target.addEventListener) { - target.addEventListener(eventType, callback, false); - return { - remove: function remove() { - target.removeEventListener(eventType, callback, false); - } - }; - } else if (target.attachEvent) { - target.attachEvent('on' + eventType, callback); - return { - remove: function remove() { - target.detachEvent('on' + eventType, callback); - } - }; - } - }, - - /** - * Listen to DOM events during the capture phase. - * - * @param {DOMEventTarget} target DOM element to register listener on. - * @param {string} eventType Event type, e.g. 'click' or 'mouseover'. - * @param {function} callback Callback function. - * @return {object} Object with a `remove` method. - */ - capture: function capture(target, eventType, callback) { - if (target.addEventListener) { - target.addEventListener(eventType, callback, true); - return { - remove: function remove() { - target.removeEventListener(eventType, callback, true); - } - }; - } else { - if (process.env.NODE_ENV !== 'production') { - console.error('Attempted to listen to events during the capture phase on a ' + 'browser that does not support the capture phase. Your application ' + 'will not receive some events.'); - } - return { - remove: emptyFunction - }; - } - }, - - registerDefault: function registerDefault() {} -}; - -module.exports = EventListener; -}).call(this,require('_process')) - -},{"./emptyFunction":28,"_process":117}],22:[function(require,module,exports){ -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement); - -/** - * Simple, lightweight module assisting with the detection and context of - * Worker. Helps avoid circular dependencies and allows code to reason about - * whether or not they are in a Worker, even if they never include the main - * `ReactWorker` dependency. - */ -var ExecutionEnvironment = { - - canUseDOM: canUseDOM, - - canUseWorkers: typeof Worker !== 'undefined', - - canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent), - - canUseViewport: canUseDOM && !!window.screen, - - isInWorker: !canUseDOM // For now, this is true - might change in the future. - -}; - -module.exports = ExecutionEnvironment; -},{}],23:[function(require,module,exports){ -"use strict"; - -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * @typechecks - */ - -var _hyphenPattern = /-(.)/g; - -/** - * Camelcases a hyphenated string, for example: - * - * > camelize('background-color') - * < "backgroundColor" - * - * @param {string} string - * @return {string} - */ -function camelize(string) { - return string.replace(_hyphenPattern, function (_, character) { - return character.toUpperCase(); - }); -} - -module.exports = camelize; -},{}],24:[function(require,module,exports){ -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * @typechecks - */ - -'use strict'; - -var camelize = require('./camelize'); - -var msPattern = /^-ms-/; - -/** - * Camelcases a hyphenated CSS property name, for example: - * - * > camelizeStyleName('background-color') - * < "backgroundColor" - * > camelizeStyleName('-moz-transition') - * < "MozTransition" - * > camelizeStyleName('-ms-transition') - * < "msTransition" - * - * As Andi Smith suggests - * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix - * is converted to lowercase `ms`. - * - * @param {string} string - * @return {string} - */ -function camelizeStyleName(string) { - return camelize(string.replace(msPattern, 'ms-')); -} - -module.exports = camelizeStyleName; -},{"./camelize":23}],25:[function(require,module,exports){ -'use strict'; - -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ - -var isTextNode = require('./isTextNode'); - -/*eslint-disable no-bitwise */ - -/** - * Checks if a given DOM node contains or is another DOM node. - */ -function containsNode(outerNode, innerNode) { - if (!outerNode || !innerNode) { - return false; - } else if (outerNode === innerNode) { - return true; - } else if (isTextNode(outerNode)) { - return false; - } else if (isTextNode(innerNode)) { - return containsNode(outerNode, innerNode.parentNode); - } else if ('contains' in outerNode) { - return outerNode.contains(innerNode); - } else if (outerNode.compareDocumentPosition) { - return !!(outerNode.compareDocumentPosition(innerNode) & 16); - } else { - return false; - } -} - -module.exports = containsNode; -},{"./isTextNode":38}],26:[function(require,module,exports){ -(function (process){ -'use strict'; - -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * @typechecks - */ - -var invariant = require('./invariant'); - -/** - * Convert array-like objects to arrays. - * - * This API assumes the caller knows the contents of the data type. For less - * well defined inputs use createArrayFromMixed. - * - * @param {object|function|filelist} obj - * @return {array} - */ -function toArray(obj) { - var length = obj.length; - - // Some browsers builtin objects can report typeof 'function' (e.g. NodeList - // in old versions of Safari). - !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0; - - !(typeof length === 'number') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0; - - !(length === 0 || length - 1 in obj) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0; - - !(typeof obj.callee !== 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object can\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0; - - // Old IE doesn't give collections access to hasOwnProperty. Assume inputs - // without method will throw during the slice call and skip straight to the - // fallback. - if (obj.hasOwnProperty) { - try { - return Array.prototype.slice.call(obj); - } catch (e) { - // IE < 9 does not support Array#slice on collections objects - } - } - - // Fall back to copying key by key. This assumes all keys have a value, - // so will not preserve sparsely populated inputs. - var ret = Array(length); - for (var ii = 0; ii < length; ii++) { - ret[ii] = obj[ii]; - } - return ret; -} - -/** - * Perform a heuristic test to determine if an object is "array-like". - * - * A monk asked Joshu, a Zen master, "Has a dog Buddha nature?" - * Joshu replied: "Mu." - * - * This function determines if its argument has "array nature": it returns - * true if the argument is an actual array, an `arguments' object, or an - * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()). - * - * It will return false for other array-like objects like Filelist. - * - * @param {*} obj - * @return {boolean} - */ -function hasArrayNature(obj) { - return( - // not null/false - !!obj && ( - // arrays are objects, NodeLists are functions in Safari - typeof obj == 'object' || typeof obj == 'function') && - // quacks like an array - 'length' in obj && - // not window - !('setInterval' in obj) && - // no DOM node should be considered an array-like - // a 'select' element has 'length' and 'item' properties on IE8 - typeof obj.nodeType != 'number' && ( - // a real array - Array.isArray(obj) || - // arguments - 'callee' in obj || - // HTMLCollection/NodeList - 'item' in obj) - ); -} - -/** - * Ensure that the argument is an array by wrapping it in an array if it is not. - * Creates a copy of the argument if it is already an array. - * - * This is mostly useful idiomatically: - * - * var createArrayFromMixed = require('createArrayFromMixed'); - * - * function takesOneOrMoreThings(things) { - * things = createArrayFromMixed(things); - * ... - * } - * - * This allows you to treat `things' as an array, but accept scalars in the API. - * - * If you need to convert an array-like object, like `arguments`, into an array - * use toArray instead. - * - * @param {*} obj - * @return {array} - */ -function createArrayFromMixed(obj) { - if (!hasArrayNature(obj)) { - return [obj]; - } else if (Array.isArray(obj)) { - return obj.slice(); - } else { - return toArray(obj); - } -} - -module.exports = createArrayFromMixed; -}).call(this,require('_process')) - -},{"./invariant":36,"_process":117}],27:[function(require,module,exports){ -(function (process){ -'use strict'; - -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * @typechecks - */ - -/*eslint-disable fb-www/unsafe-html*/ - -var ExecutionEnvironment = require('./ExecutionEnvironment'); - -var createArrayFromMixed = require('./createArrayFromMixed'); -var getMarkupWrap = require('./getMarkupWrap'); -var invariant = require('./invariant'); - -/** - * Dummy container used to render all markup. - */ -var dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null; - -/** - * Pattern used by `getNodeName`. - */ -var nodeNamePattern = /^\s*<(\w+)/; - -/** - * Extracts the `nodeName` of the first element in a string of markup. - * - * @param {string} markup String of markup. - * @return {?string} Node name of the supplied markup. - */ -function getNodeName(markup) { - var nodeNameMatch = markup.match(nodeNamePattern); - return nodeNameMatch && nodeNameMatch[1].toLowerCase(); -} - -/** - * Creates an array containing the nodes rendered from the supplied markup. The - * optionally supplied `handleScript` function will be invoked once for each - *