dante2-editor 0.3.4 → 0.3.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/demo/assets/index.html +1 -1
- data/demo/assets/license.html +1 -1
- data/demo/assets/options.html +1 -1
- data/dist/Dante2.js +50735 -50313
- data/dist/Dante2.min.js +15 -39
- data/dist/Dante2.min.js.map +1 -1
- data/dist/DanteStyles.js +63 -37
- data/dist/DanteStyles.min.js +1 -1
- data/dist/DanteStyles.min.js.map +1 -1
- data/dist/dante-vendors.js +39276 -38907
- data/dist/dante-vendors.min.js +15 -34
- data/dist/dante-vendors.min.js.map +1 -1
- data/docs/app.css.map +1 -1
- data/docs/app.js +45 -42
- data/docs/app.js.map +1 -1
- data/docs/dante-vendors.js +48512 -48083
- data/docs/dante-vendors.js.map +1 -1
- data/docs/dante.js +3308 -3278
- data/docs/dante.js.map +1 -1
- data/docs/doc.html +1 -1
- data/docs/index.html +1 -1
- data/docs/license.html +1 -1
- data/package.json +5 -5
- data/rb_lib/dante2-editor/version.rb +1 -1
- data/src/components/blocks/image.js +21 -10
- data/src/components/dante.js +25 -23
- data/src/components/dante_editor.js +4 -1
- data/src/components/popovers/toolTip.js +1 -1
- data/webpack/base.config.js +15 -10
- data/webpack/docs.config.js +15 -10
- data/webpack/webpack.config.js +2 -1
- data/yarn.lock +713 -193
- metadata +3 -4
data/docs/dante.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"dante.js","sources":["webpack:///demo/initialize.js","webpack:///./src/styles/dante.scss?611f","webpack:///./src/styles/fonts/dante/fontello.eot","webpack:///./src/styles/fonts/dante/fontello.woff","webpack:///./src/styles/fonts/dante/fontello.ttf","webpack:///./src/styles/fonts/dante/fontello.svg","webpack:///./src/styles/fonts/dante/dante.eot","webpack:///./src/styles/fonts/dante/dante.woff","webpack:///./src/styles/fonts/dante/dante.ttf","webpack:///./src/styles/fonts/dante/dante.svg","webpack:///src/index.js","webpack:///src/components/dante.js","webpack:///src/components/dante_editor.js","webpack:///src/model/index.js","webpack:///src/components/decorators/link.js","webpack:///src/components/debug.js","webpack:///src/utils/find_entities.js","webpack:///src/utils/save_content.js","webpack:///src/utils/html2content.js","webpack:///src/components/popovers/image.js","webpack:///src/utils/selection.js","webpack:///src/components/popovers/link.js","webpack:///src/components/popovers/addButton.js","webpack:///src/components/popovers/toolTip.js","webpack:///src/components/blocks/image.js","webpack:///src/components/blocks/embed.js","webpack:///src/components/blocks/video.js","webpack:///src/components/blocks/placeholder.js"],"sourcesContent":["import 'styles/dante'\nimport { Dante, DanteEditor } from '../src/index'\n/*\nmodule.exports = {\n Dante, \n DanteEditor\n}*/\n\n\n/** WEBPACK FOOTER **\n ** demo/initialize.js\n **/","// removed by extract-text-webpack-plugin\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/styles/dante.scss\n ** module id = 10\n ** module chunks = 1\n **/","module.exports = __webpack_public_path__ + \"fonts/fontello.eot\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/styles/fonts/dante/fontello.eot\n ** module id = 12\n ** module chunks = 1\n **/","module.exports = __webpack_public_path__ + \"fonts/fontello.woff\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/styles/fonts/dante/fontello.woff\n ** module id = 13\n ** module chunks = 1\n **/","module.exports = __webpack_public_path__ + \"fonts/fontello.ttf\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/styles/fonts/dante/fontello.ttf\n ** module id = 14\n ** module chunks = 1\n **/","module.exports = __webpack_public_path__ + \"fonts/fontello.svg\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/styles/fonts/dante/fontello.svg\n ** module id = 15\n ** module chunks = 1\n **/","module.exports = __webpack_public_path__ + \"fonts/dante.eot\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/styles/fonts/dante/dante.eot\n ** module id = 16\n ** module chunks = 1\n **/","module.exports = __webpack_public_path__ + \"fonts/dante.woff\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/styles/fonts/dante/dante.woff\n ** module id = 17\n ** module chunks = 1\n **/","module.exports = __webpack_public_path__ + \"fonts/dante.ttf\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/styles/fonts/dante/dante.ttf\n ** module id = 18\n ** module chunks = 1\n **/","module.exports = __webpack_public_path__ + \"fonts/dante.svg\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/styles/fonts/dante/dante.svg\n ** module id = 19\n ** module chunks = 1\n **/","\nimport Dante from './components/dante'\nimport DanteEditor from './components/dante_editor'\n\n\nmodule.exports = {\n Dante, \n DanteEditor\n}\n\n\n/** WEBPACK FOOTER **\n ** src/index.js\n **/","module.exports = global[\"Dante\"] = require(\"-!/Users/michelson/Documents/brunch-apps/dante2/node_modules/babel-loader/lib/index.js?presets[]=es2015!/Users/michelson/Documents/brunch-apps/dante2/src/components/dante.js\");\n\n\n/** WEBPACK FOOTER **\n ** src/components/dante.js\n **/","module.exports = global[\"DanteEditor\"] = require(\"-!/Users/michelson/Documents/brunch-apps/dante2/node_modules/babel-loader/lib/index.js?presets[]=es2015!/Users/michelson/Documents/brunch-apps/dante2/src/components/dante_editor.js\");\n\n\n/** WEBPACK FOOTER **\n ** src/components/dante_editor.js\n **/","import { Map } from 'immutable';\n\n\n\nimport { EditorState, ContentBlock, genKey } from 'draft-js';\n\n\n/*\nUsed from [react-rte](https://github.com/brijeshb42/medium-draft)\nby [brijeshb42](https://github.com/brijeshb42/medium-draft)\n*/\n\n/*\nReturns default block-level metadata for various block type. Empty object otherwise.\n*/\nexport const getDefaultBlockData = (blockType, initialData = {}) => {\n switch (blockType) {\n //case Block.TODO: return { checked: false };\n default: return initialData;\n }\n};\n\nexport const getNode = (root=window) => {\n let t = null\n if (root.getSelection){\n t = root.getSelection()\n } else if (root.document.getSelection){\n t = root.document.getSelection()\n } else if (root.document.selection){\n t = root.document.selection.createRange().text\n }\n return t\n}\n\n/*\nGet currentBlock in the editorState.\n*/\nexport const getCurrentBlock = (editorState) => {\n const selectionState = editorState.getSelection();\n const contentState = editorState.getCurrentContent();\n const block = contentState.getBlockForKey(selectionState.getStartKey());\n return block;\n};\n\n/*\nAdds a new block (currently replaces an empty block) at the current cursor position\nof the given `newType`.\n*/\nexport const addNewBlock = (editorState, newType = \"unstyled\", initialData = {}) => {\n const selectionState = editorState.getSelection();\n if (!selectionState.isCollapsed()) {\n return editorState;\n }\n const contentState = editorState.getCurrentContent();\n const key = selectionState.getStartKey();\n const blockMap = contentState.getBlockMap();\n const currentBlock = getCurrentBlock(editorState);\n if (!currentBlock) {\n return editorState;\n }\n if (currentBlock.getLength() === 0) {\n if (currentBlock.getType() === newType) {\n return editorState;\n }\n const newBlock = currentBlock.merge({\n type: newType,\n data: getDefaultBlockData(newType, initialData),\n });\n const newContentState = contentState.merge({\n blockMap: blockMap.set(key, newBlock),\n selectionAfter: selectionState,\n });\n return EditorState.push(editorState, newContentState, 'change-block-type');\n }\n return editorState;\n};\n\n\n/*\nChanges the block type of the current block.\n*/\nexport const resetBlockWithType = (editorState, newType = \"unstyled\", data={}) => {\n const contentState = editorState.getCurrentContent();\n const selectionState = editorState.getSelection();\n const key = selectionState.getStartKey();\n const blockMap = contentState.getBlockMap();\n const block = blockMap.get(key);\n\n let newText = '';\n console.log( \"DATA FOR PLACEHOLDER!\", data)\n const text = block.getText();\n if (block.getLength() >= 2) {\n newText = text.substr(1);\n }\n\n /*if(data.text){\n newText = data.text\n }*/\n\n //let newText = data.text\n\n const newBlock = block.merge({\n text: newText,\n type: newType,\n data: getDefaultBlockData(newType, data),\n });\n const newContentState = contentState.merge({\n blockMap: blockMap.set(key, newBlock),\n selectionAfter: selectionState.merge({\n anchorOffset: 0,\n focusOffset: 0,\n }),\n });\n return EditorState.push(editorState, newContentState, 'change-block-type');\n};\n\n\n/*\nUpdate block-level metadata of the given `block` to the `newData`/\n*/\nexport const updateDataOfBlock = (editorState, block, newData) => {\n const contentState = editorState.getCurrentContent();\n const newBlock = block.merge({\n data: newData,\n });\n const newContentState = contentState.merge({\n blockMap: contentState.getBlockMap().set(block.getKey(), newBlock),\n });\n return EditorState.push(editorState, newContentState, 'change-block-type');\n // return editorState;\n};\n\nexport const updateTextOfBlock = (editorState, block, text) => {\n const contentState = editorState.getCurrentContent();\n const newBlock = block.merge({\n text: text,\n });\n const newContentState = contentState.merge({\n blockMap: contentState.getBlockMap().set(block.getKey(), newBlock),\n });\n\n return EditorState.push(editorState, newContentState, 'change-block-type');\n // return editorState;\n};\n\n// const BEFORE = -1;\n// const AFTER = 1;\n\n/*\nUsed from [react-rte](https://github.com/sstur/react-rte/blob/master/src/lib/insertBlockAfter.js)\nby [sstur](https://github.com/sstur)\n*/\nexport const addNewBlockAt = (\n editorState,\n pivotBlockKey,\n newBlockType = \"unstyled\",\n initialData = {}\n ) => {\n const content = editorState.getCurrentContent();\n const blockMap = content.getBlockMap();\n const block = blockMap.get(pivotBlockKey);\n const blocksBefore = blockMap.toSeq().takeUntil((v) => (v === block));\n const blocksAfter = blockMap.toSeq().skipUntil((v) => (v === block)).rest();\n const newBlockKey = genKey();\n\n const newBlock = new ContentBlock({\n key: newBlockKey,\n type: newBlockType,\n text: '',\n characterList: block.getCharacterList().slice(0, 0),\n depth: 0,\n data: Map(getDefaultBlockData(newBlockType, initialData)),\n });\n\n const newBlockMap = blocksBefore.concat(\n [[pivotBlockKey, block], [newBlockKey, newBlock]],\n blocksAfter\n ).toOrderedMap();\n\n const selection = editorState.getSelection();\n\n const newContent = content.merge({\n blockMap: newBlockMap,\n selectionBefore: selection,\n selectionAfter: selection.merge({\n anchorKey: newBlockKey,\n anchorOffset: 0,\n focusKey: newBlockKey,\n focusOffset: 0,\n isBackward: false,\n }),\n });\n return EditorState.push(editorState, newContent, 'split-block');\n};\n\n\n\n/** WEBPACK FOOTER **\n ** src/model/index.js\n **/","import React from 'react'\nimport { Entity } from 'draft-js'\n\nexport default class Link extends React.Component {\n\n constructor(props) {\n super(props)\n this._validateLink = this._validateLink.bind(this)\n this._checkProtocol = this._checkProtocol.bind(this)\n this._showPopLinkOver = this._showPopLinkOver.bind(this)\n this._hidePopLinkOver = this._hidePopLinkOver.bind(this)\n this.isHover = false\n }\n\n _validateLink() {\n const pattern = new RegExp('^(https?:\\/\\/)?' + // protocol\n '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name\n '((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address\n '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path\n '(\\?[&a-z\\d%_.~+=-]*)?' + // query string\n '(\\#[-a-z\\d_]*)?$', 'i') // fragment locater\n if (!pattern.test(str)) {\n alert(\"Please enter a valid URL.\")\n return false\n } else {\n return true\n }\n }\n\n _checkProtocol() {\n return console.log(\"xcvd\")\n }\n\n _showPopLinkOver(e) {\n if (!this.data.showPopLinkOver) {\n return\n }\n return this.data.showPopLinkOver(this.refs.link)\n }\n\n _hidePopLinkOver(e) {\n if (!this.data.hidePopLinkOver) {\n return\n }\n return this.data.hidePopLinkOver()\n }\n\n render() {\n this.data = Entity.get(this.props.entityKey).getData()\n\n return (\n <a\n ref=\"link\"\n href={ this.data.url }\n className=\"markup--anchor\"\n onMouseOver={ this._showPopLinkOver }\n onMouseOut={ this._hidePopLinkOver }\n >\n { this.props.children }\n </a>\n )\n }\n}\n\n\n\n\n/** WEBPACK FOOTER **\n ** src/components/decorators/link.js\n **/","import React from 'react'\n\nclass Debug extends React.Component {\n\n constructor() {\n super()\n\n this.handleToggleReadOnly = this.handleToggleReadOnly.bind(this)\n this.handleTestEmitAndDecode = this.handleTestEmitAndDecode.bind(this)\n this.handleTestEmitTEXT = this.handleTestEmitTEXT.bind(this)\n this.testEmitAndDecode = this.testEmitAndDecode.bind(this)\n this.testEmitTEXT = this.testEmitTEXT.bind(this)\n this.logState = this.logState.bind(this)\n this.toggleDisplay = this.toggleDisplay.bind(this)\n this.open = this.open.bind(this)\n this.render = this.render.bind(this)\n this.state = {\n output: \"\",\n display: \"none\"\n }\n }\n\n handleToggleReadOnly(e) {\n e.preventDefault()\n this.props.editor.toggleEditable()\n return false\n }\n\n handleTestEmitAndDecode(e) {\n e.preventDefault()\n return this.testEmitAndDecode()\n }\n\n handleTestEmitTEXT(e) {\n e.preventDefault()\n return this.testEmitTEXT()\n }\n\n testEmitAndDecode(e) {\n const raw_as_json = this.props.editor.emitSerializedOutput()\n this.props.editor.setState({ \n editorState: this.props.editor.decodeEditorContent(raw_as_json) }, \n this.logState(JSON.stringify(raw_as_json)))\n return false\n }\n\n testEmitTEXT() {\n const text = this.props.editor.getTextFromEditor()\n return this.logState(text)\n }\n\n logState(raw) {\n return this.setState({ output: raw }, this.open)\n }\n\n toggleDisplay(e) {\n e.preventDefault()\n const d = this.state.display === \"block\" ? \"none\" : this.state.display\n return this.setState({\n display: d })\n }\n\n open() {\n return this.setState({\n display: \"block\" })\n }\n\n render() {\n return (\n <div>\n <div className=\"debugControls\">\n <ul>\n <li> LOCKS: { this.props.editor.state.locks } </li>\n <li>\n <a href=\"#\" onClick={ this.handleToggleReadOnly }>\n EDITABLE: { this.props.editor.state.read_only ? 'NO' : 'YES' }\n </a>\n </li>\n <li>\n <a href=\"#\" onClick={ this.handleTestEmitTEXT }>EDITOR TEXT</a>\n </li>\n <li>\n <a href=\"#\" onClick={ this.handleTestEmitAndDecode }>EDITOR STATE</a>\n </li>\n </ul>\n </div>\n <div className=\"debugZone\" style={ { display: this.state.display } }>\n <a href=\"#\" className=\"dante-debug-close close\" onClick={ this.toggleDisplay } />\n <div className=\"debugOutput\">\n <h2>EDITOR OUTPUT</h2>\n {\n this.state.output.length > 0\n ? <pre>{ this.state.output }</pre>\n : undefined\n }\n </div>\n </div>\n </div>\n )\n }\n}\n\nexport default Debug\n\n\n\n\n/** WEBPACK FOOTER **\n ** src/components/debug.js\n **/","import { Entity } from 'draft-js'\n\n//TODO: what the f*ck is happening here? ;-;\nconst findEntities = (entityType, instance, contentBlock, callback) => {\n return contentBlock.findEntityRanges((function(_this) {\n return function(character) {\n var entityKey, opts, res\n entityKey = character.getEntity()\n return (res = entityKey !== null && Entity.get(entityKey).getType() === entityType, res ? (opts = {\n showPopLinkOver: instance.showPopLinkOver,\n hidePopLinkOver: instance.hidePopLinkOver\n }, Entity.mergeData(entityKey, opts)) : void 0, res)\n }\n })(this), callback)\n}\n\nexport default findEntities\n\n\n/** WEBPACK FOOTER **\n ** src/utils/find_entities.js\n **/","import axios from \"axios\"\nimport Immutable from 'immutable'\n\nclass SaveBehavior {\n constructor(options) {\n this.getLocks = options.getLocks\n this.config = options.config\n this.editorContent = options.editorContent\n this.editorState = options.editorState\n }\n\n handleStore(ev){\n return this.store()\n }\n\n store(content){\n if (!this.config.data_storage.url) { return }\n if (this.getLocks() > 0) { return }\n\n clearTimeout(this.timeout)\n\n return this.timeout = setTimeout(() => {\n return this.checkforStore(content)\n }\n , this.config.data_storage.interval)\n }\n\n getTextFromEditor(content){\n return content.blocks.map(o=> {\n return o.text\n }\n )\n .join(\"\\n\")\n }\n\n getUrl() {\n let { url } = this.config.data_storage\n if (typeof(url) === \"function\") { \n return url() \n } else { \n return url \n }\n }\n\n getMethod() {\n let { method } = this.config.data_storage\n if (typeof(method) === \"function\") { \n return method() \n } else { \n return method \n }\n }\n\n getWithCredentials(){\n let { withCredentials } = this.config.data_storage\n if (typeof(withCredentials) === \"function\") { \n return withCredentials() \n } else { \n return withCredentials \n }\n }\n\n getCrossDomain(){\n let { crossDomain } = this.config.data_storage\n if (typeof(crossDomain) === \"function\") { \n return crossDomain()\n } else { \n return crossDomain \n }\n }\n\n getHeaders(){\n let { headers } = this.config.data_storage\n if (typeof(headers) === \"function\") { \n return headers() \n } else { \n return headers \n }\n }\n\n checkforStore(content){\n // ENTER DATA STORE\n let isChanged = !Immutable.is(Immutable.fromJS(this.editorContent), Immutable.fromJS(content))\n // console.log(\"CONTENT CHANGED:\", isChanged)\n\n if (!isChanged) { return }\n\n this.save(content)\n }\n\n save(content){\n\n // use save handler from config if exists\n if (this.config.data_storage.save_handler){\n this.config.data_storage.save_handler(this, content)\n return \n }\n\n if (this.config.xhr.before_handler) { this.config.xhr.before_handler() }\n // console.log \"SAVING TO: #{@getMethod()} #{@getUrl()}\"\n\n return axios({\n method: this.getMethod(),\n url: this.getUrl(),\n data: {\n editor_content: JSON.stringify(content),\n text_content: this.getTextFromEditor(content)\n },\n withCredentials: this.getWithCredentials(),\n crossDomain: this.getCrossDomain(),\n headers: this.getHeaders(),\n })\n .then(result=> {\n // console.log \"STORING CONTENT\", result\n if (this.config.data_storage.success_handler) { this.config.data_storage.success_handler(result) }\n if (this.config.xhr.success_handler) { return this.config.xhr.success_handler(result) }\n }\n )\n .catch(error=> {\n // console.log(\"ERROR: got error saving content at #{@config.data_storage.url} - #{error}\")\n if (this.config.xhr.failure_handler) { return this.config.xhr.failure_handler(error) }\n }\n )\n }\n}\n\n\nexport default SaveBehavior\n\n\n\n/** WEBPACK FOOTER **\n ** src/utils/save_content.js\n **/","import { ContentState, genKey, Entity, CharacterMetadata, ContentBlock, convertFromHTML, getSafeBodyFromHTML } from 'draft-js'\n\nimport { List, OrderedSet, Repeat, fromJS } from 'immutable'\n\n\n// { compose\n// } = require('underscore')\n\n// underscore compose function\nlet compose = function() {\n let args = arguments\n let start = args.length - 1\n return function() {\n let i = start\n let result = args[start].apply(this, arguments)\n while (i--) {\n result = args[i].call(this, result)\n }\n return result\n }\n}\n\n// from https://gist.github.com/N1kto/6702e1c2d89a33a15a032c234fc4c34e\n\n/*\n * Helpers\n */\n\n// Prepares img meta data object based on img attributes\nlet getBlockSpecForElement = imgElement=> {\n return {\n contentType: 'image',\n imgSrc: imgElement.getAttribute('src')\n }\n}\n\n// Wraps meta data in HTML element which is 'understandable' by Draft, I used <blockquote />.\nlet wrapBlockSpec = blockSpec=> {\n if (blockSpec === null) {\n return null\n }\n\n let tempEl = document.createElement('blockquote')\n // stringify meta data and insert it as text content of temp HTML element. We will later extract\n // and parse it.\n tempEl.innerText = JSON.stringify(blockSpec)\n return tempEl\n}\n\n// Replaces <img> element with our temp element\nlet replaceElement = (oldEl, newEl)=> {\n if (!(newEl instanceof HTMLElement)) {\n return\n }\n\n let upEl = getUpEl(oldEl)\n //parentNode = oldEl.parentNode\n //return parentNode.replaceChild(newEl, oldEl)\n return upEl.parentNode.insertBefore(newEl, upEl)\n}\n\nvar getUpEl = el=> {\n let original_el = el\n while (el.parentNode) {\n if (el.parentNode.tagName !== 'BODY') {\n el = el.parentNode\n }\n if (el.parentNode.tagName === 'BODY') { return el }\n }\n}\n\nlet elementToBlockSpecElement = compose(wrapBlockSpec, getBlockSpecForElement)\n\nlet imgReplacer = imgElement=> {\n return replaceElement(imgElement, elementToBlockSpecElement(imgElement))\n}\n\n/*\n * Main function\n */\n\n// takes HTML string and returns DraftJS ContentState\nlet customHTML2Content = function(HTML, blockRn){\n let tempDoc = new DOMParser().parseFromString(HTML, 'text/html')\n // replace all <img /> with <blockquote /> elements\n\n let a = tempDoc.querySelectorAll('img').forEach( item=> imgReplacer(item))\n\n // use DraftJS converter to do initial conversion. I don't provide DOMBuilder and\n // blockRenderMap arguments here since it should fall back to its default ones, which are fine\n console.log(tempDoc.body.innerHTML)\n let contentBlocks = convertFromHTML(tempDoc.body.innerHTML,\n getSafeBodyFromHTML,\n blockRn\n )\n\n // now replace <blockquote /> ContentBlocks with 'atomic' ones\n contentBlocks = contentBlocks.map(function(block){\n let newBlock\n console.log(\"CHECK BLOCK\", block.getType())\n if (block.getType() !== 'blockquote') {\n return block\n }\n\n let json = \"\"\n try {\n json = JSON.parse(block.getText())\n } catch (error) {\n return block\n }\n\n return newBlock = block.merge({\n type: \"image\",\n text: \"\",\n data: {\n url: json.imgSrc,\n forceUpload: true\n }\n })\n })\n\n tempDoc = null\n return ContentState.createFromBlockArray(contentBlocks)\n}\n\n\nexport default customHTML2Content\n\n\n/** WEBPACK FOOTER **\n ** src/utils/html2content.js\n **/","\nimport React from 'react'\nimport ReactDOM from 'react-dom'\n\nimport { Entity, RichUtils, AtomicBlockUtils, EditorState } from 'draft-js'\n\nimport { getSelectionRect, getSelection } from \"../../utils/selection.js\"\n\nimport { getCurrentBlock, getNode } from '../../model/index.js'\n\nclass DanteImagePopover extends React.Component {\n\n constructor(props) {\n super(props)\n\n this.display = this.display.bind(this)\n this.show = this.show.bind(this)\n this.hide = this.hide.bind(this)\n this._toggleScaled = this._toggleScaled.bind(this)\n this.scale = this.scale.bind(this)\n this.collapse = this.collapse.bind(this)\n this.relocate = this.relocate.bind(this)\n this.componentWillReceiveProps = this.componentWillReceiveProps.bind(this)\n this.handleClick = this.handleClick.bind(this)\n this.state = {\n position: {\n top: 0,\n left: 0\n },\n show: false,\n scaled: false,\n buttons: [{ type: \"left\" }, \n { type: \"center\"}, \n { type: \"fill\" }, \n { type: \"wide\" }]\n }\n }\n\n display(b) {\n if (b) {\n return this.show()\n } else {\n return this.hide()\n }\n }\n\n show() {\n return this.setState({\n show: true })\n }\n\n hide() {\n return this.setState({\n show: false })\n }\n\n setPosition(coords) {\n return this.setState({\n position: coords })\n }\n\n _toggleScaled(ev) {\n if (this.state.scaled) {\n return this.collapse()\n } else {\n return this.scale()\n }\n }\n\n scale() {\n return this.setState({\n scaled: true })\n }\n\n collapse() {\n return this.setState({\n scaled: false })\n }\n\n relocate() {\n let { editorState } = this.props\n\n if (editorState.getSelection().isCollapsed()) {\n\n let currentBlock = getCurrentBlock(editorState)\n let blockType = currentBlock.getType()\n\n let contentState = editorState.getCurrentContent()\n let selectionState = editorState.getSelection()\n\n let block = contentState.getBlockForKey(selectionState.anchorKey)\n\n let nativeSelection = getSelection(window)\n if (!nativeSelection.rangeCount) {\n return\n }\n\n let node = getNode()\n\n let selectionBoundary = getSelectionRect(nativeSelection)\n let coords = selectionBoundary\n\n let parent = ReactDOM.findDOMNode(this.props.editor)\n let parentBoundary = parent.getBoundingClientRect()\n\n this.display(blockType === \"image\")\n\n if (blockType === \"image\") {\n selectionBoundary = node.anchorNode.parentNode.parentNode\n .parentNode.getBoundingClientRect()\n let el = this.refs.image_popover\n let padd = el.offsetWidth / 2\n return this.setPosition({\n top: selectionBoundary.top - parentBoundary.top + 60,\n left: selectionBoundary.left + selectionBoundary.width / 2 - padd\n })\n }\n } else {\n return this.hide()\n }\n }\n\n componentWillReceiveProps(newProps) {\n return this.collapse()\n }\n\n getStyle() {\n if (!this.state.position) {\n return {}\n }\n }\n\n handleClick(item) {\n return this.props.editor.setDirection(item.type)\n }\n\n render() {\n return (\n <div\n ref=\"image_popover\"\n className={ `dante-popover popover--Aligntooltip popover--top popover--animated ${ this.state.show ? 'is-active' : undefined }` }\n style={ \n { top: this.state.position.top,\n left: this.state.position.left }\n }\n >\n <div className='popover-inner'>\n <ul className='dante-menu-buttons'>\n { this.state.buttons.map( (item, i) => {\n return <DanteImagePopoverItem\n item={ item }\n handleClick={ this.handleClick }\n key={ i }\n />\n })\n }\n </ul>\n </div>\n <div className='popover-arrow' />\n </div>\n )\n }\n}\n\nclass DanteImagePopoverItem extends React.Component {\n\n constructor(...args) {\n super(...args)\n this.handleClick = this.handleClick.bind(this)\n this.render = this.render.bind(this)\n }\n\n handleClick(e) {\n e.preventDefault()\n return this.props.handleClick(this.props.item)\n }\n\n render() {\n return <li \n className={`dante-menu-button align-${ this.props.item.type }`} \n onMouseDown={this.handleClick}>\n <span className={`tooltip-icon dante-icon-image-${ this.props.item.type }`} />\n </li>\n }\n}\n\nexport default DanteImagePopover\n\n\n\n\n/** WEBPACK FOOTER **\n ** src/components/popovers/image.js\n **/","/*\nReturns the `boundingClientRect` of the passed selection.\n*/\nexport const getSelectionRect = (selected) => {\n const _rect = selected.getRangeAt(0).getBoundingClientRect();\n // selected.getRangeAt(0).getBoundingClientRect()\n let rect = _rect && _rect.top ? _rect : selected.getRangeAt(0).getClientRects()[0];\n if (!rect) {\n if (selected.anchorNode && selected.anchorNode.getBoundingClientRect) {\n rect = selected.anchorNode.getBoundingClientRect();\n rect.isEmptyline = true;\n } else {\n return null;\n }\n }\n return rect;\n};\n\n/*\nReturns the native selection node.\n*/\nexport const getSelection = (root) => {\n let t = null;\n if (root.getSelection) {\n t = root.getSelection();\n } else if (root.document.getSelection) {\n t = root.document.getSelection();\n } else if (root.document.selection) {\n t = root.document.selection.createRange().text;\n }\n return t;\n};\n\n/*\nRecursively finds the DOM Element of the block where the cursor is currently present.\nIf not found, returns null.\n*/\nexport const getSelectedBlockNode = (root) => {\n const selection = root.getSelection();\n if (selection.rangeCount === 0) {\n return null;\n }\n let node = selection.getRangeAt(0).startContainer;\n // console.log(node);\n do {\n if (node.getAttribute && node.getAttribute('data-block') === 'true') {\n return node;\n }\n node = node.parentNode;\n // console.log(node);\n } while (node !== null);\n return null;\n};\n\n\n\n/** WEBPACK FOOTER **\n ** src/utils/selection.js\n **/","\nimport React from 'react'\nimport ReactDOM from 'react-dom'\n\nimport { getCurrentBlock } from '../../model/index.js'\n\nclass DanteAnchorPopover extends React.Component {\n\n constructor(props) {\n\n super(props)\n this.display = this.display.bind(this)\n this.show = this.show.bind(this)\n this.hide = this.hide.bind(this)\n this.relocate = this.relocate.bind(this)\n this.render = this.render.bind(this)\n this.state = {\n position: {\n top: 0,\n left: 0\n },\n show: false,\n url: \"\"\n }\n }\n\n display(b) {\n if (b) {\n return this.show()\n } else {\n return this.hide()\n }\n }\n\n show() {\n return this.setState({\n show: true })\n }\n\n hide() {\n return this.setState({\n show: false })\n }\n\n setPosition(coords) {\n return this.setState({\n position: coords })\n }\n\n relocate(node) {\n if (node == null) {\n node = null\n }\n if (!node) {\n return\n }\n\n let { editorState } = this.props\n let currentBlock = getCurrentBlock(editorState)\n let blockType = currentBlock.getType()\n\n let contentState = editorState.getCurrentContent()\n let selectionState = editorState.getSelection()\n\n let selectionBoundary = node.getBoundingClientRect()\n let coords = selectionBoundary\n\n let el = this.refs.dante_popover\n let padd = el.offsetWidth / 2\n\n let parent = ReactDOM.findDOMNode(this.props.editor)\n let parentBoundary = parent.getBoundingClientRect()\n\n return {\n top: selectionBoundary.top - parentBoundary.top + 160,\n left: selectionBoundary.left + selectionBoundary.width / 2 - padd\n }\n }\n\n render() {\n let { position } = this.state\n let style = {\n left: position.left,\n top: position.top,\n visibility: `${ this.state.show ? 'visible' : 'hidden' }`\n }\n return (\n <div\n ref=\"dante_popover\"\n className='dante-popover popover--tooltip popover--Linktooltip popover--bottom is-active'\n style={ style }\n onMouseOver={ this.props.handleOnMouseOver }\n onMouseOut={ this.props.handleOnMouseOut }\n >\n <div className='popover-inner'>\n <a href={ this.props.url } target='_blank'>\n { this.state.url }\n </a>\n </div>\n <div className='popover-arrow' />\n </div>\n )\n }\n}\n\nexport default DanteAnchorPopover\n\n\n\n\n/** WEBPACK FOOTER **\n ** src/components/popovers/link.js\n **/","import React from 'react'\nimport ReactDOM from 'react-dom'\n\nimport { \n Entity, \n RichUtils, \n AtomicBlockUtils, \n EditorState \n } from 'draft-js'\n\nimport { \n addNewBlock, \n resetBlockWithType, \n updateDataOfBlock, \n getCurrentBlock, \n getNode } from '../../model/index.js'\n\nimport { getSelectionRect, getSelection } from \"../../utils/selection.js\"\n\nclass DanteInlineTooltip extends React.Component {\n\n constructor(props) {\n super(props)\n\n this.display = this.display.bind(this)\n this.show = this.show.bind(this)\n this.hide = this.hide.bind(this)\n this._toggleScaled = this._toggleScaled.bind(this)\n this.scale = this.scale.bind(this)\n this.collapse = this.collapse.bind(this)\n this.componentWillReceiveProps = this.componentWillReceiveProps.bind(this)\n this.clickOnFileUpload = this.clickOnFileUpload.bind(this)\n this.handlePlaceholder = this.handlePlaceholder.bind(this)\n this.insertImage = this.insertImage.bind(this)\n this.handleFileInput = this.handleFileInput.bind(this)\n this.widgets = this.widgets.bind(this)\n this.clickHandler = this.clickHandler.bind(this)\n this.relocate = this.relocate.bind(this)\n this.state = {\n position: { top: 0, left: 0 },\n show: false,\n scaled: false\n }\n }\n\n display(b) {\n if (b) {\n return this.show()\n } else {\n return this.hide()\n }\n }\n\n show() {\n return this.setState({\n show: true })\n }\n\n hide() {\n return this.setState({\n show: false })\n }\n\n setPosition(coords) {\n return this.setState({\n position: coords })\n }\n\n _toggleScaled(ev) {\n if (this.state.scaled) {\n return this.collapse()\n } else {\n return this.scale()\n }\n }\n\n scale() {\n return this.setState({\n scaled: true })\n }\n\n collapse() {\n return this.setState({\n scaled: false })\n }\n\n componentWillReceiveProps(newProps) {\n return this.collapse()\n }\n\n activeClass() {\n //if @props.show then \"is-active\" else \"\"\n if (this.isActive()) {\n return \"is-active\"\n } else {\n return \"\"\n }\n }\n\n isActive() {\n return this.state.show\n }\n\n scaledClass() {\n if (this.state.scaled) {\n return \"is-scaled\"\n } else {\n return \"\"\n }\n }\n\n scaledWidth() {\n if (this.state.scaled) {\n return \"124\"\n } else {\n return \"0\"\n }\n }\n\n clickOnFileUpload() {\n this.refs.fileInput.click()\n this.collapse()\n return this.hide()\n }\n\n handlePlaceholder(input) {\n let opts = {\n type: input.widget_options.insert_block,\n placeholder: input.options.placeholder,\n endpoint: input.options.endpoint\n }\n\n return this.props.onChange(resetBlockWithType(this.props.editorState, 'placeholder', opts))\n }\n\n insertImage(file) {\n let opts = {\n url: URL.createObjectURL(file),\n file\n }\n\n return this.props.onChange(addNewBlock(this.props.editorState, 'image', opts))\n }\n\n handleFileInput(e) {\n let fileList = e.target.files\n // TODO: support multiple file uploads\n /*\n Object.keys(fileList).forEach (o)=>\n @.insertImage(fileList[0])\n */\n return this.insertImage(fileList[0])\n }\n\n widgets() {\n return this.props.editor.widgets\n }\n\n clickHandler(e, type) {\n let request_block = this.widgets().find(o => o.icon === type)\n\n switch (request_block.widget_options.insertion) {\n case \"upload\":\n return this.clickOnFileUpload(e, request_block)\n case \"placeholder\":\n return this.handlePlaceholder(request_block)\n default:\n return console.log(`WRONG TYPE FOR ${ request_block.widget_options.insertion }`)\n }\n }\n\n getItems() {\n return this.widgets().filter(o => {\n return o.widget_options.displayOnInlineTooltip\n })\n }\n\n isDescendant(parent, child) {\n let node = child.parentNode\n while (node !== null) {\n if (node === parent) {\n return true\n }\n node = node.parentNode\n }\n return false\n }\n\n relocate() {\n let { editorState } = this.props\n\n if (editorState.getSelection().isCollapsed()) {\n\n let currentBlock = getCurrentBlock(editorState)\n let blockType = currentBlock.getType()\n\n let contentState = editorState.getCurrentContent()\n let selectionState = editorState.getSelection()\n\n let block = contentState.getBlockForKey(selectionState.anchorKey)\n\n let nativeSelection = getSelection(window)\n if (!nativeSelection.rangeCount) {\n return\n }\n\n let node = getNode()\n\n let selectionBoundary = getSelectionRect(nativeSelection)\n let coords = selectionBoundary //utils.getSelectionDimensions(node)\n\n let parent = ReactDOM.findDOMNode(this.props.editor)\n let parentBoundary = parent.getBoundingClientRect()\n\n // hide if selected node is not in editor\n // debugger\n //console.log @isDescendant(parent, nativeSelection.anchorNode)\n\n if (!this.isDescendant(parent, nativeSelection.anchorNode)) {\n this.hide()\n return\n }\n\n // checkeamos si esta vacio\n this.display(block.getText().length === 0 && blockType === \"unstyled\")\n return this.setPosition({\n top: coords.top + window.scrollY,\n left: coords.left + window.scrollX - 60\n })\n\n /*\n @refs.image_popover.display(blockType is \"image\")\n if blockType is \"image\"\n selectionBoundary = node.anchorNode.parentNode.parentNode.parentNode.getBoundingClientRect()\n *el = document.querySelector(\"#dante_image_popover\")\n el = @refs.image_popover.refs.image_popover\n padd = el.offsetWidth / 2\n @refs.image_popover.setPosition\n top: selectionBoundary.top - parentBoundary.top + 60\n left: selectionBoundary.left + (selectionBoundary.width / 2) - padd\n\n *@setState\n * image_popover_position:\n * top: selectionBoundary.top - parentBoundary.top + 60\n * left: selectionBoundary.left + (selectionBoundary.width / 2) - padd\n *\n */\n } else {\n return this.hide()\n }\n }\n\n render() {\n return (\n <div\n className={ `inlineTooltip ${ this.activeClass() } ${ this.scaledClass() }` }\n style={ this.state.position }\n >\n <button\n className=\"inlineTooltip-button control\"\n title=\"Close Menu\"\n data-action=\"inline-menu\"\n onClick={ this._toggleScaled }\n >\n <span className=\"tooltip-icon dante-icon-plus\" />\n </button>\n <div\n className=\"inlineTooltip-menu\"\n style={ { width: `${ this.scaledWidth() }px` } }\n >\n { this.getItems().map( (item, i) => {\n return <InlineTooltipItem\n item={ item }\n key={ i }\n clickHandler={ this.clickHandler }\n />\n })\n }\n <input\n type=\"file\"\n style={ { display: 'none' } }\n ref=\"fileInput\"\n multiple=\"multiple\"\n onChange={ this.handleFileInput }\n />\n </div>\n </div>\n )\n }\n}\n\nclass InlineTooltipItem extends React.Component {\n\n constructor(...args) {\n super(...args)\n this.clickHandler = this.clickHandler.bind(this)\n }\n\n clickHandler(e) {\n e.preventDefault()\n return this.props.clickHandler(e, this.props.item.icon)\n }\n\n render() {\n return (\n <button\n className=\"inlineTooltip-button scale\"\n title={ this.props.title }\n onMouseDown={ this.clickHandler }\n >\n <span className={ `tooltip-icon dante-icon-${ this.props.item.icon }` } />\n </button>\n )\n }\n}\n\nexport default DanteInlineTooltip\n\n\n\n\n/** WEBPACK FOOTER **\n ** src/components/popovers/addButton.js\n **/","import React from 'react'\nimport ReactDOM from 'react-dom'\n\nimport { \n convertToRaw, \n CompositeDecorator, \n getVisibleSelectionRect, \n getDefaultKeyBinding, \n getSelectionOffsetKeyForNode, \n KeyBindingUtil, \n ContentState, \n Editor, \n EditorState, \n Entity, \n RichUtils } from 'draft-js'\n\nimport { getSelectionRect, getSelection } from \"../../utils/selection.js\"\n\nimport { getCurrentBlock } from '../../model/index.js'\n\nclass DanteTooltip extends React.Component {\n\n constructor(props) {\n super(props)\n this._clickInlineHandler = this._clickInlineHandler.bind(this)\n this.display = this.display.bind(this)\n this.show = this.show.bind(this)\n this.hide = this.hide.bind(this)\n this.relocate = this.relocate.bind(this)\n this._clickBlockHandler = this._clickBlockHandler.bind(this)\n this.displayLinkMode = this.displayLinkMode.bind(this)\n this.displayActiveMenu = this.displayActiveMenu.bind(this)\n this._enableLinkMode = this._enableLinkMode.bind(this)\n this._disableLinkMode = this._disableLinkMode.bind(this)\n this.handleInputEnter = this.handleInputEnter.bind(this)\n this.confirmLink = this.confirmLink.bind(this)\n this.inlineItems = this.inlineItems.bind(this)\n this.blockItems = this.blockItems.bind(this)\n this.getDefaultValue = this.getDefaultValue.bind(this)\n this.getVisibleSelectionRect = getVisibleSelectionRect\n this.state = {\n link_mode: false,\n show: false,\n position: {}\n }\n }\n\n _clickInlineHandler(ev, style) {\n ev.preventDefault()\n\n this.props.onChange(RichUtils.toggleInlineStyle(this.props.editorState, style))\n\n return setTimeout(() => {\n return this.relocate()\n }, 0)\n }\n\n display(b) {\n if (b) {\n return this.show()\n } else {\n return this.hide()\n }\n }\n\n show() {\n return this.setState({\n show: true })\n }\n\n hide() {\n return this.setState({\n link_mode: false,\n show: false\n })\n }\n\n setPosition(coords) {\n return this.setState({\n position: coords })\n }\n\n isDescendant(parent, child) {\n let node = child.parentNode\n while (node !== null) {\n if (node === parent) {\n return true\n }\n node = node.parentNode\n }\n return false\n }\n\n relocate() {\n\n let currentBlock = getCurrentBlock(this.props.editorState)\n let blockType = currentBlock.getType()\n // display tooltip only for unstyled\n\n if (this.props.configTooltip.selectionElements.indexOf(blockType) < 0) {\n this.hide()\n return\n }\n\n if (this.state.link_mode) {\n return\n }\n if (!this.state.show) {\n return\n }\n\n let el = this.refs.dante_menu\n let padd = el.offsetWidth / 2\n\n let nativeSelection = getSelection(window)\n if (!nativeSelection.rangeCount) {\n return\n }\n\n let selectionBoundary = getSelectionRect(nativeSelection)\n\n let parent = ReactDOM.findDOMNode(this.props.editor)\n let parentBoundary = parent.getBoundingClientRect()\n\n // hide if selected node is not in editor\n if (!this.isDescendant(parent, nativeSelection.anchorNode)) {\n this.hide()\n return\n }\n\n let top = selectionBoundary.top - parentBoundary.top - -90 - 5\n let left = selectionBoundary.left + selectionBoundary.width / 2 - padd\n\n if (!top || !left) {\n return\n }\n\n // console.log \"SET SHOW FOR TOOLTIP INSERT MENU\"\n return this.setState({\n show: true,\n position: {\n left,\n top\n }\n })\n }\n\n _clickBlockHandler(ev, style) {\n ev.preventDefault()\n\n this.props.onChange(RichUtils.toggleBlockType(this.props.editorState, style))\n\n return setTimeout(() => {\n return this.relocate()\n }, 0)\n }\n\n displayLinkMode() {\n if (this.state.link_mode) {\n return \"dante-menu--linkmode\"\n } else {\n return \"\"\n }\n }\n\n displayActiveMenu() {\n if (this.state.show) {\n return \"dante-menu--active\"\n } else {\n return \"\"\n }\n }\n\n _enableLinkMode(ev) {\n ev.preventDefault()\n return this.setState({\n link_mode: true })\n }\n\n _disableLinkMode(ev) {\n ev.preventDefault()\n return this.setState({\n link_mode: false,\n url: \"\"\n })\n }\n\n hideMenu() {\n return this.hide()\n }\n\n handleInputEnter(e) {\n if (e.which === 13) {\n return this.confirmLink(e)\n }\n }\n\n confirmLink(e) {\n e.preventDefault()\n let { editorState } = this.props\n let urlValue = e.currentTarget.value\n let contentState = editorState.getCurrentContent()\n let selection = editorState.getSelection()\n\n let opts = {\n url: urlValue,\n showPopLinkOver: this.props.showPopLinkOver,\n hidePopLinkOver: this.props.hidePopLinkOver\n }\n\n let entityKey = Entity.create('LINK', 'MUTABLE', opts)\n\n if (selection.isCollapsed()) {\n console.log(\"COLLAPSED SKIPPING LINK\")\n return\n }\n\n this.props.onChange(RichUtils.toggleLink(editorState, selection, entityKey))\n\n return this._disableLinkMode(e)\n }\n\n getPosition() {\n let pos = this.state.position\n return pos\n }\n\n inlineItems() {\n return this.props.widget_options.block_types.filter(o => {\n return o.type === \"inline\"\n })\n }\n\n blockItems() {\n return this.props.widget_options.block_types.filter(o => {\n return o.type === \"block\"\n })\n }\n\n getDefaultValue() {\n if (this.refs.dante_menu_input) {\n this.refs.dante_menu_input.value = \"\"\n }\n\n let currentBlock = getCurrentBlock(this.props.editorState)\n let blockType = currentBlock.getType()\n let selection = this.props.editor.state.editorState.getSelection()\n let selectedEntity = null\n let defaultUrl = null\n return currentBlock.findEntityRanges(character => {\n let entityKey = character.getEntity()\n selectedEntity = entityKey\n return entityKey !== null && Entity.get(entityKey).getType() === 'LINK'\n }, (start, end) => {\n let selStart = selection.getAnchorOffset()\n let selEnd = selection.getFocusOffset()\n if (selection.getIsBackward()) {\n selStart = selection.getFocusOffset()\n selEnd = selection.getAnchorOffset()\n }\n\n if (start === selStart && end === selEnd) {\n defaultUrl = Entity.get(selectedEntity).getData().url\n return this.refs.dante_menu_input.value = defaultUrl\n }\n })\n }\n\n render() {\n return (\n <div\n id=\"dante-menu\"\n ref=\"dante_menu\"\n className={ `dante-menu ${ this.displayActiveMenu() } ${ this.displayLinkMode() }` }\n style={ this.getPosition() }\n >\n <div className=\"dante-menu-linkinput\">\n <input\n className=\"dante-menu-input\"\n ref=\"dante_menu_input\"\n placeholder=\"Paste or type a link\"\n onKeyPress={ this.handleInputEnter }\n defaultValue={ this.getDefaultValue() }\n />\n <div className=\"dante-menu-button\" onMouseDown={ this._disableLinkMode } />\n </div>\n <ul className=\"dante-menu-buttons\">\n { this.blockItems().map( (item, i) => {\n return <DanteTooltipItem\n key={ i }\n item={ item }\n handleClick={ this._clickBlockHandler }\n editorState={ this.props.editorState }\n type=\"block\"\n currentStyle={ this.props.editorState.getCurrentInlineStyle }\n />\n })\n }\n <DanteTooltipLink\n editorState={ this.props.editorState }\n enableLinkMode={ this._enableLinkMode }\n />\n { this.inlineItems().map( (item, i) => {\n return <DanteTooltipItem\n key={ i }\n item={ item }\n type=\"inline\"\n editorState={ this.props.editorState }\n handleClick={ this._clickInlineHandler }\n />\n })\n }\n </ul>\n </div>\n )\n }\n}\n\nclass DanteTooltipItem extends React.Component {\n\n constructor(...args) {\n super(...args)\n this.handleClick = this.handleClick.bind(this)\n this.activeClass = this.activeClass.bind(this)\n this.isActive = this.isActive.bind(this)\n this.activeClassInline = this.activeClassInline.bind(this)\n this.activeClassBlock = this.activeClassBlock.bind(this)\n this.render = this.render.bind(this)\n }\n\n handleClick(ev) {\n return this.props.handleClick(ev, this.props.item.style)\n }\n\n activeClass() {\n if (this.isActive()) {\n return \"active\"\n } else {\n return \"\"\n }\n }\n\n isActive() {\n if (this.props.type === \"block\") {\n return this.activeClassBlock()\n } else {\n return this.activeClassInline()\n }\n }\n\n activeClassInline() {\n if (!this.props.editorState) {\n return\n }\n //console.log @props.item\n return this.props.editorState.getCurrentInlineStyle().has(this.props.item.style)\n }\n\n activeClassBlock() {\n //console.log \"EDITOR STATE\", @props.editorState\n if (!this.props.editorState) {\n return\n }\n let selection = this.props.editorState.getSelection()\n let blockType = this.props.editorState.getCurrentContent().getBlockForKey(selection.getStartKey()).getType()\n return this.props.item.style === blockType\n }\n\n render() {\n return (\n <li className={ `dante-menu-button ${ this.activeClass() }` } onMouseDown={ this.handleClick }>\n <i className={ `dante-icon dante-icon-${ this.props.item.label }` } data-action=\"bold\" />\n </li>\n )\n }\n}\n\nclass DanteTooltipLink extends React.Component {\n\n constructor(...args) {\n super(...args)\n this.promptForLink = this.promptForLink.bind(this)\n }\n\n promptForLink(ev) {\n let selection = this.props.editorState.getSelection()\n if (!selection.isCollapsed()) {\n return this.props.enableLinkMode(ev)\n }\n }\n\n render() {\n return (\n <li className=\"dante-menu-button\" onMouseDown={ this.promptForLink }>\n <i className=\"dante-icon icon-createlink\" data-action=\"createlink\">link</i>\n </li>\n )\n }\n}\n\nexport default DanteTooltip\n\n\n\n\n/** WEBPACK FOOTER **\n ** src/components/popovers/toolTip.js\n **/","import React from 'react'\nimport ReactDOM from 'react-dom'\n\nimport {\n Entity, \n RichUtils, \n AtomicBlockUtils, \n EditorBlock, \n EditorState } from 'draft-js'\n\nimport axios from \"axios\"\n\nimport { updateDataOfBlock } from '../../model/index.js'\n\nexport default class ImageBlock extends React.Component {\n\n constructor(props) {\n super(props)\n\n this.blockPropsSrc = this.blockPropsSrc.bind(this)\n this.defaultUrl = this.defaultUrl.bind(this)\n this.defaultAspectRatio = this.defaultAspectRatio.bind(this)\n this.updateData = this.updateData.bind(this)\n this.replaceImg = this.replaceImg.bind(this)\n this.startLoader = this.startLoader.bind(this)\n this.stopLoader = this.stopLoader.bind(this)\n this.handleUpload = this.handleUpload.bind(this)\n this.aspectRatio = this.aspectRatio.bind(this)\n this.updateDataSelection = this.updateDataSelection.bind(this)\n this.handleGrafFigureSelectImg = this.handleGrafFigureSelectImg.bind(this)\n this.getUploadUrl = this.getUploadUrl.bind(this)\n this.uploadFile = this.uploadFile.bind(this)\n this.uploadCompleted = this.uploadCompleted.bind(this)\n this.updateProgressBar = this.updateProgressBar.bind(this)\n this.placeHolderEnabled = this.placeHolderEnabled.bind(this)\n this.placeholderText = this.placeholderText.bind(this)\n this.handleFocus = this.handleFocus.bind(this)\n this.render = this.render.bind(this)\n let existing_data = this.props.block.getData().toJS()\n\n this.config = this.props.blockProps.config\n this.file = this.props.blockProps.data.get('file')\n this.state = {\n loading: false,\n selected: false,\n loading_progress: 0,\n enabled: false,\n caption: this.defaultPlaceholder(),\n direction: existing_data.direction || \"center\",\n width: 0,\n height: 0,\n file: null,\n url: this.blockPropsSrc() || this.defaultUrl(existing_data),\n aspect_ratio: this.defaultAspectRatio(existing_data)\n }\n }\n\n blockPropsSrc() {\n // console.log @.props.blockProps.data.src\n return this.props.blockProps.data.src\n }\n /*\n debugger\n block = @.props\n entity = block.block.getEntityAt(0)\n if entity\n data = Entity.get(entity).getData().src\n else\n null\n */\n\n defaultUrl(data) {\n if (data.url) {\n return data.url\n }\n\n if (data.url) {\n if (data.file) {\n return URL.createObjectURL(data.file)\n } else {\n return data.url\n }\n } else {\n return this.props.blockProps.data.src\n }\n }\n\n defaultPlaceholder() {\n return this.props.blockProps.config.image_caption_placeholder\n }\n\n defaultAspectRatio(data) {\n if (data.aspect_ratio) {\n return {\n width: data.aspect_ratio['width'],\n height: data.aspect_ratio['height'],\n ratio: data.aspect_ratio['ratio']\n }\n } else {\n return {\n width: 0,\n height: 0,\n ratio: 100\n }\n }\n }\n\n getAspectRatio(w, h) {\n let maxWidth = 1000\n let maxHeight = 1000\n let ratio = 0\n let width = w // Current image width\n let height = h // Current image height\n\n // Check if the current width is larger than the max\n if (width > maxWidth) {\n ratio = maxWidth / width // get ratio for scaling image\n height = height * ratio // Reset height to match scaled image\n width = width * ratio // Reset width to match scaled image\n\n // Check if current height is larger than max\n } else if (height > maxHeight) {\n ratio = maxHeight / height // get ratio for scaling image\n width = width * ratio // Reset width to match scaled image\n height = height * ratio // Reset height to match scaled image\n }\n\n let fill_ratio = height / width * 100\n let result = { width, height, ratio: fill_ratio }\n // console.log result\n return result\n }\n\n // will update block state\n updateData() {\n let { blockProps } = this.props\n let { block } = this.props\n let { getEditorState } = this.props.blockProps\n let { setEditorState } = this.props.blockProps\n let data = block.getData()\n let newData = data.merge(this.state).merge({ forceUpload: false })\n return setEditorState(updateDataOfBlock(getEditorState(), block, newData))\n }\n\n replaceImg() {\n this.img = new Image()\n this.img.src = this.refs.image_tag.src\n this.setState({\n url: this.img.src })\n let self = this\n // exit only when not blob and not forceUload\n if (!this.img.src.includes(\"blob:\") && !this.props.block.data.get(\"forceUpload\")) {\n return\n }\n return this.img.onload = () => {\n this.setState({\n width: this.img.width,\n height: this.img.height,\n aspect_ratio: self.getAspectRatio(this.img.width, this.img.height)\n })\n\n return this.handleUpload()\n }\n }\n\n startLoader() {\n return this.setState({\n loading: true })\n }\n\n stopLoader() {\n return this.setState({\n loading: false })\n }\n\n handleUpload() {\n this.startLoader()\n this.props.blockProps.addLock()\n this.updateData()\n return this.uploadFile()\n }\n\n componentDidMount() {\n return this.replaceImg()\n }\n\n aspectRatio() {\n return {\n maxWidth: `${ this.state.aspect_ratio.width }`,\n maxHeight: `${ this.state.aspect_ratio.height }`,\n ratio: `${ this.state.aspect_ratio.height }`\n }\n }\n\n updateDataSelection() {\n const { getEditorState, setEditorState } = this.props.blockProps\n const newselection = getEditorState().getSelection().merge({\n anchorKey: this.props.block.getKey(),\n focusKey: this.props.block.getKey()\n })\n\n return setEditorState(EditorState.forceSelection(getEditorState(), newselection))\n }\n\n handleGrafFigureSelectImg(e) {\n e.preventDefault()\n return this.setState({ selected: true }, this.updateDataSelection)\n }\n\n //main_editor.onChange(main_editor.state.editorState)\n\n coords() {\n return {\n maxWidth: `${ this.state.aspect_ratio.width }px`,\n maxHeight: `${ this.state.aspect_ratio.height }px`\n }\n }\n\n getBase64Image(img) {\n let canvas = document.createElement(\"canvas\")\n canvas.width = img.width\n canvas.height = img.height\n let ctx = canvas.getContext(\"2d\")\n ctx.drawImage(img, 0, 0)\n let dataURL = canvas.toDataURL(\"image/png\")\n\n return dataURL\n }\n\n formatData() {\n let formData = new FormData()\n if (this.file) {\n let formName = this.config.upload_formName || 'file'\n\n formData.append(formName, this.file)\n return formData\n } else {\n formData.append('url', this.props.blockProps.data.get(\"url\"))\n return formData\n }\n }\n\n getUploadUrl() {\n let url = this.config.upload_url\n if (typeof url === \"function\") {\n return url()\n } else {\n return url\n }\n }\n\n getUploadHeaders() {\n return this.config.upload_headers || {}\n }\n\n uploadFile() {\n let handleUp\n axios({\n method: 'post',\n url: this.getUploadUrl(),\n headers: this.getUploadHeaders(),\n data: this.formatData(),\n onUploadProgress: e => {\n return this.updateProgressBar(e)\n }\n }).then(result => {\n this.uploadCompleted(result.data)\n this.props.blockProps.removeLock()\n this.stopLoader()\n this.file = null\n\n if (this.config.upload_callback) {\n return this.config.upload_callback(result, this)\n }\n }).catch(error => {\n this.props.blockProps.removeLock()\n this.stopLoader()\n\n console.log(`ERROR: got error uploading file ${ error }`)\n if (this.config.upload_error_callback) {\n return this.config.upload_error_callback(error, this)\n }\n })\n\n return handleUp = json_response => {\n return this.uploadCompleted(json_response, n)\n }\n }\n\n uploadCompleted(json) {\n return this.setState({ url: json.url }, this.updateData)\n }\n\n updateProgressBar(e) {\n let complete = this.state.loading_progress\n if (e.lengthComputable) {\n complete = e.loaded / e.total * 100\n complete = complete != null ? complete : { complete: 0 }\n this.setState({\n loading_progress: complete })\n return console.log(`complete: ${ complete }`)\n }\n }\n\n placeHolderEnabled() {\n return this.state.enabled || this.props.block.getText()\n }\n\n placeholderText() {\n if (this.placeHolderEnabled()) {\n return \"\"\n }\n return \"Write caption for image (optional)\"\n }\n\n handleFocus(e) {\n // console.log \"focus on placeholder\"\n return setTimeout(() => {\n return this.setState({\n enabled: true })\n }, 0)\n }\n\n render() {\n\n return (\n <div ref=\"image_tag2\" suppressContentEditableWarning={true}>\n <div className=\"aspectRatioPlaceholder is-locked\" \n style={this.coords()} \n onClick={this.handleGrafFigureSelectImg}>\n <div style={{ paddingBottom: `${ this.state.aspect_ratio.ratio }%` }} \n className='aspect-ratio-fill' />\n <img src={this.state.url} \n ref=\"image_tag\" \n height={this.state.aspect_ratio.height} \n width={this.state.aspect_ratio.width} \n className='graf-image' />\n <Loader toggle={this.state.loading} \n progress={this.state.loading_progress} />\n </div>\n <figcaption className='imageCaption' onMouseDown={this.handleFocus}>\n { !this.state.enabled ? \n <span className=\"danteDefaultPlaceholder\">\n {this.placeholderText()}\n </span> : undefined}\n <EditorBlock {...Object.assign({}, this.props, { \n \"editable\": true, \"className\": \"imageCaption\" })\n } />\n </figcaption>\n </div>\n )\n }\n}\n\nclass Loader extends React.Component {\n\n render() {\n return (\n <div>\n { this.props.toggle\n ? <div className=\"image-upoader-loader\">\n <p>\n { this.props.progress === 100\n ? \"processing image...\"\n : <span>\n <span>loading</span> { Math.round( this.props.progress ) }\n </span>\n }\n </p>\n </div>\n : undefined\n }\n </div>\n )\n }\n}\n\n\n\n\n/** WEBPACK FOOTER **\n ** src/components/blocks/image.js\n **/","\nimport React from 'react'\nimport ReactDOM from 'react-dom'\n\nimport { Entity, RichUtils, AtomicBlockUtils, EditorBlock } from 'draft-js'\n\nimport axios from \"axios\"\n\nimport { updateDataOfBlock } from '../../model/index.js'\n\nexport default class EmbedBlock extends React.Component {\n constructor(props) {\n super(props)\n //api_key = \"86c28a410a104c8bb58848733c82f840\"\n\n this.updateData = this.updateData.bind(this)\n this.dataForUpdate = this.dataForUpdate.bind(this)\n this.componentDidMount = this.componentDidMount.bind(this)\n this.state = {\n embed_data: this.defaultData(),\n error: \"\"\n }\n }\n\n defaultData() {\n const existing_data = this.props.block.getData().toJS()\n return existing_data.embed_data || {}\n }\n\n // will update block state\n updateData() {\n const { block, blockProps } = this.props\n const { getEditorState, setEditorState } = this.props.blockProps\n const data = block.getData()\n const newData = data.merge(this.state)\n return setEditorState(updateDataOfBlock(getEditorState(), block, newData))\n }\n\n dataForUpdate() {\n\n return this.props.blockProps.data.toJS()\n }\n\n componentDidMount() {\n\n if (!this.props.blockProps.data) {\n return\n }\n\n // ensure data isnt already loaded\n // unless @dataForUpdate().endpoint or @dataForUpdate().provisory_text\n\n if (!this.dataForUpdate().endpoint && !this.dataForUpdate().provisory_text) {\n //debugger\n return\n }\n\n return axios({\n method: 'get',\n url: `${ this.dataForUpdate().endpoint }${ this.dataForUpdate().provisory_text }&scheme=https`\n }).then(result => {\n\n return this.setState({ embed_data: result.data } //JSON.parse(data.responseText)\n , this.updateData)\n }).catch(error => {\n\n this.setState({\n error: error.response.data.error_message })\n return console.log(\"TODO: error\")\n })\n }\n\n classForImage() {\n if (this.state.embed_data.images) {\n return \"\"\n } else {\n return \"mixtapeImage--empty u-ignoreBlock\"\n }\n }\n //if @state.embed_data.thumbnail_url then \"\" else \"mixtapeImage--empty u-ignoreBlock\"\n\n picture() {\n if (this.state.embed_data.images && this.state.embed_data.images.length > 0) {\n return this.state.embed_data.images[0].url\n } else {\n return \"\"\n }\n }\n\n render() {\n //block = @.props\n //foo = @.props.blockProps\n //data = Entity.get(block.block.getEntityAt(0)).getData()\n console.log(\"ERROR\", this.state.error)\n return (\n <span>\n { this.picture()\n ? <a\n target='_blank'\n className={ `js-mixtapeImage mixtapeImage ${ this.classForImage() }` }\n href={ this.state.embed_data.url }\n style={ { backgroundImage: `url('${ this.picture() }')` } }\n />\n : undefined\n }\n { this.state.error ? \n <h2>{ this.state.error }</h2>\n : undefined\n }\n <a\n className='markup--anchor markup--mixtapeEmbed-anchor'\n target='_blank'\n href={ this.state.embed_data.url }\n >\n <strong className='markup--strong markup--mixtapeEmbed-strong'>\n { this.state.embed_data.title }\n </strong>\n <em className='markup--em markup--mixtapeEmbed-em'>\n { this.state.embed_data.description }\n </em>\n </a>{ this.state.embed_data.provider_url }\n </span>\n )\n }\n}\n\n\n\n\n/** WEBPACK FOOTER **\n ** src/components/blocks/embed.js\n **/","\nimport React from 'react'\nimport ReactDOM from 'react-dom'\n\nimport { Entity, RichUtils, AtomicBlockUtils, EditorBlock } from 'draft-js'\n\nimport { updateDataOfBlock } from '../../model/index.js'\n\nimport axios from \"axios\"\n\nexport default class VideoBlock extends React.Component {\n constructor(props) {\n super(props)\n //api_key = \"86c28a410a104c8bb58848733c82f840\"\n\n this.updateData = this.updateData.bind(this)\n this.dataForUpdate = this.dataForUpdate.bind(this)\n this.state = { embed_data: this.defaultData() }\n }\n\n defaultData() {\n let existing_data = this.props.block.getData().toJS()\n return existing_data.embed_data || {}\n }\n\n // will update block state\n updateData() {\n const { block, blockProps } = this.props\n const { getEditorState, setEditorState } = this.props.blockProps\n const data = block.getData()\n const newData = data.merge(this.state)\n return setEditorState(updateDataOfBlock(getEditorState(), block, newData))\n }\n\n dataForUpdate() {\n return this.props.blockProps.data.toJS()\n }\n\n componentDidMount() {\n\n if (!this.props.blockProps.data) {\n return\n }\n // ensure data isnt already loaded\n if (!this.dataForUpdate().endpoint && !this.dataForUpdate().provisory_text) {\n return\n }\n\n return axios({\n method: 'get',\n url: `${ this.dataForUpdate().endpoint }${ this.dataForUpdate().provisory_text }&scheme=https`\n }).then(result => {\n return this.setState({ embed_data: result.data } //JSON.parse(data.responseText)\n , this.updateData)\n }).catch(error => {\n return console.log(\"TODO: error\")\n })\n }\n\n classForImage() {\n if (this.state.embed_data.thumbnail_url) {\n return \"\"\n } else {\n return \"mixtapeImage--empty u-ignoreBlock\"\n }\n }\n\n render() {\n return (\n <figure className='graf--figure graf--iframe graf--first' tabIndex='0'>\n <div className='iframeContainer' \n dangerouslySetInnerHTML={ { __html: this.state.embed_data.html } } />\n <figcaption className='imageCaption'>\n <EditorBlock {...Object.assign({}, this.props, { \"className\": \"imageCaption\" })} />\n </figcaption>\n </figure>\n )\n }\n}\n\n\n\n\n/** WEBPACK FOOTER **\n ** src/components/blocks/video.js\n **/","\nimport React from 'react'\nimport ReactDOM from 'react-dom'\n\nimport { Entity, RichUtils, AtomicBlockUtils, EditorBlock } from 'draft-js'\n\nexport default class PlaceholderBlock extends React.Component {\n constructor(props) {\n super(props)\n this.placeholderText = this.placeholderText.bind(this)\n this.placeholderFromProps = this.placeholderFromProps.bind(this)\n this.defaultText = this.defaultText.bind(this)\n this.handleFocus = this.handleFocus.bind(this)\n this.classForDefault = this.classForDefault.bind(this)\n this.state = {\n enabled: false,\n data: this.props.blockProps.data.toJS()\n }\n }\n\n placeholderText() {\n if (this.state.enabled) {\n return \"\"\n }\n return this.props.blockProps.data.toJS().placeholder || this.placeholderFromProps() || this.defaultText()\n }\n //if @.props.blockProps.data then @.props.blockProps.data.placeholder else @defaultText()\n\n\n placeholderFromProps() {\n return this.props.block.toJS().placeholder\n }\n\n defaultText() {\n return \"write something \"\n }\n\n componentDidMount() {}\n\n handleFocus(e) {\n // console.log \"focus on placeholder\"\n return setTimeout(() => {\n return this.setState({\n enabled: true })\n }, 0)\n }\n\n classForDefault() {\n if (!this.state.enabled) {\n return \"defaultValue defaultValue--root\"\n } else {\n return \"\"\n }\n }\n\n render() {\n return (\n <span className={this.classForDefault()} onMouseDown={this.handleFocus}>\n {this.placeholderText()}\n <EditorBlock {...Object.assign({}, this.props, {\n \"className\": \"imageCaption\",\n \"placeholder\": \"escrive alalal\"\n })} />\n </span>\n )\n }\n}\n\n\n\n\n/** WEBPACK FOOTER **\n ** src/components/blocks/placeholder.js\n **/"],"mappings":";;;;;;;AAAA;AACA;AAAA;;;;;;;ACDA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;;;ACCA;AACA;;;AAAA;AACA;;;;;AAEA;AACA;AACA;AAFA;;;;;;;;;ACLA;;;;;;;;;;ACAA;;;;;;;;;;;;;;;ACAA;AACA;AAGA;AACA;AAEA;;;;;AAKA;;;AAGA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AAFA;AAIA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AAEA;;;AAGA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AAFA;AAFA;AAOA;AACA;AACA;AAEA;;;AAGA;AACA;AACA;AACA;AADA;AAGA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;AADA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AAKA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AACA;AAQA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAHA;AAWA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChMA;AACA;;;AAAA;AACA;;;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAOA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AAPA;AAUA;;;AA1DA;AACA;AADA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHA;AACA;;;;;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAZA;AAgBA;AACA;;;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AAEA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AADA;AADA;AAKA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AADA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AADA;AAVA;AADA;AAgBA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAJA;AAFA;AAjBA;AA8BA;;;AAjGA;AACA;AAmGA;;;;;;;;;;;;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACfA;AACA;;;AAAA;AACA;;;;;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;AAEA;AACA;AACA;AACA;AAGA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AATA;AAYA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAGA;AACA;AAAA;AAAA;AACA;AAEA;;;;;AAIA;;;;;;;;;;;;;;;;;AC/HA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAHA;AAQA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7HA;AACA;;;AAAA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAPA;AAZA;AAwBA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAEA;AALA;AAQA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AAPA;AADA;AAYA;AApBA;AAuBA;;;AAvJA;AACA;AAyJA;;;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AACA;AACA;AACA;AAHA;AAIA;AACA;;;AACA;AACA;AACA;AACA;;;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAKA;;;AAnBA;AACA;AAqBA;;;;;;;;;;;;AC1LA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClDA;AACA;;;AAAA;AACA;;;AACA;AACA;;;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AANA;AARA;AAgBA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AADA;AADA;AAKA;AAZA;AAeA;;;AAhGA;AACA;AAkGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzGA;AACA;;;AAAA;AACA;;;AACA;AACA;AAMA;AACA;AAMA;AACA;;;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAjBA;AAsBA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AAHA;AACA;AAKA;AACA;;;AAEA;AACA;AACA;AACA;AAFA;AACA;AAIA;AACA;;;AAEA;AACA;AACA;AACA;;;;AAIA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AACA;AAIA;;;;;;;;;;;;;;;;AAiBA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AAFA;AAIA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAJA;AAMA;AANA;AAQA;AAAA;AAAA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AAHA;AAKA;AAEA;AACA;AACA;AACA;AACA;AACA;AALA;AAZA;AAZA;AAkCA;;;AA7QA;AACA;AA+QA;;;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AACA;AACA;AAFA;AAGA;AACA;;;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AAHA;AAKA;AALA;AAQA;;;AAtBA;AACA;AAwBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5TA;AACA;;;AAAA;AACA;;;AACA;AACA;AAYA;AACA;AACA;AACA;;;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAlBA;AAuBA;AACA;;;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AAFA;AAIA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAFA;AAOA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AAFA;AAIA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AAJA;AAMA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AARA;AAUA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;AAEA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AAxBA;AAhBA;AA6CA;;;AAvSA;AACA;AAySA;;;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAQA;AACA;;;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAAA;AACA;AADA;AAIA;;;AAxDA;AACA;AA0DA;;;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AACA;AACA;AAFA;AAGA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AADA;AAIA;;;AApBA;AACA;AAsBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChZA;AACA;;;AAAA;AACA;;;AACA;AACA;AAMA;AACA;;;AACA;AACA;;;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAXA;AA1BA;AAuCA;AACA;;;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAIA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AACA;AAKA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AAHA;AAKA;;;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAFA;AACA;AAIA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA;AACA;AACA;AAFA;AAIA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAXA;AAaA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AADA;AAGA;AACA;AANA;AAdA;AAyBA;;;AAjVA;AACA;AADA;AACA;AAmVA;;;;;;;;;;AAEA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AADA;AACA;AADA;AAHA;AADA;AAFA;AAgBA;;;AApBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjWA;AACA;;;AAAA;AACA;;;AACA;AACA;AACA;AACA;;;AACA;AACA;;;AACA;;;AACA;AAAA;AACA;AACA;AACA;AAHA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAFA;AAPA;AAWA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AACA;AAIA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAJA;AAQA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAKA;AAAA;AAAA;AACA;AADA;AAGA;AAAA;AAAA;AACA;AADA;AARA;AAWA;AAzBA;AA4BA;;;AAjHA;AACA;AADA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTA;AACA;;;AAAA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AACA;;;AACA;AAAA;AACA;AACA;AACA;AAHA;AACA;AAGA;AACA;AACA;AANA;AAOA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AAAA;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AADA;AAHA;AAQA;;;AAnEA;AACA;AADA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTA;AACA;;;AAAA;AACA;;;AACA;AACA;;;AACA;;;AACA;AAAA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAPA;AAWA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAFA;AAFA;AAQA;;;AA3DA;AACA;AADA;;;;","sourceRoot":""}
|
1
|
+
{"version":3,"file":"dante.js","sources":["webpack:///src/components/dante_editor.js","webpack:///./src/styles/fonts/dante/dante.eot","webpack:///./src/styles/fonts/dante/fontello.eot","webpack:///src/index.js","webpack:///./src/styles/dante.scss?293d","webpack:///demo/initialize.js","webpack:///src/components/dante.js","webpack:///src/components/blocks/embed.js","webpack:///src/components/blocks/image.js","webpack:///src/components/blocks/placeholder.js","webpack:///src/components/blocks/video.js","webpack:///src/components/debug.js","webpack:///src/components/decorators/link.js","webpack:///src/components/popovers/addButton.js","webpack:///src/components/popovers/image.js","webpack:///src/components/popovers/link.js","webpack:///src/components/popovers/toolTip.js","webpack:///src/utils/find_entities.js","webpack:///src/utils/html2content.js","webpack:///src/utils/save_content.js","webpack:///src/model/index.js","webpack:///./src/styles/fonts/dante/dante.svg","webpack:///./src/styles/fonts/dante/dante.ttf","webpack:///./src/styles/fonts/dante/dante.woff","webpack:///./src/styles/fonts/dante/fontello.svg","webpack:///./src/styles/fonts/dante/fontello.ttf","webpack:///./src/styles/fonts/dante/fontello.woff","webpack:///src/utils/selection.js"],"sourcesContent":["module.exports = global[\"DanteEditor\"] = require(\"-!/Users/michelson/Documents/brunch-apps/dante2/node_modules/babel-loader/lib/index.js?presets[]=es2015!/Users/michelson/Documents/brunch-apps/dante2/src/components/dante_editor.js\");\n\n\n// WEBPACK FOOTER //\n// src/components/dante_editor.js","module.exports = __webpack_public_path__ + \"fonts/dante.eot\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/styles/fonts/dante/dante.eot\n// module id = 192\n// module chunks = 0","module.exports = __webpack_public_path__ + \"fonts/fontello.eot\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/styles/fonts/dante/fontello.eot\n// module id = 193\n// module chunks = 0","\nimport Dante from './components/dante'\nimport DanteEditor from './components/dante_editor'\n\n\nmodule.exports = {\n Dante, \n DanteEditor\n}\n\n\n// WEBPACK FOOTER //\n// src/index.js","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/styles/dante.scss\n// module id = 228\n// module chunks = 0","import 'styles/dante'\nimport { Dante, DanteEditor } from '../src/index'\n/*\nmodule.exports = {\n Dante, \n DanteEditor\n}*/\n\n\n// WEBPACK FOOTER //\n// demo/initialize.js","module.exports = global[\"Dante\"] = require(\"-!/Users/michelson/Documents/brunch-apps/dante2/node_modules/babel-loader/lib/index.js?presets[]=es2015!/Users/michelson/Documents/brunch-apps/dante2/src/components/dante.js\");\n\n\n// WEBPACK FOOTER //\n// src/components/dante.js","\nimport React from 'react'\nimport ReactDOM from 'react-dom'\n\nimport { Entity, RichUtils, AtomicBlockUtils, EditorBlock } from 'draft-js'\n\nimport axios from \"axios\"\n\nimport { updateDataOfBlock } from '../../model/index.js'\n\nexport default class EmbedBlock extends React.Component {\n constructor(props) {\n super(props)\n //api_key = \"86c28a410a104c8bb58848733c82f840\"\n\n this.updateData = this.updateData.bind(this)\n this.dataForUpdate = this.dataForUpdate.bind(this)\n this.componentDidMount = this.componentDidMount.bind(this)\n this.state = {\n embed_data: this.defaultData(),\n error: \"\"\n }\n }\n\n defaultData() {\n const existing_data = this.props.block.getData().toJS()\n return existing_data.embed_data || {}\n }\n\n // will update block state\n updateData() {\n const { block, blockProps } = this.props\n const { getEditorState, setEditorState } = this.props.blockProps\n const data = block.getData()\n const newData = data.merge(this.state)\n return setEditorState(updateDataOfBlock(getEditorState(), block, newData))\n }\n\n dataForUpdate() {\n\n return this.props.blockProps.data.toJS()\n }\n\n componentDidMount() {\n\n if (!this.props.blockProps.data) {\n return\n }\n\n // ensure data isnt already loaded\n // unless @dataForUpdate().endpoint or @dataForUpdate().provisory_text\n\n if (!this.dataForUpdate().endpoint && !this.dataForUpdate().provisory_text) {\n //debugger\n return\n }\n\n return axios({\n method: 'get',\n url: `${ this.dataForUpdate().endpoint }${ this.dataForUpdate().provisory_text }&scheme=https`\n }).then(result => {\n\n return this.setState({ embed_data: result.data } //JSON.parse(data.responseText)\n , this.updateData)\n }).catch(error => {\n\n this.setState({\n error: error.response.data.error_message })\n return console.log(\"TODO: error\")\n })\n }\n\n classForImage() {\n if (this.state.embed_data.images) {\n return \"\"\n } else {\n return \"mixtapeImage--empty u-ignoreBlock\"\n }\n }\n //if @state.embed_data.thumbnail_url then \"\" else \"mixtapeImage--empty u-ignoreBlock\"\n\n picture() {\n if (this.state.embed_data.images && this.state.embed_data.images.length > 0) {\n return this.state.embed_data.images[0].url\n } else {\n return \"\"\n }\n }\n\n render() {\n //block = @.props\n //foo = @.props.blockProps\n //data = Entity.get(block.block.getEntityAt(0)).getData()\n console.log(\"ERROR\", this.state.error)\n return (\n <span>\n { this.picture()\n ? <a\n target='_blank'\n className={ `js-mixtapeImage mixtapeImage ${ this.classForImage() }` }\n href={ this.state.embed_data.url }\n style={ { backgroundImage: `url('${ this.picture() }')` } }\n />\n : undefined\n }\n { this.state.error ? \n <h2>{ this.state.error }</h2>\n : undefined\n }\n <a\n className='markup--anchor markup--mixtapeEmbed-anchor'\n target='_blank'\n href={ this.state.embed_data.url }\n >\n <strong className='markup--strong markup--mixtapeEmbed-strong'>\n { this.state.embed_data.title }\n </strong>\n <em className='markup--em markup--mixtapeEmbed-em'>\n { this.state.embed_data.description }\n </em>\n </a>{ this.state.embed_data.provider_url }\n </span>\n )\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/blocks/embed.js","import React from 'react'\nimport ReactDOM from 'react-dom'\n\nimport {\n Entity, \n RichUtils, \n AtomicBlockUtils, \n EditorBlock, \n EditorState } from 'draft-js'\n\nimport axios from \"axios\"\n\nimport { updateDataOfBlock } from '../../model/index.js'\n\nexport default class ImageBlock extends React.Component {\n\n constructor(props) {\n super(props)\n\n this.blockPropsSrc = this.blockPropsSrc.bind(this)\n this.defaultUrl = this.defaultUrl.bind(this)\n this.defaultAspectRatio = this.defaultAspectRatio.bind(this)\n this.updateData = this.updateData.bind(this)\n this.replaceImg = this.replaceImg.bind(this)\n this.startLoader = this.startLoader.bind(this)\n this.stopLoader = this.stopLoader.bind(this)\n this.handleUpload = this.handleUpload.bind(this)\n this.aspectRatio = this.aspectRatio.bind(this)\n this.updateDataSelection = this.updateDataSelection.bind(this)\n this.handleGrafFigureSelectImg = this.handleGrafFigureSelectImg.bind(this)\n this.getUploadUrl = this.getUploadUrl.bind(this)\n this.uploadFile = this.uploadFile.bind(this)\n this.uploadFailed = this.uploadFailed.bind(this)\n this.uploadCompleted = this.uploadCompleted.bind(this)\n this.updateProgressBar = this.updateProgressBar.bind(this)\n this.placeHolderEnabled = this.placeHolderEnabled.bind(this)\n this.placeholderText = this.placeholderText.bind(this)\n this.handleFocus = this.handleFocus.bind(this)\n this.render = this.render.bind(this)\n let existing_data = this.props.block.getData().toJS()\n\n this.config = this.props.blockProps.config\n this.file = this.props.blockProps.data.get('file')\n this.state = {\n loading: false,\n selected: false,\n loading_progress: 0,\n enabled: false,\n caption: this.defaultPlaceholder(),\n direction: existing_data.direction || \"center\",\n width: 0,\n height: 0,\n file: null,\n url: this.blockPropsSrc() || this.defaultUrl(existing_data),\n aspect_ratio: this.defaultAspectRatio(existing_data)\n }\n }\n\n blockPropsSrc() {\n // console.log @.props.blockProps.data.src\n return this.props.blockProps.data.src\n }\n /*\n debugger\n block = @.props\n entity = block.block.getEntityAt(0)\n if entity\n data = Entity.get(entity).getData().src\n else\n null\n */\n\n defaultUrl(data) {\n if (data.url) {\n return data.url\n }\n\n if (data.url) {\n if (data.file) {\n return URL.createObjectURL(data.file)\n } else {\n return data.url\n }\n } else {\n return this.props.blockProps.data.src\n }\n }\n\n defaultPlaceholder() {\n return this.props.blockProps.config.image_caption_placeholder\n }\n\n defaultAspectRatio(data) {\n if (data.aspect_ratio) {\n return {\n width: data.aspect_ratio['width'],\n height: data.aspect_ratio['height'],\n ratio: data.aspect_ratio['ratio']\n }\n } else {\n return {\n width: 0,\n height: 0,\n ratio: 100\n }\n }\n }\n\n getAspectRatio(w, h) {\n let maxWidth = 1000\n let maxHeight = 1000\n let ratio = 0\n let width = w // Current image width\n let height = h // Current image height\n\n // Check if the current width is larger than the max\n if (width > maxWidth) {\n ratio = maxWidth / width // get ratio for scaling image\n height = height * ratio // Reset height to match scaled image\n width = width * ratio // Reset width to match scaled image\n\n // Check if current height is larger than max\n } else if (height > maxHeight) {\n ratio = maxHeight / height // get ratio for scaling image\n width = width * ratio // Reset width to match scaled image\n height = height * ratio // Reset height to match scaled image\n }\n\n let fill_ratio = height / width * 100\n let result = { width, height, ratio: fill_ratio }\n // console.log result\n return result\n }\n\n // will update block state\n updateData() {\n let { blockProps } = this.props\n let { block } = this.props\n let { getEditorState } = this.props.blockProps\n let { setEditorState } = this.props.blockProps\n let data = block.getData()\n let newData = data.merge(this.state).merge({ forceUpload: false })\n return setEditorState(updateDataOfBlock(getEditorState(), block, newData))\n }\n\n replaceImg() {\n this.img = new Image()\n this.img.src = this.refs.image_tag.src\n this.setState({\n url: this.img.src })\n let self = this\n // exit only when not blob and not forceUload\n if (!this.img.src.includes(\"blob:\") && !this.props.block.data.get(\"forceUpload\")) {\n return\n }\n return this.img.onload = () => {\n this.setState({\n width: this.img.width,\n height: this.img.height,\n aspect_ratio: self.getAspectRatio(this.img.width, this.img.height)\n })\n\n return this.handleUpload()\n }\n }\n\n startLoader() {\n return this.setState({\n loading: true })\n }\n\n stopLoader() {\n return this.setState({\n loading: false })\n }\n\n handleUpload() {\n this.startLoader()\n this.props.blockProps.addLock()\n this.updateData()\n return this.uploadFile()\n }\n\n componentDidMount() {\n return this.replaceImg()\n }\n\n aspectRatio() {\n return {\n maxWidth: `${ this.state.aspect_ratio.width }`,\n maxHeight: `${ this.state.aspect_ratio.height }`,\n ratio: `${ this.state.aspect_ratio.height }`\n }\n }\n\n updateDataSelection() {\n const { getEditorState, setEditorState } = this.props.blockProps\n const newselection = getEditorState().getSelection().merge({\n anchorKey: this.props.block.getKey(),\n focusKey: this.props.block.getKey()\n })\n\n return setEditorState(EditorState.forceSelection(getEditorState(), newselection))\n }\n\n handleGrafFigureSelectImg(e) {\n e.preventDefault()\n return this.setState({ selected: true }, this.updateDataSelection)\n }\n\n //main_editor.onChange(main_editor.state.editorState)\n\n coords() {\n return {\n maxWidth: `${ this.state.aspect_ratio.width }px`,\n maxHeight: `${ this.state.aspect_ratio.height }px`\n }\n }\n\n getBase64Image(img) {\n let canvas = document.createElement(\"canvas\")\n canvas.width = img.width\n canvas.height = img.height\n let ctx = canvas.getContext(\"2d\")\n ctx.drawImage(img, 0, 0)\n let dataURL = canvas.toDataURL(\"image/png\")\n\n return dataURL\n }\n\n formatData() {\n let formData = new FormData()\n if (this.file) {\n let formName = this.config.upload_formName || 'file'\n\n formData.append(formName, this.file)\n return formData\n } else {\n formData.append('url', this.props.blockProps.data.get(\"url\"))\n return formData\n }\n }\n\n getUploadUrl() {\n let url = this.config.upload_url\n if (typeof url === \"function\") {\n return url()\n } else {\n return url\n }\n }\n\n getUploadHeaders() {\n return this.config.upload_headers || {}\n }\n\n uploadFile() {\n let handleUp\n // custom upload handler\n if (this.config.upload_handler) {\n return this.config.upload_handler(this.formatData().get('file'), this)\n }\n\n axios({\n method: 'post',\n url: this.getUploadUrl(),\n headers: this.getUploadHeaders(),\n data: this.formatData(),\n onUploadProgress: e => {\n return this.updateProgressBar(e)\n }\n }).then(result => {\n this.uploadCompleted(result.data.url)\n\n if (this.config.upload_callback) {\n return this.config.upload_callback(result, this)\n }\n }).catch(error => {\n this.uploadFailed()\n\n console.log(`ERROR: got error uploading file ${ error }`)\n if (this.config.upload_error_callback) {\n return this.config.upload_error_callback(error, this)\n }\n })\n\n return handleUp = json_response => {\n return this.uploadCompleted(json_response.url, n)\n }\n }\n\n uploadFailed() {\n this.props.blockProps.removeLock()\n this.stopLoader()\n }\n\n uploadCompleted(url) {\n this.setState({ url }, this.updateData)\n this.props.blockProps.removeLock()\n this.stopLoader()\n this.file = null\n }\n\n updateProgressBar(e) {\n let complete = this.state.loading_progress\n if (e.lengthComputable) {\n complete = e.loaded / e.total * 100\n complete = complete != null ? complete : { complete: 0 }\n this.setState({\n loading_progress: complete })\n return console.log(`complete: ${ complete }`)\n }\n }\n\n placeHolderEnabled() {\n return this.state.enabled || this.props.block.getText()\n }\n\n placeholderText() {\n if (this.placeHolderEnabled()) {\n return \"\"\n }\n return this.config.image_caption_placeholder\n }\n\n handleFocus(e) {\n // console.log \"focus on placeholder\"\n return setTimeout(() => {\n return this.setState({\n enabled: true })\n }, 0)\n }\n\n render() {\n\n return (\n <div ref=\"image_tag2\" suppressContentEditableWarning={true}>\n <div className=\"aspectRatioPlaceholder is-locked\" \n style={this.coords()} \n onClick={this.handleGrafFigureSelectImg}>\n <div style={{ paddingBottom: `${ this.state.aspect_ratio.ratio }%` }} \n className='aspect-ratio-fill' />\n <img src={this.state.url} \n ref=\"image_tag\" \n height={this.state.aspect_ratio.height} \n width={this.state.aspect_ratio.width} \n className='graf-image' />\n <Loader toggle={this.state.loading} \n progress={this.state.loading_progress} />\n </div>\n <figcaption className='imageCaption' onMouseDown={this.handleFocus}>\n { !this.state.enabled ? \n <span className=\"danteDefaultPlaceholder\">\n {this.placeholderText()}\n </span> : undefined}\n <EditorBlock {...Object.assign({}, this.props, { \n \"editable\": true, \"className\": \"imageCaption\" })\n } />\n </figcaption>\n </div>\n )\n }\n}\n\nclass Loader extends React.Component {\n\n render() {\n return (\n <div>\n { this.props.toggle\n ? <div className=\"image-upoader-loader\">\n <p>\n { this.props.progress === 100\n ? \"processing image...\"\n : <span>\n <span>loading</span> { Math.round( this.props.progress ) }\n </span>\n }\n </p>\n </div>\n : undefined\n }\n </div>\n )\n }\n}\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/blocks/image.js","\nimport React from 'react'\nimport ReactDOM from 'react-dom'\n\nimport { Entity, RichUtils, AtomicBlockUtils, EditorBlock } from 'draft-js'\n\nexport default class PlaceholderBlock extends React.Component {\n constructor(props) {\n super(props)\n this.placeholderText = this.placeholderText.bind(this)\n this.placeholderFromProps = this.placeholderFromProps.bind(this)\n this.defaultText = this.defaultText.bind(this)\n this.handleFocus = this.handleFocus.bind(this)\n this.classForDefault = this.classForDefault.bind(this)\n this.state = {\n enabled: false,\n data: this.props.blockProps.data.toJS()\n }\n }\n\n placeholderText() {\n if (this.state.enabled) {\n return \"\"\n }\n return this.props.blockProps.data.toJS().placeholder || this.placeholderFromProps() || this.defaultText()\n }\n //if @.props.blockProps.data then @.props.blockProps.data.placeholder else @defaultText()\n\n\n placeholderFromProps() {\n return this.props.block.toJS().placeholder\n }\n\n defaultText() {\n return \"write something \"\n }\n\n componentDidMount() {}\n\n handleFocus(e) {\n // console.log \"focus on placeholder\"\n return setTimeout(() => {\n return this.setState({\n enabled: true })\n }, 0)\n }\n\n classForDefault() {\n if (!this.state.enabled) {\n return \"defaultValue defaultValue--root\"\n } else {\n return \"\"\n }\n }\n\n render() {\n return (\n <span className={this.classForDefault()} onMouseDown={this.handleFocus}>\n {this.placeholderText()}\n <EditorBlock {...Object.assign({}, this.props, {\n \"className\": \"imageCaption\",\n \"placeholder\": \"escrive alalal\"\n })} />\n </span>\n )\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/blocks/placeholder.js","\nimport React from 'react'\nimport ReactDOM from 'react-dom'\n\nimport { Entity, RichUtils, AtomicBlockUtils, EditorBlock } from 'draft-js'\n\nimport { updateDataOfBlock } from '../../model/index.js'\n\nimport axios from \"axios\"\n\nexport default class VideoBlock extends React.Component {\n constructor(props) {\n super(props)\n //api_key = \"86c28a410a104c8bb58848733c82f840\"\n\n this.updateData = this.updateData.bind(this)\n this.dataForUpdate = this.dataForUpdate.bind(this)\n this.state = { embed_data: this.defaultData() }\n }\n\n defaultData() {\n let existing_data = this.props.block.getData().toJS()\n return existing_data.embed_data || {}\n }\n\n // will update block state\n updateData() {\n const { block, blockProps } = this.props\n const { getEditorState, setEditorState } = this.props.blockProps\n const data = block.getData()\n const newData = data.merge(this.state)\n return setEditorState(updateDataOfBlock(getEditorState(), block, newData))\n }\n\n dataForUpdate() {\n return this.props.blockProps.data.toJS()\n }\n\n componentDidMount() {\n\n if (!this.props.blockProps.data) {\n return\n }\n // ensure data isnt already loaded\n if (!this.dataForUpdate().endpoint && !this.dataForUpdate().provisory_text) {\n return\n }\n\n return axios({\n method: 'get',\n url: `${ this.dataForUpdate().endpoint }${ this.dataForUpdate().provisory_text }&scheme=https`\n }).then(result => {\n return this.setState({ embed_data: result.data } //JSON.parse(data.responseText)\n , this.updateData)\n }).catch(error => {\n return console.log(\"TODO: error\")\n })\n }\n\n classForImage() {\n if (this.state.embed_data.thumbnail_url) {\n return \"\"\n } else {\n return \"mixtapeImage--empty u-ignoreBlock\"\n }\n }\n\n render() {\n return (\n <figure className='graf--figure graf--iframe graf--first' tabIndex='0'>\n <div className='iframeContainer' \n dangerouslySetInnerHTML={ { __html: this.state.embed_data.html } } />\n <figcaption className='imageCaption'>\n <EditorBlock {...Object.assign({}, this.props, { \"className\": \"imageCaption\" })} />\n </figcaption>\n </figure>\n )\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/blocks/video.js","import React from 'react'\n\nclass Debug extends React.Component {\n\n constructor() {\n super()\n\n this.handleToggleReadOnly = this.handleToggleReadOnly.bind(this)\n this.handleTestEmitAndDecode = this.handleTestEmitAndDecode.bind(this)\n this.handleTestEmitTEXT = this.handleTestEmitTEXT.bind(this)\n this.testEmitAndDecode = this.testEmitAndDecode.bind(this)\n this.testEmitTEXT = this.testEmitTEXT.bind(this)\n this.logState = this.logState.bind(this)\n this.toggleDisplay = this.toggleDisplay.bind(this)\n this.open = this.open.bind(this)\n this.render = this.render.bind(this)\n this.state = {\n output: \"\",\n display: \"none\"\n }\n }\n\n handleToggleReadOnly(e) {\n e.preventDefault()\n this.props.editor.toggleEditable()\n return false\n }\n\n handleTestEmitAndDecode(e) {\n e.preventDefault()\n return this.testEmitAndDecode()\n }\n\n handleTestEmitTEXT(e) {\n e.preventDefault()\n return this.testEmitTEXT()\n }\n\n testEmitAndDecode(e) {\n const raw_as_json = this.props.editor.emitSerializedOutput()\n this.props.editor.setState({ \n editorState: this.props.editor.decodeEditorContent(raw_as_json) }, \n this.logState(JSON.stringify(raw_as_json)))\n return false\n }\n\n testEmitTEXT() {\n const text = this.props.editor.getTextFromEditor()\n return this.logState(text)\n }\n\n logState(raw) {\n return this.setState({ output: raw }, this.open)\n }\n\n toggleDisplay(e) {\n e.preventDefault()\n const d = this.state.display === \"block\" ? \"none\" : this.state.display\n return this.setState({\n display: d })\n }\n\n open() {\n return this.setState({\n display: \"block\" })\n }\n\n render() {\n return (\n <div>\n <div className=\"debugControls\">\n <ul>\n <li> LOCKS: { this.props.editor.state.locks } </li>\n <li>\n <a href=\"#\" onClick={ this.handleToggleReadOnly }>\n EDITABLE: { this.props.editor.state.read_only ? 'NO' : 'YES' }\n </a>\n </li>\n <li>\n <a href=\"#\" onClick={ this.handleTestEmitTEXT }>EDITOR TEXT</a>\n </li>\n <li>\n <a href=\"#\" onClick={ this.handleTestEmitAndDecode }>EDITOR STATE</a>\n </li>\n </ul>\n </div>\n <div className=\"debugZone\" style={ { display: this.state.display } }>\n <a href=\"#\" className=\"dante-debug-close close\" onClick={ this.toggleDisplay } />\n <div className=\"debugOutput\">\n <h2>EDITOR OUTPUT</h2>\n {\n this.state.output.length > 0\n ? <pre>{ this.state.output }</pre>\n : undefined\n }\n </div>\n </div>\n </div>\n )\n }\n}\n\nexport default Debug\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/debug.js","import React from 'react'\nimport { Entity } from 'draft-js'\n\nexport default class Link extends React.Component {\n\n constructor(props) {\n super(props)\n this._validateLink = this._validateLink.bind(this)\n this._checkProtocol = this._checkProtocol.bind(this)\n this._showPopLinkOver = this._showPopLinkOver.bind(this)\n this._hidePopLinkOver = this._hidePopLinkOver.bind(this)\n this.isHover = false\n }\n\n _validateLink() {\n const pattern = new RegExp('^(https?:\\/\\/)?' + // protocol\n '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name\n '((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address\n '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path\n '(\\?[&a-z\\d%_.~+=-]*)?' + // query string\n '(\\#[-a-z\\d_]*)?$', 'i') // fragment locater\n if (!pattern.test(str)) {\n alert(\"Please enter a valid URL.\")\n return false\n } else {\n return true\n }\n }\n\n _checkProtocol() {\n return console.log(\"xcvd\")\n }\n\n _showPopLinkOver(e) {\n if (!this.data.showPopLinkOver) {\n return\n }\n return this.data.showPopLinkOver(this.refs.link)\n }\n\n _hidePopLinkOver(e) {\n if (!this.data.hidePopLinkOver) {\n return\n }\n return this.data.hidePopLinkOver()\n }\n\n render() {\n this.data = Entity.get(this.props.entityKey).getData()\n\n return (\n <a\n ref=\"link\"\n href={ this.data.url }\n className=\"markup--anchor\"\n onMouseOver={ this._showPopLinkOver }\n onMouseOut={ this._hidePopLinkOver }\n >\n { this.props.children }\n </a>\n )\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/decorators/link.js","import React from 'react'\nimport ReactDOM from 'react-dom'\n\nimport { \n Entity, \n RichUtils, \n AtomicBlockUtils, \n EditorState \n } from 'draft-js'\n\nimport { \n addNewBlock, \n resetBlockWithType, \n updateDataOfBlock, \n getCurrentBlock, \n getNode } from '../../model/index.js'\n\nimport { getSelectionRect, getSelection } from \"../../utils/selection.js\"\n\nclass DanteInlineTooltip extends React.Component {\n\n constructor(props) {\n super(props)\n\n this.display = this.display.bind(this)\n this.show = this.show.bind(this)\n this.hide = this.hide.bind(this)\n this._toggleScaled = this._toggleScaled.bind(this)\n this.scale = this.scale.bind(this)\n this.collapse = this.collapse.bind(this)\n this.componentWillReceiveProps = this.componentWillReceiveProps.bind(this)\n this.clickOnFileUpload = this.clickOnFileUpload.bind(this)\n this.handlePlaceholder = this.handlePlaceholder.bind(this)\n this.insertImage = this.insertImage.bind(this)\n this.handleFileInput = this.handleFileInput.bind(this)\n this.widgets = this.widgets.bind(this)\n this.clickHandler = this.clickHandler.bind(this)\n this.relocate = this.relocate.bind(this)\n this.state = {\n position: { top: 0, left: 0 },\n show: false,\n scaled: false\n }\n }\n\n display(b) {\n if (b) {\n return this.show()\n } else {\n return this.hide()\n }\n }\n\n show() {\n return this.setState({\n show: true })\n }\n\n hide() {\n return this.setState({\n show: false })\n }\n\n setPosition(coords) {\n return this.setState({\n position: coords })\n }\n\n _toggleScaled(ev) {\n if (this.state.scaled) {\n return this.collapse()\n } else {\n return this.scale()\n }\n }\n\n scale() {\n return this.setState({\n scaled: true })\n }\n\n collapse() {\n return this.setState({\n scaled: false })\n }\n\n componentWillReceiveProps(newProps) {\n return this.collapse()\n }\n\n activeClass() {\n //if @props.show then \"is-active\" else \"\"\n if (this.isActive()) {\n return \"is-active\"\n } else {\n return \"\"\n }\n }\n\n isActive() {\n return this.state.show\n }\n\n scaledClass() {\n if (this.state.scaled) {\n return \"is-scaled\"\n } else {\n return \"\"\n }\n }\n\n scaledWidth() {\n if (this.state.scaled) {\n return \"124\"\n } else {\n return \"0\"\n }\n }\n\n clickOnFileUpload() {\n this.refs.fileInput.click()\n this.collapse()\n return this.hide()\n }\n\n handlePlaceholder(input) {\n let opts = {\n type: input.widget_options.insert_block,\n placeholder: input.options.placeholder,\n endpoint: input.options.endpoint\n }\n\n return this.props.onChange(resetBlockWithType(this.props.editorState, 'placeholder', opts))\n }\n\n insertImage(file) {\n let opts = {\n url: URL.createObjectURL(file),\n file\n }\n\n return this.props.onChange(addNewBlock(this.props.editorState, 'image', opts))\n }\n\n handleFileInput(e) {\n let fileList = e.target.files\n // TODO: support multiple file uploads\n /*\n Object.keys(fileList).forEach (o)=>\n @.insertImage(fileList[0])\n */\n return this.insertImage(fileList[0])\n }\n\n widgets() {\n return this.props.editor.widgets\n }\n\n clickHandler(e, type) {\n let request_block = this.widgets().find(o => o.icon === type)\n\n switch (request_block.widget_options.insertion) {\n case \"upload\":\n return this.clickOnFileUpload(e, request_block)\n case \"placeholder\":\n return this.handlePlaceholder(request_block)\n default:\n return console.log(`WRONG TYPE FOR ${ request_block.widget_options.insertion }`)\n }\n }\n\n getItems() {\n return this.widgets().filter(o => {\n return o.widget_options.displayOnInlineTooltip\n })\n }\n\n isDescendant(parent, child) {\n let node = child.parentNode\n while (node !== null) {\n if (node === parent) {\n return true\n }\n node = node.parentNode\n }\n return false\n }\n\n relocate() {\n let { editorState } = this.props\n\n if (editorState.getSelection().isCollapsed()) {\n\n let currentBlock = getCurrentBlock(editorState)\n let blockType = currentBlock.getType()\n\n let contentState = editorState.getCurrentContent()\n let selectionState = editorState.getSelection()\n\n let block = contentState.getBlockForKey(selectionState.anchorKey)\n\n let nativeSelection = getSelection(window)\n if (!nativeSelection.rangeCount) {\n return\n }\n\n let node = getNode()\n\n let selectionBoundary = getSelectionRect(nativeSelection)\n let coords = selectionBoundary //utils.getSelectionDimensions(node)\n\n let parent = ReactDOM.findDOMNode(this.props.editor)\n let parentBoundary = parent.getBoundingClientRect()\n\n // hide if selected node is not in editor\n // debugger\n //console.log @isDescendant(parent, nativeSelection.anchorNode)\n\n if (!this.isDescendant(parent, nativeSelection.anchorNode)) {\n this.hide()\n return\n }\n\n // checkeamos si esta vacio\n this.display(block.getText().length === 0 && blockType === \"unstyled\")\n return this.setPosition({\n top: coords.top + window.scrollY,\n left: coords.left + window.scrollX - 60\n })\n\n /*\n @refs.image_popover.display(blockType is \"image\")\n if blockType is \"image\"\n selectionBoundary = node.anchorNode.parentNode.parentNode.parentNode.getBoundingClientRect()\n *el = document.querySelector(\"#dante_image_popover\")\n el = @refs.image_popover.refs.image_popover\n padd = el.offsetWidth / 2\n @refs.image_popover.setPosition\n top: selectionBoundary.top - parentBoundary.top + 60\n left: selectionBoundary.left + (selectionBoundary.width / 2) - padd\n\n *@setState\n * image_popover_position:\n * top: selectionBoundary.top - parentBoundary.top + 60\n * left: selectionBoundary.left + (selectionBoundary.width / 2) - padd\n *\n */\n } else {\n return this.hide()\n }\n }\n\n render() {\n return (\n <div\n className={ `inlineTooltip ${ this.activeClass() } ${ this.scaledClass() }` }\n style={ this.state.position }\n >\n <button\n className=\"inlineTooltip-button control\"\n title=\"Close Menu\"\n data-action=\"inline-menu\"\n onClick={ this._toggleScaled }\n >\n <span className=\"tooltip-icon dante-icon-plus\" />\n </button>\n <div\n className=\"inlineTooltip-menu\"\n style={ { width: `${ this.scaledWidth() }px` } }\n >\n { this.getItems().map( (item, i) => {\n return <InlineTooltipItem\n item={ item }\n key={ i }\n clickHandler={ this.clickHandler }\n />\n })\n }\n <input\n type=\"file\"\n style={ { display: 'none' } }\n ref=\"fileInput\"\n multiple=\"multiple\"\n onChange={ this.handleFileInput }\n />\n </div>\n </div>\n )\n }\n}\n\nclass InlineTooltipItem extends React.Component {\n\n constructor(...args) {\n super(...args)\n this.clickHandler = this.clickHandler.bind(this)\n }\n\n clickHandler(e) {\n e.preventDefault()\n return this.props.clickHandler(e, this.props.item.icon)\n }\n\n render() {\n return (\n <button\n className=\"inlineTooltip-button scale\"\n title={ this.props.title }\n onMouseDown={ this.clickHandler }\n >\n <span className={ `tooltip-icon dante-icon-${ this.props.item.icon }` } />\n </button>\n )\n }\n}\n\nexport default DanteInlineTooltip\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/popovers/addButton.js","\nimport React from 'react'\nimport ReactDOM from 'react-dom'\n\nimport { Entity, RichUtils, AtomicBlockUtils, EditorState } from 'draft-js'\n\nimport { getSelectionRect, getSelection } from \"../../utils/selection.js\"\n\nimport { getCurrentBlock, getNode } from '../../model/index.js'\n\nclass DanteImagePopover extends React.Component {\n\n constructor(props) {\n super(props)\n\n this.display = this.display.bind(this)\n this.show = this.show.bind(this)\n this.hide = this.hide.bind(this)\n this._toggleScaled = this._toggleScaled.bind(this)\n this.scale = this.scale.bind(this)\n this.collapse = this.collapse.bind(this)\n this.relocate = this.relocate.bind(this)\n this.componentWillReceiveProps = this.componentWillReceiveProps.bind(this)\n this.handleClick = this.handleClick.bind(this)\n this.state = {\n position: {\n top: 0,\n left: 0\n },\n show: false,\n scaled: false,\n buttons: [{ type: \"left\" }, \n { type: \"center\"}, \n { type: \"fill\" }, \n { type: \"wide\" }]\n }\n }\n\n display(b) {\n if (b) {\n return this.show()\n } else {\n return this.hide()\n }\n }\n\n show() {\n return this.setState({\n show: true })\n }\n\n hide() {\n return this.setState({\n show: false })\n }\n\n setPosition(coords) {\n return this.setState({\n position: coords })\n }\n\n _toggleScaled(ev) {\n if (this.state.scaled) {\n return this.collapse()\n } else {\n return this.scale()\n }\n }\n\n scale() {\n return this.setState({\n scaled: true })\n }\n\n collapse() {\n return this.setState({\n scaled: false })\n }\n\n relocate() {\n let { editorState } = this.props\n\n if (editorState.getSelection().isCollapsed()) {\n\n let currentBlock = getCurrentBlock(editorState)\n let blockType = currentBlock.getType()\n\n let contentState = editorState.getCurrentContent()\n let selectionState = editorState.getSelection()\n\n let block = contentState.getBlockForKey(selectionState.anchorKey)\n\n let nativeSelection = getSelection(window)\n if (!nativeSelection.rangeCount) {\n return\n }\n\n let node = getNode()\n\n let selectionBoundary = getSelectionRect(nativeSelection)\n let coords = selectionBoundary\n\n let parent = ReactDOM.findDOMNode(this.props.editor)\n let parentBoundary = parent.getBoundingClientRect()\n\n this.display(blockType === \"image\")\n\n if (blockType === \"image\") {\n selectionBoundary = node.anchorNode.parentNode.parentNode\n .parentNode.getBoundingClientRect()\n let el = this.refs.image_popover\n let padd = el.offsetWidth / 2\n return this.setPosition({\n top: selectionBoundary.top - parentBoundary.top + 60,\n left: selectionBoundary.left + selectionBoundary.width / 2 - padd\n })\n }\n } else {\n return this.hide()\n }\n }\n\n componentWillReceiveProps(newProps) {\n return this.collapse()\n }\n\n getStyle() {\n if (!this.state.position) {\n return {}\n }\n }\n\n handleClick(item) {\n return this.props.editor.setDirection(item.type)\n }\n\n render() {\n return (\n <div\n ref=\"image_popover\"\n className={ `dante-popover popover--Aligntooltip popover--top popover--animated ${ this.state.show ? 'is-active' : undefined }` }\n style={ \n { top: this.state.position.top,\n left: this.state.position.left }\n }\n >\n <div className='popover-inner'>\n <ul className='dante-menu-buttons'>\n { this.state.buttons.map( (item, i) => {\n return <DanteImagePopoverItem\n item={ item }\n handleClick={ this.handleClick }\n key={ i }\n />\n })\n }\n </ul>\n </div>\n <div className='popover-arrow' />\n </div>\n )\n }\n}\n\nclass DanteImagePopoverItem extends React.Component {\n\n constructor(...args) {\n super(...args)\n this.handleClick = this.handleClick.bind(this)\n this.render = this.render.bind(this)\n }\n\n handleClick(e) {\n e.preventDefault()\n return this.props.handleClick(this.props.item)\n }\n\n render() {\n return <li \n className={`dante-menu-button align-${ this.props.item.type }`} \n onMouseDown={this.handleClick}>\n <span className={`tooltip-icon dante-icon-image-${ this.props.item.type }`} />\n </li>\n }\n}\n\nexport default DanteImagePopover\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/popovers/image.js","\nimport React from 'react'\nimport ReactDOM from 'react-dom'\n\nimport { getCurrentBlock } from '../../model/index.js'\n\nclass DanteAnchorPopover extends React.Component {\n\n constructor(props) {\n\n super(props)\n this.display = this.display.bind(this)\n this.show = this.show.bind(this)\n this.hide = this.hide.bind(this)\n this.relocate = this.relocate.bind(this)\n this.render = this.render.bind(this)\n this.state = {\n position: {\n top: 0,\n left: 0\n },\n show: false,\n url: \"\"\n }\n }\n\n display(b) {\n if (b) {\n return this.show()\n } else {\n return this.hide()\n }\n }\n\n show() {\n return this.setState({\n show: true })\n }\n\n hide() {\n return this.setState({\n show: false })\n }\n\n setPosition(coords) {\n return this.setState({\n position: coords })\n }\n\n relocate(node) {\n if (node == null) {\n node = null\n }\n if (!node) {\n return\n }\n\n let { editorState } = this.props\n let currentBlock = getCurrentBlock(editorState)\n let blockType = currentBlock.getType()\n\n let contentState = editorState.getCurrentContent()\n let selectionState = editorState.getSelection()\n\n let selectionBoundary = node.getBoundingClientRect()\n let coords = selectionBoundary\n\n let el = this.refs.dante_popover\n let padd = el.offsetWidth / 2\n\n let parent = ReactDOM.findDOMNode(this.props.editor)\n let parentBoundary = parent.getBoundingClientRect()\n\n return {\n top: selectionBoundary.top - parentBoundary.top + 160,\n left: selectionBoundary.left + selectionBoundary.width / 2 - padd\n }\n }\n\n render() {\n let { position } = this.state\n let style = {\n left: position.left,\n top: position.top,\n visibility: `${ this.state.show ? 'visible' : 'hidden' }`\n }\n return (\n <div\n ref=\"dante_popover\"\n className='dante-popover popover--tooltip popover--Linktooltip popover--bottom is-active'\n style={ style }\n onMouseOver={ this.props.handleOnMouseOver }\n onMouseOut={ this.props.handleOnMouseOut }\n >\n <div className='popover-inner'>\n <a href={ this.props.url } target='_blank'>\n { this.state.url }\n </a>\n </div>\n <div className='popover-arrow' />\n </div>\n )\n }\n}\n\nexport default DanteAnchorPopover\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/popovers/link.js","import React from 'react'\nimport ReactDOM from 'react-dom'\n\nimport { \n convertToRaw, \n CompositeDecorator, \n getVisibleSelectionRect, \n getDefaultKeyBinding, \n getSelectionOffsetKeyForNode, \n KeyBindingUtil, \n ContentState, \n Editor, \n EditorState, \n Entity, \n RichUtils } from 'draft-js'\n\nimport { getSelectionRect, getSelection } from \"../../utils/selection.js\"\n\nimport { getCurrentBlock } from '../../model/index.js'\n\nclass DanteTooltip extends React.Component {\n\n constructor(props) {\n super(props)\n this._clickInlineHandler = this._clickInlineHandler.bind(this)\n this.display = this.display.bind(this)\n this.show = this.show.bind(this)\n this.hide = this.hide.bind(this)\n this.relocate = this.relocate.bind(this)\n this._clickBlockHandler = this._clickBlockHandler.bind(this)\n this.displayLinkMode = this.displayLinkMode.bind(this)\n this.displayActiveMenu = this.displayActiveMenu.bind(this)\n this._enableLinkMode = this._enableLinkMode.bind(this)\n this._disableLinkMode = this._disableLinkMode.bind(this)\n this.handleInputEnter = this.handleInputEnter.bind(this)\n this.confirmLink = this.confirmLink.bind(this)\n this.inlineItems = this.inlineItems.bind(this)\n this.blockItems = this.blockItems.bind(this)\n this.getDefaultValue = this.getDefaultValue.bind(this)\n this.getVisibleSelectionRect = getVisibleSelectionRect\n this.state = {\n link_mode: false,\n show: false,\n position: {}\n }\n }\n\n _clickInlineHandler(ev, style) {\n ev.preventDefault()\n\n this.props.onChange(RichUtils.toggleInlineStyle(this.props.editorState, style))\n\n return setTimeout(() => {\n return this.relocate()\n }, 0)\n }\n\n display(b) {\n if (b) {\n return this.show()\n } else {\n return this.hide()\n }\n }\n\n show() {\n return this.setState({\n show: true })\n }\n\n hide() {\n return this.setState({\n link_mode: false,\n show: false\n })\n }\n\n setPosition(coords) {\n return this.setState({\n position: coords })\n }\n\n isDescendant(parent, child) {\n let node = child.parentNode\n while (node !== null) {\n if (node === parent) {\n return true\n }\n node = node.parentNode\n }\n return false\n }\n\n relocate() {\n\n let currentBlock = getCurrentBlock(this.props.editorState)\n let blockType = currentBlock.getType()\n // display tooltip only for unstyled\n\n if (this.props.configTooltip.selectionElements.indexOf(blockType) < 0) {\n this.hide()\n return\n }\n\n if (this.state.link_mode) {\n return\n }\n if (!this.state.show) {\n return\n }\n\n let el = this.refs.dante_menu\n let padd = el.offsetWidth / 2\n\n let nativeSelection = getSelection(window)\n if (!nativeSelection.rangeCount) {\n return\n }\n\n let selectionBoundary = getSelectionRect(nativeSelection)\n\n let parent = ReactDOM.findDOMNode(this.props.editor)\n let parentBoundary = parent.getBoundingClientRect()\n\n // hide if selected node is not in editor\n if (!this.isDescendant(parent, nativeSelection.anchorNode)) {\n this.hide()\n return\n }\n\n let top = selectionBoundary.top - parentBoundary.top - -90 - 5\n let left = selectionBoundary.left + selectionBoundary.width / 2 - padd\n\n if (!top || !left) {\n return\n }\n\n // console.log \"SET SHOW FOR TOOLTIP INSERT MENU\"\n return this.setState({\n show: true,\n position: {\n left,\n top\n }\n })\n }\n\n _clickBlockHandler(ev, style) {\n ev.preventDefault()\n\n this.props.onChange(RichUtils.toggleBlockType(this.props.editorState, style))\n\n return setTimeout(() => {\n return this.relocate()\n }, 0)\n }\n\n displayLinkMode() {\n if (this.state.link_mode) {\n return \"dante-menu--linkmode\"\n } else {\n return \"\"\n }\n }\n\n displayActiveMenu() {\n if (this.state.show) {\n return \"dante-menu--active\"\n } else {\n return \"\"\n }\n }\n\n _enableLinkMode(ev) {\n ev.preventDefault()\n return this.setState({\n link_mode: true })\n }\n\n _disableLinkMode(ev) {\n ev.preventDefault()\n return this.setState({\n link_mode: false,\n url: \"\"\n })\n }\n\n hideMenu() {\n return this.hide()\n }\n\n handleInputEnter(e) {\n if (e.which === 13) {\n return this.confirmLink(e)\n }\n }\n\n confirmLink(e) {\n e.preventDefault()\n let { editorState } = this.props\n let urlValue = e.currentTarget.value\n let contentState = editorState.getCurrentContent()\n let selection = editorState.getSelection()\n\n let opts = {\n url: urlValue,\n showPopLinkOver: this.props.showPopLinkOver,\n hidePopLinkOver: this.props.hidePopLinkOver\n }\n\n let entityKey = Entity.create('LINK', 'MUTABLE', opts)\n\n if (selection.isCollapsed()) {\n console.log(\"COLLAPSED SKIPPING LINK\")\n return\n }\n\n this.props.onChange(RichUtils.toggleLink(editorState, selection, entityKey))\n\n return this._disableLinkMode(e)\n }\n\n getPosition() {\n let pos = this.state.position\n return pos\n }\n\n inlineItems() {\n return this.props.widget_options.block_types.filter(o => {\n return o.type === \"inline\"\n })\n }\n\n blockItems() {\n return this.props.widget_options.block_types.filter(o => {\n return o.type === \"block\"\n })\n }\n\n getDefaultValue() {\n if (this.refs.dante_menu_input) {\n this.refs.dante_menu_input.value = \"\"\n }\n\n let currentBlock = getCurrentBlock(this.props.editorState)\n let blockType = currentBlock.getType()\n let selection = this.props.editor.state.editorState.getSelection()\n let selectedEntity = null\n let defaultUrl = null\n return currentBlock.findEntityRanges(character => {\n let entityKey = character.getEntity()\n selectedEntity = entityKey\n return entityKey !== null && Entity.get(entityKey).getType() === 'LINK'\n }, (start, end) => {\n let selStart = selection.getAnchorOffset()\n let selEnd = selection.getFocusOffset()\n if (selection.getIsBackward()) {\n selStart = selection.getFocusOffset()\n selEnd = selection.getAnchorOffset()\n }\n\n if (start === selStart && end === selEnd) {\n defaultUrl = Entity.get(selectedEntity).getData().url\n return this.refs.dante_menu_input.value = defaultUrl\n }\n })\n }\n\n render() {\n return (\n <div\n id=\"dante-menu\"\n ref=\"dante_menu\"\n className={ `dante-menu ${ this.displayActiveMenu() } ${ this.displayLinkMode() }` }\n style={ this.getPosition() }\n >\n <div className=\"dante-menu-linkinput\">\n <input\n className=\"dante-menu-input\"\n ref=\"dante_menu_input\"\n placeholder={this.props.widget_options.placeholder}\n onKeyPress={ this.handleInputEnter }\n defaultValue={ this.getDefaultValue() }\n />\n <div className=\"dante-menu-button\" onMouseDown={ this._disableLinkMode } />\n </div>\n <ul className=\"dante-menu-buttons\">\n { this.blockItems().map( (item, i) => {\n return <DanteTooltipItem\n key={ i }\n item={ item }\n handleClick={ this._clickBlockHandler }\n editorState={ this.props.editorState }\n type=\"block\"\n currentStyle={ this.props.editorState.getCurrentInlineStyle }\n />\n })\n }\n <DanteTooltipLink\n editorState={ this.props.editorState }\n enableLinkMode={ this._enableLinkMode }\n />\n { this.inlineItems().map( (item, i) => {\n return <DanteTooltipItem\n key={ i }\n item={ item }\n type=\"inline\"\n editorState={ this.props.editorState }\n handleClick={ this._clickInlineHandler }\n />\n })\n }\n </ul>\n </div>\n )\n }\n}\n\nclass DanteTooltipItem extends React.Component {\n\n constructor(...args) {\n super(...args)\n this.handleClick = this.handleClick.bind(this)\n this.activeClass = this.activeClass.bind(this)\n this.isActive = this.isActive.bind(this)\n this.activeClassInline = this.activeClassInline.bind(this)\n this.activeClassBlock = this.activeClassBlock.bind(this)\n this.render = this.render.bind(this)\n }\n\n handleClick(ev) {\n return this.props.handleClick(ev, this.props.item.style)\n }\n\n activeClass() {\n if (this.isActive()) {\n return \"active\"\n } else {\n return \"\"\n }\n }\n\n isActive() {\n if (this.props.type === \"block\") {\n return this.activeClassBlock()\n } else {\n return this.activeClassInline()\n }\n }\n\n activeClassInline() {\n if (!this.props.editorState) {\n return\n }\n //console.log @props.item\n return this.props.editorState.getCurrentInlineStyle().has(this.props.item.style)\n }\n\n activeClassBlock() {\n //console.log \"EDITOR STATE\", @props.editorState\n if (!this.props.editorState) {\n return\n }\n let selection = this.props.editorState.getSelection()\n let blockType = this.props.editorState.getCurrentContent().getBlockForKey(selection.getStartKey()).getType()\n return this.props.item.style === blockType\n }\n\n render() {\n return (\n <li className={ `dante-menu-button ${ this.activeClass() }` } onMouseDown={ this.handleClick }>\n <i className={ `dante-icon dante-icon-${ this.props.item.label }` } data-action=\"bold\" />\n </li>\n )\n }\n}\n\nclass DanteTooltipLink extends React.Component {\n\n constructor(...args) {\n super(...args)\n this.promptForLink = this.promptForLink.bind(this)\n }\n\n promptForLink(ev) {\n let selection = this.props.editorState.getSelection()\n if (!selection.isCollapsed()) {\n return this.props.enableLinkMode(ev)\n }\n }\n\n render() {\n return (\n <li className=\"dante-menu-button\" onMouseDown={ this.promptForLink }>\n <i className=\"dante-icon icon-createlink\" data-action=\"createlink\">link</i>\n </li>\n )\n }\n}\n\nexport default DanteTooltip\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/popovers/toolTip.js","import { Entity } from 'draft-js'\n\n//TODO: what the f*ck is happening here? ;-;\nconst findEntities = (entityType, instance, contentBlock, callback) => {\n return contentBlock.findEntityRanges((function(_this) {\n return function(character) {\n var entityKey, opts, res\n entityKey = character.getEntity()\n return (res = entityKey !== null && Entity.get(entityKey).getType() === entityType, res ? (opts = {\n showPopLinkOver: instance.showPopLinkOver,\n hidePopLinkOver: instance.hidePopLinkOver\n }, Entity.mergeData(entityKey, opts)) : void 0, res)\n }\n })(this), callback)\n}\n\nexport default findEntities\n\n\n// WEBPACK FOOTER //\n// src/utils/find_entities.js","import { ContentState, genKey, Entity, CharacterMetadata, ContentBlock, convertFromHTML, getSafeBodyFromHTML } from 'draft-js'\n\nimport { List, OrderedSet, Repeat, fromJS } from 'immutable'\n\n\n// { compose\n// } = require('underscore')\n\n// underscore compose function\nlet compose = function() {\n let args = arguments\n let start = args.length - 1\n return function() {\n let i = start\n let result = args[start].apply(this, arguments)\n while (i--) {\n result = args[i].call(this, result)\n }\n return result\n }\n}\n\n// from https://gist.github.com/N1kto/6702e1c2d89a33a15a032c234fc4c34e\n\n/*\n * Helpers\n */\n\n// Prepares img meta data object based on img attributes\nlet getBlockSpecForElement = imgElement=> {\n return {\n contentType: 'image',\n imgSrc: imgElement.getAttribute('src')\n }\n}\n\n// Wraps meta data in HTML element which is 'understandable' by Draft, I used <blockquote />.\nlet wrapBlockSpec = blockSpec=> {\n if (blockSpec === null) {\n return null\n }\n\n let tempEl = document.createElement('blockquote')\n // stringify meta data and insert it as text content of temp HTML element. We will later extract\n // and parse it.\n tempEl.innerText = JSON.stringify(blockSpec)\n return tempEl\n}\n\n// Replaces <img> element with our temp element\nlet replaceElement = (oldEl, newEl)=> {\n if (!(newEl instanceof HTMLElement)) {\n return\n }\n\n let upEl = getUpEl(oldEl)\n //parentNode = oldEl.parentNode\n //return parentNode.replaceChild(newEl, oldEl)\n return upEl.parentNode.insertBefore(newEl, upEl)\n}\n\nvar getUpEl = el=> {\n let original_el = el\n while (el.parentNode) {\n if (el.parentNode.tagName !== 'BODY') {\n el = el.parentNode\n }\n if (el.parentNode.tagName === 'BODY') { return el }\n }\n}\n\nlet elementToBlockSpecElement = compose(wrapBlockSpec, getBlockSpecForElement)\n\nlet imgReplacer = imgElement=> {\n return replaceElement(imgElement, elementToBlockSpecElement(imgElement))\n}\n\n/*\n * Main function\n */\n\n// takes HTML string and returns DraftJS ContentState\nlet customHTML2Content = function(HTML, blockRn){\n let tempDoc = new DOMParser().parseFromString(HTML, 'text/html')\n // replace all <img /> with <blockquote /> elements\n\n let a = tempDoc.querySelectorAll('img').forEach( item=> imgReplacer(item))\n\n // use DraftJS converter to do initial conversion. I don't provide DOMBuilder and\n // blockRenderMap arguments here since it should fall back to its default ones, which are fine\n console.log(tempDoc.body.innerHTML)\n let contentBlocks = convertFromHTML(tempDoc.body.innerHTML,\n getSafeBodyFromHTML,\n blockRn\n )\n\n // now replace <blockquote /> ContentBlocks with 'atomic' ones\n contentBlocks = contentBlocks.map(function(block){\n let newBlock\n console.log(\"CHECK BLOCK\", block.getType())\n if (block.getType() !== 'blockquote') {\n return block\n }\n\n let json = \"\"\n try {\n json = JSON.parse(block.getText())\n } catch (error) {\n return block\n }\n\n return newBlock = block.merge({\n type: \"image\",\n text: \"\",\n data: {\n url: json.imgSrc,\n forceUpload: true\n }\n })\n })\n\n tempDoc = null\n return ContentState.createFromBlockArray(contentBlocks)\n}\n\n\nexport default customHTML2Content\n\n\n// WEBPACK FOOTER //\n// src/utils/html2content.js","import axios from \"axios\"\nimport Immutable from 'immutable'\n\nclass SaveBehavior {\n constructor(options) {\n this.getLocks = options.getLocks\n this.config = options.config\n this.editorContent = options.editorContent\n this.editorState = options.editorState\n }\n\n handleStore(ev){\n return this.store()\n }\n\n store(content){\n if (!this.config.data_storage.url) { return }\n if (this.getLocks() > 0) { return }\n\n clearTimeout(this.timeout)\n\n return this.timeout = setTimeout(() => {\n return this.checkforStore(content)\n }\n , this.config.data_storage.interval)\n }\n\n getTextFromEditor(content){\n return content.blocks.map(o=> {\n return o.text\n }\n )\n .join(\"\\n\")\n }\n\n getUrl() {\n let { url } = this.config.data_storage\n if (typeof(url) === \"function\") { \n return url() \n } else { \n return url \n }\n }\n\n getMethod() {\n let { method } = this.config.data_storage\n if (typeof(method) === \"function\") { \n return method() \n } else { \n return method \n }\n }\n\n getWithCredentials(){\n let { withCredentials } = this.config.data_storage\n if (typeof(withCredentials) === \"function\") { \n return withCredentials() \n } else { \n return withCredentials \n }\n }\n\n getCrossDomain(){\n let { crossDomain } = this.config.data_storage\n if (typeof(crossDomain) === \"function\") { \n return crossDomain()\n } else { \n return crossDomain \n }\n }\n\n getHeaders(){\n let { headers } = this.config.data_storage\n if (typeof(headers) === \"function\") { \n return headers() \n } else { \n return headers \n }\n }\n\n checkforStore(content){\n // ENTER DATA STORE\n let isChanged = !Immutable.is(Immutable.fromJS(this.editorContent), Immutable.fromJS(content))\n // console.log(\"CONTENT CHANGED:\", isChanged)\n\n if (!isChanged) { return }\n\n this.save(content)\n }\n\n save(content){\n\n // use save handler from config if exists\n if (this.config.data_storage.save_handler){\n this.config.data_storage.save_handler(this, content)\n return \n }\n\n if (this.config.xhr.before_handler) { this.config.xhr.before_handler() }\n // console.log \"SAVING TO: #{@getMethod()} #{@getUrl()}\"\n\n return axios({\n method: this.getMethod(),\n url: this.getUrl(),\n data: {\n editor_content: JSON.stringify(content),\n text_content: this.getTextFromEditor(content)\n },\n withCredentials: this.getWithCredentials(),\n crossDomain: this.getCrossDomain(),\n headers: this.getHeaders(),\n })\n .then(result=> {\n // console.log \"STORING CONTENT\", result\n if (this.config.data_storage.success_handler) { this.config.data_storage.success_handler(result) }\n if (this.config.xhr.success_handler) { return this.config.xhr.success_handler(result) }\n }\n )\n .catch(error=> {\n // console.log(\"ERROR: got error saving content at #{@config.data_storage.url} - #{error}\")\n if (this.config.xhr.failure_handler) { return this.config.xhr.failure_handler(error) }\n }\n )\n }\n}\n\n\nexport default SaveBehavior\n\n\n\n// WEBPACK FOOTER //\n// src/utils/save_content.js","import { Map } from 'immutable';\n\n\n\nimport { EditorState, ContentBlock, genKey } from 'draft-js';\n\n\n/*\nUsed from [react-rte](https://github.com/brijeshb42/medium-draft)\nby [brijeshb42](https://github.com/brijeshb42/medium-draft)\n*/\n\n/*\nReturns default block-level metadata for various block type. Empty object otherwise.\n*/\nexport const getDefaultBlockData = (blockType, initialData = {}) => {\n switch (blockType) {\n //case Block.TODO: return { checked: false };\n default: return initialData;\n }\n};\n\nexport const getNode = (root=window) => {\n let t = null\n if (root.getSelection){\n t = root.getSelection()\n } else if (root.document.getSelection){\n t = root.document.getSelection()\n } else if (root.document.selection){\n t = root.document.selection.createRange().text\n }\n return t\n}\n\n/*\nGet currentBlock in the editorState.\n*/\nexport const getCurrentBlock = (editorState) => {\n const selectionState = editorState.getSelection();\n const contentState = editorState.getCurrentContent();\n const block = contentState.getBlockForKey(selectionState.getStartKey());\n return block;\n};\n\n/*\nAdds a new block (currently replaces an empty block) at the current cursor position\nof the given `newType`.\n*/\nexport const addNewBlock = (editorState, newType = \"unstyled\", initialData = {}) => {\n const selectionState = editorState.getSelection();\n if (!selectionState.isCollapsed()) {\n return editorState;\n }\n const contentState = editorState.getCurrentContent();\n const key = selectionState.getStartKey();\n const blockMap = contentState.getBlockMap();\n const currentBlock = getCurrentBlock(editorState);\n if (!currentBlock) {\n return editorState;\n }\n if (currentBlock.getLength() === 0) {\n if (currentBlock.getType() === newType) {\n return editorState;\n }\n const newBlock = currentBlock.merge({\n type: newType,\n data: getDefaultBlockData(newType, initialData),\n });\n const newContentState = contentState.merge({\n blockMap: blockMap.set(key, newBlock),\n selectionAfter: selectionState,\n });\n return EditorState.push(editorState, newContentState, 'change-block-type');\n }\n return editorState;\n};\n\n\n/*\nChanges the block type of the current block.\n*/\nexport const resetBlockWithType = (editorState, newType = \"unstyled\", data={}) => {\n const contentState = editorState.getCurrentContent();\n const selectionState = editorState.getSelection();\n const key = selectionState.getStartKey();\n const blockMap = contentState.getBlockMap();\n const block = blockMap.get(key);\n\n let newText = '';\n console.log( \"DATA FOR PLACEHOLDER!\", data)\n const text = block.getText();\n if (block.getLength() >= 2) {\n newText = text.substr(1);\n }\n\n /*if(data.text){\n newText = data.text\n }*/\n\n //let newText = data.text\n\n const newBlock = block.merge({\n text: newText,\n type: newType,\n data: getDefaultBlockData(newType, data),\n });\n const newContentState = contentState.merge({\n blockMap: blockMap.set(key, newBlock),\n selectionAfter: selectionState.merge({\n anchorOffset: 0,\n focusOffset: 0,\n }),\n });\n return EditorState.push(editorState, newContentState, 'change-block-type');\n};\n\n\n/*\nUpdate block-level metadata of the given `block` to the `newData`/\n*/\nexport const updateDataOfBlock = (editorState, block, newData) => {\n const contentState = editorState.getCurrentContent();\n const newBlock = block.merge({\n data: newData,\n });\n const newContentState = contentState.merge({\n blockMap: contentState.getBlockMap().set(block.getKey(), newBlock),\n });\n return EditorState.push(editorState, newContentState, 'change-block-type');\n // return editorState;\n};\n\nexport const updateTextOfBlock = (editorState, block, text) => {\n const contentState = editorState.getCurrentContent();\n const newBlock = block.merge({\n text: text,\n });\n const newContentState = contentState.merge({\n blockMap: contentState.getBlockMap().set(block.getKey(), newBlock),\n });\n\n return EditorState.push(editorState, newContentState, 'change-block-type');\n // return editorState;\n};\n\n// const BEFORE = -1;\n// const AFTER = 1;\n\n/*\nUsed from [react-rte](https://github.com/sstur/react-rte/blob/master/src/lib/insertBlockAfter.js)\nby [sstur](https://github.com/sstur)\n*/\nexport const addNewBlockAt = (\n editorState,\n pivotBlockKey,\n newBlockType = \"unstyled\",\n initialData = {}\n ) => {\n const content = editorState.getCurrentContent();\n const blockMap = content.getBlockMap();\n const block = blockMap.get(pivotBlockKey);\n const blocksBefore = blockMap.toSeq().takeUntil((v) => (v === block));\n const blocksAfter = blockMap.toSeq().skipUntil((v) => (v === block)).rest();\n const newBlockKey = genKey();\n\n const newBlock = new ContentBlock({\n key: newBlockKey,\n type: newBlockType,\n text: '',\n characterList: block.getCharacterList().slice(0, 0),\n depth: 0,\n data: Map(getDefaultBlockData(newBlockType, initialData)),\n });\n\n const newBlockMap = blocksBefore.concat(\n [[pivotBlockKey, block], [newBlockKey, newBlock]],\n blocksAfter\n ).toOrderedMap();\n\n const selection = editorState.getSelection();\n\n const newContent = content.merge({\n blockMap: newBlockMap,\n selectionBefore: selection,\n selectionAfter: selection.merge({\n anchorKey: newBlockKey,\n anchorOffset: 0,\n focusKey: newBlockKey,\n focusOffset: 0,\n isBackward: false,\n }),\n });\n return EditorState.push(editorState, newContent, 'split-block');\n};\n\n\n\n// WEBPACK FOOTER //\n// src/model/index.js","module.exports = __webpack_public_path__ + \"fonts/dante.svg\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/styles/fonts/dante/dante.svg\n// module id = 399\n// module chunks = 0","module.exports = __webpack_public_path__ + \"fonts/dante.ttf\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/styles/fonts/dante/dante.ttf\n// module id = 400\n// module chunks = 0","module.exports = __webpack_public_path__ + \"fonts/dante.woff\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/styles/fonts/dante/dante.woff\n// module id = 401\n// module chunks = 0","module.exports = __webpack_public_path__ + \"fonts/fontello.svg\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/styles/fonts/dante/fontello.svg\n// module id = 402\n// module chunks = 0","module.exports = __webpack_public_path__ + \"fonts/fontello.ttf\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/styles/fonts/dante/fontello.ttf\n// module id = 403\n// module chunks = 0","module.exports = __webpack_public_path__ + \"fonts/fontello.woff\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/styles/fonts/dante/fontello.woff\n// module id = 404\n// module chunks = 0","/*\nReturns the `boundingClientRect` of the passed selection.\n*/\nexport const getSelectionRect = (selected) => {\n const _rect = selected.getRangeAt(0).getBoundingClientRect();\n // selected.getRangeAt(0).getBoundingClientRect()\n let rect = _rect && _rect.top ? _rect : selected.getRangeAt(0).getClientRects()[0];\n if (!rect) {\n if (selected.anchorNode && selected.anchorNode.getBoundingClientRect) {\n rect = selected.anchorNode.getBoundingClientRect();\n rect.isEmptyline = true;\n } else {\n return null;\n }\n }\n return rect;\n};\n\n/*\nReturns the native selection node.\n*/\nexport const getSelection = (root) => {\n let t = null;\n if (root.getSelection) {\n t = root.getSelection();\n } else if (root.document.getSelection) {\n t = root.document.getSelection();\n } else if (root.document.selection) {\n t = root.document.selection.createRange().text;\n }\n return t;\n};\n\n/*\nRecursively finds the DOM Element of the block where the cursor is currently present.\nIf not found, returns null.\n*/\nexport const getSelectedBlockNode = (root) => {\n const selection = root.getSelection();\n if (selection.rangeCount === 0) {\n return null;\n }\n let node = selection.getRangeAt(0).startContainer;\n // console.log(node);\n do {\n if (node.getAttribute && node.getAttribute('data-block') === 'true') {\n return node;\n }\n node = node.parentNode;\n // console.log(node);\n } while (node !== null);\n return null;\n};\n\n\n\n// WEBPACK FOOTER //\n// src/utils/selection.js"],"mappings":";;;;;;;;AAAA;;;;;;;;ACAA;;;;;;;ACAA;;;;;;;;;;ACCA;AACA;;;AAAA;AACA;;;;;AAEA;AACA;AACA;AAFA;;;;;;;ACLA;;;;;;;;;;ACAA;AACA;AAAA;;;;;;;;;;ACDA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACCA;AACA;;;AAAA;AACA;;;AACA;AACA;AACA;AACA;;;AACA;AACA;;;AACA;;;AACA;AAAA;AACA;AACA;AACA;AAHA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAFA;AAPA;AAWA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AACA;AAIA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAJA;AAQA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAKA;AAAA;AAAA;AACA;AADA;AAGA;AAAA;AAAA;AACA;AADA;AARA;AAWA;AAzBA;AA4BA;;;AAjHA;AACA;AADA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVA;AACA;;;AAAA;AACA;;;AACA;AACA;AAMA;AACA;;;AACA;AACA;;;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAXA;AA3BA;AAwCA;AACA;;;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAIA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AACA;AAKA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AAHA;AAKA;;;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAFA;AACA;AAIA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA;AACA;AACA;AAFA;AAIA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAXA;AAaA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AADA;AAGA;AACA;AANA;AAdA;AAyBA;;;AA3VA;AACA;AADA;AACA;AA6VA;;;;;;;;;;AAEA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AADA;AACA;AADA;AAHA;AADA;AAFA;AAgBA;;;AApBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3WA;AACA;;;AAAA;AACA;;;AACA;AACA;;;AACA;;;AACA;AAAA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAPA;AAWA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAFA;AAFA;AAQA;;;AA3DA;AACA;AADA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLA;AACA;;;AAAA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AACA;;;AACA;AAAA;AACA;AACA;AACA;AAHA;AACA;AAGA;AACA;AACA;AANA;AAOA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AAAA;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AADA;AAHA;AAQA;;;AAnEA;AACA;AADA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVA;AACA;;;;;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAZA;AAgBA;AACA;;;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AAEA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AADA;AADA;AAKA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AADA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AADA;AAVA;AADA;AAgBA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAJA;AAFA;AAjBA;AA8BA;;;AAjGA;AACA;AAmGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtGA;AACA;;;AAAA;AACA;;;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAOA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AAPA;AAUA;;;AA1DA;AACA;AADA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHA;AACA;;;AAAA;AACA;;;AACA;AACA;AAMA;AACA;AAMA;AACA;;;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAjBA;AAsBA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AAHA;AACA;AAKA;AACA;;;AAEA;AACA;AACA;AACA;AAFA;AACA;AAIA;AACA;;;AAEA;AACA;AACA;AACA;;;;AAIA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AACA;AAIA;;;;;;;;;;;;;;;;AAiBA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AAFA;AAIA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAJA;AAMA;AANA;AAQA;AAAA;AAAA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AAHA;AAKA;AAEA;AACA;AACA;AACA;AACA;AACA;AALA;AAZA;AAZA;AAkCA;;;AA7QA;AACA;AA+QA;;;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AACA;AACA;AAFA;AAGA;AACA;;;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AAHA;AAKA;AALA;AAQA;;;AAtBA;AACA;AAwBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3TA;AACA;;;AAAA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAPA;AAZA;AAwBA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAEA;AALA;AAQA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AAPA;AADA;AAYA;AApBA;AAuBA;;;AAvJA;AACA;AAyJA;;;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AACA;AACA;AACA;AAHA;AAIA;AACA;;;AACA;AACA;AACA;AACA;;;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAKA;;;AAnBA;AACA;AAqBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzLA;AACA;;;AAAA;AACA;;;AACA;AACA;;;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AANA;AARA;AAgBA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AADA;AADA;AAKA;AAZA;AAeA;;;AAhGA;AACA;AAkGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzGA;AACA;;;AAAA;AACA;;;AACA;AACA;AAYA;AACA;AACA;AACA;;;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAlBA;AAuBA;AACA;;;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AAFA;AAIA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAFA;AAOA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AAFA;AAIA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AAJA;AAMA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AARA;AAUA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;AAEA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AAxBA;AAhBA;AA6CA;;;AAvSA;AACA;AAySA;;;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAQA;AACA;;;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAAA;AACA;AADA;AAIA;;;AAxDA;AACA;AA0DA;;;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AACA;AACA;AAFA;AAGA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AADA;AAIA;;;AApBA;AACA;AAsBA;;;;;;;;;;;;;;AChZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AChBA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAHA;AAQA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;AC9HA;AACA;;;AAAA;AACA;;;;;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;AAEA;AACA;AACA;AACA;AAGA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AATA;AAYA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAGA;AACA;AAAA;AAAA;AACA;AAEA;;;;;AAIA;;;;;;;;;;;;;;;AC/HA;AACA;AAGA;AACA;AAEA;;;;;AAKA;;;AAGA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AAFA;AAIA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AAEA;;;AAGA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AAFA;AAFA;AAOA;AACA;AACA;AAEA;;;AAGA;AACA;AACA;AACA;AADA;AAGA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;AADA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AAKA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AACA;AAQA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAHA;AAWA;AACA;;;;;;;ACjMA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;A","sourceRoot":""}
|
data/docs/doc.html
CHANGED
data/docs/index.html
CHANGED
data/docs/license.html
CHANGED
data/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "Dante2",
|
3
|
-
"version": "0.3.
|
3
|
+
"version": "0.3.6",
|
4
4
|
"description": "Dante wysiwyg rewritten in draft-js",
|
5
5
|
"author": "Miguel Michelson",
|
6
6
|
"license": "GPL-3.0",
|
@@ -60,18 +60,18 @@
|
|
60
60
|
"eslint": "1.7.2",
|
61
61
|
"eslint-loader": "1.1.0",
|
62
62
|
"expose-loader": "^0.7.1",
|
63
|
-
"extract-text-webpack-plugin": "
|
63
|
+
"extract-text-webpack-plugin": "2.1.2",
|
64
64
|
"file-loader": "^0.9.0",
|
65
65
|
"fs-promise": "^1.0.0",
|
66
66
|
"html-webpack-plugin": "^2.24.1",
|
67
67
|
"lodash": "^4.17.4",
|
68
68
|
"mocha": "2.3.4",
|
69
|
-
"node-sass": "^4.3
|
69
|
+
"node-sass": "^4.5.3",
|
70
70
|
"rimraf": "^2.5.4",
|
71
71
|
"sass-loader": "^4.0.2",
|
72
72
|
"style-loader": "^0.13.1",
|
73
|
-
"webpack": "
|
74
|
-
"webpack-dev-server": "^
|
73
|
+
"webpack": "^2.2.1",
|
74
|
+
"webpack-dev-server": "^2.2.1",
|
75
75
|
"yargs": "3.32.0"
|
76
76
|
},
|
77
77
|
"repository": {
|
@@ -30,6 +30,7 @@ export default class ImageBlock extends React.Component {
|
|
30
30
|
this.handleGrafFigureSelectImg = this.handleGrafFigureSelectImg.bind(this)
|
31
31
|
this.getUploadUrl = this.getUploadUrl.bind(this)
|
32
32
|
this.uploadFile = this.uploadFile.bind(this)
|
33
|
+
this.uploadFailed = this.uploadFailed.bind(this)
|
33
34
|
this.uploadCompleted = this.uploadCompleted.bind(this)
|
34
35
|
this.updateProgressBar = this.updateProgressBar.bind(this)
|
35
36
|
this.placeHolderEnabled = this.placeHolderEnabled.bind(this)
|
@@ -255,6 +256,11 @@ export default class ImageBlock extends React.Component {
|
|
255
256
|
|
256
257
|
uploadFile() {
|
257
258
|
let handleUp
|
259
|
+
// custom upload handler
|
260
|
+
if (this.config.upload_handler) {
|
261
|
+
return this.config.upload_handler(this.formatData().get('file'), this)
|
262
|
+
}
|
263
|
+
|
258
264
|
axios({
|
259
265
|
method: 'post',
|
260
266
|
url: this.getUploadUrl(),
|
@@ -264,17 +270,13 @@ export default class ImageBlock extends React.Component {
|
|
264
270
|
return this.updateProgressBar(e)
|
265
271
|
}
|
266
272
|
}).then(result => {
|
267
|
-
this.uploadCompleted(result.data)
|
268
|
-
this.props.blockProps.removeLock()
|
269
|
-
this.stopLoader()
|
270
|
-
this.file = null
|
273
|
+
this.uploadCompleted(result.data.url)
|
271
274
|
|
272
275
|
if (this.config.upload_callback) {
|
273
276
|
return this.config.upload_callback(result, this)
|
274
277
|
}
|
275
278
|
}).catch(error => {
|
276
|
-
this.
|
277
|
-
this.stopLoader()
|
279
|
+
this.uploadFailed()
|
278
280
|
|
279
281
|
console.log(`ERROR: got error uploading file ${ error }`)
|
280
282
|
if (this.config.upload_error_callback) {
|
@@ -283,12 +285,20 @@ export default class ImageBlock extends React.Component {
|
|
283
285
|
})
|
284
286
|
|
285
287
|
return handleUp = json_response => {
|
286
|
-
return this.uploadCompleted(json_response, n)
|
288
|
+
return this.uploadCompleted(json_response.url, n)
|
287
289
|
}
|
288
290
|
}
|
289
291
|
|
290
|
-
|
291
|
-
|
292
|
+
uploadFailed() {
|
293
|
+
this.props.blockProps.removeLock()
|
294
|
+
this.stopLoader()
|
295
|
+
}
|
296
|
+
|
297
|
+
uploadCompleted(url) {
|
298
|
+
this.setState({ url }, this.updateData)
|
299
|
+
this.props.blockProps.removeLock()
|
300
|
+
this.stopLoader()
|
301
|
+
this.file = null
|
292
302
|
}
|
293
303
|
|
294
304
|
updateProgressBar(e) {
|
@@ -310,7 +320,7 @@ export default class ImageBlock extends React.Component {
|
|
310
320
|
if (this.placeHolderEnabled()) {
|
311
321
|
return ""
|
312
322
|
}
|
313
|
-
return
|
323
|
+
return this.config.image_caption_placeholder
|
314
324
|
}
|
315
325
|
|
316
326
|
handleFocus(e) {
|
@@ -375,3 +385,4 @@ class Loader extends React.Component {
|
|
375
385
|
}
|
376
386
|
}
|
377
387
|
|
388
|
+
|
data/src/components/dante.js
CHANGED
@@ -92,9 +92,10 @@ class Dante {
|
|
92
92
|
upload_url: options.upload_url,
|
93
93
|
upload_headers: options.upload_headers,
|
94
94
|
upload_formName: options.upload_formName,
|
95
|
+
upload_handler: options.image_upload_handler,
|
95
96
|
upload_callback: options.image_upload_callback,
|
96
97
|
image_delete_callback: options.image_delete_callback,
|
97
|
-
image_caption_placeholder: options.image_caption_placeholder
|
98
|
+
image_caption_placeholder: options.image_caption_placeholder || "Write caption for image (optional)"
|
98
99
|
}
|
99
100
|
}, {
|
100
101
|
icon: 'embed',
|
@@ -179,30 +180,31 @@ class Dante {
|
|
179
180
|
ref: 'insert_tooltip',
|
180
181
|
component: DanteTooltip,
|
181
182
|
displayOnSelection: true,
|
182
|
-
selectionElements: [
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
'header-four'],
|
183
|
+
selectionElements: ["unstyled",
|
184
|
+
"blockquote",
|
185
|
+
"ordered-list",
|
186
|
+
"unordered-list",
|
187
|
+
"unordered-list-item",
|
188
|
+
"ordered-list-item",
|
189
|
+
"code-block",
|
190
|
+
'header-one',
|
191
|
+
'header-two',
|
192
|
+
'header-three',
|
193
|
+
'header-four'],
|
194
194
|
widget_options: {
|
195
|
+
placeholder: "Paste or type a link",
|
195
196
|
block_types: [
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
197
|
+
// {label: 'p', style: 'unstyled'},
|
198
|
+
{ label: 'h2', style: 'header-one', type: "block" },
|
199
|
+
{ label: 'h3', style: 'header-two', type: "block" },
|
200
|
+
{ label: 'h4', style: 'header-three', type: "block" },
|
201
|
+
{ label: 'blockquote', style: 'blockquote', type: "block" },
|
202
|
+
{ label: 'insertunorderedlist', style: 'unordered-list-item', type: "block" },
|
203
|
+
{ label: 'insertorderedlist', style: 'ordered-list-item', type: "block" },
|
204
|
+
{ label: 'code', style: 'code-block', type: "block" },
|
205
|
+
{ label: 'bold', style: 'BOLD', type: "inline" },
|
206
|
+
{ label: 'italic', style: 'ITALIC', type: "inline" }
|
207
|
+
]
|
206
208
|
}
|
207
209
|
}, {
|
208
210
|
ref: 'add_tooltip',
|
@@ -226,7 +226,6 @@ class DanteEditor extends React.Component {
|
|
226
226
|
if (!this.tooltipHasSelectionElement(tooltip, blockType)) {
|
227
227
|
return
|
228
228
|
}
|
229
|
-
|
230
229
|
this.handleTooltipDisplayOn('displayOnSelection')
|
231
230
|
} else {
|
232
231
|
this.handleTooltipDisplayOn('displayOnSelection', false)
|
@@ -403,6 +402,7 @@ class DanteEditor extends React.Component {
|
|
403
402
|
if (display == null) {
|
404
403
|
display = true
|
405
404
|
}
|
405
|
+
|
406
406
|
return setTimeout(() => {
|
407
407
|
const items = this.tooltipsWithProp(prop)
|
408
408
|
return items.map(o => {
|
@@ -791,6 +791,9 @@ class DanteEditor extends React.Component {
|
|
791
791
|
}
|
792
792
|
|
793
793
|
relocateTooltips() {
|
794
|
+
if (this.state.read_only)
|
795
|
+
return
|
796
|
+
|
794
797
|
return this.tooltips.map(o => {
|
795
798
|
return this.refs[o.ref].relocate()
|
796
799
|
})
|
@@ -278,7 +278,7 @@ class DanteTooltip extends React.Component {
|
|
278
278
|
<input
|
279
279
|
className="dante-menu-input"
|
280
280
|
ref="dante_menu_input"
|
281
|
-
placeholder=
|
281
|
+
placeholder={this.props.widget_options.placeholder}
|
282
282
|
onKeyPress={ this.handleInputEnter }
|
283
283
|
defaultValue={ this.getDefaultValue() }
|
284
284
|
/>
|
data/webpack/base.config.js
CHANGED
@@ -17,7 +17,7 @@ export const options = yargs
|
|
17
17
|
})
|
18
18
|
.argv;
|
19
19
|
|
20
|
-
export const jsLoader = 'babel?cacheDirectory';
|
20
|
+
export const jsLoader = 'babel-loader?cacheDirectory';
|
21
21
|
|
22
22
|
const baseConfig = {
|
23
23
|
entry: undefined,
|
@@ -27,35 +27,40 @@ const baseConfig = {
|
|
27
27
|
externals: undefined,
|
28
28
|
|
29
29
|
resolve: {
|
30
|
-
|
31
|
-
|
30
|
+
modules: [
|
31
|
+
path.resolve('./src'),
|
32
|
+
//path.join(__dirname, "src"),
|
33
|
+
"node_modules"
|
34
|
+
],
|
35
|
+
extensions: ['.js', '.jsx', '.es6', '.css', '.scss']
|
32
36
|
},
|
33
37
|
|
34
38
|
module: {
|
35
|
-
|
39
|
+
rules: [
|
36
40
|
{ test: /\.js/, loader: jsLoader, exclude: /node_modules/ },
|
37
41
|
{
|
38
42
|
test: /\.css$/,
|
39
|
-
loader: ExtractTextPlugin.extract(
|
43
|
+
loader: ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader' })
|
40
44
|
},
|
41
45
|
{
|
42
46
|
test: /\.scss$/,
|
43
|
-
loader: ExtractTextPlugin.extract(
|
47
|
+
loader: ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader!sass-loader' })
|
44
48
|
},
|
45
49
|
|
46
50
|
{ test: path.resolve("./src/components/dante_editor.js"),
|
47
|
-
loaders: ["expose?DanteEditor", "babel-loader?presets[]=es2015"]},
|
51
|
+
loaders: ["expose-loader?DanteEditor", "babel-loader?presets[]=es2015"]},
|
52
|
+
|
48
53
|
{ test: path.resolve("./src/components/dante.js"),
|
49
|
-
loaders: ["expose?Dante", "babel-loader?presets[]=es2015"]},
|
54
|
+
loaders: ["expose-loader?Dante", "babel-loader?presets[]=es2015"]},
|
50
55
|
|
51
56
|
{
|
52
57
|
test: /\.(eot|svg|ttf|woff|woff2)$/,
|
53
|
-
loader: 'file?name=fonts/[name].[ext]',
|
58
|
+
loader: 'file-loader?name=fonts/[name].[ext]',
|
54
59
|
exclude: /node_modules/
|
55
60
|
},
|
56
61
|
{
|
57
62
|
test: /\.(png|jpg)$/,
|
58
|
-
loader:'file?limit=1024&name=images/[name].[ext]'
|
63
|
+
loader:'file-loader?limit=1024&name=images/[name].[ext]'
|
59
64
|
}
|
60
65
|
|
61
66
|
]
|
data/webpack/docs.config.js
CHANGED
@@ -93,7 +93,7 @@ var config = {
|
|
93
93
|
|
94
94
|
devtool: 'cheap-module-source-map',
|
95
95
|
output: {
|
96
|
-
path: './docs',
|
96
|
+
path: path.resolve('./docs'),
|
97
97
|
filename: '[name].js',
|
98
98
|
chunkFilename: "[id].js"
|
99
99
|
//filename: outputFile,
|
@@ -102,11 +102,16 @@ var config = {
|
|
102
102
|
//umdNamedDefine: true
|
103
103
|
},
|
104
104
|
resolve: {
|
105
|
-
|
106
|
-
|
105
|
+
|
106
|
+
modules: [
|
107
|
+
path.resolve('./src'),
|
108
|
+
//path.join(__dirname, "src"),
|
109
|
+
"node_modules"
|
110
|
+
],
|
111
|
+
extensions: ['.js', '.jsx', '.es6', '.cjsx', '.coffee', '.css', '.scss']
|
107
112
|
},
|
108
113
|
module: {
|
109
|
-
|
114
|
+
rules: [
|
110
115
|
{
|
111
116
|
test: /(\.jsx|\.js|\.es6)$/,
|
112
117
|
loader: 'babel-loader',
|
@@ -118,26 +123,26 @@ var config = {
|
|
118
123
|
},
|
119
124
|
|
120
125
|
{ test: path.resolve("./src/components/dante_editor.js"),
|
121
|
-
loaders: ["expose?DanteEditor", "babel-loader?presets[]=es2015"]},
|
126
|
+
loaders: ["expose-loader?DanteEditor", "babel-loader?presets[]=es2015"]},
|
122
127
|
{ test: path.resolve("./src/components/dante.js"),
|
123
|
-
loaders: ["expose?Dante", "babel-loader?presets[]=es2015"]},
|
128
|
+
loaders: ["expose-loader?Dante", "babel-loader?presets[]=es2015"]},
|
124
129
|
|
125
130
|
{
|
126
131
|
test: /\.css$/,
|
127
|
-
loader: ExtractTextPlugin.extract(
|
132
|
+
loader: ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader' })
|
128
133
|
},
|
129
134
|
{
|
130
135
|
test: /\.scss$/,
|
131
|
-
loader: ExtractTextPlugin.extract(
|
136
|
+
loader: ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader!sass-loader' })
|
132
137
|
},
|
133
138
|
{
|
134
139
|
test: /\.(eot|svg|ttf|woff|woff2)$/,
|
135
|
-
loader: 'file?name=fonts/[name].[ext]',
|
140
|
+
loader: 'file-loader?name=fonts/[name].[ext]',
|
136
141
|
exclude: /node_modules/
|
137
142
|
},
|
138
143
|
{
|
139
144
|
test: /\.(png|jpg)$/,
|
140
|
-
loader:'file?limit=1024&name=images/[name].[ext]'
|
145
|
+
loader:'file-loader?limit=1024&name=images/[name].[ext]'
|
141
146
|
}
|
142
147
|
]
|
143
148
|
},
|
data/webpack/webpack.config.js
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
import baseConfig, { options } from './base.config';
|
2
2
|
import webpack from 'webpack';
|
3
|
+
var path = require('path');
|
3
4
|
|
4
5
|
var ExtractTextPlugin = require("extract-text-webpack-plugin");
|
5
6
|
var HtmlWebpackPlugin = require('html-webpack-plugin');
|
@@ -56,7 +57,7 @@ export default {
|
|
56
57
|
},
|
57
58
|
|
58
59
|
output: {
|
59
|
-
path: './dist',
|
60
|
+
path: path.resolve('./dist'),
|
60
61
|
filename: options.optimizeMinimize ? '[name].min.js' : '[name].js',
|
61
62
|
library: 'Dante2',
|
62
63
|
libraryTarget: 'umd',
|
data/yarn.lock
CHANGED
@@ -2,10 +2,6 @@
|
|
2
2
|
# yarn lockfile v1
|
3
3
|
|
4
4
|
|
5
|
-
Base64@~0.2.0:
|
6
|
-
version "0.2.1"
|
7
|
-
resolved "https://registry.yarnpkg.com/Base64/-/Base64-0.2.1.tgz#ba3a4230708e186705065e66babdd4c35cf60028"
|
8
|
-
|
9
5
|
abbrev@1:
|
10
6
|
version "1.0.9"
|
11
7
|
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
|
@@ -17,6 +13,40 @@ accepts@~1.3.3:
|
|
17
13
|
mime-types "~2.1.11"
|
18
14
|
negotiator "0.6.1"
|
19
15
|
|
16
|
+
acorn-dynamic-import@^2.0.0:
|
17
|
+
version "2.0.2"
|
18
|
+
resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4"
|
19
|
+
dependencies:
|
20
|
+
acorn "^4.0.3"
|
21
|
+
|
22
|
+
acorn@^4.0.3:
|
23
|
+
version "4.0.13"
|
24
|
+
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
|
25
|
+
|
26
|
+
acorn@^5.0.0:
|
27
|
+
version "5.1.1"
|
28
|
+
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.1.tgz#53fe161111f912ab999ee887a90a0bc52822fd75"
|
29
|
+
|
30
|
+
ajv-keywords@^1.1.1:
|
31
|
+
version "1.5.1"
|
32
|
+
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
|
33
|
+
|
34
|
+
ajv@^4.7.0:
|
35
|
+
version "4.11.8"
|
36
|
+
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
|
37
|
+
dependencies:
|
38
|
+
co "^4.6.0"
|
39
|
+
json-stable-stringify "^1.0.1"
|
40
|
+
|
41
|
+
ajv@^5.0.0:
|
42
|
+
version "5.2.2"
|
43
|
+
resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.2.tgz#47c68d69e86f5d953103b0074a9430dc63da5e39"
|
44
|
+
dependencies:
|
45
|
+
co "^4.6.0"
|
46
|
+
fast-deep-equal "^1.0.0"
|
47
|
+
json-schema-traverse "^0.3.0"
|
48
|
+
json-stable-stringify "^1.0.1"
|
49
|
+
|
20
50
|
align-text@^0.1.1, align-text@^0.1.3:
|
21
51
|
version "0.1.4"
|
22
52
|
resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
|
@@ -33,6 +63,10 @@ amdefine@>=0.0.4:
|
|
33
63
|
version "1.0.1"
|
34
64
|
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
|
35
65
|
|
66
|
+
ansi-html@0.0.7:
|
67
|
+
version "0.0.7"
|
68
|
+
resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
|
69
|
+
|
36
70
|
ansi-regex@^1.0.0:
|
37
71
|
version "1.1.1"
|
38
72
|
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-1.1.1.tgz#41c847194646375e6a1a5d10c3ca054ef9fc980d"
|
@@ -91,6 +125,10 @@ array-flatten@1.1.1:
|
|
91
125
|
version "1.1.1"
|
92
126
|
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
|
93
127
|
|
128
|
+
array-flatten@^2.1.0:
|
129
|
+
version "2.1.1"
|
130
|
+
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296"
|
131
|
+
|
94
132
|
array-union@^1.0.1:
|
95
133
|
version "1.0.2"
|
96
134
|
resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
|
@@ -113,6 +151,14 @@ asap@~2.0.3:
|
|
113
151
|
version "2.0.5"
|
114
152
|
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f"
|
115
153
|
|
154
|
+
asn1.js@^4.0.0:
|
155
|
+
version "4.9.1"
|
156
|
+
resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40"
|
157
|
+
dependencies:
|
158
|
+
bn.js "^4.0.0"
|
159
|
+
inherits "^2.0.1"
|
160
|
+
minimalistic-assert "^1.0.0"
|
161
|
+
|
116
162
|
asn1@~0.2.3:
|
117
163
|
version "0.2.3"
|
118
164
|
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
|
@@ -143,15 +189,11 @@ async-foreach@^0.1.3:
|
|
143
189
|
version "0.1.3"
|
144
190
|
resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542"
|
145
191
|
|
146
|
-
async@^0.
|
147
|
-
version "0.9.2"
|
148
|
-
resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
|
149
|
-
|
150
|
-
async@^1.3.0, async@^1.4.0, async@^1.5.0:
|
192
|
+
async@^1.4.0, async@^1.5.2:
|
151
193
|
version "1.5.2"
|
152
194
|
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
|
153
195
|
|
154
|
-
async@^2.0.1:
|
196
|
+
async@^2.0.1, async@^2.1.2:
|
155
197
|
version "2.1.4"
|
156
198
|
resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4"
|
157
199
|
dependencies:
|
@@ -950,6 +992,21 @@ bluebird@^3.4.7:
|
|
950
992
|
version "3.4.7"
|
951
993
|
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3"
|
952
994
|
|
995
|
+
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
|
996
|
+
version "4.11.7"
|
997
|
+
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.7.tgz#ddb048e50d9482790094c13eb3fcfc833ce7ab46"
|
998
|
+
|
999
|
+
bonjour@^3.5.0:
|
1000
|
+
version "3.5.0"
|
1001
|
+
resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
|
1002
|
+
dependencies:
|
1003
|
+
array-flatten "^2.1.0"
|
1004
|
+
deep-equal "^1.0.1"
|
1005
|
+
dns-equal "^1.0.0"
|
1006
|
+
dns-txt "^2.0.2"
|
1007
|
+
multicast-dns "^6.0.1"
|
1008
|
+
multicast-dns-service-types "^1.1.0"
|
1009
|
+
|
953
1010
|
boolbase@~1.0.0:
|
954
1011
|
version "1.0.0"
|
955
1012
|
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
|
@@ -975,7 +1032,56 @@ braces@^1.8.2:
|
|
975
1032
|
preserve "^0.2.0"
|
976
1033
|
repeat-element "^1.1.2"
|
977
1034
|
|
978
|
-
|
1035
|
+
brorand@^1.0.1:
|
1036
|
+
version "1.1.0"
|
1037
|
+
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
|
1038
|
+
|
1039
|
+
browserify-aes@^1.0.0, browserify-aes@^1.0.4:
|
1040
|
+
version "1.0.6"
|
1041
|
+
resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a"
|
1042
|
+
dependencies:
|
1043
|
+
buffer-xor "^1.0.2"
|
1044
|
+
cipher-base "^1.0.0"
|
1045
|
+
create-hash "^1.1.0"
|
1046
|
+
evp_bytestokey "^1.0.0"
|
1047
|
+
inherits "^2.0.1"
|
1048
|
+
|
1049
|
+
browserify-cipher@^1.0.0:
|
1050
|
+
version "1.0.0"
|
1051
|
+
resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a"
|
1052
|
+
dependencies:
|
1053
|
+
browserify-aes "^1.0.4"
|
1054
|
+
browserify-des "^1.0.0"
|
1055
|
+
evp_bytestokey "^1.0.0"
|
1056
|
+
|
1057
|
+
browserify-des@^1.0.0:
|
1058
|
+
version "1.0.0"
|
1059
|
+
resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd"
|
1060
|
+
dependencies:
|
1061
|
+
cipher-base "^1.0.1"
|
1062
|
+
des.js "^1.0.0"
|
1063
|
+
inherits "^2.0.1"
|
1064
|
+
|
1065
|
+
browserify-rsa@^4.0.0:
|
1066
|
+
version "4.0.1"
|
1067
|
+
resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
|
1068
|
+
dependencies:
|
1069
|
+
bn.js "^4.1.0"
|
1070
|
+
randombytes "^2.0.1"
|
1071
|
+
|
1072
|
+
browserify-sign@^4.0.0:
|
1073
|
+
version "4.0.4"
|
1074
|
+
resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"
|
1075
|
+
dependencies:
|
1076
|
+
bn.js "^4.1.1"
|
1077
|
+
browserify-rsa "^4.0.0"
|
1078
|
+
create-hash "^1.1.0"
|
1079
|
+
create-hmac "^1.1.2"
|
1080
|
+
elliptic "^6.0.0"
|
1081
|
+
inherits "^2.0.1"
|
1082
|
+
parse-asn1 "^5.0.0"
|
1083
|
+
|
1084
|
+
browserify-zlib@^0.1.4:
|
979
1085
|
version "0.1.4"
|
980
1086
|
resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d"
|
981
1087
|
dependencies:
|
@@ -987,11 +1093,19 @@ browserslist@^1.0.1, browserslist@^1.5.2, browserslist@~1.5.1:
|
|
987
1093
|
dependencies:
|
988
1094
|
caniuse-db "^1.0.30000604"
|
989
1095
|
|
1096
|
+
buffer-indexof@^1.0.0:
|
1097
|
+
version "1.1.0"
|
1098
|
+
resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.0.tgz#f54f647c4f4e25228baa656a2e57e43d5f270982"
|
1099
|
+
|
990
1100
|
buffer-shims@^1.0.0:
|
991
1101
|
version "1.0.0"
|
992
1102
|
resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
|
993
1103
|
|
994
|
-
buffer@^
|
1104
|
+
buffer-xor@^1.0.2:
|
1105
|
+
version "1.0.3"
|
1106
|
+
resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
|
1107
|
+
|
1108
|
+
buffer@^4.3.0:
|
995
1109
|
version "4.9.1"
|
996
1110
|
resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
|
997
1111
|
dependencies:
|
@@ -1003,6 +1117,10 @@ builtin-modules@^1.0.0:
|
|
1003
1117
|
version "1.1.1"
|
1004
1118
|
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
|
1005
1119
|
|
1120
|
+
builtin-status-codes@^3.0.0:
|
1121
|
+
version "3.0.0"
|
1122
|
+
resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
|
1123
|
+
|
1006
1124
|
bytes@2.3.0:
|
1007
1125
|
version "2.3.0"
|
1008
1126
|
resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070"
|
@@ -1099,6 +1217,28 @@ chokidar@^1.0.0:
|
|
1099
1217
|
optionalDependencies:
|
1100
1218
|
fsevents "^1.0.0"
|
1101
1219
|
|
1220
|
+
chokidar@^1.6.0, chokidar@^1.7.0:
|
1221
|
+
version "1.7.0"
|
1222
|
+
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
|
1223
|
+
dependencies:
|
1224
|
+
anymatch "^1.3.0"
|
1225
|
+
async-each "^1.0.0"
|
1226
|
+
glob-parent "^2.0.0"
|
1227
|
+
inherits "^2.0.1"
|
1228
|
+
is-binary-path "^1.0.0"
|
1229
|
+
is-glob "^2.0.0"
|
1230
|
+
path-is-absolute "^1.0.0"
|
1231
|
+
readdirp "^2.0.0"
|
1232
|
+
optionalDependencies:
|
1233
|
+
fsevents "^1.0.0"
|
1234
|
+
|
1235
|
+
cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
|
1236
|
+
version "1.0.4"
|
1237
|
+
resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
|
1238
|
+
dependencies:
|
1239
|
+
inherits "^2.0.1"
|
1240
|
+
safe-buffer "^5.0.1"
|
1241
|
+
|
1102
1242
|
circular-json@^0.3.1:
|
1103
1243
|
version "0.3.1"
|
1104
1244
|
resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d"
|
@@ -1140,6 +1280,10 @@ clone@^1.0.2:
|
|
1140
1280
|
version "1.0.2"
|
1141
1281
|
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149"
|
1142
1282
|
|
1283
|
+
co@^4.6.0:
|
1284
|
+
version "4.6.0"
|
1285
|
+
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
|
1286
|
+
|
1143
1287
|
coa@~1.0.1:
|
1144
1288
|
version "1.0.1"
|
1145
1289
|
resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3"
|
@@ -1259,9 +1403,9 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0:
|
|
1259
1403
|
version "1.1.0"
|
1260
1404
|
resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
|
1261
1405
|
|
1262
|
-
constants-browserify
|
1263
|
-
version "0.0
|
1264
|
-
resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-0.0.
|
1406
|
+
constants-browserify@^1.0.0:
|
1407
|
+
version "1.0.0"
|
1408
|
+
resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
|
1265
1409
|
|
1266
1410
|
content-disposition@0.5.1:
|
1267
1411
|
version "0.5.1"
|
@@ -1295,6 +1439,33 @@ core-util-is@~1.0.0:
|
|
1295
1439
|
version "1.0.2"
|
1296
1440
|
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
1297
1441
|
|
1442
|
+
create-ecdh@^4.0.0:
|
1443
|
+
version "4.0.0"
|
1444
|
+
resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d"
|
1445
|
+
dependencies:
|
1446
|
+
bn.js "^4.1.0"
|
1447
|
+
elliptic "^6.0.0"
|
1448
|
+
|
1449
|
+
create-hash@^1.1.0, create-hash@^1.1.1, create-hash@^1.1.2:
|
1450
|
+
version "1.1.3"
|
1451
|
+
resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd"
|
1452
|
+
dependencies:
|
1453
|
+
cipher-base "^1.0.1"
|
1454
|
+
inherits "^2.0.1"
|
1455
|
+
ripemd160 "^2.0.0"
|
1456
|
+
sha.js "^2.4.0"
|
1457
|
+
|
1458
|
+
create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
|
1459
|
+
version "1.1.6"
|
1460
|
+
resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06"
|
1461
|
+
dependencies:
|
1462
|
+
cipher-base "^1.0.3"
|
1463
|
+
create-hash "^1.1.0"
|
1464
|
+
inherits "^2.0.1"
|
1465
|
+
ripemd160 "^2.0.0"
|
1466
|
+
safe-buffer "^5.0.1"
|
1467
|
+
sha.js "^2.4.8"
|
1468
|
+
|
1298
1469
|
cross-env@^3.1.4:
|
1299
1470
|
version "3.1.4"
|
1300
1471
|
resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-3.1.4.tgz#56e8bca96f17908a6eb1bc2012ca126f92842130"
|
@@ -1321,13 +1492,20 @@ cryptiles@2.x.x:
|
|
1321
1492
|
dependencies:
|
1322
1493
|
boom "2.x.x"
|
1323
1494
|
|
1324
|
-
crypto-browserify
|
1325
|
-
version "3.
|
1326
|
-
resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.
|
1495
|
+
crypto-browserify@^3.11.0:
|
1496
|
+
version "3.11.1"
|
1497
|
+
resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.1.tgz#948945efc6757a400d6e5e5af47194d10064279f"
|
1327
1498
|
dependencies:
|
1328
|
-
|
1329
|
-
|
1330
|
-
|
1499
|
+
browserify-cipher "^1.0.0"
|
1500
|
+
browserify-sign "^4.0.0"
|
1501
|
+
create-ecdh "^4.0.0"
|
1502
|
+
create-hash "^1.1.0"
|
1503
|
+
create-hmac "^1.1.0"
|
1504
|
+
diffie-hellman "^5.0.0"
|
1505
|
+
inherits "^2.0.1"
|
1506
|
+
pbkdf2 "^3.0.3"
|
1507
|
+
public-encrypt "^4.0.0"
|
1508
|
+
randombytes "^2.0.0"
|
1331
1509
|
|
1332
1510
|
css-color-names@0.0.4:
|
1333
1511
|
version "0.0.4"
|
@@ -1453,6 +1631,12 @@ debug@^2.1.1, debug@^2.2.0:
|
|
1453
1631
|
dependencies:
|
1454
1632
|
ms "0.7.2"
|
1455
1633
|
|
1634
|
+
debug@^2.6.8:
|
1635
|
+
version "2.6.8"
|
1636
|
+
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
|
1637
|
+
dependencies:
|
1638
|
+
ms "2.0.0"
|
1639
|
+
|
1456
1640
|
decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
|
1457
1641
|
version "1.2.0"
|
1458
1642
|
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
|
@@ -1463,6 +1647,10 @@ deep-eql@^0.1.3:
|
|
1463
1647
|
dependencies:
|
1464
1648
|
type-detect "0.1.1"
|
1465
1649
|
|
1650
|
+
deep-equal@^1.0.1:
|
1651
|
+
version "1.0.1"
|
1652
|
+
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
|
1653
|
+
|
1466
1654
|
deep-extend@~0.4.0:
|
1467
1655
|
version "0.4.1"
|
1468
1656
|
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253"
|
@@ -1487,6 +1675,17 @@ del@^2.0.2:
|
|
1487
1675
|
pinkie-promise "^2.0.0"
|
1488
1676
|
rimraf "^2.2.8"
|
1489
1677
|
|
1678
|
+
del@^3.0.0:
|
1679
|
+
version "3.0.0"
|
1680
|
+
resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5"
|
1681
|
+
dependencies:
|
1682
|
+
globby "^6.1.0"
|
1683
|
+
is-path-cwd "^1.0.0"
|
1684
|
+
is-path-in-cwd "^1.0.0"
|
1685
|
+
p-map "^1.1.1"
|
1686
|
+
pify "^3.0.0"
|
1687
|
+
rimraf "^2.2.8"
|
1688
|
+
|
1490
1689
|
delayed-stream@~1.0.0:
|
1491
1690
|
version "1.0.0"
|
1492
1691
|
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
@@ -1499,6 +1698,13 @@ depd@~1.1.0:
|
|
1499
1698
|
version "1.1.0"
|
1500
1699
|
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3"
|
1501
1700
|
|
1701
|
+
des.js@^1.0.0:
|
1702
|
+
version "1.0.0"
|
1703
|
+
resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
|
1704
|
+
dependencies:
|
1705
|
+
inherits "^2.0.1"
|
1706
|
+
minimalistic-assert "^1.0.0"
|
1707
|
+
|
1502
1708
|
destroy@~1.0.4:
|
1503
1709
|
version "1.0.4"
|
1504
1710
|
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
|
@@ -1509,10 +1715,39 @@ detect-indent@^4.0.0:
|
|
1509
1715
|
dependencies:
|
1510
1716
|
repeating "^2.0.0"
|
1511
1717
|
|
1718
|
+
detect-node@^2.0.3:
|
1719
|
+
version "2.0.3"
|
1720
|
+
resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127"
|
1721
|
+
|
1512
1722
|
diff@1.4.0:
|
1513
1723
|
version "1.4.0"
|
1514
1724
|
resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf"
|
1515
1725
|
|
1726
|
+
diffie-hellman@^5.0.0:
|
1727
|
+
version "5.0.2"
|
1728
|
+
resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e"
|
1729
|
+
dependencies:
|
1730
|
+
bn.js "^4.1.0"
|
1731
|
+
miller-rabin "^4.0.0"
|
1732
|
+
randombytes "^2.0.0"
|
1733
|
+
|
1734
|
+
dns-equal@^1.0.0:
|
1735
|
+
version "1.0.0"
|
1736
|
+
resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
|
1737
|
+
|
1738
|
+
dns-packet@^1.0.1:
|
1739
|
+
version "1.1.1"
|
1740
|
+
resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.1.1.tgz#2369d45038af045f3898e6fa56862aed3f40296c"
|
1741
|
+
dependencies:
|
1742
|
+
ip "^1.1.0"
|
1743
|
+
safe-buffer "^5.0.1"
|
1744
|
+
|
1745
|
+
dns-txt@^2.0.2:
|
1746
|
+
version "2.0.2"
|
1747
|
+
resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6"
|
1748
|
+
dependencies:
|
1749
|
+
buffer-indexof "^1.0.0"
|
1750
|
+
|
1516
1751
|
doctrine@^0.7.0:
|
1517
1752
|
version "0.7.2"
|
1518
1753
|
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-0.7.2.tgz#7cb860359ba3be90e040b26b729ce4bfa654c523"
|
@@ -1589,6 +1824,18 @@ ee-first@1.1.1:
|
|
1589
1824
|
version "1.1.1"
|
1590
1825
|
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
1591
1826
|
|
1827
|
+
elliptic@^6.0.0:
|
1828
|
+
version "6.4.0"
|
1829
|
+
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df"
|
1830
|
+
dependencies:
|
1831
|
+
bn.js "^4.4.0"
|
1832
|
+
brorand "^1.0.1"
|
1833
|
+
hash.js "^1.0.0"
|
1834
|
+
hmac-drbg "^1.0.0"
|
1835
|
+
inherits "^2.0.1"
|
1836
|
+
minimalistic-assert "^1.0.0"
|
1837
|
+
minimalistic-crypto-utils "^1.0.0"
|
1838
|
+
|
1592
1839
|
emojis-list@^2.0.0:
|
1593
1840
|
version "2.1.0"
|
1594
1841
|
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
|
@@ -1603,13 +1850,14 @@ encoding@^0.1.11:
|
|
1603
1850
|
dependencies:
|
1604
1851
|
iconv-lite "~0.4.13"
|
1605
1852
|
|
1606
|
-
enhanced-resolve
|
1607
|
-
version "
|
1608
|
-
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-
|
1853
|
+
enhanced-resolve@^3.3.0:
|
1854
|
+
version "3.3.0"
|
1855
|
+
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz#950964ecc7f0332a42321b673b38dc8ff15535b3"
|
1609
1856
|
dependencies:
|
1610
1857
|
graceful-fs "^4.1.2"
|
1611
|
-
memory-fs "^0.
|
1612
|
-
|
1858
|
+
memory-fs "^0.4.0"
|
1859
|
+
object-assign "^4.0.1"
|
1860
|
+
tapable "^0.2.5"
|
1613
1861
|
|
1614
1862
|
entities@~1.1.1:
|
1615
1863
|
version "1.1.1"
|
@@ -1751,7 +1999,7 @@ espree@^2.2.4:
|
|
1751
1999
|
version "2.2.5"
|
1752
2000
|
resolved "https://registry.yarnpkg.com/espree/-/espree-2.2.5.tgz#df691b9310889402aeb29cc066708c56690b854b"
|
1753
2001
|
|
1754
|
-
esprima@^2.
|
2002
|
+
esprima@^2.6.0:
|
1755
2003
|
version "2.7.3"
|
1756
2004
|
resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
|
1757
2005
|
|
@@ -1801,12 +2049,18 @@ events@^1.0.0:
|
|
1801
2049
|
version "1.1.1"
|
1802
2050
|
resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
|
1803
2051
|
|
1804
|
-
eventsource
|
2052
|
+
eventsource@0.1.6:
|
1805
2053
|
version "0.1.6"
|
1806
2054
|
resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232"
|
1807
2055
|
dependencies:
|
1808
2056
|
original ">=0.0.5"
|
1809
2057
|
|
2058
|
+
evp_bytestokey@^1.0.0:
|
2059
|
+
version "1.0.0"
|
2060
|
+
resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53"
|
2061
|
+
dependencies:
|
2062
|
+
create-hash "^1.1.1"
|
2063
|
+
|
1810
2064
|
expand-brackets@^0.1.4:
|
1811
2065
|
version "0.1.5"
|
1812
2066
|
resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
|
@@ -1864,18 +2118,23 @@ extglob@^0.3.1:
|
|
1864
2118
|
dependencies:
|
1865
2119
|
is-extglob "^1.0.0"
|
1866
2120
|
|
1867
|
-
extract-text-webpack-plugin
|
1868
|
-
version "1.
|
1869
|
-
resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-1.
|
2121
|
+
extract-text-webpack-plugin@2.1.2:
|
2122
|
+
version "2.1.2"
|
2123
|
+
resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.2.tgz#756ef4efa8155c3681833fbc34da53b941746d6c"
|
1870
2124
|
dependencies:
|
1871
|
-
async "^1.
|
1872
|
-
loader-utils "^0.2
|
1873
|
-
|
2125
|
+
async "^2.1.2"
|
2126
|
+
loader-utils "^1.0.2"
|
2127
|
+
schema-utils "^0.3.0"
|
2128
|
+
webpack-sources "^1.0.1"
|
1874
2129
|
|
1875
2130
|
extsprintf@1.0.2:
|
1876
2131
|
version "1.0.2"
|
1877
2132
|
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
|
1878
2133
|
|
2134
|
+
fast-deep-equal@^1.0.0:
|
2135
|
+
version "1.0.0"
|
2136
|
+
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
|
2137
|
+
|
1879
2138
|
fast-levenshtein@~1.0.0:
|
1880
2139
|
version "1.0.7"
|
1881
2140
|
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-1.0.7.tgz#0178dcdee023b92905193af0959e8a7639cfdcb9"
|
@@ -2178,6 +2437,16 @@ globby@^5.0.0:
|
|
2178
2437
|
pify "^2.0.0"
|
2179
2438
|
pinkie-promise "^2.0.0"
|
2180
2439
|
|
2440
|
+
globby@^6.1.0:
|
2441
|
+
version "6.1.0"
|
2442
|
+
resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
|
2443
|
+
dependencies:
|
2444
|
+
array-union "^1.0.1"
|
2445
|
+
glob "^7.0.3"
|
2446
|
+
object-assign "^4.0.1"
|
2447
|
+
pify "^2.0.0"
|
2448
|
+
pinkie-promise "^2.0.0"
|
2449
|
+
|
2181
2450
|
globule@^1.0.0:
|
2182
2451
|
version "1.1.0"
|
2183
2452
|
resolved "https://registry.yarnpkg.com/globule/-/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f"
|
@@ -2202,6 +2471,10 @@ growl@1.8.1:
|
|
2202
2471
|
version "1.8.1"
|
2203
2472
|
resolved "https://registry.yarnpkg.com/growl/-/growl-1.8.1.tgz#4b2dec8d907e93db336624dcec0183502f8c9428"
|
2204
2473
|
|
2474
|
+
handle-thing@^1.2.5:
|
2475
|
+
version "1.2.5"
|
2476
|
+
resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4"
|
2477
|
+
|
2205
2478
|
handlebars@^4.0.0:
|
2206
2479
|
version "4.0.6"
|
2207
2480
|
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7"
|
@@ -2241,6 +2514,19 @@ has@^1.0.1:
|
|
2241
2514
|
dependencies:
|
2242
2515
|
function-bind "^1.0.2"
|
2243
2516
|
|
2517
|
+
hash-base@^2.0.0:
|
2518
|
+
version "2.0.2"
|
2519
|
+
resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1"
|
2520
|
+
dependencies:
|
2521
|
+
inherits "^2.0.1"
|
2522
|
+
|
2523
|
+
hash.js@^1.0.0, hash.js@^1.0.3:
|
2524
|
+
version "1.1.3"
|
2525
|
+
resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846"
|
2526
|
+
dependencies:
|
2527
|
+
inherits "^2.0.3"
|
2528
|
+
minimalistic-assert "^1.0.0"
|
2529
|
+
|
2244
2530
|
hawk@~3.1.3:
|
2245
2531
|
version "3.1.3"
|
2246
2532
|
resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
|
@@ -2254,6 +2540,14 @@ he@1.1.x:
|
|
2254
2540
|
version "1.1.0"
|
2255
2541
|
resolved "https://registry.yarnpkg.com/he/-/he-1.1.0.tgz#29319d49beec13a9b1f3c4f9b2a6dde4859bb2a7"
|
2256
2542
|
|
2543
|
+
hmac-drbg@^1.0.0:
|
2544
|
+
version "1.0.1"
|
2545
|
+
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
|
2546
|
+
dependencies:
|
2547
|
+
hash.js "^1.0.3"
|
2548
|
+
minimalistic-assert "^1.0.0"
|
2549
|
+
minimalistic-crypto-utils "^1.0.1"
|
2550
|
+
|
2257
2551
|
hoek@2.x.x:
|
2258
2552
|
version "2.16.3"
|
2259
2553
|
resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
|
@@ -2269,10 +2563,23 @@ hosted-git-info@^2.1.4:
|
|
2269
2563
|
version "2.1.5"
|
2270
2564
|
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b"
|
2271
2565
|
|
2566
|
+
hpack.js@^2.1.6:
|
2567
|
+
version "2.1.6"
|
2568
|
+
resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
|
2569
|
+
dependencies:
|
2570
|
+
inherits "^2.0.1"
|
2571
|
+
obuf "^1.0.0"
|
2572
|
+
readable-stream "^2.0.1"
|
2573
|
+
wbuf "^1.1.0"
|
2574
|
+
|
2272
2575
|
html-comment-regex@^1.1.0:
|
2273
2576
|
version "1.1.1"
|
2274
2577
|
resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e"
|
2275
2578
|
|
2579
|
+
html-entities@^1.2.0:
|
2580
|
+
version "1.2.1"
|
2581
|
+
resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
|
2582
|
+
|
2276
2583
|
html-minifier@^3.2.3:
|
2277
2584
|
version "3.2.3"
|
2278
2585
|
resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.2.3.tgz#d2ff536e24d95726c332493d8f77d84dbed85372"
|
@@ -2306,12 +2613,9 @@ htmlparser2@~3.3.0:
|
|
2306
2613
|
domutils "1.1"
|
2307
2614
|
readable-stream "1.0"
|
2308
2615
|
|
2309
|
-
http-
|
2310
|
-
version "1.7
|
2311
|
-
resolved "https://registry.yarnpkg.com/http-
|
2312
|
-
dependencies:
|
2313
|
-
Base64 "~0.2.0"
|
2314
|
-
inherits "~2.0.1"
|
2616
|
+
http-deceiver@^1.2.7:
|
2617
|
+
version "1.2.7"
|
2618
|
+
resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
|
2315
2619
|
|
2316
2620
|
http-errors@~1.5.0:
|
2317
2621
|
version "1.5.1"
|
@@ -2321,9 +2625,9 @@ http-errors@~1.5.0:
|
|
2321
2625
|
setprototypeof "1.0.2"
|
2322
2626
|
statuses ">= 1.3.1 < 2"
|
2323
2627
|
|
2324
|
-
http-proxy-middleware@~0.17.
|
2325
|
-
version "0.17.
|
2326
|
-
resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.
|
2628
|
+
http-proxy-middleware@~0.17.4:
|
2629
|
+
version "0.17.4"
|
2630
|
+
resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833"
|
2327
2631
|
dependencies:
|
2328
2632
|
http-proxy "^1.16.2"
|
2329
2633
|
is-glob "^3.1.0"
|
@@ -2345,9 +2649,9 @@ http-signature@~1.1.0:
|
|
2345
2649
|
jsprim "^1.2.2"
|
2346
2650
|
sshpk "^1.7.0"
|
2347
2651
|
|
2348
|
-
https-browserify@0.0.
|
2349
|
-
version "0.0.
|
2350
|
-
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.
|
2652
|
+
https-browserify@0.0.1:
|
2653
|
+
version "0.0.1"
|
2654
|
+
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
|
2351
2655
|
|
2352
2656
|
iconv-lite@~0.4.13:
|
2353
2657
|
version "0.4.15"
|
@@ -2394,7 +2698,7 @@ inflight@^1.0.4:
|
|
2394
2698
|
once "^1.3.0"
|
2395
2699
|
wrappy "1"
|
2396
2700
|
|
2397
|
-
inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1:
|
2701
|
+
inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3:
|
2398
2702
|
version "2.0.3"
|
2399
2703
|
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
2400
2704
|
|
@@ -2421,9 +2725,11 @@ inquirer@^0.9.0:
|
|
2421
2725
|
strip-ansi "^3.0.0"
|
2422
2726
|
through "^2.3.6"
|
2423
2727
|
|
2424
|
-
|
2425
|
-
version "
|
2426
|
-
resolved "https://registry.yarnpkg.com/
|
2728
|
+
internal-ip@^1.2.0:
|
2729
|
+
version "1.2.0"
|
2730
|
+
resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c"
|
2731
|
+
dependencies:
|
2732
|
+
meow "^3.3.0"
|
2427
2733
|
|
2428
2734
|
interpret@^1.0.0:
|
2429
2735
|
version "1.0.1"
|
@@ -2439,6 +2745,10 @@ invert-kv@^1.0.0:
|
|
2439
2745
|
version "1.0.0"
|
2440
2746
|
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
|
2441
2747
|
|
2748
|
+
ip@^1.1.0:
|
2749
|
+
version "1.1.5"
|
2750
|
+
resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
|
2751
|
+
|
2442
2752
|
ipaddr.js@1.1.1:
|
2443
2753
|
version "1.1.1"
|
2444
2754
|
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.1.1.tgz#c791d95f52b29c1247d5df80ada39b8a73647230"
|
@@ -2676,11 +2986,19 @@ jsesc@~0.5.0:
|
|
2676
2986
|
version "0.5.0"
|
2677
2987
|
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
|
2678
2988
|
|
2989
|
+
json-loader@^0.5.4:
|
2990
|
+
version "0.5.4"
|
2991
|
+
resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de"
|
2992
|
+
|
2993
|
+
json-schema-traverse@^0.3.0:
|
2994
|
+
version "0.3.1"
|
2995
|
+
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
|
2996
|
+
|
2679
2997
|
json-schema@0.2.3:
|
2680
2998
|
version "0.2.3"
|
2681
2999
|
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
|
2682
3000
|
|
2683
|
-
json-stable-stringify@^1.0.0:
|
3001
|
+
json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1:
|
2684
3002
|
version "1.0.1"
|
2685
3003
|
resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
|
2686
3004
|
dependencies:
|
@@ -2694,7 +3012,7 @@ json3@^3.3.2:
|
|
2694
3012
|
version "3.3.2"
|
2695
3013
|
resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
|
2696
3014
|
|
2697
|
-
json5@^0.5.0:
|
3015
|
+
json5@^0.5.0, json5@^0.5.1:
|
2698
3016
|
version "0.5.1"
|
2699
3017
|
resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
|
2700
3018
|
|
@@ -2759,7 +3077,11 @@ load-json-file@^1.0.0:
|
|
2759
3077
|
pinkie-promise "^2.0.0"
|
2760
3078
|
strip-bom "^2.0.0"
|
2761
3079
|
|
2762
|
-
loader-
|
3080
|
+
loader-runner@^2.3.0:
|
3081
|
+
version "2.3.0"
|
3082
|
+
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2"
|
3083
|
+
|
3084
|
+
loader-utils@^0.2.11, loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^0.2.7, loader-utils@~0.2.2, loader-utils@~0.2.5:
|
2763
3085
|
version "0.2.16"
|
2764
3086
|
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.16.tgz#f08632066ed8282835dff88dfb52704765adee6d"
|
2765
3087
|
dependencies:
|
@@ -2768,6 +3090,14 @@ loader-utils@^0.2.11, loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^
|
|
2768
3090
|
json5 "^0.5.0"
|
2769
3091
|
object-assign "^4.0.1"
|
2770
3092
|
|
3093
|
+
loader-utils@^1.0.2:
|
3094
|
+
version "1.1.0"
|
3095
|
+
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd"
|
3096
|
+
dependencies:
|
3097
|
+
big.js "^3.1.3"
|
3098
|
+
emojis-list "^2.0.0"
|
3099
|
+
json5 "^0.5.0"
|
3100
|
+
|
2771
3101
|
lodash._arraycopy@^3.0.0:
|
2772
3102
|
version "3.0.0"
|
2773
3103
|
resolved "https://registry.yarnpkg.com/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz#76e7b7c1f1fb92547374878a562ed06a3e50f6e1"
|
@@ -3067,25 +3397,14 @@ media-typer@0.3.0:
|
|
3067
3397
|
version "0.3.0"
|
3068
3398
|
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
|
3069
3399
|
|
3070
|
-
memory-fs@^0.
|
3071
|
-
version "0.2.0"
|
3072
|
-
resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290"
|
3073
|
-
|
3074
|
-
memory-fs@~0.3.0:
|
3075
|
-
version "0.3.0"
|
3076
|
-
resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.3.0.tgz#7bcc6b629e3a43e871d7e29aca6ae8a7f15cbb20"
|
3077
|
-
dependencies:
|
3078
|
-
errno "^0.1.3"
|
3079
|
-
readable-stream "^2.0.1"
|
3080
|
-
|
3081
|
-
memory-fs@~0.4.1:
|
3400
|
+
memory-fs@^0.4.0, memory-fs@~0.4.1:
|
3082
3401
|
version "0.4.1"
|
3083
3402
|
resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
|
3084
3403
|
dependencies:
|
3085
3404
|
errno "^0.1.3"
|
3086
3405
|
readable-stream "^2.0.1"
|
3087
3406
|
|
3088
|
-
meow@^3.7.0:
|
3407
|
+
meow@^3.3.0, meow@^3.7.0:
|
3089
3408
|
version "3.7.0"
|
3090
3409
|
resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
|
3091
3410
|
dependencies:
|
@@ -3126,6 +3445,13 @@ micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.8:
|
|
3126
3445
|
parse-glob "^3.0.4"
|
3127
3446
|
regex-cache "^0.4.2"
|
3128
3447
|
|
3448
|
+
miller-rabin@^4.0.0:
|
3449
|
+
version "4.0.0"
|
3450
|
+
resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d"
|
3451
|
+
dependencies:
|
3452
|
+
bn.js "^4.0.0"
|
3453
|
+
brorand "^1.0.1"
|
3454
|
+
|
3129
3455
|
"mime-db@>= 1.24.0 < 2", mime-db@~1.25.0:
|
3130
3456
|
version "1.25.0"
|
3131
3457
|
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.25.0.tgz#c18dbd7c73a5dbf6f44a024dc0d165a1e7b1c392"
|
@@ -3140,6 +3466,14 @@ mime@1.3.4, mime@^1.3.4:
|
|
3140
3466
|
version "1.3.4"
|
3141
3467
|
resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
|
3142
3468
|
|
3469
|
+
minimalistic-assert@^1.0.0:
|
3470
|
+
version "1.0.0"
|
3471
|
+
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3"
|
3472
|
+
|
3473
|
+
minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
|
3474
|
+
version "1.0.1"
|
3475
|
+
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
|
3476
|
+
|
3143
3477
|
"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@~3.0.2:
|
3144
3478
|
version "3.0.3"
|
3145
3479
|
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
|
@@ -3177,7 +3511,7 @@ mkdirp@0.5.0:
|
|
3177
3511
|
dependencies:
|
3178
3512
|
minimist "0.0.8"
|
3179
3513
|
|
3180
|
-
"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
|
3514
|
+
mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
|
3181
3515
|
version "0.5.1"
|
3182
3516
|
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
|
3183
3517
|
dependencies:
|
@@ -3205,6 +3539,21 @@ ms@0.7.2:
|
|
3205
3539
|
version "0.7.2"
|
3206
3540
|
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765"
|
3207
3541
|
|
3542
|
+
ms@2.0.0:
|
3543
|
+
version "2.0.0"
|
3544
|
+
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
3545
|
+
|
3546
|
+
multicast-dns-service-types@^1.1.0:
|
3547
|
+
version "1.1.0"
|
3548
|
+
resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
|
3549
|
+
|
3550
|
+
multicast-dns@^6.0.1:
|
3551
|
+
version "6.1.1"
|
3552
|
+
resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.1.1.tgz#6e7de86a570872ab17058adea7160bbeca814dde"
|
3553
|
+
dependencies:
|
3554
|
+
dns-packet "^1.0.1"
|
3555
|
+
thunky "^0.1.0"
|
3556
|
+
|
3208
3557
|
mute-stream@0.0.4:
|
3209
3558
|
version "0.0.4"
|
3210
3559
|
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.4.tgz#a9219960a6d5d5d046597aee51252c6655f7177e"
|
@@ -3244,6 +3593,10 @@ node-fetch@^1.0.1:
|
|
3244
3593
|
encoding "^0.1.11"
|
3245
3594
|
is-stream "^1.0.1"
|
3246
3595
|
|
3596
|
+
node-forge@0.6.33:
|
3597
|
+
version "0.6.33"
|
3598
|
+
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.6.33.tgz#463811879f573d45155ad6a9f43dc296e8e85ebc"
|
3599
|
+
|
3247
3600
|
node-gyp@^3.3.1:
|
3248
3601
|
version "3.5.0"
|
3249
3602
|
resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.5.0.tgz#a8fe5e611d079ec16348a3eb960e78e11c85274a"
|
@@ -3262,32 +3615,32 @@ node-gyp@^3.3.1:
|
|
3262
3615
|
tar "^2.0.0"
|
3263
3616
|
which "1"
|
3264
3617
|
|
3265
|
-
|
3266
|
-
version "0.
|
3267
|
-
resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-0.
|
3618
|
+
node-libs-browser@^2.0.0:
|
3619
|
+
version "2.0.0"
|
3620
|
+
resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646"
|
3268
3621
|
dependencies:
|
3269
3622
|
assert "^1.1.1"
|
3270
|
-
browserify-zlib "
|
3271
|
-
buffer "^4.
|
3623
|
+
browserify-zlib "^0.1.4"
|
3624
|
+
buffer "^4.3.0"
|
3272
3625
|
console-browserify "^1.1.0"
|
3273
|
-
constants-browserify "0.0
|
3274
|
-
crypto-browserify "
|
3626
|
+
constants-browserify "^1.0.0"
|
3627
|
+
crypto-browserify "^3.11.0"
|
3275
3628
|
domain-browser "^1.1.1"
|
3276
3629
|
events "^1.0.0"
|
3277
|
-
|
3278
|
-
|
3279
|
-
os-browserify "~0.1.2"
|
3630
|
+
https-browserify "0.0.1"
|
3631
|
+
os-browserify "^0.2.0"
|
3280
3632
|
path-browserify "0.0.0"
|
3281
3633
|
process "^0.11.0"
|
3282
3634
|
punycode "^1.2.4"
|
3283
|
-
querystring-es3 "
|
3284
|
-
readable-stream "^
|
3285
|
-
stream-browserify "^
|
3286
|
-
|
3287
|
-
|
3635
|
+
querystring-es3 "^0.2.0"
|
3636
|
+
readable-stream "^2.0.5"
|
3637
|
+
stream-browserify "^2.0.1"
|
3638
|
+
stream-http "^2.3.1"
|
3639
|
+
string_decoder "^0.10.25"
|
3640
|
+
timers-browserify "^2.0.2"
|
3288
3641
|
tty-browserify "0.0.0"
|
3289
|
-
url "
|
3290
|
-
util "
|
3642
|
+
url "^0.11.0"
|
3643
|
+
util "^0.10.3"
|
3291
3644
|
vm-browserify "0.0.4"
|
3292
3645
|
|
3293
3646
|
node-pre-gyp@^0.6.29:
|
@@ -3304,9 +3657,9 @@ node-pre-gyp@^0.6.29:
|
|
3304
3657
|
tar "~2.2.1"
|
3305
3658
|
tar-pack "~3.3.0"
|
3306
3659
|
|
3307
|
-
node-sass@^4.3
|
3308
|
-
version "4.3
|
3309
|
-
resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.3.
|
3660
|
+
node-sass@^4.5.3:
|
3661
|
+
version "4.5.3"
|
3662
|
+
resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.5.3.tgz#d09c9d1179641239d1b97ffc6231fdcec53e1568"
|
3310
3663
|
dependencies:
|
3311
3664
|
async-foreach "^0.1.3"
|
3312
3665
|
chalk "^1.1.1"
|
@@ -3323,7 +3676,7 @@ node-sass@^4.3.0:
|
|
3323
3676
|
nan "^2.3.2"
|
3324
3677
|
node-gyp "^3.3.1"
|
3325
3678
|
npmlog "^4.0.0"
|
3326
|
-
request "^2.
|
3679
|
+
request "^2.79.0"
|
3327
3680
|
sass-graph "^2.1.1"
|
3328
3681
|
stdout-stream "^1.4.0"
|
3329
3682
|
|
@@ -3409,6 +3762,10 @@ object.omit@^2.0.0:
|
|
3409
3762
|
for-own "^0.1.4"
|
3410
3763
|
is-extendable "^0.1.1"
|
3411
3764
|
|
3765
|
+
obuf@^1.0.0, obuf@^1.1.1:
|
3766
|
+
version "1.1.1"
|
3767
|
+
resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e"
|
3768
|
+
|
3412
3769
|
on-finished@~2.3.0:
|
3413
3770
|
version "2.3.0"
|
3414
3771
|
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
|
@@ -3431,11 +3788,14 @@ once@~1.3.3:
|
|
3431
3788
|
dependencies:
|
3432
3789
|
wrappy "1"
|
3433
3790
|
|
3434
|
-
|
3435
|
-
version "
|
3436
|
-
resolved "https://registry.yarnpkg.com/
|
3791
|
+
opn@4.0.2:
|
3792
|
+
version "4.0.2"
|
3793
|
+
resolved "https://registry.yarnpkg.com/opn/-/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95"
|
3794
|
+
dependencies:
|
3795
|
+
object-assign "^4.0.1"
|
3796
|
+
pinkie-promise "^2.0.0"
|
3437
3797
|
|
3438
|
-
optimist@^0.6.1
|
3798
|
+
optimist@^0.6.1:
|
3439
3799
|
version "0.6.1"
|
3440
3800
|
resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
|
3441
3801
|
dependencies:
|
@@ -3459,9 +3819,9 @@ original@>=0.0.5:
|
|
3459
3819
|
dependencies:
|
3460
3820
|
url-parse "1.0.x"
|
3461
3821
|
|
3462
|
-
os-browserify
|
3463
|
-
version "0.1
|
3464
|
-
resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.1.
|
3822
|
+
os-browserify@^0.2.0:
|
3823
|
+
version "0.2.1"
|
3824
|
+
resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f"
|
3465
3825
|
|
3466
3826
|
os-homedir@^1.0.0:
|
3467
3827
|
version "1.0.2"
|
@@ -3492,6 +3852,10 @@ output-file-sync@^1.1.0:
|
|
3492
3852
|
mkdirp "^0.5.1"
|
3493
3853
|
object-assign "^4.1.0"
|
3494
3854
|
|
3855
|
+
p-map@^1.1.1:
|
3856
|
+
version "1.1.1"
|
3857
|
+
resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.1.1.tgz#05f5e4ae97a068371bc2a5cc86bfbdbc19c4ae7a"
|
3858
|
+
|
3495
3859
|
pako@~0.2.0:
|
3496
3860
|
version "0.2.9"
|
3497
3861
|
resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
|
@@ -3502,6 +3866,16 @@ param-case@2.1.x:
|
|
3502
3866
|
dependencies:
|
3503
3867
|
no-case "^2.2.0"
|
3504
3868
|
|
3869
|
+
parse-asn1@^5.0.0:
|
3870
|
+
version "5.1.0"
|
3871
|
+
resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712"
|
3872
|
+
dependencies:
|
3873
|
+
asn1.js "^4.0.0"
|
3874
|
+
browserify-aes "^1.0.0"
|
3875
|
+
create-hash "^1.1.0"
|
3876
|
+
evp_bytestokey "^1.0.0"
|
3877
|
+
pbkdf2 "^3.0.3"
|
3878
|
+
|
3505
3879
|
parse-glob@^3.0.4:
|
3506
3880
|
version "3.0.4"
|
3507
3881
|
resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
|
@@ -3551,14 +3925,24 @@ path-type@^1.0.0:
|
|
3551
3925
|
pify "^2.0.0"
|
3552
3926
|
pinkie-promise "^2.0.0"
|
3553
3927
|
|
3554
|
-
pbkdf2
|
3555
|
-
version "
|
3556
|
-
resolved "https://registry.yarnpkg.com/pbkdf2
|
3928
|
+
pbkdf2@^3.0.3:
|
3929
|
+
version "3.0.12"
|
3930
|
+
resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.12.tgz#be36785c5067ea48d806ff923288c5f750b6b8a2"
|
3931
|
+
dependencies:
|
3932
|
+
create-hash "^1.1.2"
|
3933
|
+
create-hmac "^1.1.4"
|
3934
|
+
ripemd160 "^2.0.1"
|
3935
|
+
safe-buffer "^5.0.1"
|
3936
|
+
sha.js "^2.4.8"
|
3557
3937
|
|
3558
3938
|
pify@^2.0.0:
|
3559
3939
|
version "2.3.0"
|
3560
3940
|
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
3561
3941
|
|
3942
|
+
pify@^3.0.0:
|
3943
|
+
version "3.0.0"
|
3944
|
+
resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
|
3945
|
+
|
3562
3946
|
pinkie-promise@^2.0.0:
|
3563
3947
|
version "2.0.1"
|
3564
3948
|
resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
|
@@ -3575,6 +3959,14 @@ pkg-dir@^1.0.0:
|
|
3575
3959
|
dependencies:
|
3576
3960
|
find-up "^1.0.0"
|
3577
3961
|
|
3962
|
+
portfinder@^1.0.9:
|
3963
|
+
version "1.0.13"
|
3964
|
+
resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9"
|
3965
|
+
dependencies:
|
3966
|
+
async "^1.5.2"
|
3967
|
+
debug "^2.2.0"
|
3968
|
+
mkdirp "0.5.x"
|
3969
|
+
|
3578
3970
|
postcss-calc@^5.2.0:
|
3579
3971
|
version "5.3.1"
|
3580
3972
|
resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e"
|
@@ -3840,7 +4232,7 @@ process-nextick-args@~1.0.6:
|
|
3840
4232
|
version "1.0.7"
|
3841
4233
|
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
|
3842
4234
|
|
3843
|
-
process@^0.11.0
|
4235
|
+
process@^0.11.0:
|
3844
4236
|
version "0.11.9"
|
3845
4237
|
resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1"
|
3846
4238
|
|
@@ -3869,6 +4261,16 @@ pseudomap@^1.0.1:
|
|
3869
4261
|
version "1.0.2"
|
3870
4262
|
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
|
3871
4263
|
|
4264
|
+
public-encrypt@^4.0.0:
|
4265
|
+
version "4.0.0"
|
4266
|
+
resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6"
|
4267
|
+
dependencies:
|
4268
|
+
bn.js "^4.1.0"
|
4269
|
+
browserify-rsa "^4.0.0"
|
4270
|
+
create-hash "^1.1.0"
|
4271
|
+
parse-asn1 "^5.0.0"
|
4272
|
+
randombytes "^2.0.1"
|
4273
|
+
|
3872
4274
|
punycode@1.3.2:
|
3873
4275
|
version "1.3.2"
|
3874
4276
|
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
|
@@ -3896,7 +4298,7 @@ query-string@^4.1.0:
|
|
3896
4298
|
object-assign "^4.1.0"
|
3897
4299
|
strict-uri-encode "^1.0.0"
|
3898
4300
|
|
3899
|
-
querystring-es3
|
4301
|
+
querystring-es3@^0.2.0:
|
3900
4302
|
version "0.2.1"
|
3901
4303
|
resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
|
3902
4304
|
|
@@ -3915,6 +4317,12 @@ randomatic@^1.1.3:
|
|
3915
4317
|
is-number "^2.0.2"
|
3916
4318
|
kind-of "^3.0.2"
|
3917
4319
|
|
4320
|
+
randombytes@^2.0.0, randombytes@^2.0.1:
|
4321
|
+
version "2.0.5"
|
4322
|
+
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79"
|
4323
|
+
dependencies:
|
4324
|
+
safe-buffer "^5.1.0"
|
4325
|
+
|
3918
4326
|
range-parser@^1.0.3, range-parser@~1.2.0:
|
3919
4327
|
version "1.2.0"
|
3920
4328
|
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
|
@@ -3964,16 +4372,7 @@ readable-stream@1.0:
|
|
3964
4372
|
isarray "0.0.1"
|
3965
4373
|
string_decoder "~0.10.x"
|
3966
4374
|
|
3967
|
-
readable-stream@^
|
3968
|
-
version "1.1.14"
|
3969
|
-
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
|
3970
|
-
dependencies:
|
3971
|
-
core-util-is "~1.0.0"
|
3972
|
-
inherits "~2.0.1"
|
3973
|
-
isarray "0.0.1"
|
3974
|
-
string_decoder "~0.10.x"
|
3975
|
-
|
3976
|
-
"readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.2.2:
|
4375
|
+
"readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.2.2:
|
3977
4376
|
version "2.2.2"
|
3978
4377
|
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e"
|
3979
4378
|
dependencies:
|
@@ -3985,6 +4384,18 @@ readable-stream@^1.0.27-1, readable-stream@^1.1.13:
|
|
3985
4384
|
string_decoder "~0.10.x"
|
3986
4385
|
util-deprecate "~1.0.1"
|
3987
4386
|
|
4387
|
+
readable-stream@^2.2.6, readable-stream@^2.2.9:
|
4388
|
+
version "2.3.3"
|
4389
|
+
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
|
4390
|
+
dependencies:
|
4391
|
+
core-util-is "~1.0.0"
|
4392
|
+
inherits "~2.0.3"
|
4393
|
+
isarray "~1.0.0"
|
4394
|
+
process-nextick-args "~1.0.6"
|
4395
|
+
safe-buffer "~5.1.1"
|
4396
|
+
string_decoder "~1.0.3"
|
4397
|
+
util-deprecate "~1.0.1"
|
4398
|
+
|
3988
4399
|
readable-stream@~2.1.4:
|
3989
4400
|
version "2.1.5"
|
3990
4401
|
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0"
|
@@ -4117,7 +4528,7 @@ repeating@^2.0.0:
|
|
4117
4528
|
dependencies:
|
4118
4529
|
is-finite "^1.0.0"
|
4119
4530
|
|
4120
|
-
request@2, request@^2.
|
4531
|
+
request@2, request@^2.79.0:
|
4121
4532
|
version "2.79.0"
|
4122
4533
|
resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
|
4123
4534
|
dependencies:
|
@@ -4170,9 +4581,12 @@ rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@~2.5.1, rimraf@~2.5.4:
|
|
4170
4581
|
dependencies:
|
4171
4582
|
glob "^7.0.5"
|
4172
4583
|
|
4173
|
-
ripemd160
|
4174
|
-
version "
|
4175
|
-
resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-
|
4584
|
+
ripemd160@^2.0.0, ripemd160@^2.0.1:
|
4585
|
+
version "2.0.1"
|
4586
|
+
resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7"
|
4587
|
+
dependencies:
|
4588
|
+
hash-base "^2.0.0"
|
4589
|
+
inherits "^2.0.1"
|
4176
4590
|
|
4177
4591
|
run-async@^0.1.0:
|
4178
4592
|
version "0.1.0"
|
@@ -4184,6 +4598,10 @@ rx-lite@^2.5.2:
|
|
4184
4598
|
version "2.5.2"
|
4185
4599
|
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-2.5.2.tgz#5fef42d4d6e76bab5199d2171327db709e58e634"
|
4186
4600
|
|
4601
|
+
safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
|
4602
|
+
version "5.1.1"
|
4603
|
+
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
|
4604
|
+
|
4187
4605
|
sass-graph@^2.1.1:
|
4188
4606
|
version "2.1.2"
|
4189
4607
|
resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.1.2.tgz#965104be23e8103cb7e5f710df65935b317da57b"
|
@@ -4204,6 +4622,22 @@ sax@~1.2.1:
|
|
4204
4622
|
version "1.2.1"
|
4205
4623
|
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a"
|
4206
4624
|
|
4625
|
+
schema-utils@^0.3.0:
|
4626
|
+
version "0.3.0"
|
4627
|
+
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf"
|
4628
|
+
dependencies:
|
4629
|
+
ajv "^5.0.0"
|
4630
|
+
|
4631
|
+
select-hose@^2.0.0:
|
4632
|
+
version "2.0.0"
|
4633
|
+
resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
|
4634
|
+
|
4635
|
+
selfsigned@^1.9.1:
|
4636
|
+
version "1.9.1"
|
4637
|
+
resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.9.1.tgz#cdda4492d70d486570f87c65546023558e1dfa5a"
|
4638
|
+
dependencies:
|
4639
|
+
node-forge "0.6.33"
|
4640
|
+
|
4207
4641
|
"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.3.0, semver@~5.3.0:
|
4208
4642
|
version "5.3.0"
|
4209
4643
|
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
|
@@ -4255,7 +4689,7 @@ set-immediate-shim@^1.0.1:
|
|
4255
4689
|
version "1.0.1"
|
4256
4690
|
resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
|
4257
4691
|
|
4258
|
-
setimmediate@^1.0.5:
|
4692
|
+
setimmediate@^1.0.4, setimmediate@^1.0.5:
|
4259
4693
|
version "1.0.5"
|
4260
4694
|
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
|
4261
4695
|
|
@@ -4263,9 +4697,11 @@ setprototypeof@1.0.2:
|
|
4263
4697
|
version "1.0.2"
|
4264
4698
|
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08"
|
4265
4699
|
|
4266
|
-
sha.js
|
4267
|
-
version "2.
|
4268
|
-
resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.
|
4700
|
+
sha.js@^2.4.0, sha.js@^2.4.8:
|
4701
|
+
version "2.4.8"
|
4702
|
+
resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f"
|
4703
|
+
dependencies:
|
4704
|
+
inherits "^2.0.1"
|
4269
4705
|
|
4270
4706
|
shelljs@^0.3.0:
|
4271
4707
|
version "0.3.0"
|
@@ -4297,18 +4733,18 @@ sntp@1.x.x:
|
|
4297
4733
|
dependencies:
|
4298
4734
|
hoek "2.x.x"
|
4299
4735
|
|
4300
|
-
sockjs-client
|
4301
|
-
version "1.1.
|
4302
|
-
resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.
|
4736
|
+
sockjs-client@1.1.2:
|
4737
|
+
version "1.1.2"
|
4738
|
+
resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.2.tgz#f0212a8550e4c9468c8cceaeefd2e3493c033ad5"
|
4303
4739
|
dependencies:
|
4304
4740
|
debug "^2.2.0"
|
4305
|
-
eventsource "
|
4741
|
+
eventsource "0.1.6"
|
4306
4742
|
faye-websocket "~0.11.0"
|
4307
4743
|
inherits "^2.0.1"
|
4308
4744
|
json3 "^3.3.2"
|
4309
4745
|
url-parse "^1.1.1"
|
4310
4746
|
|
4311
|
-
sockjs
|
4747
|
+
sockjs@0.3.18:
|
4312
4748
|
version "0.3.18"
|
4313
4749
|
resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207"
|
4314
4750
|
dependencies:
|
@@ -4321,17 +4757,21 @@ sort-keys@^1.0.0:
|
|
4321
4757
|
dependencies:
|
4322
4758
|
is-plain-obj "^1.0.0"
|
4323
4759
|
|
4324
|
-
source-list-map@^0.1.4
|
4760
|
+
source-list-map@^0.1.4:
|
4325
4761
|
version "0.1.8"
|
4326
4762
|
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106"
|
4327
4763
|
|
4764
|
+
source-list-map@^2.0.0:
|
4765
|
+
version "2.0.0"
|
4766
|
+
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085"
|
4767
|
+
|
4328
4768
|
source-map-support@^0.4.2:
|
4329
4769
|
version "0.4.8"
|
4330
4770
|
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.8.tgz#4871918d8a3af07289182e974e32844327b2e98b"
|
4331
4771
|
dependencies:
|
4332
4772
|
source-map "^0.5.3"
|
4333
4773
|
|
4334
|
-
source-map@0.4.x, source-map@^0.4.4
|
4774
|
+
source-map@0.4.x, source-map@^0.4.4:
|
4335
4775
|
version "0.4.4"
|
4336
4776
|
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
|
4337
4777
|
dependencies:
|
@@ -4355,6 +4795,29 @@ spdx-license-ids@^1.0.2:
|
|
4355
4795
|
version "1.2.2"
|
4356
4796
|
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
|
4357
4797
|
|
4798
|
+
spdy-transport@^2.0.18:
|
4799
|
+
version "2.0.20"
|
4800
|
+
resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.20.tgz#735e72054c486b2354fe89e702256004a39ace4d"
|
4801
|
+
dependencies:
|
4802
|
+
debug "^2.6.8"
|
4803
|
+
detect-node "^2.0.3"
|
4804
|
+
hpack.js "^2.1.6"
|
4805
|
+
obuf "^1.1.1"
|
4806
|
+
readable-stream "^2.2.9"
|
4807
|
+
safe-buffer "^5.0.1"
|
4808
|
+
wbuf "^1.7.2"
|
4809
|
+
|
4810
|
+
spdy@^3.4.1:
|
4811
|
+
version "3.4.7"
|
4812
|
+
resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc"
|
4813
|
+
dependencies:
|
4814
|
+
debug "^2.6.8"
|
4815
|
+
handle-thing "^1.2.5"
|
4816
|
+
http-deceiver "^1.2.7"
|
4817
|
+
safe-buffer "^5.0.1"
|
4818
|
+
select-hose "^2.0.0"
|
4819
|
+
spdy-transport "^2.0.18"
|
4820
|
+
|
4358
4821
|
sprintf-js@~1.0.2:
|
4359
4822
|
version "1.0.3"
|
4360
4823
|
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
@@ -4384,22 +4847,28 @@ stdout-stream@^1.4.0:
|
|
4384
4847
|
dependencies:
|
4385
4848
|
readable-stream "^2.0.1"
|
4386
4849
|
|
4387
|
-
stream-browserify@^
|
4388
|
-
version "
|
4389
|
-
resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-
|
4850
|
+
stream-browserify@^2.0.1:
|
4851
|
+
version "2.0.1"
|
4852
|
+
resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
|
4390
4853
|
dependencies:
|
4391
4854
|
inherits "~2.0.1"
|
4392
|
-
readable-stream "^
|
4855
|
+
readable-stream "^2.0.2"
|
4393
4856
|
|
4394
|
-
stream-
|
4395
|
-
version "
|
4396
|
-
resolved "https://registry.yarnpkg.com/stream-
|
4857
|
+
stream-http@^2.3.1:
|
4858
|
+
version "2.7.2"
|
4859
|
+
resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad"
|
4860
|
+
dependencies:
|
4861
|
+
builtin-status-codes "^3.0.0"
|
4862
|
+
inherits "^2.0.1"
|
4863
|
+
readable-stream "^2.2.6"
|
4864
|
+
to-arraybuffer "^1.0.0"
|
4865
|
+
xtend "^4.0.0"
|
4397
4866
|
|
4398
4867
|
strict-uri-encode@^1.0.0:
|
4399
4868
|
version "1.1.0"
|
4400
4869
|
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
|
4401
4870
|
|
4402
|
-
string-width@^1.0.1:
|
4871
|
+
string-width@^1.0.1, string-width@^1.0.2:
|
4403
4872
|
version "1.0.2"
|
4404
4873
|
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
|
4405
4874
|
dependencies:
|
@@ -4407,10 +4876,16 @@ string-width@^1.0.1:
|
|
4407
4876
|
is-fullwidth-code-point "^1.0.0"
|
4408
4877
|
strip-ansi "^3.0.0"
|
4409
4878
|
|
4410
|
-
string_decoder
|
4879
|
+
string_decoder@^0.10.25, string_decoder@~0.10.x:
|
4411
4880
|
version "0.10.31"
|
4412
4881
|
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
|
4413
4882
|
|
4883
|
+
string_decoder@~1.0.3:
|
4884
|
+
version "1.0.3"
|
4885
|
+
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
|
4886
|
+
dependencies:
|
4887
|
+
safe-buffer "~5.1.0"
|
4888
|
+
|
4414
4889
|
stringstream@~0.0.4:
|
4415
4890
|
version "0.0.5"
|
4416
4891
|
resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
|
@@ -4479,9 +4954,9 @@ svgo@^0.7.0:
|
|
4479
4954
|
sax "~1.2.1"
|
4480
4955
|
whet.extend "~0.9.9"
|
4481
4956
|
|
4482
|
-
tapable@^0.
|
4483
|
-
version "0.
|
4484
|
-
resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.
|
4957
|
+
tapable@^0.2.5, tapable@~0.2.5:
|
4958
|
+
version "0.2.6"
|
4959
|
+
resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d"
|
4485
4960
|
|
4486
4961
|
tar-pack@~3.3.0:
|
4487
4962
|
version "3.3.0"
|
@@ -4534,11 +5009,19 @@ through@^2.3.6:
|
|
4534
5009
|
version "2.3.8"
|
4535
5010
|
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
|
4536
5011
|
|
4537
|
-
|
4538
|
-
version "1.
|
4539
|
-
resolved "https://registry.yarnpkg.com/
|
5012
|
+
thunky@^0.1.0:
|
5013
|
+
version "0.1.0"
|
5014
|
+
resolved "https://registry.yarnpkg.com/thunky/-/thunky-0.1.0.tgz#bf30146824e2b6e67b0f2d7a4ac8beb26908684e"
|
5015
|
+
|
5016
|
+
timers-browserify@^2.0.2:
|
5017
|
+
version "2.0.2"
|
5018
|
+
resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86"
|
4540
5019
|
dependencies:
|
4541
|
-
|
5020
|
+
setimmediate "^1.0.4"
|
5021
|
+
|
5022
|
+
to-arraybuffer@^1.0.0:
|
5023
|
+
version "1.0.1"
|
5024
|
+
resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
|
4542
5025
|
|
4543
5026
|
to-double-quotes@^1.0.1:
|
4544
5027
|
version "1.0.2"
|
@@ -4624,14 +5107,14 @@ uglify-js@2.7.x:
|
|
4624
5107
|
uglify-to-browserify "~1.0.0"
|
4625
5108
|
yargs "~3.10.0"
|
4626
5109
|
|
4627
|
-
uglify-js@^2.6, uglify-js
|
4628
|
-
version "2.
|
4629
|
-
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.
|
5110
|
+
uglify-js@^2.6, uglify-js@^2.8.27:
|
5111
|
+
version "2.8.29"
|
5112
|
+
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
|
4630
5113
|
dependencies:
|
4631
|
-
async "~0.2.6"
|
4632
5114
|
source-map "~0.5.1"
|
4633
|
-
uglify-to-browserify "~1.0.0"
|
4634
5115
|
yargs "~3.10.0"
|
5116
|
+
optionalDependencies:
|
5117
|
+
uglify-to-browserify "~1.0.0"
|
4635
5118
|
|
4636
5119
|
uglify-to-browserify@~1.0.0:
|
4637
5120
|
version "1.0.2"
|
@@ -4677,9 +5160,9 @@ url-parse@^1.1.1:
|
|
4677
5160
|
querystringify "0.0.x"
|
4678
5161
|
requires-port "1.0.x"
|
4679
5162
|
|
4680
|
-
url
|
4681
|
-
version "0.
|
4682
|
-
resolved "https://registry.yarnpkg.com/url/-/url-0.
|
5163
|
+
url@^0.11.0:
|
5164
|
+
version "0.11.0"
|
5165
|
+
resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
|
4683
5166
|
dependencies:
|
4684
5167
|
punycode "1.3.2"
|
4685
5168
|
querystring "0.2.0"
|
@@ -4692,7 +5175,7 @@ util-deprecate@~1.0.1:
|
|
4692
5175
|
version "1.0.2"
|
4693
5176
|
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
4694
5177
|
|
4695
|
-
util@0.10.3, util
|
5178
|
+
util@0.10.3, util@^0.10.3:
|
4696
5179
|
version "0.10.3"
|
4697
5180
|
resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
|
4698
5181
|
dependencies:
|
@@ -4751,74 +5234,87 @@ vm-browserify@0.0.4:
|
|
4751
5234
|
dependencies:
|
4752
5235
|
indexof "0.0.1"
|
4753
5236
|
|
4754
|
-
watchpack@^
|
4755
|
-
version "
|
4756
|
-
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-
|
5237
|
+
watchpack@^1.3.1:
|
5238
|
+
version "1.4.0"
|
5239
|
+
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac"
|
4757
5240
|
dependencies:
|
4758
|
-
async "^
|
4759
|
-
chokidar "^1.
|
5241
|
+
async "^2.1.2"
|
5242
|
+
chokidar "^1.7.0"
|
4760
5243
|
graceful-fs "^4.1.2"
|
4761
5244
|
|
4762
|
-
|
4763
|
-
version "
|
4764
|
-
resolved "https://registry.yarnpkg.com/
|
5245
|
+
wbuf@^1.1.0, wbuf@^1.7.2:
|
5246
|
+
version "1.7.2"
|
5247
|
+
resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe"
|
4765
5248
|
dependencies:
|
4766
|
-
|
4767
|
-
source-map "~0.4.1"
|
5249
|
+
minimalistic-assert "^1.0.0"
|
4768
5250
|
|
4769
|
-
webpack-dev-middleware@^1.
|
4770
|
-
version "1.
|
4771
|
-
resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.
|
5251
|
+
webpack-dev-middleware@^1.11.0:
|
5252
|
+
version "1.11.0"
|
5253
|
+
resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.11.0.tgz#09691d0973a30ad1f82ac73a12e2087f0a4754f9"
|
4772
5254
|
dependencies:
|
4773
5255
|
memory-fs "~0.4.1"
|
4774
5256
|
mime "^1.3.4"
|
4775
5257
|
path-is-absolute "^1.0.0"
|
4776
5258
|
range-parser "^1.0.3"
|
4777
5259
|
|
4778
|
-
webpack-dev-server@^
|
4779
|
-
version "
|
4780
|
-
resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-
|
5260
|
+
webpack-dev-server@^2.2.1:
|
5261
|
+
version "2.5.1"
|
5262
|
+
resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.5.1.tgz#a02e726a87bb603db5d71abb7d6d2649bf10c769"
|
4781
5263
|
dependencies:
|
5264
|
+
ansi-html "0.0.7"
|
5265
|
+
bonjour "^3.5.0"
|
5266
|
+
chokidar "^1.6.0"
|
4782
5267
|
compression "^1.5.2"
|
4783
5268
|
connect-history-api-fallback "^1.3.0"
|
5269
|
+
del "^3.0.0"
|
4784
5270
|
express "^4.13.3"
|
4785
|
-
|
4786
|
-
|
4787
|
-
|
5271
|
+
html-entities "^1.2.0"
|
5272
|
+
http-proxy-middleware "~0.17.4"
|
5273
|
+
internal-ip "^1.2.0"
|
5274
|
+
opn "4.0.2"
|
5275
|
+
portfinder "^1.0.9"
|
5276
|
+
selfsigned "^1.9.1"
|
4788
5277
|
serve-index "^1.7.2"
|
4789
|
-
sockjs "
|
4790
|
-
sockjs-client "
|
4791
|
-
|
5278
|
+
sockjs "0.3.18"
|
5279
|
+
sockjs-client "1.1.2"
|
5280
|
+
spdy "^3.4.1"
|
4792
5281
|
strip-ansi "^3.0.0"
|
4793
5282
|
supports-color "^3.1.1"
|
4794
|
-
webpack-dev-middleware "^1.
|
5283
|
+
webpack-dev-middleware "^1.11.0"
|
5284
|
+
yargs "^6.0.0"
|
4795
5285
|
|
4796
|
-
webpack-sources@^0.1
|
4797
|
-
version "0.1
|
4798
|
-
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.
|
5286
|
+
webpack-sources@^1.0.1:
|
5287
|
+
version "1.0.1"
|
5288
|
+
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.0.1.tgz#c7356436a4d13123be2e2426a05d1dad9cbe65cf"
|
4799
5289
|
dependencies:
|
4800
|
-
source-list-map "
|
5290
|
+
source-list-map "^2.0.0"
|
4801
5291
|
source-map "~0.5.3"
|
4802
5292
|
|
4803
|
-
webpack
|
4804
|
-
version "
|
4805
|
-
resolved "https://registry.yarnpkg.com/webpack/-/webpack-
|
5293
|
+
webpack@^2.2.1:
|
5294
|
+
version "2.7.0"
|
5295
|
+
resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.7.0.tgz#b2a1226804373ffd3d03ea9c6bd525067034f6b1"
|
4806
5296
|
dependencies:
|
4807
|
-
|
4808
|
-
|
4809
|
-
|
4810
|
-
|
4811
|
-
|
4812
|
-
|
4813
|
-
|
5297
|
+
acorn "^5.0.0"
|
5298
|
+
acorn-dynamic-import "^2.0.0"
|
5299
|
+
ajv "^4.7.0"
|
5300
|
+
ajv-keywords "^1.1.1"
|
5301
|
+
async "^2.1.2"
|
5302
|
+
enhanced-resolve "^3.3.0"
|
5303
|
+
interpret "^1.0.0"
|
5304
|
+
json-loader "^0.5.4"
|
5305
|
+
json5 "^0.5.1"
|
5306
|
+
loader-runner "^2.3.0"
|
5307
|
+
loader-utils "^0.2.16"
|
5308
|
+
memory-fs "~0.4.1"
|
4814
5309
|
mkdirp "~0.5.0"
|
4815
|
-
node-libs-browser "
|
4816
|
-
|
5310
|
+
node-libs-browser "^2.0.0"
|
5311
|
+
source-map "^0.5.3"
|
4817
5312
|
supports-color "^3.1.0"
|
4818
|
-
tapable "~0.
|
4819
|
-
uglify-js "
|
4820
|
-
watchpack "^
|
4821
|
-
webpack-
|
5313
|
+
tapable "~0.2.5"
|
5314
|
+
uglify-js "^2.8.27"
|
5315
|
+
watchpack "^1.3.1"
|
5316
|
+
webpack-sources "^1.0.1"
|
5317
|
+
yargs "^6.0.0"
|
4822
5318
|
|
4823
5319
|
websocket-driver@>=0.5.1:
|
4824
5320
|
version "0.6.5"
|
@@ -4918,6 +5414,12 @@ yargs-parser@^2.4.1:
|
|
4918
5414
|
camelcase "^3.0.0"
|
4919
5415
|
lodash.assign "^4.0.6"
|
4920
5416
|
|
5417
|
+
yargs-parser@^4.2.0:
|
5418
|
+
version "4.2.1"
|
5419
|
+
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c"
|
5420
|
+
dependencies:
|
5421
|
+
camelcase "^3.0.0"
|
5422
|
+
|
4921
5423
|
yargs@3.32.0:
|
4922
5424
|
version "3.32.0"
|
4923
5425
|
resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995"
|
@@ -4949,6 +5451,24 @@ yargs@^4.7.1:
|
|
4949
5451
|
y18n "^3.2.1"
|
4950
5452
|
yargs-parser "^2.4.1"
|
4951
5453
|
|
5454
|
+
yargs@^6.0.0:
|
5455
|
+
version "6.6.0"
|
5456
|
+
resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"
|
5457
|
+
dependencies:
|
5458
|
+
camelcase "^3.0.0"
|
5459
|
+
cliui "^3.2.0"
|
5460
|
+
decamelize "^1.1.1"
|
5461
|
+
get-caller-file "^1.0.1"
|
5462
|
+
os-locale "^1.4.0"
|
5463
|
+
read-pkg-up "^1.0.1"
|
5464
|
+
require-directory "^2.1.1"
|
5465
|
+
require-main-filename "^1.0.1"
|
5466
|
+
set-blocking "^2.0.0"
|
5467
|
+
string-width "^1.0.2"
|
5468
|
+
which-module "^1.0.0"
|
5469
|
+
y18n "^3.2.1"
|
5470
|
+
yargs-parser "^4.2.0"
|
5471
|
+
|
4952
5472
|
yargs@~3.10.0:
|
4953
5473
|
version "3.10.0"
|
4954
5474
|
resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
|