@pie-lib/editable-html-tip-tap 1.1.0-next.4 → 1.1.0-next.6
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.
- package/lib/components/CharacterPicker.js +208 -0
- package/lib/components/CharacterPicker.js.map +1 -0
- package/lib/components/EditableHtml.js +334 -0
- package/lib/components/EditableHtml.js.map +1 -0
- package/lib/components/MenuBar.js +679 -0
- package/lib/components/MenuBar.js.map +1 -0
- package/lib/components/TiptapContainer.js +222 -0
- package/lib/components/TiptapContainer.js.map +1 -0
- package/lib/components/characters/characterUtils.js +380 -0
- package/lib/components/characters/characterUtils.js.map +1 -0
- package/lib/components/characters/custom-popper.js +45 -0
- package/lib/components/characters/custom-popper.js.map +1 -0
- package/lib/components/common/done-button.js +35 -0
- package/lib/components/common/done-button.js.map +1 -0
- package/lib/components/common/toolbar-buttons.js +156 -0
- package/lib/components/common/toolbar-buttons.js.map +1 -0
- package/lib/components/icons/CssIcon.js +26 -0
- package/lib/components/icons/CssIcon.js.map +1 -0
- package/lib/components/icons/RespArea.js +82 -0
- package/lib/components/icons/RespArea.js.map +1 -0
- package/lib/components/icons/TableIcons.js +54 -0
- package/lib/components/icons/TableIcons.js.map +1 -0
- package/lib/components/icons/TextAlign.js +164 -0
- package/lib/components/icons/TextAlign.js.map +1 -0
- package/lib/components/image/AltDialog.js +103 -0
- package/lib/components/image/AltDialog.js.map +1 -0
- package/lib/components/image/ImageToolbar.js +150 -0
- package/lib/components/image/ImageToolbar.js.map +1 -0
- package/lib/components/image/InsertImageHandler.js +148 -0
- package/lib/components/image/InsertImageHandler.js.map +1 -0
- package/lib/components/media/MediaDialog.js +613 -0
- package/lib/components/media/MediaDialog.js.map +1 -0
- package/lib/components/media/MediaToolbar.js +76 -0
- package/lib/components/media/MediaToolbar.js.map +1 -0
- package/lib/components/media/MediaWrapper.js +78 -0
- package/lib/components/media/MediaWrapper.js.map +1 -0
- package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js +89 -0
- package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js.map +1 -0
- package/lib/components/respArea/DragInTheBlank/choice.js +250 -0
- package/lib/components/respArea/DragInTheBlank/choice.js.map +1 -0
- package/lib/components/respArea/ExplicitConstructedResponse.js +126 -0
- package/lib/components/respArea/ExplicitConstructedResponse.js.map +1 -0
- package/lib/components/respArea/InlineDropdown.js +144 -0
- package/lib/components/respArea/InlineDropdown.js.map +1 -0
- package/lib/components/respArea/ToolbarIcon.js +91 -0
- package/lib/components/respArea/ToolbarIcon.js.map +1 -0
- package/lib/constants.js +12 -0
- package/lib/constants.js.map +1 -0
- package/lib/extensions/component.js +305 -0
- package/lib/extensions/component.js.map +1 -0
- package/lib/extensions/css.js +228 -0
- package/lib/extensions/css.js.map +1 -0
- package/lib/extensions/custom-toolbar-wrapper.js +109 -0
- package/lib/extensions/custom-toolbar-wrapper.js.map +1 -0
- package/lib/extensions/extended-table.js +30 -0
- package/lib/extensions/extended-table.js.map +1 -0
- package/lib/extensions/image.js +96 -0
- package/lib/extensions/image.js.map +1 -0
- package/lib/extensions/index.js +49 -0
- package/lib/extensions/index.js.map +1 -0
- package/lib/extensions/math.js +315 -0
- package/lib/extensions/math.js.map +1 -0
- package/lib/extensions/media.js +253 -0
- package/lib/extensions/media.js.map +1 -0
- package/lib/extensions/responseArea.js +460 -0
- package/lib/extensions/responseArea.js.map +1 -0
- package/lib/index.js +37 -0
- package/lib/index.js.map +1 -0
- package/lib/styles/editorContainerStyles.js +138 -0
- package/lib/styles/editorContainerStyles.js.map +1 -0
- package/lib/theme.js +9 -0
- package/lib/theme.js.map +1 -0
- package/lib/utils/size.js +32 -0
- package/lib/utils/size.js.map +1 -0
- package/package.json +7 -7
- package/src/__tests__/EditableHtml.test.jsx +265 -0
- package/src/__tests__/constants.test.js +20 -0
- package/src/__tests__/extensions.test.js +208 -0
- package/src/__tests__/index.test.jsx +146 -0
- package/src/__tests__/size-utils.test.js +64 -0
- package/src/__tests__/theme.test.js +17 -0
- package/src/components/__tests__/AltDialog.test.jsx +147 -0
- package/src/components/__tests__/CharacterPicker.test.jsx +195 -0
- package/src/components/__tests__/CssIcon.test.jsx +46 -0
- package/src/components/__tests__/DragInTheBlank.test.jsx +255 -0
- package/src/components/__tests__/ExplicitConstructedResponse.test.jsx +161 -0
- package/src/components/__tests__/ImageToolbar.test.jsx +128 -0
- package/src/components/__tests__/InlineDropdown.test.jsx +187 -0
- package/src/components/__tests__/InsertImageHandler.test.js +154 -0
- package/src/components/__tests__/MediaDialog.test.jsx +293 -0
- package/src/components/__tests__/MediaToolbar.test.jsx +74 -0
- package/src/components/__tests__/MediaWrapper.test.jsx +81 -0
- package/src/components/__tests__/MenuBar.test.jsx +217 -0
- package/src/components/__tests__/RespArea.test.jsx +122 -0
- package/src/components/__tests__/TableIcons.test.jsx +149 -0
- package/src/components/__tests__/TextAlign.test.jsx +167 -0
- package/src/components/__tests__/TiptapContainer.test.jsx +138 -0
- package/src/components/__tests__/characterUtils.test.js +166 -0
- package/src/components/__tests__/choice.test.jsx +171 -0
- package/src/components/__tests__/custom-popper.test.jsx +82 -0
- package/src/components/__tests__/done-button.test.jsx +54 -0
- package/src/components/__tests__/toolbar-buttons.test.jsx +234 -0
- package/src/extensions/__tests__/component.test.jsx +248 -0
- package/src/extensions/__tests__/css.test.js +196 -0
- package/src/extensions/__tests__/custom-toolbar-wrapper.test.jsx +180 -0
- package/src/extensions/__tests__/extended-table.test.js +107 -0
- package/src/extensions/__tests__/image.test.js +136 -0
- package/src/extensions/__tests__/media.test.js +270 -0
- package/src/extensions/__tests__/responseArea.test.js +310 -0
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.array.filter.js");
|
|
4
|
+
require("core-js/modules/es.array.for-each.js");
|
|
5
|
+
require("core-js/modules/es.array.iterator.js");
|
|
6
|
+
require("core-js/modules/es.object.define-properties.js");
|
|
7
|
+
require("core-js/modules/es.object.define-property.js");
|
|
8
|
+
require("core-js/modules/es.object.get-own-property-descriptor.js");
|
|
9
|
+
require("core-js/modules/es.object.get-own-property-descriptors.js");
|
|
10
|
+
require("core-js/modules/es.object.keys.js");
|
|
11
|
+
require("core-js/modules/es.string.iterator.js");
|
|
12
|
+
require("core-js/modules/es.weak-map.js");
|
|
13
|
+
require("core-js/modules/web.dom-collections.for-each.js");
|
|
14
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
15
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
16
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
17
|
+
Object.defineProperty(exports, "__esModule", {
|
|
18
|
+
value: true
|
|
19
|
+
});
|
|
20
|
+
exports.CharacterIcon = void 0;
|
|
21
|
+
exports.CharacterPicker = CharacterPicker;
|
|
22
|
+
require("core-js/modules/es.symbol.js");
|
|
23
|
+
require("core-js/modules/es.symbol.description.js");
|
|
24
|
+
require("core-js/modules/es.array.concat.js");
|
|
25
|
+
require("core-js/modules/es.array.map.js");
|
|
26
|
+
require("core-js/modules/es.array.reduce.js");
|
|
27
|
+
require("core-js/modules/es.object.to-string.js");
|
|
28
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
29
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
30
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
31
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
32
|
+
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
33
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
34
|
+
var _get = _interopRequireDefault(require("lodash/get"));
|
|
35
|
+
var _mathToolbar = require("@pie-lib/math-toolbar");
|
|
36
|
+
var _customPopper = _interopRequireDefault(require("./characters/custom-popper"));
|
|
37
|
+
var _characterUtils = require("./characters/characterUtils");
|
|
38
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
39
|
+
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; }
|
|
40
|
+
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; }
|
|
41
|
+
var CharacterIcon = exports.CharacterIcon = function CharacterIcon(_ref) {
|
|
42
|
+
var letter = _ref.letter;
|
|
43
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
44
|
+
style: {
|
|
45
|
+
fontSize: '24px',
|
|
46
|
+
lineHeight: '24px'
|
|
47
|
+
}
|
|
48
|
+
}, letter);
|
|
49
|
+
};
|
|
50
|
+
CharacterIcon.propTypes = {
|
|
51
|
+
letter: _propTypes["default"].string
|
|
52
|
+
};
|
|
53
|
+
function CharacterPicker(_ref2) {
|
|
54
|
+
var _opts$characters;
|
|
55
|
+
var editor = _ref2.editor,
|
|
56
|
+
opts = _ref2.opts,
|
|
57
|
+
onClose = _ref2.onClose;
|
|
58
|
+
if (!(opts !== null && opts !== void 0 && (_opts$characters = opts.characters) !== null && _opts$characters !== void 0 && _opts$characters.length)) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
var containerRef = (0, _react.useRef)(null);
|
|
62
|
+
var _useState = (0, _react.useState)({
|
|
63
|
+
top: 0,
|
|
64
|
+
left: 0
|
|
65
|
+
}),
|
|
66
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
67
|
+
position = _useState2[0],
|
|
68
|
+
setPosition = _useState2[1];
|
|
69
|
+
var _useState3 = (0, _react.useState)(null),
|
|
70
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
71
|
+
popover = _useState4[0],
|
|
72
|
+
setPopover = _useState4[1];
|
|
73
|
+
var configToUse = (0, _react.useMemo)(function () {
|
|
74
|
+
if (!opts) return _characterUtils.spanishConfig;
|
|
75
|
+
switch (true) {
|
|
76
|
+
case opts.language === 'spanish':
|
|
77
|
+
return _characterUtils.spanishConfig;
|
|
78
|
+
case opts.language === 'special':
|
|
79
|
+
return _characterUtils.specialConfig;
|
|
80
|
+
default:
|
|
81
|
+
return opts;
|
|
82
|
+
}
|
|
83
|
+
}, [opts]);
|
|
84
|
+
var layoutForCharacters = (0, _react.useMemo)(function () {
|
|
85
|
+
return configToUse.characters.reduce(function (obj, arr) {
|
|
86
|
+
if (arr.length >= obj.columns) {
|
|
87
|
+
obj.columns = arr.length;
|
|
88
|
+
}
|
|
89
|
+
return obj;
|
|
90
|
+
}, {
|
|
91
|
+
rows: configToUse.characters.length,
|
|
92
|
+
columns: 0
|
|
93
|
+
});
|
|
94
|
+
}, [configToUse]);
|
|
95
|
+
var closePopOver = function closePopOver() {
|
|
96
|
+
return setPopover(null);
|
|
97
|
+
};
|
|
98
|
+
(0, _react.useEffect)(function () {
|
|
99
|
+
return function () {
|
|
100
|
+
closePopOver();
|
|
101
|
+
};
|
|
102
|
+
}, []);
|
|
103
|
+
(0, _react.useEffect)(function () {
|
|
104
|
+
if (!editor) return;
|
|
105
|
+
|
|
106
|
+
// Calculate position relative to selection
|
|
107
|
+
var editorDOM = editor.options.element;
|
|
108
|
+
var editorRect = editorDOM.getBoundingClientRect();
|
|
109
|
+
var bodyRect = document.body.getBoundingClientRect();
|
|
110
|
+
var from = editor.state.selection.from;
|
|
111
|
+
var start = editor.view.coordsAtPos(from);
|
|
112
|
+
var top = editorRect.top + Math.abs(bodyRect.top) + editorRect.height + 60;
|
|
113
|
+
if (editorRect.y > containerRef.current.offsetHeight) {
|
|
114
|
+
top = top - (containerRef.current.offsetHeight + editorRect.height) - 80;
|
|
115
|
+
}
|
|
116
|
+
setPosition({
|
|
117
|
+
// top: start.top + Math.abs(bodyRect.top) - containerRef.current.offsetHeight - 10 + additionalTopOffset, // shift above
|
|
118
|
+
top: top,
|
|
119
|
+
left: start.left
|
|
120
|
+
});
|
|
121
|
+
var handleClickOutside = function handleClickOutside(e) {
|
|
122
|
+
if (containerRef.current && !containerRef.current.contains(e.target) && !editor.view.dom.contains(e.target)) {
|
|
123
|
+
onClose();
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
127
|
+
return function () {
|
|
128
|
+
return document.removeEventListener('mousedown', handleClickOutside);
|
|
129
|
+
};
|
|
130
|
+
}, [editor, onClose]);
|
|
131
|
+
var renderPopOver = function renderPopOver(event, el) {
|
|
132
|
+
return setPopover({
|
|
133
|
+
anchorEl: event.currentTarget,
|
|
134
|
+
el: el
|
|
135
|
+
});
|
|
136
|
+
};
|
|
137
|
+
var handleChange = function handleChange(val) {
|
|
138
|
+
if (typeof val === 'string') {
|
|
139
|
+
editor.chain().focus().insertContent(val).run();
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_reactDom["default"].createPortal(/*#__PURE__*/_react["default"].createElement("div", {
|
|
143
|
+
ref: containerRef,
|
|
144
|
+
className: "insert-character-dialog",
|
|
145
|
+
style: {
|
|
146
|
+
position: 'absolute',
|
|
147
|
+
top: "".concat(position.top, "px"),
|
|
148
|
+
left: "".concat(position.left, "px"),
|
|
149
|
+
maxWidth: '500px',
|
|
150
|
+
zIndex: 99
|
|
151
|
+
}
|
|
152
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_mathToolbar.PureToolbar, {
|
|
153
|
+
keyPadCharacterRef: opts.keyPadCharacterRef,
|
|
154
|
+
setKeypadInteraction: opts.setKeypadInteraction,
|
|
155
|
+
autoFocus: true,
|
|
156
|
+
noDecimal: true,
|
|
157
|
+
hideInput: true,
|
|
158
|
+
noLatexHandling: true,
|
|
159
|
+
hideDoneButtonBackground: true,
|
|
160
|
+
layoutForKeyPad: layoutForCharacters,
|
|
161
|
+
additionalKeys: configToUse.characters.reduce(function (arr, n) {
|
|
162
|
+
arr = [].concat((0, _toConsumableArray2["default"])(arr), (0, _toConsumableArray2["default"])(n.map(function (k) {
|
|
163
|
+
return _objectSpread({
|
|
164
|
+
name: (0, _get["default"])(k, 'name') || k,
|
|
165
|
+
write: (0, _get["default"])(k, 'write') || k,
|
|
166
|
+
label: (0, _get["default"])(k, 'label') || k,
|
|
167
|
+
category: 'character',
|
|
168
|
+
extraClass: 'character',
|
|
169
|
+
extraProps: _objectSpread(_objectSpread({}, k.extraProps || {}), {}, {
|
|
170
|
+
style: _objectSpread(_objectSpread({}, (k.extraProps || {}).style), {}, {
|
|
171
|
+
border: '1px solid #000'
|
|
172
|
+
})
|
|
173
|
+
})
|
|
174
|
+
}, configToUse.hasPreview ? {
|
|
175
|
+
actions: {
|
|
176
|
+
onMouseEnter: function onMouseEnter(ev) {
|
|
177
|
+
return renderPopOver(ev, k);
|
|
178
|
+
},
|
|
179
|
+
onMouseLeave: closePopOver
|
|
180
|
+
}
|
|
181
|
+
} : {});
|
|
182
|
+
})));
|
|
183
|
+
return arr;
|
|
184
|
+
}, []),
|
|
185
|
+
keypadMode: "language",
|
|
186
|
+
onChange: handleChange,
|
|
187
|
+
onDone: onClose
|
|
188
|
+
}))), document.body), popover && /*#__PURE__*/_reactDom["default"].createPortal(/*#__PURE__*/_react["default"].createElement(_customPopper["default"], {
|
|
189
|
+
onClose: closePopOver,
|
|
190
|
+
anchorEl: popover.anchorEl
|
|
191
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, popover.el.label), /*#__PURE__*/_react["default"].createElement("div", {
|
|
192
|
+
style: {
|
|
193
|
+
fontSize: 20,
|
|
194
|
+
lineHeight: '20px'
|
|
195
|
+
}
|
|
196
|
+
}, popover.el.description), /*#__PURE__*/_react["default"].createElement("div", {
|
|
197
|
+
style: {
|
|
198
|
+
fontSize: 20,
|
|
199
|
+
lineHeight: '20px'
|
|
200
|
+
}
|
|
201
|
+
}, popover.el.unicode)), document.body));
|
|
202
|
+
}
|
|
203
|
+
CharacterPicker.propTypes = {
|
|
204
|
+
editor: _propTypes["default"].object,
|
|
205
|
+
opts: _propTypes["default"].object,
|
|
206
|
+
onClose: _propTypes["default"].func.isRequired
|
|
207
|
+
};
|
|
208
|
+
//# sourceMappingURL=CharacterPicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CharacterPicker.js","names":["_react","_interopRequireWildcard","require","_reactDom","_interopRequireDefault","_propTypes","_get","_mathToolbar","_customPopper","_characterUtils","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","CharacterIcon","exports","_ref","letter","createElement","style","fontSize","lineHeight","propTypes","PropTypes","string","CharacterPicker","_ref2","_opts$characters","editor","opts","onClose","characters","containerRef","useRef","_useState","useState","top","left","_useState2","_slicedToArray2","position","setPosition","_useState3","_useState4","popover","setPopover","configToUse","useMemo","spanishConfig","language","specialConfig","layoutForCharacters","reduce","obj","arr","columns","rows","closePopOver","useEffect","editorDOM","options","element","editorRect","getBoundingClientRect","bodyRect","document","body","from","state","selection","start","view","coordsAtPos","Math","abs","height","y","current","offsetHeight","handleClickOutside","contains","target","dom","addEventListener","removeEventListener","renderPopOver","event","el","anchorEl","currentTarget","handleChange","val","chain","focus","insertContent","run","Fragment","ReactDOM","createPortal","ref","className","concat","maxWidth","zIndex","PureToolbar","keyPadCharacterRef","setKeypadInteraction","autoFocus","noDecimal","hideInput","noLatexHandling","hideDoneButtonBackground","layoutForKeyPad","additionalKeys","_toConsumableArray2","map","k","name","write","label","category","extraClass","extraProps","border","hasPreview","actions","onMouseEnter","ev","onMouseLeave","keypadMode","onChange","onDone","description","unicode","object","func","isRequired"],"sources":["../../src/components/CharacterPicker.jsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport get from 'lodash/get';\n\nimport { PureToolbar } from '@pie-lib/math-toolbar';\n\nimport CustomPopper from './characters/custom-popper';\nimport { spanishConfig, specialConfig } from './characters/characterUtils';\n\nconst CharacterIcon = ({ letter }) => (\n <div\n style={{\n fontSize: '24px',\n lineHeight: '24px',\n }}\n >\n {letter}\n </div>\n);\n\nCharacterIcon.propTypes = {\n letter: PropTypes.string,\n};\n\nexport function CharacterPicker({ editor, opts, onClose }) {\n if (!opts?.characters?.length) {\n return null;\n }\n\n const containerRef = useRef(null);\n const [position, setPosition] = useState({ top: 0, left: 0 });\n const [popover, setPopover] = useState(null);\n\n const configToUse = useMemo(() => {\n if (!opts) return spanishConfig;\n\n switch (true) {\n case opts.language === 'spanish':\n return spanishConfig;\n case opts.language === 'special':\n return specialConfig;\n default:\n return opts;\n }\n }, [opts]);\n\n const layoutForCharacters = useMemo(\n () =>\n configToUse.characters.reduce(\n (obj, arr) => {\n if (arr.length >= obj.columns) {\n obj.columns = arr.length;\n }\n\n return obj;\n },\n { rows: configToUse.characters.length, columns: 0 },\n ),\n [configToUse],\n );\n\n const closePopOver = () => setPopover(null);\n\n useEffect(\n () => () => {\n closePopOver();\n },\n [],\n );\n\n useEffect(() => {\n if (!editor) return;\n\n // Calculate position relative to selection\n const editorDOM = editor.options.element;\n const editorRect = editorDOM.getBoundingClientRect();\n const bodyRect = document.body.getBoundingClientRect();\n const { from } = editor.state.selection;\n const start = editor.view.coordsAtPos(from);\n\n let top = editorRect.top + Math.abs(bodyRect.top) + editorRect.height + 60;\n\n if (editorRect.y > containerRef.current.offsetHeight) {\n top = top - (containerRef.current.offsetHeight + editorRect.height) - 80;\n }\n\n setPosition({\n // top: start.top + Math.abs(bodyRect.top) - containerRef.current.offsetHeight - 10 + additionalTopOffset, // shift above\n top: top,\n left: start.left,\n });\n\n const handleClickOutside = (e) => {\n if (containerRef.current && !containerRef.current.contains(e.target) && !editor.view.dom.contains(e.target)) {\n onClose();\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [editor, onClose]);\n\n const renderPopOver = (event, el) => setPopover({ anchorEl: event.currentTarget, el });\n\n const handleChange = (val) => {\n if (typeof val === 'string') {\n editor\n .chain()\n .focus()\n .insertContent(val)\n .run();\n }\n };\n\n return (\n <>\n {ReactDOM.createPortal(\n <div\n ref={containerRef}\n className=\"insert-character-dialog\"\n style={{\n position: 'absolute',\n top: `${position.top}px`,\n left: `${position.left}px`,\n maxWidth: '500px',\n zIndex: 99,\n }}\n >\n <div>\n <PureToolbar\n keyPadCharacterRef={opts.keyPadCharacterRef}\n setKeypadInteraction={opts.setKeypadInteraction}\n autoFocus\n noDecimal\n hideInput\n noLatexHandling\n hideDoneButtonBackground\n layoutForKeyPad={layoutForCharacters}\n additionalKeys={configToUse.characters.reduce((arr, n) => {\n arr = [\n ...arr,\n ...n.map((k) => ({\n name: get(k, 'name') || k,\n write: get(k, 'write') || k,\n label: get(k, 'label') || k,\n category: 'character',\n extraClass: 'character',\n extraProps: {\n ...(k.extraProps || {}),\n style: {\n ...(k.extraProps || {}).style,\n border: '1px solid #000',\n },\n },\n ...(configToUse.hasPreview\n ? {\n actions: {\n onMouseEnter: (ev) => renderPopOver(ev, k),\n onMouseLeave: closePopOver,\n },\n }\n : {}),\n })),\n ];\n\n return arr;\n }, [])}\n keypadMode=\"language\"\n onChange={handleChange}\n onDone={onClose}\n />\n </div>\n </div>,\n document.body,\n )}\n {popover &&\n ReactDOM.createPortal(\n <CustomPopper onClose={closePopOver} anchorEl={popover.anchorEl}>\n <div>{popover.el.label}</div>\n <div style={{ fontSize: 20, lineHeight: '20px' }}>{popover.el.description}</div>\n <div style={{ fontSize: 20, lineHeight: '20px' }}>{popover.el.unicode}</div>\n </CustomPopper>,\n document.body,\n )}\n </>\n );\n}\n\nCharacterPicker.propTypes = {\n editor: PropTypes.object,\n opts: PropTypes.object,\n onClose: PropTypes.func.isRequired,\n};\n\nexport { CharacterIcon };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.symbol.js");
|
|
4
|
+
require("core-js/modules/es.array.iterator.js");
|
|
5
|
+
require("core-js/modules/es.object.define-properties.js");
|
|
6
|
+
require("core-js/modules/es.object.define-property.js");
|
|
7
|
+
require("core-js/modules/es.object.get-own-property-descriptor.js");
|
|
8
|
+
require("core-js/modules/es.object.get-own-property-descriptors.js");
|
|
9
|
+
require("core-js/modules/es.object.keys.js");
|
|
10
|
+
require("core-js/modules/es.string.iterator.js");
|
|
11
|
+
require("core-js/modules/es.weak-map.js");
|
|
12
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
13
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
14
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
15
|
+
Object.defineProperty(exports, "__esModule", {
|
|
16
|
+
value: true
|
|
17
|
+
});
|
|
18
|
+
exports["default"] = exports.EditableHtml = void 0;
|
|
19
|
+
require("core-js/modules/es.array.concat.js");
|
|
20
|
+
require("core-js/modules/es.array.filter.js");
|
|
21
|
+
require("core-js/modules/es.array.for-each.js");
|
|
22
|
+
require("core-js/modules/es.array.includes.js");
|
|
23
|
+
require("core-js/modules/es.object.entries.js");
|
|
24
|
+
require("core-js/modules/es.object.to-string.js");
|
|
25
|
+
require("core-js/modules/web.dom-collections.for-each.js");
|
|
26
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
27
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
28
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
29
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
30
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
31
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
32
|
+
var _react2 = require("@tiptap/react");
|
|
33
|
+
var _starterKit = _interopRequireDefault(require("@tiptap/starter-kit"));
|
|
34
|
+
var _extensionTextStyle = require("@tiptap/extension-text-style");
|
|
35
|
+
var _extensionCharacterCount = require("@tiptap/extension-character-count");
|
|
36
|
+
var _extensionSuperscript = _interopRequireDefault(require("@tiptap/extension-superscript"));
|
|
37
|
+
var _extensionSubscript = _interopRequireDefault(require("@tiptap/extension-subscript"));
|
|
38
|
+
var _extensionTextAlign = _interopRequireDefault(require("@tiptap/extension-text-align"));
|
|
39
|
+
var _extensionImage = _interopRequireDefault(require("@tiptap/extension-image"));
|
|
40
|
+
var _styles = require("@mui/material/styles");
|
|
41
|
+
var _extendedTable = _interopRequireDefault(require("../extensions/extended-table"));
|
|
42
|
+
var _extensionTableRow = require("@tiptap/extension-table-row");
|
|
43
|
+
var _extensionTableCell = require("@tiptap/extension-table-cell");
|
|
44
|
+
var _extensionTableHeader = require("@tiptap/extension-table-header");
|
|
45
|
+
var _responseArea = require("../extensions/responseArea");
|
|
46
|
+
var _math = require("../extensions/math");
|
|
47
|
+
var _image = require("../extensions/image");
|
|
48
|
+
var _media = require("../extensions/media");
|
|
49
|
+
var _css = require("../extensions/css");
|
|
50
|
+
var _TiptapContainer = _interopRequireDefault(require("./TiptapContainer"));
|
|
51
|
+
var _size = require("../utils/size");
|
|
52
|
+
var _extensions = require("../extensions");
|
|
53
|
+
var _excluded = ["customPlugins"];
|
|
54
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
55
|
+
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; }
|
|
56
|
+
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; }
|
|
57
|
+
var defaultToolbarOpts = {
|
|
58
|
+
position: 'bottom',
|
|
59
|
+
alignment: 'left',
|
|
60
|
+
alwaysVisible: false,
|
|
61
|
+
showDone: true,
|
|
62
|
+
doneOn: 'blur'
|
|
63
|
+
};
|
|
64
|
+
var defaultResponseAreaProps = {
|
|
65
|
+
options: {},
|
|
66
|
+
respAreaToolbar: function respAreaToolbar() {},
|
|
67
|
+
onHandleAreaChange: function onHandleAreaChange() {}
|
|
68
|
+
};
|
|
69
|
+
var DEFAULT_ACTIVE_PLUGINS = ['bold', 'italic', 'underline', 'strikethrough', 'code', 'bulleted-list', 'numbered-list', 'image', 'math', 'languageCharacters', 'text-align', 'table', 'video', 'audio', 'responseArea', 'superscript', 'subscript', 'css', 'h3', 'undo', 'redo'];
|
|
70
|
+
var cssVariables = {
|
|
71
|
+
'--white': '#fff',
|
|
72
|
+
'--black': '#2e2b29',
|
|
73
|
+
'--black-contrast': '#110f0e',
|
|
74
|
+
'--gray-1': 'rgba(61, 37, 20, .05)',
|
|
75
|
+
'--gray-2': 'rgba(61, 37, 20, .08)',
|
|
76
|
+
'--gray-3': 'rgba(61, 37, 20, .12)',
|
|
77
|
+
'--gray-4': 'rgba(53, 38, 28, .3)',
|
|
78
|
+
'--gray-5': 'rgba(28, 25, 23, .6)',
|
|
79
|
+
'--green': '#22c55e',
|
|
80
|
+
'--purple': '#6a00f5',
|
|
81
|
+
'--purple-contrast': '#5800cc',
|
|
82
|
+
'--purple-light': 'rgba(88, 5, 255, .05)',
|
|
83
|
+
'--yellow-contrast': '#facc15',
|
|
84
|
+
'--yellow': 'rgba(250, 204, 21, .4)',
|
|
85
|
+
'--yellow-light': '#fffae5',
|
|
86
|
+
'--red': '#ff5c33',
|
|
87
|
+
'--red-light': '#ffebe5',
|
|
88
|
+
'--shadow': "0px 12px 33px 0px rgba(0, 0, 0, .06),\n 0px 3.618px 9.949px 0px rgba(0, 0, 0, .04)"
|
|
89
|
+
};
|
|
90
|
+
var EditableHtml = exports.EditableHtml = function EditableHtml(props) {
|
|
91
|
+
var _ref = props.pluginProps || {},
|
|
92
|
+
showParagraphs = _ref.showParagraphs,
|
|
93
|
+
separateParagraphs = _ref.separateParagraphs;
|
|
94
|
+
var _useState = (0, _react.useState)([]),
|
|
95
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
96
|
+
pendingImages = _useState2[0],
|
|
97
|
+
setPendingImages = _useState2[1];
|
|
98
|
+
var _useState3 = (0, _react.useState)(false),
|
|
99
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
100
|
+
scheduled = _useState4[0],
|
|
101
|
+
setScheduled = _useState4[1];
|
|
102
|
+
var toolbarOpts = props.toolbarOpts;
|
|
103
|
+
var toolbarOptsToUse = _objectSpread(_objectSpread({}, defaultToolbarOpts), toolbarOpts);
|
|
104
|
+
var activePluginsToUse = (0, _react.useMemo)(function () {
|
|
105
|
+
var _ref3, _props$responseAreaPr;
|
|
106
|
+
var _ref2 = props.pluginProps || {},
|
|
107
|
+
customPlugins = _ref2.customPlugins,
|
|
108
|
+
otherPluginProps = (0, _objectWithoutProperties2["default"])(_ref2, _excluded);
|
|
109
|
+
customPlugins = customPlugins || [];
|
|
110
|
+
var filteredActivePlugins = (_ref3 = props.activePlugins || DEFAULT_ACTIVE_PLUGINS) === null || _ref3 === void 0 ? void 0 : _ref3.filter(function (pluginName) {
|
|
111
|
+
var pluginInfo = otherPluginProps[pluginName] || {};
|
|
112
|
+
return !pluginInfo || !pluginInfo.disabled;
|
|
113
|
+
});
|
|
114
|
+
return (0, _extensions.buildExtensions)(filteredActivePlugins, customPlugins, {
|
|
115
|
+
math: {},
|
|
116
|
+
textAlign: {},
|
|
117
|
+
html: {},
|
|
118
|
+
extraCSSRules: props.extraCSSRules || {},
|
|
119
|
+
image: {},
|
|
120
|
+
toolbar: {},
|
|
121
|
+
table: {},
|
|
122
|
+
responseArea: {
|
|
123
|
+
type: (_props$responseAreaPr = props.responseAreaProps) === null || _props$responseAreaPr === void 0 ? void 0 : _props$responseAreaPr.type
|
|
124
|
+
},
|
|
125
|
+
languageCharacters: props.languageCharactersProps,
|
|
126
|
+
keyPadCharacterRef: {},
|
|
127
|
+
setKeypadInteraction: {},
|
|
128
|
+
media: {}
|
|
129
|
+
});
|
|
130
|
+
}, [props]);
|
|
131
|
+
var extensions = [_extensionTextStyle.TextStyleKit, _extensionCharacterCount.CharacterCount.configure({
|
|
132
|
+
limit: props.charactersLimit || 1000000
|
|
133
|
+
}), _starterKit["default"], _extendedTable["default"], _extensionTableRow.TableRow, _extensionTableHeader.TableHeader, _extensionTableCell.TableCell, _responseArea.ResponseAreaExtension.configure(props.responseAreaProps), _responseArea.ExplicitConstructedResponseNode.configure(props.responseAreaProps), _responseArea.DragInTheBlankNode.configure(props.responseAreaProps), _responseArea.InlineDropdownNode.configure(props.responseAreaProps), _math.MathNode.configure({
|
|
134
|
+
toolbarOpts: toolbarOptsToUse
|
|
135
|
+
}), _extensionSubscript["default"], _extensionSuperscript["default"], _extensionTextAlign["default"].configure({
|
|
136
|
+
types: ['heading', 'paragraph'],
|
|
137
|
+
alignments: ['left', 'right', 'center']
|
|
138
|
+
}), _extensionImage["default"], _image.ImageUploadNode.configure({
|
|
139
|
+
toolbarOpts: toolbarOptsToUse,
|
|
140
|
+
imageHandling: {
|
|
141
|
+
disableImageAlignmentButtons: props.disableImageAlignmentButtons,
|
|
142
|
+
onDone: function onDone() {
|
|
143
|
+
var _props$onDone;
|
|
144
|
+
return (_props$onDone = props.onDone) === null || _props$onDone === void 0 ? void 0 : _props$onDone.call(props, editor.getHTML());
|
|
145
|
+
},
|
|
146
|
+
onDelete: props.imageSupport && props.imageSupport["delete"] && function (node, done) {
|
|
147
|
+
var src = node.attrs.src;
|
|
148
|
+
props.imageSupport["delete"](src, function (e) {
|
|
149
|
+
var newPendingImages = pendingImages.filter(function (img) {
|
|
150
|
+
return img.key !== node.key;
|
|
151
|
+
});
|
|
152
|
+
var newState = {
|
|
153
|
+
pendingImages: newPendingImages,
|
|
154
|
+
scheduled: scheduled && newPendingImages.length === 0 ? false : scheduled
|
|
155
|
+
};
|
|
156
|
+
setPendingImages(newState.pendingImages);
|
|
157
|
+
setScheduled(newState.scheduled);
|
|
158
|
+
done();
|
|
159
|
+
});
|
|
160
|
+
},
|
|
161
|
+
insertImageRequested: props.imageSupport && function (addedImage, getHandler) {
|
|
162
|
+
var onFinish = function onFinish(result) {
|
|
163
|
+
var _cb;
|
|
164
|
+
var cb;
|
|
165
|
+
if (scheduled && result) {
|
|
166
|
+
// finish editing only on success
|
|
167
|
+
cb = props.onChange;
|
|
168
|
+
}
|
|
169
|
+
var newPendingImages = pendingImages.filter(function (img) {
|
|
170
|
+
return img.key !== addedImage.key;
|
|
171
|
+
});
|
|
172
|
+
var newState = {
|
|
173
|
+
pendingImages: newPendingImages
|
|
174
|
+
};
|
|
175
|
+
if (newPendingImages.length === 0) {
|
|
176
|
+
newState.scheduled = false;
|
|
177
|
+
}
|
|
178
|
+
setPendingImages(newState.pendingImages);
|
|
179
|
+
setScheduled(newState.scheduled);
|
|
180
|
+
(_cb = cb) === null || _cb === void 0 || _cb(editor.getHTML());
|
|
181
|
+
};
|
|
182
|
+
var callback = function callback() {
|
|
183
|
+
/**
|
|
184
|
+
* The handler is the object through which the outer context
|
|
185
|
+
* communicates file upload events like: fileChosen, cancel, progress
|
|
186
|
+
*/
|
|
187
|
+
var handler = getHandler(onFinish);
|
|
188
|
+
props.imageSupport.add(handler);
|
|
189
|
+
};
|
|
190
|
+
setPendingImages([].concat((0, _toConsumableArray2["default"])(pendingImages), [addedImage]));
|
|
191
|
+
callback();
|
|
192
|
+
},
|
|
193
|
+
maxImageWidth: props.maxImageWidth,
|
|
194
|
+
maxImageHeight: props.maxImageHeight
|
|
195
|
+
},
|
|
196
|
+
limit: 3
|
|
197
|
+
}), _media.Media.configure({
|
|
198
|
+
uploadSoundSupport: props.uploadSoundSupport
|
|
199
|
+
}), _css.CSSMark.configure({
|
|
200
|
+
extraCSSRules: props.extraCSSRules
|
|
201
|
+
})];
|
|
202
|
+
var editor = (0, _react2.useEditor)({
|
|
203
|
+
extensions: extensions,
|
|
204
|
+
immediatelyRender: false,
|
|
205
|
+
editorProps: {
|
|
206
|
+
handleKeyDown: function handleKeyDown(view, event) {
|
|
207
|
+
if (props.onKeyDown) {
|
|
208
|
+
return props.onKeyDown(event);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// Return false to let default behavior continue
|
|
212
|
+
return false;
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
editable: !props.disabled,
|
|
216
|
+
content: props.markup,
|
|
217
|
+
onUpdate: function onUpdate(_ref4) {
|
|
218
|
+
var editor = _ref4.editor,
|
|
219
|
+
transaction = _ref4.transaction;
|
|
220
|
+
if (transaction.isDone) {
|
|
221
|
+
var _props$onChange;
|
|
222
|
+
(_props$onChange = props.onChange) === null || _props$onChange === void 0 || _props$onChange.call(props, editor.getHTML());
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
onBlur: function onBlur(_ref5) {
|
|
226
|
+
var editor = _ref5.editor;
|
|
227
|
+
var respAreaToolbarActive = editor.isActive('inline_dropdown') || editor.isActive('explicit_constructed_response');
|
|
228
|
+
if (respAreaToolbarActive) {
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
if (props.markup !== editor.getHTML()) {
|
|
232
|
+
var _props$onChange2;
|
|
233
|
+
(_props$onChange2 = props.onChange) === null || _props$onChange2 === void 0 || _props$onChange2.call(props, editor.getHTML());
|
|
234
|
+
}
|
|
235
|
+
if (toolbarOptsToUse.doneOn === 'blur') {
|
|
236
|
+
var _props$onDone2;
|
|
237
|
+
(_props$onDone2 = props.onDone) === null || _props$onDone2 === void 0 || _props$onDone2.call(props, editor.getHTML());
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}, [props.charactersLimit]);
|
|
241
|
+
(0, _react.useEffect)(function () {
|
|
242
|
+
editor === null || editor === void 0 || editor.setEditable(!props.disabled);
|
|
243
|
+
}, [props.disabled, editor]);
|
|
244
|
+
(0, _react.useEffect)(function () {
|
|
245
|
+
if (!editor) {
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
if (props.markup !== editor.getHTML()) {
|
|
249
|
+
editor.commands.setContent(props.markup, false); // false = don’t emit update
|
|
250
|
+
}
|
|
251
|
+
}, [props.markup, editor]);
|
|
252
|
+
(0, _react.useEffect)(function () {
|
|
253
|
+
Object.entries(cssVariables).forEach(function (_ref6) {
|
|
254
|
+
var _ref7 = (0, _slicedToArray2["default"])(_ref6, 2),
|
|
255
|
+
key = _ref7[0],
|
|
256
|
+
value = _ref7[1];
|
|
257
|
+
document.documentElement.style.setProperty(key, value);
|
|
258
|
+
});
|
|
259
|
+
}, []);
|
|
260
|
+
var editorState = (0, _react2.useEditorState)({
|
|
261
|
+
editor: editor,
|
|
262
|
+
selector: function selector(ctx) {
|
|
263
|
+
var _ctx$editor;
|
|
264
|
+
return {
|
|
265
|
+
isFocused: (_ctx$editor = ctx.editor) === null || _ctx$editor === void 0 ? void 0 : _ctx$editor.isFocused
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
});
|
|
269
|
+
var sizeStyle = (0, _react.useMemo)(function () {
|
|
270
|
+
var minWidth = props.minWidth,
|
|
271
|
+
width = props.width,
|
|
272
|
+
maxWidth = props.maxWidth,
|
|
273
|
+
minHeight = props.minHeight,
|
|
274
|
+
height = props.height,
|
|
275
|
+
maxHeight = props.maxHeight;
|
|
276
|
+
return {
|
|
277
|
+
width: (0, _size.valueToSize)(width),
|
|
278
|
+
minWidth: (0, _size.valueToSize)(minWidth),
|
|
279
|
+
maxWidth: (0, _size.valueToSize)(maxWidth),
|
|
280
|
+
height: (0, _size.valueToSize)(height),
|
|
281
|
+
minHeight: (0, _size.valueToSize)(minHeight),
|
|
282
|
+
maxHeight: (0, _size.valueToSize)(maxHeight)
|
|
283
|
+
};
|
|
284
|
+
}, [props]);
|
|
285
|
+
return /*#__PURE__*/_react["default"].createElement(_TiptapContainer["default"], (0, _extends2["default"])({}, _objectSpread(_objectSpread({}, props), {}, {
|
|
286
|
+
activePlugins: activePluginsToUse,
|
|
287
|
+
toolbarOpts: toolbarOptsToUse
|
|
288
|
+
}), {
|
|
289
|
+
editorState: editorState,
|
|
290
|
+
editor: editor
|
|
291
|
+
}), editor && /*#__PURE__*/_react["default"].createElement(StyledEditorContent, {
|
|
292
|
+
style: {
|
|
293
|
+
minHeight: sizeStyle.minHeight,
|
|
294
|
+
height: sizeStyle.height,
|
|
295
|
+
maxHeight: sizeStyle.maxHeight
|
|
296
|
+
},
|
|
297
|
+
showParagraph: showParagraphs && !showParagraphs.disabled,
|
|
298
|
+
separateParagraph: separateParagraphs && !separateParagraphs.disabled,
|
|
299
|
+
editor: editor
|
|
300
|
+
}));
|
|
301
|
+
};
|
|
302
|
+
var StyledEditorContent = (0, _styles.styled)(_react2.EditorContent, {
|
|
303
|
+
shouldForwardProp: function shouldForwardProp(prop) {
|
|
304
|
+
return !['showParagraph', 'separateParagraph'].includes(prop);
|
|
305
|
+
}
|
|
306
|
+
})(function (_ref8) {
|
|
307
|
+
var showParagraph = _ref8.showParagraph,
|
|
308
|
+
separateParagraph = _ref8.separateParagraph;
|
|
309
|
+
return {
|
|
310
|
+
outline: 'none !important',
|
|
311
|
+
'& .ProseMirror': _objectSpread(_objectSpread({
|
|
312
|
+
padding: '5px',
|
|
313
|
+
maxHeight: '500px',
|
|
314
|
+
outline: 'none !important',
|
|
315
|
+
position: 'initial',
|
|
316
|
+
'& > p': {
|
|
317
|
+
margin: '0'
|
|
318
|
+
}
|
|
319
|
+
}, showParagraph && {
|
|
320
|
+
'& > p:has(+ p)::after': {
|
|
321
|
+
display: 'block',
|
|
322
|
+
content: '"¶"',
|
|
323
|
+
fontSize: '1em',
|
|
324
|
+
color: '#146EB3'
|
|
325
|
+
}
|
|
326
|
+
}), separateParagraph && {
|
|
327
|
+
'& > div:has(+ div)': {
|
|
328
|
+
marginBottom: '1em'
|
|
329
|
+
}
|
|
330
|
+
})
|
|
331
|
+
};
|
|
332
|
+
});
|
|
333
|
+
var _default = exports["default"] = EditableHtml;
|
|
334
|
+
//# sourceMappingURL=EditableHtml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditableHtml.js","names":["_react","_interopRequireWildcard","require","_react2","_starterKit","_interopRequireDefault","_extensionTextStyle","_extensionCharacterCount","_extensionSuperscript","_extensionSubscript","_extensionTextAlign","_extensionImage","_styles","_extendedTable","_extensionTableRow","_extensionTableCell","_extensionTableHeader","_responseArea","_math","_image","_media","_css","_TiptapContainer","_size","_extensions","_excluded","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defaultToolbarOpts","position","alignment","alwaysVisible","showDone","doneOn","defaultResponseAreaProps","options","respAreaToolbar","onHandleAreaChange","DEFAULT_ACTIVE_PLUGINS","cssVariables","EditableHtml","exports","props","_ref","pluginProps","showParagraphs","separateParagraphs","_useState","useState","_useState2","_slicedToArray2","pendingImages","setPendingImages","_useState3","_useState4","scheduled","setScheduled","toolbarOpts","toolbarOptsToUse","activePluginsToUse","useMemo","_ref3","_props$responseAreaPr","_ref2","customPlugins","otherPluginProps","_objectWithoutProperties2","filteredActivePlugins","activePlugins","pluginName","pluginInfo","disabled","buildExtensions","math","textAlign","html","extraCSSRules","image","toolbar","table","responseArea","type","responseAreaProps","languageCharacters","languageCharactersProps","keyPadCharacterRef","setKeypadInteraction","media","extensions","TextStyleKit","CharacterCount","configure","limit","charactersLimit","StarterKit","ExtendedTable","TableRow","TableHeader","TableCell","ResponseAreaExtension","ExplicitConstructedResponseNode","DragInTheBlankNode","InlineDropdownNode","MathNode","SubScript","SuperScript","TextAlign","types","alignments","Image","ImageUploadNode","imageHandling","disableImageAlignmentButtons","onDone","_props$onDone","editor","getHTML","onDelete","imageSupport","node","done","src","attrs","newPendingImages","img","key","newState","insertImageRequested","addedImage","getHandler","onFinish","result","_cb","cb","onChange","callback","handler","add","concat","_toConsumableArray2","maxImageWidth","maxImageHeight","Media","uploadSoundSupport","CSSMark","useEditor","immediatelyRender","editorProps","handleKeyDown","view","event","onKeyDown","editable","content","markup","onUpdate","_ref4","transaction","isDone","_props$onChange","onBlur","_ref5","respAreaToolbarActive","isActive","_props$onChange2","_props$onDone2","useEffect","setEditable","commands","setContent","entries","_ref6","_ref7","value","document","documentElement","style","setProperty","editorState","useEditorState","selector","ctx","_ctx$editor","isFocused","sizeStyle","minWidth","width","maxWidth","minHeight","height","maxHeight","valueToSize","createElement","_extends2","StyledEditorContent","showParagraph","separateParagraph","styled","EditorContent","shouldForwardProp","prop","includes","_ref8","outline","padding","margin","display","fontSize","color","marginBottom","_default"],"sources":["../../src/components/EditableHtml.jsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { EditorContent, useEditor, useEditorState } from '@tiptap/react';\nimport StarterKit from '@tiptap/starter-kit';\nimport { TextStyleKit } from '@tiptap/extension-text-style';\nimport { CharacterCount } from '@tiptap/extension-character-count';\nimport SuperScript from '@tiptap/extension-superscript';\nimport SubScript from '@tiptap/extension-subscript';\nimport TextAlign from '@tiptap/extension-text-align';\nimport Image from '@tiptap/extension-image';\nimport { styled } from '@mui/material/styles';\n\nimport ExtendedTable from '../extensions/extended-table';\nimport { TableRow } from '@tiptap/extension-table-row';\nimport { TableCell } from '@tiptap/extension-table-cell';\nimport { TableHeader } from '@tiptap/extension-table-header';\nimport {\n ExplicitConstructedResponseNode,\n DragInTheBlankNode,\n InlineDropdownNode,\n ResponseAreaExtension,\n} from '../extensions/responseArea';\nimport { MathNode } from '../extensions/math';\nimport { ImageUploadNode } from '../extensions/image';\nimport { Media } from '../extensions/media';\nimport { CSSMark } from '../extensions/css';\n\nimport EditorContainer from './TiptapContainer';\nimport { valueToSize } from '../utils/size';\nimport { buildExtensions } from '../extensions';\n\nconst defaultToolbarOpts = {\n position: 'bottom',\n alignment: 'left',\n alwaysVisible: false,\n showDone: true,\n doneOn: 'blur',\n};\n\nconst defaultResponseAreaProps = {\n options: {},\n respAreaToolbar: () => {},\n onHandleAreaChange: () => {},\n};\n\nconst DEFAULT_ACTIVE_PLUGINS = [\n 'bold',\n 'italic',\n 'underline',\n 'strikethrough',\n 'code',\n 'bulleted-list',\n 'numbered-list',\n 'image',\n 'math',\n 'languageCharacters',\n 'text-align',\n 'table',\n 'video',\n 'audio',\n 'responseArea',\n 'superscript',\n 'subscript',\n 'css',\n 'h3',\n 'undo',\n 'redo',\n];\n\nconst cssVariables = {\n '--white': '#fff',\n '--black': '#2e2b29',\n '--black-contrast': '#110f0e',\n '--gray-1': 'rgba(61, 37, 20, .05)',\n '--gray-2': 'rgba(61, 37, 20, .08)',\n '--gray-3': 'rgba(61, 37, 20, .12)',\n '--gray-4': 'rgba(53, 38, 28, .3)',\n '--gray-5': 'rgba(28, 25, 23, .6)',\n '--green': '#22c55e',\n '--purple': '#6a00f5',\n '--purple-contrast': '#5800cc',\n '--purple-light': 'rgba(88, 5, 255, .05)',\n '--yellow-contrast': '#facc15',\n '--yellow': 'rgba(250, 204, 21, .4)',\n '--yellow-light': '#fffae5',\n '--red': '#ff5c33',\n '--red-light': '#ffebe5',\n '--shadow': `0px 12px 33px 0px rgba(0, 0, 0, .06),\n 0px 3.618px 9.949px 0px rgba(0, 0, 0, .04)`,\n};\n\nexport const EditableHtml = (props) => {\n const { showParagraphs, separateParagraphs } = props.pluginProps || {};\n const [pendingImages, setPendingImages] = useState([]);\n const [scheduled, setScheduled] = useState(false);\n const { toolbarOpts } = props;\n\n const toolbarOptsToUse = {\n ...defaultToolbarOpts,\n ...toolbarOpts,\n };\n\n const activePluginsToUse = useMemo(() => {\n let { customPlugins, ...otherPluginProps } = props.pluginProps || {};\n\n customPlugins = customPlugins || [];\n\n const filteredActivePlugins = (props.activePlugins || DEFAULT_ACTIVE_PLUGINS)?.filter((pluginName) => {\n const pluginInfo = otherPluginProps[pluginName] || {};\n\n return !pluginInfo || !pluginInfo.disabled;\n });\n\n return buildExtensions(filteredActivePlugins, customPlugins, {\n math: {},\n textAlign: {},\n html: {},\n extraCSSRules: props.extraCSSRules || {},\n image: {},\n toolbar: {},\n table: {},\n responseArea: {\n type: props.responseAreaProps?.type,\n },\n languageCharacters: props.languageCharactersProps,\n keyPadCharacterRef: {},\n setKeypadInteraction: {},\n media: {},\n });\n }, [props]);\n\n const extensions = [\n TextStyleKit,\n CharacterCount.configure({\n limit: props.charactersLimit || 1000000,\n }),\n StarterKit,\n ExtendedTable,\n TableRow,\n TableHeader,\n TableCell,\n ResponseAreaExtension.configure(props.responseAreaProps),\n ExplicitConstructedResponseNode.configure(props.responseAreaProps),\n DragInTheBlankNode.configure(props.responseAreaProps),\n InlineDropdownNode.configure(props.responseAreaProps),\n MathNode.configure({\n toolbarOpts: toolbarOptsToUse,\n }),\n SubScript,\n SuperScript,\n TextAlign.configure({\n types: ['heading', 'paragraph'],\n alignments: ['left', 'right', 'center'],\n }),\n Image,\n ImageUploadNode.configure({\n toolbarOpts: toolbarOptsToUse,\n imageHandling: {\n disableImageAlignmentButtons: props.disableImageAlignmentButtons,\n onDone: () => props.onDone?.(editor.getHTML()),\n onDelete:\n props.imageSupport &&\n props.imageSupport.delete &&\n ((node, done) => {\n const { src } = node.attrs;\n\n props.imageSupport.delete(src, (e) => {\n const newPendingImages = pendingImages.filter((img) => img.key !== node.key);\n const newState = {\n pendingImages: newPendingImages,\n scheduled: scheduled && newPendingImages.length === 0 ? false : scheduled,\n };\n\n setPendingImages(newState.pendingImages);\n setScheduled(newState.scheduled);\n done();\n });\n }),\n insertImageRequested:\n props.imageSupport &&\n ((addedImage, getHandler) => {\n const onFinish = (result) => {\n let cb;\n\n if (scheduled && result) {\n // finish editing only on success\n cb = props.onChange;\n }\n\n const newPendingImages = pendingImages.filter((img) => img.key !== addedImage.key);\n const newState = {\n pendingImages: newPendingImages,\n };\n\n if (newPendingImages.length === 0) {\n newState.scheduled = false;\n }\n\n setPendingImages(newState.pendingImages);\n setScheduled(newState.scheduled);\n cb?.(editor.getHTML());\n };\n const callback = () => {\n /**\n * The handler is the object through which the outer context\n * communicates file upload events like: fileChosen, cancel, progress\n */\n const handler = getHandler(onFinish);\n props.imageSupport.add(handler);\n };\n\n setPendingImages([...pendingImages, addedImage]);\n callback();\n }),\n maxImageWidth: props.maxImageWidth,\n maxImageHeight: props.maxImageHeight,\n },\n limit: 3,\n }),\n Media.configure({\n uploadSoundSupport: props.uploadSoundSupport,\n }),\n CSSMark.configure({\n extraCSSRules: props.extraCSSRules,\n }),\n ];\n\n const editor = useEditor(\n {\n extensions,\n immediatelyRender: false,\n editorProps: {\n handleKeyDown(view, event) {\n if (props.onKeyDown) {\n return props.onKeyDown(event);\n }\n\n // Return false to let default behavior continue\n return false;\n },\n },\n editable: !props.disabled,\n content: props.markup,\n onUpdate: ({ editor, transaction }) => {\n if (transaction.isDone) {\n props.onChange?.(editor.getHTML());\n }\n },\n onBlur: ({ editor }) => {\n const respAreaToolbarActive =\n editor.isActive('inline_dropdown') || editor.isActive('explicit_constructed_response');\n\n if (respAreaToolbarActive) {\n return;\n }\n\n if (props.markup !== editor.getHTML()) {\n props.onChange?.(editor.getHTML());\n }\n\n if (toolbarOptsToUse.doneOn === 'blur') {\n props.onDone?.(editor.getHTML());\n }\n },\n },\n [props.charactersLimit],\n );\n\n useEffect(() => {\n editor?.setEditable(!props.disabled);\n }, [props.disabled, editor]);\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n\n if (props.markup !== editor.getHTML()) {\n editor.commands.setContent(props.markup, false); // false = don’t emit update\n }\n }, [props.markup, editor]);\n\n useEffect(() => {\n Object.entries(cssVariables).forEach(([key, value]) => {\n document.documentElement.style.setProperty(key, value);\n });\n }, []);\n\n const editorState = useEditorState({\n editor,\n selector: (ctx) => ({\n isFocused: ctx.editor?.isFocused,\n }),\n });\n\n const sizeStyle = useMemo(() => {\n const { minWidth, width, maxWidth, minHeight, height, maxHeight } = props;\n\n return {\n width: valueToSize(width),\n minWidth: valueToSize(minWidth),\n maxWidth: valueToSize(maxWidth),\n height: valueToSize(height),\n minHeight: valueToSize(minHeight),\n maxHeight: valueToSize(maxHeight),\n };\n }, [props]);\n\n return (\n <EditorContainer\n {...{\n ...props,\n activePlugins: activePluginsToUse,\n toolbarOpts: toolbarOptsToUse,\n }}\n editorState={editorState}\n editor={editor}\n >\n {editor && (\n <StyledEditorContent\n style={{\n minHeight: sizeStyle.minHeight,\n height: sizeStyle.height,\n maxHeight: sizeStyle.maxHeight,\n }}\n showParagraph={showParagraphs && !showParagraphs.disabled}\n separateParagraph={separateParagraphs && !separateParagraphs.disabled}\n editor={editor}\n />\n )}\n </EditorContainer>\n );\n};\n\nconst StyledEditorContent = styled(EditorContent, {\n shouldForwardProp: (prop) => !['showParagraph', 'separateParagraph'].includes(prop),\n})(({ showParagraph, separateParagraph }) => ({\n outline: 'none !important',\n '& .ProseMirror': {\n padding: '5px',\n maxHeight: '500px',\n outline: 'none !important',\n position: 'initial',\n '& > p': {\n margin: '0',\n },\n ...(showParagraph && {\n '& > p:has(+ p)::after': {\n display: 'block',\n content: '\"¶\"',\n fontSize: '1em',\n color: '#146EB3',\n },\n }),\n ...(separateParagraph && {\n '& > div:has(+ div)': {\n marginBottom: '1em',\n },\n }),\n },\n}));\n\nexport default EditableHtml;\n"],"mappings":"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","ignoreList":[]}
|