@pie-lib/editable-html 7.17.4-next.42 → 7.17.4-next.423

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 (95) hide show
  1. package/CHANGELOG.json +165 -0
  2. package/CHANGELOG.md +286 -0
  3. package/lib/editor.js +348 -179
  4. package/lib/editor.js.map +1 -1
  5. package/lib/index.js +63 -52
  6. package/lib/index.js.map +1 -1
  7. package/lib/parse-html.js.map +1 -1
  8. package/lib/plugins/characters/custom-popover.js +70 -0
  9. package/lib/plugins/characters/custom-popover.js.map +1 -0
  10. package/lib/plugins/characters/index.js +266 -0
  11. package/lib/plugins/characters/index.js.map +1 -0
  12. package/lib/plugins/characters/utils.js +382 -0
  13. package/lib/plugins/characters/utils.js.map +1 -0
  14. package/lib/plugins/image/component.js +251 -77
  15. package/lib/plugins/image/component.js.map +1 -1
  16. package/lib/plugins/image/image-toolbar.js +49 -63
  17. package/lib/plugins/image/image-toolbar.js.map +1 -1
  18. package/lib/plugins/image/index.js +56 -19
  19. package/lib/plugins/image/index.js.map +1 -1
  20. package/lib/plugins/image/insert-image-handler.js +9 -15
  21. package/lib/plugins/image/insert-image-handler.js.map +1 -1
  22. package/lib/plugins/index.js +20 -12
  23. package/lib/plugins/index.js.map +1 -1
  24. package/lib/plugins/list/index.js +82 -14
  25. package/lib/plugins/list/index.js.map +1 -1
  26. package/lib/plugins/math/index.js +50 -55
  27. package/lib/plugins/math/index.js.map +1 -1
  28. package/lib/plugins/media/index.js +26 -25
  29. package/lib/plugins/media/index.js.map +1 -1
  30. package/lib/plugins/media/media-dialog.js +45 -56
  31. package/lib/plugins/media/media-dialog.js.map +1 -1
  32. package/lib/plugins/media/media-toolbar.js +24 -30
  33. package/lib/plugins/media/media-toolbar.js.map +1 -1
  34. package/lib/plugins/media/media-wrapper.js +28 -35
  35. package/lib/plugins/media/media-wrapper.js.map +1 -1
  36. package/lib/plugins/respArea/drag-in-the-blank/choice.js +68 -46
  37. package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
  38. package/lib/plugins/respArea/drag-in-the-blank/index.js +12 -12
  39. package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
  40. package/lib/plugins/respArea/explicit-constructed-response/index.js +10 -9
  41. package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
  42. package/lib/plugins/respArea/icons/index.js +11 -11
  43. package/lib/plugins/respArea/icons/index.js.map +1 -1
  44. package/lib/plugins/respArea/index.js +58 -42
  45. package/lib/plugins/respArea/index.js.map +1 -1
  46. package/lib/plugins/respArea/inline-dropdown/index.js +8 -8
  47. package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
  48. package/lib/plugins/respArea/utils.js +5 -5
  49. package/lib/plugins/respArea/utils.js.map +1 -1
  50. package/lib/plugins/table/icons/index.js +12 -12
  51. package/lib/plugins/table/icons/index.js.map +1 -1
  52. package/lib/plugins/table/index.js +83 -27
  53. package/lib/plugins/table/index.js.map +1 -1
  54. package/lib/plugins/table/table-toolbar.js +41 -50
  55. package/lib/plugins/table/table-toolbar.js.map +1 -1
  56. package/lib/plugins/toolbar/default-toolbar.js +14 -11
  57. package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
  58. package/lib/plugins/toolbar/done-button.js +5 -5
  59. package/lib/plugins/toolbar/done-button.js.map +1 -1
  60. package/lib/plugins/toolbar/editor-and-toolbar.js +43 -43
  61. package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
  62. package/lib/plugins/toolbar/index.js +5 -5
  63. package/lib/plugins/toolbar/index.js.map +1 -1
  64. package/lib/plugins/toolbar/toolbar-buttons.js +49 -52
  65. package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
  66. package/lib/plugins/toolbar/toolbar.js +60 -64
  67. package/lib/plugins/toolbar/toolbar.js.map +1 -1
  68. package/lib/plugins/utils.js +1 -1
  69. package/lib/plugins/utils.js.map +1 -1
  70. package/lib/serialization.js +32 -9
  71. package/lib/serialization.js.map +1 -1
  72. package/lib/theme.js.map +1 -1
  73. package/package.json +5 -5
  74. package/src/editor.jsx +189 -31
  75. package/src/index.jsx +20 -3
  76. package/src/plugins/characters/custom-popover.js +45 -0
  77. package/src/plugins/characters/index.jsx +244 -0
  78. package/src/plugins/characters/utils.js +448 -0
  79. package/src/plugins/image/component.jsx +202 -21
  80. package/src/plugins/image/image-toolbar.jsx +25 -20
  81. package/src/plugins/image/index.jsx +40 -9
  82. package/src/plugins/index.jsx +4 -1
  83. package/src/plugins/list/index.jsx +67 -5
  84. package/src/plugins/math/index.jsx +31 -37
  85. package/src/plugins/media/index.jsx +3 -0
  86. package/src/plugins/media/media-dialog.js +1 -1
  87. package/src/plugins/respArea/drag-in-the-blank/choice.jsx +28 -1
  88. package/src/plugins/respArea/explicit-constructed-response/index.jsx +3 -3
  89. package/src/plugins/respArea/index.jsx +51 -31
  90. package/src/plugins/table/index.jsx +61 -14
  91. package/src/plugins/toolbar/default-toolbar.jsx +8 -0
  92. package/src/plugins/toolbar/editor-and-toolbar.jsx +12 -4
  93. package/src/plugins/toolbar/toolbar-buttons.jsx +13 -2
  94. package/src/plugins/toolbar/toolbar.jsx +14 -4
  95. package/src/serialization.jsx +19 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","names":["spanishConfig","characters","autoClose","specialConfig","hasPreview","unicode","description","write","label","extraProps","style","gridRow","String","fromCodePoint","characterIcons","spanish","special"],"sources":["../../../src/plugins/characters/utils.js"],"sourcesContent":["export const spanishConfig = {\n characters: [\n ['á', 'é', 'í', 'ó', 'ú'],\n ['Á', 'É', 'Í', 'Ó', 'Ú'],\n ['—', '«', '»', 'ñ', 'ü'],\n ['-', '¿', '¡', 'Ñ', 'Ü']\n ],\n autoClose: true\n};\n\nexport const specialConfig = {\n hasPreview: true,\n characters: [\n [\n {\n unicode: 'U+00A2',\n description: 'CENT SIGN',\n write: '¢',\n label: '¢'\n },\n {\n unicode: 'U+00BF',\n description: 'INVERTED QUESTION MARK',\n write: '¿',\n label: '¿'\n },\n {\n unicode: 'U+00B4',\n description: 'ACUTE ACCENT',\n write: '´',\n label: '´',\n extraProps: { style: { gridRow: 'span 2' } }\n },\n {\n unicode: 'U+00E1',\n description: 'LATIN SMALL LETTER A WITH ACUTE',\n write: 'á',\n label: 'á'\n },\n {\n unicode: 'U+00E9',\n description: 'LATIN SMALL LETTER E WITH ACUTE',\n write: 'é',\n label: 'é'\n },\n {\n unicode: 'U+00ED',\n description: 'LATIN SMALL LETTER I WITH ACUTE',\n write: 'í',\n label: 'í'\n },\n {\n unicode: 'U+00F3',\n description: 'LATIN SMALL LETTER O WITH ACUTE',\n write: 'ó',\n label: 'ó'\n },\n {\n unicode: 'U+00FA',\n description: 'LATIN SMALL LETTER U WITH ACUTE',\n write: 'ú',\n label: 'ú'\n },\n {\n unicode: 'U+00F1',\n description: 'LATIN SMALL LETTER N WITH TILDE',\n write: 'ñ',\n label: 'ñ'\n }\n ],\n [\n {\n unicode: 'U+20AC',\n description: 'EURO SIGN',\n write: '€',\n label: '€'\n },\n {\n unicode: 'U+00A1',\n description: 'INVERTED EXCLAMATION MARK',\n write: '¡',\n label: '¡'\n },\n {\n unicode: 'U+00C1',\n description: 'LATIN CAPITAL LETTER A WITH ACUTE',\n write: 'Á',\n label: 'Á'\n },\n {\n unicode: 'U+00C9',\n description: 'LATIN CAPITAL LETTER E WITH ACUTE',\n write: 'É',\n label: 'É'\n },\n {\n unicode: 'U+00CD',\n description: 'LATIN CAPITAL LETTER I WITH ACUTE',\n write: 'Í',\n label: 'Í'\n },\n {\n unicode: 'U+00D3',\n description: 'LATIN CAPITAL LETTER O WITH ACUTE',\n write: 'Ó',\n label: 'Ó'\n },\n {\n unicode: 'U+00DA',\n description: 'LATIN CAPITAL LETTER U WITH ACUTE',\n write: 'Ú',\n label: 'Ú'\n },\n {\n unicode: 'U+00D1',\n description: 'LATIN CAPITAL LETTER N WITH TILDE',\n write: 'Ñ',\n label: 'Ñ'\n }\n ],\n [\n {\n unicode: 'U+00A3',\n description: 'POUND SIGN',\n write: '£',\n label: '£'\n },\n {\n unicode: 'U+00AB',\n description: 'LEFT-POINTING DOUBLE ANGLE QUOTATION MARK',\n write: '«',\n label: '«'\n },\n {\n unicode: 'U+005E',\n description: 'CIRCUMFLEX ACCENT',\n write: '^',\n label: '^',\n extraProps: { style: { gridRow: 'span 2' } }\n },\n {\n unicode: 'U+00E2',\n description: 'LATIN SMALL LETTER A WITH CIRCUMFLEX',\n write: 'â',\n label: 'â'\n },\n {\n unicode: 'U+00EA',\n description: 'LATIN SMALL LETTER E WITH CIRCUMFLEX',\n write: 'ê',\n label: 'ê'\n },\n {\n unicode: 'U+00EE',\n description: 'LATIN SMALL LETTER I WITH CIRCUMFLEX',\n write: 'î',\n label: 'î'\n },\n {\n unicode: 'U+00F4',\n description: 'LATIN SMALL LETTER O WITH CIRCUMFLEX',\n write: 'ô',\n label: 'ô'\n },\n {\n unicode: 'U+00FB',\n description: 'LATIN SMALL LETTER U WITH CIRCUMFLEX',\n write: 'û',\n label: 'û'\n },\n {\n unicode: 'U+00E7',\n description: 'LATIN SMALL LETTER C WITH CEDILLA',\n write: 'ç',\n label: 'ç'\n }\n ],\n [\n {\n unicode: 'U+00A5',\n description: 'YEN SIGN',\n write: '¥',\n label: '¥'\n },\n {\n unicode: 'U+00BB',\n description: 'RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK',\n write: '»',\n label: '»'\n },\n {\n unicode: 'U+00C2',\n description: 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX',\n write: 'Â',\n label: 'Â'\n },\n {\n unicode: 'U+00CA',\n description: 'LATIN CAPITAL LETTER E WITH CIRCUMFLEX',\n write: 'Ê',\n label: 'Ê'\n },\n {\n unicode: 'U+00CE',\n description: 'LATIN CAPITAL LETTER I WITH CIRCUMFLEX',\n write: 'Î',\n label: 'Î'\n },\n {\n unicode: 'U+00D4',\n description: 'LATIN CAPITAL LETTER O WITH CIRCUMFLEX',\n write: 'Ô',\n label: 'Ô'\n },\n {\n unicode: 'U+00DB',\n description: 'LATIN CAPITAL LETTER U WITH CIRCUMFLEX',\n write: 'Û',\n label: 'Û'\n },\n {\n unicode: 'U+00C7',\n description: 'LATIN CAPITAL LETTER C WITH CEDILLA',\n write: 'Ç',\n label: 'Ç'\n }\n ],\n [\n {\n unicode: 'U+00A0',\n description: 'NO-BREAK SPACE',\n write: String.fromCodePoint('0x00A0'),\n label: ' '\n },\n {\n unicode: 'U+00A7',\n description: 'SECTION SIGN',\n write: '§',\n label: '§'\n },\n {\n unicode: 'U+00A8',\n description: 'DIAERESIS',\n write: '¨',\n label: '¨',\n extraProps: { style: { gridRow: 'span 2' } }\n },\n {\n unicode: 'U+00E4',\n description: 'LATIN SMALL LETTER A WITH DIAERESIS',\n write: 'ä',\n label: 'ä'\n },\n {\n unicode: 'U+00EB',\n description: 'LATIN SMALL LETTER E WITH DIAERESIS',\n write: 'ë',\n label: 'ë'\n },\n {\n unicode: 'U+00EF',\n description: 'LATIN SMALL LETTER I WITH DIAERESIS',\n write: 'ï',\n label: 'ï'\n },\n {\n unicode: 'U+00F6',\n description: 'LATIN SMALL LETTER O WITH DIAERESIS',\n write: 'ö',\n label: 'ö'\n },\n {\n unicode: 'U+00FC',\n description: 'LATIN SMALL LETTER U WITH DIAERESIS',\n write: 'ü',\n label: 'ü'\n },\n {\n unicode: 'U+00DF',\n description: 'LATIN SMALL LETTER SHARP S',\n write: 'ß',\n label: 'ß'\n }\n ],\n [\n {\n unicode: 'U+2009',\n description: 'THIN SPACE',\n write: String.fromCodePoint('0x2009'),\n label: ' '\n },\n {\n unicode: 'U+2026',\n description: 'HORIZONTAL ELLIPSIS',\n write: '…',\n label: '…'\n },\n {\n unicode: 'U+00C4',\n description: 'LATIN CAPITAL LETTER A WITH DIAERESIS',\n write: 'Ä',\n label: 'Ä'\n },\n {\n unicode: 'U+00CB',\n description: 'LATIN CAPITAL LETTER E WITH DIAERESIS',\n write: 'Ë',\n label: 'Ë'\n },\n {\n unicode: 'U+00CF',\n description: 'LATIN CAPITAL LETTER I WITH DIAERESIS',\n write: 'Ï',\n label: 'Ï'\n },\n {\n unicode: 'U+00D6',\n description: 'LATIN CAPITAL LETTER O WITH DIAERESIS',\n write: 'Ö',\n label: 'Ö'\n },\n {\n unicode: 'U+00DC',\n description: 'LATIN CAPITAL LETTER U WITH DIAERESIS',\n write: 'Ü',\n label: 'Ü'\n },\n {\n unicode: 'U+2212',\n description: 'MINUS SIGN',\n write: '−',\n label: '−'\n }\n ],\n [\n {\n unicode: 'U+200A',\n description: 'HAIR SPACE',\n write: String.fromCodePoint('0x200A'),\n label: ' '\n },\n {\n unicode: 'U+2022',\n description: 'BULLET',\n write: '•',\n label: '•'\n },\n {\n unicode: 'U+0060',\n description: 'GRAVE ACCENT',\n write: '`',\n label: '`',\n extraProps: { style: { gridRow: 'span 2' } }\n },\n {\n unicode: 'U+00E0',\n description: 'LATIN SMALL LETTER A WITH GRAVE',\n write: 'à',\n label: 'à'\n },\n {\n unicode: 'U+00E8',\n description: 'LATIN SMALL LETTER E WITH GRAVE',\n write: 'è',\n label: 'è'\n },\n {\n unicode: 'U+00EC',\n description: 'LATIN SMALL LETTER I WITH GRAVE',\n write: 'ì',\n label: 'ì'\n },\n {\n unicode: 'U+00F2',\n description: 'LATIN SMALL LETTER O WITH GRAVE',\n write: 'ò',\n label: 'ò'\n },\n {\n unicode: 'U+00F9',\n description: 'LATIN SMALL LETTER U WITH GRAVE',\n write: 'ù',\n label: 'ù'\n },\n {\n unicode: 'U+2013',\n description: 'EN DASH',\n write: '–',\n label: '–'\n }\n ],\n [\n {\n unicode: 'U+0009',\n description: 'TAB',\n write: String.fromCodePoint('0x0009'),\n label: 'TAB'\n },\n {\n unicode: 'U+25E6',\n description: 'WHITE BULLET',\n write: '◦',\n label: '◦'\n },\n {\n unicode: 'U+00C0',\n description: 'LATIN CAPITAL LETTER A WITH GRAVE',\n write: 'À',\n label: 'À'\n },\n {\n unicode: 'U+00C8',\n description: 'LATIN CAPITAL LETTER E WITH GRAVE',\n write: 'È',\n label: 'È'\n },\n {\n unicode: 'U+00CC',\n description: 'LATIN CAPITAL LETTER I WITH GRAVE',\n write: 'Ì',\n label: 'Ì'\n },\n {\n unicode: 'U+00D2',\n description: 'LATIN CAPITAL LETTER O WITH GRAVE',\n write: 'Ò',\n label: 'Ò'\n },\n {\n unicode: 'U+00D9',\n description: 'LATIN CAPITAL LETTER U WITH GRAVE',\n write: 'Ù',\n label: 'Ù'\n },\n {\n unicode: 'U+2014',\n description: 'EM DASH',\n write: '—',\n label: '—'\n }\n ]\n ]\n};\n\nexport const characterIcons = {\n spanish: 'ñ',\n special: '€'\n};\n"],"mappings":"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"}
@@ -1,47 +1,45 @@
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"] = exports.Component = void 0;
7
9
 
8
- var _LinearProgress = _interopRequireDefault(require("@material-ui/core/LinearProgress"));
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
11
 
10
- var _propTypes = _interopRequireDefault(require("prop-types"));
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
13
 
12
- var _react = _interopRequireDefault(require("react"));
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
15
 
14
- var _classnames = _interopRequireDefault(require("classnames"));
15
-
16
- var _debug = _interopRequireDefault(require("debug"));
17
-
18
- var _styles = require("@material-ui/core/styles");
16
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
19
17
 
20
- var _slatePropTypes = _interopRequireDefault(require("slate-prop-types"));
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
19
 
22
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
20
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
23
21
 
24
- function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
22
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
25
23
 
26
- 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); }
24
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
27
25
 
28
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
26
+ var _LinearProgress = _interopRequireDefault(require("@material-ui/core/LinearProgress"));
29
27
 
30
- 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); } }
28
+ var _propTypes = _interopRequireDefault(require("prop-types"));
31
29
 
