@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.
Files changed (59) hide show
  1. package/lib/components/CharacterPicker.js.map +1 -0
  2. package/lib/components/EditableHtml.js.map +1 -0
  3. package/lib/components/MenuBar.js +9 -8
  4. package/lib/components/MenuBar.js.map +1 -0
  5. package/lib/components/TiptapContainer.js.map +1 -0
  6. package/lib/components/characters/characterUtils.js.map +1 -0
  7. package/lib/components/characters/custom-popper.js.map +1 -0
  8. package/lib/components/common/done-button.js.map +1 -0
  9. package/lib/components/common/toolbar-buttons.js +194 -0
  10. package/lib/components/common/toolbar-buttons.js.map +1 -0
  11. package/lib/components/icons/CssIcon.js.map +1 -0
  12. package/lib/components/icons/RespArea.js.map +1 -0
  13. package/lib/components/icons/TableIcons.js.map +1 -0
  14. package/lib/components/icons/TextAlign.js.map +1 -0
  15. package/lib/components/image/AltDialog.js +129 -0
  16. package/lib/components/image/AltDialog.js.map +1 -0
  17. package/lib/components/image/ImageToolbar.js +167 -6
  18. package/lib/components/image/ImageToolbar.js.map +1 -0
  19. package/lib/components/image/InsertImageHandler.js +106 -7
  20. package/lib/components/image/InsertImageHandler.js.map +1 -0
  21. package/lib/components/image/alt-dialog.js +2 -0
  22. package/lib/components/media/MediaDialog.js +699 -6
  23. package/lib/components/media/MediaDialog.js.map +1 -0
  24. package/lib/components/media/MediaToolbar.js +91 -6
  25. package/lib/components/media/MediaToolbar.js.map +1 -0
  26. package/lib/components/media/MediaWrapper.js +93 -0
  27. package/lib/components/media/MediaWrapper.js.map +1 -0
  28. package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js.map +1 -0
  29. package/lib/components/respArea/DragInTheBlank/choice.js.map +1 -0
  30. package/lib/components/respArea/ExplicitConstructedResponse.js.map +1 -0
  31. package/lib/components/respArea/InlineDropdown.js.map +1 -0
  32. package/lib/components/respArea/ToolbarIcon.js.map +1 -0
  33. package/lib/constants.js.map +1 -0
  34. package/lib/extensions/component.js.map +1 -0
  35. package/lib/extensions/css.js.map +1 -0
  36. package/lib/extensions/custom-toolbar-wrapper.js.map +1 -0
  37. package/lib/extensions/extended-table.js.map +1 -0
  38. package/lib/extensions/image.js +2 -8
  39. package/lib/extensions/image.js.map +1 -0
  40. package/lib/extensions/index.js.map +1 -0
  41. package/lib/extensions/math.js.map +1 -0
  42. package/lib/extensions/media.js +3 -3
  43. package/lib/extensions/media.js.map +1 -0
  44. package/lib/extensions/responseArea.js.map +1 -0
  45. package/lib/index.js.map +1 -0
  46. package/lib/styles/editorContainerStyles.js.map +1 -0
  47. package/lib/theme.js.map +1 -0
  48. package/lib/utils/size.js.map +1 -0
  49. package/package.json +1 -1
  50. package/src/components/MenuBar.jsx +3 -3
  51. package/src/components/common/toolbar-buttons.jsx +138 -0
  52. package/src/components/image/AltDialog.jsx +82 -0
  53. package/src/components/image/ImageToolbar.jsx +100 -1
  54. package/src/components/image/InsertImageHandler.js +78 -1
  55. package/src/components/media/MediaDialog.js +624 -1
  56. package/src/components/media/MediaToolbar.jsx +56 -1
  57. package/src/components/media/MediaWrapper.jsx +43 -0
  58. package/src/extensions/image.js +2 -2
  59. 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":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,oDAAN,CAAZ;;AAEA,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,OAAoC;AAAA,MAAjCC,SAAiC,QAAjCA,SAAiC;AAAA,MAAtBC,MAAsB,QAAtBA,MAAsB;AAAA,MAAdC,OAAc,QAAdA,OAAc;AAC1D,sBACE,gCAAC,0BAAD;AAAY,IAAA,MAAM,EAAED,MAApB;AAA4B,IAAA,QAAQ,EAAE;AAAA,aAAMC,OAAO,CAACF,SAAD,CAAb;AAAA,KAAtC;AAAgE,IAAA,KAAK,EAAEA;AAAvE,KACGA,SADH,CADF;AAKD,CAND;;AAQAD,eAAe,CAACI,SAAhB,GAA4B;AAC1BH,EAAAA,SAAS,EAAEI,sBAAUC,MAAV,CAAiBC,UADF;AAE1BL,EAAAA,MAAM,EAAEG,sBAAUG,IAAV,CAAeD,UAFG;AAG1BJ,EAAAA,OAAO,EAAEE,sBAAUI,IAAV,CAAeF;AAHE,CAA5B;;IAMaG,Y;;;;;;;;;;;;;;;sGAUK,UAACC,MAAD,EAAY;AAC1BZ,MAAAA,GAAG,CAAC,uBAAD,EAA0BY,MAA1B,CAAH;;AAEA,YAAKC,KAAL,CAAWC,QAAX,CAAoB;AAAEC,QAAAA,GAAG,EAAEH;AAAP,OAApB,EAAqC,IAArC;AACD,K;yGAEkB,UAACV,SAAD,EAAe;AAChCF,MAAAA,GAAG,CAAC,gCAAD,EAAmCE,SAAnC,CAAH;;AACA,YAAKW,KAAL,CAAWC,QAAX,CAAoB;AAAEZ,QAAAA,SAAS,EAATA;AAAF,OAApB;AACD,K;qGAEc,YAAM;AACnB,UAAQa,GAAR,GAAgB,MAAKF,KAArB,CAAQE,GAAR;AACA,UAAMC,SAAS,GAAGC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAlB;;AAEA,UAAMC,EAAE,gBAAG,gCAAC,qBAAD;AAAW,QAAA,GAAG,EAAEJ,GAAhB;AAAqB,QAAA,MAAM,EAAE,MAAKK;AAAlC,QAAX;;AAEAC,2BAASC,MAAT,CAAgBH,EAAhB,EAAoBH,SAApB;;AAEAC,MAAAA,QAAQ,CAACM,IAAT,CAAcC,WAAd,CAA0BR,SAA1B;AACD,K;;;;;;WAED,kBAAS;AAAA;AAAA;;AACP,wBAA0E,KAAKH,KAA/E;AAAA,UAAQY,OAAR,eAAQA,OAAR;AAAA,UAAiBvB,SAAjB,eAAiBA,SAAjB;AAAA,UAA4BwB,WAA5B,eAA4BA,WAA5B;AAAA,UAAyCC,4BAAzC,eAAyCA,4BAAzC;AACA,0BACE;AAAK,QAAA,SAAS,EAAEF,OAAO,CAACG;AAAxB,SACG,CAACD,4BAAD,iBACC,+EACE,gCAAC,eAAD;AAAiB,QAAA,SAAS,EAAE,MAA5B;AAAoC,QAAA,MAAM,EAAEzB,SAAS,KAAK,MAA1D;AAAkE,QAAA,OAAO,EAAE,KAAK2B;AAAhF,QADF,eAEE,gCAAC,eAAD;AAAiB,QAAA,SAAS,EAAE,QAA5B;AAAsC,QAAA,MAAM,EAAE3B,SAAS,KAAK,QAA5D;AAAsE,QAAA,OAAO,EAAE,KAAK2B;AAApF,QAFF,eAGE,gCAAC,eAAD;AAAiB,QAAA,SAAS,EAAE,OAA5B;AAAqC,QAAA,MAAM,EAAE3B,SAAS,KAAK,OAA3D;AAAoE,QAAA,OAAO,EAAE,KAAK2B;AAAlF,QAHF,CAFJ,eAQE;AACE,QAAA,SAAS,EAAE,6FACRJ,OAAO,CAACK,QADA,EACW,CAACJ,WADZ,iDAERD,OAAO,CAACM,SAFA,EAEY,CAACJ,4BAFb,gBADb;AAKE,QAAA,WAAW,EAAE,qBAACK,KAAD;AAAA,iBAAWN,WAAW,IAAI,MAAI,CAACO,YAAL,CAAkBD,KAAlB,CAA1B;AAAA;AALf,oBARF,CADF;AAoBD;;;EAtD+BE,kBAAMC,S;;;iCAA3BxB,Y,eACQ;AACjBG,EAAAA,QAAQ,EAAER,sBAAUI,IAAV,CAAeF,UADR;AAEjBiB,EAAAA,OAAO,EAAEnB,sBAAU8B,MAAV,CAAiB5B,UAFT;AAGjBN,EAAAA,SAAS,EAAEI,sBAAUC,MAHJ;AAIjBQ,EAAAA,GAAG,EAAET,sBAAUC,MAJE;AAKjBmB,EAAAA,WAAW,EAAEpB,sBAAUG,IALN;AAMjBkB,EAAAA,4BAA4B,EAAErB,sBAAUG;AANvB,C;;AAwDrB,IAAM4B,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBV,IAAAA,MAAM,EAAE;AACNW,MAAAA,WAAW,EAAED,KAAK,CAACE,OAAN,CAAcC,IADrB;AAENC,MAAAA,OAAO,EAAE,MAFH;AAGNC,MAAAA,UAAU,EAAE;AAHN,KADiB;AAMzBb,IAAAA,QAAQ,EAAE;AACRc,MAAAA,OAAO,EAAE;AADD,KANe;AASzBb,IAAAA,SAAS,EAAE;AACTc,MAAAA,UAAU,EAAE,gBADH;AAETN,MAAAA,WAAW,EAAE,CAFJ;AAGTO,MAAAA,UAAU,EAAE;AAHH;AATc,GAAZ;AAAA,CAAf;;eAgBe,wBAAWT,MAAX,EAAmB1B,YAAnB,C","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
- Object.defineProperty(exports, "default", {
9
- enumerable: true,
10
- get: function get() {
11
- return _insertImageHandler["default"];
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
- var _insertImageHandler = _interopRequireDefault(require("../../plugins/image/insert-image-handler"));
16
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2ltYWdlL0luc2VydEltYWdlSGFuZGxlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gJy4uLy4uL3BsdWdpbnMvaW1hZ2UvaW5zZXJ0LWltYWdlLWhhbmRsZXInO1xuIl19
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"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0=