@pie-lib/editable-html-tip-tap 1.0.3 → 1.0.5
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/components/CharacterPicker.js.map +1 -0
- package/lib/components/EditableHtml.js.map +1 -0
- package/lib/components/MenuBar.js +9 -8
- package/lib/components/MenuBar.js.map +1 -0
- package/lib/components/TiptapContainer.js.map +1 -0
- package/lib/components/characters/characterUtils.js.map +1 -0
- package/lib/components/characters/custom-popper.js.map +1 -0
- package/lib/components/common/done-button.js.map +1 -0
- package/lib/components/common/toolbar-buttons.js +194 -0
- package/lib/components/common/toolbar-buttons.js.map +1 -0
- package/lib/components/icons/CssIcon.js.map +1 -0
- package/lib/components/icons/RespArea.js.map +1 -0
- package/lib/components/icons/TableIcons.js.map +1 -0
- package/lib/components/icons/TextAlign.js.map +1 -0
- package/lib/components/image/AltDialog.js +129 -0
- package/lib/components/image/AltDialog.js.map +1 -0
- package/lib/components/image/ImageToolbar.js +167 -6
- package/lib/components/image/ImageToolbar.js.map +1 -0
- package/lib/components/image/InsertImageHandler.js +106 -7
- package/lib/components/image/InsertImageHandler.js.map +1 -0
- package/lib/components/image/alt-dialog.js +2 -0
- package/lib/components/media/MediaDialog.js +699 -6
- package/lib/components/media/MediaDialog.js.map +1 -0
- package/lib/components/media/MediaToolbar.js +91 -6
- package/lib/components/media/MediaToolbar.js.map +1 -0
- package/lib/components/media/MediaWrapper.js +93 -0
- package/lib/components/media/MediaWrapper.js.map +1 -0
- package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js.map +1 -0
- package/lib/components/respArea/DragInTheBlank/choice.js.map +1 -0
- package/lib/components/respArea/ExplicitConstructedResponse.js.map +1 -0
- package/lib/components/respArea/InlineDropdown.js.map +1 -0
- package/lib/components/respArea/ToolbarIcon.js.map +1 -0
- package/lib/constants.js.map +1 -0
- package/lib/extensions/component.js.map +1 -0
- package/lib/extensions/css.js.map +1 -0
- package/lib/extensions/custom-toolbar-wrapper.js.map +1 -0
- package/lib/extensions/extended-table.js.map +1 -0
- package/lib/extensions/image.js +2 -8
- package/lib/extensions/image.js.map +1 -0
- package/lib/extensions/index.js.map +1 -0
- package/lib/extensions/math.js.map +1 -0
- package/lib/extensions/media.js +3 -3
- package/lib/extensions/media.js.map +1 -0
- package/lib/extensions/responseArea.js.map +1 -0
- package/lib/index.js.map +1 -0
- package/lib/styles/editorContainerStyles.js.map +1 -0
- package/lib/theme.js.map +1 -0
- package/lib/utils/size.js.map +1 -0
- package/package.json +1 -1
- package/src/components/MenuBar.jsx +3 -3
- package/src/components/common/toolbar-buttons.jsx +138 -0
- package/src/components/image/AltDialog.jsx +82 -0
- package/src/components/image/ImageToolbar.jsx +100 -1
- package/src/components/image/InsertImageHandler.js +78 -1
- package/src/components/media/MediaDialog.js +624 -1
- package/src/components/media/MediaToolbar.jsx +56 -1
- package/src/components/media/MediaWrapper.jsx +43 -0
- package/src/extensions/image.js +2 -2
- package/src/extensions/media.js +2 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/image/ImageToolbar.jsx"],"names":["log","AlignmentButton","alignment","active","onClick","propTypes","PropTypes","string","isRequired","bool","func","ImageToolbar","newAlt","props","onChange","alt","popoverEl","document","createElement","el","onAltTextDone","ReactDOM","render","body","appendChild","classes","imageLoaded","disableImageAlignmentButtons","holder","onAlignmentClick","disabled","altButton","event","renderDialog","React","Component","object","styles","theme","paddingLeft","spacing","unit","display","alignItems","opacity","borderLeft","marginLeft"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\nimport debug from 'debug';\nimport ReactDOM from 'react-dom';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\n\nimport AltDialog from './AltDialog';\nimport { MarkButton } from '../common/toolbar-buttons';\n\nconst log = debug('@pie-lib:editable-html:plugins:image:image-toolbar');\n\nconst AlignmentButton = ({ alignment, active, onClick }) => {\n return (\n <MarkButton active={active} onToggle={() => onClick(alignment)} label={alignment}>\n {alignment}\n </MarkButton>\n );\n};\n\nAlignmentButton.propTypes = {\n alignment: PropTypes.string.isRequired,\n active: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n};\n\nexport class ImageToolbar extends React.Component {\n static propTypes = {\n onChange: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n alignment: PropTypes.string,\n alt: PropTypes.string,\n imageLoaded: PropTypes.bool,\n disableImageAlignmentButtons: PropTypes.bool,\n };\n\n onAltTextDone = (newAlt) => {\n log('[onAltTextDone]: alt:', newAlt);\n\n this.props.onChange({ alt: newAlt }, true);\n };\n\n onAlignmentClick = (alignment) => {\n log('[onAlignmentClick]: alignment:', alignment);\n this.props.onChange({ alignment });\n };\n\n renderDialog = () => {\n const { alt } = this.props;\n const popoverEl = document.createElement('div');\n\n const el = <AltDialog alt={alt} onDone={this.onAltTextDone} />;\n\n ReactDOM.render(el, popoverEl);\n\n document.body.appendChild(popoverEl);\n };\n\n render() {\n const { classes, alignment, imageLoaded, disableImageAlignmentButtons } = this.props;\n return (\n <div className={classes.holder}>\n {!disableImageAlignmentButtons && (\n <>\n <AlignmentButton alignment={'left'} active={alignment === 'left'} onClick={this.onAlignmentClick} />\n <AlignmentButton alignment={'center'} active={alignment === 'center'} onClick={this.onAlignmentClick} />\n <AlignmentButton alignment={'right'} active={alignment === 'right'} onClick={this.onAlignmentClick} />\n </>\n )}\n <span\n className={classNames({\n [classes.disabled]: !imageLoaded,\n [classes.altButton]: !disableImageAlignmentButtons,\n })}\n onMouseDown={(event) => imageLoaded && this.renderDialog(event)}\n >\n Alt text\n </span>\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n holder: {\n paddingLeft: theme.spacing.unit,\n display: 'flex',\n alignItems: 'center',\n },\n disabled: {\n opacity: 0.5,\n },\n altButton: {\n borderLeft: '1px solid grey',\n paddingLeft: 8,\n marginLeft: 4,\n },\n});\n\nexport default withStyles(styles)(ImageToolbar);\n"],"file":"ImageToolbar.js"}
|
|
@@ -5,12 +5,111 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
|
|
14
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
15
|
+
|
|
16
|
+
var log = (0, _debug["default"])('@pie-lib:editable-html:image:insert-image-handler');
|
|
17
|
+
/**
|
|
18
|
+
* Handles user selection, insertion (or cancellation) of an image into the editor.
|
|
19
|
+
* @param {Block} placeholderBlock - a block that has been added to the editor as a place holder for the image
|
|
20
|
+
* @param {Function} onFinish - a function to call if uploading fails or succeeds
|
|
21
|
+
* @param {Function} getValue - a function to return the value of the editor
|
|
22
|
+
* @param {Function} onChange - callback to notify changes applied by the handler
|
|
23
|
+
* @param {Boolean} isPasted - a boolean that keeps track if the file is pasted
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
var InsertImageHandler = /*#__PURE__*/function () {
|
|
27
|
+
function InsertImageHandler(editor, onFinish) {
|
|
28
|
+
var isPasted = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
29
|
+
(0, _classCallCheck2["default"])(this, InsertImageHandler);
|
|
30
|
+
this.editor = editor;
|
|
31
|
+
this.onFinish = onFinish;
|
|
32
|
+
this.isPasted = isPasted;
|
|
33
|
+
this.chosenFile = null;
|
|
12
34
|
}
|
|
13
|
-
});
|
|
14
35
|
|
|
15
|
-
|
|
16
|
-
|
|
36
|
+
(0, _createClass2["default"])(InsertImageHandler, [{
|
|
37
|
+
key: "cancel",
|
|
38
|
+
value: function cancel() {
|
|
39
|
+
log('insert cancelled');
|
|
40
|
+
|
|
41
|
+
try {
|
|
42
|
+
this.editor.commands.deleteNode('imageUploadNode');
|
|
43
|
+
this.onFinish(false);
|
|
44
|
+
} catch (err) {//
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}, {
|
|
48
|
+
key: "done",
|
|
49
|
+
value: function done(err, src) {
|
|
50
|
+
log('done: err:', err);
|
|
51
|
+
|
|
52
|
+
if (err) {
|
|
53
|
+
//eslint-disable-next-line
|
|
54
|
+
console.log(err);
|
|
55
|
+
this.onFinish(false);
|
|
56
|
+
} else {
|
|
57
|
+
this.editor.commands.updateAttributes('imageUploadNode', {
|
|
58
|
+
loaded: true,
|
|
59
|
+
src: src,
|
|
60
|
+
percent: 100
|
|
61
|
+
});
|
|
62
|
+
this.onFinish(true);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Notify handler that the user chose a file - will create a change with a preview in the editor.
|
|
67
|
+
*
|
|
68
|
+
* @param {File} file - the file that the user chose using a file input.
|
|
69
|
+
*/
|
|
70
|
+
|
|
71
|
+
}, {
|
|
72
|
+
key: "fileChosen",
|
|
73
|
+
value: function fileChosen(file) {
|
|
74
|
+
var _this = this;
|
|
75
|
+
|
|
76
|
+
if (!file) {
|
|
77
|
+
return;
|
|
78
|
+
} // Save the chosen file to this.chosenFile
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
this.chosenFile = file;
|
|
82
|
+
log('[fileChosen] file: ', file);
|
|
83
|
+
var reader = new FileReader();
|
|
84
|
+
|
|
85
|
+
reader.onload = function () {
|
|
86
|
+
var dataURL = reader.result;
|
|
87
|
+
|
|
88
|
+
_this.editor.commands.updateAttributes('imageUploadNode', {
|
|
89
|
+
src: dataURL
|
|
90
|
+
});
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
reader.readAsDataURL(file);
|
|
94
|
+
}
|
|
95
|
+
}, {
|
|
96
|
+
key: "progress",
|
|
97
|
+
value: function progress(percent, bytes, total) {
|
|
98
|
+
log('progress: ', percent, bytes, total);
|
|
99
|
+
this.editor.commands.updateAttributes('imageUploadNode', {
|
|
100
|
+
percent: percent
|
|
101
|
+
});
|
|
102
|
+
} // Add a getter method to retrieve the chosen file
|
|
103
|
+
|
|
104
|
+
}, {
|
|
105
|
+
key: "getChosenFile",
|
|
106
|
+
value: function getChosenFile() {
|
|
107
|
+
return this.chosenFile;
|
|
108
|
+
}
|
|
109
|
+
}]);
|
|
110
|
+
return InsertImageHandler;
|
|
111
|
+
}();
|
|
112
|
+
|
|
113
|
+
var _default = InsertImageHandler;
|
|
114
|
+
exports["default"] = _default;
|
|
115
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2ltYWdlL0luc2VydEltYWdlSGFuZGxlci5qcyJdLCJuYW1lcyI6WyJsb2ciLCJJbnNlcnRJbWFnZUhhbmRsZXIiLCJlZGl0b3IiLCJvbkZpbmlzaCIsImlzUGFzdGVkIiwiY2hvc2VuRmlsZSIsImNvbW1hbmRzIiwiZGVsZXRlTm9kZSIsImVyciIsInNyYyIsImNvbnNvbGUiLCJ1cGRhdGVBdHRyaWJ1dGVzIiwibG9hZGVkIiwicGVyY2VudCIsImZpbGUiLCJyZWFkZXIiLCJGaWxlUmVhZGVyIiwib25sb2FkIiwiZGF0YVVSTCIsInJlc3VsdCIsInJlYWRBc0RhdGFVUkwiLCJieXRlcyIsInRvdGFsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0FBRUEsSUFBTUEsR0FBRyxHQUFHLHVCQUFNLG1EQUFOLENBQVo7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztJQUNNQyxrQjtBQUNKLDhCQUFZQyxNQUFaLEVBQW9CQyxRQUFwQixFQUFnRDtBQUFBLFFBQWxCQyxRQUFrQix1RUFBUCxLQUFPO0FBQUE7QUFDOUMsU0FBS0YsTUFBTCxHQUFjQSxNQUFkO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQkEsUUFBaEI7QUFDQSxTQUFLQyxRQUFMLEdBQWdCQSxRQUFoQjtBQUNBLFNBQUtDLFVBQUwsR0FBa0IsSUFBbEI7QUFDRDs7OztXQUVELGtCQUFTO0FBQ1BMLE1BQUFBLEdBQUcsQ0FBQyxrQkFBRCxDQUFIOztBQUVBLFVBQUk7QUFDRixhQUFLRSxNQUFMLENBQVlJLFFBQVosQ0FBcUJDLFVBQXJCLENBQWdDLGlCQUFoQztBQUNBLGFBQUtKLFFBQUwsQ0FBYyxLQUFkO0FBQ0QsT0FIRCxDQUdFLE9BQU9LLEdBQVAsRUFBWSxDQUNaO0FBQ0Q7QUFDRjs7O1dBRUQsY0FBS0EsR0FBTCxFQUFVQyxHQUFWLEVBQWU7QUFDYlQsTUFBQUEsR0FBRyxDQUFDLFlBQUQsRUFBZVEsR0FBZixDQUFIOztBQUNBLFVBQUlBLEdBQUosRUFBUztBQUNQO0FBQ0FFLFFBQUFBLE9BQU8sQ0FBQ1YsR0FBUixDQUFZUSxHQUFaO0FBQ0EsYUFBS0wsUUFBTCxDQUFjLEtBQWQ7QUFDRCxPQUpELE1BSU87QUFDTCxhQUFLRCxNQUFMLENBQVlJLFFBQVosQ0FBcUJLLGdCQUFyQixDQUFzQyxpQkFBdEMsRUFBeUQ7QUFBRUMsVUFBQUEsTUFBTSxFQUFFLElBQVY7QUFBZ0JILFVBQUFBLEdBQUcsRUFBSEEsR0FBaEI7QUFBcUJJLFVBQUFBLE9BQU8sRUFBRTtBQUE5QixTQUF6RDtBQUNBLGFBQUtWLFFBQUwsQ0FBYyxJQUFkO0FBQ0Q7QUFDRjtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7Ozs7V0FDRSxvQkFBV1csSUFBWCxFQUFpQjtBQUFBOztBQUNmLFVBQUksQ0FBQ0EsSUFBTCxFQUFXO0FBQ1Q7QUFDRCxPQUhjLENBS2Y7OztBQUNBLFdBQUtULFVBQUwsR0FBa0JTLElBQWxCO0FBRUFkLE1BQUFBLEdBQUcsQ0FBQyxxQkFBRCxFQUF3QmMsSUFBeEIsQ0FBSDtBQUNBLFVBQU1DLE1BQU0sR0FBRyxJQUFJQyxVQUFKLEVBQWY7O0FBQ0FELE1BQUFBLE1BQU0sQ0FBQ0UsTUFBUCxHQUFnQixZQUFNO0FBQ3BCLFlBQU1DLE9BQU8sR0FBR0gsTUFBTSxDQUFDSSxNQUF2Qjs7QUFFQSxRQUFBLEtBQUksQ0FBQ2pCLE1BQUwsQ0FBWUksUUFBWixDQUFxQkssZ0JBQXJCLENBQXNDLGlCQUF0QyxFQUF5RDtBQUFFRixVQUFBQSxHQUFHLEVBQUVTO0FBQVAsU0FBekQ7QUFDRCxPQUpEOztBQUtBSCxNQUFBQSxNQUFNLENBQUNLLGFBQVAsQ0FBcUJOLElBQXJCO0FBQ0Q7OztXQUVELGtCQUFTRCxPQUFULEVBQWtCUSxLQUFsQixFQUF5QkMsS0FBekIsRUFBZ0M7QUFDOUJ0QixNQUFBQSxHQUFHLENBQUMsWUFBRCxFQUFlYSxPQUFmLEVBQXdCUSxLQUF4QixFQUErQkMsS0FBL0IsQ0FBSDtBQUNBLFdBQUtwQixNQUFMLENBQVlJLFFBQVosQ0FBcUJLLGdCQUFyQixDQUFzQyxpQkFBdEMsRUFBeUQ7QUFBRUUsUUFBQUEsT0FBTyxFQUFQQTtBQUFGLE9BQXpEO0FBQ0QsSyxDQUVEOzs7O1dBQ0EseUJBQWdCO0FBQ2QsYUFBTyxLQUFLUixVQUFaO0FBQ0Q7Ozs7O2VBR1lKLGtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcblxuY29uc3QgbG9nID0gZGVidWcoJ0BwaWUtbGliOmVkaXRhYmxlLWh0bWw6aW1hZ2U6aW5zZXJ0LWltYWdlLWhhbmRsZXInKTtcblxuLyoqXG4gKiBIYW5kbGVzIHVzZXIgc2VsZWN0aW9uLCBpbnNlcnRpb24gKG9yIGNhbmNlbGxhdGlvbikgb2YgYW4gaW1hZ2UgaW50byB0aGUgZWRpdG9yLlxuICogQHBhcmFtIHtCbG9ja30gcGxhY2Vob2xkZXJCbG9jayAtIGEgYmxvY2sgdGhhdCBoYXMgYmVlbiBhZGRlZCB0byB0aGUgZWRpdG9yIGFzIGEgcGxhY2UgaG9sZGVyIGZvciB0aGUgaW1hZ2VcbiAqIEBwYXJhbSB7RnVuY3Rpb259IG9uRmluaXNoIC0gYSBmdW5jdGlvbiB0byBjYWxsIGlmIHVwbG9hZGluZyBmYWlscyBvciBzdWNjZWVkc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gZ2V0VmFsdWUgLSBhIGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGVkaXRvclxuICogQHBhcmFtIHtGdW5jdGlvbn0gb25DaGFuZ2UgLSBjYWxsYmFjayB0byBub3RpZnkgY2hhbmdlcyBhcHBsaWVkIGJ5IHRoZSBoYW5kbGVyXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGlzUGFzdGVkIC0gYSBib29sZWFuIHRoYXQga2VlcHMgdHJhY2sgaWYgdGhlIGZpbGUgaXMgcGFzdGVkXG4gKi9cbmNsYXNzIEluc2VydEltYWdlSGFuZGxlciB7XG4gIGNvbnN0cnVjdG9yKGVkaXRvciwgb25GaW5pc2gsIGlzUGFzdGVkID0gZmFsc2UpIHtcbiAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICB0aGlzLm9uRmluaXNoID0gb25GaW5pc2g7XG4gICAgdGhpcy5pc1Bhc3RlZCA9IGlzUGFzdGVkO1xuICAgIHRoaXMuY2hvc2VuRmlsZSA9IG51bGw7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgbG9nKCdpbnNlcnQgY2FuY2VsbGVkJyk7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5lZGl0b3IuY29tbWFuZHMuZGVsZXRlTm9kZSgnaW1hZ2VVcGxvYWROb2RlJyk7XG4gICAgICB0aGlzLm9uRmluaXNoKGZhbHNlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vXG4gICAgfVxuICB9XG5cbiAgZG9uZShlcnIsIHNyYykge1xuICAgIGxvZygnZG9uZTogZXJyOicsIGVycik7XG4gICAgaWYgKGVycikge1xuICAgICAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICB0aGlzLm9uRmluaXNoKGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lZGl0b3IuY29tbWFuZHMudXBkYXRlQXR0cmlidXRlcygnaW1hZ2VVcGxvYWROb2RlJywgeyBsb2FkZWQ6IHRydWUsIHNyYywgcGVyY2VudDogMTAwIH0pO1xuICAgICAgdGhpcy5vbkZpbmlzaCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTm90aWZ5IGhhbmRsZXIgdGhhdCB0aGUgdXNlciBjaG9zZSBhIGZpbGUgLSB3aWxsIGNyZWF0ZSBhIGNoYW5nZSB3aXRoIGEgcHJldmlldyBpbiB0aGUgZWRpdG9yLlxuICAgKlxuICAgKiBAcGFyYW0ge0ZpbGV9IGZpbGUgLSB0aGUgZmlsZSB0aGF0IHRoZSB1c2VyIGNob3NlIHVzaW5nIGEgZmlsZSBpbnB1dC5cbiAgICovXG4gIGZpbGVDaG9zZW4oZmlsZSkge1xuICAgIGlmICghZmlsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNhdmUgdGhlIGNob3NlbiBmaWxlIHRvIHRoaXMuY2hvc2VuRmlsZVxuICAgIHRoaXMuY2hvc2VuRmlsZSA9IGZpbGU7XG5cbiAgICBsb2coJ1tmaWxlQ2hvc2VuXSBmaWxlOiAnLCBmaWxlKTtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhVVJMID0gcmVhZGVyLnJlc3VsdDtcblxuICAgICAgdGhpcy5lZGl0b3IuY29tbWFuZHMudXBkYXRlQXR0cmlidXRlcygnaW1hZ2VVcGxvYWROb2RlJywgeyBzcmM6IGRhdGFVUkwgfSk7XG4gICAgfTtcbiAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgfVxuXG4gIHByb2dyZXNzKHBlcmNlbnQsIGJ5dGVzLCB0b3RhbCkge1xuICAgIGxvZygncHJvZ3Jlc3M6ICcsIHBlcmNlbnQsIGJ5dGVzLCB0b3RhbCk7XG4gICAgdGhpcy5lZGl0b3IuY29tbWFuZHMudXBkYXRlQXR0cmlidXRlcygnaW1hZ2VVcGxvYWROb2RlJywgeyBwZXJjZW50IH0pO1xuICB9XG5cbiAgLy8gQWRkIGEgZ2V0dGVyIG1ldGhvZCB0byByZXRyaWV2ZSB0aGUgY2hvc2VuIGZpbGVcbiAgZ2V0Q2hvc2VuRmlsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jaG9zZW5GaWxlO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEluc2VydEltYWdlSGFuZGxlcjtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/image/InsertImageHandler.js"],"names":["log","InsertImageHandler","editor","onFinish","isPasted","chosenFile","commands","deleteNode","err","src","console","updateAttributes","loaded","percent","file","reader","FileReader","onload","dataURL","result","readAsDataURL","bytes","total"],"mappings":";;;;;;;;;;;;;AAAA;;AAEA,IAAMA,GAAG,GAAG,uBAAM,mDAAN,CAAZ;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMC,kB;AACJ,8BAAYC,MAAZ,EAAoBC,QAApB,EAAgD;AAAA,QAAlBC,QAAkB,uEAAP,KAAO;AAAA;AAC9C,SAAKF,MAAL,GAAcA,MAAd;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACA,SAAKC,UAAL,GAAkB,IAAlB;AACD;;;;WAED,kBAAS;AACPL,MAAAA,GAAG,CAAC,kBAAD,CAAH;;AAEA,UAAI;AACF,aAAKE,MAAL,CAAYI,QAAZ,CAAqBC,UAArB,CAAgC,iBAAhC;AACA,aAAKJ,QAAL,CAAc,KAAd;AACD,OAHD,CAGE,OAAOK,GAAP,EAAY,CACZ;AACD;AACF;;;WAED,cAAKA,GAAL,EAAUC,GAAV,EAAe;AACbT,MAAAA,GAAG,CAAC,YAAD,EAAeQ,GAAf,CAAH;;AACA,UAAIA,GAAJ,EAAS;AACP;AACAE,QAAAA,OAAO,CAACV,GAAR,CAAYQ,GAAZ;AACA,aAAKL,QAAL,CAAc,KAAd;AACD,OAJD,MAIO;AACL,aAAKD,MAAL,CAAYI,QAAZ,CAAqBK,gBAArB,CAAsC,iBAAtC,EAAyD;AAAEC,UAAAA,MAAM,EAAE,IAAV;AAAgBH,UAAAA,GAAG,EAAHA,GAAhB;AAAqBI,UAAAA,OAAO,EAAE;AAA9B,SAAzD;AACA,aAAKV,QAAL,CAAc,IAAd;AACD;AACF;AAED;AACF;AACA;AACA;AACA;;;;WACE,oBAAWW,IAAX,EAAiB;AAAA;;AACf,UAAI,CAACA,IAAL,EAAW;AACT;AACD,OAHc,CAKf;;;AACA,WAAKT,UAAL,GAAkBS,IAAlB;AAEAd,MAAAA,GAAG,CAAC,qBAAD,EAAwBc,IAAxB,CAAH;AACA,UAAMC,MAAM,GAAG,IAAIC,UAAJ,EAAf;;AACAD,MAAAA,MAAM,CAACE,MAAP,GAAgB,YAAM;AACpB,YAAMC,OAAO,GAAGH,MAAM,CAACI,MAAvB;;AAEA,QAAA,KAAI,CAACjB,MAAL,CAAYI,QAAZ,CAAqBK,gBAArB,CAAsC,iBAAtC,EAAyD;AAAEF,UAAAA,GAAG,EAAES;AAAP,SAAzD;AACD,OAJD;;AAKAH,MAAAA,MAAM,CAACK,aAAP,CAAqBN,IAArB;AACD;;;WAED,kBAASD,OAAT,EAAkBQ,KAAlB,EAAyBC,KAAzB,EAAgC;AAC9BtB,MAAAA,GAAG,CAAC,YAAD,EAAea,OAAf,EAAwBQ,KAAxB,EAA+BC,KAA/B,CAAH;AACA,WAAKpB,MAAL,CAAYI,QAAZ,CAAqBK,gBAArB,CAAsC,iBAAtC,EAAyD;AAAEE,QAAAA,OAAO,EAAPA;AAAF,OAAzD;AACD,K,CAED;;;;WACA,yBAAgB;AACd,aAAO,KAAKR,UAAZ;AACD;;;;;eAGYJ,kB","sourcesContent":["import debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:image:insert-image-handler');\n\n/**\n * Handles user selection, insertion (or cancellation) of an image into the editor.\n * @param {Block} placeholderBlock - a block that has been added to the editor as a place holder for the image\n * @param {Function} onFinish - a function to call if uploading fails or succeeds\n * @param {Function} getValue - a function to return the value of the editor\n * @param {Function} onChange - callback to notify changes applied by the handler\n * @param {Boolean} isPasted - a boolean that keeps track if the file is pasted\n */\nclass InsertImageHandler {\n constructor(editor, onFinish, isPasted = false) {\n this.editor = editor;\n this.onFinish = onFinish;\n this.isPasted = isPasted;\n this.chosenFile = null;\n }\n\n cancel() {\n log('insert cancelled');\n\n try {\n this.editor.commands.deleteNode('imageUploadNode');\n this.onFinish(false);\n } catch (err) {\n //\n }\n }\n\n done(err, src) {\n log('done: err:', err);\n if (err) {\n //eslint-disable-next-line\n console.log(err);\n this.onFinish(false);\n } else {\n this.editor.commands.updateAttributes('imageUploadNode', { loaded: true, src, percent: 100 });\n this.onFinish(true);\n }\n }\n\n /**\n * Notify handler that the user chose a file - will create a change with a preview in the editor.\n *\n * @param {File} file - the file that the user chose using a file input.\n */\n fileChosen(file) {\n if (!file) {\n return;\n }\n\n // Save the chosen file to this.chosenFile\n this.chosenFile = file;\n\n log('[fileChosen] file: ', file);\n const reader = new FileReader();\n reader.onload = () => {\n const dataURL = reader.result;\n\n this.editor.commands.updateAttributes('imageUploadNode', { src: dataURL });\n };\n reader.readAsDataURL(file);\n }\n\n progress(percent, bytes, total) {\n log('progress: ', percent, bytes, total);\n this.editor.commands.updateAttributes('imageUploadNode', { percent });\n }\n\n // Add a getter method to retrieve the chosen file\n getChosenFile() {\n return this.chosenFile;\n }\n}\n\nexport default InsertImageHandler;\n"],"file":"InsertImageHandler.js"}
|