32
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
30
+ var _react = _interopRequireDefault(require("react"));
33
31
 
34
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
32
+ var _classnames = _interopRequireDefault(require("classnames"));
35
33
 
36
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
34
+ var _debug = _interopRequireDefault(require("debug"));
37
35
 
38
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
36
+ var _styles = require("@material-ui/core/styles");
39
37
 
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 } }); if (superClass) _setPrototypeOf(subClass, superClass); }
38
+ var _slatePropTypes = _interopRequireDefault(require("slate-prop-types"));
41
39
 
42
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
40
+ 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); }; }
43
41
 
44
- 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; }
42
+ 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; } }
45
43
 
46
44
  var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:image:component');
47
45
 
@@ -49,56 +47,42 @@ var size = function size(s) {
49
47
  return s ? "".concat(s, "px") : 'auto';
50
48
  };
51
49
 
52
- var Component =
53
- /*#__PURE__*/
54
- function (_React$Component) {
55
- _inherits(Component, _React$Component);
50
+ var Component = /*#__PURE__*/function (_React$Component) {
51
+ (0, _inherits2["default"])(Component, _React$Component);
56
52
 
57
- function Component() {
58
- var _getPrototypeOf2;
53
+ var _super = _createSuper(Component);
59
54
 
55
+ function Component() {
60
56
  var _this;
61
57
 
62
- _classCallCheck(this, Component);
58
+ (0, _classCallCheck2["default"])(this, Component);
63
59
 
64
60
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
65
61
  args[_key] = arguments[_key];
66
62
  }
67
63
 
68
- _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Component)).call.apply(_getPrototypeOf2, [this].concat(args)));
69
-
70
- _defineProperty(_assertThisInitialized(_this), "getWidth", function (percent) {
64
+ _this = _super.call.apply(_super, [this].concat(args));
65
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getWidth", function (percent) {
71
66
  var multiplier = percent / 100;
72
67
  return _this.img.naturalWidth * multiplier;
73
68
  });
