@pie-lib/editable-html 12.1.0-next.2 → 12.1.0-next.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/lib/block-tags.js +24 -0
  3. package/lib/block-tags.js.map +1 -0
  4. package/lib/constants.js +11 -0
  5. package/lib/constants.js.map +1 -0
  6. package/lib/editor.js +1224 -0
  7. package/lib/editor.js.map +1 -0
  8. package/lib/index.js +208 -0
  9. package/lib/index.js.map +1 -0
  10. package/lib/parse-html.js +16 -0
  11. package/lib/parse-html.js.map +1 -0
  12. package/lib/plugins/characters/custom-popper.js +57 -0
  13. package/lib/plugins/characters/custom-popper.js.map +1 -0
  14. package/lib/plugins/characters/index.js +265 -0
  15. package/lib/plugins/characters/index.js.map +1 -0
  16. package/lib/plugins/characters/utils.js +378 -0
  17. package/lib/plugins/characters/utils.js.map +1 -0
  18. package/lib/plugins/css/icons/index.js +25 -0
  19. package/lib/plugins/css/icons/index.js.map +1 -0
  20. package/lib/plugins/css/index.js +338 -0
  21. package/lib/plugins/css/index.js.map +1 -0
  22. package/lib/plugins/customPlugin/index.js +98 -0
  23. package/lib/plugins/customPlugin/index.js.map +1 -0
  24. package/lib/plugins/html/icons/index.js +30 -0
  25. package/lib/plugins/html/icons/index.js.map +1 -0
  26. package/lib/plugins/html/index.js +71 -0
  27. package/lib/plugins/html/index.js.map +1 -0
  28. package/lib/plugins/image/alt-dialog.js +100 -0
  29. package/lib/plugins/image/alt-dialog.js.map +1 -0
  30. package/lib/plugins/image/component.js +343 -0
  31. package/lib/plugins/image/component.js.map +1 -0
  32. package/lib/plugins/image/image-toolbar.js +137 -0
  33. package/lib/plugins/image/image-toolbar.js.map +1 -0
  34. package/lib/plugins/image/index.js +223 -0
  35. package/lib/plugins/image/index.js.map +1 -0
  36. package/lib/plugins/image/insert-image-handler.js +140 -0
  37. package/lib/plugins/image/insert-image-handler.js.map +1 -0
  38. package/lib/plugins/index.js +342 -0
  39. package/lib/plugins/index.js.map +1 -0
  40. package/lib/plugins/list/index.js +288 -0
  41. package/lib/plugins/list/index.js.map +1 -0
  42. package/lib/plugins/math/index.js +402 -0
  43. package/lib/plugins/math/index.js.map +1 -0
  44. package/lib/plugins/media/index.js +330 -0
  45. package/lib/plugins/media/index.js.map +1 -0
  46. package/lib/plugins/media/media-dialog.js +594 -0
  47. package/lib/plugins/media/media-dialog.js.map +1 -0
  48. package/lib/plugins/media/media-toolbar.js +76 -0
  49. package/lib/plugins/media/media-toolbar.js.map +1 -0
  50. package/lib/plugins/media/media-wrapper.js +64 -0
  51. package/lib/plugins/media/media-wrapper.js.map +1 -0
  52. package/lib/plugins/rendering/index.js +36 -0
  53. package/lib/plugins/rendering/index.js.map +1 -0
  54. package/lib/plugins/respArea/drag-in-the-blank/choice.js +271 -0
  55. package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -0
  56. package/lib/plugins/respArea/drag-in-the-blank/index.js +55 -0
  57. package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -0
  58. package/lib/plugins/respArea/drag-in-the-blank/utils.js +38 -0
  59. package/lib/plugins/respArea/drag-in-the-blank/utils.js.map +1 -0
  60. package/lib/plugins/respArea/explicit-constructed-response/index.js +50 -0
  61. package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -0
  62. package/lib/plugins/respArea/icons/index.js +72 -0
  63. package/lib/plugins/respArea/icons/index.js.map +1 -0
  64. package/lib/plugins/respArea/index.js +287 -0
  65. package/lib/plugins/respArea/index.js.map +1 -0
  66. package/lib/plugins/respArea/inline-dropdown/index.js +67 -0
  67. package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -0
  68. package/lib/plugins/respArea/math-templated/index.js +112 -0
  69. package/lib/plugins/respArea/math-templated/index.js.map +1 -0
  70. package/lib/plugins/respArea/utils.js +95 -0
  71. package/lib/plugins/respArea/utils.js.map +1 -0
  72. package/lib/plugins/table/CustomTablePlugin.js +116 -0
  73. package/lib/plugins/table/CustomTablePlugin.js.map +1 -0
  74. package/lib/plugins/table/icons/index.js +55 -0
  75. package/lib/plugins/table/icons/index.js.map +1 -0
  76. package/lib/plugins/table/index.js +413 -0
  77. package/lib/plugins/table/index.js.map +1 -0
  78. package/lib/plugins/table/table-toolbar.js +138 -0
  79. package/lib/plugins/table/table-toolbar.js.map +1 -0
  80. package/lib/plugins/textAlign/icons/index.js +187 -0
  81. package/lib/plugins/textAlign/icons/index.js.map +1 -0
  82. package/lib/plugins/textAlign/index.js +26 -0
  83. package/lib/plugins/textAlign/index.js.map +1 -0
  84. package/lib/plugins/toolbar/default-toolbar.js +180 -0
  85. package/lib/plugins/toolbar/default-toolbar.js.map +1 -0
  86. package/lib/plugins/toolbar/done-button.js +35 -0
  87. package/lib/plugins/toolbar/done-button.js.map +1 -0
  88. package/lib/plugins/toolbar/editor-and-toolbar.js +258 -0
  89. package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -0
  90. package/lib/plugins/toolbar/index.js +29 -0
  91. package/lib/plugins/toolbar/index.js.map +1 -0
  92. package/lib/plugins/toolbar/toolbar-buttons.js +145 -0
  93. package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -0
  94. package/lib/plugins/toolbar/toolbar.js +307 -0
  95. package/lib/plugins/toolbar/toolbar.js.map +1 -0
  96. package/lib/plugins/utils.js +42 -0
  97. package/lib/plugins/utils.js.map +1 -0
  98. package/lib/serialization.js +571 -0
  99. package/lib/serialization.js.map +1 -0
  100. package/lib/shared/alert-dialog.js +68 -0
  101. package/lib/theme.js +8 -0
  102. package/lib/theme.js.map +1 -0
  103. package/package.json +7 -7
