@pie-lib/editable-html 11.1.1 → 11.3.0-beta.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 (194) hide show
  1. package/CHANGELOG.md +8 -4
  2. package/NEXT.CHANGELOG.json +1 -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 +349 -88
  9. package/lib/index.js +26 -10
  10. package/lib/parse-html.js +1 -1
  11. package/lib/plugins/characters/custom-popper.js +1 -1
  12. package/lib/plugins/characters/index.js +9 -4
  13. package/lib/plugins/characters/utils.js +13 -13
  14. package/lib/plugins/css/icons/index.js +37 -0
  15. package/lib/plugins/css/index.js +397 -0
  16. package/lib/plugins/customPlugin/index.js +114 -0
  17. package/lib/plugins/html/icons/index.js +1 -1
  18. package/lib/plugins/html/index.js +12 -8
  19. package/lib/plugins/image/__tests__/component.test.js +51 -0
  20. package/lib/plugins/image/__tests__/image-toolbar-logic.test.js +56 -0
  21. package/lib/plugins/image/__tests__/image-toolbar.test.js +26 -0
  22. package/lib/plugins/image/__tests__/index.test.js +98 -0
  23. package/lib/plugins/image/__tests__/insert-image-handler.test.js +125 -0
  24. package/lib/plugins/image/__tests__/mock-change.js +25 -0
  25. package/lib/plugins/image/alt-dialog.js +1 -1
  26. package/lib/plugins/image/component.js +1 -1
  27. package/lib/plugins/image/image-toolbar.js +1 -1
  28. package/lib/plugins/image/index.js +3 -2
  29. package/lib/plugins/image/insert-image-handler.js +14 -5
  30. package/lib/plugins/index.js +271 -12
  31. package/lib/plugins/list/__tests__/index.test.js +79 -0
  32. package/lib/plugins/list/index.js +131 -1
  33. package/lib/plugins/math/__tests__/index.test.js +300 -0
  34. package/lib/plugins/math/index.js +92 -57
  35. package/lib/plugins/media/__tests__/index.test.js +71 -0
  36. package/lib/plugins/media/index.js +6 -3
  37. package/lib/plugins/media/media-dialog.js +99 -58
  38. package/lib/plugins/media/media-toolbar.js +1 -1
  39. package/lib/plugins/media/media-wrapper.js +1 -1
  40. package/lib/plugins/rendering/index.js +46 -0
  41. package/lib/plugins/respArea/drag-in-the-blank/choice.js +6 -3
  42. package/lib/plugins/respArea/drag-in-the-blank/index.js +1 -1
  43. package/lib/plugins/respArea/explicit-constructed-response/index.js +12 -10
  44. package/lib/plugins/respArea/icons/index.js +1 -1
  45. package/lib/plugins/respArea/index.js +70 -22
  46. package/lib/plugins/respArea/inline-dropdown/index.js +11 -6
  47. package/lib/plugins/respArea/math-templated/index.js +130 -0
  48. package/lib/plugins/respArea/utils.js +17 -2
  49. package/lib/plugins/table/CustomTablePlugin.js +133 -0
  50. package/lib/plugins/table/__tests__/index.test.js +442 -0
  51. package/lib/plugins/table/__tests__/table-toolbar.test.js +54 -0
  52. package/lib/plugins/table/icons/index.js +1 -1
  53. package/lib/plugins/table/index.js +44 -60
  54. package/lib/plugins/table/table-toolbar.js +34 -5
  55. package/lib/plugins/textAlign/icons/index.js +226 -0
  56. package/lib/plugins/textAlign/index.js +34 -0
  57. package/lib/plugins/toolbar/__tests__/default-toolbar.test.js +128 -0
  58. package/lib/plugins/toolbar/__tests__/editor-and-toolbar.test.js +51 -0
  59. package/lib/plugins/toolbar/__tests__/toolbar-buttons.test.js +54 -0
  60. package/lib/plugins/toolbar/__tests__/toolbar.test.js +120 -0
  61. package/lib/plugins/toolbar/default-toolbar.js +83 -28
  62. package/lib/plugins/toolbar/done-button.js +6 -3
  63. package/lib/plugins/toolbar/editor-and-toolbar.js +19 -20
  64. package/lib/plugins/toolbar/index.js +1 -1
  65. package/lib/plugins/toolbar/toolbar-buttons.js +45 -12
  66. package/lib/plugins/toolbar/toolbar.js +36 -12
  67. package/lib/plugins/utils.js +1 -1
  68. package/lib/serialization.js +234 -45
  69. package/lib/theme.js +1 -1
  70. package/package.json +6 -6
  71. package/src/__tests__/editor.test.jsx +363 -0
  72. package/src/__tests__/serialization.test.js +291 -0
  73. package/src/__tests__/utils.js +36 -0
  74. package/src/block-tags.js +17 -0
  75. package/src/constants.js +7 -0
  76. package/src/editor.jsx +303 -49
  77. package/src/index.jsx +19 -10
  78. package/src/plugins/characters/index.jsx +11 -3
  79. package/src/plugins/characters/utils.js +12 -12
  80. package/src/plugins/css/icons/index.jsx +17 -0
  81. package/src/plugins/css/index.jsx +346 -0
  82. package/src/plugins/customPlugin/index.jsx +85 -0
  83. package/src/plugins/html/index.jsx +9 -6
  84. package/src/plugins/image/__tests__/__snapshots__/component.test.jsx.snap +51 -0
  85. package/src/plugins/image/__tests__/__snapshots__/image-toolbar-logic.test.jsx.snap +27 -0
  86. package/src/plugins/image/__tests__/__snapshots__/image-toolbar.test.jsx.snap +44 -0
  87. package/src/plugins/image/__tests__/component.test.jsx +41 -0
  88. package/src/plugins/image/__tests__/image-toolbar-logic.test.jsx +42 -0
  89. package/src/plugins/image/__tests__/image-toolbar.test.jsx +11 -0
  90. package/src/plugins/image/__tests__/index.test.js +95 -0
  91. package/src/plugins/image/__tests__/insert-image-handler.test.js +113 -0
  92. package/src/plugins/image/__tests__/mock-change.js +15 -0
  93. package/src/plugins/image/index.jsx +2 -1
  94. package/src/plugins/image/insert-image-handler.js +13 -6
  95. package/src/plugins/index.jsx +248 -5
  96. package/src/plugins/list/__tests__/index.test.js +54 -0
  97. package/src/plugins/list/index.jsx +130 -0
  98. package/src/plugins/math/__tests__/__snapshots__/index.test.jsx.snap +48 -0
  99. package/src/plugins/math/__tests__/index.test.jsx +245 -0
  100. package/src/plugins/math/index.jsx +87 -56
  101. package/src/plugins/media/__tests__/index.test.js +75 -0
  102. package/src/plugins/media/index.jsx +3 -2
  103. package/src/plugins/media/media-dialog.js +106 -57
  104. package/src/plugins/rendering/index.js +31 -0
  105. package/src/plugins/respArea/drag-in-the-blank/choice.jsx +4 -1
  106. package/src/plugins/respArea/explicit-constructed-response/index.jsx +10 -8
  107. package/src/plugins/respArea/index.jsx +53 -7
  108. package/src/plugins/respArea/inline-dropdown/index.jsx +13 -6
  109. package/src/plugins/respArea/math-templated/index.jsx +104 -0
  110. package/src/plugins/respArea/utils.jsx +11 -0
  111. package/src/plugins/table/CustomTablePlugin.js +113 -0
  112. package/src/plugins/table/__tests__/__snapshots__/table-toolbar.test.jsx.snap +44 -0
  113. package/src/plugins/table/__tests__/index.test.jsx +401 -0
  114. package/src/plugins/table/__tests__/table-toolbar.test.jsx +42 -0
  115. package/src/plugins/table/index.jsx +46 -59
  116. package/src/plugins/table/table-toolbar.jsx +39 -2
  117. package/src/plugins/textAlign/icons/index.jsx +139 -0
  118. package/src/plugins/textAlign/index.jsx +23 -0
  119. package/src/plugins/toolbar/__tests__/__snapshots__/default-toolbar.test.jsx.snap +923 -0
  120. package/src/plugins/toolbar/__tests__/__snapshots__/editor-and-toolbar.test.jsx.snap +20 -0
  121. package/src/plugins/toolbar/__tests__/__snapshots__/toolbar-buttons.test.jsx.snap +36 -0
  122. package/src/plugins/toolbar/__tests__/__snapshots__/toolbar.test.jsx.snap +46 -0
  123. package/src/plugins/toolbar/__tests__/default-toolbar.test.jsx +94 -0
  124. package/src/plugins/toolbar/__tests__/editor-and-toolbar.test.jsx +37 -0
  125. package/src/plugins/toolbar/__tests__/toolbar-buttons.test.jsx +51 -0
  126. package/src/plugins/toolbar/__tests__/toolbar.test.jsx +106 -0
  127. package/src/plugins/toolbar/default-toolbar.jsx +80 -20
  128. package/src/plugins/toolbar/done-button.jsx +3 -1
  129. package/src/plugins/toolbar/editor-and-toolbar.jsx +18 -13
  130. package/src/plugins/toolbar/toolbar-buttons.jsx +52 -11
  131. package/src/plugins/toolbar/toolbar.jsx +31 -8
  132. package/src/serialization.jsx +213 -38
  133. package/README.md +0 -45
  134. package/deploy.sh +0 -16
  135. package/lib/editor.js.map +0 -1
  136. package/lib/index.js.map +0 -1
  137. package/lib/parse-html.js.map +0 -1
  138. package/lib/plugins/characters/custom-popper.js.map +0 -1
  139. package/lib/plugins/characters/index.js.map +0 -1
  140. package/lib/plugins/characters/utils.js.map +0 -1
  141. package/lib/plugins/html/icons/index.js.map +0 -1
  142. package/lib/plugins/html/index.js.map +0 -1
  143. package/lib/plugins/image/alt-dialog.js.map +0 -1
  144. package/lib/plugins/image/component.js.map +0 -1
  145. package/lib/plugins/image/image-toolbar.js.map +0 -1
  146. package/lib/plugins/image/index.js.map +0 -1
  147. package/lib/plugins/image/insert-image-handler.js.map +0 -1
  148. package/lib/plugins/index.js.map +0 -1
  149. package/lib/plugins/list/index.js.map +0 -1
  150. package/lib/plugins/math/index.js.map +0 -1
  151. package/lib/plugins/media/index.js.map +0 -1
  152. package/lib/plugins/media/media-dialog.js.map +0 -1
  153. package/lib/plugins/media/media-toolbar.js.map +0 -1
  154. package/lib/plugins/media/media-wrapper.js.map +0 -1
  155. package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +0 -1
  156. package/lib/plugins/respArea/drag-in-the-blank/index.js.map +0 -1
  157. package/lib/plugins/respArea/explicit-constructed-response/index.js.map +0 -1
  158. package/lib/plugins/respArea/icons/index.js.map +0 -1
  159. package/lib/plugins/respArea/index.js.map +0 -1
  160. package/lib/plugins/respArea/inline-dropdown/index.js.map +0 -1
  161. package/lib/plugins/respArea/utils.js.map +0 -1
  162. package/lib/plugins/table/icons/index.js.map +0 -1
  163. package/lib/plugins/table/index.js.map +0 -1
  164. package/lib/plugins/table/table-toolbar.js.map +0 -1
  165. package/lib/plugins/toolbar/default-toolbar.js.map +0 -1
  166. package/lib/plugins/toolbar/done-button.js.map +0 -1
  167. package/lib/plugins/toolbar/editor-and-toolbar.js.map +0 -1
  168. package/lib/plugins/toolbar/index.js.map +0 -1
  169. package/lib/plugins/toolbar/toolbar-buttons.js.map +0 -1
  170. package/lib/plugins/toolbar/toolbar.js.map +0 -1
  171. package/lib/plugins/utils.js.map +0 -1
  172. package/lib/serialization.js.map +0 -1
  173. package/lib/theme.js.map +0 -1
  174. package/playground/image/data.js +0 -59
  175. package/playground/image/index.html +0 -22
  176. package/playground/image/index.jsx +0 -81
  177. package/playground/index.html +0 -25
  178. package/playground/mathquill/index.html +0 -22
  179. package/playground/mathquill/index.jsx +0 -155
  180. package/playground/package.json +0 -15
  181. package/playground/prod-test/index.html +0 -22
  182. package/playground/prod-test/index.jsx +0 -28
  183. package/playground/schema-override/data.js +0 -29
  184. package/playground/schema-override/image-plugin.jsx +0 -41
  185. package/playground/schema-override/index.html +0 -21
  186. package/playground/schema-override/index.jsx +0 -97
  187. package/playground/serialization/data.js +0 -29
  188. package/playground/serialization/image-plugin.jsx +0 -41
  189. package/playground/serialization/index.html +0 -22
  190. package/playground/serialization/index.jsx +0 -12
  191. package/playground/static.json +0 -3
  192. package/playground/table-examples.html +0 -70
  193. package/playground/webpack.config.js +0 -42
  194. package/static.json +0 -1