74
-
75
- _defineProperty(_assertThisInitialized(_this), "getHeight", function (percent) {
69
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getHeight", function (percent) {
76
70
  var multiplier = percent / 100;
77
71
  return _this.img.naturalHeight * multiplier;
78
72
  });
79
-
80
- _defineProperty(_assertThisInitialized(_this), "getPercentFromWidth", function (width) {
73
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getPercentFromWidth", function (width) {
81
74
  var floored = width / _this.img.naturalWidth * 4;
82
75
  return parseInt(floored.toFixed(0) * 25, 10);
83
76
  });
84
-
85
- _defineProperty(_assertThisInitialized(_this), "applySizeData", function () {
77
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "applySizeData", function () {
86
78
  var _this$props = _this.props,
87
79
  node = _this$props.node,
88
80
  editor = _this$props.editor;
89
- var resizePercent = node.data.get('resizePercent');
90
- log('[applySizeData]: resizePercent: ', resizePercent);
91
81
  var update = node.data;
82
+ var w = update.get('width');
92
83
 
93
- if (resizePercent) {
94
- update = update.set('width', _this.getWidth(resizePercent));
95
- update = update.set('height', _this.getHeight(resizePercent));
96
- } else {
97
- var w = update.get('width');
98
-
99
- if (w) {
100
- update = update.set('resizePercent', _this.getPercentFromWidth(w));
101
- }
84
+ if (w) {
85
+ update = update.set('resizePercent', _this.getPercentFromWidth(w));
102
86
  }
103
87
 
104
88
  log('[applySizeData] update: ', update);
@@ -111,14 +95,145 @@ function (_React$Component) {
111
95
  });
112
96
  }
113
97
  });
