@pie-lib/editable-html 7.17.4-next.373 → 7.17.4-next.417
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/lib/editor.js +147 -109
- 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 +2 -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 +11 -11
- 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 +3 -3
- package/src/editor.jsx +55 -37
- 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 +37 -2
- package/src/plugins/image/index.jsx +38 -9
|
@@ -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,"file":"index.js","names":["log","debug","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","unWrapMath","unwrapped","wrapType","nodes","wrapper","serialize","l","decoded","wrapMath"],"sources":["../../../src/plugins/math/index.jsx"],"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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["log","debug","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","unWrapMath","unwrapped","wrapType","nodes","wrapper","serialize","l","decoded","wrapMath"],"sources":["../../../src/plugins/math/index.jsx"],"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"],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;AACA,IAAMA,GAAG,GAAG,IAAAC,iBAAA,EAAM,qCAAN,CAAZ;AAEA,IAAMC,SAAS,GAAG,CAAlB;;AAEA,SAASC,sBAAT,GAA8C;EAAA,IAAdC,OAAc,uEAAJ,EAAI;EAC5C,OAAOA,OAAO,CAACC,GAAR,CAAY,UAAAC,GAAG;IAAA,OAAK;MACzBC,IAAI,EAAED,GADmB;MAEzBE,KAAK,EAAEF,GAFkB;MAGzBG,KAAK,EAAEH,GAHkB;MAIzBI,KAAK,EAAEJ;IAJkB,CAAL;EAAA,CAAf,CAAP;AAMD;;AAEM,IAAMK,iBAAiB,gBAAGC,iBAAA,CAAMC,IAAN,CAC/B,UAAAC,KAAK,EAAI;EACP,IAAQC,IAAR,GAAkDD,KAAlD,CAAQC,IAAR;EAAA,IAAcC,KAAd,GAAkDF,KAAlD,CAAcE,KAAd;EAAA,IAAqBC,OAArB,GAAkDH,KAAlD,CAAqBG,OAArB;EAAA,IAA8BC,MAA9B,GAAkDJ,KAAlD,CAA8BI,MAA9B;EAAA,IAAsCC,OAAtC,GAAkDL,KAAlD,CAAsCK,OAAtC;;EACA,WAAwBL,KAAK,IAAI,EAAjC;EAAA,IAAQM,WAAR,QAAQA,WAAR;;EACA,YAAiBA,WAAW,IAAI,EAAhC;EAAA,IAAQC,IAAR,SAAQA,IAAR;;EACA,YAAgEA,IAAI,IAAI,EAAxE;EAAA,IAAQC,UAAR,SAAQA,UAAR;EAAA,IAAoBC,UAApB,SAAoBA,UAApB;EAAA,kCAAgCC,oBAAhC;EAAA,IAAgCA,oBAAhC,sCAAuD,IAAvD;;EAEA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAAAjB,KAAK,EAAI;IACtB,IAAMkB,MAAM,mCACPX,IAAI,CAACY,IAAL,CAAUC,QAAV,EADO;MAEVpB,KAAK,EAALA;IAFU,EAAZ;;IAIA,IAAMqB,MAAM,GAAGb,KAAK,CAACa,MAAN,GAAeC,YAAf,CAA4Bf,IAAI,CAACT,GAAjC,EAAsC;MAAEqB,IAAI,EAAED;IAAR,CAAtC,CAAf;IAEA,IAAMK,QAAQ,GAAGf,KAAK,CAACgB,QAAN,CAAeC,WAAf,CAA2BlB,IAAI,CAACT,GAAhC,CAAjB;IAEAuB,MAAM,CAACK,WAAP,CAAmBH,QAAQ,CAACzB,GAA5B,EAAiC,CAAjC,EAAoC6B,YAApC,CAAiDJ,QAAQ,CAACzB,GAA1D,EAA+D,CAA/D;IAEAQ,KAAK,CAACsB,aAAN,CAAoBP,MAApB,EAA4B,KAA5B;EACD,CAZD;;EAcA,IAAMQ,QAAQ,GAAG,SAAXA,QAAW,CAAA7B,KAAK,EAAI;IACxB,IAAMkB,MAAM,mCACPX,IAAI,CAACY,IAAL,CAAUC,QAAV,EADO;MAEVpB,KAAK,EAALA;IAFU,EAAZ;;IAIA,IAAMqB,MAAM,GAAGb,KAAK,CAACa,MAAN,GAAeC,YAAf,CAA4Bf,IAAI,CAACT,GAAjC,EAAsC;MAAEqB,IAAI,EAAED;IAAR,CAAtC,CAAf;IACA1B,GAAG,CAAC,uBAAD,EAA0B6B,MAA1B,CAAH;IACAf,KAAK,CAACwB,YAAN,CAAmBvB,IAAI,CAACT,GAAxB,EAA6BoB,MAA7B;EACD,CARD;;EAUA,IAAMlB,KAAK,GAAGO,IAAI,CAACY,IAAL,CAAUY,GAAV,CAAc,OAAd,CAAd;EAEA,oBACE,gCAAC,wBAAD;IACE,SAAS,MADX;IAEE,cAAc,EAAEpC,sBAAsB,CAACoB,UAAD,CAFxC;IAGE,KAAK,EAAEf,KAHT;IAIE,QAAQ,EAAE6B,QAJZ;IAKE,MAAM,EAAEZ,MALV;IAME,MAAM,EAAEP,MANV;IAOE,OAAO,EAAED,OAPX;IAQE,OAAO,EAAEE,OARX;IASE,UAAU,EAAEG,UATd;IAUE,oBAAoB,EAAEE;EAVxB,EADF;AAcD,CA/C8B,EAgD/B,UAACgB,IAAD,EAAOC,IAAP,EAAgB;EACd,IAAQ1B,IAAR,GAAwFyB,IAAxF,CAAQzB,IAAR;EAAA,wBAAwFyB,IAAxF,CAAcpB,WAAd;EAAA,mDAAiF,EAAjF;EAAA,8CAA6BC,IAA7B;EAAA,2DAA0E,EAA1E;EAAA,IAAqCC,UAArC,yBAAqCA,UAArC;EAAA,IAAiDE,oBAAjD,yBAAiDA,oBAAjD;EACA,IACQkB,QADR,GAKID,IALJ,CACE1B,IADF;EAAA,wBAKI0B,IALJ,CAEErB,WAFF;EAAA,mDAIM,EAJN;EAAA,8CAGIC,IAHJ;EAAA,2DAG2F,EAH3F;EAAA,IAGwBsB,cAHxB,yBAGYrB,UAHZ;EAAA,IAG8DsB,wBAH9D,yBAGwCpB,oBAHxC;EAMA,IAAMqB,iBAAiB,GAAGvB,UAAU,KAAKqB,cAAzC;EACA,IAAMG,2BAA2B,GAAGtB,oBAAoB,KAAKoB,wBAA7D;EAEA,IAAMG,KAAK,GAAGhC,IAAI,CAACiC,MAAL,CAAYN,QAAZ,CAAd;EACA,OAAOK,KAAK,IAAI,CAACF,iBAAV,IAA+B,CAACC,2BAAvC;AACD,CA7D8B,CAA1B;;;AAgEPnC,iBAAiB,CAACsC,SAAlB,GAA8B;EAC5BlC,IAAI,EAAEmC,0BAAA,CAAenC,IAAf,CAAoBoC,UADE;EAE5BnC,KAAK,EAAEkC,0BAAA,CAAelC,KAFM;EAG5BoB,aAAa,EAAEgB,qBAAA,CAAUC,IAHG;EAI5Bf,YAAY,EAAEc,qBAAA,CAAUC,IAJI;EAK5BpC,OAAO,EAAEmC,qBAAA,CAAUC,IALS;EAM5BlC,OAAO,EAAEiC,qBAAA,CAAUC,IANS;EAO5BnC,MAAM,EAAEkC,qBAAA,CAAUC;AAPU,CAA9B;;AAUe,SAASC,UAAT,GAAsB;EACnC,OAAO;IACL/C,IAAI,EAAE,MADD;IAELgD,OAAO,EAAE;MACPC,IAAI,eAAE,gCAAC,qBAAD,OADC;MAEPrC,OAAO,EAAE,iBAACH,KAAD,EAAQqB,QAAR,EAAqB;QAC5BrC,GAAG,CAAC,cAAD,CAAH;QACA,IAAMqB,IAAI,GAAGoC,UAAU,EAAvB;QACA,IAAM5B,MAAM,GAAGb,KAAK,CAACa,MAAN,GAAe6B,YAAf,CAA4BrC,IAA5B,CAAf;QACAgB,QAAQ,CAACR,MAAD,CAAR;MACD,CAPM;MAQP8B,QAAQ,EAAE,kBAAA5C,IAAI;QAAA,OAAIA,IAAI,IAAIA,IAAI,CAAC6C,MAAL,KAAgB,QAAxB,IAAoC7C,IAAI,CAAC8C,IAAL,KAAc,MAAtD;MAAA,CARP;;MASP;AACN;AACA;AACA;AACA;AACA;AACA;MACMlD,iBAAiB,EAAjBA;IAhBO,CAFJ;IAoBLmD,MAAM,EAAE;MACN9B,QAAQ,EAAE;QAAE+B,KAAK,EAAE,CAAC;UAAEF,IAAI,EAAE;QAAR,CAAD;MAAT;IADJ,CApBH;IAwBLG,YAAY,EAAE,sBAACjD,IAAD,EAAOkD,UAAP,EAAmBC,CAAnB,EAAyB;MACrC,IAAIA,CAAJ,EAAO;QACL,OAAO;UACLC,QAAQ,EAAE,UADL;UAELC,GAAG,EAAE;QAFA,CAAP;MAID;IACF,CA/BI;IAiCLC,UAAU,EAAE,oBAAAvD,KAAK,EAAI;MACnB,IAAIA,KAAK,CAACC,IAAN,CAAW8C,IAAX,KAAoB,MAAxB,EAAgC;QAC9B7D,GAAG,CAAC,qBAAD,EAAwBc,KAAK,CAACC,IAAN,CAAWY,IAAnC,CAAH;QACA,oBAAO,gCAAC,wBAAD,EAAiBb,KAAjB,CAAP;MACD;MAED;AACN;AACA;;;MACM,IAAIA,KAAK,CAACC,IAAN,CAAW8C,IAAX,KAAoB,QAAxB,EAAkC;QAChC,IAAMS,IAAI,GAAGxD,KAAK,CAACC,IAAN,CAAWY,IAAX,CAAgBY,GAAhB,CAAoB,MAApB,CAAb;QAEA,oBAAO,sEAAUzB,KAAK,CAACyD,UAAhB;UAA4B,uBAAuB,EAAE;YAAEC,MAAM,EAAEF;UAAV;QAArD,GAAP;MACD;IACF;EA/CI,CAAP;AAiDD;;AAEDhB,UAAU,CAACmB,cAAX,GAA4B,gBAA5B;AACAnB,UAAU,CAACoB,eAAX,GAA6B,iBAA7B;AACApB,UAAU,CAACqB,MAAX,GAAoB,QAApB;AACArB,UAAU,CAACsB,aAAX,GAA2B,eAA3B;;AAEO,IAAMnB,UAAU,GAAG,SAAbA,UAAa;EAAA,OACxBoB,aAAA,CAAOC,MAAP,CAAc;IACZlB,MAAM,EAAE,QADI;IAEZC,IAAI,EAAE,MAFM;IAGZkB,MAAM,EAAE,IAHI;IAIZpD,IAAI,EAAE;MACJnB,KAAK,EAAE;IADH;EAJM,CAAd,CADwB;AAAA,CAAnB;;;;AAUP,IAAMwE,UAAU,GAAG,SAAbA,UAAa,CAAAC,KAAK,EAAI;EAC1B,IAAMC,GAAG,GAAG,IAAIC,SAAJ,GAAgBC,eAAhB,CAAgCH,KAAhC,EAAuC,WAAvC,CAAZ;EAEA,OAAOC,GAAG,CAACG,eAAJ,CAAoBC,WAA3B;AACD,CAJD;;AAMA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAAAC,EAAE,EAAI;EACvB,OAAO,CAAEA,EAAE,IAAIA,EAAE,CAACC,OAAV,IAAsB,EAAvB,EAA2BC,WAA3B,EAAP;AACD,CAFD;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAAV,KAAK,EAAI;EAChC,IAAMW,UAAU,GAAGX,KAAK,CAACY,KAAN,CAAY,GAAZ,CAAnB,CADgC,CAGhC;;EACA,IAAIZ,KAAK,CAACa,MAAN,GAAe,CAAnB,EAAsB;IACpB,OAAOF,UAAU,CAACG,MAAX,CAAkB,UAACC,EAAD,EAAKC,IAAL,EAAc;MACrC;AACN;AACA;AACA;AACA;AACA;MACM,IAAIA,IAAI,CAAClC,KAAL,CAAW,sBAAX,CAAJ,EAAwC;QACtC,iBAAUiC,EAAV,SAAeA,EAAE,GAAG,GAAH,GAAS,EAA1B,SAA+BC,IAA/B;MACD;;MAED,iBAAUD,EAAV,SAAeA,EAAE,GAAG,MAAH,GAAY,EAA7B,SAAkCC,IAAlC;IACD,CAZM,EAYJ,EAZI,CAAP;EAaD;;EAED,OAAOhB,KAAP;AACD,CArBD;;AAuBO,IAAMiB,aAAa,GAAG;EAC3BC,WAD2B,uBACfX,EADe,EACX;IACd,IAAMC,OAAO,GAAGF,UAAU,CAACC,EAAD,CAA1B;IACA;AACJ;AACA;AACA;AACA;AACA;AACA;;IACI,IAAMY,YAAY,GAChBC,yBAAA,CAAWZ,OAAX,KAAuBD,EAAE,CAACc,UAAH,CAAcR,MAAd,KAAyB,CAAhD,IAAqDP,UAAU,CAACC,EAAE,CAACe,UAAJ,CAAV,KAA8B,MADrF;IAEAvG,GAAG,CAAC,sBAAD,EAAyByF,OAAzB,CAAH;IAEA;AACJ;AACA;;IACI,IAAIA,OAAO,KAAK,MAAZ,IAAuBD,EAAE,CAACgB,OAAH,IAAchB,EAAE,CAACgB,OAAH,CAAW3C,IAAX,KAAoB,QAAzD,IAAsEuC,YAA1E,EAAwF;MACtF,IAAMK,OAAO,GAAGL,YAAY,GAAGZ,EAAE,CAACkB,SAAN,GAAkBlB,EAAE,CAACmB,SAAjD;MAEA,OAAO;QACL/C,MAAM,EAAE,QADH;QAELmB,MAAM,EAAE,IAFH;QAGLlB,IAAI,EAAE,QAHD;QAILlC,IAAI,EAAE;UACJ2C,IAAI,EAAEmC;QADF;MAJD,CAAP;IAQD;;IAED,IAAIjB,EAAE,CAACoB,QAAH,KAAgB1G,SAApB,EAA+B;MAC7B;IACD;;IAED,IAAIuF,OAAO,KAAK,MAAhB,EAAwB;MACtB;IACD;;IAED,IAAMoB,QAAQ,GAAGrB,EAAE,CAACsB,YAAH,CAAgB,YAAhB,KAAiCtB,EAAE,CAACsB,YAAH,CAAgB,OAAhB,CAAlD;;IAEA,IAAID,QAAJ,EAAc;MACZ,IAAMrG,KAAK,GAAGwE,UAAU,CAACQ,EAAE,CAACkB,SAAJ,CAAxB;;MACA,kBAAgC,IAAAK,yBAAA,EAAWvG,KAAX,CAAhC;MAAA,IAAQwG,SAAR,eAAQA,SAAR;MAAA,IAAmBC,QAAnB,eAAmBA,QAAnB;;MACAjH,GAAG,CAAC,6BAAD,EAAgCgH,SAAhC,EAA2CC,QAA3C,CAAH;MACA,OAAO;QACLrD,MAAM,EAAE,QADH;QAELC,IAAI,EAAE,MAFD;QAGLkB,MAAM,EAAE,IAHH;QAILmC,KAAK,EAAE,EAJF;QAKLvF,IAAI,EAAE;UACJnB,KAAK,EAAEwG,SADH;UAEJG,OAAO,EAAEF;QAFL;MALD,CAAP;IAUD;EACF,CAvD0B;EAwD3BG,SAxD2B,qBAwDjBxD,MAxDiB,EAwDT;IAChB,IAAIA,MAAM,CAACC,IAAP,KAAgB,MAApB,EAA4B;MAC1B,IAAMwD,CAAC,GAAGzD,MAAM,CAACjC,IAAP,CAAYY,GAAZ,CAAgB,OAAhB,CAAV;MACA,IAAM4E,OAAO,GAAGvD,MAAM,CAACjC,IAAP,CAAYY,GAAZ,CAAgB,SAAhB,CAAhB;MACAvC,GAAG,CAAC,qBAAD,EAAwBqH,CAAxB,CAAH;MACA,IAAMC,OAAO,GAAGtC,UAAU,CAACW,gBAAgB,CAAC0B,CAAD,CAAjB,CAA1B;MACA,oBACE;QAAM,cAAW,EAAjB;QAAoB,YAAUC;MAA9B,GACG,IAAAC,uBAAA,EAASD,OAAT,EAAkBH,OAAlB,CADH,CADF;IAKD;IAED;AACJ;AACA;;;IACI,IAAIvD,MAAM,CAACC,IAAP,KAAgB,QAApB,EAA8B;MAC5B,IAAMS,IAAI,GAAGV,MAAM,CAACjC,IAAP,CAAYY,GAAZ,CAAgB,MAAhB,CAAb;MAEA,oBAAO;QAAM,aAAU,QAAhB;QAAyB,uBAAuB,EAAE;UAAEiC,MAAM,EAAEF;QAAV;MAAlD,EAAP;IACD;EACF;AA7E0B,CAAtB"}
|
|
@@ -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,"file":"index.js","names":["log","debug","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"],"sources":["../../../src/plugins/media/index.jsx"],"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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["log","debug","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"],"sources":["../../../src/plugins/media/index.jsx"],"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"],"mappings":"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"}
|
|
@@ -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,"file":"media-dialog.js","names":["log","debug","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","withStyles"],"sources":["../../../src/plugins/media/media-dialog.js"],"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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"media-dialog.js","names":["log","debug","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","withStyles"],"sources":["../../../src/plugins/media/media-dialog.js"],"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"],"mappings":"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"}
|