@@ -0,0 +1,34 @@
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"] = TextAlign;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _debug = _interopRequireDefault(require("debug"));
13
+
14
+ var _icons = _interopRequireDefault(require("./icons"));
15
+
16
+ var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:characters');
17
+ /**
18
+ * Plugin in order to be able to change alignment for the selected text(s) element(s).
19
+ * @param opts
20
+ * @constructor
21
+ */
22
+
23
+ function TextAlign(opts) {
24
+ var plugin = {
25
+ name: 'textAlign',
26
+ toolbar: {
27
+ icon: /*#__PURE__*/_react["default"].createElement(_icons["default"], opts),
28
+ ariaLabel: 'Text Align',
29
+ onClick: function onClick() {}
30
+ }
31
+ };
32
+ return plugin;
33
+ }
34
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wbHVnaW5zL3RleHRBbGlnbi9pbmRleC5qc3giXSwibmFtZXMiOlsibG9nIiwiVGV4dEFsaWduIiwib3B0cyIsInBsdWdpbiIsIm5hbWUiLCJ0b29sYmFyIiwiaWNvbiIsImFyaWFMYWJlbCIsIm9uQ2xpY2siXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBLElBQU1BLEdBQUcsR0FBRyx1QkFBTSwyQ0FBTixDQUFaO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDZSxTQUFTQyxTQUFULENBQW1CQyxJQUFuQixFQUF5QjtBQUN0QyxNQUFNQyxNQUFNLEdBQUc7QUFDYkMsSUFBQUEsSUFBSSxFQUFFLFdBRE87QUFFYkMsSUFBQUEsT0FBTyxFQUFFO0FBQ1BDLE1BQUFBLElBQUksZUFBRSxnQ0FBQyxpQkFBRCxFQUFtQkosSUFBbkIsQ0FEQztBQUVQSyxNQUFBQSxTQUFTLEVBQUUsWUFGSjtBQUdQQyxNQUFBQSxPQUFPLEVBQUUsbUJBQU0sQ0FBRTtBQUhWO0FBRkksR0FBZjtBQVNBLFNBQU9MLE1BQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFRleHRBbGlnbkljb24gZnJvbSAnLi9pY29ucyc7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdAcGllLWxpYjplZGl0YWJsZS1odG1sOnBsdWdpbnM6Y2hhcmFjdGVycycpO1xuXG4vKipcbiAqIFBsdWdpbiBpbiBvcmRlciB0byBiZSBhYmxlIHRvIGNoYW5nZSBhbGlnbm1lbnQgZm9yIHRoZSBzZWxlY3RlZCB0ZXh0KHMpIGVsZW1lbnQocykuXG4gKiBAcGFyYW0gb3B0c1xuICogQGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFRleHRBbGlnbihvcHRzKSB7XG4gIGNvbnN0IHBsdWdpbiA9IHtcbiAgICBuYW1lOiAndGV4dEFsaWduJyxcbiAgICB0b29sYmFyOiB7XG4gICAgICBpY29uOiA8VGV4dEFsaWduSWNvbiB7Li4ub3B0c30gLz4sXG4gICAgICBhcmlhTGFiZWw6ICdUZXh0IEFsaWduJyxcbiAgICAgIG9uQ2xpY2s6ICgpID0+IHt9LFxuICAgIH0sXG4gIH07XG5cbiAgcmV0dXJuIHBsdWdpbjtcbn1cbiJdfQ==
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
+
7
+ var _utils = require("../../../__tests__/utils");
8
+
9
+ var _enzyme = require("enzyme");
10
+
11
+ var _react = _interopRequireDefault(require("react"));
12
+
13
+ var _slate = require("slate");
14
+
15
+ var _defaultToolbar = require("../default-toolbar");
16
+
17
+ var _doneButton = require("../done-button");
18
+
19
+ var _debug = _interopRequireDefault(require("debug"));
20
+
21
+ var _reactTestRenderer = _interopRequireDefault(require("react-test-renderer"));
22
+
23
+ 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; }
24
+
25
+ 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; }
26
+
27
+ (0, _utils.mockMathInput)();
28
+ jest.mock('@material-ui/core/IconButton', function () {
29
+ return function (props) {
30
+ return /*#__PURE__*/_react["default"].createElement("div", {
31
+ className: props.className,
32
+ style: props.style,
33
+ ariaLabel: props['aria-label']
34
+ });
35
+ };
36
+ });
37
+
38
+ var node = _slate.Inline.fromJSON({
39
+ type: 'i'
40
+ });
41
+
42
+ var value;
43
+ var log = (0, _debug["default"])('@pie-lib:editable-html:test:toolbar');
44
+ describe('default-toolbar', function () {
45
+ var w;
46
+ var onDone = jest.fn();
47
+ var onChange = jest.fn();
48
+
49
+ var wrapper = function wrapper(extras) {
50
+ var defaults = {
51
+ classes: {},
52
+ value: _slate.Value.fromJSON({}),
53
+ plugins: [],
54
+ className: 'className',
55
+ onDone: onDone,
56
+ onChange: onChange,
57
+ deletable: false,
58
+ showDone: true
59
+ };
60
+
61
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
62
+
63
+ return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_defaultToolbar.DefaultToolbar, props));
64
+ };
65
+
66
+ describe('snapshot', function () {
67
+ it('renders', function () {
68
+ expect(w).toMatchSnapshot();
69
+ });
70
+ it('renders 1 plugins', function () {
71
+ w = wrapper({
72
+ plugins: [{
73
+ toolbar: {},
74
+ name: 'plugin-one'
75
+ }]
76
+ });
77
+ expect(w).toMatchSnapshot();
78
+ expect(w.find(_defaultToolbar.ToolbarButton)).toHaveLength(1);
79
+ });
80
+ it('renders 2 plugins', function () {
81
+ w = wrapper({
82
+ plugins: [{
83
+ toolbar: {},
84
+ name: 'plugin-one'
85
+ }, {
86
+ toolbar: {},
87
+ name: 'plugin-two'
88
+ }]
89
+ });
90
+ expect(w).toMatchSnapshot();
91
+ expect(w.find(_defaultToolbar.ToolbarButton)).toHaveLength(2);
92
+ });
93
+ it('renders 1 plugins, 1 is disabled', function () {
94
+ w = wrapper({
95
+ pluginProps: {
96
+ 'plugin-one': {
97
+ disabled: true
98
+ }
99
+ },
100
+ plugins: [{
101
+ toolbar: {},
102
+ name: 'plugin-one'
103
+ }, {
104
+ toolbar: {},
105
+ name: 'plugin-two'
106
+ }]
107
+ });
108
+ expect(w).toMatchSnapshot();
109
+ expect(w.find(_defaultToolbar.ToolbarButton)).toHaveLength(1);
110
+ });
111
+ it('renders without done button', function () {
112
+ w = wrapper({
113
+ deletable: false
114
+ });
115
+ expect(w).toMatchSnapshot();
116
+ expect(w.find(_doneButton.DoneButton)).toHaveLength(1);
117
+ });
118
+ it('renders with done button', function () {
119
+ w = wrapper({
120
+ deletable: true
121
+ });
122
+ expect(w).toMatchSnapshot();
123
+ expect(w.find(_doneButton.DoneButton)).toHaveLength(0);
124
+ });
125
+ });
126
+ describe('logic', function () {});
127
+ });
128
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wbHVnaW5zL3Rvb2xiYXIvX190ZXN0c19fL2RlZmF1bHQtdG9vbGJhci50ZXN0LmpzeCJdLCJuYW1lcyI6WyJqZXN0IiwibW9jayIsInByb3BzIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJub2RlIiwiSW5saW5lIiwiZnJvbUpTT04iLCJ0eXBlIiwidmFsdWUiLCJsb2ciLCJkZXNjcmliZSIsInciLCJvbkRvbmUiLCJmbiIsIm9uQ2hhbmdlIiwid3JhcHBlciIsImV4dHJhcyIsImRlZmF1bHRzIiwiY2xhc3NlcyIsIlZhbHVlIiwicGx1Z2lucyIsImRlbGV0YWJsZSIsInNob3dEb25lIiwiaXQiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiLCJ0b29sYmFyIiwibmFtZSIsImZpbmQiLCJUb29sYmFyQnV0dG9uIiwidG9IYXZlTGVuZ3RoIiwicGx1Z2luUHJvcHMiLCJkaXNhYmxlZCIsIkRvbmVCdXR0b24iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQTtBQUVBQSxJQUFJLENBQUNDLElBQUwsQ0FBVSw4QkFBVixFQUEwQyxZQUFNO0FBQzlDLFNBQU8sVUFBQ0MsS0FBRDtBQUFBLHdCQUFXO0FBQUssTUFBQSxTQUFTLEVBQUVBLEtBQUssQ0FBQ0MsU0FBdEI7QUFBaUMsTUFBQSxLQUFLLEVBQUVELEtBQUssQ0FBQ0UsS0FBOUM7QUFBcUQsTUFBQSxTQUFTLEVBQUVGLEtBQUssQ0FBQyxZQUFEO0FBQXJFLE1BQVg7QUFBQSxHQUFQO0FBQ0QsQ0FGRDs7QUFJQSxJQUFJRyxJQUFJLEdBQUdDLGNBQU9DLFFBQVAsQ0FBZ0I7QUFBRUMsRUFBQUEsSUFBSSxFQUFFO0FBQVIsQ0FBaEIsQ0FBWDs7QUFDQSxJQUFJQyxLQUFKO0FBQ0EsSUFBTUMsR0FBRyxHQUFHLHVCQUFNLHFDQUFOLENBQVo7QUFFQUMsUUFBUSxDQUFDLGlCQUFELEVBQW9CLFlB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QyxZQUE5QixDQUEyQyxDQUEzQztBQUNELEtBZEMsQ0FBRjtBQWVBUCxJQUFBQSxFQUFFLENBQUMsNkJBQUQsRUFBZ0MsWUFBTTtBQUN0Q1osTUFBQUEsQ0FBQyxHQUFHSSxPQUFPLENBQUM7QUFDVk0sUUFBQUEsU0FBUyxFQUFFO0FBREQsT0FBRCxDQUFYO0FBSUFHLE1BQUFBLE1BQU0sQ0FBQ2IsQ0FBRCxDQUFOLENBQVVjLGVBQVY7QUFDQUQsTUFBQUEsTUFBTSxDQUFDYixDQUFDLENBQUNpQixJQUFGLENBQU9LLHNCQUFQLENBQUQsQ0FBTixDQUEyQkgsWUFBM0IsQ0FBd0MsQ0FBeEM7QUFDRCxLQVBDLENBQUY7QUFRQVAsSUFBQUEsRUFBRSxDQUFDLDBCQUFELEVBQTZCLFlBQU07QUFDbkNaLE1BQUFBLENBQUMsR0FBR0ksT0FBTyxDQUFDO0FBQ1ZNLFFBQUFBLFNBQVMsRUFBRTtBQURELE9BQUQsQ0FBWDtBQUlBRyxNQUFBQSxNQUFNLENBQUNiLENBQUQsQ0FBTixDQUFVYyxlQUFWO0FBQ0FELE1BQUFBLE1BQU0sQ0FBQ2IsQ0FBQyxDQUFDaUIsSUFBRixDQUFPSyxzQkFBUCxDQUFELENBQU4sQ0FBMkJILFlBQTNCLENBQXdDLENBQXhDO0FBQ0QsS0FQQyxDQUFGO0FBUUQsR0FwRE8sQ0FBUjtBQXFEQXBCLEVBQUFBLFFBQVEsQ0FBQyxPQUFELEVBQVUsWUFBTSxDQUFFLENBQWxCLENBQVI7QUFDRCxDQXpFTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2xhc3NPYmplY3QsIG1vY2tJY29uQnV0dG9uLCBtb2NrTWF0aElucHV0IH0gZnJvbSAnLi4vLi4vLi4vX190ZXN0c19fL3V0aWxzJztcbmltcG9ydCB7IHNoYWxsb3cgfSBmcm9tICdlbnp5bWUnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgRGF0YSwgVmFsdWUsIElubGluZSB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IERlZmF1bHRUb29sYmFyLCBUb29sYmFyQnV0dG9uIH0gZnJvbSAnLi4vZGVmYXVsdC10b29sYmFyJztcbmltcG9ydCB7IERvbmVCdXR0b24gfSBmcm9tICcuLi9kb25lLWJ1dHRvbic7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHJlbmRlcmVyIGZyb20gJ3JlYWN0LXRlc3QtcmVuZGVyZXInO1xuXG5tb2NrTWF0aElucHV0KCk7XG5cbmplc3QubW9jaygnQG1hdGVyaWFsLXVpL2NvcmUvSWNvbkJ1dHRvbicsICgpID0+IHtcbiAgcmV0dXJuIChwcm9wcykgPT4gPGRpdiBjbGFzc05hbWU9e3Byb3BzLmNsYXNzTmFtZX0gc3R5bGU9e3Byb3BzLnN0eWxlfSBhcmlhTGFiZWw9e3Byb3BzWydhcmlhLWxhYmVsJ119IC8+O1xufSk7XG5cbmxldCBub2RlID0gSW5saW5lLmZyb21KU09OKHsgdHlwZTogJ2knIH0pO1xubGV0IHZhbHVlO1xuY29uc3QgbG9nID0gZGVidWcoJ0BwaWUtbGliOmVkaXRhYmxlLWh0bWw6dGVzdDp0b29sYmFyJyk7XG5cbmRlc2NyaWJlKCdkZWZhdWx0LXRvb2xiYXInLCAoKSA9PiB7XG4gIGxldCB3O1xuICBsZXQgb25Eb25lID0gamVzdC5mbigpO1xuICBsZXQgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG4gIGNvbnN0IHdyYXBwZXIgPSAoZXh0cmFzKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBjbGFzc2VzOiB7fSxcbiAgICAgIHZhbHVlOiBWYWx1ZS5mcm9tSlNPTih7fSksXG4gICAgICBwbHVnaW5zOiBbXSxcbiAgICAgIGNsYXNzTmFtZTogJ2NsYXNzTmFtZScsXG4gICAgICBvbkRvbmUsXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIGRlbGV0YWJsZTogZmFsc2UsXG4gICAgICBzaG93RG9uZTogdHJ1ZSxcbiAgICB9O1xuICAgIGNvbnN0IHByb3BzID0geyAuLi5kZWZhdWx0cywgLi4uZXh0cmFzIH07XG4gICAgcmV0dXJuIHNoYWxsb3coPERlZmF1bHRUb29sYmFyIHsuLi5wcm9wc30gLz4pO1xuICB9O1xuXG4gIGRlc2NyaWJlKCdzbmFwc2hvdCcsICgpID0+IHtcbiAgICBpdCgncmVuZGVycycsICgpID0+IHtcbiAgICAgIGV4cGVjdCh3KS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcbiAgICBpdCgncmVuZGVycyAxIHBsdWdpbnMnLCAoKSA9PiB7XG4gICAgICB3ID0gd3JhcHBlcih7XG4gICAgICAgIHBsdWdpbnM6IFt7IHRvb2xiYXI6IHt9LCBuYW1lOiAncGx1Z2luLW9uZScgfV0sXG4gICAgICB9KTtcbiAgICAgIGV4cGVjdCh3KS50b01hdGNoU25hcHNob3QoKTtcbiAgICAgIGV4cGVjdCh3LmZpbmQoVG9vbGJhckJ1dHRvbikpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgICB9KTtcbiAgICBpdCgncmVuZGVycyAyIHBsdWdpbnMnLCAoKSA9PiB7XG4gICAgICB3ID0gd3JhcHBlcih7XG4gICAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgICB7IHRvb2xiYXI6IHt9LCBuYW1lOiAncGx1Z2luLW9uZScgfSxcbiAgICAgICAgICB7IHRvb2xiYXI6IHt9LCBuYW1lOiAncGx1Z2luLXR3bycgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgICAgZXhwZWN0KHcpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgICAgZXhwZWN0KHcuZmluZChUb29sYmFyQnV0dG9uKSkudG9IYXZlTGVuZ3RoKDIpO1xuICAgIH0pO1xuICAgIGl0KCdyZW5kZXJzIDEgcGx1Z2lucywgMSBpcyBkaXNhYmxlZCcsICgpID0+IHtcbiAgICAgIHcgPSB3cmFwcGVyKHtcbiAgICAgICAgcGx1Z2luUHJvcHM6IHtcbiAgICAgICAgICAncGx1Z2luLW9uZSc6IHtcbiAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgICB7IHRvb2xiYXI6IHt9LCBuYW1lOiAncGx1Z2luLW9uZScgfSxcbiAgICAgICAgICB7IHRvb2xiYXI6IHt9LCBuYW1lOiAncGx1Z2luLXR3bycgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgICAgZXhwZWN0KHcpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgICAgZXhwZWN0KHcuZmluZChUb29sYmFyQnV0dG9uKSkudG9IYXZlTGVuZ3RoKDEpO1xuICAgIH0pO1xuICAgIGl0KCdyZW5kZXJzIHdpdGhvdXQgZG9uZSBidXR0b24nLCAoKSA9PiB7XG4gICAgICB3ID0gd3JhcHBlcih7XG4gICAgICAgIGRlbGV0YWJsZTogZmFsc2UsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHcpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgICAgZXhwZWN0KHcuZmluZChEb25lQnV0dG9uKSkudG9IYXZlTGVuZ3RoKDEpO1xuICAgIH0pO1xuICAgIGl0KCdyZW5kZXJzIHdpdGggZG9uZSBidXR0b24nLCAoKSA9PiB7XG4gICAgICB3ID0gd3JhcHBlcih7XG4gICAgICAgIGRlbGV0YWJsZTogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QodykudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgICBleHBlY3Qody5maW5kKERvbmVCdXR0b24pKS50b0hhdmVMZW5ndGgoMCk7XG4gICAgfSk7XG4gIH0pO1xuICBkZXNjcmliZSgnbG9naWMnLCAoKSA9PiB7fSk7XG59KTtcbiJdfQ==
@@ -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==
@@ -27,8 +27,6 @@ var _toolbarButtons = require("./toolbar-buttons");
27
27
 
