@pie-lib/editable-html 8.1.1 → 9.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +56 -0
- package/lib/editor.js +104 -110
- package/lib/editor.js.map +1 -1
- package/lib/index.js +30 -42
- package/lib/index.js.map +1 -1
- package/lib/plugins/characters/custom-popover.js +8 -11
- package/lib/plugins/characters/custom-popover.js.map +1 -1
- package/lib/plugins/characters/index.js +14 -19
- package/lib/plugins/characters/index.js.map +1 -1
- package/lib/plugins/characters/utils.js +24 -4
- package/lib/plugins/characters/utils.js.map +1 -1
- package/lib/plugins/image/component.js +65 -54
- package/lib/plugins/image/component.js.map +1 -1
- package/lib/plugins/image/image-toolbar.js +65 -27
- package/lib/plugins/image/image-toolbar.js.map +1 -1
- package/lib/plugins/image/index.js +47 -12
- package/lib/plugins/image/index.js.map +1 -1
- package/lib/plugins/image/insert-image-handler.js +8 -12
- package/lib/plugins/image/insert-image-handler.js.map +1 -1
- package/lib/plugins/index.js +6 -15
- package/lib/plugins/index.js.map +1 -1
- package/lib/plugins/list/index.js +2 -2
- package/lib/plugins/list/index.js.map +1 -1
- package/lib/plugins/math/index.js +8 -8
- package/lib/plugins/math/index.js.map +1 -1
- package/lib/plugins/media/index.js +15 -20
- package/lib/plugins/media/index.js.map +1 -1
- package/lib/plugins/media/media-dialog.js +26 -41
- package/lib/plugins/media/media-dialog.js.map +1 -1
- package/lib/plugins/media/media-toolbar.js +15 -25
- package/lib/plugins/media/media-toolbar.js.map +1 -1
- package/lib/plugins/media/media-wrapper.js +22 -35
- package/lib/plugins/media/media-wrapper.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +24 -37
- package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/index.js +8 -8
- package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
- package/lib/plugins/respArea/explicit-constructed-response/index.js +5 -5
- package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
- package/lib/plugins/respArea/icons/index.js +5 -5
- package/lib/plugins/respArea/icons/index.js.map +1 -1
- package/lib/plugins/respArea/index.js +7 -2
- package/lib/plugins/respArea/index.js.map +1 -1
- package/lib/plugins/respArea/inline-dropdown/index.js +5 -5
- package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
- package/lib/plugins/respArea/utils.js +2 -2
- package/lib/plugins/respArea/utils.js.map +1 -1
- package/lib/plugins/table/icons/index.js +9 -9
- package/lib/plugins/table/icons/index.js.map +1 -1
- package/lib/plugins/table/index.js +15 -13
- package/lib/plugins/table/index.js.map +1 -1
- package/lib/plugins/table/table-toolbar.js +25 -36
- package/lib/plugins/table/table-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/default-toolbar.js +5 -5
- package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/done-button.js +2 -2
- package/lib/plugins/toolbar/done-button.js.map +1 -1
- package/lib/plugins/toolbar/editor-and-toolbar.js +18 -30
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/index.js +5 -5
- package/lib/plugins/toolbar/index.js.map +1 -1
- package/lib/plugins/toolbar/toolbar-buttons.js +25 -43
- package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
- package/lib/plugins/toolbar/toolbar.js +30 -49
- package/lib/plugins/toolbar/toolbar.js.map +1 -1
- package/lib/serialization.js +2 -2
- package/lib/serialization.js.map +1 -1
- package/package.json +5 -5
- package/src/editor.jsx +33 -38
- package/src/plugins/characters/index.jsx +7 -0
- package/src/plugins/characters/utils.js +8 -4
- package/src/plugins/image/component.jsx +49 -20
- package/src/plugins/image/image-toolbar.jsx +38 -2
- package/src/plugins/image/index.jsx +38 -9
- package/src/plugins/respArea/index.jsx +5 -0
- package/src/plugins/table/index.jsx +3 -3
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
@@ -7,6 +9,10 @@ exports.CustomToolbarComp = void 0;
|
|
|
7
9
|
exports["default"] = MathPlugin;
|
|
8
10
|
exports.serialization = exports.inlineMath = void 0;
|
|
9
11
|
|
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
+
|
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
+
|
|
10
16
|
var _Functions = _interopRequireDefault(require("@material-ui/icons/Functions"));
|
|
11
17
|
|
|
12
18
|
var _slate = require("slate");
|
|
@@ -25,15 +31,9 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
25
31
|
|
|
26
32
|
var _serialization = require("../../serialization");
|
|
27
33
|
|
|
28
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
29
|
-
|
|
30
|
-
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
31
|
-
|
|
32
34
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
33
35
|
|
|
34
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
|
|
35
|
-
|
|
36
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
36
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
37
37
|
|
|
38
38
|
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:math');
|
|
39
39
|
var TEXT_NODE = 3;
|
|
@@ -190,7 +190,7 @@ function MathPlugin() {
|
|
|
190
190
|
|
|
191
191
|
if (props.node.type === 'mathml') {
|
|
192
192
|
var html = props.node.data.get('html');
|
|
193
|
-
return /*#__PURE__*/_react["default"].createElement("span",
|
|
193
|
+
return /*#__PURE__*/_react["default"].createElement("span", (0, _extends2["default"])({}, props.attributes, {
|
|
194
194
|
dangerouslySetInnerHTML: {
|
|
195
195
|
__html: html
|
|
196
196
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/plugins/math/index.jsx"],"names":["log","TEXT_NODE","generateAdditionalKeys","keyData","map","key","name","latex","write","label","CustomToolbarComp","React","memo","props","node","value","onFocus","onBlur","onClick","pluginProps","math","keypadMode","customKeys","controlledKeypadMode","onDone","update","data","toObject","change","setNodeByKey","nextText","document","getNextText","moveFocusTo","moveAnchorTo","onToolbarDone","onChange","onDataChange","get","prev","next","nodeNext","keypadModeNext","controlledKeypadModeNext","keypadModeChanged","controlledKeypadModeChanged","equal","equals","propTypes","SlatePropTypes","isRequired","PropTypes","func","MathPlugin","toolbar","icon","inlineMath","insertInline","supports","object","type","schema","match","pluginStyles","parentNode","p","position","top","renderNode","html","attributes","__html","ROUND_BRACKETS","SQUARE_BRACKETS","DOLLAR","DOUBLE_DOLLAR","Inline","create","isVoid","htmlDecode","input","doc","DOMParser","parseFromString","documentElement","textContent","getTagName","el","tagName","toLowerCase","lessThanHandling","arrowSplit","split","length","reduce","st","part","serialization","deserialize","hasMathChild","BLOCK_TAGS","childNodes","firstChild","dataset","newHtml","innerHTML","outerHTML","nodeType","hasLatex","hasAttribute","unwrapped","wrapType","nodes","wrapper","serialize","l","decoded"],"mappings":"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","sourcesContent":["import Functions from '@material-ui/icons/Functions';\nimport { Inline } from 'slate';\nimport { MathPreview, MathToolbar } from '@pie-lib/math-toolbar';\nimport { wrapMath, unWrapMath } from '@pie-lib/math-rendering';\nimport React from 'react';\nimport debug from 'debug';\nimport SlatePropTypes from 'slate-prop-types';\nimport PropTypes from 'prop-types';\n\nimport { BLOCK_TAGS } from '../../serialization';\nconst log = debug('@pie-lib:editable-html:plugins:math');\n\nconst TEXT_NODE = 3;\n\nfunction generateAdditionalKeys(keyData = []) {\n return keyData.map(key => ({\n name: key,\n latex: key,\n write: key,\n label: key\n }));\n}\n\nexport const CustomToolbarComp = React.memo(\n props => {\n const { node, value, onFocus, onBlur, onClick } = props;\n const { pluginProps } = props || {};\n const { math } = pluginProps || {};\n const { keypadMode, customKeys, controlledKeypadMode = true } = math || {};\n\n const onDone = latex => {\n const update = {\n ...node.data.toObject(),\n latex\n };\n const change = value.change().setNodeByKey(node.key, { data: update });\n\n const nextText = value.document.getNextText(node.key);\n\n change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);\n\n props.onToolbarDone(change, false);\n };\n\n const onChange = latex => {\n const update = {\n ...node.data.toObject(),\n latex\n };\n const change = value.change().setNodeByKey(node.key, { data: update });\n log('call onToolbarChange:', change);\n props.onDataChange(node.key, update);\n };\n\n const latex = node.data.get('latex');\n\n return (\n <MathToolbar\n autoFocus\n additionalKeys={generateAdditionalKeys(customKeys)}\n latex={latex}\n onChange={onChange}\n onDone={onDone}\n onBlur={onBlur}\n onFocus={onFocus}\n onClick={onClick}\n keypadMode={keypadMode}\n controlledKeypadMode={controlledKeypadMode}\n />\n );\n },\n (prev, next) => {\n const { node, pluginProps: { math: { keypadMode, controlledKeypadMode } = {} } = {} } = prev;\n const {\n node: nodeNext,\n pluginProps: {\n math: { keypadMode: keypadModeNext, controlledKeypadMode: controlledKeypadModeNext } = {}\n } = {}\n } = next;\n const keypadModeChanged = keypadMode !== keypadModeNext;\n const controlledKeypadModeChanged = controlledKeypadMode !== controlledKeypadModeNext;\n\n const equal = node.equals(nodeNext);\n return equal && !keypadModeChanged && !controlledKeypadModeChanged;\n }\n);\n\nCustomToolbarComp.propTypes = {\n node: SlatePropTypes.node.isRequired,\n value: SlatePropTypes.value,\n onToolbarDone: PropTypes.func,\n onDataChange: PropTypes.func,\n onFocus: PropTypes.func,\n onClick: PropTypes.func,\n onBlur: PropTypes.func\n};\n\nexport default function MathPlugin() {\n return {\n name: 'math',\n toolbar: {\n icon: <Functions />,\n onClick: (value, onChange) => {\n log('[insertMath]');\n const math = inlineMath();\n const change = value.change().insertInline(math);\n onChange(change);\n },\n supports: node => node && node.object === 'inline' && node.type === 'math',\n /**\n * Return a react component function\n * @param node {Slate.Node}\n * @param value {Slate.Value}\n * @param onDone {(change?: Slate.Change, finishEditing :boolea) => void} - a function to call once the toolbar\n * has made any changes, call with the node.key and a data object.\n */\n CustomToolbarComp\n },\n schema: {\n document: { match: [{ type: 'math' }] }\n },\n\n pluginStyles: (node, parentNode, p) => {\n if (p) {\n return {\n position: 'absolute',\n top: 'initial'\n };\n }\n },\n\n renderNode: props => {\n if (props.node.type === 'math') {\n log('[renderNode]: data:', props.node.data);\n return <MathPreview {...props} />;\n }\n\n /**\n * Here for rendering mathml content\n */\n if (props.node.type === 'mathml') {\n const html = props.node.data.get('html');\n\n return <span {...props.attributes} dangerouslySetInnerHTML={{ __html: html }} />;\n }\n }\n };\n}\n\nMathPlugin.ROUND_BRACKETS = 'round_brackets';\nMathPlugin.SQUARE_BRACKETS = 'square_brackets';\nMathPlugin.DOLLAR = 'dollar';\nMathPlugin.DOUBLE_DOLLAR = 'double_dollar';\n\nexport const inlineMath = () =>\n Inline.create({\n object: 'inline',\n type: 'math',\n isVoid: true,\n data: {\n latex: ''\n }\n });\n\nconst htmlDecode = input => {\n const doc = new DOMParser().parseFromString(input, 'text/html');\n\n return doc.documentElement.textContent;\n};\n\nconst getTagName = el => {\n return ((el && el.tagName) || '').toLowerCase();\n};\n\n/**\n * Makes sure that strings that contain stuff like:\n * x<y are not transformed into x by the DOMParser because it thinks\n * that <y is the start of a dom element tag\n * @param input\n * @returns {*}\n */\nconst lessThanHandling = input => {\n const arrowSplit = input.split('<');\n\n // if we don't have at least 2 characters there's no point in checking\n if (input.length > 2) {\n return arrowSplit.reduce((st, part) => {\n /*\n We check if this element resulted is:\n div - continuation of a beginning of a HTML element\n /div - closing of a HTML tag\n br/> - beginning and closing of a html TAG\n */\n if (part.match(/<[a-zA-Z/][\\s\\S]*>/ig)) {\n return `${st}${st ? '<' : ''}${part}`;\n }\n\n return `${st}${st ? '<' : ''}${part}`;\n }, '');\n }\n\n return input;\n};\n\nexport const serialization = {\n deserialize(el) {\n const tagName = getTagName(el);\n /**\n * This is used for when there's a wrapper over the mathml element.\n * Because of this slate rule: \"Only allow block nodes or inline and text nodes in blocks.\"\n * The element that contains only the mathml is removed (along with the math) because it has\n * an inline child and the block is of type block\n * This is for legacy content only since our math rendering is valid for the core slate rules\n */\n const hasMathChild =\n BLOCK_TAGS[tagName] && el.childNodes.length === 1 && getTagName(el.firstChild) === 'math';\n log('[deserialize] name: ', tagName);\n\n /**\n * This is here in order to be able to render mathml content\n */\n if (tagName === 'math' || (el.dataset && el.dataset.type === 'mathml') || hasMathChild) {\n const newHtml = hasMathChild ? el.innerHTML : el.outerHTML;\n\n return {\n object: 'inline',\n isVoid: true,\n type: 'mathml',\n data: {\n html: newHtml\n }\n };\n }\n\n if (el.nodeType === TEXT_NODE) {\n return;\n }\n\n if (tagName !== 'span') {\n return;\n }\n\n const hasLatex = el.hasAttribute('data-latex') || el.hasAttribute('latex');\n\n if (hasLatex) {\n const latex = htmlDecode(el.innerHTML);\n const { unwrapped, wrapType } = unWrapMath(latex);\n log('[deserialize]: noBrackets: ', unwrapped, wrapType);\n return {\n object: 'inline',\n type: 'math',\n isVoid: true,\n nodes: [],\n data: {\n latex: unwrapped,\n wrapper: wrapType\n }\n };\n }\n },\n serialize(object) {\n if (object.type === 'math') {\n const l = object.data.get('latex');\n const wrapper = object.data.get('wrapper');\n log('[serialize] latex: ', l);\n const decoded = htmlDecode(lessThanHandling(l));\n return (\n <span data-latex=\"\" data-raw={decoded}>\n {wrapMath(decoded, wrapper)}\n </span>\n );\n }\n\n /**\n * Here for rendering mathml content\n */\n if (object.type === 'mathml') {\n const html = object.data.get('html');\n\n return <span data-type=\"mathml\" dangerouslySetInnerHTML={{ __html: html }} />;\n }\n }\n};\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/plugins/math/index.jsx"],"names":["log","TEXT_NODE","generateAdditionalKeys","keyData","map","key","name","latex","write","label","CustomToolbarComp","React","memo","props","node","value","onFocus","onBlur","onClick","pluginProps","math","keypadMode","customKeys","controlledKeypadMode","onDone","update","data","toObject","change","setNodeByKey","nextText","document","getNextText","moveFocusTo","moveAnchorTo","onToolbarDone","onChange","onDataChange","get","prev","next","nodeNext","keypadModeNext","controlledKeypadModeNext","keypadModeChanged","controlledKeypadModeChanged","equal","equals","propTypes","SlatePropTypes","isRequired","PropTypes","func","MathPlugin","toolbar","icon","inlineMath","insertInline","supports","object","type","schema","match","pluginStyles","parentNode","p","position","top","renderNode","html","attributes","__html","ROUND_BRACKETS","SQUARE_BRACKETS","DOLLAR","DOUBLE_DOLLAR","Inline","create","isVoid","htmlDecode","input","doc","DOMParser","parseFromString","documentElement","textContent","getTagName","el","tagName","toLowerCase","lessThanHandling","arrowSplit","split","length","reduce","st","part","serialization","deserialize","hasMathChild","BLOCK_TAGS","childNodes","firstChild","dataset","newHtml","innerHTML","outerHTML","nodeType","hasLatex","hasAttribute","unwrapped","wrapType","nodes","wrapper","serialize","l","decoded"],"mappings":"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","sourcesContent":["import Functions from '@material-ui/icons/Functions';\nimport { Inline } from 'slate';\nimport { MathPreview, MathToolbar } from '@pie-lib/math-toolbar';\nimport { wrapMath, unWrapMath } from '@pie-lib/math-rendering';\nimport React from 'react';\nimport debug from 'debug';\nimport SlatePropTypes from 'slate-prop-types';\nimport PropTypes from 'prop-types';\n\nimport { BLOCK_TAGS } from '../../serialization';\nconst log = debug('@pie-lib:editable-html:plugins:math');\n\nconst TEXT_NODE = 3;\n\nfunction generateAdditionalKeys(keyData = []) {\n return keyData.map(key => ({\n name: key,\n latex: key,\n write: key,\n label: key\n }));\n}\n\nexport const CustomToolbarComp = React.memo(\n props => {\n const { node, value, onFocus, onBlur, onClick } = props;\n const { pluginProps } = props || {};\n const { math } = pluginProps || {};\n const { keypadMode, customKeys, controlledKeypadMode = true } = math || {};\n\n const onDone = latex => {\n const update = {\n ...node.data.toObject(),\n latex\n };\n const change = value.change().setNodeByKey(node.key, { data: update });\n\n const nextText = value.document.getNextText(node.key);\n\n change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);\n\n props.onToolbarDone(change, false);\n };\n\n const onChange = latex => {\n const update = {\n ...node.data.toObject(),\n latex\n };\n const change = value.change().setNodeByKey(node.key, { data: update });\n log('call onToolbarChange:', change);\n props.onDataChange(node.key, update);\n };\n\n const latex = node.data.get('latex');\n\n return (\n <MathToolbar\n autoFocus\n additionalKeys={generateAdditionalKeys(customKeys)}\n latex={latex}\n onChange={onChange}\n onDone={onDone}\n onBlur={onBlur}\n onFocus={onFocus}\n onClick={onClick}\n keypadMode={keypadMode}\n controlledKeypadMode={controlledKeypadMode}\n />\n );\n },\n (prev, next) => {\n const { node, pluginProps: { math: { keypadMode, controlledKeypadMode } = {} } = {} } = prev;\n const {\n node: nodeNext,\n pluginProps: {\n math: { keypadMode: keypadModeNext, controlledKeypadMode: controlledKeypadModeNext } = {}\n } = {}\n } = next;\n const keypadModeChanged = keypadMode !== keypadModeNext;\n const controlledKeypadModeChanged = controlledKeypadMode !== controlledKeypadModeNext;\n\n const equal = node.equals(nodeNext);\n return equal && !keypadModeChanged && !controlledKeypadModeChanged;\n }\n);\n\nCustomToolbarComp.propTypes = {\n node: SlatePropTypes.node.isRequired,\n value: SlatePropTypes.value,\n onToolbarDone: PropTypes.func,\n onDataChange: PropTypes.func,\n onFocus: PropTypes.func,\n onClick: PropTypes.func,\n onBlur: PropTypes.func\n};\n\nexport default function MathPlugin() {\n return {\n name: 'math',\n toolbar: {\n icon: <Functions />,\n onClick: (value, onChange) => {\n log('[insertMath]');\n const math = inlineMath();\n const change = value.change().insertInline(math);\n onChange(change);\n },\n supports: node => node && node.object === 'inline' && node.type === 'math',\n /**\n * Return a react component function\n * @param node {Slate.Node}\n * @param value {Slate.Value}\n * @param onDone {(change?: Slate.Change, finishEditing :boolea) => void} - a function to call once the toolbar\n * has made any changes, call with the node.key and a data object.\n */\n CustomToolbarComp\n },\n schema: {\n document: { match: [{ type: 'math' }] }\n },\n\n pluginStyles: (node, parentNode, p) => {\n if (p) {\n return {\n position: 'absolute',\n top: 'initial'\n };\n }\n },\n\n renderNode: props => {\n if (props.node.type === 'math') {\n log('[renderNode]: data:', props.node.data);\n return <MathPreview {...props} />;\n }\n\n /**\n * Here for rendering mathml content\n */\n if (props.node.type === 'mathml') {\n const html = props.node.data.get('html');\n\n return <span {...props.attributes} dangerouslySetInnerHTML={{ __html: html }} />;\n }\n }\n };\n}\n\nMathPlugin.ROUND_BRACKETS = 'round_brackets';\nMathPlugin.SQUARE_BRACKETS = 'square_brackets';\nMathPlugin.DOLLAR = 'dollar';\nMathPlugin.DOUBLE_DOLLAR = 'double_dollar';\n\nexport const inlineMath = () =>\n Inline.create({\n object: 'inline',\n type: 'math',\n isVoid: true,\n data: {\n latex: ''\n }\n });\n\nconst htmlDecode = input => {\n const doc = new DOMParser().parseFromString(input, 'text/html');\n\n return doc.documentElement.textContent;\n};\n\nconst getTagName = el => {\n return ((el && el.tagName) || '').toLowerCase();\n};\n\n/**\n * Makes sure that strings that contain stuff like:\n * x<y are not transformed into x by the DOMParser because it thinks\n * that <y is the start of a dom element tag\n * @param input\n * @returns {*}\n */\nconst lessThanHandling = input => {\n const arrowSplit = input.split('<');\n\n // if we don't have at least 2 characters there's no point in checking\n if (input.length > 2) {\n return arrowSplit.reduce((st, part) => {\n /*\n We check if this element resulted is:\n div - continuation of a beginning of a HTML element\n /div - closing of a HTML tag\n br/> - beginning and closing of a html TAG\n */\n if (part.match(/<[a-zA-Z/][\\s\\S]*>/ig)) {\n return `${st}${st ? '<' : ''}${part}`;\n }\n\n return `${st}${st ? '<' : ''}${part}`;\n }, '');\n }\n\n return input;\n};\n\nexport const serialization = {\n deserialize(el) {\n const tagName = getTagName(el);\n /**\n * This is used for when there's a wrapper over the mathml element.\n * Because of this slate rule: \"Only allow block nodes or inline and text nodes in blocks.\"\n * The element that contains only the mathml is removed (along with the math) because it has\n * an inline child and the block is of type block\n * This is for legacy content only since our math rendering is valid for the core slate rules\n */\n const hasMathChild =\n BLOCK_TAGS[tagName] && el.childNodes.length === 1 && getTagName(el.firstChild) === 'math';\n log('[deserialize] name: ', tagName);\n\n /**\n * This is here in order to be able to render mathml content\n */\n if (tagName === 'math' || (el.dataset && el.dataset.type === 'mathml') || hasMathChild) {\n const newHtml = hasMathChild ? el.innerHTML : el.outerHTML;\n\n return {\n object: 'inline',\n isVoid: true,\n type: 'mathml',\n data: {\n html: newHtml\n }\n };\n }\n\n if (el.nodeType === TEXT_NODE) {\n return;\n }\n\n if (tagName !== 'span') {\n return;\n }\n\n const hasLatex = el.hasAttribute('data-latex') || el.hasAttribute('latex');\n\n if (hasLatex) {\n const latex = htmlDecode(el.innerHTML);\n const { unwrapped, wrapType } = unWrapMath(latex);\n log('[deserialize]: noBrackets: ', unwrapped, wrapType);\n return {\n object: 'inline',\n type: 'math',\n isVoid: true,\n nodes: [],\n data: {\n latex: unwrapped,\n wrapper: wrapType\n }\n };\n }\n },\n serialize(object) {\n if (object.type === 'math') {\n const l = object.data.get('latex');\n const wrapper = object.data.get('wrapper');\n log('[serialize] latex: ', l);\n const decoded = htmlDecode(lessThanHandling(l));\n return (\n <span data-latex=\"\" data-raw={decoded}>\n {wrapMath(decoded, wrapper)}\n </span>\n );\n }\n\n /**\n * Here for rendering mathml content\n */\n if (object.type === 'mathml') {\n const html = object.data.get('html');\n\n return <span data-type=\"mathml\" dangerouslySetInnerHTML={{ __html: html }} />;\n }\n }\n};\n"],"file":"index.js"}
|
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
6
8
|
exports["default"] = MediaPlugin;
|
|
7
9
|
exports.serialization = exports.insertDialog = void 0;
|
|
8
10
|
|
|
11
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
|
+
|
|
13
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
14
|
+
|
|
15
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
16
|
+
|
|
9
17
|
var _react = _interopRequireDefault(require("react"));
|
|
10
18
|
|
|
11
19
|
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
@@ -27,19 +35,9 @@ var _mediaWrapper = _interopRequireDefault(require("./media-wrapper"));
|
|
|
27
35
|
var _excluded = ["type", "callback"],
|
|
28
36
|
_excluded2 = ["src", "height", "width", "editing"];
|
|
29
37
|
|
|
30
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
31
|
-
|
|
32
38
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
33
39
|
|
|
34
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
|
|
35
|
-
|
|
36
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
37
|
-
|
|
38
|
-
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
39
|
-
|
|
40
|
-
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
41
|
-
|
|
42
|
-
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
40
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
43
41
|
|
|
44
42
|
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:image');
|
|
45
43
|
|
|
@@ -52,11 +50,9 @@ var removeDialogs = function removeDialogs() {
|
|
|
52
50
|
|
|
53
51
|
var insertDialog = function insertDialog(props) {
|
|
54
52
|
var newEl = document.createElement('div');
|
|
55
|
-
|
|
56
53
|
var type = props.type,
|
|
57
54
|
callback = props.callback,
|
|
58
|
-
rest =
|
|
59
|
-
|
|
55
|
+
rest = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
|
60
56
|
var initialBodyOverflow = document.body.style.overflow;
|
|
61
57
|
removeDialogs();
|
|
62
58
|
newEl.className = 'insert-media-dialog';
|
|
@@ -68,7 +64,7 @@ var insertDialog = function insertDialog(props) {
|
|
|
68
64
|
document.body.style.overflow = initialBodyOverflow;
|
|
69
65
|
};
|
|
70
66
|
|
|
71
|
-
var el = /*#__PURE__*/_react["default"].createElement(_mediaDialog["default"],
|
|
67
|
+
var el = /*#__PURE__*/_react["default"].createElement(_mediaDialog["default"], (0, _extends2["default"])({}, rest, {
|
|
72
68
|
type: type,
|
|
73
69
|
disablePortal: true,
|
|
74
70
|
open: true,
|
|
@@ -152,12 +148,11 @@ function MediaPlugin(type, opts) {
|
|
|
152
148
|
key = props.key;
|
|
153
149
|
var data = node.data;
|
|
154
150
|
var jsonData = data.toJSON();
|
|
155
|
-
|
|
156
151
|
var src = jsonData.src,
|
|
157
152
|
height = jsonData.height,
|
|
158
153
|
width = jsonData.width,
|
|
159
154
|
editing = jsonData.editing,
|
|
160
|
-
rest =
|
|
155
|
+
rest = (0, _objectWithoutProperties2["default"])(jsonData, _excluded2);
|
|
161
156
|
|
|
162
157
|
var handleEdit = function handleEdit() {
|
|
163
158
|
var change = opts.createChange();
|
|
@@ -209,11 +204,11 @@ function MediaPlugin(type, opts) {
|
|
|
209
204
|
style.height = "".concat(height, "px");
|
|
210
205
|
}
|
|
211
206
|
|
|
212
|
-
return /*#__PURE__*/_react["default"].createElement(_mediaWrapper["default"],
|
|
207
|
+
return /*#__PURE__*/_react["default"].createElement(_mediaWrapper["default"], (0, _extends2["default"])({
|
|
213
208
|
editor: true,
|
|
214
209
|
"data-type": type,
|
|
215
210
|
width: style.width
|
|
216
|
-
}, rest), /*#__PURE__*/_react["default"].createElement("iframe",
|
|
211
|
+
}, rest), /*#__PURE__*/_react["default"].createElement("iframe", (0, _extends2["default"])({
|
|
217
212
|
frameBorder: "0",
|
|
218
213
|
allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
|
|
219
214
|
allowFullScreen: true,
|
|
@@ -330,7 +325,7 @@ var serialization = {
|
|
|
330
325
|
src: src
|
|
331
326
|
});
|
|
332
327
|
|
|
333
|
-
return /*#__PURE__*/_react["default"].createElement("iframe",
|
|
328
|
+
return /*#__PURE__*/_react["default"].createElement("iframe", (0, _extends2["default"])({
|
|
334
329
|
"data-type": type,
|
|
335
330
|
src: src
|
|
336
331
|
}, divProps, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/plugins/media/index.jsx"],"names":["log","removeDialogs","prevDialogs","document","querySelectorAll","forEach","s","remove","insertDialog","props","newEl","createElement","type","callback","rest","initialBodyOverflow","body","style","overflow","className","handleClose","val","data","el","ReactDOM","render","appendChild","types","MediaPlugin","opts","toolbar","icon","onClick","value","onChange","inline","Inline","create","isVoid","editing","ends","undefined","height","title","starts","src","url","width","change","insertInline","nodeIsThere","findDescendant","d","key","c","removeNodeByKey","focus","setNodeByKey","supports","node","object","name","deleteNode","e","preventDefault","renderNode","jsonData","toJSON","handleEdit","createChange","edit","get","handleDelete","normalizeNode","textNodeMap","updateNodesArray","index","isMedia","indexOf","text","push","length","withoutNormalization","n","insertTextByKey","serialization","deserialize","dataset","typeIndex","parseInt","getAttribute","out","serialize","divProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Inline } from 'slate';\nimport TheatersIcon from '@material-ui/icons/Theaters';\nimport VolumeUpIcon from '@material-ui/icons/VolumeUp';\nimport debug from 'debug';\n\nimport MediaDialog from './media-dialog';\nimport MediaToolbar from './media-toolbar';\nimport MediaWrapper from './media-wrapper';\n\nconst log = debug('@pie-lib:editable-html:plugins:image');\n\nconst removeDialogs = () => {\n const prevDialogs = document.querySelectorAll('.insert-media-dialog');\n\n prevDialogs.forEach(s => s.remove());\n};\n\nexport const insertDialog = props => {\n const newEl = document.createElement('div');\n const { type, callback, ...rest } = props;\n const initialBodyOverflow = document.body.style.overflow;\n\n removeDialogs();\n\n newEl.className = 'insert-media-dialog';\n document.body.style.overflow = 'hidden';\n\n const handleClose = (val, data) => {\n callback(val, data);\n newEl.remove();\n document.body.style.overflow = initialBodyOverflow;\n };\n\n const el = (\n <MediaDialog {...rest} type={type} disablePortal={true} open={true} handleClose={handleClose} />\n );\n\n ReactDOM.render(el, newEl);\n\n document.body.appendChild(newEl);\n};\n\nconst types = ['audio', 'video'];\n\nexport default function MediaPlugin(type, opts) {\n const toolbar = {\n icon: type === 'audio' ? <VolumeUpIcon /> : <TheatersIcon />,\n onClick: (value, onChange) => {\n log('[toolbar] onClick');\n const inline = Inline.create({\n type: type,\n isVoid: true,\n data: {\n editing: false,\n ends: undefined,\n height: undefined,\n title: undefined,\n starts: undefined,\n src: undefined,\n url: undefined,\n width: undefined\n }\n });\n\n const change = value.change().insertInline(inline);\n onChange(change);\n insertDialog({\n type,\n callback: (val, data) => {\n const nodeIsThere = change.value.document.findDescendant(d => d.key === inline.key);\n\n if (nodeIsThere) {\n if (!val) {\n const c = change.removeNodeByKey(inline.key);\n onChange(c, () => opts.focus());\n } else {\n const c = change.setNodeByKey(inline.key, { data });\n onChange(c, () => opts.focus('beginning', nodeIsThere));\n }\n } else {\n opts.focus();\n }\n }\n });\n },\n supports: node => node.object === 'inline' && node.type === type\n };\n\n return {\n name: type,\n toolbar,\n deleteNode: (e, node, value, onChange) => {\n e.preventDefault();\n const change = value.change().removeNodeByKey(node.key);\n\n onChange(change);\n },\n renderNode(props) {\n if (props.node.type === type) {\n const { node, key } = props;\n const { data } = node;\n const jsonData = data.toJSON();\n const { src, height, width, editing, ...rest } = jsonData;\n const handleEdit = () => {\n const change = opts.createChange();\n const c = change.setNodeByKey(key, {\n data: {\n ...jsonData,\n editing: true\n }\n });\n\n opts.onChange(c, () => {\n insertDialog({\n ...jsonData,\n edit: true,\n type,\n callback: (val, data) => {\n const { key } = node;\n\n const nodeIsThere = change.value.document.findDescendant(\n d => d.type === type && d.data.get('editing')\n );\n\n if (nodeIsThere && val) {\n const c = change.setNodeByKey(key, { data, editing: false });\n opts.onChange(c, () => opts.focus('beginning', nodeIsThere));\n } else {\n opts.focus();\n }\n }\n });\n });\n };\n const handleDelete = () => {\n const change = opts.createChange();\n const c = change.removeNodeByKey(node.key);\n\n opts.onChange(c);\n };\n const style = {};\n\n if (width) {\n style.width = `${width}px`;\n }\n\n if (height) {\n style.height = `${height}px`;\n }\n\n return (\n <MediaWrapper editor data-type={type} width={style.width} {...rest}>\n <iframe\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n src={src}\n editing={editing ? 1 : 0}\n {...rest}\n {...style}\n />\n <MediaToolbar onEdit={handleEdit} onRemove={handleDelete} />\n </MediaWrapper>\n );\n }\n },\n normalizeNode: node => {\n const textNodeMap = {};\n const updateNodesArray = [];\n let index = 0;\n\n if (node.object !== 'document') return;\n\n node.findDescendant(d => {\n if (d.object === 'text') {\n textNodeMap[index] = d;\n }\n\n const isMedia = types.indexOf(d.type) >= 0;\n\n if (isMedia) {\n if (index > 0 && textNodeMap[index - 1] && textNodeMap[index - 1].text === '') {\n updateNodesArray.push(textNodeMap[index - 1]);\n }\n }\n\n index++;\n });\n\n if (!updateNodesArray.length) return;\n\n return change => {\n change.withoutNormalization(() => {\n updateNodesArray.forEach(n => change.insertTextByKey(n.key, 0, ' '));\n });\n };\n }\n };\n}\n\nexport const serialization = {\n deserialize(el /*, next*/) {\n const type = el.dataset && el.dataset.type;\n const typeIndex = types.indexOf(type);\n\n if (typeIndex < 0) return;\n\n const { ends, starts, title, editing, url } = el.dataset || {};\n\n log('deserialize: ', name);\n const width = parseInt(el.getAttribute('width'), 10) || null;\n const height = parseInt(el.getAttribute('height'), 10) || null;\n\n const out = {\n object: 'inline',\n type: type,\n isVoid: true,\n data: {\n src: el.getAttribute('src'),\n editing,\n ends,\n height,\n starts,\n title,\n width,\n url\n }\n };\n log('return object: ', out);\n return out;\n },\n serialize(object /*, children*/) {\n const typeIndex = types.indexOf(object.type);\n\n if (typeIndex < 0) return;\n\n const type = types[typeIndex];\n\n const { data } = object;\n const editing = data.get('editing');\n const ends = data.get('ends');\n const src = data.get('src');\n const starts = data.get('starts');\n const title = data.get('title');\n const width = data.get('width');\n const height = data.get('height');\n const url = data.get('url');\n const style = {};\n\n if (width) {\n style.width = `${width}px`;\n }\n\n if (height) {\n style.height = `${height}px`;\n }\n\n const divProps = {\n 'data-editing': editing,\n 'data-ends': ends,\n 'data-starts': starts,\n 'data-title': title,\n 'data-url': url\n };\n const props = {\n ...style,\n src\n };\n\n return (\n <iframe\n data-type={type}\n src={src}\n {...divProps}\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n {...props}\n />\n );\n }\n};\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/plugins/media/index.jsx"],"names":["log","removeDialogs","prevDialogs","document","querySelectorAll","forEach","s","remove","insertDialog","props","newEl","createElement","type","callback","rest","initialBodyOverflow","body","style","overflow","className","handleClose","val","data","el","ReactDOM","render","appendChild","types","MediaPlugin","opts","toolbar","icon","onClick","value","onChange","inline","Inline","create","isVoid","editing","ends","undefined","height","title","starts","src","url","width","change","insertInline","nodeIsThere","findDescendant","d","key","c","removeNodeByKey","focus","setNodeByKey","supports","node","object","name","deleteNode","e","preventDefault","renderNode","jsonData","toJSON","handleEdit","createChange","edit","get","handleDelete","normalizeNode","textNodeMap","updateNodesArray","index","isMedia","indexOf","text","push","length","withoutNormalization","n","insertTextByKey","serialization","deserialize","dataset","typeIndex","parseInt","getAttribute","out","serialize","divProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Inline } from 'slate';\nimport TheatersIcon from '@material-ui/icons/Theaters';\nimport VolumeUpIcon from '@material-ui/icons/VolumeUp';\nimport debug from 'debug';\n\nimport MediaDialog from './media-dialog';\nimport MediaToolbar from './media-toolbar';\nimport MediaWrapper from './media-wrapper';\n\nconst log = debug('@pie-lib:editable-html:plugins:image');\n\nconst removeDialogs = () => {\n const prevDialogs = document.querySelectorAll('.insert-media-dialog');\n\n prevDialogs.forEach(s => s.remove());\n};\n\nexport const insertDialog = props => {\n const newEl = document.createElement('div');\n const { type, callback, ...rest } = props;\n const initialBodyOverflow = document.body.style.overflow;\n\n removeDialogs();\n\n newEl.className = 'insert-media-dialog';\n document.body.style.overflow = 'hidden';\n\n const handleClose = (val, data) => {\n callback(val, data);\n newEl.remove();\n document.body.style.overflow = initialBodyOverflow;\n };\n\n const el = (\n <MediaDialog {...rest} type={type} disablePortal={true} open={true} handleClose={handleClose} />\n );\n\n ReactDOM.render(el, newEl);\n\n document.body.appendChild(newEl);\n};\n\nconst types = ['audio', 'video'];\n\nexport default function MediaPlugin(type, opts) {\n const toolbar = {\n icon: type === 'audio' ? <VolumeUpIcon /> : <TheatersIcon />,\n onClick: (value, onChange) => {\n log('[toolbar] onClick');\n const inline = Inline.create({\n type: type,\n isVoid: true,\n data: {\n editing: false,\n ends: undefined,\n height: undefined,\n title: undefined,\n starts: undefined,\n src: undefined,\n url: undefined,\n width: undefined\n }\n });\n\n const change = value.change().insertInline(inline);\n onChange(change);\n insertDialog({\n type,\n callback: (val, data) => {\n const nodeIsThere = change.value.document.findDescendant(d => d.key === inline.key);\n\n if (nodeIsThere) {\n if (!val) {\n const c = change.removeNodeByKey(inline.key);\n onChange(c, () => opts.focus());\n } else {\n const c = change.setNodeByKey(inline.key, { data });\n onChange(c, () => opts.focus('beginning', nodeIsThere));\n }\n } else {\n opts.focus();\n }\n }\n });\n },\n supports: node => node.object === 'inline' && node.type === type\n };\n\n return {\n name: type,\n toolbar,\n deleteNode: (e, node, value, onChange) => {\n e.preventDefault();\n const change = value.change().removeNodeByKey(node.key);\n\n onChange(change);\n },\n renderNode(props) {\n if (props.node.type === type) {\n const { node, key } = props;\n const { data } = node;\n const jsonData = data.toJSON();\n const { src, height, width, editing, ...rest } = jsonData;\n const handleEdit = () => {\n const change = opts.createChange();\n const c = change.setNodeByKey(key, {\n data: {\n ...jsonData,\n editing: true\n }\n });\n\n opts.onChange(c, () => {\n insertDialog({\n ...jsonData,\n edit: true,\n type,\n callback: (val, data) => {\n const { key } = node;\n\n const nodeIsThere = change.value.document.findDescendant(\n d => d.type === type && d.data.get('editing')\n );\n\n if (nodeIsThere && val) {\n const c = change.setNodeByKey(key, { data, editing: false });\n opts.onChange(c, () => opts.focus('beginning', nodeIsThere));\n } else {\n opts.focus();\n }\n }\n });\n });\n };\n const handleDelete = () => {\n const change = opts.createChange();\n const c = change.removeNodeByKey(node.key);\n\n opts.onChange(c);\n };\n const style = {};\n\n if (width) {\n style.width = `${width}px`;\n }\n\n if (height) {\n style.height = `${height}px`;\n }\n\n return (\n <MediaWrapper editor data-type={type} width={style.width} {...rest}>\n <iframe\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n src={src}\n editing={editing ? 1 : 0}\n {...rest}\n {...style}\n />\n <MediaToolbar onEdit={handleEdit} onRemove={handleDelete} />\n </MediaWrapper>\n );\n }\n },\n normalizeNode: node => {\n const textNodeMap = {};\n const updateNodesArray = [];\n let index = 0;\n\n if (node.object !== 'document') return;\n\n node.findDescendant(d => {\n if (d.object === 'text') {\n textNodeMap[index] = d;\n }\n\n const isMedia = types.indexOf(d.type) >= 0;\n\n if (isMedia) {\n if (index > 0 && textNodeMap[index - 1] && textNodeMap[index - 1].text === '') {\n updateNodesArray.push(textNodeMap[index - 1]);\n }\n }\n\n index++;\n });\n\n if (!updateNodesArray.length) return;\n\n return change => {\n change.withoutNormalization(() => {\n updateNodesArray.forEach(n => change.insertTextByKey(n.key, 0, ' '));\n });\n };\n }\n };\n}\n\nexport const serialization = {\n deserialize(el /*, next*/) {\n const type = el.dataset && el.dataset.type;\n const typeIndex = types.indexOf(type);\n\n if (typeIndex < 0) return;\n\n const { ends, starts, title, editing, url } = el.dataset || {};\n\n log('deserialize: ', name);\n const width = parseInt(el.getAttribute('width'), 10) || null;\n const height = parseInt(el.getAttribute('height'), 10) || null;\n\n const out = {\n object: 'inline',\n type: type,\n isVoid: true,\n data: {\n src: el.getAttribute('src'),\n editing,\n ends,\n height,\n starts,\n title,\n width,\n url\n }\n };\n log('return object: ', out);\n return out;\n },\n serialize(object /*, children*/) {\n const typeIndex = types.indexOf(object.type);\n\n if (typeIndex < 0) return;\n\n const type = types[typeIndex];\n\n const { data } = object;\n const editing = data.get('editing');\n const ends = data.get('ends');\n const src = data.get('src');\n const starts = data.get('starts');\n const title = data.get('title');\n const width = data.get('width');\n const height = data.get('height');\n const url = data.get('url');\n const style = {};\n\n if (width) {\n style.width = `${width}px`;\n }\n\n if (height) {\n style.height = `${height}px`;\n }\n\n const divProps = {\n 'data-editing': editing,\n 'data-ends': ends,\n 'data-starts': starts,\n 'data-title': title,\n 'data-url': url\n };\n const props = {\n ...style,\n src\n };\n\n return (\n <iframe\n data-type={type}\n src={src}\n {...divProps}\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n {...props}\n />\n );\n }\n};\n"],"file":"index.js"}
|
|
@@ -1,12 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports["default"] = exports.MediaDialog = void 0;
|
|
9
9
|
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
|
|
14
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
15
|
+
|
|
16
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
+
|
|
18
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
19
|
+
|
|
20
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
21
|
+
|
|
22
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
23
|
+
|
|
10
24
|
var _react = _interopRequireDefault(require("react"));
|
|
11
25
|
|
|
12
26
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
@@ -29,30 +43,10 @@ var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
|
|
|
29
43
|
|
|
30
44
|
var _TextField = _interopRequireDefault(require("@material-ui/core/TextField"));
|
|
31
45
|
|
|
32
|
-
function
|
|
33
|
-
|
|
34
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
35
|
-
|
|
36
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
37
|
-
|
|
38
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
39
|
-
|
|
40
|
-
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
41
|
-
|
|
42
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
43
|
-
|
|
44
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
45
|
-
|
|
46
|
-
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
|
|
47
|
-
|
|
48
|
-
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
46
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
49
47
|
|
|
50
48
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
51
49
|
|
|
52
|
-
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
53
|
-
|
|
54
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
55
|
-
|
|
56
50
|
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:media:dialog');
|
|
57
51
|
|
|
58
52
|
var matchYoutubeUrl = function matchYoutubeUrl(url) {
|
|
@@ -108,18 +102,16 @@ var typeMap = {
|
|
|
108
102
|
};
|
|
109
103
|
|
|
110
104
|
var MediaDialog = /*#__PURE__*/function (_React$Component) {
|
|
111
|
-
|
|
105
|
+
(0, _inherits2["default"])(MediaDialog, _React$Component);
|
|
112
106
|
|
|
113
107
|
var _super = _createSuper(MediaDialog);
|
|
114
108
|
|
|
115
109
|
function MediaDialog(props) {
|
|
116
110
|
var _this;
|
|
117
111
|
|
|
118
|
-
|
|
119
|
-
|
|
112
|
+
(0, _classCallCheck2["default"])(this, MediaDialog);
|
|
120
113
|
_this = _super.call(this, props);
|
|
121
|
-
|
|
122
|
-
_defineProperty(_assertThisInitialized(_this), "formatUrl", function () {
|
|
114
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "formatUrl", function () {
|
|
123
115
|
var _this$state = _this.state,
|
|
124
116
|
url = _this$state.url,
|
|
125
117
|
urlToUse = _this$state.urlToUse,
|
|
@@ -173,12 +165,10 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
|
|
|
173
165
|
updating: true
|
|
174
166
|
}, callback);
|
|
175
167
|
});
|
|
176
|
-
|
|
177
|
-
_defineProperty(_assertThisInitialized(_this), "handleStateChange", function (newState) {
|
|
168
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleStateChange", function (newState) {
|
|
178
169
|
return _this.setState(newState, _this.formatUrl);
|
|
179
170
|
});
|
|
180
|
-
|
|
181
|
-
_defineProperty(_assertThisInitialized(_this), "urlChange", function (e) {
|
|
171
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "urlChange", function (e) {
|
|
182
172
|
var _ref = e.target || {},
|
|
183
173
|
value = _ref.value;
|
|
184
174
|
|
|
@@ -236,14 +226,12 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
|
|
|
236
226
|
invalid: true
|
|
237
227
|
});
|
|
238
228
|
});
|
|
239
|
-
|
|
240
|
-
_defineProperty(_assertThisInitialized(_this), "changeHandler", function (type) {
|
|
229
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeHandler", function (type) {
|
|
241
230
|
return function (e) {
|
|
242
|
-
return _this.handleStateChange(
|
|
231
|
+
return _this.handleStateChange((0, _defineProperty2["default"])({}, type, e.target.value));
|
|
243
232
|
};
|
|
244
233
|
});
|
|
245
|
-
|
|
246
|
-
_defineProperty(_assertThisInitialized(_this), "handleDone", function (val) {
|
|
234
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleDone", function (val) {
|
|
247
235
|
var handleClose = _this.props.handleClose;
|
|
248
236
|
|
|
249
237
|
if (!val) {
|
|
@@ -268,7 +256,6 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
|
|
|
268
256
|
});
|
|
269
257
|
}
|
|
270
258
|
});
|
|
271
|
-
|
|
272
259
|
var src = props.src,
|
|
273
260
|
_starts = props.starts,
|
|
274
261
|
_ends = props.ends,
|
|
@@ -289,7 +276,7 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
|
|
|
289
276
|
return _this;
|
|
290
277
|
}
|
|
291
278
|
|
|
292
|
-
|
|
279
|
+
(0, _createClass2["default"])(MediaDialog, [{
|
|
293
280
|
key: "componentDidMount",
|
|
294
281
|
value: function componentDidMount() {
|
|
295
282
|
if (this.props.url) {
|
|
@@ -410,13 +397,11 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
|
|
|
410
397
|
}, edit ? 'Update' : 'Insert')));
|
|
411
398
|
}
|
|
412
399
|
}]);
|
|
413
|
-
|
|
414
400
|
return MediaDialog;
|
|
415
401
|
}(_react["default"].Component);
|
|
416
402
|
|
|
417
403
|
exports.MediaDialog = MediaDialog;
|
|
418
|
-
|
|
419
|
-
_defineProperty(MediaDialog, "propTypes", {
|
|
404
|
+
(0, _defineProperty2["default"])(MediaDialog, "propTypes", {
|
|
420
405
|
classes: _propTypes["default"].object.isRequired,
|
|
421
406
|
open: _propTypes["default"].bool,
|
|
422
407
|
edit: _propTypes["default"].bool,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/plugins/media/media-dialog.js"],"names":["log","matchYoutubeUrl","url","p","match","matchVimeoUrl","test","matchSoundCloudUrl","regexp","makeApiRequest","Promise","resolve","fetch","then","response","json","d","document","createElement","innerHTML","html","iframe","querySelector","src","err","typeMap","video","audio","MediaDialog","props","state","urlToUse","starts","ends","isYoutube","isVimeo","formattedUrl","params","paramName","paramStart","push","length","join","callback","setState","updating","newState","formatUrl","e","target","value","type","handleStateChange","invalid","regExp","id","replace","val","handleClose","height","width","urlChange","classes","open","disablePortal","edit","paper","handleDone","root","properties","changeHandler","undefined","React","Component","PropTypes","object","isRequired","bool","func","string","number","styles","minWidth","padding"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,6CAAN,CAAZ;;AAEA,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,CAAAC,GAAG,EAAI;AAC7B,MAAI,CAACA,GAAL,EAAU;AACR,WAAO,KAAP;AACD;;AAED,MAAMC,CAAC,GAAG,0HAAV;;AACA,MAAID,GAAG,CAACE,KAAJ,CAAUD,CAAV,CAAJ,EAAkB;AAChB,WAAOD,GAAG,CAACE,KAAJ,CAAUD,CAAV,EAAa,CAAb,CAAP;AACD;;AACD,SAAO,KAAP;AACD,CAVD;;AAYA,IAAME,aAAa,GAAG,SAAhBA,aAAgB,CAAAH,GAAG;AAAA,SACvBA,GAAG,IACH,8HAA8HI,IAA9H,CACEJ,GADF,CAFuB;AAAA,CAAzB;;AAMA,IAAMK,kBAAkB,GAAG,SAArBA,kBAAqB,CAAAL,GAAG,EAAI;AAChC,MAAI,CAACA,GAAL,EAAU;AACR,WAAO,KAAP;AACD;;AAED,MAAMM,MAAM,GAAG,8CAAf;AACA,SAAON,GAAG,CAACE,KAAJ,CAAUI,MAAV,KAAqBN,GAAG,CAACE,KAAJ,CAAUI,MAAV,EAAkB,CAAlB,CAA5B;AACD,CAPD;;AASA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAAAP,GAAG,EAAI;AAC5B,SAAO,IAAIQ,OAAJ,CAAY,UAAAC,OAAO,EAAI;AAC5B,QAAI;AACFC,MAAAA,KAAK,yDAAkDV,GAAlD,EAAL,CACGW,IADH,CACQ,UAAAC,QAAQ;AAAA,eAAIA,QAAQ,CAACC,IAAT,EAAJ;AAAA,OADhB,EAEGF,IAFH,CAEQ,UAAAE,IAAI,EAAI;AACZ,YAAMC,CAAC,GAAGC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAV;AAEAF,QAAAA,CAAC,CAACG,SAAF,GAAcJ,IAAI,CAACK,IAAnB;AAEA,YAAMC,MAAM,GAAGL,CAAC,CAACM,aAAF,CAAgB,QAAhB,CAAf;AAEAX,QAAAA,OAAO,CAACU,MAAM,CAACE,GAAR,CAAP;AACD,OAVH,WAWS,UAAAC,GAAG,EAAI;AACZb,QAAAA,OAAO,CAAC,EAAD,CAAP;AACAX,QAAAA,GAAG,CAACwB,GAAD,CAAH;AACD,OAdH;AAeD,KAhBD,CAgBE,OAAOA,GAAP,EAAY;AACZb,MAAAA,OAAO,CAAC,EAAD,CAAP;AACD;AACF,GApBM,CAAP;AAqBD,CAtBD;;AAwBA,IAAMc,OAAO,GAAG;AACdC,EAAAA,KAAK,EAAE,OADO;AAEdC,EAAAA,KAAK,EAAE;AAFO,CAAhB;;IAKaC,W;;;;;AAiBX,uBAAYC,KAAZ,EAAmB;AAAA;;AAAA;;AACjB,8BAAMA,KAAN;;AADiB,gEA2BP,YAAM;AAChB,wBAAwC,MAAKC,KAA7C;AAAA,UAAQ5B,GAAR,eAAQA,GAAR;AAAA,UAAa6B,QAAb,eAAaA,QAAb;AAAA,UAAuBC,MAAvB,eAAuBA,MAAvB;AAAA,UAA+BC,IAA/B,eAA+BA,IAA/B;AACA,UAAMC,SAAS,GAAGjC,eAAe,CAACC,GAAD,CAAjC;AACA,UAAMiC,OAAO,GAAG9B,aAAa,CAACH,GAAD,CAA7B;AACA,UAAIkC,YAAY,GAAGL,QAAnB;;AAEA,UAAI,CAACG,SAAS,IAAIC,OAAd,KAA0BJ,QAA9B,EAAwC;AACtC,YAAMM,MAAM,GAAG,EAAf;AAEA,YAAIC,SAAJ;AACA,YAAIC,UAAJ;;AAEA,gBAAQ,IAAR;AACE,eAAKJ,OAAL;AACEG,YAAAA,SAAS,GAAG,GAAZ;AACAC,YAAAA,UAAU,GAAG,GAAb;AACA;;AACF,eAAKL,SAAL;AACEI,YAAAA,SAAS,GAAG,OAAZ;AACAC,YAAAA,UAAU,GAAG,GAAb;AACA;;AACF;AACED,YAAAA,SAAS,GAAG,OAAZ;AACAC,YAAAA,UAAU,GAAG,GAAb;AAXJ;;AAcA,YAAIP,MAAJ,EAAY;AACVK,UAAAA,MAAM,CAACG,IAAP,WAAeF,SAAf,cAA4BN,MAA5B;AACD;;AAED,YAAIC,IAAJ,EAAU;AACRI,UAAAA,MAAM,CAACG,IAAP,eAAmBP,IAAnB;AACD;;AAEDG,QAAAA,YAAY,aAAML,QAAN,SAAiBM,MAAM,CAACI,MAAP,GAAgBF,UAAhB,GAA6B,EAA9C,SAAmDF,MAAM,CAACK,IAAP,CAAY,GAAZ,CAAnD,CAAZ;AACD;;AAED,UAAMC,QAAQ,GAAG,SAAXA,QAAW;AAAA,eAAM,MAAKC,QAAL,CAAc;AAAER,UAAAA,YAAY,EAAZA,YAAF;AAAgBS,UAAAA,QAAQ,EAAE;AAA1B,SAAd,CAAN;AAAA,OAAjB;;AAEA,YAAKD,QAAL,CAAc;AAAER,QAAAA,YAAY,EAAE,IAAhB;AAAsBS,QAAAA,QAAQ,EAAE;AAAhC,OAAd,EAAsDF,QAAtD;AACD,KAnEkB;;AAAA,wEAqEC,UAAAG,QAAQ;AAAA,aAAI,MAAKF,QAAL,CAAcE,QAAd,EAAwB,MAAKC,SAA7B,CAAJ;AAAA,KArET;;AAAA,gEAuEP,UAAAC,CAAC,EAAI;AACf,iBAAkBA,CAAC,CAACC,MAAF,IAAY,EAA9B;AAAA,UAAQC,KAAR,QAAQA,KAAR;;AACA,UAAQC,IAAR,GAAiB,MAAKtB,KAAtB,CAAQsB,IAAR;;AAEA,UAAIA,IAAI,IAAIA,IAAI,KAAK,OAArB,EAA8B;AAC5B,YAAI5C,kBAAkB,CAAC2C,KAAD,CAAtB,EAA+B;AAC7BzC,UAAAA,cAAc,CAACyC,KAAD,CAAd,CACGrC,IADH,CACQ,UAAAkB,QAAQ,EAAI;AAChB,kBAAKqB,iBAAL,CAAuB;AACrBrB,cAAAA,QAAQ,EAARA,QADqB;AAErBsB,cAAAA,OAAO,EAAE,CAACtB,QAFW;AAGrB7B,cAAAA,GAAG,EAAEgD;AAHgB,aAAvB;AAKD,WAPH,WAQSlD,GART;AAUA;AACD;AACF,OAdD,MAcO,IAAImD,IAAI,IAAIA,IAAI,KAAK,OAArB,EAA8B;AACnC,YAAIlD,eAAe,CAACiD,KAAD,CAAnB,EAA4B;AAC1B,cAAMI,MAAM,GAAG,+DAAf;AACA,cAAMlD,KAAK,GAAG8C,KAAK,CAAC9C,KAAN,CAAYkD,MAAZ,CAAd;AACA,cAAMC,EAAE,GAAGnD,KAAK,CAAC,CAAD,CAAhB;AACA,cAAM2B,QAAQ,uCAAgCwB,EAAhC,CAAd;AAEAvD,UAAAA,GAAG,CAAC,YAAD,CAAH;;AAEA,gBAAKoD,iBAAL,CAAuB;AACrBrB,YAAAA,QAAQ,EAARA,QADqB;AAErB7B,YAAAA,GAAG,EAAEgD,KAFgB;AAGrBG,YAAAA,OAAO,EAAE;AAHY,WAAvB;;AAMA;AACD;;AAED,YAAIhD,aAAa,CAAC6C,KAAD,CAAjB,EAA0B;AACxB,cAAMK,GAAE,GAAGL,KAAK,CAACM,OAAN,CAAc,oBAAd,EAAoC,IAApC,CAAX;;AACA,cAAMzB,UAAQ,4CAAqCwB,GAArC,CAAd;;AAEAvD,UAAAA,GAAG,CAAC,UAAD,CAAH;;AAEA,gBAAKoD,iBAAL,CAAuB;AACrBrB,YAAAA,QAAQ,EAARA,UADqB;AAErB7B,YAAAA,GAAG,EAAEgD,KAFgB;AAGrBjB,YAAAA,IAAI,EAAE,IAHe;AAIrBoB,YAAAA,OAAO,EAAE;AAJY,WAAvB;;AAOA;AACD;AACF;;AAED,YAAKD,iBAAL,CAAuB;AACrBrB,QAAAA,QAAQ,EAAE,IADW;AAErB7B,QAAAA,GAAG,EAAE,IAFgB;AAGrBmD,QAAAA,OAAO,EAAE;AAHY,OAAvB;AAKD,KAjIkB;;AAAA,oEAmIH,UAAAF,IAAI;AAAA,aAAI,UAAAH,CAAC;AAAA,eAAI,MAAKI,iBAAL,qBAA0BD,IAA1B,EAAiCH,CAAC,CAACC,MAAF,CAASC,KAA1C,EAAJ;AAAA,OAAL;AAAA,KAnID;;AAAA,iEAqIN,UAAAO,GAAG,EAAI;AAClB,UAAQC,WAAR,GAAwB,MAAK7B,KAA7B,CAAQ6B,WAAR;;AAEA,UAAI,CAACD,GAAL,EAAU;AACRC,QAAAA,WAAW,CAACD,GAAD,CAAX;AACD,OAFD,MAEO;AACL,2BAAqE,MAAK3B,KAA1E;AAAA,YAAQG,IAAR,gBAAQA,IAAR;AAAA,YAAc0B,MAAd,gBAAcA,MAAd;AAAA,YAAsBzD,GAAtB,gBAAsBA,GAAtB;AAAA,YAA2B6B,QAA3B,gBAA2BA,QAA3B;AAAA,YAAqCK,YAArC,gBAAqCA,YAArC;AAAA,YAAmDJ,MAAnD,gBAAmDA,MAAnD;AAAA,YAA2D4B,KAA3D,gBAA2DA,KAA3D;AAEAF,QAAAA,WAAW,CAACD,GAAD,EAAM;AACfxB,UAAAA,IAAI,EAAJA,IADe;AAEf0B,UAAAA,MAAM,EAANA,MAFe;AAGf3B,UAAAA,MAAM,EAANA,MAHe;AAIf4B,UAAAA,KAAK,EAALA,KAJe;AAKf1D,UAAAA,GAAG,EAAHA,GALe;AAMf6B,UAAAA,QAAQ,EAARA,QANe;AAOfR,UAAAA,GAAG,EAAEa;AAPU,SAAN,CAAX;AASD;AACF,KAvJkB;;AAGjB,QAAQb,GAAR,GAA4DM,KAA5D,CAAQN,GAAR;AAAA,QAAaS,OAAb,GAA4DH,KAA5D,CAAaG,MAAb;AAAA,QAAqBC,KAArB,GAA4DJ,KAA5D,CAAqBI,IAArB;AAAA,QAA2B0B,OAA3B,GAA4D9B,KAA5D,CAA2B8B,MAA3B;AAAA,QAAmCzD,IAAnC,GAA4D2B,KAA5D,CAAmC3B,GAAnC;AAAA,QAAwC6B,SAAxC,GAA4DF,KAA5D,CAAwCE,QAAxC;AAAA,QAAkD6B,MAAlD,GAA4D/B,KAA5D,CAAkD+B,KAAlD;AAEA,UAAK9B,KAAL,GAAa;AACXG,MAAAA,IAAI,EAAEA,KAAI,IAAI,CADH;AAEX/B,MAAAA,GAAG,EAAEA,IAFM;AAGX6B,MAAAA,QAAQ,EAAEA,SAHC;AAIXK,MAAAA,YAAY,EAAEb,GAJH;AAKXoC,MAAAA,MAAM,EAAEA,OAAM,IAAI,GALP;AAMXN,MAAAA,OAAO,EAAE,KANE;AAOXrB,MAAAA,MAAM,EAAEA,OAAM,IAAI,CAPP;AAQX4B,MAAAA,KAAK,EAAEA,MAAK,IAAI;AARL,KAAb;AALiB;AAelB;;;;WAED,6BAAoB;AAClB,UAAI,KAAK/B,KAAL,CAAW3B,GAAf,EAAoB;AAClB,aAAK2D,SAAL,CAAe;AACbZ,UAAAA,MAAM,EAAE;AACNC,YAAAA,KAAK,EAAE,KAAKrB,KAAL,CAAW3B;AADZ;AADK,SAAf;AAKD;AACF;;;WAgID,kBAAS;AAAA;;AACP,wBAAqD,KAAK2B,KAA1D;AAAA,UAAQiC,OAAR,eAAQA,OAAR;AAAA,UAAiBC,IAAjB,eAAiBA,IAAjB;AAAA,UAAuBC,aAAvB,eAAuBA,aAAvB;AAAA,UAAsCb,IAAtC,eAAsCA,IAAtC;AAAA,UAA4Cc,IAA5C,eAA4CA,IAA5C;AACA,yBAA8E,KAAKnC,KAAnF;AAAA,UAAQG,IAAR,gBAAQA,IAAR;AAAA,UAAc0B,MAAd,gBAAcA,MAAd;AAAA,UAAsBN,OAAtB,gBAAsBA,OAAtB;AAAA,UAA+BrB,MAA/B,gBAA+BA,MAA/B;AAAA,UAAuC4B,KAAvC,gBAAuCA,KAAvC;AAAA,UAA8C1D,GAA9C,gBAA8CA,GAA9C;AAAA,UAAmDkC,YAAnD,gBAAmDA,YAAnD;AAAA,UAAiES,QAAjE,gBAAiEA,QAAjE;AACA,UAAMX,SAAS,GAAGjC,eAAe,CAACC,GAAD,CAAjC;AAEA,0BACE,gCAAC,kBAAD;AACE,QAAA,OAAO,EAAE;AACPgE,UAAAA,KAAK,EAAEJ,OAAO,CAACI;AADR,SADX;AAIE,QAAA,aAAa,EAAEF,aAJjB;AAKE,QAAA,IAAI,EAAED,IALR;AAME,QAAA,OAAO,EAAE;AAAA,iBAAM,MAAI,CAACI,UAAL,CAAgB,KAAhB,CAAN;AAAA,SANX;AAOE,2BAAgB;AAPlB,sBASE,gCAAC,uBAAD;AAAa,QAAA,EAAE,EAAC;AAAhB,oBAA4C1C,OAAO,CAAC0B,IAAD,CAAnD,CATF,eAUE,gCAAC,yBAAD,qBACE,gCAAC,6BAAD,QACGA,IAAI,KAAK,OAAT,GAAmB,6BAAnB,GAAmD,uBADtD,CADF,eAIE,gCAAC,qBAAD;AACE,QAAA,SAAS,MADX;AAEE,QAAA,KAAK,EAAEE,OAFT;AAGE,QAAA,UAAU,EAAEA,OAAO,GAAG,aAAH,GAAmB,EAHxC;AAIE,QAAA,MAAM,EAAC,OAJT;AAKE,QAAA,EAAE,EAAC,MALL;AAME,QAAA,KAAK,EAAC,KANR;AAOE,QAAA,WAAW,yBAAkBF,IAAlB,QAPb;AAQE,QAAA,IAAI,EAAC,MARP;AASE,QAAA,QAAQ,EAAE,KAAKU,SATjB;AAUE,QAAA,KAAK,EAAE3D,GAVT;AAWE,QAAA,SAAS;AAXX,QAJF,EAiBGiD,IAAI,KAAK,OAAT,iBACC,gCAAC,yBAAD;AACE,QAAA,OAAO,EAAE;AACPiB,UAAAA,IAAI,EAAEN,OAAO,CAACO;AADP;AADX,sBAKE,gCAAC,6BAAD,2BALF,eAME,gCAAC,qBAAD;AACE,QAAA,SAAS,MADX;AAEE,QAAA,MAAM,EAAC,OAFT;AAGE,QAAA,EAAE,EAAC,OAHL;AAIE,QAAA,KAAK,EAAC,OAJR;AAKE,QAAA,IAAI,EAAC,QALP;AAME,QAAA,WAAW,EAAC,OANd;AAOE,QAAA,KAAK,EAAET,KAPT;AAQE,QAAA,QAAQ,EAAE,KAAKU,aAAL,CAAmB,OAAnB;AARZ,QANF,eAgBE,gCAAC,qBAAD;AACE,QAAA,SAAS,MADX;AAEE,QAAA,MAAM,EAAC,OAFT;AAGE,QAAA,EAAE,EAAC,QAHL;AAIE,QAAA,KAAK,EAAC,QAJR;AAKE,QAAA,IAAI,EAAC,QALP;AAME,QAAA,WAAW,EAAC,QANd;AAOE,QAAA,KAAK,EAAEX,MAPT;AAQE,QAAA,QAAQ,EAAE,KAAKW,aAAL,CAAmB,QAAnB;AARZ,QAhBF,CAlBJ,EA8CGlC,YAAY,iBACX;AACE,QAAA,KAAK,EAAEwB,KADT;AAEE,QAAA,MAAM,EAAED,MAFV;AAGE,QAAA,GAAG,EAAEvB,YAHP;AAIE,QAAA,WAAW,EAAC,GAJd;AAKE,QAAA,KAAK,EAAC,0FALR;AAME,QAAA,eAAe;AANjB,QA/CJ,EAwDGe,IAAI,KAAK,OAAT,KAAqBf,YAAY,IAAIS,QAArC,KAAkD,CAACQ,OAAnD,iBACC,gCAAC,iBAAD,CAAO,QAAP,qBACE,gCAAC,yBAAD;AACE,QAAA,OAAO,EAAE;AACPe,UAAAA,IAAI,EAAEN,OAAO,CAACO;AADP;AADX,sBAKE,gCAAC,qBAAD;AACE,QAAA,SAAS,MADX;AAEE,QAAA,MAAM,EAAC,OAFT;AAGE,QAAA,EAAE,EAAC,QAHL;AAIE,QAAA,KAAK,EAAC,QAJR;AAKE,QAAA,IAAI,EAAC,QALP;AAME,QAAA,WAAW,EAAC,QANd;AAOE,QAAA,KAAK,EAAErC,MAPT;AAQE,QAAA,QAAQ,EAAE,KAAKsC,aAAL,CAAmB,QAAnB;AARZ,QALF,EAeGpC,SAAS,iBACR,gCAAC,qBAAD;AACE,QAAA,SAAS,MADX;AAEE,QAAA,MAAM,EAAC,OAFT;AAGE,QAAA,EAAE,EAAC,MAHL;AAIE,QAAA,KAAK,EAAC,MAJR;AAKE,QAAA,IAAI,EAAC,QALP;AAME,QAAA,WAAW,EAAC,MANd;AAOE,QAAA,KAAK,EAAED,IAPT;AAQE,QAAA,QAAQ,EAAE,KAAKqC,aAAL,CAAmB,MAAnB;AARZ,QAhBJ,CADF,CAzDJ,CAVF,eAmGE,gCAAC,yBAAD,qBACE,gCAAC,kBAAD;AAAQ,QAAA,OAAO,EAAE;AAAA,iBAAM,MAAI,CAACH,UAAL,CAAgB,KAAhB,CAAN;AAAA,SAAjB;AAA+C,QAAA,KAAK,EAAC;AAArD,kBADF,eAIE,gCAAC,kBAAD;AACE,QAAA,QAAQ,EAAEd,OAAO,IAAInD,GAAG,KAAK,IAAnB,IAA2BA,GAAG,KAAKqE,SAD/C;AAEE,QAAA,OAAO,EAAE;AAAA,iBAAM,MAAI,CAACJ,UAAL,CAAgB,IAAhB,CAAN;AAAA,SAFX;AAGE,QAAA,KAAK,EAAC;AAHR,SAKGF,IAAI,GAAG,QAAH,GAAc,QALrB,CAJF,CAnGF,CADF;AAkHD;;;;EAjS8BO,kBAAMC,S;;;;gBAA1B7C,W,eACQ;AACjBkC,EAAAA,OAAO,EAAEY,sBAAUC,MAAV,CAAiBC,UADT;AAEjBb,EAAAA,IAAI,EAAEW,sBAAUG,IAFC;AAGjBZ,EAAAA,IAAI,EAAES,sBAAUG,IAHC;AAIjBb,EAAAA,aAAa,EAAEU,sBAAUG,IAJR;AAKjBnB,EAAAA,WAAW,EAAEgB,sBAAUI,IALN;AAMjB3B,EAAAA,IAAI,EAAEuB,sBAAUK,MANC;AAOjBxD,EAAAA,GAAG,EAAEmD,sBAAUK,MAPE;AAQjB7E,EAAAA,GAAG,EAAEwE,sBAAUK,MARE;AASjBhD,EAAAA,QAAQ,EAAE2C,sBAAUK,MATH;AAUjB/C,EAAAA,MAAM,EAAE0C,sBAAUM,MAVD;AAWjB/C,EAAAA,IAAI,EAAEyC,sBAAUM,MAXC;AAYjBrB,EAAAA,MAAM,EAAEe,sBAAUM,MAZD;AAajBpB,EAAAA,KAAK,EAAEc,sBAAUM;AAbA,C;;AAmSrB,IAAMC,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO;AACpBf,IAAAA,KAAK,EAAE;AACLgB,MAAAA,QAAQ,EAAE;AADL,KADa;AAIpBb,IAAAA,UAAU,EAAE;AACVc,MAAAA,OAAO,EAAE;AADC;AAJQ,GAAP;AAAA,CAAf;;eASe,wBAAWF,MAAX,EAAmBrD,WAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\n\nconst log = debug('@pie-lib:editable-html:plugins:media:dialog');\n\nconst matchYoutubeUrl = url => {\n if (!url) {\n return false;\n }\n\n const p = /^(?:https?:\\/\\/)?(?:m\\.|www\\.)?(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))((\\w|-){11})(?:\\S+)?$/;\n if (url.match(p)) {\n return url.match(p)[1];\n }\n return false;\n};\n\nconst matchVimeoUrl = url =>\n url &&\n /(http|https)?:\\/\\/(www\\.)?(player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^/]*)\\/videos\\/|)(video\\/)?(\\d+)(?:|\\/\\?)/.test(\n url\n );\n\nconst matchSoundCloudUrl = url => {\n if (!url) {\n return false;\n }\n\n const regexp = /^https?:\\/\\/(soundcloud\\.com|snd\\.sc)\\/(.*)$/;\n return url.match(regexp) && url.match(regexp)[2];\n};\n\nconst makeApiRequest = url => {\n return new Promise(resolve => {\n try {\n fetch(`https://soundcloud.com/oembed?format=json&url=${url}`)\n .then(response => response.json())\n .then(json => {\n const d = document.createElement('div');\n\n d.innerHTML = json.html;\n\n const iframe = d.querySelector('iframe');\n\n resolve(iframe.src);\n })\n .catch(err => {\n resolve('');\n log(err);\n });\n } catch (err) {\n resolve('');\n }\n });\n};\n\nconst typeMap = {\n video: 'Video',\n audio: 'Audio'\n};\n\nexport class MediaDialog extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n open: PropTypes.bool,\n edit: PropTypes.bool,\n disablePortal: PropTypes.bool,\n handleClose: PropTypes.func,\n type: PropTypes.string,\n src: PropTypes.string,\n url: PropTypes.string,\n urlToUse: PropTypes.string,\n starts: PropTypes.number,\n ends: PropTypes.number,\n height: PropTypes.number,\n width: PropTypes.number\n };\n\n constructor(props) {\n super(props);\n\n const { src, starts, ends, height, url, urlToUse, width } = props;\n\n this.state = {\n ends: ends || 0,\n url: url,\n urlToUse: urlToUse,\n formattedUrl: src,\n height: height || 315,\n invalid: false,\n starts: starts || 0,\n width: width || 560\n };\n }\n\n componentDidMount() {\n if (this.props.url) {\n this.urlChange({\n target: {\n value: this.props.url\n }\n });\n }\n }\n\n formatUrl = () => {\n const { url, urlToUse, starts, ends } = this.state;\n const isYoutube = matchYoutubeUrl(url);\n const isVimeo = matchVimeoUrl(url);\n let formattedUrl = urlToUse;\n\n if ((isYoutube || isVimeo) && urlToUse) {\n const params = [];\n\n let paramName;\n let paramStart;\n\n switch (true) {\n case isVimeo:\n paramName = 't';\n paramStart = '#';\n break;\n case isYoutube:\n paramName = 'start';\n paramStart = '?';\n break;\n default:\n paramName = 'start';\n paramStart = '?';\n }\n\n if (starts) {\n params.push(`${paramName}=${starts}`);\n }\n\n if (ends) {\n params.push(`end=${ends}`);\n }\n\n formattedUrl = `${urlToUse}${params.length ? paramStart : ''}${params.join('&')}`;\n }\n\n const callback = () => this.setState({ formattedUrl, updating: false });\n\n this.setState({ formattedUrl: null, updating: true }, callback);\n };\n\n handleStateChange = newState => this.setState(newState, this.formatUrl);\n\n urlChange = e => {\n const { value } = e.target || {};\n const { type } = this.props;\n\n if (type && type === 'audio') {\n if (matchSoundCloudUrl(value)) {\n makeApiRequest(value)\n .then(urlToUse => {\n this.handleStateChange({\n urlToUse,\n invalid: !urlToUse,\n url: value\n });\n })\n .catch(log);\n\n return;\n }\n } else if (type && type === 'video') {\n if (matchYoutubeUrl(value)) {\n const regExp = /^.*(youtu\\.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n const match = value.match(regExp);\n const id = match[2];\n const urlToUse = `https://youtube.com/embed/${id}`;\n\n log('is youtube');\n\n this.handleStateChange({\n urlToUse,\n url: value,\n invalid: false\n });\n\n return;\n }\n\n if (matchVimeoUrl(value)) {\n const id = value.replace(/.*vimeo.com\\/(.*)/g, '$1');\n const urlToUse = `https://player.vimeo.com/video/${id}`;\n\n log('is vimeo');\n\n this.handleStateChange({\n urlToUse,\n url: value,\n ends: null,\n invalid: false\n });\n\n return;\n }\n }\n\n this.handleStateChange({\n urlToUse: null,\n url: null,\n invalid: true\n });\n };\n\n changeHandler = type => e => this.handleStateChange({ [type]: e.target.value });\n\n handleDone = val => {\n const { handleClose } = this.props;\n\n if (!val) {\n handleClose(val);\n } else {\n const { ends, height, url, urlToUse, formattedUrl, starts, width } = this.state;\n\n handleClose(val, {\n ends,\n height,\n starts,\n width,\n url,\n urlToUse,\n src: formattedUrl\n });\n }\n };\n\n render() {\n const { classes, open, disablePortal, type, edit } = this.props;\n const { ends, height, invalid, starts, width, url, formattedUrl, updating } = this.state;\n const isYoutube = matchYoutubeUrl(url);\n\n return (\n <Dialog\n classes={{\n paper: classes.paper\n }}\n disablePortal={disablePortal}\n open={open}\n onClose={() => this.handleDone(false)}\n aria-labelledby=\"form-dialog-title\"\n >\n <DialogTitle id=\"form-dialog-title\">Insert {typeMap[type]}</DialogTitle>\n <DialogContent>\n <DialogContentText>\n {type === 'video' ? 'Insert YouTube or Vimeo URL' : 'Insert SoundCloud URL'}\n </DialogContentText>\n <TextField\n autoFocus\n error={invalid}\n helperText={invalid ? 'Invalid URL' : ''}\n margin=\"dense\"\n id=\"name\"\n label=\"URL\"\n placeholder={`Paste URL of ${type}...`}\n type=\"text\"\n onChange={this.urlChange}\n value={url}\n fullWidth\n />\n {type === 'video' && (\n <DialogContent\n classes={{\n root: classes.properties\n }}\n >\n <DialogContentText>Video Properties</DialogContentText>\n <TextField\n autoFocus\n margin=\"dense\"\n id=\"width\"\n label=\"Width\"\n type=\"number\"\n placeholder=\"Width\"\n value={width}\n onChange={this.changeHandler('width')}\n />\n <TextField\n autoFocus\n margin=\"dense\"\n id=\"height\"\n label=\"Height\"\n type=\"number\"\n placeholder=\"Height\"\n value={height}\n onChange={this.changeHandler('height')}\n />\n </DialogContent>\n )}\n {formattedUrl && (\n <iframe\n width={width}\n height={height}\n src={formattedUrl}\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n />\n )}\n {type === 'video' && (formattedUrl || updating) && !invalid && (\n <React.Fragment>\n <DialogContent\n classes={{\n root: classes.properties\n }}\n >\n <TextField\n autoFocus\n margin=\"dense\"\n id=\"starts\"\n label=\"Starts\"\n type=\"number\"\n placeholder=\"Starts\"\n value={starts}\n onChange={this.changeHandler('starts')}\n />\n {isYoutube && (\n <TextField\n autoFocus\n margin=\"dense\"\n id=\"ends\"\n label=\"Ends\"\n type=\"number\"\n placeholder=\"Ends\"\n value={ends}\n onChange={this.changeHandler('ends')}\n />\n )}\n </DialogContent>\n </React.Fragment>\n )}\n </DialogContent>\n <DialogActions>\n <Button onClick={() => this.handleDone(false)} color=\"primary\">\n Cancel\n </Button>\n <Button\n disabled={invalid || url === null || url === undefined}\n onClick={() => this.handleDone(true)}\n color=\"primary\"\n >\n {edit ? 'Update' : 'Insert'}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n}\n\nconst styles = () => ({\n paper: {\n minWidth: '500px'\n },\n properties: {\n padding: 0\n }\n});\n\nexport default withStyles(styles)(MediaDialog);\n"],"file":"media-dialog.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/plugins/media/media-dialog.js"],"names":["log","matchYoutubeUrl","url","p","match","matchVimeoUrl","test","matchSoundCloudUrl","regexp","makeApiRequest","Promise","resolve","fetch","then","response","json","d","document","createElement","innerHTML","html","iframe","querySelector","src","err","typeMap","video","audio","MediaDialog","props","state","urlToUse","starts","ends","isYoutube","isVimeo","formattedUrl","params","paramName","paramStart","push","length","join","callback","setState","updating","newState","formatUrl","e","target","value","type","handleStateChange","invalid","regExp","id","replace","val","handleClose","height","width","urlChange","classes","open","disablePortal","edit","paper","handleDone","root","properties","changeHandler","undefined","React","Component","PropTypes","object","isRequired","bool","func","string","number","styles","minWidth","padding"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,6CAAN,CAAZ;;AAEA,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,CAAAC,GAAG,EAAI;AAC7B,MAAI,CAACA,GAAL,EAAU;AACR,WAAO,KAAP;AACD;;AAED,MAAMC,CAAC,GAAG,0HAAV;;AACA,MAAID,GAAG,CAACE,KAAJ,CAAUD,CAAV,CAAJ,EAAkB;AAChB,WAAOD,GAAG,CAACE,KAAJ,CAAUD,CAAV,EAAa,CAAb,CAAP;AACD;;AACD,SAAO,KAAP;AACD,CAVD;;AAYA,IAAME,aAAa,GAAG,SAAhBA,aAAgB,CAAAH,GAAG;AAAA,SACvBA,GAAG,IACH,8HAA8HI,IAA9H,CACEJ,GADF,CAFuB;AAAA,CAAzB;;AAMA,IAAMK,kBAAkB,GAAG,SAArBA,kBAAqB,CAAAL,GAAG,EAAI;AAChC,MAAI,CAACA,GAAL,EAAU;AACR,WAAO,KAAP;AACD;;AAED,MAAMM,MAAM,GAAG,8CAAf;AACA,SAAON,GAAG,CAACE,KAAJ,CAAUI,MAAV,KAAqBN,GAAG,CAACE,KAAJ,CAAUI,MAAV,EAAkB,CAAlB,CAA5B;AACD,CAPD;;AASA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAAAP,GAAG,EAAI;AAC5B,SAAO,IAAIQ,OAAJ,CAAY,UAAAC,OAAO,EAAI;AAC5B,QAAI;AACFC,MAAAA,KAAK,yDAAkDV,GAAlD,EAAL,CACGW,IADH,CACQ,UAAAC,QAAQ;AAAA,eAAIA,QAAQ,CAACC,IAAT,EAAJ;AAAA,OADhB,EAEGF,IAFH,CAEQ,UAAAE,IAAI,EAAI;AACZ,YAAMC,CAAC,GAAGC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAV;AAEAF,QAAAA,CAAC,CAACG,SAAF,GAAcJ,IAAI,CAACK,IAAnB;AAEA,YAAMC,MAAM,GAAGL,CAAC,CAACM,aAAF,CAAgB,QAAhB,CAAf;AAEAX,QAAAA,OAAO,CAACU,MAAM,CAACE,GAAR,CAAP;AACD,OAVH,WAWS,UAAAC,GAAG,EAAI;AACZb,QAAAA,OAAO,CAAC,EAAD,CAAP;AACAX,QAAAA,GAAG,CAACwB,GAAD,CAAH;AACD,OAdH;AAeD,KAhBD,CAgBE,OAAOA,GAAP,EAAY;AACZb,MAAAA,OAAO,CAAC,EAAD,CAAP;AACD;AACF,GApBM,CAAP;AAqBD,CAtBD;;AAwBA,IAAMc,OAAO,GAAG;AACdC,EAAAA,KAAK,EAAE,OADO;AAEdC,EAAAA,KAAK,EAAE;AAFO,CAAhB;;IAKaC,W;;;;;AAiBX,uBAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;AADiB,kGA2BP,YAAM;AAChB,wBAAwC,MAAKC,KAA7C;AAAA,UAAQ5B,GAAR,eAAQA,GAAR;AAAA,UAAa6B,QAAb,eAAaA,QAAb;AAAA,UAAuBC,MAAvB,eAAuBA,MAAvB;AAAA,UAA+BC,IAA/B,eAA+BA,IAA/B;AACA,UAAMC,SAAS,GAAGjC,eAAe,CAACC,GAAD,CAAjC;AACA,UAAMiC,OAAO,GAAG9B,aAAa,CAACH,GAAD,CAA7B;AACA,UAAIkC,YAAY,GAAGL,QAAnB;;AAEA,UAAI,CAACG,SAAS,IAAIC,OAAd,KAA0BJ,QAA9B,EAAwC;AACtC,YAAMM,MAAM,GAAG,EAAf;AAEA,YAAIC,SAAJ;AACA,YAAIC,UAAJ;;AAEA,gBAAQ,IAAR;AACE,eAAKJ,OAAL;AACEG,YAAAA,SAAS,GAAG,GAAZ;AACAC,YAAAA,UAAU,GAAG,GAAb;AACA;;AACF,eAAKL,SAAL;AACEI,YAAAA,SAAS,GAAG,OAAZ;AACAC,YAAAA,UAAU,GAAG,GAAb;AACA;;AACF;AACED,YAAAA,SAAS,GAAG,OAAZ;AACAC,YAAAA,UAAU,GAAG,GAAb;AAXJ;;AAcA,YAAIP,MAAJ,EAAY;AACVK,UAAAA,MAAM,CAACG,IAAP,WAAeF,SAAf,cAA4BN,MAA5B;AACD;;AAED,YAAIC,IAAJ,EAAU;AACRI,UAAAA,MAAM,CAACG,IAAP,eAAmBP,IAAnB;AACD;;AAEDG,QAAAA,YAAY,aAAML,QAAN,SAAiBM,MAAM,CAACI,MAAP,GAAgBF,UAAhB,GAA6B,EAA9C,SAAmDF,MAAM,CAACK,IAAP,CAAY,GAAZ,CAAnD,CAAZ;AACD;;AAED,UAAMC,QAAQ,GAAG,SAAXA,QAAW;AAAA,eAAM,MAAKC,QAAL,CAAc;AAAER,UAAAA,YAAY,EAAZA,YAAF;AAAgBS,UAAAA,QAAQ,EAAE;AAA1B,SAAd,CAAN;AAAA,OAAjB;;AAEA,YAAKD,QAAL,CAAc;AAAER,QAAAA,YAAY,EAAE,IAAhB;AAAsBS,QAAAA,QAAQ,EAAE;AAAhC,OAAd,EAAsDF,QAAtD;AACD,KAnEkB;AAAA,0GAqEC,UAAAG,QAAQ;AAAA,aAAI,MAAKF,QAAL,CAAcE,QAAd,EAAwB,MAAKC,SAA7B,CAAJ;AAAA,KArET;AAAA,kGAuEP,UAAAC,CAAC,EAAI;AACf,iBAAkBA,CAAC,CAACC,MAAF,IAAY,EAA9B;AAAA,UAAQC,KAAR,QAAQA,KAAR;;AACA,UAAQC,IAAR,GAAiB,MAAKtB,KAAtB,CAAQsB,IAAR;;AAEA,UAAIA,IAAI,IAAIA,IAAI,KAAK,OAArB,EAA8B;AAC5B,YAAI5C,kBAAkB,CAAC2C,KAAD,CAAtB,EAA+B;AAC7BzC,UAAAA,cAAc,CAACyC,KAAD,CAAd,CACGrC,IADH,CACQ,UAAAkB,QAAQ,EAAI;AAChB,kBAAKqB,iBAAL,CAAuB;AACrBrB,cAAAA,QAAQ,EAARA,QADqB;AAErBsB,cAAAA,OAAO,EAAE,CAACtB,QAFW;AAGrB7B,cAAAA,GAAG,EAAEgD;AAHgB,aAAvB;AAKD,WAPH,WAQSlD,GART;AAUA;AACD;AACF,OAdD,MAcO,IAAImD,IAAI,IAAIA,IAAI,KAAK,OAArB,EAA8B;AACnC,YAAIlD,eAAe,CAACiD,KAAD,CAAnB,EAA4B;AAC1B,cAAMI,MAAM,GAAG,+DAAf;AACA,cAAMlD,KAAK,GAAG8C,KAAK,CAAC9C,KAAN,CAAYkD,MAAZ,CAAd;AACA,cAAMC,EAAE,GAAGnD,KAAK,CAAC,CAAD,CAAhB;AACA,cAAM2B,QAAQ,uCAAgCwB,EAAhC,CAAd;AAEAvD,UAAAA,GAAG,CAAC,YAAD,CAAH;;AAEA,gBAAKoD,iBAAL,CAAuB;AACrBrB,YAAAA,QAAQ,EAARA,QADqB;AAErB7B,YAAAA,GAAG,EAAEgD,KAFgB;AAGrBG,YAAAA,OAAO,EAAE;AAHY,WAAvB;;AAMA;AACD;;AAED,YAAIhD,aAAa,CAAC6C,KAAD,CAAjB,EAA0B;AACxB,cAAMK,GAAE,GAAGL,KAAK,CAACM,OAAN,CAAc,oBAAd,EAAoC,IAApC,CAAX;;AACA,cAAMzB,UAAQ,4CAAqCwB,GAArC,CAAd;;AAEAvD,UAAAA,GAAG,CAAC,UAAD,CAAH;;AAEA,gBAAKoD,iBAAL,CAAuB;AACrBrB,YAAAA,QAAQ,EAARA,UADqB;AAErB7B,YAAAA,GAAG,EAAEgD,KAFgB;AAGrBjB,YAAAA,IAAI,EAAE,IAHe;AAIrBoB,YAAAA,OAAO,EAAE;AAJY,WAAvB;;AAOA;AACD;AACF;;AAED,YAAKD,iBAAL,CAAuB;AACrBrB,QAAAA,QAAQ,EAAE,IADW;AAErB7B,QAAAA,GAAG,EAAE,IAFgB;AAGrBmD,QAAAA,OAAO,EAAE;AAHY,OAAvB;AAKD,KAjIkB;AAAA,sGAmIH,UAAAF,IAAI;AAAA,aAAI,UAAAH,CAAC;AAAA,eAAI,MAAKI,iBAAL,sCAA0BD,IAA1B,EAAiCH,CAAC,CAACC,MAAF,CAASC,KAA1C,EAAJ;AAAA,OAAL;AAAA,KAnID;AAAA,mGAqIN,UAAAO,GAAG,EAAI;AAClB,UAAQC,WAAR,GAAwB,MAAK7B,KAA7B,CAAQ6B,WAAR;;AAEA,UAAI,CAACD,GAAL,EAAU;AACRC,QAAAA,WAAW,CAACD,GAAD,CAAX;AACD,OAFD,MAEO;AACL,2BAAqE,MAAK3B,KAA1E;AAAA,YAAQG,IAAR,gBAAQA,IAAR;AAAA,YAAc0B,MAAd,gBAAcA,MAAd;AAAA,YAAsBzD,GAAtB,gBAAsBA,GAAtB;AAAA,YAA2B6B,QAA3B,gBAA2BA,QAA3B;AAAA,YAAqCK,YAArC,gBAAqCA,YAArC;AAAA,YAAmDJ,MAAnD,gBAAmDA,MAAnD;AAAA,YAA2D4B,KAA3D,gBAA2DA,KAA3D;AAEAF,QAAAA,WAAW,CAACD,GAAD,EAAM;AACfxB,UAAAA,IAAI,EAAJA,IADe;AAEf0B,UAAAA,MAAM,EAANA,MAFe;AAGf3B,UAAAA,MAAM,EAANA,MAHe;AAIf4B,UAAAA,KAAK,EAALA,KAJe;AAKf1D,UAAAA,GAAG,EAAHA,GALe;AAMf6B,UAAAA,QAAQ,EAARA,QANe;AAOfR,UAAAA,GAAG,EAAEa;AAPU,SAAN,CAAX;AASD;AACF,KAvJkB;AAGjB,QAAQb,GAAR,GAA4DM,KAA5D,CAAQN,GAAR;AAAA,QAAaS,OAAb,GAA4DH,KAA5D,CAAaG,MAAb;AAAA,QAAqBC,KAArB,GAA4DJ,KAA5D,CAAqBI,IAArB;AAAA,QAA2B0B,OAA3B,GAA4D9B,KAA5D,CAA2B8B,MAA3B;AAAA,QAAmCzD,IAAnC,GAA4D2B,KAA5D,CAAmC3B,GAAnC;AAAA,QAAwC6B,SAAxC,GAA4DF,KAA5D,CAAwCE,QAAxC;AAAA,QAAkD6B,MAAlD,GAA4D/B,KAA5D,CAAkD+B,KAAlD;AAEA,UAAK9B,KAAL,GAAa;AACXG,MAAAA,IAAI,EAAEA,KAAI,IAAI,CADH;AAEX/B,MAAAA,GAAG,EAAEA,IAFM;AAGX6B,MAAAA,QAAQ,EAAEA,SAHC;AAIXK,MAAAA,YAAY,EAAEb,GAJH;AAKXoC,MAAAA,MAAM,EAAEA,OAAM,IAAI,GALP;AAMXN,MAAAA,OAAO,EAAE,KANE;AAOXrB,MAAAA,MAAM,EAAEA,OAAM,IAAI,CAPP;AAQX4B,MAAAA,KAAK,EAAEA,MAAK,IAAI;AARL,KAAb;AALiB;AAelB;;;;WAED,6BAAoB;AAClB,UAAI,KAAK/B,KAAL,CAAW3B,GAAf,EAAoB;AAClB,aAAK2D,SAAL,CAAe;AACbZ,UAAAA,MAAM,EAAE;AACNC,YAAAA,KAAK,EAAE,KAAKrB,KAAL,CAAW3B;AADZ;AADK,SAAf;AAKD;AACF;;;WAgID,kBAAS;AAAA;;AACP,wBAAqD,KAAK2B,KAA1D;AAAA,UAAQiC,OAAR,eAAQA,OAAR;AAAA,UAAiBC,IAAjB,eAAiBA,IAAjB;AAAA,UAAuBC,aAAvB,eAAuBA,aAAvB;AAAA,UAAsCb,IAAtC,eAAsCA,IAAtC;AAAA,UAA4Cc,IAA5C,eAA4CA,IAA5C;AACA,yBAA8E,KAAKnC,KAAnF;AAAA,UAAQG,IAAR,gBAAQA,IAAR;AAAA,UAAc0B,MAAd,gBAAcA,MAAd;AAAA,UAAsBN,OAAtB,gBAAsBA,OAAtB;AAAA,UAA+BrB,MAA/B,gBAA+BA,MAA/B;AAAA,UAAuC4B,KAAvC,gBAAuCA,KAAvC;AAAA,UAA8C1D,GAA9C,gBAA8CA,GAA9C;AAAA,UAAmDkC,YAAnD,gBAAmDA,YAAnD;AAAA,UAAiES,QAAjE,gBAAiEA,QAAjE;AACA,UAAMX,SAAS,GAAGjC,eAAe,CAACC,GAAD,CAAjC;AAEA,0BACE,gCAAC,kBAAD;AACE,QAAA,OAAO,EAAE;AACPgE,UAAAA,KAAK,EAAEJ,OAAO,CAACI;AADR,SADX;AAIE,QAAA,aAAa,EAAEF,aAJjB;AAKE,QAAA,IAAI,EAAED,IALR;AAME,QAAA,OAAO,EAAE;AAAA,iBAAM,MAAI,CAACI,UAAL,CAAgB,KAAhB,CAAN;AAAA,SANX;AAOE,2BAAgB;AAPlB,sBASE,gCAAC,uBAAD;AAAa,QAAA,EAAE,EAAC;AAAhB,oBAA4C1C,OAAO,CAAC0B,IAAD,CAAnD,CATF,eAUE,gCAAC,yBAAD,qBACE,gCAAC,6BAAD,QACGA,IAAI,KAAK,OAAT,GAAmB,6BAAnB,GAAmD,uBADtD,CADF,eAIE,gCAAC,qBAAD;AACE,QAAA,SAAS,MADX;AAEE,QAAA,KAAK,EAAEE,OAFT;AAGE,QAAA,UAAU,EAAEA,OAAO,GAAG,aAAH,GAAmB,EAHxC;AAIE,QAAA,MAAM,EAAC,OAJT;AAKE,QAAA,EAAE,EAAC,MALL;AAME,QAAA,KAAK,EAAC,KANR;AAOE,QAAA,WAAW,yBAAkBF,IAAlB,QAPb;AAQE,QAAA,IAAI,EAAC,MARP;AASE,QAAA,QAAQ,EAAE,KAAKU,SATjB;AAUE,QAAA,KAAK,EAAE3D,GAVT;AAWE,QAAA,SAAS;AAXX,QAJF,EAiBGiD,IAAI,KAAK,OAAT,iBACC,gCAAC,yBAAD;AACE,QAAA,OAAO,EAAE;AACPiB,UAAAA,IAAI,EAAEN,OAAO,CAACO;AADP;AADX,sBAKE,gCAAC,6BAAD,2BALF,eAME,gCAAC,qBAAD;AACE,QAAA,SAAS,MADX;AAEE,QAAA,MAAM,EAAC,OAFT;AAGE,QAAA,EAAE,EAAC,OAHL;AAIE,QAAA,KAAK,EAAC,OAJR;AAKE,QAAA,IAAI,EAAC,QALP;AAME,QAAA,WAAW,EAAC,OANd;AAOE,QAAA,KAAK,EAAET,KAPT;AAQE,QAAA,QAAQ,EAAE,KAAKU,aAAL,CAAmB,OAAnB;AARZ,QANF,eAgBE,gCAAC,qBAAD;AACE,QAAA,SAAS,MADX;AAEE,QAAA,MAAM,EAAC,OAFT;AAGE,QAAA,EAAE,EAAC,QAHL;AAIE,QAAA,KAAK,EAAC,QAJR;AAKE,QAAA,IAAI,EAAC,QALP;AAME,QAAA,WAAW,EAAC,QANd;AAOE,QAAA,KAAK,EAAEX,MAPT;AAQE,QAAA,QAAQ,EAAE,KAAKW,aAAL,CAAmB,QAAnB;AARZ,QAhBF,CAlBJ,EA8CGlC,YAAY,iBACX;AACE,QAAA,KAAK,EAAEwB,KADT;AAEE,QAAA,MAAM,EAAED,MAFV;AAGE,QAAA,GAAG,EAAEvB,YAHP;AAIE,QAAA,WAAW,EAAC,GAJd;AAKE,QAAA,KAAK,EAAC,0FALR;AAME,QAAA,eAAe;AANjB,QA/CJ,EAwDGe,IAAI,KAAK,OAAT,KAAqBf,YAAY,IAAIS,QAArC,KAAkD,CAACQ,OAAnD,iBACC,gCAAC,iBAAD,CAAO,QAAP,qBACE,gCAAC,yBAAD;AACE,QAAA,OAAO,EAAE;AACPe,UAAAA,IAAI,EAAEN,OAAO,CAACO;AADP;AADX,sBAKE,gCAAC,qBAAD;AACE,QAAA,SAAS,MADX;AAEE,QAAA,MAAM,EAAC,OAFT;AAGE,QAAA,EAAE,EAAC,QAHL;AAIE,QAAA,KAAK,EAAC,QAJR;AAKE,QAAA,IAAI,EAAC,QALP;AAME,QAAA,WAAW,EAAC,QANd;AAOE,QAAA,KAAK,EAAErC,MAPT;AAQE,QAAA,QAAQ,EAAE,KAAKsC,aAAL,CAAmB,QAAnB;AARZ,QALF,EAeGpC,SAAS,iBACR,gCAAC,qBAAD;AACE,QAAA,SAAS,MADX;AAEE,QAAA,MAAM,EAAC,OAFT;AAGE,QAAA,EAAE,EAAC,MAHL;AAIE,QAAA,KAAK,EAAC,MAJR;AAKE,QAAA,IAAI,EAAC,QALP;AAME,QAAA,WAAW,EAAC,MANd;AAOE,QAAA,KAAK,EAAED,IAPT;AAQE,QAAA,QAAQ,EAAE,KAAKqC,aAAL,CAAmB,MAAnB;AARZ,QAhBJ,CADF,CAzDJ,CAVF,eAmGE,gCAAC,yBAAD,qBACE,gCAAC,kBAAD;AAAQ,QAAA,OAAO,EAAE;AAAA,iBAAM,MAAI,CAACH,UAAL,CAAgB,KAAhB,CAAN;AAAA,SAAjB;AAA+C,QAAA,KAAK,EAAC;AAArD,kBADF,eAIE,gCAAC,kBAAD;AACE,QAAA,QAAQ,EAAEd,OAAO,IAAInD,GAAG,KAAK,IAAnB,IAA2BA,GAAG,KAAKqE,SAD/C;AAEE,QAAA,OAAO,EAAE;AAAA,iBAAM,MAAI,CAACJ,UAAL,CAAgB,IAAhB,CAAN;AAAA,SAFX;AAGE,QAAA,KAAK,EAAC;AAHR,SAKGF,IAAI,GAAG,QAAH,GAAc,QALrB,CAJF,CAnGF,CADF;AAkHD;;;EAjS8BO,kBAAMC,S;;;iCAA1B7C,W,eACQ;AACjBkC,EAAAA,OAAO,EAAEY,sBAAUC,MAAV,CAAiBC,UADT;AAEjBb,EAAAA,IAAI,EAAEW,sBAAUG,IAFC;AAGjBZ,EAAAA,IAAI,EAAES,sBAAUG,IAHC;AAIjBb,EAAAA,aAAa,EAAEU,sBAAUG,IAJR;AAKjBnB,EAAAA,WAAW,EAAEgB,sBAAUI,IALN;AAMjB3B,EAAAA,IAAI,EAAEuB,sBAAUK,MANC;AAOjBxD,EAAAA,GAAG,EAAEmD,sBAAUK,MAPE;AAQjB7E,EAAAA,GAAG,EAAEwE,sBAAUK,MARE;AASjBhD,EAAAA,QAAQ,EAAE2C,sBAAUK,MATH;AAUjB/C,EAAAA,MAAM,EAAE0C,sBAAUM,MAVD;AAWjB/C,EAAAA,IAAI,EAAEyC,sBAAUM,MAXC;AAYjBrB,EAAAA,MAAM,EAAEe,sBAAUM,MAZD;AAajBpB,EAAAA,KAAK,EAAEc,sBAAUM;AAbA,C;;AAmSrB,IAAMC,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO;AACpBf,IAAAA,KAAK,EAAE;AACLgB,MAAAA,QAAQ,EAAE;AADL,KADa;AAIpBb,IAAAA,UAAU,EAAE;AACVc,MAAAA,OAAO,EAAE;AADC;AAJQ,GAAP;AAAA,CAAf;;eASe,wBAAWF,MAAX,EAAmBrD,WAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\n\nconst log = debug('@pie-lib:editable-html:plugins:media:dialog');\n\nconst matchYoutubeUrl = url => {\n if (!url) {\n return false;\n }\n\n const p = /^(?:https?:\\/\\/)?(?:m\\.|www\\.)?(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))((\\w|-){11})(?:\\S+)?$/;\n if (url.match(p)) {\n return url.match(p)[1];\n }\n return false;\n};\n\nconst matchVimeoUrl = url =>\n url &&\n /(http|https)?:\\/\\/(www\\.)?(player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^/]*)\\/videos\\/|)(video\\/)?(\\d+)(?:|\\/\\?)/.test(\n url\n );\n\nconst matchSoundCloudUrl = url => {\n if (!url) {\n return false;\n }\n\n const regexp = /^https?:\\/\\/(soundcloud\\.com|snd\\.sc)\\/(.*)$/;\n return url.match(regexp) && url.match(regexp)[2];\n};\n\nconst makeApiRequest = url => {\n return new Promise(resolve => {\n try {\n fetch(`https://soundcloud.com/oembed?format=json&url=${url}`)\n .then(response => response.json())\n .then(json => {\n const d = document.createElement('div');\n\n d.innerHTML = json.html;\n\n const iframe = d.querySelector('iframe');\n\n resolve(iframe.src);\n })\n .catch(err => {\n resolve('');\n log(err);\n });\n } catch (err) {\n resolve('');\n }\n });\n};\n\nconst typeMap = {\n video: 'Video',\n audio: 'Audio'\n};\n\nexport class MediaDialog extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n open: PropTypes.bool,\n edit: PropTypes.bool,\n disablePortal: PropTypes.bool,\n handleClose: PropTypes.func,\n type: PropTypes.string,\n src: PropTypes.string,\n url: PropTypes.string,\n urlToUse: PropTypes.string,\n starts: PropTypes.number,\n ends: PropTypes.number,\n height: PropTypes.number,\n width: PropTypes.number\n };\n\n constructor(props) {\n super(props);\n\n const { src, starts, ends, height, url, urlToUse, width } = props;\n\n this.state = {\n ends: ends || 0,\n url: url,\n urlToUse: urlToUse,\n formattedUrl: src,\n height: height || 315,\n invalid: false,\n starts: starts || 0,\n width: width || 560\n };\n }\n\n componentDidMount() {\n if (this.props.url) {\n this.urlChange({\n target: {\n value: this.props.url\n }\n });\n }\n }\n\n formatUrl = () => {\n const { url, urlToUse, starts, ends } = this.state;\n const isYoutube = matchYoutubeUrl(url);\n const isVimeo = matchVimeoUrl(url);\n let formattedUrl = urlToUse;\n\n if ((isYoutube || isVimeo) && urlToUse) {\n const params = [];\n\n let paramName;\n let paramStart;\n\n switch (true) {\n case isVimeo:\n paramName = 't';\n paramStart = '#';\n break;\n case isYoutube:\n paramName = 'start';\n paramStart = '?';\n break;\n default:\n paramName = 'start';\n paramStart = '?';\n }\n\n if (starts) {\n params.push(`${paramName}=${starts}`);\n }\n\n if (ends) {\n params.push(`end=${ends}`);\n }\n\n formattedUrl = `${urlToUse}${params.length ? paramStart : ''}${params.join('&')}`;\n }\n\n const callback = () => this.setState({ formattedUrl, updating: false });\n\n this.setState({ formattedUrl: null, updating: true }, callback);\n };\n\n handleStateChange = newState => this.setState(newState, this.formatUrl);\n\n urlChange = e => {\n const { value } = e.target || {};\n const { type } = this.props;\n\n if (type && type === 'audio') {\n if (matchSoundCloudUrl(value)) {\n makeApiRequest(value)\n .then(urlToUse => {\n this.handleStateChange({\n urlToUse,\n invalid: !urlToUse,\n url: value\n });\n })\n .catch(log);\n\n return;\n }\n } else if (type && type === 'video') {\n if (matchYoutubeUrl(value)) {\n const regExp = /^.*(youtu\\.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n const match = value.match(regExp);\n const id = match[2];\n const urlToUse = `https://youtube.com/embed/${id}`;\n\n log('is youtube');\n\n this.handleStateChange({\n urlToUse,\n url: value,\n invalid: false\n });\n\n return;\n }\n\n if (matchVimeoUrl(value)) {\n const id = value.replace(/.*vimeo.com\\/(.*)/g, '$1');\n const urlToUse = `https://player.vimeo.com/video/${id}`;\n\n log('is vimeo');\n\n this.handleStateChange({\n urlToUse,\n url: value,\n ends: null,\n invalid: false\n });\n\n return;\n }\n }\n\n this.handleStateChange({\n urlToUse: null,\n url: null,\n invalid: true\n });\n };\n\n changeHandler = type => e => this.handleStateChange({ [type]: e.target.value });\n\n handleDone = val => {\n const { handleClose } = this.props;\n\n if (!val) {\n handleClose(val);\n } else {\n const { ends, height, url, urlToUse, formattedUrl, starts, width } = this.state;\n\n handleClose(val, {\n ends,\n height,\n starts,\n width,\n url,\n urlToUse,\n src: formattedUrl\n });\n }\n };\n\n render() {\n const { classes, open, disablePortal, type, edit } = this.props;\n const { ends, height, invalid, starts, width, url, formattedUrl, updating } = this.state;\n const isYoutube = matchYoutubeUrl(url);\n\n return (\n <Dialog\n classes={{\n paper: classes.paper\n }}\n disablePortal={disablePortal}\n open={open}\n onClose={() => this.handleDone(false)}\n aria-labelledby=\"form-dialog-title\"\n >\n <DialogTitle id=\"form-dialog-title\">Insert {typeMap[type]}</DialogTitle>\n <DialogContent>\n <DialogContentText>\n {type === 'video' ? 'Insert YouTube or Vimeo URL' : 'Insert SoundCloud URL'}\n </DialogContentText>\n <TextField\n autoFocus\n error={invalid}\n helperText={invalid ? 'Invalid URL' : ''}\n margin=\"dense\"\n id=\"name\"\n label=\"URL\"\n placeholder={`Paste URL of ${type}...`}\n type=\"text\"\n onChange={this.urlChange}\n value={url}\n fullWidth\n />\n {type === 'video' && (\n <DialogContent\n classes={{\n root: classes.properties\n }}\n >\n <DialogContentText>Video Properties</DialogContentText>\n <TextField\n autoFocus\n margin=\"dense\"\n id=\"width\"\n label=\"Width\"\n type=\"number\"\n placeholder=\"Width\"\n value={width}\n onChange={this.changeHandler('width')}\n />\n <TextField\n autoFocus\n margin=\"dense\"\n id=\"height\"\n label=\"Height\"\n type=\"number\"\n placeholder=\"Height\"\n value={height}\n onChange={this.changeHandler('height')}\n />\n </DialogContent>\n )}\n {formattedUrl && (\n <iframe\n width={width}\n height={height}\n src={formattedUrl}\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n />\n )}\n {type === 'video' && (formattedUrl || updating) && !invalid && (\n <React.Fragment>\n <DialogContent\n classes={{\n root: classes.properties\n }}\n >\n <TextField\n autoFocus\n margin=\"dense\"\n id=\"starts\"\n label=\"Starts\"\n type=\"number\"\n placeholder=\"Starts\"\n value={starts}\n onChange={this.changeHandler('starts')}\n />\n {isYoutube && (\n <TextField\n autoFocus\n margin=\"dense\"\n id=\"ends\"\n label=\"Ends\"\n type=\"number\"\n placeholder=\"Ends\"\n value={ends}\n onChange={this.changeHandler('ends')}\n />\n )}\n </DialogContent>\n </React.Fragment>\n )}\n </DialogContent>\n <DialogActions>\n <Button onClick={() => this.handleDone(false)} color=\"primary\">\n Cancel\n </Button>\n <Button\n disabled={invalid || url === null || url === undefined}\n onClick={() => this.handleDone(true)}\n color=\"primary\"\n >\n {edit ? 'Update' : 'Insert'}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n}\n\nconst styles = () => ({\n paper: {\n minWidth: '500px'\n },\n properties: {\n padding: 0\n }\n});\n\nexport default withStyles(styles)(MediaDialog);\n"],"file":"media-dialog.js"}
|