98
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "initialiseResize", function () {
99
+ window.addEventListener('mousemove', _this.startResizing, false);
100
+ window.addEventListener('mouseup', _this.stopResizing, false);
101
+ });
102
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "loadImage", function () {
103
+ var _ref = _this.props || {},
104
+ maxImageWidth = _ref.maxImageWidth,
105
+ maxImageHeight = _ref.maxImageHeight;
106
+
107
+ maxImageWidth = maxImageWidth || 700;
108
+ maxImageHeight = maxImageHeight || 900;
109
+ var box = _this.img; //on first load
110
+
111
+ if (!box.style.width || box.style.width === 'auto') {
112
+ var dimensions = {
113
+ width: box && box.naturalWidth || 100,
114
+ height: box && box.naturalHeight || 100
115
+ };
116
+
117
+ var _this$updateImageDime = _this.updateImageDimensions(dimensions, {
118
+ width: dimensions.width < maxImageWidth ? dimensions.width : maxImageWidth,
119
+ height: dimensions.height < maxImageHeight ? dimensions.height : maxImageHeight
120
+ }, true),
121
+ width = _this$updateImageDime.width,
122
+ height = _this$updateImageDime.height;
123
+
124
+ box.style.width = "".concat(width, "px");
125
+ box.style.height = "".concat(height, "px");
126
+
127
+ _this.setState({
128
+ dimensions: {
129
+ height: height,
130
+ width: width
131
+ }
132
+ });
133
+
134
+ var _this$props2 = _this.props,
135
+ node = _this$props2.node,
136
+ editor = _this$props2.editor;
137
+ var update = node.data;
138
+ update = update.set('width', width);
139
+ update = update.set('height', height);
140
+
141
+ if (!update.equals(node.data)) {
142
+ editor.change(function (c) {
143
+ return c.setNodeByKey(node.key, {
144
+ data: update
145
+ });
146
+ });
147
+ }
148
+ }
149
+ });
150
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "startResizing", function (e) {
151
+ var bounds = e.target.getBoundingClientRect();
152
+ var box = _this.img;
153
+ var dimensions = {
154
+ width: box && box.naturalWidth || 100,
155
+ height: box && box.naturalHeight || 100
156
+ };
157
+
158
+ var _this$updateImageDime2 = _this.updateImageDimensions(dimensions, {
159
+ width: e.clientX - bounds.left,
160
+ height: e.clientY - bounds.top
161
+ }, true),
162
+ width = _this$updateImageDime2.width,
163
+ height = _this$updateImageDime2.height;
164
+
165
+ var hasMinimumWidth = width > 50 && height > 50;
166
+ var hasDimensionsConstraints = width <= 700 && height <= 900;
167
+
168
+ if (hasMinimumWidth && hasDimensionsConstraints && box) {
169
+ box.style.width = "".concat(width, "px");
170
+ box.style.height = "".concat(height, "px");
171
+
172
+ _this.setState({
173
+ dimensions: {
174
+ height: height,
175
+ width: width
176
+ }
177
+ });
114
178
 
179
+ var _this$props3 = _this.props,
180
+ node = _this$props3.node,
181
+ editor = _this$props3.editor;
182
+ var update = node.data;
183
+ update = update.set('width', width);
184
+ update = update.set('height', height);
185
+
186
+ if (!update.equals(node.data)) {
187
+ editor.change(function (c) {
188
+ return c.setNodeByKey(node.key, {
189
+ data: update
190
+ });
191
+ });
192
+ }
193
+ }
194
+ });
195
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "stopResizing", function () {
196
+ window.removeEventListener('mousemove', _this.startResizing, false);
197
+ window.removeEventListener('mouseup', _this.stopResizing, false);
198
+ });
199
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "updateImageDimensions", function (initialDim, nextDim, keepAspectRatio, resizeType) {
200
+ // if we want to keep image aspect ratio
201
+ if (keepAspectRatio) {
202
+ var imageAspectRatio = initialDim.width / initialDim.height;
203
+
204
+ if (resizeType === 'height') {
205
+ // if we want to change image height => we update the width accordingly
206
+ return {
207
+ width: nextDim.height * imageAspectRatio,
208
+ height: nextDim.height
209
+ };
210
+ } // if we want to change image width => we update the height accordingly
211
+
212
+
213
+ return {
214
+ width: nextDim.width,
215
+ height: nextDim.width / imageAspectRatio
216
+ };
217
+ } // if we don't want to keep aspect ratio, we just update both values
218
+
219
+
220
+ return {
221
+ width: nextDim.width,
222
+ height: nextDim.height
223
+ };
224
+ });
115
225
  return _this;
