@pie-lib/editable-html-tip-tap 1.1.0-next.2 → 1.1.0-next.28

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 (110) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/lib/components/CharacterPicker.js +208 -0
  3. package/lib/components/CharacterPicker.js.map +1 -0
  4. package/lib/components/EditableHtml.js +334 -0
  5. package/lib/components/EditableHtml.js.map +1 -0
  6. package/lib/components/MenuBar.js +679 -0
  7. package/lib/components/MenuBar.js.map +1 -0
  8. package/lib/components/TiptapContainer.js +222 -0
  9. package/lib/components/TiptapContainer.js.map +1 -0
  10. package/lib/components/characters/characterUtils.js +380 -0
  11. package/lib/components/characters/characterUtils.js.map +1 -0
  12. package/lib/components/characters/custom-popper.js +45 -0
  13. package/lib/components/characters/custom-popper.js.map +1 -0
  14. package/lib/components/common/done-button.js +35 -0
  15. package/lib/components/common/done-button.js.map +1 -0
  16. package/lib/components/common/toolbar-buttons.js +156 -0
  17. package/lib/components/common/toolbar-buttons.js.map +1 -0
  18. package/lib/components/icons/CssIcon.js +26 -0
  19. package/lib/components/icons/CssIcon.js.map +1 -0
  20. package/lib/components/icons/RespArea.js +82 -0
  21. package/lib/components/icons/RespArea.js.map +1 -0
  22. package/lib/components/icons/TableIcons.js +54 -0
  23. package/lib/components/icons/TableIcons.js.map +1 -0
  24. package/lib/components/icons/TextAlign.js +164 -0
  25. package/lib/components/icons/TextAlign.js.map +1 -0
  26. package/lib/components/image/AltDialog.js +103 -0
  27. package/lib/components/image/AltDialog.js.map +1 -0
  28. package/lib/components/image/ImageToolbar.js +150 -0
  29. package/lib/components/image/ImageToolbar.js.map +1 -0
  30. package/lib/components/image/InsertImageHandler.js +148 -0
  31. package/lib/components/image/InsertImageHandler.js.map +1 -0
  32. package/lib/components/media/MediaDialog.js +613 -0
  33. package/lib/components/media/MediaDialog.js.map +1 -0
  34. package/lib/components/media/MediaToolbar.js +76 -0
  35. package/lib/components/media/MediaToolbar.js.map +1 -0
  36. package/lib/components/media/MediaWrapper.js +78 -0
  37. package/lib/components/media/MediaWrapper.js.map +1 -0
  38. package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js +89 -0
  39. package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js.map +1 -0
  40. package/lib/components/respArea/DragInTheBlank/choice.js +250 -0
  41. package/lib/components/respArea/DragInTheBlank/choice.js.map +1 -0
  42. package/lib/components/respArea/ExplicitConstructedResponse.js +126 -0
  43. package/lib/components/respArea/ExplicitConstructedResponse.js.map +1 -0
  44. package/lib/components/respArea/InlineDropdown.js +144 -0
  45. package/lib/components/respArea/InlineDropdown.js.map +1 -0
  46. package/lib/components/respArea/ToolbarIcon.js +91 -0
  47. package/lib/components/respArea/ToolbarIcon.js.map +1 -0
  48. package/lib/constants.js +12 -0
  49. package/lib/constants.js.map +1 -0
  50. package/lib/extensions/component.js +305 -0
  51. package/lib/extensions/component.js.map +1 -0
  52. package/lib/extensions/css.js +228 -0
  53. package/lib/extensions/css.js.map +1 -0
  54. package/lib/extensions/custom-toolbar-wrapper.js +109 -0
  55. package/lib/extensions/custom-toolbar-wrapper.js.map +1 -0
  56. package/lib/extensions/extended-table.js +30 -0
  57. package/lib/extensions/extended-table.js.map +1 -0
  58. package/lib/extensions/image.js +96 -0
  59. package/lib/extensions/image.js.map +1 -0
  60. package/lib/extensions/index.js +49 -0
  61. package/lib/extensions/index.js.map +1 -0
  62. package/lib/extensions/math.js +315 -0
  63. package/lib/extensions/math.js.map +1 -0
  64. package/lib/extensions/media.js +253 -0
  65. package/lib/extensions/media.js.map +1 -0
  66. package/lib/extensions/responseArea.js +460 -0
  67. package/lib/extensions/responseArea.js.map +1 -0
  68. package/lib/index.js +37 -0
  69. package/lib/index.js.map +1 -0
  70. package/lib/styles/editorContainerStyles.js +138 -0
  71. package/lib/styles/editorContainerStyles.js.map +1 -0
  72. package/lib/theme.js +9 -0
  73. package/lib/theme.js.map +1 -0
  74. package/lib/utils/size.js +32 -0
  75. package/lib/utils/size.js.map +1 -0
  76. package/package.json +7 -7
  77. package/src/__tests__/EditableHtml.test.jsx +265 -0
  78. package/src/__tests__/constants.test.js +20 -0
  79. package/src/__tests__/extensions.test.js +208 -0
  80. package/src/__tests__/index.test.jsx +146 -0
  81. package/src/__tests__/size-utils.test.js +64 -0
  82. package/src/__tests__/theme.test.js +17 -0
  83. package/src/components/__tests__/AltDialog.test.jsx +147 -0
  84. package/src/components/__tests__/CharacterPicker.test.jsx +195 -0
  85. package/src/components/__tests__/CssIcon.test.jsx +46 -0
  86. package/src/components/__tests__/DragInTheBlank.test.jsx +255 -0
  87. package/src/components/__tests__/ExplicitConstructedResponse.test.jsx +161 -0
  88. package/src/components/__tests__/ImageToolbar.test.jsx +128 -0
  89. package/src/components/__tests__/InlineDropdown.test.jsx +187 -0
  90. package/src/components/__tests__/InsertImageHandler.test.js +154 -0
  91. package/src/components/__tests__/MediaDialog.test.jsx +293 -0
  92. package/src/components/__tests__/MediaToolbar.test.jsx +74 -0
  93. package/src/components/__tests__/MediaWrapper.test.jsx +81 -0
  94. package/src/components/__tests__/MenuBar.test.jsx +217 -0
  95. package/src/components/__tests__/RespArea.test.jsx +122 -0
  96. package/src/components/__tests__/TableIcons.test.jsx +149 -0
  97. package/src/components/__tests__/TextAlign.test.jsx +167 -0
  98. package/src/components/__tests__/TiptapContainer.test.jsx +138 -0
  99. package/src/components/__tests__/characterUtils.test.js +166 -0
  100. package/src/components/__tests__/choice.test.jsx +171 -0
  101. package/src/components/__tests__/custom-popper.test.jsx +82 -0
  102. package/src/components/__tests__/done-button.test.jsx +54 -0
  103. package/src/components/__tests__/toolbar-buttons.test.jsx +234 -0
  104. package/src/extensions/__tests__/component.test.jsx +248 -0
  105. package/src/extensions/__tests__/css.test.js +196 -0
  106. package/src/extensions/__tests__/custom-toolbar-wrapper.test.jsx +180 -0
  107. package/src/extensions/__tests__/extended-table.test.js +107 -0
  108. package/src/extensions/__tests__/image.test.js +136 -0
  109. package/src/extensions/__tests__/media.test.js +270 -0
  110. package/src/extensions/__tests__/responseArea.test.js +310 -0
package/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.1.0-next.4](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.1.0-next.2...@pie-lib/editable-html-tip-tap@1.1.0-next.4) (2026-01-27)
7
+
8
+ **Note:** Version bump only for package @pie-lib/editable-html-tip-tap
9
+
10
+
11
+
12
+
13
+
6
14
  # [1.1.0-next.2](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.1.0-next.1...@pie-lib/editable-html-tip-tap@1.1.0-next.2) (2026-01-26)
7
15
 
8
16
  **Note:** Version bump only for package @pie-lib/editable-html-tip-tap
@@ -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