@@ -0,0 +1,307 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = exports.Toolbar = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
11
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
12
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
+ var _react = _interopRequireDefault(require("react"));
15
+ var _slate = require("slate");
16
+ var _Delete = _interopRequireDefault(require("@mui/icons-material/Delete"));
17
+ var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
18
+ var _propTypes = _interopRequireDefault(require("prop-types"));
19
+ var _debug = _interopRequireDefault(require("debug"));
20
+ var _slatePropTypes = _interopRequireDefault(require("slate-prop-types"));
21
+ var _debounce = _interopRequireDefault(require("lodash/debounce"));
22
+ var _doneButton = require("./done-button");
23
+ var _utils = require("../utils");
24
+ var _styles = require("@mui/material/styles");
25
+ var _defaultToolbar = _interopRequireDefault(require("./default-toolbar"));
26
+ var _characters = require("../characters");
27
+ var _constants = require("../../constants");
28
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
29
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
30
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
31
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
32
+ var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:toolbar');
33
+ var StyledToolbar = (0, _styles.styled)('div', {
34
+ shouldForwardProp: function shouldForwardProp(prop) {
35
+ return !['hasDoneButton', 'position', 'alignment', 'focused', 'autoWidth', 'hidden'].includes(prop);
36
+ }
37
+ })(function (_ref) {
38
+ var hasDoneButton = _ref.hasDoneButton,
39
+ position = _ref.position,
40
+ alignment = _ref.alignment,
41
+ focused = _ref.focused,
42
+ autoWidth = _ref.autoWidth,
43
+ hidden = _ref.hidden;
44
+ return {
45
+ position: 'absolute',
46
+ zIndex: 10,
47
+ cursor: 'pointer',
48
+ justifyContent: 'space-between',
49
+ background: 'var(--editable-html-toolbar-bg, #efefef)',
50
+ minWidth: hasDoneButton ? '280px' : '265px',
51
+ margin: '5px 0 0 0',
52
+ padding: '2px',
53
+ boxShadow: '0px 1px 5px 0px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 3px 1px -2px rgba(0, 0, 0, 0.12)',
54
+ boxSizing: 'border-box',
55
+ display: 'flex',
56
+ opacity: focused ? 1 : 0,
57
+ pointerEvents: focused ? 'auto' : 'none',
58
+ top: position === 'top' ? '-45px' : 'auto',
59
+ right: alignment === 'right' ? 0 : 'auto',
60
+ width: autoWidth ? 'auto' : '100%',
61
+ visibility: hidden ? 'hidden' : 'visible'
62
+ };
63
+ });
64
+ var SharedContainer = (0, _styles.styled)('div')({
65
+ display: 'flex'
66
+ });
67
+ var StyledIconButton = (0, _styles.styled)(_IconButton["default"])({
68
+ width: '28px',
69
+ height: '28px',
70
+ padding: '4px',
71
+ verticalAlign: 'top'
72
+ });
73
+ var getCustomToolbar = function getCustomToolbar(plugin, node, value, handleDone, getFocusedValue, onDataChange) {
74
+ if (!plugin) {
75
+ return;
76
+ }
77
+ if (!plugin.toolbar) {
78
+ return;
79
+ }
80
+ if (plugin.toolbar.CustomToolbarComp) {
81
+ /**
82
+ * Using a pre-defined Component should be preferred
83
+ * as the rendering of it (and it's children) can be optimized by React.
84
+ * If you keep re-defining the comp with an inline function
85
+ * then react will have to re-render.
86
+ */
87
+ return plugin.toolbar.CustomToolbarComp;
88
+ } else if (typeof plugin.toolbar.customToolbar === 'function') {
89
+ log('deprecated - use CustomToolbarComp');
90
+ return plugin.toolbar.customToolbar(node, value, handleDone, getFocusedValue, onDataChange);
91
+ }
92
+ };
93
+ var Toolbar = exports.Toolbar = /*#__PURE__*/function (_React$Component) {
94
+ function Toolbar(props) {
95
+ var _this;
96
+ (0, _classCallCheck2["default"])(this, Toolbar);
97
+ _this = _callSuper(this, Toolbar, [props]);
98
+ (0, _defineProperty2["default"])(_this, "hasMark", function (type) {
99
+ var value = _this.props.value;
100
+ return value.marks.some(function (mark) {
101
+ return mark.type == type;
102
+ });
103
+ });
104
+ (0, _defineProperty2["default"])(_this, "hasBlock", function (type) {
105
+ var value = _this.props.value;
106
+ return value.blocks.some(function (node) {
107
+ return node.type == type;
108
+ });
109
+ });
110
+ (0, _defineProperty2["default"])(_this, "onToggle", function (plugin) {
111
+ var _this$props = _this.props,
112
+ value = _this$props.value,
113
+ onChange = _this$props.onChange;
114
+ if (!plugin.onToggle) return;
115
+ var change = plugin.onToggle(value.change());
116
+ onChange(change);
117
+ });
118
+ (0, _defineProperty2["default"])(_this, "onClick", function (e) {
119
+ log('[onClick]');
120
+ e.preventDefault();
121
+ });
122
+ (0, _defineProperty2["default"])(_this, "onButtonClick", function (fn) {
123
+ return function (e) {
124
+ e.preventDefault();
125
+ fn();
126
+ };
127
+ });
128
+ (0, _defineProperty2["default"])(_this, "onToolbarDone", function (change, finishEditing) {
129
+ log('[onToolbarDone] change: ', change, 'finishEditing: ', finishEditing);
130
+ var _this$props2 = _this.props,
131
+ onChange = _this$props2.onChange,
132
+ onDone = _this$props2.onDone;
133
+
134
+ // use handler only if this is an actual Slate Change
135
+ if (change instanceof _slate.Change) {
136
+ onChange(change, function () {
137
+ if (finishEditing) {
138
+ onDone();
139
+ }
140
+ });
141
+ } else {
142
+ if (finishEditing) {
143
+ log('[onToolbarChange] call onDone');
144
+ onDone();
145
+ }
146
+ }
147
+ });
148
+ (0, _defineProperty2["default"])(_this, "onDeleteClick", (0, _debounce["default"])(function (e, plugin, node, value, onChange) {
149
+ return plugin.deleteNode(e, node, value, onChange);
150
+ }, 500));
151
+ (0, _defineProperty2["default"])(_this, "onDeleteMouseDown", function (e, plugin, node, value, onChange) {
152
+ e.persist();
153
+ _this.onDeleteClick(e, plugin, node, value, onChange);
154
+ });
155
+ _this.state = {
156
+ change: null
157
+ };
158
+ return _this;
159
+ }
160
+ (0, _inherits2["default"])(Toolbar, _React$Component);
161
+ return (0, _createClass2["default"])(Toolbar, [{
162
+ key: "componentWillUnmount",
163
+ value: function componentWillUnmount() {
164
+ (0, _characters.removeDialogs)();
165
+ }
166
+ }, {
167
+ key: "render",
168
+ value: function render() {
169
+ var _this2 = this;
170
+ var _this$props3 = this.props,
171
+ plugins = _this$props3.plugins,
172
+ pluginProps = _this$props3.pluginProps,
173
+ toolbarOpts = _this$props3.toolbarOpts,
174
+ value = _this$props3.value,
175
+ autoWidth = _this$props3.autoWidth,
176
+ onChange = _this$props3.onChange,
177
+ getFocusedValue = _this$props3.getFocusedValue,
178
+ isFocused = _this$props3.isFocused,
179
+ onDone = _this$props3.onDone,
180
+ toolbarRef = _this$props3.toolbarRef,
181
+ doneButtonRef = _this$props3.doneButtonRef,
182
+ onBlur = _this$props3.onBlur,
183
+ onFocus = _this$props3.onFocus;
184
+ var node = (0, _utils.findSingleNode)(value);
185
+ var parentNode = (0, _utils.findParentNode)(value, node);
186
+ log(' --------------> [render] node: ', node);
187
+ log('[render] node: ', node);
188
+ var plugin = plugins.find(function (p) {
189
+ if (!node) {
190
+ return;
191
+ }
192
+ if (p.toolbar) {
193
+ return p.toolbar.supports && p.toolbar.supports(node, value);
194
+ }
195
+ });
196
+ var parentPlugin = plugins.find(function (p) {
197
+ if (!parentNode) {
198
+ return;
199
+ }
200
+ if (p.toolbar) {
201
+ return p.toolbar.supports && p.toolbar.supports(parentNode, value);
202
+ }
203
+ });
204
+ log('[render] plugin: ', plugin);
205
+ var handleDone = function handleDone(change, done) {
206
+ var handler = onDone;
207
+ if (plugin && plugin.toolbar && plugin.toolbar.customToolbar) {
208
+ handler = _this2.onToolbarDone;
209
+ }
210
+ handler(change, done);
211
+ if (parentPlugin && parentPlugin.handleDone) {
212
+ parentPlugin.handleDone(value, node, plugin, onChange);
213
+ }
214
+ };
215
+ var handleDataChange = function handleDataChange(key, data) {
216
+ _this2.props.onDataChange(key, data);
217
+ };
218
+ var CustomToolbar = getCustomToolbar(plugin, node, value, handleDone, getFocusedValue, this.props.onDataChange);
219
+ var filteredPlugins = plugin && plugin.filterPlugins ? plugin.filterPlugins(node, plugins) : plugins;
220
+ log('[render] CustomToolbar: ', CustomToolbar);
221
+ var parentExtraStyles = parentPlugin && parentPlugin.pluginStyles ? parentPlugin.pluginStyles(node, parentNode, plugin) : {};
222
+ var pluginExtraStyles = plugin && plugin.pluginStyles ? plugin.pluginStyles(node, parentNode, plugin) : {};
223
+ var extraStyles = _objectSpread(_objectSpread({}, pluginExtraStyles), parentExtraStyles);
224
+ var deletable = node && plugin && plugin.deleteNode;
225
+ var customToolbarShowDone = node && plugin && plugin.toolbar && plugin.toolbar.showDone && !toolbarOpts.alwaysVisible;
226
+
227
+ // If there is a toolbarOpts we check if the showDone is not equal to false
228
+ var defaultToolbarShowDone = !toolbarOpts || toolbarOpts.showDone !== false;
229
+ var hasDoneButton = defaultToolbarShowDone || customToolbarShowDone;
230
+ var customStyles = toolbarOpts.minWidth !== undefined ? {
231
+ minWidth: toolbarOpts.minWidth
232
+ } : {};
233
+ return /*#__PURE__*/_react["default"].createElement(StyledToolbar, {
234
+ className: _constants.PIE_TOOLBAR__CLASS,
235
+ hasDoneButton: hasDoneButton,
236
+ position: toolbarOpts.position,
237
+ alignment: toolbarOpts.alignment,
238
+ focused: toolbarOpts.alwaysVisible || isFocused,
239
+ autoWidth: autoWidth,
240
+ hidden: toolbarOpts.isHidden === true,
241
+ style: _objectSpread(_objectSpread({}, extraStyles), customStyles),
242
+ onClick: this.onClick,
243
+ ref: toolbarRef
244
+ }, CustomToolbar ? /*#__PURE__*/_react["default"].createElement(CustomToolbar, {
245
+ node: node,
246
+ value: value,
247
+ getFocusedValue: getFocusedValue,
248
+ onToolbarDone: this.onToolbarDone,
249
+ onDataChange: handleDataChange,
250
+ pluginProps: pluginProps
251
+ }) : /*#__PURE__*/_react["default"].createElement(_defaultToolbar["default"], {
252
+ plugins: filteredPlugins,
253
+ pluginProps: pluginProps,
254
+ value: value,
255
+ onChange: onChange,
256
+ getFocusedValue: getFocusedValue,
257
+ showDone: defaultToolbarShowDone,
258
+ onDone: handleDone,
259
+ deletable: deletable,
260
+ isHtmlMode: toolbarOpts.isHtmlMode,
261
+ onFocus: onFocus,
262
+ doneButtonRef: doneButtonRef,
263
+ onBlur: onBlur
264
+ }), /*#__PURE__*/_react["default"].createElement(SharedContainer, null, deletable && /*#__PURE__*/_react["default"].createElement(StyledIconButton, {
265
+ "aria-label": "Delete",
266
+ onMouseDown: function onMouseDown(e) {
267
+ return _this2.onDeleteMouseDown(e, plugin, node, value, onChange);
268
+ },
269
+ size: "large"
270
+ }, /*#__PURE__*/_react["default"].createElement(_Delete["default"], null)), customToolbarShowDone && /*#__PURE__*/_react["default"].createElement(_doneButton.DoneButton, {
271
+ doneButtonRef: doneButtonRef,
272
+ onClick: handleDone
273
+ })));
274
+ }
275
+ }]);
276
+ }(_react["default"].Component);
277
+ (0, _defineProperty2["default"])(Toolbar, "propTypes", {
278
+ zIndex: _propTypes["default"].number,
279
+ value: _slatePropTypes["default"].value.isRequired,
280
+ plugins: _propTypes["default"].array,
281
+ plugin: _propTypes["default"].object,
282
+ onImageClick: _propTypes["default"].func,
283
+ onDone: _propTypes["default"].func.isRequired,
284
+ toolbarRef: _propTypes["default"].func.isRequired,
285
+ classes: _propTypes["default"].object.isRequired,
286
+ isFocused: _propTypes["default"].bool,
287
+ autoWidth: _propTypes["default"].bool,
288
+ onChange: _propTypes["default"].func.isRequired,
289
+ getFocusedValue: _propTypes["default"].func.isRequired,
290
+ pluginProps: _propTypes["default"].object,
291
+ toolbarOpts: _propTypes["default"].shape({
292
+ isHtmlMode: _propTypes["default"].bool,
293
+ position: _propTypes["default"].oneOf(['bottom', 'top']),
294
+ alignment: _propTypes["default"].oneOf(['left', 'right']),
295
+ alwaysVisible: _propTypes["default"].bool,
296
+ ref: _propTypes["default"].func,
297
+ showDone: _propTypes["default"].bool,
298
+ minWidth: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
299
+ isHidden: _propTypes["default"].bool
300
+ }),
301
+ onDataChange: _propTypes["default"].func,
302
+ doneButtonRef: _propTypes["default"].func,
303
+ onBlur: _propTypes["default"].func,
304
+ onFocus: _propTypes["default"].func
305
+ });
306
+ var _default = exports["default"] = Toolbar;
307
+ //# sourceMappingURL=toolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolbar.js","names":["_react","_interopRequireDefault","require","_slate","_Delete","_IconButton","_propTypes","_debug","_slatePropTypes","_debounce","_doneButton","_utils","_styles","_defaultToolbar","_characters","_constants","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","prototype","valueOf","call","log","debug","StyledToolbar","styled","shouldForwardProp","prop","includes","_ref","hasDoneButton","position","alignment","focused","autoWidth","hidden","zIndex","cursor","justifyContent","background","minWidth","margin","padding","boxShadow","boxSizing","display","opacity","pointerEvents","top","right","width","visibility","SharedContainer","StyledIconButton","IconButton","height","verticalAlign","getCustomToolbar","plugin","node","value","handleDone","getFocusedValue","onDataChange","toolbar","CustomToolbarComp","customToolbar","Toolbar","exports","_React$Component","props","_this","_classCallCheck2","type","marks","some","mark","blocks","_this$props","onChange","onToggle","change","preventDefault","fn","finishEditing","_this$props2","onDone","Change","debounce","deleteNode","persist","onDeleteClick","state","_inherits2","_createClass2","key","componentWillUnmount","removeCharacterDialogs","render","_this2","_this$props3","plugins","pluginProps","toolbarOpts","isFocused","toolbarRef","doneButtonRef","onBlur","onFocus","findSingleNode","parentNode","findParentNode","find","p","supports","parentPlugin","done","handler","onToolbarDone","handleDataChange","data","CustomToolbar","filteredPlugins","filterPlugins","parentExtraStyles","pluginStyles","pluginExtraStyles","extraStyles","deletable","customToolbarShowDone","showDone","alwaysVisible","defaultToolbarShowDone","customStyles","undefined","createElement","className","PIE_TOOLBAR__CLASS","isHidden","style","onClick","ref","isHtmlMode","onMouseDown","onDeleteMouseDown","size","DoneButton","React","Component","PropTypes","number","SlatePropTypes","isRequired","array","object","onImageClick","func","classes","bool","shape","oneOf","oneOfType","string","_default"],"sources":["../../../src/plugins/toolbar/toolbar.jsx"],"sourcesContent":["import React from 'react';\nimport { Change } from 'slate';\nimport Delete from '@mui/icons-material/Delete';\nimport IconButton from '@mui/material/IconButton';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport SlatePropTypes from 'slate-prop-types';\nimport debounce from 'lodash/debounce';\n\nimport { DoneButton } from './done-button';\n\nimport { findSingleNode, findParentNode } from '../utils';\nimport { styled } from '@mui/material/styles';\nimport DefaultToolbar from './default-toolbar';\nimport { removeDialogs as removeCharacterDialogs } from '../characters';\nimport { PIE_TOOLBAR__CLASS } from '../../constants';\n\nconst log = debug('@pie-lib:editable-html:plugins:toolbar');\n\nconst StyledToolbar = styled('div', {\n shouldForwardProp: (prop) => !['hasDoneButton', 'position', 'alignment', 'focused', 'autoWidth', 'hidden'].includes(prop),\n})(({ hasDoneButton, position, alignment, focused, autoWidth, hidden }) => ({\n position: 'absolute',\n zIndex: 10,\n cursor: 'pointer',\n justifyContent: 'space-between',\n background: 'var(--editable-html-toolbar-bg, #efefef)',\n minWidth: hasDoneButton ? '280px' : '265px',\n margin: '5px 0 0 0',\n padding: '2px',\n boxShadow:\n '0px 1px 5px 0px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 3px 1px -2px rgba(0, 0, 0, 0.12)',\n boxSizing: 'border-box',\n display: 'flex',\n opacity: focused ? 1 : 0,\n pointerEvents: focused ? 'auto' : 'none',\n top: position === 'top' ? '-45px' : 'auto',\n right: alignment === 'right' ? 0 : 'auto',\n width: autoWidth ? 'auto' : '100%',\n visibility: hidden ? 'hidden' : 'visible',\n}));\n\nconst SharedContainer = styled('div')({\n display: 'flex',\n});\n\nconst StyledIconButton = styled(IconButton)({\n width: '28px',\n height: '28px',\n padding: '4px',\n verticalAlign: 'top',\n});\n\nconst getCustomToolbar = (plugin, node, value, handleDone, getFocusedValue, onDataChange) => {\n if (!plugin) {\n return;\n }\n\n if (!plugin.toolbar) {\n return;\n }\n\n if (plugin.toolbar.CustomToolbarComp) {\n /**\n * Using a pre-defined Component should be preferred\n * as the rendering of it (and it's children) can be optimized by React.\n * If you keep re-defining the comp with an inline function\n * then react will have to re-render.\n */\n return plugin.toolbar.CustomToolbarComp;\n } else if (typeof plugin.toolbar.customToolbar === 'function') {\n log('deprecated - use CustomToolbarComp');\n return plugin.toolbar.customToolbar(node, value, handleDone, getFocusedValue, onDataChange);\n }\n};\n\nexport class Toolbar extends React.Component {\n static propTypes = {\n zIndex: PropTypes.number,\n value: SlatePropTypes.value.isRequired,\n plugins: PropTypes.array,\n plugin: PropTypes.object,\n onImageClick: PropTypes.func,\n onDone: PropTypes.func.isRequired,\n toolbarRef: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n isFocused: PropTypes.bool,\n autoWidth: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n getFocusedValue: PropTypes.func.isRequired,\n pluginProps: PropTypes.object,\n toolbarOpts: PropTypes.shape({\n isHtmlMode: PropTypes.bool,\n position: PropTypes.oneOf(['bottom', 'top']),\n alignment: PropTypes.oneOf(['left', 'right']),\n alwaysVisible: PropTypes.bool,\n ref: PropTypes.func,\n showDone: PropTypes.bool,\n minWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n isHidden: PropTypes.bool,\n }),\n onDataChange: PropTypes.func,\n doneButtonRef: PropTypes.func,\n onBlur: PropTypes.func,\n onFocus: PropTypes.func,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n change: null,\n };\n }\n\n componentWillUnmount() {\n removeCharacterDialogs();\n }\n\n hasMark = (type) => {\n const { value } = this.props;\n return value.marks.some((mark) => mark.type == type);\n };\n\n hasBlock = (type) => {\n const { value } = this.props;\n return value.blocks.some((node) => node.type == type);\n };\n\n onToggle = (plugin) => {\n const { value, onChange } = this.props;\n\n if (!plugin.onToggle) return;\n\n const change = plugin.onToggle(value.change());\n onChange(change);\n };\n\n onClick = (e) => {\n log('[onClick]');\n e.preventDefault();\n };\n\n onButtonClick = (fn) => {\n return (e) => {\n e.preventDefault();\n fn();\n };\n };\n\n onToolbarDone = (change, finishEditing) => {\n log('[onToolbarDone] change: ', change, 'finishEditing: ', finishEditing);\n const { onChange, onDone } = this.props;\n\n // use handler only if this is an actual Slate Change\n if (change instanceof Change) {\n onChange(change, () => {\n if (finishEditing) {\n onDone();\n }\n });\n } else {\n if (finishEditing) {\n log('[onToolbarChange] call onDone');\n onDone();\n }\n }\n };\n\n onDeleteClick = debounce((e, plugin, node, value, onChange) => plugin.deleteNode(e, node, value, onChange), 500);\n\n onDeleteMouseDown = (e, plugin, node, value, onChange) => {\n e.persist();\n this.onDeleteClick(e, plugin, node, value, onChange);\n };\n\n render() {\n const {\n plugins,\n pluginProps,\n toolbarOpts,\n value,\n autoWidth,\n onChange,\n getFocusedValue,\n isFocused,\n onDone,\n toolbarRef,\n doneButtonRef,\n onBlur,\n onFocus,\n } = this.props;\n\n const node = findSingleNode(value);\n const parentNode = findParentNode(value, node);\n\n log(' --------------> [render] node: ', node);\n log('[render] node: ', node);\n\n const plugin = plugins.find((p) => {\n if (!node) {\n return;\n }\n\n if (p.toolbar) {\n return p.toolbar.supports && p.toolbar.supports(node, value);\n }\n });\n const parentPlugin = plugins.find((p) => {\n if (!parentNode) {\n return;\n }\n\n if (p.toolbar) {\n return p.toolbar.supports && p.toolbar.supports(parentNode, value);\n }\n });\n\n log('[render] plugin: ', plugin);\n\n const handleDone = (change, done) => {\n let handler = onDone;\n\n if (plugin && plugin.toolbar && plugin.toolbar.customToolbar) {\n handler = this.onToolbarDone;\n }\n\n handler(change, done);\n\n if (parentPlugin && parentPlugin.handleDone) {\n parentPlugin.handleDone(value, node, plugin, onChange);\n }\n };\n\n const handleDataChange = (key, data) => {\n this.props.onDataChange(key, data);\n };\n\n const CustomToolbar = getCustomToolbar(plugin, node, value, handleDone, getFocusedValue, this.props.onDataChange);\n\n const filteredPlugins = plugin && plugin.filterPlugins ? plugin.filterPlugins(node, plugins) : plugins;\n\n log('[render] CustomToolbar: ', CustomToolbar);\n const parentExtraStyles =\n parentPlugin && parentPlugin.pluginStyles ? parentPlugin.pluginStyles(node, parentNode, plugin) : {};\n const pluginExtraStyles = plugin && plugin.pluginStyles ? plugin.pluginStyles(node, parentNode, plugin) : {};\n const extraStyles = {\n ...pluginExtraStyles,\n ...parentExtraStyles,\n };\n\n const deletable = node && plugin && plugin.deleteNode;\n const customToolbarShowDone =\n node && plugin && plugin.toolbar && plugin.toolbar.showDone && !toolbarOpts.alwaysVisible;\n\n // If there is a toolbarOpts we check if the showDone is not equal to false\n const defaultToolbarShowDone = !toolbarOpts || toolbarOpts.showDone !== false;\n\n const hasDoneButton = defaultToolbarShowDone || customToolbarShowDone;\n const customStyles = toolbarOpts.minWidth !== undefined ? { minWidth: toolbarOpts.minWidth } : {};\n\n return (\n <StyledToolbar\n className={PIE_TOOLBAR__CLASS}\n hasDoneButton={hasDoneButton}\n position={toolbarOpts.position}\n alignment={toolbarOpts.alignment}\n focused={toolbarOpts.alwaysVisible || isFocused}\n autoWidth={autoWidth}\n hidden={toolbarOpts.isHidden === true}\n style={{ ...extraStyles, ...customStyles }}\n onClick={this.onClick}\n ref={toolbarRef}\n >\n {CustomToolbar ? (\n <CustomToolbar\n node={node}\n value={value}\n getFocusedValue={getFocusedValue}\n onToolbarDone={this.onToolbarDone}\n onDataChange={handleDataChange}\n pluginProps={pluginProps}\n />\n ) : (\n <DefaultToolbar\n plugins={filteredPlugins}\n pluginProps={pluginProps}\n value={value}\n onChange={onChange}\n getFocusedValue={getFocusedValue}\n showDone={defaultToolbarShowDone}\n onDone={handleDone}\n deletable={deletable}\n isHtmlMode={toolbarOpts.isHtmlMode}\n onFocus={onFocus}\n doneButtonRef={doneButtonRef}\n onBlur={onBlur}\n />\n )}\n <SharedContainer>\n {deletable && (\n <StyledIconButton\n aria-label=\"Delete\"\n onMouseDown={(e) => this.onDeleteMouseDown(e, plugin, node, value, onChange)}\n size=\"large\"\n >\n <Delete />\n </StyledIconButton>\n )}\n {customToolbarShowDone && <DoneButton doneButtonRef={doneButtonRef} onClick={handleDone} />}\n </SharedContainer>\n </StyledToolbar>\n );\n }\n}\n\nexport default Toolbar;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.hasNode = exports.hasMark = exports.hasBlock = exports.findSingleNode = exports.findParentNode = void 0;
7
+ var findSingleNode = exports.findSingleNode = function findSingleNode(value) {
8
+ if (!value || !value.isCollapsed || !value.startKey) {
9
+ return;
10
+ }
11
+ var inline = value.document.getClosestInline(value.startKey);
12
+ if (inline) {
13
+ return inline;
14
+ }
15
+ var block = value.document.getClosestBlock(value.startKey);
16
+ if (block) {
17
+ return block;
18
+ }
19
+ };
20
+ var findParentNode = exports.findParentNode = function findParentNode(value, node) {
21
+ if (!value || !node) {
22
+ return;
23
+ }
24
+ return value.document.getParent(node.key);
25
+ };
26
+ var hasMark = exports.hasMark = function hasMark(value, type) {
27
+ return value && value.marks.some(function (mark) {
28
+ return mark.type == type;
29
+ });
30
+ };
31
+ var hasBlock = exports.hasBlock = function hasBlock(value, type) {
32
+ return value && value.blocks.some(function (node) {
33
+ return node.type == type;
34
+ });
35
+ };
36
+ var hasNode = exports.hasNode = function hasNode(_ref, type) {
37
+ var document = _ref.document;
38
+ return document && document.nodes.some(function (node) {
39
+ return node.type == type;
40
+ });
41
+ };
42
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","names":["findSingleNode","exports","value","isCollapsed","startKey","inline","document","getClosestInline","block","getClosestBlock","findParentNode","node","getParent","key","hasMark","type","marks","some","mark","hasBlock","blocks","hasNode","_ref","nodes"],"sources":["../../src/plugins/utils.js"],"sourcesContent":["export const findSingleNode = (value) => {\n if (!value || !value.isCollapsed || !value.startKey) {\n return;\n }\n\n const inline = value.document.getClosestInline(value.startKey);\n\n if (inline) {\n return inline;\n }\n\n const block = value.document.getClosestBlock(value.startKey);\n\n if (block) {\n return block;\n }\n};\n\nexport const findParentNode = (value, node) => {\n if (!value || !node) {\n return;\n }\n\n return value.document.getParent(node.key);\n};\n\nexport const hasMark = (value, type) => value && value.marks.some((mark) => mark.type == type);\n\nexport const hasBlock = (value, type) => value && value.blocks.some((node) => node.type == type);\n\nexport const hasNode = ({ document }, type) => document && document.nodes.some((node) => node.type == type);\n"],"mappings":";;;;;;AAAO,IAAMA,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAG,SAAjBA,cAAcA,CAAIE,KAAK,EAAK;EACvC,IAAI,CAACA,KAAK,IAAI,CAACA,KAAK,CAACC,WAAW,IAAI,CAACD,KAAK,CAACE,QAAQ,EAAE;IACnD;EACF;EAEA,IAAMC,MAAM,GAAGH,KAAK,CAACI,QAAQ,CAACC,gBAAgB,CAACL,KAAK,CAACE,QAAQ,CAAC;EAE9D,IAAIC,MAAM,EAAE;IACV,OAAOA,MAAM;EACf;EAEA,IAAMG,KAAK,GAAGN,KAAK,CAACI,QAAQ,CAACG,eAAe,CAACP,KAAK,CAACE,QAAQ,CAAC;EAE5D,IAAII,KAAK,EAAE;IACT,OAAOA,KAAK;EACd;AACF,CAAC;AAEM,IAAME,cAAc,GAAAT,OAAA,CAAAS,cAAA,GAAG,SAAjBA,cAAcA,CAAIR,KAAK,EAAES,IAAI,EAAK;EAC7C,IAAI,CAACT,KAAK,IAAI,CAACS,IAAI,EAAE;IACnB;EACF;EAEA,OAAOT,KAAK,CAACI,QAAQ,CAACM,SAAS,CAACD,IAAI,CAACE,GAAG,CAAC;AAC3C,CAAC;AAEM,IAAMC,OAAO,GAAAb,OAAA,CAAAa,OAAA,GAAG,SAAVA,OAAOA,CAAIZ,KAAK,EAAEa,IAAI;EAAA,OAAKb,KAAK,IAAIA,KAAK,CAACc,KAAK,CAACC,IAAI,CAAC,UAACC,IAAI;IAAA,OAAKA,IAAI,CAACH,IAAI,IAAIA,IAAI;EAAA,EAAC;AAAA;AAEvF,IAAMI,QAAQ,GAAAlB,OAAA,CAAAkB,QAAA,GAAG,SAAXA,QAAQA,CAAIjB,KAAK,EAAEa,IAAI;EAAA,OAAKb,KAAK,IAAIA,KAAK,CAACkB,MAAM,CAACH,IAAI,CAAC,UAACN,IAAI;IAAA,OAAKA,IAAI,CAACI,IAAI,IAAIA,IAAI;EAAA,EAAC;AAAA;AAEzF,IAAMM,OAAO,GAAApB,OAAA,CAAAoB,OAAA,GAAG,SAAVA,OAAOA,CAAAC,IAAA,EAAkBP,IAAI;EAAA,IAAhBT,QAAQ,GAAAgB,IAAA,CAARhB,QAAQ;EAAA,OAAaA,QAAQ,IAAIA,QAAQ,CAACiB,KAAK,CAACN,IAAI,CAAC,UAACN,IAAI;IAAA,OAAKA,IAAI,CAACI,IAAI,IAAIA,IAAI;EAAA,EAAC;AAAA","ignoreList":[]}