@pie-lib/editable-html-tip-tap 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/CHANGELOG.json +32 -0
  2. package/CHANGELOG.md +2280 -0
  3. package/lib/__tests__/editor.test.js +470 -0
  4. package/lib/__tests__/serialization.test.js +246 -0
  5. package/lib/__tests__/utils.js +106 -0
  6. package/lib/block-tags.js +25 -0
  7. package/lib/constants.js +16 -0
  8. package/lib/editor.js +1356 -0
  9. package/lib/extensions/MediaView.js +112 -0
  10. package/lib/extensions/characters.js +65 -0
  11. package/lib/extensions/component.js +325 -0
  12. package/lib/extensions/css.js +252 -0
  13. package/lib/extensions/custom-toolbar-wrapper.js +124 -0
  14. package/lib/extensions/image.js +106 -0
  15. package/lib/extensions/math.js +330 -0
  16. package/lib/extensions/media.js +276 -0
  17. package/lib/extensions/responseArea.js +278 -0
  18. package/lib/index.js +1213 -0
  19. package/lib/old-index.js +269 -0
  20. package/lib/parse-html.js +16 -0
  21. package/lib/plugins/characters/custom-popper.js +73 -0
  22. package/lib/plugins/characters/index.js +305 -0
  23. package/lib/plugins/characters/utils.js +381 -0
  24. package/lib/plugins/css/icons/index.js +37 -0
  25. package/lib/plugins/css/index.js +390 -0
  26. package/lib/plugins/customPlugin/index.js +114 -0
  27. package/lib/plugins/html/icons/index.js +38 -0
  28. package/lib/plugins/html/index.js +81 -0
  29. package/lib/plugins/image/__tests__/component.test.js +51 -0
  30. package/lib/plugins/image/__tests__/image-toolbar-logic.test.js +56 -0
  31. package/lib/plugins/image/__tests__/image-toolbar.test.js +26 -0
  32. package/lib/plugins/image/__tests__/index.test.js +98 -0
  33. package/lib/plugins/image/__tests__/insert-image-handler.test.js +125 -0
  34. package/lib/plugins/image/__tests__/mock-change.js +25 -0
  35. package/lib/plugins/image/alt-dialog.js +129 -0
  36. package/lib/plugins/image/component.js +419 -0
  37. package/lib/plugins/image/image-toolbar.js +177 -0
  38. package/lib/plugins/image/index.js +263 -0
  39. package/lib/plugins/image/insert-image-handler.js +117 -0
  40. package/lib/plugins/index.js +413 -0
  41. package/lib/plugins/list/__tests__/index.test.js +79 -0
  42. package/lib/plugins/list/index.js +334 -0
  43. package/lib/plugins/math/__tests__/index.test.js +300 -0
  44. package/lib/plugins/math/index.js +454 -0
  45. package/lib/plugins/media/__tests__/index.test.js +71 -0
  46. package/lib/plugins/media/index.js +387 -0
  47. package/lib/plugins/media/media-dialog.js +709 -0
  48. package/lib/plugins/media/media-toolbar.js +101 -0
  49. package/lib/plugins/media/media-wrapper.js +93 -0
  50. package/lib/plugins/rendering/index.js +46 -0
  51. package/lib/plugins/respArea/drag-in-the-blank/choice.js +289 -0
  52. package/lib/plugins/respArea/drag-in-the-blank/index.js +94 -0
  53. package/lib/plugins/respArea/explicit-constructed-response/index.js +120 -0
  54. package/lib/plugins/respArea/icons/index.js +95 -0
  55. package/lib/plugins/respArea/index.js +341 -0
  56. package/lib/plugins/respArea/inline-dropdown/index.js +126 -0
  57. package/lib/plugins/respArea/math-templated/index.js +130 -0
  58. package/lib/plugins/respArea/utils.js +125 -0
  59. package/lib/plugins/table/CustomTablePlugin.js +133 -0
  60. package/lib/plugins/table/__tests__/index.test.js +442 -0
  61. package/lib/plugins/table/__tests__/table-toolbar.test.js +54 -0
  62. package/lib/plugins/table/icons/index.js +69 -0
  63. package/lib/plugins/table/index.js +483 -0
  64. package/lib/plugins/table/table-toolbar.js +187 -0
  65. package/lib/plugins/textAlign/icons/index.js +194 -0
  66. package/lib/plugins/textAlign/index.js +34 -0
  67. package/lib/plugins/toolbar/__tests__/default-toolbar.test.js +128 -0
  68. package/lib/plugins/toolbar/__tests__/editor-and-toolbar.test.js +51 -0
  69. package/lib/plugins/toolbar/__tests__/toolbar-buttons.test.js +54 -0
  70. package/lib/plugins/toolbar/__tests__/toolbar.test.js +120 -0
  71. package/lib/plugins/toolbar/default-toolbar.js +229 -0
  72. package/lib/plugins/toolbar/done-button.js +53 -0
  73. package/lib/plugins/toolbar/editor-and-toolbar.js +286 -0
  74. package/lib/plugins/toolbar/index.js +34 -0
  75. package/lib/plugins/toolbar/toolbar-buttons.js +194 -0
  76. package/lib/plugins/toolbar/toolbar.js +376 -0
  77. package/lib/plugins/utils.js +62 -0
  78. package/lib/serialization.js +677 -0
  79. package/lib/shared/alert-dialog.js +75 -0
  80. package/lib/theme.js +9 -0
  81. package/package.json +69 -0
  82. package/src/__tests__/editor.test.jsx +363 -0
  83. package/src/__tests__/serialization.test.js +291 -0
  84. package/src/__tests__/utils.js +36 -0
  85. package/src/block-tags.js +17 -0
  86. package/src/constants.js +7 -0
  87. package/src/editor.jsx +1197 -0
  88. package/src/extensions/characters.js +46 -0
  89. package/src/extensions/component.jsx +294 -0
  90. package/src/extensions/css.js +217 -0
  91. package/src/extensions/custom-toolbar-wrapper.jsx +100 -0
  92. package/src/extensions/image.js +55 -0
  93. package/src/extensions/math.js +259 -0
  94. package/src/extensions/media.js +182 -0
  95. package/src/extensions/responseArea.js +205 -0
  96. package/src/index.jsx +1462 -0
  97. package/src/old-index.jsx +162 -0
  98. package/src/parse-html.js +8 -0
  99. package/src/plugins/README.md +27 -0
  100. package/src/plugins/characters/custom-popper.js +48 -0
  101. package/src/plugins/characters/index.jsx +284 -0
  102. package/src/plugins/characters/utils.js +447 -0
  103. package/src/plugins/css/icons/index.jsx +17 -0
  104. package/src/plugins/css/index.jsx +340 -0
  105. package/src/plugins/customPlugin/index.jsx +85 -0
  106. package/src/plugins/html/icons/index.jsx +19 -0
  107. package/src/plugins/html/index.jsx +72 -0
  108. package/src/plugins/image/__tests__/__snapshots__/component.test.jsx.snap +51 -0
  109. package/src/plugins/image/__tests__/__snapshots__/image-toolbar-logic.test.jsx.snap +27 -0
  110. package/src/plugins/image/__tests__/__snapshots__/image-toolbar.test.jsx.snap +44 -0
  111. package/src/plugins/image/__tests__/component.test.jsx +41 -0
  112. package/src/plugins/image/__tests__/image-toolbar-logic.test.jsx +42 -0
  113. package/src/plugins/image/__tests__/image-toolbar.test.jsx +11 -0
  114. package/src/plugins/image/__tests__/index.test.js +95 -0
  115. package/src/plugins/image/__tests__/insert-image-handler.test.js +113 -0
  116. package/src/plugins/image/__tests__/mock-change.js +15 -0
  117. package/src/plugins/image/alt-dialog.jsx +82 -0
  118. package/src/plugins/image/component.jsx +343 -0
  119. package/src/plugins/image/image-toolbar.jsx +100 -0
  120. package/src/plugins/image/index.jsx +227 -0
  121. package/src/plugins/image/insert-image-handler.js +79 -0
  122. package/src/plugins/index.jsx +377 -0
  123. package/src/plugins/list/__tests__/index.test.js +54 -0
  124. package/src/plugins/list/index.jsx +305 -0
  125. package/src/plugins/math/__tests__/__snapshots__/index.test.jsx.snap +48 -0
  126. package/src/plugins/math/__tests__/index.test.jsx +245 -0
  127. package/src/plugins/math/index.jsx +379 -0
  128. package/src/plugins/media/__tests__/index.test.js +75 -0
  129. package/src/plugins/media/index.jsx +325 -0
  130. package/src/plugins/media/media-dialog.js +624 -0
  131. package/src/plugins/media/media-toolbar.jsx +56 -0
  132. package/src/plugins/media/media-wrapper.jsx +43 -0
  133. package/src/plugins/rendering/index.js +31 -0
  134. package/src/plugins/respArea/drag-in-the-blank/choice.jsx +215 -0
  135. package/src/plugins/respArea/drag-in-the-blank/index.jsx +70 -0
  136. package/src/plugins/respArea/explicit-constructed-response/index.jsx +92 -0
  137. package/src/plugins/respArea/icons/index.jsx +71 -0
  138. package/src/plugins/respArea/index.jsx +299 -0
  139. package/src/plugins/respArea/inline-dropdown/index.jsx +108 -0
  140. package/src/plugins/respArea/math-templated/index.jsx +104 -0
  141. package/src/plugins/respArea/utils.jsx +90 -0
  142. package/src/plugins/table/CustomTablePlugin.js +113 -0
  143. package/src/plugins/table/__tests__/__snapshots__/table-toolbar.test.jsx.snap +44 -0
  144. package/src/plugins/table/__tests__/index.test.jsx +401 -0
  145. package/src/plugins/table/__tests__/table-toolbar.test.jsx +42 -0
  146. package/src/plugins/table/icons/index.jsx +53 -0
  147. package/src/plugins/table/index.jsx +427 -0
  148. package/src/plugins/table/table-toolbar.jsx +136 -0
  149. package/src/plugins/textAlign/icons/index.jsx +114 -0
  150. package/src/plugins/textAlign/index.jsx +23 -0
  151. package/src/plugins/toolbar/__tests__/__snapshots__/default-toolbar.test.jsx.snap +923 -0
  152. package/src/plugins/toolbar/__tests__/__snapshots__/editor-and-toolbar.test.jsx.snap +20 -0
  153. package/src/plugins/toolbar/__tests__/__snapshots__/toolbar-buttons.test.jsx.snap +36 -0
  154. package/src/plugins/toolbar/__tests__/__snapshots__/toolbar.test.jsx.snap +46 -0
  155. package/src/plugins/toolbar/__tests__/default-toolbar.test.jsx +94 -0
  156. package/src/plugins/toolbar/__tests__/editor-and-toolbar.test.jsx +37 -0
  157. package/src/plugins/toolbar/__tests__/toolbar-buttons.test.jsx +51 -0
  158. package/src/plugins/toolbar/__tests__/toolbar.test.jsx +106 -0
  159. package/src/plugins/toolbar/default-toolbar.jsx +206 -0
  160. package/src/plugins/toolbar/done-button.jsx +38 -0
  161. package/src/plugins/toolbar/editor-and-toolbar.jsx +257 -0
  162. package/src/plugins/toolbar/index.jsx +23 -0
  163. package/src/plugins/toolbar/toolbar-buttons.jsx +138 -0
  164. package/src/plugins/toolbar/toolbar.jsx +338 -0
  165. package/src/plugins/utils.js +31 -0
  166. package/src/serialization.jsx +621 -0
  167. package/src/theme.js +1 -0
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _utils = require("../../../__tests__/utils");
6
+
7
+ var _slate = require("slate");
8
+
9
+ var _editorAndToolbar = require("../editor-and-toolbar");
10
+
11
+ var _react = _interopRequireDefault(require("react"));
12
+
13
+ var _debug = _interopRequireDefault(require("debug"));
14
+
15
+ var _reactTestRenderer = _interopRequireDefault(require("react-test-renderer"));
16
+
17
+ jest.mock('../toolbar', function () {
18
+ return function () {
19
+ return /*#__PURE__*/_react["default"].createElement("div", null, "---- toolbar ------ ");
20
+ };
21
+ });
22
+ (0, _utils.mockIconButton)();
23
+ var log = (0, _debug["default"])('@pie-lib:editable-html:test:editor-and-toolbar');
24
+ describe('toolbar', function () {
25
+ var onDelete, classes;
26
+ beforeEach(function () {
27
+ onDelete = jest.fn();
28
+ classes = (0, _utils.classObject)('root', 'editorHolder', 'editorInFocus');
29
+ });
30
+ it('renders', function () {
31
+ var value = _slate.Value.fromJSON({});
32
+
33
+ Object.defineProperty(value, 'isFocused', {
34
+ get: jest.fn(function () {
35
+ return true;
36
+ })
37
+ });
38
+
39
+ var tree = _reactTestRenderer["default"].create( /*#__PURE__*/_react["default"].createElement(_editorAndToolbar.EditorAndToolbar, {
40
+ classes: classes,
41
+ value: value,
42
+ plugins: [],
43
+ onDone: jest.fn(),
44
+ onChange: jest.fn()
45
+ }, "children")).toJSON();
46
+
47
+ log('tree: ', JSON.stringify(tree, null, ' '));
48
+ expect(tree).toMatchSnapshot();
49
+ });
50
+ });
51
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wbHVnaW5zL3Rvb2xiYXIvX190ZXN0c19fL2VkaXRvci1hbmQtdG9vbGJhci50ZXN0LmpzeCJdLCJuYW1lcyI6WyJqZXN0IiwibW9jayIsImxvZyIsImRlc2NyaWJlIiwib25EZWxldGUiLCJjbGFzc2VzIiwiYmVmb3JlRWFjaCIsImZuIiwiaXQiLCJ2YWx1ZSIsIlZhbHVlIiwiZnJvbUpTT04iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsInRyZWUiLCJyZW5kZXJlciIsImNyZWF0ZSIsInRvSlNPTiIsIkpTT04iLCJzdHJpbmdpZnkiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQUEsSUFBSSxDQUFDQyxJQUFMLENBQVUsWUFBVixFQUF3QjtBQUFBLFNBQU07QUFBQSx3QkFBTSxvRUFBTjtBQUFBLEdBQU47QUFBQSxDQUF4QjtBQUVBO0FBRUEsSUFBTUMsR0FBRyxHQUFHLHVCQUFNLGdEQUFOLENBQVo7QUFFQUMsUUFBUSxDQUFDLFNBQUQsRUFBWSxZQUFNO0FBQ3hCLE1BQUlDLFFBQUosRUFBY0MsT0FBZDtBQUVBQyxFQUFBQSxVQUFVLENBQUMsWUFBTTtBQUNmRixJQUFBQSxRQUFRLEdBQUdKLElBQUksQ0FBQ08sRUFBTCxFQUFYO0FBQ0FGLElBQUFBLE9BQU8sR0FBRyx3QkFBWSxNQUFaLEVBQW9CLGNBQXBCLEVBQW9DLGVBQXBDLENBQVY7QUFDRCxHQUhTLENBQVY7QUFLQUcsRUFBQUEsRUFBRSxDQUFDLFNBQUQsRUFBWSxZQUFNO0FBQ2xCLFFBQU1DLEtBQUssR0FBR0MsYUFBTUMsUUFBTixDQUFlLEVBQWYsQ0FBZDs7QUFDQUMsSUFBQUEsTUFBTSxDQUFDQyxjQUFQLENBQXNCSixLQUF0QixFQUE2QixXQUE3QixFQUEwQztBQUFFSyxNQUFBQSxHQUFHLEVBQUVkLElBQUksQ0FBQ08sRUFBTCxDQUFRO0FBQUEsZUFBTSxJQUFOO0FBQUEsT0FBUjtBQUFQLEtBQTFDOztBQUVBLFFBQU1RLElBQUksR0FBR0MsOEJBQ1ZDLE1BRFUsZUFFVCxnQ0FBQyxrQ0FBRDtBQUFrQixNQUFBLE9BQU8sRUFBRVosT0FBM0I7QUFBb0MsTUFBQSxLQUFLLEVBQUVJLEtBQTNDO0FBQWtELE1BQUEsT0FBTyxFQUFFLEVBQTNEO0FBQStELE1BQUEsTUFBTSxFQUFFVCxJQUFJLENBQUNPLEVBQUwsRUFBdkU7QUFBa0YsTUFBQSxRQUFRLEVBQUVQLElBQUksQ0FBQ08sRUFBTDtBQUE1RixrQkFGUyxFQU1WVyxNQU5VLEVBQWI7O0FBT0FoQixJQUFBQSxHQUFHLENBQUMsUUFBRCxFQUFXaUIsSUFBSSxDQUFDQyxTQUFMLENBQWVMLElBQWYsRUFBcUIsSUFBckIsRUFBMkIsSUFBM0IsQ0FBWCxDQUFIO0FBQ0FNLElBQUFBLE1BQU0sQ0FBQ04sSUFBRCxDQUFOLENBQWFPLGVBQWI7QUFDRCxHQWJDLENBQUY7QUFjRCxDQXRCTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2xhc3NPYmplY3QsIG1vY2tJY29uQnV0dG9uIH0gZnJvbSAnLi4vLi4vLi4vX190ZXN0c19fL3V0aWxzJztcblxuaW1wb3J0IHsgRGF0YSwgVmFsdWUgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBFZGl0b3JBbmRUb29sYmFyLCBnZXRDbG9uZWRDaGlsZHJlbiB9IGZyb20gJy4uL2VkaXRvci1hbmQtdG9vbGJhcic7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCByZW5kZXJlciBmcm9tICdyZWFjdC10ZXN0LXJlbmRlcmVyJztcblxuamVzdC5tb2NrKCcuLi90b29sYmFyJywgKCkgPT4gKCkgPT4gPGRpdj4tLS0tIHRvb2xiYXIgLS0tLS0tIDwvZGl2Pik7XG5cbm1vY2tJY29uQnV0dG9uKCk7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdAcGllLWxpYjplZGl0YWJsZS1odG1sOnRlc3Q6ZWRpdG9yLWFuZC10b29sYmFyJyk7XG5cbmRlc2NyaWJlKCd0b29sYmFyJywgKCkgPT4ge1xuICBsZXQgb25EZWxldGUsIGNsYXNzZXM7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgb25EZWxldGUgPSBqZXN0LmZuKCk7XG4gICAgY2xhc3NlcyA9IGNsYXNzT2JqZWN0KCdyb290JywgJ2VkaXRvckhvbGRlcicsICdlZGl0b3JJbkZvY3VzJyk7XG4gIH0pO1xuXG4gIGl0KCdyZW5kZXJzJywgKCkgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gVmFsdWUuZnJvbUpTT04oe30pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ2lzRm9jdXNlZCcsIHsgZ2V0OiBqZXN0LmZuKCgpID0+IHRydWUpIH0pO1xuXG4gICAgY29uc3QgdHJlZSA9IHJlbmRlcmVyXG4gICAgICAuY3JlYXRlKFxuICAgICAgICA8RWRpdG9yQW5kVG9vbGJhciBjbGFzc2VzPXtjbGFzc2VzfSB2YWx1ZT17dmFsdWV9IHBsdWdpbnM9e1tdfSBvbkRvbmU9e2plc3QuZm4oKX0gb25DaGFuZ2U9e2plc3QuZm4oKX0+XG4gICAgICAgICAgY2hpbGRyZW5cbiAgICAgICAgPC9FZGl0b3JBbmRUb29sYmFyPixcbiAgICAgIClcbiAgICAgIC50b0pTT04oKTtcbiAgICBsb2coJ3RyZWU6ICcsIEpTT04uc3RyaW5naWZ5KHRyZWUsIG51bGwsICcgICcpKTtcbiAgICBleHBlY3QodHJlZSkudG9NYXRjaFNuYXBzaG90KCk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _utils = require("../../../__tests__/utils");
6
+
7
+ var _slate = require("slate");
8
+
9
+ var _toolbarButtons = require("../toolbar-buttons");
10
+
11
+ var _react = _interopRequireDefault(require("react"));
12
+
13
+ var _debug = _interopRequireDefault(require("debug"));
14
+
15
+ var _reactTestRenderer = _interopRequireDefault(require("react-test-renderer"));
16
+
17
+ (0, _utils.mockIconButton)();
18
+ var log = (0, _debug["default"])('@pie-lib:editable-html:test:editor-and-toolbar');
19
+ describe('Button', function () {
20
+ it('renders', function () {
21
+ var classes = (0, _utils.classObject)('root');
22
+
23
+ var tree = _reactTestRenderer["default"].create( /*#__PURE__*/_react["default"].createElement(_toolbarButtons.RawButton, {
24
+ onClick: jest.fn(),
25
+ classes: classes
26
+ }, "children")).toJSON();
27
+
28
+ expect(tree).toMatchSnapshot();
29
+ });
30
+ });
31
+ describe('MarkButton', function () {
32
+ var classes = (0, _utils.classObject)('button', 'root', 'active');
33
+ it('renders not active', function () {
34
+ var tree = _reactTestRenderer["default"].create( /*#__PURE__*/_react["default"].createElement(_toolbarButtons.RawMarkButton, {
35
+ mark: 'i',
36
+ onToggle: jest.fn(),
37
+ active: false,
38
+ classes: classes
39
+ }, "children")).toJSON();
40
+
41
+ expect(tree).toMatchSnapshot();
42
+ });
43
+ it('renders active', function () {
44
+ var tree = _reactTestRenderer["default"].create( /*#__PURE__*/_react["default"].createElement(_toolbarButtons.RawMarkButton, {
45
+ mark: 'i',
46
+ onToggle: jest.fn(),
47
+ active: true,
48
+ classes: classes
49
+ }, "children")).toJSON();
50
+
51
+ expect(tree).toMatchSnapshot();
52
+ });
53
+ });
54
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wbHVnaW5zL3Rvb2xiYXIvX190ZXN0c19fL3Rvb2xiYXItYnV0dG9ucy50ZXN0LmpzeCJdLCJuYW1lcyI6WyJsb2ciLCJkZXNjcmliZSIsIml0IiwiY2xhc3NlcyIsInRyZWUiLCJyZW5kZXJlciIsImNyZWF0ZSIsImplc3QiLCJmbiIsInRvSlNPTiIsImV4cGVjdCIsInRvTWF0Y2hTbmFwc2hvdCJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBO0FBRUEsSUFBTUEsR0FBRyxHQUFHLHVCQUFNLGdEQUFOLENBQVo7QUFFQUMsUUFBUSxDQUFDLFFBQUQsRUFBVyxZQUFNO0FBQ3ZCQyxFQUFBQSxFQUFFLENBQUMsU0FBRCxFQUFZLFlBQU07QUFDbEIsUUFBTUMsT0FBTyxHQUFHLHdCQUFZLE1BQVosQ0FBaEI7O0FBQ0EsUUFBTUMsSUFBSSxHQUFHQyw4QkFDVkMsTUFEVSxlQUVULGdDQUFDLHlCQUFEO0FBQVcsTUFBQSxPQUFPLEVBQUVDLElBQUksQ0FBQ0MsRUFBTCxFQUFwQjtBQUErQixNQUFBLE9BQU8sRUFBRUw7QUFBeEMsa0JBRlMsRUFNVk0sTUFOVSxFQUFiOztBQU9BQyxJQUFBQSxNQUFNLENBQUNOLElBQUQsQ0FBTixDQUFhTyxlQUFiO0FBQ0QsR0FWQyxDQUFGO0FBV0QsQ0FaTyxDQUFSO0FBY0FWLFFBQVEsQ0FBQyxZQUFELEVBQWUsWUFBTTtBQUMzQixNQUFNRSxPQUFPLEdBQUcsd0JBQVksUUFBWixFQUFzQixNQUF0QixFQUE4QixRQUE5QixDQUFoQjtBQUVBRCxFQUFBQSxFQUFFLENBQUMsb0JBQUQsRUFBdUIsWUFBTTtBQUM3QixRQUFNRSxJQUFJLEdBQUdDLDhCQUNWQyxNQURVLGVBRVQsZ0NBQUMsNkJBQUQ7QUFBZSxNQUFBLElBQUksRUFBRSxHQUFyQjtBQUEwQixNQUFBLFFBQVEsRUFBRUMsSUFBSSxDQUFDQyxFQUFMLEVBQXBDO0FBQStDLE1BQUEsTUFBTSxFQUFFLEtBQXZEO0FBQThELE1BQUEsT0FBTyxFQUFFTDtBQUF2RSxrQkFGUyxFQU1WTSxNQU5VLEVBQWI7O0FBT0FDLElBQUFBLE1BQU0sQ0FBQ04sSUFBRCxDQUFOLENBQWFPLGVBQWI7QUFDRCxHQVRDLENBQUY7QUFXQVQsRUFBQUEsRUFBRSxDQUFDLGdCQUFELEVBQW1CLFlBQU07QUFDekIsUUFBTUUsSUFBSSxHQUFHQyw4QkFDVkMsTUFEVSxlQUVULGdDQUFDLDZCQUFEO0FBQWUsTUFBQSxJQUFJLEVBQUUsR0FBckI7QUFBMEIsTUFBQSxRQUFRLEVBQUVDLElBQUksQ0FBQ0MsRUFBTCxFQUFwQztBQUErQyxNQUFBLE1BQU0sRUFBRSxJQUF2RDtBQUE2RCxNQUFBLE9BQU8sRUFBRUw7QUFBdEUsa0JBRlMsRUFNVk0sTUFOVSxFQUFiOztBQU9BQyxJQUFBQSxNQUFNLENBQUNOLElBQUQsQ0FBTixDQUFhTyxlQUFiO0FBQ0QsR0FUQyxDQUFGO0FBVUQsQ0F4Qk8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsYXNzT2JqZWN0LCBtb2NrSWNvbkJ1dHRvbiB9IGZyb20gJy4uLy4uLy4uL19fdGVzdHNfXy91dGlscyc7XG5cbmltcG9ydCB7IERhdGEgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBSYXdNYXJrQnV0dG9uLCBSYXdCdXR0b24gfSBmcm9tICcuLi90b29sYmFyLWJ1dHRvbnMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgcmVuZGVyZXIgZnJvbSAncmVhY3QtdGVzdC1yZW5kZXJlcic7XG5cbm1vY2tJY29uQnV0dG9uKCk7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdAcGllLWxpYjplZGl0YWJsZS1odG1sOnRlc3Q6ZWRpdG9yLWFuZC10b29sYmFyJyk7XG5cbmRlc2NyaWJlKCdCdXR0b24nLCAoKSA9PiB7XG4gIGl0KCdyZW5kZXJzJywgKCkgPT4ge1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc09iamVjdCgncm9vdCcpO1xuICAgIGNvbnN0IHRyZWUgPSByZW5kZXJlclxuICAgICAgLmNyZWF0ZShcbiAgICAgICAgPFJhd0J1dHRvbiBvbkNsaWNrPXtqZXN0LmZuKCl9IGNsYXNzZXM9e2NsYXNzZXN9PlxuICAgICAgICAgIGNoaWxkcmVuXG4gICAgICAgIDwvUmF3QnV0dG9uPixcbiAgICAgIClcbiAgICAgIC50b0pTT04oKTtcbiAgICBleHBlY3QodHJlZSkudG9NYXRjaFNuYXBzaG90KCk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdNYXJrQnV0dG9uJywgKCkgPT4ge1xuICBjb25zdCBjbGFzc2VzID0gY2xhc3NPYmplY3QoJ2J1dHRvbicsICdyb290JywgJ2FjdGl2ZScpO1xuXG4gIGl0KCdyZW5kZXJzIG5vdCBhY3RpdmUnLCAoKSA9PiB7XG4gICAgY29uc3QgdHJlZSA9IHJlbmRlcmVyXG4gICAgICAuY3JlYXRlKFxuICAgICAgICA8UmF3TWFya0J1dHRvbiBtYXJrPXsnaSd9IG9uVG9nZ2xlPXtqZXN0LmZuKCl9IGFjdGl2ZT17ZmFsc2V9IGNsYXNzZXM9e2NsYXNzZXN9PlxuICAgICAgICAgIGNoaWxkcmVuXG4gICAgICAgIDwvUmF3TWFya0J1dHRvbj4sXG4gICAgICApXG4gICAgICAudG9KU09OKCk7XG4gICAgZXhwZWN0KHRyZWUpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICB9KTtcblxuICBpdCgncmVuZGVycyBhY3RpdmUnLCAoKSA9PiB7XG4gICAgY29uc3QgdHJlZSA9IHJlbmRlcmVyXG4gICAgICAuY3JlYXRlKFxuICAgICAgICA8UmF3TWFya0J1dHRvbiBtYXJrPXsnaSd9IG9uVG9nZ2xlPXtqZXN0LmZuKCl9IGFjdGl2ZT17dHJ1ZX0gY2xhc3Nlcz17Y2xhc3Nlc30+XG4gICAgICAgICAgY2hpbGRyZW5cbiAgICAgICAgPC9SYXdNYXJrQnV0dG9uPixcbiAgICAgIClcbiAgICAgIC50b0pTT04oKTtcbiAgICBleHBlY3QodHJlZSkudG9NYXRjaFNuYXBzaG90KCk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _utils = require("../../../__tests__/utils");
6
+
7
+ var _enzyme = require("enzyme");
8
+
9
+ var _slate = require("slate");
10
+
11
+ var _toolbar = require("../toolbar");
12
+
13
+ var _react = _interopRequireDefault(require("react"));
14
+
15
+ var _debug = _interopRequireDefault(require("debug"));
16
+
17
+ var _reactTestRenderer = _interopRequireDefault(require("react-test-renderer"));
18
+
19
+ (0, _utils.mockMathInput)();
20
+ jest.mock('@material-ui/core/IconButton', function () {
21
+ return function (props) {
22
+ return /*#__PURE__*/_react["default"].createElement("div", {
23
+ className: props.className,
24
+ style: props.style,
25
+ ariaLabel: props['aria-label']
26
+ });
27
+ };
28
+ });
29
+
30
+ var node = _slate.Inline.fromJSON({
31
+ type: 'i'
32
+ });
33
+
34
+ var parentNode = _slate.Inline.fromJSON({
35
+ type: 'i'
36
+ });
37
+
38
+ var value;
39
+ var log = (0, _debug["default"])('@pie-lib:editable-html:test:toolbar');
40
+ describe('toolbar', function () {
41
+ var onDelete, classes, document, toolbarOpts;
42
+ beforeEach(function () {
43
+ onDelete = jest.fn();
44
+ toolbarOpts = {
45
+ position: 'bottom',
46
+ alwaysVisible: false
47
+ };
48
+ value = _slate.Value.fromJSON({});
49
+ document = {
50
+ getClosestInline: jest.fn().mockReturnValue(node),
51
+ getParent: jest.fn().mockReturnValue()
52
+ };
53
+ Object.defineProperties(value, {
54
+ isCollapsed: {
55
+ get: jest.fn(function () {
56
+ return true;
57
+ })
58
+ },
59
+ startKey: {
60
+ get: jest.fn(function () {
61
+ return '1';
62
+ })
63
+ },
64
+ document: {
65
+ get: jest.fn(function () {
66
+ return document;
67
+ })
68
+ }
69
+ });
70
+ classes = (0, _utils.classObject)('iconRoot', 'inline', 'toolbar', 'focused', 'shared', 'inline', 'pie-toolbar');
71
+ });
72
+ test('renders custom toolbar', function () {
73
+ var plugins = [{
74
+ deleteNode: function deleteNode() {
75
+ return true;
76
+ },
77
+ toolbar: {
78
+ supports: function supports() {
79
+ return true;
80
+ },
81
+ customToolbar: function customToolbar() {
82
+ return function () {
83
+ return /*#__PURE__*/_react["default"].createElement("div", null, " --------- custom toolbar ----------- ");
84
+ };
85
+ }
86
+ }
87
+ }];
88
+
89
+ var tree = _reactTestRenderer["default"].create( /*#__PURE__*/_react["default"].createElement(_toolbar.Toolbar, {
90
+ toolbarOpts: toolbarOpts,
91
+ plugins: plugins,
92
+ classes: classes,
93
+ value: value,
94
+ onDone: jest.fn(),
95
+ onChange: jest.fn()
96
+ })).toJSON();
97
+
98
+ log('tree: ', JSON.stringify(tree, null, ' '));
99
+ expect(tree).toMatchSnapshot();
100
+ });
101
+ describe('default', function () {
102
+ var plugins;
103
+ beforeEach(function () {
104
+ plugins = [];
105
+ });
106
+ test('renders default toolbar', function () {
107
+ var tree = _reactTestRenderer["default"].create( /*#__PURE__*/_react["default"].createElement(_toolbar.Toolbar, {
108
+ toolbarOpts: toolbarOpts,
109
+ plugins: plugins,
110
+ classes: classes,
111
+ value: value,
112
+ onDone: jest.fn(),
113
+ onChange: jest.fn()
114
+ })).toJSON();
115
+
116
+ expect(tree).toMatchSnapshot();
117
+ });
118
+ });
119
+ });
120
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wbHVnaW5zL3Rvb2xiYXIvX190ZXN0c19fL3Rvb2xiYXIudGVzdC5qc3giXSwibmFtZXMiOlsiamVzdCIsIm1vY2siLCJwcm9wcyIsImNsYXNzTmFtZSIsInN0eWxlIiwibm9kZSIsIklubGluZSIsImZyb21KU09OIiwidHlwZSIsInBhcmVudE5vZGUiLCJ2YWx1ZSIsImxvZyIsImRlc2NyaWJlIiwib25EZWxldGUiLCJjbGFzc2VzIiwiZG9jdW1lbnQiLCJ0b29sYmFyT3B0cyIsImJlZm9yZUVhY2giLCJmbiIsInBvc2l0aW9uIiwiYWx3YXlzVmlzaWJsZSIsIlZhbHVlIiwiZ2V0Q2xvc2VzdElubGluZSIsIm1vY2tSZXR1cm5WYWx1ZSIsImdldFBhcmVudCIsIk9iamVjdCIsImRlZmluZVByb3BlcnRpZXMiLCJpc0NvbGxhcHNlZCIsImdldCIsInN0YXJ0S2V5IiwidGVzdCIsInBsdWdpbnMiLCJkZWxldGVOb2RlIiwidG9vbGJhciIsInN1cHBvcnRzIiwiY3VzdG9tVG9vbGJhciIsInRyZWUiLCJyZW5kZXJlciIsImNyZWF0ZSIsInRvSlNPTiIsIkpTT04iLCJzdHJpbmdpZnkiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTtBQUVBQSxJQUFJLENBQUNDLElBQUwsQ0FBVSw4QkFBVixFQUEwQyxZQUFNO0FBQzlDLFNBQU8sVUFBQ0MsS0FBRDtBQUFBLHdCQUFXO0FBQUssTUFBQSxTQUFTLEVBQUVBLEtBQUssQ0FBQ0MsU0FBdEI7QUFBaUMsTUFBQSxLQUFLLEVBQUVELEtBQUssQ0FBQ0UsS0FBOUM7QUFBcUQsTUFBQSxTQUFTLEVBQUVGLEtBQUssQ0FBQyxZQUFEO0FBQXJFLE1BQVg7QUFBQSxHQUFQO0FBQ0QsQ0FGRDs7QUFJQSxJQUFJRyxJQUFJLEdBQUdDLGNBQU9DLFFBQVAsQ0FBZ0I7QUFBRUMsRUFB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LENBQUo7QUE0QkEvQixFQUFBQSxRQUFRLENBQUMsU0FBRCxFQUFZLFlBQU07QUFDeEIsUUFBSW1CLE9BQUo7QUFFQWQsSUFBQUEsVUFBVSxDQUFDLFlBQU07QUFDZmMsTUFBQUEsT0FBTyxHQUFHLEVBQVY7QUFDRCxLQUZTLENBQVY7QUFJQUQsSUFBQUEsSUFBSSxDQUFDLHlCQUFELEVBQTRCLFlBQU07QUFDcEMsVUFBTU0sSUFBSSxHQUFHQyw4QkFDVkMsTUFEVSxlQUVULGdDQUFDLGdCQUFEO0FBQ0UsUUFBQSxXQUFXLEVBQUV0QixXQURmO0FBRUUsUUFBQSxPQUFPLEVBQUVlLE9BRlg7QUFHRSxRQUFBLE9BQU8sRUFBRWpCLE9BSFg7QUFJRSxRQUFBLEtBQUssRUFBRUosS0FKVDtBQUtFLFFBQUEsTUFBTSxFQUFFVixJQUFJLENBQUNrQixFQUFMLEVBTFY7QUFNRSxRQUFBLFFBQVEsRUFBRWxCLElBQUksQ0FBQ2tCLEVBQUw7QUFOWixRQUZTLEVBV1ZxQixNQVhVLEVBQWI7O0FBWUFHLE1BQUFBLE1BQU0sQ0FBQ04sSUFBRCxDQUFOLENBQWFPLGVBQWI7QUFDRCxLQWRHLENBQUo7QUFlRCxHQXRCTyxDQUFSO0FBdUJELENBbkZPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbGFzc09iamVjdCwgbW9ja0ljb25CdXR0b24sIG1vY2tNYXRoSW5wdXQgfSBmcm9tICcuLi8uLi8uLi9fX3Rlc3RzX18vdXRpbHMnO1xuaW1wb3J0IHsgc2hhbGxvdyB9IGZyb20gJ2VuenltZSc7XG5cbmltcG9ydCB7IERhdGEsIFZhbHVlLCBJbmxpbmUgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBUb29sYmFyLCBEZWZhdWx0VG9vbGJhciB9IGZyb20gJy4uL3Rvb2xiYXInO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgcmVuZGVyZXIgZnJvbSAncmVhY3QtdGVzdC1yZW5kZXJlcic7XG5cbm1vY2tNYXRoSW5wdXQoKTtcblxuamVzdC5tb2NrKCdAbWF0ZXJpYWwtdWkvY29yZS9JY29uQnV0dG9uJywgKCkgPT4ge1xuICByZXR1cm4gKHByb3BzKSA9PiA8ZGl2IGNsYXNzTmFtZT17cHJvcHMuY2xhc3NOYW1lfSBzdHlsZT17cHJvcHMuc3R5bGV9IGFyaWFMYWJlbD17cHJvcHNbJ2FyaWEtbGFiZWwnXX0gLz47XG59KTtcblxubGV0IG5vZGUgPSBJbmxpbmUuZnJvbUpTT04oeyB0eXBlOiAnaScgfSk7XG5sZXQgcGFyZW50Tm9kZSA9IElubGluZS5mcm9tSlNPTih7XG4gIHR5cGU6ICdpJyxcbn0pO1xubGV0IHZhbHVlO1xuY29uc3QgbG9nID0gZGVidWcoJ0BwaWUtbGliOmVkaXRhYmxlLWh0bWw6dGVzdDp0b29sYmFyJyk7XG5cbmRlc2NyaWJlKCd0b29sYmFyJywgKCkgPT4ge1xuICBsZXQgb25EZWxldGUsIGNsYXNzZXMsIGRvY3VtZW50LCB0b29sYmFyT3B0cztcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBvbkRlbGV0ZSA9IGplc3QuZm4oKTtcblxuICAgIHRvb2xiYXJPcHRzID0ge1xuICAgICAgcG9zaXRpb246ICdib3R0b20nLFxuICAgICAgYWx3YXlzVmlzaWJsZTogZmFsc2UsXG4gICAgfTtcblxuICAgIHZhbHVlID0gVmFsdWUuZnJvbUpTT04oe30pO1xuICAgIGRvY3VtZW50ID0ge1xuICAgICAgZ2V0Q2xvc2VzdElubGluZTogamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZShub2RlKSxcbiAgICAgIGdldFBhcmVudDogamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZSgpLFxuICAgIH07XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh2YWx1ZSwge1xuICAgICAgaXNDb2xsYXBzZWQ6IHtcbiAgICAgICAgZ2V0OiBqZXN0LmZuKCgpID0+IHRydWUpLFxuICAgICAgfSxcbiAgICAgIHN0YXJ0S2V5OiB7XG4gICAgICAgIGdldDogamVzdC5mbigoKSA9PiAnMScpLFxuICAgICAgfSxcbiAgICAgIGRvY3VtZW50OiB7XG4gICAgICAgIGdldDogamVzdC5mbigoKSA9PiBkb2N1bWVudCksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY2xhc3NlcyA9IGNsYXNzT2JqZWN0KCdpY29uUm9vdCcsICdpbmxpbmUnLCAndG9vbGJhcicsICdmb2N1c2VkJywgJ3NoYXJlZCcsICdpbmxpbmUnLCAncGllLXRvb2xiYXInKTtcbiAgfSk7XG5cbiAgdGVzdCgncmVuZGVycyBjdXN0b20gdG9vbGJhcicsICgpID0+IHtcbiAgICBjb25zdCBwbHVnaW5zID0gW1xuICAgICAge1xuICAgICAgICBkZWxldGVOb2RlOiAoKSA9PiB0cnVlLFxuICAgICAgICB0b29sYmFyOiB7XG4gICAgICAgICAgc3VwcG9ydHM6ICgpID0+IHRydWUsXG4gICAgICAgICAgY3VzdG9tVG9vbGJhcjogKCkgPT4gKCkgPT4gPGRpdj4gLS0tLS0tLS0tIGN1c3RvbSB0b29sYmFyIC0tLS0tLS0tLS0tIDwvZGl2PixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IHRyZWUgPSByZW5kZXJlclxuICAgICAgLmNyZWF0ZShcbiAgICAgICAgPFRvb2xiYXJcbiAgICAgICAgICB0b29sYmFyT3B0cz17dG9vbGJhck9wdHN9XG4gICAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBvbkRvbmU9e2plc3QuZm4oKX1cbiAgICAgICAgICBvbkNoYW5nZT17amVzdC5mbigpfVxuICAgICAgICAvPixcbiAgICAgIClcbiAgICAgIC50b0pTT04oKTtcblxuICAgIGxvZygndHJlZTogJywgSlNPTi5zdHJpbmdpZnkodHJlZSwgbnVsbCwgJyAgJykpO1xuICAgIGV4cGVjdCh0cmVlKS50b01hdGNoU25hcHNob3QoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2RlZmF1bHQnLCAoKSA9PiB7XG4gICAgbGV0IHBsdWdpbnM7XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIHBsdWdpbnMgPSBbXTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3JlbmRlcnMgZGVmYXVsdCB0b29sYmFyJywgKCkgPT4ge1xuICAgICAgY29uc3QgdHJlZSA9IHJlbmRlcmVyXG4gICAgICAgIC5jcmVhdGUoXG4gICAgICAgICAgPFRvb2xiYXJcbiAgICAgICAgICAgIHRvb2xiYXJPcHRzPXt0b29sYmFyT3B0c31cbiAgICAgICAgICAgIHBsdWdpbnM9e3BsdWdpbnN9XG4gICAgICAgICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgb25Eb25lPXtqZXN0LmZuKCl9XG4gICAgICAgICAgICBvbkNoYW5nZT17amVzdC5mbigpfVxuICAgICAgICAgIC8+LFxuICAgICAgICApXG4gICAgICAgIC50b0pTT04oKTtcbiAgICAgIGV4cGVjdCh0cmVlKS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,229 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = exports.ToolbarButton = exports.DefaultToolbar = void 0;
9
+
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _doneButton = require("./done-button");
15
+
16
+ var _propTypes = _interopRequireDefault(require("prop-types"));
17
+
18
+ var _react = _interopRequireDefault(require("react"));
19
+
20
+ var _slatePropTypes = _interopRequireDefault(require("slate-prop-types"));
21
+
22
+ var _utils = require("../utils");
23
+
24
+ var _styles = require("@material-ui/core/styles");
25
+
26
+ var _toolbarButtons = require("./toolbar-buttons");
27
+
28
+ var _debug = _interopRequireDefault(require("debug"));
29
+
30
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
31
+
32
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
33
+
34
+ var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:toolbar');
35
+
36
+ var ToolbarButton = function ToolbarButton(props) {
37
+ var onToggle = function onToggle() {
38
+ var c = props.onToggle(props.value.change(), props);
39
+ props.onChange(c);
40
+ };
41
+
42
+ if (props.isMark) {
43
+ var _isActive = (0, _utils.hasMark)(props.value, props.type);
44
+
45
+ var fnToCall = props.type === 'css' ? function () {
46
+ return props.onClick(props.value, props.onChange, props.getFocusedValue);
47
+ } : onToggle;
48
+ log('[ToolbarButton] mark:isActive: ', _isActive);
49
+ var ariaLabel;
50
+
51
+ if (props.type === 'sup') {
52
+ ariaLabel = 'Superscript (marks text as superscripted)';
53
+ } else if (props.type === 'sub') {
54
+ ariaLabel = 'Subscript (marks text as subscripted)';
55
+ } else {
56
+ ariaLabel = props.type;
57
+ }
58
+
59
+ return /*#__PURE__*/_react["default"].createElement(_toolbarButtons.MarkButton, {
60
+ active: _isActive,
61
+ onToggle: fnToCall,
62
+ mark: props.type,
63
+ label: ariaLabel
64
+ }, props.icon);
65
+ }
66
+
67
+ var disabled = props.disabled;
68
+ var isActive = props.isActive ? props.isActive(props.value, props.type) : (0, _utils.hasBlock)(props.value, props.type);
69
+ log('[ToolbarButton] block:isActive: ', isActive);
70
+
71
+ var newIcon = /*#__PURE__*/_react["default"].cloneElement(props.icon);
72
+
73
+ return /*#__PURE__*/_react["default"].createElement(_toolbarButtons.Button, {
74
+ ariaLabel: props.ariaLabel,
75
+ active: isActive,
76
+ disabled: disabled,
77
+ onClick: function onClick(event) {
78
+ return props.onClick(props.value, props.onChange, props.getFocusedValue, event);
79
+ },
80
+ extraStyles: props.buttonStyles
81
+ }, newIcon);
82
+ };
83
+
84
+ exports.ToolbarButton = ToolbarButton;
85
+ ToolbarButton.propTypes = {
86
+ buttonStyles: _propTypes["default"].object,
87
+ disabled: _propTypes["default"].bool,
88
+ icon: _propTypes["default"].any,
89
+ isActive: _propTypes["default"].bool,
90
+ isMark: _propTypes["default"].bool,
91
+ getFocusedValue: _propTypes["default"].func,
92
+ onToggle: _propTypes["default"].func,
93
+ onChange: _propTypes["default"].func,
94
+ onClick: _propTypes["default"].func,
95
+ type: _propTypes["default"].string,
96
+ value: _propTypes["default"].object,
97
+ ariaLabel: _propTypes["default"].string
98
+ };
99
+
100
+ var isActiveToolbarPlugin = function isActiveToolbarPlugin(props) {
101
+ return function (plugin) {
102
+ var isDisabled = (props[plugin.name] || {}).disabled;
103
+ return plugin && plugin.toolbar && !isDisabled;
104
+ };
105
+ };
106
+
107
+ var DefaultToolbar = function DefaultToolbar(_ref) {
108
+ var plugins = _ref.plugins,
109
+ pluginProps = _ref.pluginProps,
110
+ value = _ref.value,
111
+ onChange = _ref.onChange,
112
+ getFocusedValue = _ref.getFocusedValue,
113
+ onDone = _ref.onDone,
114
+ classes = _ref.classes,
115
+ showDone = _ref.showDone,
116
+ deletable = _ref.deletable,
117
+ isHtmlMode = _ref.isHtmlMode,
118
+ doneButtonRef = _ref.doneButtonRef,
119
+ onBlur = _ref.onBlur,
120
+ onFocus = _ref.onFocus;
121
+ pluginProps = _objectSpread({
122
+ // disable HTML plugin by default, at least for now
123
+ html: {
124
+ disabled: true
125
+ }
126
+ }, pluginProps);
127
+ var filtered;
128
+
129
+ var handleFocus = function handleFocus(event) {
130
+ var _doneButtonRef$curren, _event$target;
131
+
132
+ var doneButtonClassName = doneButtonRef === null || doneButtonRef === void 0 ? void 0 : (_doneButtonRef$curren = doneButtonRef.current) === null || _doneButtonRef$curren === void 0 ? void 0 : _doneButtonRef$curren.className;
133
+ var isRawDoneButton = doneButtonClassName && ((_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.closest("[class*=\"".concat(doneButtonClassName, "\"]")));
134
+
135
+ if (onFocus && !isRawDoneButton) {
136
+ onFocus(event);
137
+ }
138
+ };
139
+
140
+ if (isHtmlMode) {
141
+ filtered = plugins.filter(function (plugin) {
142
+ return isActiveToolbarPlugin(pluginProps)(plugin) && (plugin.name === 'characters' || plugin.name === 'html');
143
+ }).map(function (p) {
144
+ return p.toolbar;
145
+ });
146
+ } else {
147
+ filtered = plugins.filter(isActiveToolbarPlugin(pluginProps)).map(function (p) {
148
+ return p.toolbar;
149
+ });
150
+ }
151
+
152
+ var isListActive = plugins.some(function (plugin) {
153
+ return isActiveToolbarPlugin(pluginProps)(plugin) && ['ul_list', 'ol_list'].includes(plugin.name) && plugin.toolbar.isActive(value, plugin.name);
154
+ });
155
+ var isTableActive = plugins.some(function (plugin) {
156
+ return isActiveToolbarPlugin(pluginProps)(plugin) && plugin.name === 'table' && plugin.utils && plugin.utils.isSelectionInTable && plugin.utils.isSelectionInTable(value);
157
+ });
158
+
159
+ var isToolbarButtonDisabled = function isToolbarButtonDisabled(plugin) {
160
+ if (plugin.type === 'table') {
161
+ return isListActive;
162
+ } else if (plugin.type === 'ul_list' || plugin.type === 'ol_list') {
163
+ return isTableActive;
164
+ }
165
+
166
+ return plugin.disabled;
167
+ };
168
+
169
+ return /*#__PURE__*/_react["default"].createElement("div", {
170
+ className: classes.defaultToolbar,
171
+ onFocus: handleFocus,
172
+ tabIndex: "1",
173
+ onBlur: onBlur
174
+ }, /*#__PURE__*/_react["default"].createElement("div", {
175
+ className: classes.buttonsContainer
176
+ }, filtered.map(function (p, index) {
177
+ return /*#__PURE__*/_react["default"].createElement(ToolbarButton, (0, _extends2["default"])({}, p, {
178
+ key: index,
179
+ value: value,
180
+ onChange: onChange,
181
+ getFocusedValue: getFocusedValue,
182
+ disabled: isToolbarButtonDisabled(p)
183
+ }));
184
+ })), showDone && !deletable && /*#__PURE__*/_react["default"].createElement(_doneButton.DoneButton, {
185
+ doneButtonRef: doneButtonRef,
186
+ onClick: onDone
187
+ }));
188
+ };
189
+
190
+ exports.DefaultToolbar = DefaultToolbar;
191
+ DefaultToolbar.propTypes = {
192
+ classes: _propTypes["default"].object.isRequired,
193
+ plugins: _propTypes["default"].array.isRequired,
194
+ pluginProps: _propTypes["default"].object,
195
+ value: _slatePropTypes["default"].value.isRequired,
196
+ onChange: _propTypes["default"].func.isRequired,
197
+ getFocusedValue: _propTypes["default"].func.isRequired,
198
+ onDone: _propTypes["default"].func.isRequired,
199
+ showDone: _propTypes["default"].bool,
200
+ addArea: _propTypes["default"].bool,
201
+ deletable: _propTypes["default"].bool,
202
+ isHtmlMode: _propTypes["default"].bool,
203
+ doneButtonRef: _propTypes["default"].func,
204
+ onBlur: _propTypes["default"].func,
205
+ onFocus: _propTypes["default"].func
206
+ };
207
+ DefaultToolbar.defaultProps = {
208
+ pluginProps: {}
209
+ };
210
+
211
+ var toolbarStyles = function toolbarStyles() {
212
+ return {
213
+ defaultToolbar: {
214
+ display: 'flex',
215
+ width: '100%',
216
+ justifyContent: 'space-between'
217
+ },
218
+ buttonsContainer: {
219
+ alignItems: 'center',
220
+ display: 'flex',
221
+ width: '100%'
222
+ }
223
+ };
224
+ };
225
+
226
+ var _default = (0, _styles.withStyles)(toolbarStyles)(DefaultToolbar);
227
+
228
+ exports["default"] = _default;
229
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wbHVnaW5zL3Rvb2xiYXIvZGVmYXVsdC10b29sYmFyLmpzeCJdLCJuYW1lcyI6WyJsb2ciLCJUb29sYmFyQnV0dG9uIiwicHJvcHMiLCJvblRvZ2dsZSIsImMiLCJ2YWx1ZSIsImNoYW5nZSIsIm9uQ2hhbmdlIiwiaXNNYXJrIiwiaXNBY3RpdmUiLCJ0eXBlIiwiZm5Ub0NhbGwiLCJvbkNsaWNrIiwiZ2V0Rm9jdXNlZFZhbHVlIiwiYXJpYUxhYmVsIiwiaWNvbiIsImRpc2FibGVkIiwibmV3SWNvbiIsIlJlYWN0IiwiY2xvbmVFbGVtZW50IiwiZXZlbnQiLCJidXR0b25TdHlsZXMiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJvYmplY3QiLCJib29sIiwiYW55IiwiZnVuYyIsInN0cmluZyIsImlzQWN0aXZlVG9vbGJhclBsdWdpbiIsInBsdWdpbiIsImlzRGlzYWJsZWQiLCJuYW1lIiwidG9vbGJhciIsIkRlZmF1bHRUb29sYmFyIiwicGx1Z2lucyIsInBsdWdpblByb3BzIiwib25Eb25lIiwiY2xhc3NlcyIsInNob3dEb25lIiwiZGVsZXRhYmxlIiwiaXNIdG1sTW9kZSIsImRvbmVCdXR0b25SZWYiLCJvbkJsdXIiLCJvbkZvY3VzIiwiaHRtbCIsImZpbHRlcmVkIiwiaGFuZGxlRm9jdXMiLCJkb25lQnV0dG9uQ2xhc3NOYW1lIiwiY3VycmVudCIsImNsYXNzTmFtZSIsImlzUmF3RG9uZUJ1dHRvbiIsInRhcmdldCIsImNsb3Nlc3QiLCJmaWx0ZXIiLCJtYXAiLCJwIiwiaXNMaXN0QWN0aXZlIiwic29tZSIsImluY2x1ZGVzIiwiaXNUYWJsZUFjdGl2ZSIsInV0aWxzIiwiaXNTZWxlY3Rpb25JblRhYmxlIiwiaXNUb29sYmFyQnV0dG9uRGlzYWJsZWQiLCJkZWZhdWx0VG9vbGJhciIsImJ1dHRvbnNDb250YWluZXIiLCJpbmRleCIsImlzUmVxdWlyZWQiLCJhcnJheSIsIlNsYXRlUHJvcFR5cGVzIiwiYWRkQXJlYSIsImRlZmF1bHRQcm9wcyIsInRvb2xiYXJTdHlsZXMiLCJkaXNwbGF5Iiwid2lkdGgiLCJqdXN0aWZ5Q29udGVudCIsImFsaWduSXRlbXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFFQTs7QUFDQTs7Ozs7O0FBRUEsSUFBTUEsR0FBRyxHQUFHLHVCQUFNLHdDQUFOLENBQVo7O0FBRU8sSUFBTUMsYUFBYSxHQUFHLFNBQWhCQSxhQUFnQixDQUFDQyxLQUFELEVBQVc7QUFDdEMsTUFBTUMsUUFBUSxHQUFHLFNBQVhBLFFBQVcsR0FBTTtBQUNyQixRQUFNQyxDQUFDLEdBQUdGLEtBQUssQ0FBQ0MsUUFBTixDQUFlRCxLQUFLLENBQUNHLEtBQU4sQ0FBWUMsTUFBWixFQUFmLEVBQXFDSixLQUFyQyxDQUFWO0FBRUFBLElBQUFBLEtBQUssQ0FBQ0ssUUFBTixDQUFlSCxDQUFmO0FBQ0QsR0FKRDs7QUFNQSxNQUFJRixLQUFLLENBQUNNLE1BQVYsRUFBa0I7QUFDaEIsUUFBTUMsU0FBUSxHQUFHLG9CQUFRUCxLQUFLLENBQUNHLEtBQWQsRUFBcUJILEtBQUssQ0FBQ1EsSUFBM0IsQ0FBakI7O0FBQ0EsUUFBTUMsUUFBUSxHQUNaVCxLQUFLLENBQUNRLElBQU4sS0FBZSxLQUFmLEdBQXVCO0FBQUEsYUFBTVIsS0FBSyxDQUFDVSxPQUFOLENBQWNWLEtBQUssQ0FBQ0csS0FBcEIsRUFBMkJILEtBQUssQ0FBQ0ssUUFBakMsRUFBMkNMLEtBQUssQ0FBQ1csZUFBakQsQ0FBTjtBQUFBLEtBQXZCLEdBQWlHVixRQURuRztBQUdBSCxJQUFBQSxHQUFHLENBQUMsaUNBQUQsRUFBb0NTLFNBQXBDLENBQUg7QUFFQSxRQUFJSyxTQUFKOztBQUVBLFFBQUlaLEtBQUssQ0FBQ1EsSUFBTixLQUFlLEtBQW5CLEVBQTBCO0FBQ3hCSSxNQUFBQSxTQUFTLEdBQUcsMkNBQVo7QUFDRCxLQUZELE1BRU8sSUFBSVosS0FBSyxDQUFDUSxJQUFOLEtBQWUsS0FBbkIsRUFB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QnV0dG9uIH0gZnJvbSAnLi9kb25lLWJ1dHRvbic7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBTbGF0ZVByb3BUeXBlcyBmcm9tICdzbGF0ZS1wcm9wLXR5cGVzJztcblxuaW1wb3J0IHsgaGFzQmxvY2ssIGhhc01hcmsgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvc3R5bGVzJztcblxuaW1wb3J0IHsgQnV0dG9uLCBNYXJrQnV0dG9uIH0gZnJvbSAnLi90b29sYmFyLWJ1dHRvbnMnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcblxuY29uc3QgbG9nID0gZGVidWcoJ0BwaWUtbGliOmVkaXRhYmxlLWh0bWw6cGx1Z2luczp0b29sYmFyJyk7XG5cbmV4cG9ydCBjb25zdCBUb29sYmFyQnV0dG9uID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IG9uVG9nZ2xlID0gKCkgPT4ge1xuICAgIGNvbnN0IGMgPSBwcm9wcy5vblRvZ2dsZShwcm9wcy52YWx1ZS5jaGFuZ2UoKSwgcHJvcHMpO1xuXG4gICAgcHJvcHMub25DaGFuZ2UoYyk7XG4gIH07XG5cbiAgaWYgKHByb3BzLmlzTWFyaykge1xuICAgIGNvbnN0IGlzQWN0aXZlID0gaGFzTWFyayhwcm9wcy52YWx1ZSwgcHJvcHMudHlwZSk7XG4gICAgY29uc3QgZm5Ub0NhbGwgPVxuICAgICAgcHJvcHMudHlwZSA9PT0gJ2NzcycgPyAoKSA9PiBwcm9wcy5vbkNsaWNrKHByb3BzLnZhbHVlLCBwcm9wcy5vbkNoYW5nZSwgcHJvcHMuZ2V0Rm9jdXNlZFZhbHVlKSA6IG9uVG9nZ2xlO1xuXG4gICAgbG9nKCdbVG9vbGJhckJ1dHRvbl0gbWFyazppc0FjdGl2ZTogJywgaXNBY3RpdmUpO1xuXG4gICAgbGV0IGFyaWFMYWJlbDtcblxuICAgIGlmIChwcm9wcy50eXBlID09PSAnc3VwJykge1xuICAgICAgYXJpYUxhYmVsID0gJ1N1cGVyc2NyaXB0IChtYXJrcyB0ZXh0IGFzIHN1cGVyc2NyaXB0ZWQpJztcbiAgICB9IGVsc2UgaWYgKHByb3BzLnR5cGUgPT09ICdzdWInKSB7XG4gICAgICBhcmlhTGFiZWwgPSAnU3Vic2NyaXB0IChtYXJrcyB0ZXh0IGFzIHN1YnNjcmlwdGVkKSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFyaWFMYWJlbCA9IHByb3BzLnR5cGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxNYXJrQnV0dG9uIGFjdGl2ZT17aXNBY3RpdmV9IG9uVG9nZ2xlPXtmblRvQ2FsbH0gbWFyaz17cHJvcHMudHlwZX0gbGFiZWw9e2FyaWFMYWJlbH0+XG4gICAgICAgIHtwcm9wcy5pY29ufVxuICAgICAgPC9NYXJrQnV0dG9uPlxuICAgICk7XG4gIH1cblxuICBjb25zdCB7IGRpc2FibGVkIH0gPSBwcm9wcztcbiAgY29uc3QgaXNBY3RpdmUgPSBwcm9wcy5pc0FjdGl2ZSA/IHByb3BzLmlzQWN0aXZlKHByb3BzLnZhbHVlLCBwcm9wcy50eXBlKSA6IGhhc0Jsb2NrKHByb3BzLnZhbHVlLCBwcm9wcy50eXBlKTtcblxuICBsb2coJ1tUb29sYmFyQnV0dG9uXSBibG9jazppc0FjdGl2ZTogJywgaXNBY3RpdmUpO1xuICBjb25zdCBuZXdJY29uID0gUmVhY3QuY2xvbmVFbGVtZW50KHByb3BzLmljb24pO1xuXG4gIHJldHVybiAoXG4gICAgPEJ1dHRvblxuICAgICAgYXJpYUxhYmVsPXtwcm9wcy5hcmlhTGFiZWx9XG4gICAgICBhY3RpdmU9e2lzQWN0aXZlfVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgb25DbGljaz17KGV2ZW50KSA9PiBwcm9wcy5vbkNsaWNrKHByb3BzLnZhbHVlLCBwcm9wcy5vbkNoYW5nZSwgcHJvcHMuZ2V0Rm9jdXNlZFZhbHVlLCBldmVudCl9XG4gICAgICBleHRyYVN0eWxlcz17cHJvcHMuYnV0dG9uU3R5bGVzfVxuICAgID5cbiAgICAgIHtuZXdJY29ufVxuICAgIDwvQnV0dG9uPlxuICApO1xufTtcblxuVG9vbGJhckJ1dHRvbi5wcm9wVHlwZXMgPSB7XG4gIGJ1dHRvblN0eWxlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpY29uOiBQcm9wVHlwZXMuYW55LFxuICBpc0FjdGl2ZTogUHJvcFR5cGVzLmJvb2wsXG4gIGlzTWFyazogUHJvcFR5cGVzLmJvb2wsXG4gIGdldEZvY3VzZWRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uVG9nZ2xlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgdHlwZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgdmFsdWU6IFByb3BUeXBlcy5vYmplY3QsXG4gIGFyaWFMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbn07XG5cbmNvbnN0IGlzQWN0aXZlVG9vbGJhclBsdWdpbiA9IChwcm9wcykgPT4gKHBsdWdpbikgPT4ge1xuICBjb25zdCBpc0Rpc2FibGVkID0gKHByb3BzW3BsdWdpbi5uYW1lXSB8fCB7fSkuZGlzYWJsZWQ7XG5cbiAgcmV0dXJuIHBsdWdpbiAmJiBwbHVnaW4udG9vbGJhciAmJiAhaXNEaXNhYmxlZDtcbn07XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0VG9vbGJhciA9ICh7XG4gIHBsdWdpbnMsXG4gIHBsdWdpblByb3BzLFxuICB2YWx1ZSxcbiAgb25DaGFuZ2UsXG4gIGdldEZvY3VzZWRWYWx1ZSxcbiAgb25Eb25lLFxuICBjbGFzc2VzLFxuICBzaG93RG9uZSxcbiAgZGVsZXRhYmxlLFxuICBpc0h0bWxNb2RlLFxuICBkb25lQnV0dG9uUmVmLFxuICBvbkJsdXIsXG4gIG9uRm9jdXMsXG59KSA9PiB7XG4gIHBsdWdpblByb3BzID0ge1xuICAgIC8vIGRpc2FibGUgSFRNTCBwbHVnaW4gYnkgZGVmYXVsdCwgYXQgbGVhc3QgZm9yIG5vd1xuICAgIGh0bWw6IHsgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAuLi5wbHVnaW5Qcm9wcyxcbiAgfTtcbiAgbGV0IGZpbHRlcmVkO1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgZG9uZUJ1dHRvbkNsYXNzTmFtZSA9IGRvbmVCdXR0b25SZWY/LmN1cnJlbnQ/LmNsYXNzTmFtZTtcbiAgICBjb25zdCBpc1Jhd0RvbmVCdXR0b24gPSBkb25lQnV0dG9uQ2xhc3NOYW1lICYmIGV2ZW50LnRhcmdldD8uY2xvc2VzdChgW2NsYXNzKj1cIiR7ZG9uZUJ1dHRvbkNsYXNzTmFtZX1cIl1gKTtcblxuICAgIGlmIChvbkZvY3VzICYmICFpc1Jhd0RvbmVCdXR0b24pIHtcbiAgICAgIG9uRm9jdXMoZXZlbnQpO1xuICAgIH1cbiAgfTtcblxuICBpZiAoaXNIdG1sTW9kZSkge1xuICAgIGZpbHRlcmVkID0gcGx1Z2luc1xuICAgICAgLmZpbHRlcigocGx1Z2luKSA9PiB7XG4gICAgICAgIHJldHVybiBpc0FjdGl2ZVRvb2xiYXJQbHVnaW4ocGx1Z2luUHJvcHMpKHBsdWdpbikgJiYgKHBsdWdpbi5uYW1lID09PSAnY2hhcmFjdGVycycgfHwgcGx1Z2luLm5hbWUgPT09ICdodG1sJyk7XG4gICAgICB9KVxuICAgICAgLm1hcCgocCkgPT4gcC50b29sYmFyKTtcbiAgfSBlbHNlIHtcbiAgICBmaWx0ZXJlZCA9IHBsdWdpbnMuZmlsdGVyKGlzQWN0aXZlVG9vbGJhclBsdWdpbihwbHVnaW5Qcm9wcykpLm1hcCgocCkgPT4gcC50b29sYmFyKTtcbiAgfVxuXG4gIGNvbnN0IGlzTGlzdEFjdGl2ZSA9IHBsdWdpbnMuc29tZShcbiAgICAocGx1Z2luKSA9PlxuICAgICAgaXNBY3RpdmVUb29sYmFyUGx1Z2luKHBsdWdpblByb3BzKShwbHVnaW4pICYmXG4gICAgICBbJ3VsX2xpc3QnLCAnb2xfbGlzdCddLmluY2x1ZGVzKHBsdWdpbi5uYW1lKSAmJlxuICAgICAgcGx1Z2luLnRvb2xiYXIuaXNBY3RpdmUodmFsdWUsIHBsdWdpbi5uYW1lKSxcbiAgKTtcblxuICBjb25zdCBpc1RhYmxlQWN0aXZlID0gcGx1Z2lucy5zb21lKFxuICAgIChwbHVnaW4pID0+XG4gICAgICBpc0FjdGl2ZVRvb2xiYXJQbHVnaW4ocGx1Z2luUHJvcHMpKHBsdWdpbikgJiZcbiAgICAgIHBsdWdpbi5uYW1lID09PSAndGFibGUnICYmXG4gICAgICBwbHVnaW4udXRpbHMgJiZcbiAgICAgIHBsdWdpbi51dGlscy5pc1NlbGVjdGlvbkluVGFibGUgJiZcbiAgICAgIHBsdWdpbi51dGlscy5pc1NlbGVjdGlvbkluVGFibGUodmFsdWUpLFxuICApO1xuXG4gIGNvbnN0IGlzVG9vbGJhckJ1dHRvbkRpc2FibGVkID0gKHBsdWdpbikgPT4ge1xuICAgIGlmIChwbHVnaW4udHlwZSA9PT0gJ3RhYmxlJykge1xuICAgICAgcmV0dXJuIGlzTGlzdEFjdGl2ZTtcbiAgICB9IGVsc2UgaWYgKHBsdWdpbi50eXBlID09PSAndWxfbGlzdCcgfHwgcGx1Z2luLnR5cGUgPT09ICdvbF9saXN0Jykge1xuICAgICAgcmV0dXJuIGlzVGFibGVBY3RpdmU7XG4gICAgfVxuICAgIHJldHVybiBwbHVnaW4uZGlzYWJsZWQ7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5kZWZhdWx0VG9vbGJhcn0gb25Gb2N1cz17aGFuZGxlRm9jdXN9IHRhYkluZGV4PVwiMVwiIG9uQmx1cj17b25CbHVyfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmJ1dHRvbnNDb250YWluZXJ9PlxuICAgICAgICB7ZmlsdGVyZWQubWFwKChwLCBpbmRleCkgPT4ge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8VG9vbGJhckJ1dHRvblxuICAgICAgICAgICAgICB7Li4ucH1cbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgICAgIGdldEZvY3VzZWRWYWx1ZT17Z2V0Rm9jdXNlZFZhbHVlfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17aXNUb29sYmFyQnV0dG9uRGlzYWJsZWQocCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICk7XG4gICAgICAgIH0pfVxuICAgICAgPC9kaXY+XG4gICAgICB7c2hvd0RvbmUgJiYgIWRlbGV0YWJsZSAmJiA8RG9uZUJ1dHRvbiBkb25lQnV0dG9uUmVmPXtkb25lQnV0dG9uUmVmfSBvbkNsaWNrPXtvbkRvbmV9IC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuRGVmYXVsdFRvb2xiYXIucHJvcFR5cGVzID0ge1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHBsdWdpbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBwbHVnaW5Qcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgdmFsdWU6IFNsYXRlUHJvcFR5cGVzLnZhbHVlLmlzUmVxdWlyZWQsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBnZXRGb2N1c2VkVmFsdWU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uRG9uZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgc2hvd0RvbmU6IFByb3BUeXBlcy5ib29sLFxuICBhZGRBcmVhOiBQcm9wVHlwZXMuYm9vbCxcbiAgZGVsZXRhYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNIdG1sTW9kZTogUHJvcFR5cGVzLmJvb2wsXG4gIGRvbmVCdXR0b25SZWY6IFByb3BUeXBlcy5mdW5jLFxuICBvbkJsdXI6IFByb3BUeXBlcy5mdW5jLFxuICBvbkZvY3VzOiBQcm9wVHlwZXMuZnVuYyxcbn07XG5cbkRlZmF1bHRUb29sYmFyLmRlZmF1bHRQcm9wcyA9IHtcbiAgcGx1Z2luUHJvcHM6IHt9LFxufTtcblxuY29uc3QgdG9vbGJhclN0eWxlcyA9ICgpID0+ICh7XG4gIGRlZmF1bHRUb29sYmFyOiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgfSxcbiAgYnV0dG9uc0NvbnRhaW5lcjoge1xuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICB9LFxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhTdHlsZXModG9vbGJhclN0eWxlcykoRGVmYXVsdFRvb2xiYXIpO1xuIl19
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.RawDoneButton = exports.DoneButton = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
13
+
14
+ var _Check = _interopRequireDefault(require("@material-ui/icons/Check"));
15
+
16
+ var _styles = require("@material-ui/core/styles");
17
+
18
+ var _propTypes = _interopRequireDefault(require("prop-types"));
19
+
20
+ var RawDoneButton = function RawDoneButton(_ref) {
21
+ var classes = _ref.classes,
22
+ onClick = _ref.onClick,
23
+ doneButtonRef = _ref.doneButtonRef;
24
+ return /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
25
+ "aria-label": "Done",
26
+ className: classes.iconRoot,
27
+ buttonRef: doneButtonRef,
28
+ onClick: onClick,
29
+ classes: {
30
+ label: classes.label,
31
+ root: classes.iconRoot
32
+ }
33
+ }, /*#__PURE__*/_react["default"].createElement(_Check["default"], null));
34
+ };
35
+
36
+ exports.RawDoneButton = RawDoneButton;
37
+ RawDoneButton.propTypes = {
38
+ classes: _propTypes["default"].object.isRequired,
39
+ onClick: _propTypes["default"].func,
40
+ doneButtonRef: _propTypes["default"].func
41
+ };
42
+ var styles = {
43
+ iconRoot: {
44
+ verticalAlign: 'top',
45
+ width: '28px',
46
+ height: '28px',
47
+ color: 'var(--editable-html-toolbar-check, #00bb00)',
48
+ padding: '4px'
49
+ }
50
+ };
51
+ var DoneButton = (0, _styles.withStyles)(styles)(RawDoneButton);
52
+ exports.DoneButton = DoneButton;
53
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wbHVnaW5zL3Rvb2xiYXIvZG9uZS1idXR0b24uanN4Il0sIm5hbWVzIjpbIlJhd0RvbmVCdXR0b24iLCJjbGFzc2VzIiwib25DbGljayIsImRvbmVCdXR0b25SZWYiLCJpY29uUm9vdCIsImxhYmVsIiwicm9vdCIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJmdW5jIiwic3R5bGVzIiwidmVydGljYWxBbGlnbiIsIndpZHRoIiwiaGVpZ2h0IiwiY29sb3IiLCJwYWRkaW5nIiwiRG9uZUJ1dHRvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRU8sSUFBTUEsYUFBYSxHQUFHLFNBQWhCQSxhQUFnQjtBQUFBLE1BQUdDLE9BQUgsUUFBR0EsT0FBSDtBQUFBLE1BQVlDLE9BQVosUUFBWUEsT0FBWjtBQUFBLE1BQXFCQyxhQUFyQixRQUFxQkEsYUFBckI7QUFBQSxzQkFDM0IsZ0NBQUMsc0JBQUQ7QUFDRSxrQkFBVyxNQURiO0FBRUUsSUFBQSxTQUFTLEVBQUVGLE9BQU8sQ0FBQ0csUUFGckI7QUFHRSxJQUFBLFNBQVMsRUFBRUQsYUFIYjtBQUlFLElBQUEsT0FBTyxFQUFFRCxPQUpYO0FBS0UsSUFBQSxPQUFPLEVBQUU7QUFDUEcsTUFBQUEsS0FBSyxFQUFFSixPQUFPLENBQUNJLEtBRFI7QUFFUEMsTUFBQUEsSUFBSSxFQUFFTCxPQUFPLENBQUNHO0FBRlA7QUFMWCxrQkFVRSxnQ0FBQyxpQkFBRCxPQVZGLENBRDJCO0FBQUEsQ0FBdEI7OztBQWVQSixhQUFhLENBQUNPLFNBQWQsR0FBMEI7QUFDeEJOLEVBQUFBLE9BQU8sRUFBRU8sc0JBQVVDLE1BQVYsQ0FBaUJDLFVBREY7QUFFeEJSLEVBQUFBLE9BQU8sRUFBRU0sc0JBQVVHLElBRks7QUFHeEJSLEVBQUFBLGFBQWEsRUFBRUssc0JBQVVHO0FBSEQsQ0FBMUI7QUFNQSxJQUFNQyxNQUFNLEdBQUc7QUFDYlIsRUFBQUEsUUFBUSxFQUFFO0FBQ1JTLElBQUFBLGFBQWEsRUFBRSxLQURQO0FBRVJDLElBQUFBLEtBQUssRUFBRSxNQUZDO0FBR1JDLElBQUFBLE1BQU0sRUFBRSxNQUhBO0FBSVJDLElBQUFBLEtBQUssRUFBRSw2Q0FKQztBQUtSQyxJQUFBQSxPQUFPLEVBQUU7QUFMRDtBQURHLENBQWY7QUFTTyxJQUFNQyxVQUFVLEdBQUcsd0JBQVdOLE1BQVgsRUFBbUJaLGFBQW5CLENBQW5CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IEljb25CdXR0b24gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvSWNvbkJ1dHRvbic7XG5pbXBvcnQgQ2hlY2sgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0NoZWNrJztcbmltcG9ydCB7IHdpdGhTdHlsZXMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9zdHlsZXMnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcblxuZXhwb3J0IGNvbnN0IFJhd0RvbmVCdXR0b24gPSAoeyBjbGFzc2VzLCBvbkNsaWNrLCBkb25lQnV0dG9uUmVmIH0pID0+IChcbiAgPEljb25CdXR0b25cbiAgICBhcmlhLWxhYmVsPVwiRG9uZVwiXG4gICAgY2xhc3NOYW1lPXtjbGFzc2VzLmljb25Sb290fVxuICAgIGJ1dHRvblJlZj17ZG9uZUJ1dHRvblJlZn1cbiAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgIGNsYXNzZXM9e3tcbiAgICAgIGxhYmVsOiBjbGFzc2VzLmxhYmVsLFxuICAgICAgcm9vdDogY2xhc3Nlcy5pY29uUm9vdCxcbiAgICB9fVxuICA+XG4gICAgPENoZWNrIC8+XG4gIDwvSWNvbkJ1dHRvbj5cbik7XG5cblJhd0RvbmVCdXR0b24ucHJvcFR5cGVzID0ge1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBkb25lQnV0dG9uUmVmOiBQcm9wVHlwZXMuZnVuYyxcbn07XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgaWNvblJvb3Q6IHtcbiAgICB2ZXJ0aWNhbEFsaWduOiAndG9wJyxcbiAgICB3aWR0aDogJzI4cHgnLFxuICAgIGhlaWdodDogJzI4cHgnLFxuICAgIGNvbG9yOiAndmFyKC0tZWRpdGFibGUtaHRtbC10b29sYmFyLWNoZWNrLCAjMDBiYjAwKScsXG4gICAgcGFkZGluZzogJzRweCcsXG4gIH0sXG59O1xuZXhwb3J0IGNvbnN0IERvbmVCdXR0b24gPSB3aXRoU3R5bGVzKHN0eWxlcykoUmF3RG9uZUJ1dHRvbik7XG4iXX0=