116
226
  }
117
227
 
118
- _createClass(Component, [{
228
+ (0, _createClass2["default"])(Component, [{
119
229
  key: "componentDidMount",
120
230
  value: function componentDidMount() {
121
231
  this.applySizeData();
232
+ var resizeHandle = this.resize;
233
+
234
+ if (resizeHandle) {
235
+ resizeHandle.addEventListener('mousedown', this.initialiseResize, false);
236
+ }
122
237
  }
123
238
  }, {
124
239
  key: "componentDidUpdate",
@@ -139,51 +254,86 @@ function (_React$Component) {
139
254
  value: function render() {
140
255
  var _this2 = this;
141
256
 
142
- var _this$props2 = this.props,
143
- node = _this$props2.node,
144
- editor = _this$props2.editor,
145
- classes = _this$props2.classes,
146
- attributes = _this$props2.attributes,
147
- onFocus = _this$props2.onFocus;
257
+ var _this$props4 = this.props,
258
+ node = _this$props4.node,
259
+ editor = _this$props4.editor,
260
+ classes = _this$props4.classes,
261
+ attributes = _this$props4.attributes,
262
+ onFocus = _this$props4.onFocus;
148
263
  var active = editor.value.isFocused && editor.value.selection.hasEdgeIn(node);
149
264
  var src = node.data.get('src');
150
- var percent = node.data.get('percent');
151
265
  var loaded = node.data.get('loaded') !== false;
152
266
  var deleteStatus = node.data.get('deleteStatus');
267
+ var alignment = node.data.get('alignment');
268
+ var percent = node.data.get('percent');
269
+ var margin;
270
+ var justifyContent;
271
+
272
+ switch (alignment) {
273
+ case 'left':
274
+ justifyContent = 'flex-start';
275
+ margin = '0';
276
+ break;
277
+
278
+ case 'center':
279
+ justifyContent = 'center';
280
+ margin = '0 auto';
281
+ break;
282
+
283
+ case 'right':
284
+ justifyContent = 'flex-end';
285
+ margin = 'auto 0 0 auto ';
286
+ break;
287
+
288
+ default:
289
+ justifyContent = 'flex-start';
290
+ margin = '0';
291
+ break;
292
+ }
293
+
153
294
  log('[render] node.data:', node.data);
154
295
  var size = this.getSize(node.data);
155
296
  log('[render] style:', size);
156
- var className = (0, _classnames["default"])(classes.root, active && classes.active, !loaded && classes.loading, deleteStatus === 'pending' && classes.pendingDelete);
297
+ var className = (0, _classnames["default"])(classes.root, !loaded && classes.loading, deleteStatus === 'pending' && classes.pendingDelete);
157
298
  var progressClasses = (0, _classnames["default"])(classes.progress, loaded && classes.hideProgress);
158
- return [_react["default"].createElement("span", {
299
+ return [/*#__PURE__*/_react["default"].createElement("span", {
159
300
  key: 'sp1'
160
- }, "\xA0"), _react["default"].createElement("div", {
301
+ }, "\xA0"), /*#__PURE__*/_react["default"].createElement("div", {
161
302
  key: 'comp',
162
303
  onFocus: onFocus,
163
- className: className
164
- }, _react["default"].createElement(_LinearProgress["default"], {
304
+ className: className,
305
+ style: {
306
+ justifyContent: justifyContent
307
+ }
308
+ }, /*#__PURE__*/_react["default"].createElement(_LinearProgress["default"], {
165
309
  mode: "determinate",
166
310
  value: percent > 0 ? percent : 0,
167
311
  className: progressClasses
168
- }), _react["default"].createElement("img", _extends({
169
- src: src
170
- }, attributes, {
171
- ref: function ref(r) {
172
- return _this2.img = r;
312
+ }), /*#__PURE__*/_react["default"].createElement("div", {
313
+ className: classes.imageContainer
314
+ }, /*#__PURE__*/_react["default"].createElement("img", (0, _extends2["default"])({}, attributes, {
315
+ className: (0, _classnames["default"])(classes.image, active && classes.active),
316
+ ref: function ref(_ref2) {
317
+ _this2.img = _ref2;
318
+ },
319
+ src: src,
320
+ style: size,
321
+ onLoad: this.loadImage
322
+ })), /*#__PURE__*/_react["default"].createElement("div", {
323
+ ref: function ref(_ref3) {
324
+ _this2.resize = _ref3;
173
325
  },
174
- style: size
175
- }))), _react["default"].createElement("span", {
326
+ className: (0, _classnames["default"])(classes.resize, 'resize')
327
+ }))), /*#__PURE__*/_react["default"].createElement("span", {
176
328
  key: 'sp2'
177
329
  }, "\xA0")];
178
330
  }
179
331
  }]);
180
-
181
332
  return Component;
182
333
  }(_react["default"].Component);
183
334
 
184
335
  exports.Component = Component;
185
-
186
- _defineProperty(Component, "propTypes", {
336
+ (0, _defineProperty2["default"])(Component, "propTypes", {
187
337
  node: _slatePropTypes["default"].node.isRequired,
188
338
  editor: _propTypes["default"].shape({
189
339
  change: _propTypes["default"].func.isRequired,
@@ -192,7 +342,9 @@ _defineProperty(Component, "propTypes", {
192
342
  classes: _propTypes["default"].object.isRequired,
193
343
  attributes: _propTypes["default"].object,
194
344
  onFocus: _propTypes["default"].func,
195
- onBlur: _propTypes["default"].func
345
+ onBlur: _propTypes["default"].func,
346
+ maxImageWidth: _propTypes["default"].number,
347
+ maxImageHeight: _propTypes["default"].number
196
348
  });
197
349
 
198
350
  var styles = function styles(theme) {
@@ -213,7 +365,7 @@ var styles = function styles(theme) {
213
365
  progress: {
214
366
  position: 'absolute',
215
367
  left: '0',
216
- width: '100%',
368
+ width: 'fit-content',
217
369
  top: '0%',
218
370
  transition: 'opacity 200ms linear'
219
371
  },
@@ -229,15 +381,37 @@ var styles = function styles(theme) {
229
381
  root: {
230
382
  position: 'relative',
231
383
  border: 'solid 1px white',
232
- display: 'inline-block',
384
+ display: 'flex',
233
385
  transition: 'opacity 200ms linear'
234
386
  },
235
- active: {
236
- border: "solid 1px ".concat(theme.palette.primary.main)
237
- },
238
387
  "delete": {
239
388
  position: 'absolute',
240
389
  right: 0
390
+ },
391
+ imageContainer: {
392
+ position: 'relative',
393
+ width: 'fit-content',
394
+ display: 'flex',
395
+ alignItems: 'center',
396
+ '&&:hover > .resize': {
397
+ display: 'block'
398
+ }
399
+ },
400
+ active: {
401
+ border: "solid 1px ".concat(theme.palette.primary.main)
402
+ },
403
+ resize: {
404
+ backgroundColor: theme.palette.primary.main,
405
+ cursor: 'col-resize',
406
+ height: '35px',
407
+ width: '5px',
408
+ borderRadius: 8,
409
+ marginLeft: '5px',
410
+ marginRight: '10px',
411
+ display: 'none'
412
+ },
413
+ drawableHeight: {
414
+ minHeight: 350
241
415
  }
242
416
  };
243
417
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/plugins/image/component.jsx"],"names":["log","size","s","Component","percent","multiplier","img","naturalWidth","naturalHeight","width","floored","parseInt","toFixed","props","node","editor","resizePercent","data","get","update","set","getWidth","getHeight","w","getPercentFromWidth","equals","change","c","setNodeByKey","key","applySizeData","height","objectFit","classes","attributes","onFocus","active","value","isFocused","selection","hasEdgeIn","src","loaded","deleteStatus","getSize","className","root","loading","pendingDelete","progressClasses","progress","hideProgress","r","React","SlatePropTypes","isRequired","PropTypes","shape","func","object","onBlur","styles","theme","portal","position","opacity","transition","floatingButtonRow","backgroundColor","borderRadius","display","padding","border","boxShadow","left","top","palette","primary","main","right"],"mappings":"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","sourcesContent":["import LinearProgress from '@material-ui/core/LinearProgress';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport SlatePropTypes from 'slate-prop-types';\n\nconst log = debug('@pie-lib:editable-html:plugins:image:component');\n\nconst size = s => (s ? `${s}px` : 'auto');\n\nexport class Component extends React.Component {\n static propTypes = {\n node: SlatePropTypes.node.isRequired,\n editor: PropTypes.shape({\n change: PropTypes.func.isRequired,\n value: PropTypes.object\n }).isRequired,\n classes: PropTypes.object.isRequired,\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func\n };\n\n getWidth = percent => {\n const multiplier = percent / 100;\n return this.img.naturalWidth * multiplier;\n };\n\n getHeight = percent => {\n const multiplier = percent / 100;\n return this.img.naturalHeight * multiplier;\n };\n\n getPercentFromWidth = width => {\n var floored = (width / this.img.naturalWidth) * 4;\n return parseInt(floored.toFixed(0) * 25, 10);\n };\n\n applySizeData = () => {\n const { node, editor } = this.props;\n\n const resizePercent = node.data.get('resizePercent');\n log('[applySizeData]: resizePercent: ', resizePercent);\n\n let update = node.data;\n\n if (resizePercent) {\n update = update.set('width', this.getWidth(resizePercent));\n update = update.set('height', this.getHeight(resizePercent));\n } else {\n const w = update.get('width');\n if (w) {\n update = update.set('resizePercent', this.getPercentFromWidth(w));\n }\n }\n\n log('[applySizeData] update: ', update);\n\n if (!update.equals(node.data)) {\n editor.change(c => c.setNodeByKey(node.key, { data: update }));\n }\n };\n\n componentDidMount() {\n this.applySizeData();\n }\n\n componentDidUpdate() {\n this.applySizeData();\n }\n\n getSize(data) {\n return {\n width: size(data.get('width')),\n height: size(data.get('height')),\n objectFit: 'contain'\n };\n }\n\n render() {\n const { node, editor, classes, attributes, onFocus } = this.props;\n const active = editor.value.isFocused && editor.value.selection.hasEdgeIn(node);\n const src = node.data.get('src');\n const percent = node.data.get('percent');\n const loaded = node.data.get('loaded') !== false;\n const deleteStatus = node.data.get('deleteStatus');\n\n log('[render] node.data:', node.data);\n\n const size = this.getSize(node.data);\n\n log('[render] style:', size);\n\n const className = classNames(\n classes.root,\n active && classes.active,\n !loaded && classes.loading,\n deleteStatus === 'pending' && classes.pendingDelete\n );\n\n const progressClasses = classNames(classes.progress, loaded && classes.hideProgress);\n\n return [\n <span key={'sp1'}>&nbsp;</span>,\n <div key={'comp'} onFocus={onFocus} className={className}>\n <LinearProgress\n mode=\"determinate\"\n value={percent > 0 ? percent : 0}\n className={progressClasses}\n />\n <img src={src} {...attributes} ref={r => (this.img = r)} style={size} />\n </div>,\n <span key={'sp2'}>&nbsp;</span>\n ];\n }\n}\n\nconst styles = theme => ({\n portal: {\n position: 'absolute',\n opacity: 0,\n transition: 'opacity 200ms linear'\n },\n floatingButtonRow: {\n backgroundColor: 'white',\n borderRadius: '1px',\n display: 'flex',\n padding: '10px',\n border: 'solid 1px #eeeeee',\n boxShadow:\n '0px 1px 5px 0px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 3px 1px -2px rgba(0, 0, 0, 0.12)'\n },\n progress: {\n position: 'absolute',\n left: '0',\n width: '100%',\n top: '0%',\n transition: 'opacity 200ms linear'\n },\n hideProgress: {\n opacity: 0\n },\n loading: {\n opacity: 0.3\n },\n pendingDelete: {\n opacity: 0.3\n },\n root: {\n position: 'relative',\n border: 'solid 1px white',\n display: 'inline-block',\n transition: 'opacity 200ms linear'\n },\n active: {\n border: `solid 1px ${theme.palette.primary.main}`\n },\n delete: {\n position: 'absolute',\n right: 0\n }\n});\n\nexport default withStyles(styles)(Component);\n"],"file":"component.js"}
1
+ {"version":3,"file":"component.js","names":["log","debug","size","s","Component","percent","multiplier","img","naturalWidth","naturalHeight","width","floored","parseInt","toFixed","props","node","editor","update","data","w","get","set","getPercentFromWidth","equals","change","c","setNodeByKey","key","window","addEventListener","startResizing","stopResizing","maxImageWidth","maxImageHeight","box","style","dimensions","height","updateImageDimensions","setState","e","bounds","target","getBoundingClientRect","clientX","left","clientY","top","hasMinimumWidth","hasDimensionsConstraints","removeEventListener","initialDim","nextDim","keepAspectRatio","resizeType","imageAspectRatio","applySizeData","resizeHandle","resize","initialiseResize","objectFit","classes","attributes","onFocus","active","value","isFocused","selection","hasEdgeIn","src","loaded","deleteStatus","alignment","margin","justifyContent","getSize","className","classNames","root","loading","pendingDelete","progressClasses","progress","hideProgress","imageContainer","image","ref","loadImage","React","SlatePropTypes","isRequired","PropTypes","shape","func","object","onBlur","number","styles","theme","portal","position","opacity","transition","floatingButtonRow","backgroundColor","borderRadius","display","padding","border","boxShadow","right","alignItems","palette","primary","main","cursor","marginLeft","marginRight","drawableHeight","minHeight","withStyles"],"sources":["../../../src/plugins/image/component.jsx"],"sourcesContent":["import LinearProgress from '@material-ui/core/LinearProgress';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport SlatePropTypes from 'slate-prop-types';\n\nconst log = debug('@pie-lib:editable-html:plugins:image:component');\n\nconst size = s => (s ? `${s}px` : 'auto');\n\nexport class Component extends React.Component {\n static propTypes = {\n node: SlatePropTypes.node.isRequired,\n editor: PropTypes.shape({\n change: PropTypes.func.isRequired,\n value: PropTypes.object\n }).isRequired,\n classes: PropTypes.object.isRequired,\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n maxImageWidth: PropTypes.number,\n maxImageHeight: PropTypes.number\n };\n\n getWidth = percent => {\n const multiplier = percent / 100;\n return this.img.naturalWidth * multiplier;\n };\n\n getHeight = percent => {\n const multiplier = percent / 100;\n return this.img.naturalHeight * multiplier;\n };\n\n getPercentFromWidth = width => {\n var floored = (width / this.img.naturalWidth) * 4;\n return parseInt(floored.toFixed(0) * 25, 10);\n };\n\n applySizeData = () => {\n const { node, editor } = this.props;\n\n let update = node.data;\n\n const w = update.get('width');\n if (w) {\n update = update.set('resizePercent', this.getPercentFromWidth(w));\n }\n\n log('[applySizeData] update: ', update);\n\n if (!update.equals(node.data)) {\n editor.change(c => c.setNodeByKey(node.key, { data: update }));\n }\n };\n\n initialiseResize = () => {\n window.addEventListener('mousemove', this.startResizing, false);\n window.addEventListener('mouseup', this.stopResizing, false);\n };\n\n componentDidMount() {\n this.applySizeData();\n\n const resizeHandle = this.resize;\n\n if (resizeHandle) {\n resizeHandle.addEventListener('mousedown', this.initialiseResize, false);\n }\n }\n\n componentDidUpdate() {\n this.applySizeData();\n }\n\n getSize(data) {\n return {\n width: size(data.get('width')),\n height: size(data.get('height')),\n objectFit: 'contain'\n };\n }\n\n loadImage = () => {\n let { maxImageWidth, maxImageHeight } = this.props || {};\n maxImageWidth = maxImageWidth || 700;\n maxImageHeight = maxImageHeight || 900;\n\n const box = this.img;\n\n //on first load\n if (!box.style.width || box.style.width === 'auto') {\n const dimensions = {\n width: (box && box.naturalWidth) || 100,\n height: (box && box.naturalHeight) || 100\n };\n\n const { width, height } = this.updateImageDimensions(\n dimensions,\n {\n width: dimensions.width < maxImageWidth ? dimensions.width : maxImageWidth,\n height: dimensions.height < maxImageHeight ? dimensions.height : maxImageHeight\n },\n true\n );\n\n box.style.width = `${width}px`;\n box.style.height = `${height}px`;\n\n this.setState({\n dimensions: { height: height, width: width }\n });\n\n const { node, editor } = this.props;\n\n let update = node.data;\n\n update = update.set('width', width);\n update = update.set('height', height);\n\n if (!update.equals(node.data)) {\n editor.change(c => c.setNodeByKey(node.key, { data: update }));\n }\n }\n };\n\n startResizing = e => {\n const bounds = e.target.getBoundingClientRect();\n const box = this.img;\n const dimensions = {\n width: (box && box.naturalWidth) || 100,\n height: (box && box.naturalHeight) || 100\n };\n\n const { width, height } = this.updateImageDimensions(\n dimensions,\n {\n width: e.clientX - bounds.left,\n height: e.clientY - bounds.top\n },\n true\n );\n\n const hasMinimumWidth = width > 50 && height > 50;\n const hasDimensionsConstraints = width <= 700 && height <= 900;\n\n if (hasMinimumWidth && hasDimensionsConstraints && box) {\n box.style.width = `${width}px`;\n box.style.height = `${height}px`;\n\n this.setState({\n dimensions: { height: height, width: width }\n });\n\n const { node, editor } = this.props;\n\n let update = node.data;\n\n update = update.set('width', width);\n update = update.set('height', height);\n\n if (!update.equals(node.data)) {\n editor.change(c => c.setNodeByKey(node.key, { data: update }));\n }\n }\n };\n\n stopResizing = () => {\n window.removeEventListener('mousemove', this.startResizing, false);\n window.removeEventListener('mouseup', this.stopResizing, false);\n };\n\n updateImageDimensions = (initialDim, nextDim, keepAspectRatio, resizeType) => {\n // if we want to keep image aspect ratio\n if (keepAspectRatio) {\n const imageAspectRatio = initialDim.width / initialDim.height;\n\n if (resizeType === 'height') {\n // if we want to change image height => we update the width accordingly\n return {\n width: nextDim.height * imageAspectRatio,\n height: nextDim.height\n };\n }\n\n // if we want to change image width => we update the height accordingly\n return {\n width: nextDim.width,\n height: nextDim.width / imageAspectRatio\n };\n }\n\n // if we don't want to keep aspect ratio, we just update both values\n return {\n width: nextDim.width,\n height: nextDim.height\n };\n };\n\n render() {\n const { node, editor, classes, attributes, onFocus } = this.props;\n const active = editor.value.isFocused && editor.value.selection.hasEdgeIn(node);\n const src = node.data.get('src');\n const loaded = node.data.get('loaded') !== false;\n const deleteStatus = node.data.get('deleteStatus');\n const alignment = node.data.get('alignment');\n const percent = node.data.get('percent');\n let margin;\n let justifyContent;\n\n switch (alignment) {\n case 'left':\n justifyContent = 'flex-start';\n margin = '0';\n break;\n case 'center':\n justifyContent = 'center';\n margin = '0 auto';\n break;\n case 'right':\n justifyContent = 'flex-end';\n margin = 'auto 0 0 auto ';\n break;\n default:\n justifyContent = 'flex-start';\n margin = '0';\n break;\n }\n log('[render] node.data:', node.data);\n\n const size = this.getSize(node.data);\n\n log('[render] style:', size);\n\n const className = classNames(\n classes.root,\n !loaded && classes.loading,\n deleteStatus === 'pending' && classes.pendingDelete\n );\n\n const progressClasses = classNames(classes.progress, loaded && classes.hideProgress);\n\n return [\n <span key={'sp1'}>&nbsp;</span>,\n <div key={'comp'} onFocus={onFocus} className={className} style={{ justifyContent }}>\n <LinearProgress\n mode=\"determinate\"\n value={percent > 0 ? percent : 0}\n className={progressClasses}\n />\n <div className={classes.imageContainer}>\n <img\n {...attributes}\n className={classNames(classes.image, active && classes.active)}\n ref={ref => {\n this.img = ref;\n }}\n src={src}\n style={size}\n onLoad={this.loadImage}\n />\n <div\n ref={ref => {\n this.resize = ref;\n }}\n className={classNames(classes.resize, 'resize')}\n />\n </div>\n </div>,\n <span key={'sp2'}>&nbsp;</span>\n ];\n }\n}\n\nconst styles = theme => ({\n portal: {\n position: 'absolute',\n opacity: 0,\n transition: 'opacity 200ms linear'\n },\n floatingButtonRow: {\n backgroundColor: 'white',\n borderRadius: '1px',\n display: 'flex',\n padding: '10px',\n border: 'solid 1px #eeeeee',\n boxShadow:\n '0px 1px 5px 0px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 3px 1px -2px rgba(0, 0, 0, 0.12)'\n },\n progress: {\n position: 'absolute',\n left: '0',\n width: 'fit-content',\n top: '0%',\n transition: 'opacity 200ms linear'\n },\n hideProgress: {\n opacity: 0\n },\n loading: {\n opacity: 0.3\n },\n pendingDelete: {\n opacity: 0.3\n },\n root: {\n position: 'relative',\n border: 'solid 1px white',\n display: 'flex',\n transition: 'opacity 200ms linear'\n },\n delete: {\n position: 'absolute',\n right: 0\n },\n imageContainer: {\n position: 'relative',\n width: 'fit-content',\n display: 'flex',\n alignItems: 'center',\n\n '&&:hover > .resize': {\n display: 'block'\n }\n },\n active: {\n border: `solid 1px ${theme.palette.primary.main}`\n },\n resize: {\n backgroundColor: theme.palette.primary.main,\n cursor: 'col-resize',\n height: '35px',\n width: '5px',\n borderRadius: 8,\n marginLeft: '5px',\n marginRight: '10px',\n display: 'none'\n },\n drawableHeight: {\n minHeight: 350\n }\n});\n\nexport default withStyles(styles)(Component);\n"],"mappings":"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"}