@pie-lib/editable-html 9.1.6 → 9.2.0
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 +23 -0
- package/lib/editor.js +10 -2
- package/lib/editor.js.map +1 -1
- package/lib/plugins/media/index.js +47 -4
- package/lib/plugins/media/index.js.map +1 -1
- package/lib/plugins/media/media-dialog.js +238 -27
- package/lib/plugins/media/media-dialog.js.map +1 -1
- package/lib/plugins/media/media-toolbar.js +3 -1
- package/lib/plugins/media/media-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/editor-and-toolbar.js +14 -4
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/index.js +1 -0
- package/lib/plugins/toolbar/index.js.map +1 -1
- package/package.json +3 -3
- package/src/editor.jsx +10 -2
- package/src/plugins/media/index.jsx +46 -6
- package/src/plugins/media/media-dialog.js +285 -89
- package/src/plugins/media/media-toolbar.jsx +7 -4
- package/src/plugins/toolbar/editor-and-toolbar.jsx +15 -7
- package/src/plugins/toolbar/index.jsx +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/plugins/toolbar/editor-and-toolbar.jsx"],"names":["log","EditorAndToolbar","IS_FIREFOX","editorRef","tmp","isUpdatingSelection","props","classes","children","value","plugins","onChange","getFocusedValue","onDone","focusedNode","autoWidth","readOnly","disableUnderline","pluginProps","toolbarOpts","onDataChange","toolbarRef","inFocus","isFocused","undefined","holderNames","editorHolder","editorInFocus","disabledUnderline","clonedChildren","React","cloneElement","ref","el","noBorder","error","root","noPadding","Component","PropTypes","oneOfType","arrayOf","node","isRequired","SlatePropTypes","array","func","bool","object","shape","position","oneOf","alwaysVisible","string","style","padding","border","borderRadius","cursor","wordBreak","overflow","maxHeight","overflowY","color","text","backgroundColor","background","left","right","bottom","height","content","transition","pointerEvents","transform","primary","display","backgroundSize","backgroundImage","backgroundRepeat","backgroundPosition"],"mappings":"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","sourcesContent":["import React from 'react';\nimport Toolbar from './toolbar';\nimport classNames from 'classnames';\nimport debug from 'debug';\nimport { primary } from '../../theme';\nimport { withStyles } from '@material-ui/core/styles';\nimport PropTypes from 'prop-types';\nimport SlatePropTypes from 'slate-prop-types';\nimport { IS_FIREFOX } from 'slate-dev-environment';\nimport { color } from '@pie-lib/render-ui';\n\nconst log = debug('@pie-lib:editable-html:plugins:toolbar:editor-and-toolbar');\n\nexport class EditorAndToolbar extends React.Component {\n static propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n value: SlatePropTypes.value.isRequired,\n plugins: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n getFocusedValue: PropTypes.func.isRequired,\n onDone: PropTypes.func.isRequired,\n onDataChange: PropTypes.func,\n toolbarRef: PropTypes.func,\n focusedNode: SlatePropTypes.node,\n readOnly: PropTypes.bool,\n disableUnderline: PropTypes.bool,\n autoWidth: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n pluginProps: PropTypes.object,\n toolbarOpts: PropTypes.shape({\n position: PropTypes.oneOf(['bottom', 'top']),\n alwaysVisible: PropTypes.bool,\n error: PropTypes.string\n })\n };\n\n /** This is an interim fix until this PR is merged in slate:\n * https://github.com/ianstormtaylor/slate/pull/2236\n */\n componentDidMount() {\n if (IS_FIREFOX) {\n this.editorRef.tmp.isUpdatingSelection = true;\n }\n }\n\n render() {\n const {\n classes,\n children,\n value,\n plugins,\n onChange,\n getFocusedValue,\n onDone,\n focusedNode,\n autoWidth,\n readOnly,\n disableUnderline,\n pluginProps,\n toolbarOpts,\n onDataChange,\n toolbarRef\n } = this.props;\n\n const inFocus = value.isFocused || (focusedNode !== null && focusedNode !== undefined);\n const holderNames = classNames(\n classes.editorHolder,\n inFocus && classes.editorInFocus,\n readOnly && classes.readOnly,\n disableUnderline && classes.disabledUnderline\n );\n let clonedChildren = children;\n\n if (typeof children !== 'string') {\n clonedChildren = React.cloneElement(children, {\n ref: el => (this.editorRef = el)\n });\n }\n\n log(\n '[render] inFocus: ',\n inFocus,\n 'value.isFocused:',\n value.isFocused,\n 'focused node: ',\n focusedNode\n );\n\n return (\n <div\n className={classNames(\n {\n [classes.noBorder]: toolbarOpts && toolbarOpts.noBorder,\n [classes.error]: toolbarOpts && toolbarOpts.error\n },\n classes.root\n )}\n >\n <div className={holderNames}>\n <div\n className={classNames(\n {\n [classes.noPadding]: toolbarOpts && toolbarOpts.noBorder\n },\n classes.children\n )}\n >\n {clonedChildren}\n </div>\n </div>\n <Toolbar\n autoWidth={autoWidth}\n plugins={plugins}\n focusedNode={focusedNode}\n value={value}\n isFocused={inFocus}\n onChange={onChange}\n getFocusedValue={getFocusedValue}\n onDone={onDone}\n onDataChange={onDataChange}\n toolbarRef={toolbarRef}\n pluginProps={pluginProps}\n toolbarOpts={toolbarOpts}\n />\n </div>\n );\n }\n}\n\nconst style = {\n root: {\n position: 'relative',\n padding: '0px',\n border: '1px solid #ccc',\n borderRadius: '4px',\n cursor: 'text',\n '& [data-slate-editor=\"true\"]': {\n wordBreak: 'break-word',\n overflow: 'visible',\n maxHeight: '500px',\n // needed in order to be able to put the focus before a void element when it is the first one in the editor\n padding: '5px'\n }\n },\n children: {\n padding: '10px 16px'\n },\n editorHolder: {\n position: 'relative',\n padding: '0px',\n overflowY: 'scroll',\n color: color.text(),\n backgroundColor: color.background(),\n '&::before': {\n left: '0',\n right: '0',\n bottom: '0',\n height: '1px',\n content: '\"\"',\n position: 'absolute',\n transition: 'background-color 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms',\n pointerEvents: 'none',\n backgroundColor: 'rgba(0, 0, 0, 0.42)'\n },\n '&::after': {\n left: '0',\n right: '0',\n bottom: '0',\n height: '1px',\n content: '\"\"',\n position: 'absolute',\n transform: 'scaleX(0)',\n transition:\n 'transform 200ms cubic-bezier(0.0, 0.0, 0.2, 1) 0ms, background-color 200ms linear',\n backgroundColor: 'rgba(0, 0, 0, 0.42)'\n },\n '&:focus': {\n '&::after': {\n transform: 'scaleX(1)',\n backgroundColor: primary,\n height: '2px'\n }\n },\n '&:hover': {\n '&::after': {\n transform: 'scaleX(1)',\n backgroundColor: 'black',\n height: '2px'\n }\n }\n },\n disabledUnderline: {\n '&::before': {\n display: 'none'\n },\n '&::after': {\n display: 'none'\n }\n },\n\n readOnly: {\n '&::before': {\n background: 'transparent',\n backgroundSize: '5px 1px',\n backgroundImage: 'linear-gradient(to right, rgba(0, 0, 0, 0.42) 33%, transparent 0%)',\n backgroundRepeat: 'repeat-x',\n backgroundPosition: 'left top'\n },\n '&::after': {\n left: '0',\n right: '0',\n bottom: '0',\n height: '1px',\n content: '\"\"',\n position: 'absolute',\n transform: 'scaleX(0)',\n transition: 'transform 200ms cubic-bezier(0.0, 0.0, 0.2, 1) 0ms, background-color 0ms linear',\n backgroundColor: 'rgba(0, 0, 0, 0)'\n },\n '&:hover': {\n '&::after': {\n transform: 'scaleX(0)',\n backgroundColor: 'black',\n height: '2px'\n }\n }\n },\n editorInFocus: {\n '&::after': {\n transform: 'scaleX(1)',\n backgroundColor: primary,\n height: '2px'\n },\n '&:hover': {\n '&::after': {\n backgroundColor: primary\n }\n }\n },\n error: {\n border: '2px solid red'\n },\n noBorder: {\n border: 'none'\n },\n noPadding: {\n padding: 0\n }\n};\n\nexport default withStyles(style)(EditorAndToolbar);\n"],"file":"editor-and-toolbar.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/plugins/toolbar/editor-and-toolbar.jsx"],"names":["log","EditorAndToolbar","IS_FIREFOX","editorRef","tmp","isUpdatingSelection","props","classes","children","value","plugins","onChange","getFocusedValue","onDone","focusedNode","autoWidth","readOnly","disableScrollbar","disableUnderline","pluginProps","toolbarOpts","onDataChange","toolbarRef","inFocus","isFocused","undefined","holderNames","editorHolder","editorInFocus","disabledUnderline","disabledScrollbar","clonedChildren","React","cloneElement","ref","el","noBorder","error","root","noPadding","Component","PropTypes","oneOfType","arrayOf","node","isRequired","SlatePropTypes","array","func","bool","object","shape","position","oneOf","alwaysVisible","string","style","padding","border","borderRadius","cursor","wordBreak","overflow","maxHeight","overflowY","color","text","backgroundColor","background","left","right","bottom","height","content","transition","pointerEvents","transform","primary","display","scrollbarWidth","backgroundSize","backgroundImage","backgroundRepeat","backgroundPosition"],"mappings":"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","sourcesContent":["import React from 'react';\nimport Toolbar from './toolbar';\nimport classNames from 'classnames';\nimport debug from 'debug';\nimport { primary } from '../../theme';\nimport { withStyles } from '@material-ui/core/styles';\nimport PropTypes from 'prop-types';\nimport SlatePropTypes from 'slate-prop-types';\nimport { IS_FIREFOX } from 'slate-dev-environment';\nimport { color } from '@pie-lib/render-ui';\n\nconst log = debug('@pie-lib:editable-html:plugins:toolbar:editor-and-toolbar');\n\nexport class EditorAndToolbar extends React.Component {\n static propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n value: SlatePropTypes.value.isRequired,\n plugins: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n getFocusedValue: PropTypes.func.isRequired,\n onDone: PropTypes.func.isRequired,\n onDataChange: PropTypes.func,\n toolbarRef: PropTypes.func,\n focusedNode: SlatePropTypes.node,\n readOnly: PropTypes.bool,\n disableScrollbar: PropTypes.bool,\n disableUnderline: PropTypes.bool,\n autoWidth: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n pluginProps: PropTypes.object,\n toolbarOpts: PropTypes.shape({\n position: PropTypes.oneOf(['bottom', 'top']),\n alwaysVisible: PropTypes.bool,\n error: PropTypes.string\n })\n };\n\n /** This is an interim fix until this PR is merged in slate:\n * https://github.com/ianstormtaylor/slate/pull/2236\n */\n componentDidMount() {\n if (IS_FIREFOX) {\n this.editorRef.tmp.isUpdatingSelection = true;\n }\n }\n\n render() {\n const {\n classes,\n children,\n value,\n plugins,\n onChange,\n getFocusedValue,\n onDone,\n focusedNode,\n autoWidth,\n readOnly,\n disableScrollbar,\n disableUnderline,\n pluginProps,\n toolbarOpts,\n onDataChange,\n toolbarRef\n } = this.props;\n\n const inFocus = value.isFocused || (focusedNode !== null && focusedNode !== undefined);\n const holderNames = classNames(classes.editorHolder, {\n [classes.editorInFocus]: inFocus,\n [classes.readOnly]: readOnly,\n [classes.disabledUnderline]: disableUnderline,\n [classes.disabledScrollbar]: disableScrollbar\n });\n let clonedChildren = children;\n\n if (typeof children !== 'string') {\n clonedChildren = React.cloneElement(children, {\n ref: el => (this.editorRef = el)\n });\n }\n\n log(\n '[render] inFocus: ',\n inFocus,\n 'value.isFocused:',\n value.isFocused,\n 'focused node: ',\n focusedNode\n );\n\n return (\n <div\n className={classNames(\n {\n [classes.noBorder]: toolbarOpts && toolbarOpts.noBorder,\n [classes.error]: toolbarOpts && toolbarOpts.error\n },\n classes.root\n )}\n >\n <div className={holderNames}>\n <div\n className={classNames(\n {\n [classes.noPadding]: toolbarOpts && toolbarOpts.noBorder\n },\n classes.children\n )}\n >\n {clonedChildren}\n </div>\n </div>\n <Toolbar\n autoWidth={autoWidth}\n plugins={plugins}\n focusedNode={focusedNode}\n value={value}\n isFocused={inFocus}\n onChange={onChange}\n getFocusedValue={getFocusedValue}\n onDone={onDone}\n onDataChange={onDataChange}\n toolbarRef={toolbarRef}\n pluginProps={pluginProps}\n toolbarOpts={toolbarOpts}\n />\n </div>\n );\n }\n}\n\nconst style = {\n root: {\n position: 'relative',\n padding: '0px',\n border: '1px solid #ccc',\n borderRadius: '4px',\n cursor: 'text',\n '& [data-slate-editor=\"true\"]': {\n wordBreak: 'break-word',\n overflow: 'visible',\n maxHeight: '500px',\n // needed in order to be able to put the focus before a void element when it is the first one in the editor\n padding: '5px'\n }\n },\n children: {\n padding: '10px 16px'\n },\n editorHolder: {\n position: 'relative',\n padding: '0px',\n overflowY: 'scroll',\n color: color.text(),\n backgroundColor: color.background(),\n '&::before': {\n left: '0',\n right: '0',\n bottom: '0',\n height: '1px',\n content: '\"\"',\n position: 'absolute',\n transition: 'background-color 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms',\n pointerEvents: 'none',\n backgroundColor: 'rgba(0, 0, 0, 0.42)'\n },\n '&::after': {\n left: '0',\n right: '0',\n bottom: '0',\n height: '1px',\n content: '\"\"',\n position: 'absolute',\n transform: 'scaleX(0)',\n transition:\n 'transform 200ms cubic-bezier(0.0, 0.0, 0.2, 1) 0ms, background-color 200ms linear',\n backgroundColor: 'rgba(0, 0, 0, 0.42)'\n },\n '&:focus': {\n '&::after': {\n transform: 'scaleX(1)',\n backgroundColor: primary,\n height: '2px'\n }\n },\n '&:hover': {\n '&::after': {\n transform: 'scaleX(1)',\n backgroundColor: 'black',\n height: '2px'\n }\n }\n },\n disabledUnderline: {\n '&::before': {\n display: 'none'\n },\n '&::after': {\n display: 'none'\n }\n },\n disabledScrollbar: {\n '&::-webkit-scrollbar': {\n display: 'none'\n },\n scrollbarWidth: 'none',\n '-ms-overflow-style': 'none'\n },\n readOnly: {\n '&::before': {\n background: 'transparent',\n backgroundSize: '5px 1px',\n backgroundImage: 'linear-gradient(to right, rgba(0, 0, 0, 0.42) 33%, transparent 0%)',\n backgroundRepeat: 'repeat-x',\n backgroundPosition: 'left top'\n },\n '&::after': {\n left: '0',\n right: '0',\n bottom: '0',\n height: '1px',\n content: '\"\"',\n position: 'absolute',\n transform: 'scaleX(0)',\n transition: 'transform 200ms cubic-bezier(0.0, 0.0, 0.2, 1) 0ms, background-color 0ms linear',\n backgroundColor: 'rgba(0, 0, 0, 0)'\n },\n '&:hover': {\n '&::after': {\n transform: 'scaleX(0)',\n backgroundColor: 'black',\n height: '2px'\n }\n }\n },\n editorInFocus: {\n '&::after': {\n transform: 'scaleX(1)',\n backgroundColor: primary,\n height: '2px'\n },\n '&:hover': {\n '&::after': {\n backgroundColor: primary\n }\n }\n },\n error: {\n border: '2px solid red'\n },\n noBorder: {\n border: 'none'\n },\n noPadding: {\n padding: 0\n }\n};\n\nexport default withStyles(style)(EditorAndToolbar);\n"],"file":"editor-and-toolbar.js"}
|
|
@@ -23,6 +23,7 @@ function ToolbarPlugin(opts) {
|
|
|
23
23
|
renderEditor: function renderEditor(props) {
|
|
24
24
|
return /*#__PURE__*/_react["default"].createElement(_editorAndToolbar["default"], (0, _extends2["default"])({}, props, {
|
|
25
25
|
mainEditorRef: opts.mainEditorRef,
|
|
26
|
+
disableScrollbar: opts.disableScrollbar,
|
|
26
27
|
disableUnderline: opts.disableUnderline,
|
|
27
28
|
onDone: opts.onDone
|
|
28
29
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/plugins/toolbar/index.jsx"],"names":["ToolbarPlugin","opts","renderEditor","props","mainEditorRef","disableUnderline","onDone"],"mappings":";;;;;;;;;;;AAAA;;AAEA;;AAEA;AACA;AACA;AACA;AACe,SAASA,aAAT,CAAuBC,IAAvB,EAA6B;AAC1C,SAAO;AACL;AACAC,IAAAA,YAAY,EAAE,sBAAAC,KAAK;AAAA,0BACjB,gCAAC,4BAAD,gCACMA,KADN;AAEE,QAAA,aAAa,EAAEF,IAAI,CAACG,aAFtB;AAGE,QAAA,gBAAgB,EAAEH,IAAI,CAACI,gBAHzB;AAIE,QAAA,
|
|
1
|
+
{"version":3,"sources":["../../../src/plugins/toolbar/index.jsx"],"names":["ToolbarPlugin","opts","renderEditor","props","mainEditorRef","disableScrollbar","disableUnderline","onDone"],"mappings":";;;;;;;;;;;AAAA;;AAEA;;AAEA;AACA;AACA;AACA;AACe,SAASA,aAAT,CAAuBC,IAAvB,EAA6B;AAC1C,SAAO;AACL;AACAC,IAAAA,YAAY,EAAE,sBAAAC,KAAK;AAAA,0BACjB,gCAAC,4BAAD,gCACMA,KADN;AAEE,QAAA,aAAa,EAAEF,IAAI,CAACG,aAFtB;AAGE,QAAA,gBAAgB,EAAEH,IAAI,CAACI,gBAHzB;AAIE,QAAA,gBAAgB,EAAEJ,IAAI,CAACK,gBAJzB;AAKE,QAAA,MAAM,EAAEL,IAAI,CAACM;AALf,SADiB;AAAA;AAFd,GAAP;AAYD","sourcesContent":["import React from 'react';\n\nimport EditorAndToolbar from './editor-and-toolbar';\n\n/**\n * Adds a toolbar which is shown when the editor is focused.\n * @param {*} opts\n */\nexport default function ToolbarPlugin(opts) {\n return {\n /* eslint-disable-next-line */\n renderEditor: props => (\n <EditorAndToolbar\n {...props}\n mainEditorRef={opts.mainEditorRef}\n disableScrollbar={opts.disableScrollbar}\n disableUnderline={opts.disableUnderline}\n onDone={opts.onDone}\n />\n )\n };\n}\n"],"file":"index.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-lib/editable-html",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.2.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"@pie-lib/drag": "^1.1.52",
|
|
14
14
|
"@pie-lib/math-rendering": "^2.5.0",
|
|
15
15
|
"@pie-lib/math-toolbar": "^1.11.1",
|
|
16
|
-
"@pie-lib/render-ui": "^4.13.
|
|
16
|
+
"@pie-lib/render-ui": "^4.13.6",
|
|
17
17
|
"change-case": "^3.0.2",
|
|
18
18
|
"classnames": "^2.2.6",
|
|
19
19
|
"debug": "^4.1.1",
|
|
@@ -47,6 +47,6 @@
|
|
|
47
47
|
"publishConfig": {
|
|
48
48
|
"access": "public"
|
|
49
49
|
},
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "7ad98ca33a39276da5e170339b3bd8bb626dd54b",
|
|
51
51
|
"scripts": {}
|
|
52
52
|
}
|
package/src/editor.jsx
CHANGED
|
@@ -54,6 +54,10 @@ export class Editor extends React.Component {
|
|
|
54
54
|
focus: PropTypes.func.isRequired,
|
|
55
55
|
value: SlateTypes.value.isRequired,
|
|
56
56
|
imageSupport: PropTypes.object,
|
|
57
|
+
uploadSoundSupport: PropTypes.shape({
|
|
58
|
+
add: PropTypes.func,
|
|
59
|
+
delete: PropTypes.func
|
|
60
|
+
}),
|
|
57
61
|
charactersLimit: PropTypes.number,
|
|
58
62
|
width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
|
59
63
|
height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
|
@@ -64,6 +68,7 @@ export class Editor extends React.Component {
|
|
|
64
68
|
disabled: PropTypes.bool,
|
|
65
69
|
spellCheck: PropTypes.bool,
|
|
66
70
|
nonEmpty: PropTypes.bool,
|
|
71
|
+
disableScrollbar: PropTypes.bool,
|
|
67
72
|
disableUnderline: PropTypes.bool,
|
|
68
73
|
autoWidthToolbar: PropTypes.bool,
|
|
69
74
|
pluginProps: PropTypes.any,
|
|
@@ -170,6 +175,7 @@ export class Editor extends React.Component {
|
|
|
170
175
|
* To minimize converting html -> state -> html
|
|
171
176
|
* We only emit markup once 'done' is clicked.
|
|
172
177
|
*/
|
|
178
|
+
disableScrollbar: !!props.disableScrollbar,
|
|
173
179
|
disableUnderline: props.disableUnderline,
|
|
174
180
|
autoWidth: props.autoWidthToolbar,
|
|
175
181
|
onDone: () => {
|
|
@@ -218,7 +224,8 @@ export class Editor extends React.Component {
|
|
|
218
224
|
media: {
|
|
219
225
|
focus: this.focus,
|
|
220
226
|
createChange: () => this.state.value.change(),
|
|
221
|
-
onChange: this.onChange
|
|
227
|
+
onChange: this.onChange,
|
|
228
|
+
uploadSoundSupport: props.uploadSoundSupport
|
|
222
229
|
}
|
|
223
230
|
});
|
|
224
231
|
};
|
|
@@ -672,7 +679,8 @@ export class Editor extends React.Component {
|
|
|
672
679
|
maxWidth: '100%',
|
|
673
680
|
whiteSpace: 'nowrap',
|
|
674
681
|
opacity: '0.33',
|
|
675
|
-
pointerEvents: 'none'
|
|
682
|
+
pointerEvents: 'none',
|
|
683
|
+
userSelect: 'none'
|
|
676
684
|
}}
|
|
677
685
|
>
|
|
678
686
|
{editor.props.placeholder}
|
|
@@ -19,7 +19,7 @@ const removeDialogs = () => {
|
|
|
19
19
|
|
|
20
20
|
export const insertDialog = props => {
|
|
21
21
|
const newEl = document.createElement('div');
|
|
22
|
-
const { type, callback, ...rest } = props;
|
|
22
|
+
const { type, callback, opts, ...rest } = props;
|
|
23
23
|
const initialBodyOverflow = document.body.style.overflow;
|
|
24
24
|
|
|
25
25
|
removeDialogs();
|
|
@@ -34,7 +34,14 @@ export const insertDialog = props => {
|
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
const el = (
|
|
37
|
-
<MediaDialog
|
|
37
|
+
<MediaDialog
|
|
38
|
+
{...rest}
|
|
39
|
+
uploadSoundSupport={opts.uploadSoundSupport}
|
|
40
|
+
type={type}
|
|
41
|
+
disablePortal={true}
|
|
42
|
+
open={true}
|
|
43
|
+
handleClose={handleClose}
|
|
44
|
+
/>
|
|
38
45
|
);
|
|
39
46
|
|
|
40
47
|
ReactDOM.render(el, newEl);
|
|
@@ -68,6 +75,7 @@ export default function MediaPlugin(type, opts) {
|
|
|
68
75
|
onChange(change);
|
|
69
76
|
insertDialog({
|
|
70
77
|
type,
|
|
78
|
+
opts,
|
|
71
79
|
callback: (val, data) => {
|
|
72
80
|
const nodeIsThere = change.value.document.findDescendant(d => d.key === inline.key);
|
|
73
81
|
|
|
@@ -102,7 +110,7 @@ export default function MediaPlugin(type, opts) {
|
|
|
102
110
|
const { node, key } = props;
|
|
103
111
|
const { data } = node;
|
|
104
112
|
const jsonData = data.toJSON();
|
|
105
|
-
const { src, height, width, editing, ...rest } = jsonData;
|
|
113
|
+
const { src, height, width, editing, tag, ...rest } = jsonData;
|
|
106
114
|
const handleEdit = () => {
|
|
107
115
|
const change = opts.createChange();
|
|
108
116
|
const c = change.setNodeByKey(key, {
|
|
@@ -117,6 +125,7 @@ export default function MediaPlugin(type, opts) {
|
|
|
117
125
|
...jsonData,
|
|
118
126
|
edit: true,
|
|
119
127
|
type,
|
|
128
|
+
opts,
|
|
120
129
|
callback: (val, data) => {
|
|
121
130
|
const { key } = node;
|
|
122
131
|
|
|
@@ -150,6 +159,17 @@ export default function MediaPlugin(type, opts) {
|
|
|
150
159
|
style.height = `${height}px`;
|
|
151
160
|
}
|
|
152
161
|
|
|
162
|
+
if (tag === 'audio') {
|
|
163
|
+
return (
|
|
164
|
+
<MediaWrapper editor data-type={type} width={style.width} {...rest}>
|
|
165
|
+
<audio controls="controls">
|
|
166
|
+
<source type="audio/mp3" src={src} />
|
|
167
|
+
</audio>
|
|
168
|
+
<MediaToolbar hideEdit onRemove={handleDelete} />
|
|
169
|
+
</MediaWrapper>
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
|
|
153
173
|
return (
|
|
154
174
|
<MediaWrapper editor data-type={type} width={style.width} {...rest}>
|
|
155
175
|
<iframe
|
|
@@ -202,10 +222,20 @@ export default function MediaPlugin(type, opts) {
|
|
|
202
222
|
|
|
203
223
|
export const serialization = {
|
|
204
224
|
deserialize(el /*, next*/) {
|
|
205
|
-
|
|
225
|
+
let type = el.dataset && el.dataset.type;
|
|
226
|
+
let tag = 'iframe';
|
|
227
|
+
let src;
|
|
206
228
|
const typeIndex = types.indexOf(type);
|
|
207
229
|
|
|
208
|
-
if (typeIndex < 0)
|
|
230
|
+
if (typeIndex < 0) {
|
|
231
|
+
if (el instanceof Element && el.tagName.toLowerCase() === 'audio') {
|
|
232
|
+
type = 'audio';
|
|
233
|
+
tag = 'audio';
|
|
234
|
+
src = el.firstChild.getAttribute('src');
|
|
235
|
+
} else {
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
209
239
|
|
|
210
240
|
const { ends, starts, title, editing, url } = el.dataset || {};
|
|
211
241
|
|
|
@@ -218,7 +248,8 @@ export const serialization = {
|
|
|
218
248
|
type: type,
|
|
219
249
|
isVoid: true,
|
|
220
250
|
data: {
|
|
221
|
-
|
|
251
|
+
tag,
|
|
252
|
+
src: src || el.getAttribute('src'),
|
|
222
253
|
editing,
|
|
223
254
|
ends,
|
|
224
255
|
height,
|
|
@@ -240,6 +271,7 @@ export const serialization = {
|
|
|
240
271
|
|
|
241
272
|
const { data } = object;
|
|
242
273
|
const editing = data.get('editing');
|
|
274
|
+
const tag = data.get('tag');
|
|
243
275
|
const ends = data.get('ends');
|
|
244
276
|
const src = data.get('src');
|
|
245
277
|
const starts = data.get('starts');
|
|
@@ -269,6 +301,14 @@ export const serialization = {
|
|
|
269
301
|
src
|
|
270
302
|
};
|
|
271
303
|
|
|
304
|
+
if (tag === 'audio') {
|
|
305
|
+
return (
|
|
306
|
+
<audio controls="controls">
|
|
307
|
+
<source type="audio/mp3" src={src} />
|
|
308
|
+
</audio>
|
|
309
|
+
);
|
|
310
|
+
}
|
|
311
|
+
|
|
272
312
|
return (
|
|
273
313
|
<iframe
|
|
274
314
|
data-type={type}
|