@bigbinary/neeto-editor 1.47.122 → 1.47.124
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/dist/Editor.js +8 -4
- package/dist/Editor.js.map +1 -1
- package/dist/FormikEditor.js +3 -3
- package/dist/Menu.js +2 -2
- package/dist/{chunk-Bmhz4YEy.js → chunk-Be5ikGpm.js} +219 -58
- package/dist/chunk-Be5ikGpm.js.map +1 -0
- package/dist/{chunk-CHpkesFt.js → chunk-CDPeBjvi.js} +2 -2
- package/dist/{chunk-CHpkesFt.js.map → chunk-CDPeBjvi.js.map} +1 -1
- package/dist/{chunk-CnsiyshR.js → chunk-C_jttcYg.js} +13 -2
- package/dist/chunk-C_jttcYg.js.map +1 -0
- package/dist/cjs/Editor.cjs.js +8 -4
- package/dist/cjs/Editor.cjs.js.map +1 -1
- package/dist/cjs/FormikEditor.cjs.js +3 -3
- package/dist/cjs/Menu.cjs.js +2 -2
- package/dist/cjs/{chunk-BGvf6C3z.cjs.js → chunk-B_7qxIrt.cjs.js} +13 -1
- package/dist/cjs/chunk-B_7qxIrt.cjs.js.map +1 -0
- package/dist/cjs/{chunk-BXZTd0jZ.cjs.js → chunk-Ch4y-VZi.cjs.js} +219 -58
- package/dist/cjs/chunk-Ch4y-VZi.cjs.js.map +1 -0
- package/dist/cjs/{chunk-DpqV12Vi.cjs.js → chunk-Zpn4p-0s.cjs.js} +2 -2
- package/dist/cjs/{chunk-DpqV12Vi.cjs.js.map → chunk-Zpn4p-0s.cjs.js.map} +1 -1
- package/dist/cjs/index.cjs.js +3 -3
- package/dist/cjs/utils.cjs.js +1 -1
- package/dist/cjs/v2/Editor.cjs.js +1 -1
- package/dist/cjs/v2/FormikEditor.cjs.js +1 -1
- package/dist/cjs/v2/index.cjs.js +1 -1
- package/dist/cjs/v2/utils.cjs.js +1 -1
- package/dist/editor-stats.html +19 -1
- package/dist/index.js +3 -3
- package/dist/utils.js +1 -1
- package/dist/v2/Editor.js +1 -1
- package/dist/v2/FormikEditor.js +1 -1
- package/dist/v2/index.js +1 -1
- package/dist/v2/utils.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-Bmhz4YEy.js.map +0 -1
- package/dist/chunk-CnsiyshR.js.map +0 -1
- package/dist/cjs/chunk-BGvf6C3z.cjs.js.map +0 -1
- package/dist/cjs/chunk-BXZTd0jZ.cjs.js.map +0 -1
|
@@ -73,6 +73,17 @@ var transformPastedHTML = function transformPastedHTML(content) {
|
|
|
73
73
|
}
|
|
74
74
|
return doc.body.innerHTML;
|
|
75
75
|
};
|
|
76
|
+
var handlePaste = function handlePaste(view, event, slice) {
|
|
77
|
+
try {
|
|
78
|
+
view.state.tr.replaceSelection(slice);
|
|
79
|
+
return false;
|
|
80
|
+
} catch (_unused) {
|
|
81
|
+
var _event$clipboardData;
|
|
82
|
+
var text = ((_event$clipboardData = event.clipboardData) === null || _event$clipboardData === void 0 ? void 0 : _event$clipboardData.getData("text/plain")) || slice.content.textBetween(0, slice.content.size, "\n").trim();
|
|
83
|
+
if (text) view.dispatch(view.state.tr.insertText(text).scrollIntoView());
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
};
|
|
76
87
|
var buildLevelsFromOptions = function buildLevelsFromOptions(options) {
|
|
77
88
|
var levels = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, EDITOR_OPTIONS.H1, 1), EDITOR_OPTIONS.H2, 2), EDITOR_OPTIONS.H3, 3), EDITOR_OPTIONS.H4, 4), EDITOR_OPTIONS.H5, 5), EDITOR_OPTIONS.H6, 6);
|
|
78
89
|
return Object.entries(levels).filter(function (heading) {
|
|
@@ -82,5 +93,5 @@ var buildLevelsFromOptions = function buildLevelsFromOptions(options) {
|
|
|
82
93
|
});
|
|
83
94
|
};
|
|
84
95
|
|
|
85
|
-
export { isEmojiSuggestionsMenuActive as a, buildLevelsFromOptions as b, transformPastedHTML as c, clipboardTextParser as d, getEditorStyles as g, isEditorOverlaysActive as i, setInitialPosition as s, transformEditorContent as t, validateAndFormatUrl as v };
|
|
86
|
-
//# sourceMappingURL=chunk-
|
|
96
|
+
export { isEmojiSuggestionsMenuActive as a, buildLevelsFromOptions as b, transformPastedHTML as c, clipboardTextParser as d, getEditorStyles as g, handlePaste as h, isEditorOverlaysActive as i, setInitialPosition as s, transformEditorContent as t, validateAndFormatUrl as v };
|
|
97
|
+
//# sourceMappingURL=chunk-C_jttcYg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk-C_jttcYg.js","sources":["../src/components/Editor/utils.js"],"sourcesContent":["import { Slice, Fragment, Node } from \"@tiptap/pm/model\";\nimport { Selection } from \"@tiptap/pm/state\";\nimport { isNotEmpty } from \"neetocist\";\n\nimport { ALL_PROTOCOL_URL_REGEXP, EDITOR_OPTIONS } from \"src/common/constants\";\n\nimport {\n EDITOR_LINE_HEIGHT,\n EDITOR_BORDER_SIZE,\n EDITOR_PADDING_SIZE,\n IMAGE_REGEX,\n IMAGE_REPLACEMENT_PATTERN,\n EMPTY_DIV_REGEX,\n TRAILING_BR_REGEX,\n} from \"./constants\";\n\nexport const getEditorStyles = ({ rows }) => {\n const editorHeight =\n rows * EDITOR_LINE_HEIGHT + 2 * (EDITOR_PADDING_SIZE + EDITOR_BORDER_SIZE);\n\n return `min-height: ${editorHeight}px;`;\n};\n\nexport const clipboardTextParser = (text, context) => {\n const nodes = [];\n const blocks = text.split(/\\n/);\n\n blocks.forEach(line => {\n const nodeJson = { type: \"paragraph\" };\n if (isNotEmpty(line)) {\n nodeJson.content = [{ type: \"text\", text: line }];\n }\n const node = Node.fromJSON(context.doc.type.schema, nodeJson);\n nodes.push(node);\n });\n\n const fragment = Fragment.fromArray(nodes);\n\n return Slice.maxOpen(fragment);\n};\n\nexport const setInitialPosition = editor => {\n const { state, view } = editor;\n const endPosition = Selection.atEnd(state.doc);\n const transaction = state.tr;\n transaction.setSelection(endPosition);\n view.dispatch(transaction);\n};\n\nexport const isEditorOverlaysActive = () =>\n document.querySelector(\n \".ne-media-uploader,.ne-embed-modal,.tippy-content,.ne-link-popover\"\n );\n\nexport const validateAndFormatUrl = url => {\n if (!ALL_PROTOCOL_URL_REGEXP.test(url)) {\n return null;\n }\n\n if (!/^[a-zA-Z]\\w*:/i.test(url)) {\n return `https://${url}`;\n }\n\n return url;\n};\n\nexport const transformEditorContent = content =>\n content\n ?.replaceAll(IMAGE_REGEX, IMAGE_REPLACEMENT_PATTERN)\n ?.replaceAll(EMPTY_DIV_REGEX, \"\")\n ?.replace(TRAILING_BR_REGEX, \"\");\n\nexport const isEmojiSuggestionsMenuActive = () =>\n !!document.querySelector(\".neeto-editor-emoji-suggestion\");\n\nexport const transformPastedHTML = content => {\n const contentWithoutBr = content.replaceAll(\"<br />\", \"<p></p>\");\n const doc = new DOMParser().parseFromString(contentWithoutBr, \"text/html\");\n\n // ProseMirror tags clipboard output from any TipTap/ProseMirror editor with\n // `data-pm-slice`. When present, the paste is coming from another\n // neeto-editor instance and we preserve the author's color choices. When\n // absent, the source is external (Word, websites, customer messages) and we\n // strip inline colors so foreign theming does not bleed into the editor.\n const isInternalPaste = doc.querySelector(\"[data-pm-slice]\") !== null;\n\n if (!isInternalPaste) {\n doc.querySelectorAll(\"[style]\").forEach(el => {\n el.style.color = \"\";\n el.style.backgroundColor = \"\";\n });\n }\n\n return doc.body.innerHTML;\n};\n\nexport const handlePaste = (view, event, slice) => {\n try {\n view.state.tr.replaceSelection(slice);\n\n return false;\n } catch {\n const text =\n event.clipboardData?.getData(\"text/plain\") ||\n slice.content.textBetween(0, slice.content.size, \"\\n\").trim();\n if (text) view.dispatch(view.state.tr.insertText(text).scrollIntoView());\n\n return true;\n }\n};\n\nexport const buildLevelsFromOptions = options => {\n const levels = {\n [EDITOR_OPTIONS.H1]: 1,\n [EDITOR_OPTIONS.H2]: 2,\n [EDITOR_OPTIONS.H3]: 3,\n [EDITOR_OPTIONS.H4]: 4,\n [EDITOR_OPTIONS.H5]: 5,\n [EDITOR_OPTIONS.H6]: 6,\n };\n\n return Object.entries(levels)\n .filter(heading => options.includes(heading[0]))\n .map(heading => heading[1]);\n};\n"],"names":["getEditorStyles","_ref","rows","editorHeight","EDITOR_LINE_HEIGHT","EDITOR_PADDING_SIZE","EDITOR_BORDER_SIZE","concat","clipboardTextParser","text","context","nodes","blocks","split","forEach","line","nodeJson","type","isNotEmpty","content","node","Node","fromJSON","doc","schema","push","fragment","Fragment","fromArray","Slice","maxOpen","setInitialPosition","editor","state","view","endPosition","Selection","atEnd","transaction","tr","setSelection","dispatch","isEditorOverlaysActive","document","querySelector","validateAndFormatUrl","url","ALL_PROTOCOL_URL_REGEXP","test","transformEditorContent","_content$replaceAll","replaceAll","IMAGE_REGEX","IMAGE_REPLACEMENT_PATTERN","EMPTY_DIV_REGEX","replace","TRAILING_BR_REGEX","isEmojiSuggestionsMenuActive","transformPastedHTML","contentWithoutBr","DOMParser","parseFromString","isInternalPaste","querySelectorAll","el","style","color","backgroundColor","body","innerHTML","handlePaste","event","slice","replaceSelection","_unused","_event$clipboardData","clipboardData","getData","textBetween","size","trim","insertText","scrollIntoView","buildLevelsFromOptions","options","levels","_defineProperty","EDITOR_OPTIONS","H1","H2","H3","H4","H5","H6","Object","entries","filter","heading","includes","map"],"mappings":"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"}
|
package/dist/cjs/Editor.cjs.js
CHANGED
|
@@ -14,14 +14,14 @@ var Label = require('@bigbinary/neetoui/Label');
|
|
|
14
14
|
var ReactDOM$1 = require('react-dom');
|
|
15
15
|
var ramda = require('ramda');
|
|
16
16
|
var jsxRuntime = require('react/jsx-runtime');
|
|
17
|
-
var fuzzySearch = require('./chunk-
|
|
17
|
+
var fuzzySearch = require('./chunk-Ch4y-VZi.cjs.js');
|
|
18
18
|
var injectCss = require('./chunk-B6qYtOJe.cjs.js');
|
|
19
|
-
var utils = require('./chunk-
|
|
19
|
+
var utils = require('./chunk-B_7qxIrt.cjs.js');
|
|
20
20
|
var ReactDOM = require('react-dom/server');
|
|
21
21
|
var common = require('./chunk-BKvkHB8E.cjs.js');
|
|
22
22
|
var constants$1 = require('./chunk-BGy3NmZC.cjs.js');
|
|
23
23
|
var Megaphone = require('@bigbinary/neeto-icons/misc/Megaphone');
|
|
24
|
-
var Menu$4 = require('./chunk-
|
|
24
|
+
var Menu$4 = require('./chunk-Zpn4p-0s.cjs.js');
|
|
25
25
|
var Down = require('@bigbinary/neeto-icons/Down');
|
|
26
26
|
var Highlight = require('@bigbinary/neeto-icons/Highlight');
|
|
27
27
|
var CopyToClipboardButton = require('@bigbinary/neeto-molecules/CopyToClipboardButton');
|
|
@@ -5294,8 +5294,11 @@ var Editor$1 = function Editor(_ref, ref) {
|
|
|
5294
5294
|
};
|
|
5295
5295
|
var debouncedOnChangeHandler = reactUtils.useFuncDebounce(function (_ref2) {
|
|
5296
5296
|
var editor = _ref2.editor;
|
|
5297
|
-
|
|
5297
|
+
if (!editor.isDestroyed) onChange(editor.getHTML());
|
|
5298
5298
|
}, 100);
|
|
5299
|
+
React.useEffect(function () {
|
|
5300
|
+
return debouncedOnChangeHandler.cancel;
|
|
5301
|
+
}, []);
|
|
5299
5302
|
var handleBlur = function handleBlur(props) {
|
|
5300
5303
|
var editor = props.editor;
|
|
5301
5304
|
if (!disableTrimOnBlur) {
|
|
@@ -5360,6 +5363,7 @@ var Editor$1 = function Editor(_ref, ref) {
|
|
|
5360
5363
|
"data-testid": "neeto-editor-content"
|
|
5361
5364
|
}, ariaAttributes), contentAttributes),
|
|
5362
5365
|
clipboardTextParser: utils.clipboardTextParser,
|
|
5366
|
+
handlePaste: utils.handlePaste,
|
|
5363
5367
|
transformPastedHTML: utils.transformPastedHTML
|
|
5364
5368
|
},
|
|
5365
5369
|
parseOptions: {
|