28
28
  var _debug = _interopRequireDefault(require("debug"));
29
29
 
30
- var _immutable = require("immutable");
31
-
32
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; }
33
31
 
34
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; }
@@ -42,29 +40,45 @@ var ToolbarButton = function ToolbarButton(props) {
42
40
  };
43
41
 
44
42
  if (props.isMark) {
45
- var isActive = (0, _utils.hasMark)(props.value, props.type);
46
- log('[ToolbarButton] mark:isActive: ', isActive);
47
- return /*#__PURE__*/_react["default"].createElement(_toolbarButtons.MarkButton, {
48
- active: isActive,
49
- label: props.type,
50
- onToggle: onToggle,
51
- mark: props.type
52
- }, props.icon);
53
- } else {
54
- var disabled = props.disabled;
55
-
56
- var _isActive = props.isActive ? props.isActive(props.value, props.type) : (0, _utils.hasBlock)(props.value, props.type);
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
+ }
57
58
 
58
- log('[ToolbarButton] block:isActive: ', _isActive);
59
- return /*#__PURE__*/_react["default"].createElement(_toolbarButtons.Button, {
59
+ return /*#__PURE__*/_react["default"].createElement(_toolbarButtons.MarkButton, {
60
60
  active: _isActive,
61
- disabled: disabled,
62
- onClick: function onClick() {
63
- return props.onClick(props.value, props.onChange, props.getFocusedValue);
64
- },
65
- extraStyles: props.buttonStyles
61
+ onToggle: fnToCall,
62
+ mark: props.type,
63
+ label: ariaLabel
66
64
  }, props.icon);
67
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);
68
82
  };
69
83
 
70
84
  exports.ToolbarButton = ToolbarButton;
@@ -79,7 +93,8 @@ ToolbarButton.propTypes = {
79
93
  onChange: _propTypes["default"].func,
80
94
  onClick: _propTypes["default"].func,
81
95
  type: _propTypes["default"].string,
82
- value: _propTypes["default"].object
96
+ value: _propTypes["default"].object,
97
+ ariaLabel: _propTypes["default"].string
83
98
  };
84
99
 
85
100
  var isActiveToolbarPlugin = function isActiveToolbarPlugin(props) {
@@ -99,7 +114,10 @@ var DefaultToolbar = function DefaultToolbar(_ref) {
99
114
  classes = _ref.classes,
100
115
  showDone = _ref.showDone,
101
116
  deletable = _ref.deletable,
102
- isHtmlMode = _ref.isHtmlMode;
117
+ isHtmlMode = _ref.isHtmlMode,
118
+ doneButtonRef = _ref.doneButtonRef,
119
+ onBlur = _ref.onBlur,
120
+ onFocus = _ref.onFocus;
103
121
  pluginProps = _objectSpread({
104
122
  // disable HTML plugin by default, at least for now
105
123
  html: {
@@ -108,6 +126,17 @@ var DefaultToolbar = function DefaultToolbar(_ref) {
108
126
  }, pluginProps);
109
127
  var filtered;
110
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
+
111
140
  if (isHtmlMode) {
112
141
  filtered = plugins.filter(function (plugin) {
113
142
  return isActiveToolbarPlugin(pluginProps)(plugin) && (plugin.name === 'characters' || plugin.name === 'html');
@@ -120,8 +149,28 @@ var DefaultToolbar = function DefaultToolbar(_ref) {
120
149
  });
121
150
  }
122
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
+
123
169
  return /*#__PURE__*/_react["default"].createElement("div", {
124
- className: classes.defaultToolbar
170
+ className: classes.defaultToolbar,
171
+ onFocus: handleFocus,
172
+ tabIndex: "1",
173
+ onBlur: onBlur
125
174
  }, /*#__PURE__*/_react["default"].createElement("div", {
126
175
  className: classes.buttonsContainer
127
176
  }, filtered.map(function (p, index) {
@@ -129,9 +178,11 @@ var DefaultToolbar = function DefaultToolbar(_ref) {
129
178
  key: index,
130
179
  value: value,
131
180
  onChange: onChange,
132
- getFocusedValue: getFocusedValue
181
+ getFocusedValue: getFocusedValue,
182
+ disabled: isToolbarButtonDisabled(p)
133
183
  }));
134
- })), showDone && !deletable && !isHtmlMode && /*#__PURE__*/_react["default"].createElement(_doneButton.DoneButton, {
184
+ })), showDone && !deletable && /*#__PURE__*/_react["default"].createElement(_doneButton.DoneButton, {
185
+ doneButtonRef: doneButtonRef,
135
186
  onClick: onDone
136
187
  }));
137
188
  };
@@ -147,7 +198,11 @@ DefaultToolbar.propTypes = {
147
198
  onDone: _propTypes["default"].func.isRequired,
148
199
  showDone: _propTypes["default"].bool,
149
200
  addArea: _propTypes["default"].bool,
150
- deletable: _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
151
206
  };
152
207
  DefaultToolbar.defaultProps = {
153
208
  pluginProps: {}
@@ -171,4 +226,4 @@ var toolbarStyles = function toolbarStyles() {
171
226
  var _default = (0, _styles.withStyles)(toolbarStyles)(DefaultToolbar);
172
227
 
173
228
  exports["default"] = _default;
174
- //# sourceMappingURL=default-toolbar.js.map
229
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wbHVnaW5zL3Rvb2xiYXIvZGVmYXVsdC10b29sYmFyLmpzeCJdLCJuYW1lcyI6WyJsb2ciLCJUb29sYmFyQnV0dG9uIiwicHJvcHMiLCJvblRvZ2dsZSIsImMiLCJ2YWx1ZSIsImNoYW5nZSIsIm9uQ2hhbmdlIiwiaXNNYXJrIiwiaXNBY3RpdmUiLCJ0eXBlIiwiZm5Ub0NhbGwiLCJvbkNsaWNrIiwiZ2V0Rm9jdXNlZFZhbHVlIiwiYXJpYUxhYmVsIiwiaWNvbiIsImRpc2FibGVkIiwibmV3SWNvbiIsIlJlYWN0IiwiY2xvbmVFbGVtZW50IiwiZXZlbnQiLCJidXR0b25TdHlsZXMiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJvYmplY3QiLCJib29sIiwiYW55IiwiZnVuYyIsInN0cmluZyIsImlzQWN0aXZlVG9vbGJhclBsdWdpbiIsInBsdWdpbiIsImlzRGlzYWJsZWQiLCJuYW1lIiwidG9vbGJhciIsIkRlZmF1bHRUb29sYmFyIiwicGx1Z2lucyIsInBsdWdpblByb3BzIiwib25Eb25lIiwiY2xhc3NlcyIsInNob3dEb25lIiwiZGVsZXRhYmxlIiwiaXNIdG1sTW9kZSIsImRvbmVCdXR0b25SZWYiLCJvbkJsdXIiLCJvbkZvY3VzIiwiaHRtbCIsImZpbHRlcmVkIiwiaGFuZGxlRm9jdXMiLCJkb25lQnV0dG9uQ2xhc3NOYW1lIiwiY3VycmVudCIsImNsYXNzTmFtZSIsImlzUmF3RG9uZUJ1dHRvbiIsInRhcmdldCIsImNsb3Nlc3QiLCJmaWx0ZXIiLCJtYXAiLCJwIiwiaXNMaXN0QWN0aXZlIiwic29tZSIsImluY2x1ZGVzIiwiaXNUYWJsZUFjdGl2ZSIsInV0aWxzIiwiaXNTZWxlY3Rpb25JblRhYmxlIiwiaXNUb29sYmFyQnV0dG9uRGlzYWJsZWQiLCJkZWZhdWx0VG9vbGJhciIsImJ1dHRvbnNDb250YWluZXIiLCJpbmRleCIsImlzUmVxdWlyZWQiLCJhcnJheSIsIlNsYXRlUHJvcFR5cGVzIiwiYWRkQXJlYSIsImRlZmF1bHRQcm9wcyIsInRvb2xiYXJTdHlsZXMiLCJkaXNwbGF5Iiwid2lkdGgiLCJqdXN0aWZ5Q29udGVudCIsImFsaWduSXRlbXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFFQTs7QUFDQTs7Ozs7O0FBRUEsSUFBTUEsR0FBRyxHQUFHLHVCQUFNLHdDQUFOLENBQVo7O0FBRU8sSUFBTUMsYUFBYSxHQUFHLFNBQWhCQSxhQUFnQixDQUFDQyxLQUFELEVBQVc7QUFDdEMsTUFBTUMsUUFBUSxHQUFHLFNBQVhBLFFBQVcsR0FBTTtBQUNyQixRQUFNQyxDQUFDLEdBQUdGLEtBQUssQ0FBQ0MsUUFBTixDQUFlRCxLQUFLLENBQUNHLEtBQU4sQ0FBWUMsTUFBWixFQUFmLEVBQXFDSixLQUFyQyxDQUFWO0FBRUFBLElBQUFBLEtBQUssQ0FBQ0ssUUFBTixDQUFlSCxDQUFmO0FBQ0QsR0FKRDs7QUFNQSxNQUFJRixLQUFLLENBQUNNLE1BQVYsRUFBa0I7QUFDaEIsUUFBTUMsU0FBUSxHQUFHLG9CQUFRUCxLQUFLLENBQUNHLEtBQWQsRUFBcUJILEtBQUssQ0FBQ1EsSUFBM0IsQ0FBakI7O0FBQ0EsUUFBTUMsUUFBUSxHQUNaVCxLQUFLLENBQUNRLElBQU4sS0FBZSxLQUFmLEdBQXVCO0FBQUEsYUFBTVIsS0FBSyxDQUFDVSxPQUFOLENBQWNWLEtBQUssQ0FBQ0csS0FBcEIsRUFBMkJILEtBQUssQ0FBQ0ssUUFBakMsRUFBMkNMLEtBQUssQ0FBQ1csZUFBakQsQ0FBTjtBQUFBLEtBQXZCLEdBQWlHVixRQURuRztBQUdBSCxJQUFBQSxHQUFHLENBQUMsaUNBQUQsRUFBb0NTLFNBQXBDLENBQUg7QUFFQSxRQUFJSyxTQUFKOztBQUVBLFFBQUlaLEtBQUssQ0FBQ1EsSUFBTixLQUFlLEtBQW5CLEVBQTBCO0FBQ3hCSSxNQUFBQSxTQUFTLEdBQUcsMkNBQVo7QUFDRCxLQUZELE1BRU8sSUFBSVosS0FBSyxDQUFDUSxJQUFOLEtBQWUsS0FBbkIsRUFB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QnV0dG9uIH0gZnJvbSAnLi9kb25lLWJ1dHRvbic7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBTbGF0ZVByb3BUeXBlcyBmcm9tICdzbGF0ZS1wcm9wLXR5cGVzJztcblxuaW1wb3J0IHsgaGFzQmxvY2ssIGhhc01hcmsgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvc3R5bGVzJztcblxuaW1wb3J0IHsgQnV0dG9uLCBNYXJrQnV0dG9uIH0gZnJvbSAnLi90b29sYmFyLWJ1dHRvbnMnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcblxuY29uc3QgbG9nID0gZGVidWcoJ0BwaWUtbGliOmVkaXRhYmxlLWh0bWw6cGx1Z2luczp0b29sYmFyJyk7XG5cbmV4cG9ydCBjb25zdCBUb29sYmFyQnV0dG9uID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IG9uVG9nZ2xlID0gKCkgPT4ge1xuICAgIGNvbnN0IGMgPSBwcm9wcy5vblRvZ2dsZShwcm9wcy52YWx1ZS5jaGFuZ2UoKSwgcHJvcHMpO1xuXG4gICAgcHJvcHMub25DaGFuZ2UoYyk7XG4gIH07XG5cbiAgaWYgKHByb3BzLmlzTWFyaykge1xuICAgIGNvbnN0IGlzQWN0aXZlID0gaGFzTWFyayhwcm9wcy52YWx1ZSwgcHJvcHMudHlwZSk7XG4gICAgY29uc3QgZm5Ub0NhbGwgPVxuICAgICAgcHJvcHMudHlwZSA9PT0gJ2NzcycgPyAoKSA9PiBwcm9wcy5vbkNsaWNrKHByb3BzLnZhbHVlLCBwcm9wcy5vbkNoYW5nZSwgcHJvcHMuZ2V0Rm9jdXNlZFZhbHVlKSA6IG9uVG9nZ2xlO1xuXG4gICAgbG9nKCdbVG9vbGJhckJ1dHRvbl0gbWFyazppc0FjdGl2ZTogJywgaXNBY3RpdmUpO1xuXG4gICAgbGV0IGFyaWFMYWJlbDtcblxuICAgIGlmIChwcm9wcy50eXBlID09PSAnc3VwJykge1xuICAgICAgYXJpYUxhYmVsID0gJ1N1cGVyc2NyaXB0IChtYXJrcyB0ZXh0IGFzIHN1cGVyc2NyaXB0ZWQpJztcbiAgICB9IGVsc2UgaWYgKHByb3BzLnR5cGUgPT09ICdzdWInKSB7XG4gICAgICBhcmlhTGFiZWwgPSAnU3Vic2NyaXB0IChtYXJrcyB0ZXh0IGFzIHN1YnNjcmlwdGVkKSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFyaWFMYWJlbCA9IHByb3BzLnR5cGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxNYXJrQnV0dG9uIGFjdGl2ZT17aXNBY3RpdmV9IG9uVG9nZ2xlPXtmblRvQ2FsbH0gbWFyaz17cHJvcHMudHlwZX0gbGFiZWw9e2FyaWFMYWJlbH0+XG4gICAgICAgIHtwcm9wcy5pY29ufVxuICAgICAgPC9NYXJrQnV0dG9uPlxuICAgICk7XG4gIH1cblxuICBjb25zdCB7IGRpc2FibGVkIH0gPSBwcm9wcztcbiAgY29uc3QgaXNBY3RpdmUgPSBwcm9wcy5pc0FjdGl2ZSA/IHByb3BzLmlzQWN0aXZlKHByb3BzLnZhbHVlLCBwcm9wcy50eXBlKSA6IGhhc0Jsb2NrKHByb3BzLnZhbHVlLCBwcm9wcy50eXBlKTtcblxuICBsb2coJ1tUb29sYmFyQnV0dG9uXSBibG9jazppc0FjdGl2ZTogJywgaXNBY3RpdmUpO1xuICBjb25zdCBuZXdJY29uID0gUmVhY3QuY2xvbmVFbGVtZW50KHByb3BzLmljb24pO1xuXG4gIHJldHVybiAoXG4gICAgPEJ1dHRvblxuICAgICAgYXJpYUxhYmVsPXtwcm9wcy5hcmlhTGFiZWx9XG4gICAgICBhY3RpdmU9e2lzQWN0aXZlfVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgb25DbGljaz17KGV2ZW50KSA9PiBwcm9wcy5vbkNsaWNrKHByb3BzLnZhbHVlLCBwcm9wcy5vbkNoYW5nZSwgcHJvcHMuZ2V0Rm9jdXNlZFZhbHVlLCBldmVudCl9XG4gICAgICBleHRyYVN0eWxlcz17cHJvcHMuYnV0dG9uU3R5bGVzfVxuICAgID5cbiAgICAgIHtuZXdJY29ufVxuICAgIDwvQnV0dG9uPlxuICApO1xufTtcblxuVG9vbGJhckJ1dHRvbi5wcm9wVHlwZXMgPSB7XG4gIGJ1dHRvblN0eWxlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpY29uOiBQcm9wVHlwZXMuYW55LFxuICBpc0FjdGl2ZTogUHJvcFR5cGVzLmJvb2wsXG4gIGlzTWFyazogUHJvcFR5cGVzLmJvb2wsXG4gIGdldEZvY3VzZWRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uVG9nZ2xlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgdHlwZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgdmFsdWU6IFByb3BUeXBlcy5vYmplY3QsXG4gIGFyaWFMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbn07XG5cbmNvbnN0IGlzQWN0aXZlVG9vbGJhclBsdWdpbiA9IChwcm9wcykgPT4gKHBsdWdpbikgPT4ge1xuICBjb25zdCBpc0Rpc2FibGVkID0gKHByb3BzW3BsdWdpbi5uYW1lXSB8fCB7fSkuZGlzYWJsZWQ7XG5cbiAgcmV0dXJuIHBsdWdpbiAmJiBwbHVnaW4udG9vbGJhciAmJiAhaXNEaXNhYmxlZDtcbn07XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0VG9vbGJhciA9ICh7XG4gIHBsdWdpbnMsXG4gIHBsdWdpblByb3BzLFxuICB2YWx1ZSxcbiAgb25DaGFuZ2UsXG4gIGdldEZvY3VzZWRWYWx1ZSxcbiAgb25Eb25lLFxuICBjbGFzc2VzLFxuICBzaG93RG9uZSxcbiAgZGVsZXRhYmxlLFxuICBpc0h0bWxNb2RlLFxuICBkb25lQnV0dG9uUmVmLFxuICBvbkJsdXIsXG4gIG9uRm9jdXMsXG59KSA9PiB7XG4gIHBsdWdpblByb3BzID0ge1xuICAgIC8vIGRpc2FibGUgSFRNTCBwbHVnaW4gYnkgZGVmYXVsdCwgYXQgbGVhc3QgZm9yIG5vd1xuICAgIGh0bWw6IHsgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAuLi5wbHVnaW5Qcm9wcyxcbiAgfTtcbiAgbGV0IGZpbHRlcmVkO1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgZG9uZUJ1dHRvbkNsYXNzTmFtZSA9IGRvbmVCdXR0b25SZWY/LmN1cnJlbnQ/LmNsYXNzTmFtZTtcbiAgICBjb25zdCBpc1Jhd0RvbmVCdXR0b24gPSBkb25lQnV0dG9uQ2xhc3NOYW1lICYmIGV2ZW50LnRhcmdldD8uY2xvc2VzdChgW2NsYXNzKj1cIiR7ZG9uZUJ1dHRvbkNsYXNzTmFtZX1cIl1gKTtcblxuICAgIGlmIChvbkZvY3VzICYmICFpc1Jhd0RvbmVCdXR0b24pIHtcbiAgICAgIG9uRm9jdXMoZXZlbnQpO1xuICAgIH1cbiAgfTtcblxuICBpZiAoaXNIdG1sTW9kZSkge1xuICAgIGZpbHRlcmVkID0gcGx1Z2luc1xuICAgICAgLmZpbHRlcigocGx1Z2luKSA9PiB7XG4gICAgICAgIHJldHVybiBpc0FjdGl2ZVRvb2xiYXJQbHVnaW4ocGx1Z2luUHJvcHMpKHBsdWdpbikgJiYgKHBsdWdpbi5uYW1lID09PSAnY2hhcmFjdGVycycgfHwgcGx1Z2luLm5hbWUgPT09ICdodG1sJyk7XG4gICAgICB9KVxuICAgICAgLm1hcCgocCkgPT4gcC50b29sYmFyKTtcbiAgfSBlbHNlIHtcbiAgICBmaWx0ZXJlZCA9IHBsdWdpbnMuZmlsdGVyKGlzQWN0aXZlVG9vbGJhclBsdWdpbihwbHVnaW5Qcm9wcykpLm1hcCgocCkgPT4gcC50b29sYmFyKTtcbiAgfVxuXG4gIGNvbnN0IGlzTGlzdEFjdGl2ZSA9IHBsdWdpbnMuc29tZSgocGx1Z2luKSA9PlxuICAgICAgaXNBY3RpdmVUb29sYmFyUGx1Z2luKHBsdWdpblByb3BzKShwbHVnaW4pICYmXG4gICAgICBbJ3VsX2xpc3QnLCAnb2xfbGlzdCddLmluY2x1ZGVzKHBsdWdpbi5uYW1lKSAmJlxuICAgICAgcGx1Z2luLnRvb2xiYXIuaXNBY3RpdmUodmFsdWUsIHBsdWdpbi5uYW1lKVxuICApO1xuXG4gIGNvbnN0IGlzVGFibGVBY3RpdmUgPSBwbHVnaW5zLnNvbWUoKHBsdWdpbikgPT5cbiAgICAgIGlzQWN0aXZlVG9vbGJhclBsdWdpbihwbHVnaW5Qcm9wcykocGx1Z2luKSAmJlxuICAgICAgcGx1Z2luLm5hbWUgPT09ICd0YWJsZScgJiZcbiAgICAgIHBsdWdpbi51dGlscyAmJlxuICAgICAgcGx1Z2luLnV0aWxzLmlzU2VsZWN0aW9uSW5UYWJsZSAmJlxuICAgICAgcGx1Z2luLnV0aWxzLmlzU2VsZWN0aW9uSW5UYWJsZSh2YWx1ZSlcbiAgKTtcblxuICBjb25zdCBpc1Rvb2xiYXJCdXR0b25EaXNhYmxlZCA9IChwbHVnaW4pID0+IHtcbiAgICBpZiAocGx1Z2luLnR5cGUgPT09ICd0YWJsZScpIHtcbiAgICAgIHJldHVybiBpc0xpc3RBY3RpdmU7XG4gICAgfSBlbHNlIGlmIChwbHVnaW4udHlwZSA9PT0gJ3VsX2xpc3QnIHx8IHBsdWdpbi50eXBlID09PSAnb2xfbGlzdCcpIHtcbiAgICAgIHJldHVybiBpc1RhYmxlQWN0aXZlO1xuICAgIH1cbiAgICByZXR1cm4gcGx1Z2luLmRpc2FibGVkO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuZGVmYXVsdFRvb2xiYXJ9IG9uRm9jdXM9e2hhbmRsZUZvY3VzfSB0YWJJbmRleD1cIjFcIiBvbkJsdXI9e29uQmx1cn0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5idXR0b25zQ29udGFpbmVyfT5cbiAgICAgICAge2ZpbHRlcmVkLm1hcCgocCwgaW5kZXgpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFRvb2xiYXJCdXR0b25cbiAgICAgICAgICAgICAgey4uLnB9XG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgICBnZXRGb2N1c2VkVmFsdWU9e2dldEZvY3VzZWRWYWx1ZX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzVG9vbGJhckJ1dHRvbkRpc2FibGVkKHApfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICAgIDwvZGl2PlxuICAgICAge3Nob3dEb25lICYmICFkZWxldGFibGUgJiYgPERvbmVCdXR0b24gZG9uZUJ1dHRvblJlZj17ZG9uZUJ1dHRvblJlZn0gb25DbGljaz17b25Eb25lfSAvPn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkRlZmF1bHRUb29sYmFyLnByb3BUeXBlcyA9IHtcbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBwbHVnaW5zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgcGx1Z2luUHJvcHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIHZhbHVlOiBTbGF0ZVByb3BUeXBlcy52YWx1ZS5pc1JlcXVpcmVkLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZ2V0Rm9jdXNlZFZhbHVlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkRvbmU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHNob3dEb25lOiBQcm9wVHlwZXMuYm9vbCxcbiAgYWRkQXJlYTogUHJvcFR5cGVzLmJvb2wsXG4gIGRlbGV0YWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gIGlzSHRtbE1vZGU6IFByb3BUeXBlcy5ib29sLFxuICBkb25lQnV0dG9uUmVmOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25CbHVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Gb2N1czogUHJvcFR5cGVzLmZ1bmMsXG59O1xuXG5EZWZhdWx0VG9vbGJhci5kZWZhdWx0UHJvcHMgPSB7XG4gIHBsdWdpblByb3BzOiB7fSxcbn07XG5cbmNvbnN0IHRvb2xiYXJTdHlsZXMgPSAoKSA9PiAoe1xuICBkZWZhdWx0VG9vbGJhcjoge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gIH0sXG4gIGJ1dHRvbnNDb250YWluZXI6IHtcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgfSxcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGVzKHRvb2xiYXJTdHlsZXMpKERlZmF1bHRUb29sYmFyKTtcbiJdfQ==