@bigbinary/neeto-editor 1.47.20 → 1.47.23
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/Attachments.js +2 -2
- package/dist/Editor.js +3 -3
- package/dist/EditorContent.js +43 -2
- package/dist/EditorContent.js.map +1 -1
- package/dist/FormikEditor.js +3 -3
- package/dist/Menu.js +2 -2
- package/dist/{chunk-g94B5C4Y.js → chunk-B6KCbUFU.js} +8 -6
- package/dist/{chunk-g94B5C4Y.js.map → chunk-B6KCbUFU.js.map} +1 -1
- package/dist/{chunk-DYM9eRpO.js → chunk-CeSjhXdK.js} +2 -2
- package/dist/chunk-CeSjhXdK.js.map +1 -0
- package/dist/{chunk-BEeeOUkk.js → chunk-DjSBDQrg.js} +4 -4
- package/dist/{chunk-BEeeOUkk.js.map → chunk-DjSBDQrg.js.map} +1 -1
- package/dist/{chunk-DQ79U6Nk.js → chunk-nbKzeQKk.js} +3 -3
- package/dist/{chunk-DQ79U6Nk.js.map → chunk-nbKzeQKk.js.map} +1 -1
- package/dist/cjs/Attachments.cjs.js +2 -2
- package/dist/cjs/Editor.cjs.js +3 -3
- package/dist/cjs/EditorContent.cjs.js +43 -2
- package/dist/cjs/EditorContent.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-DnB9pylb.cjs.js → chunk-DSaxcx8P.cjs.js} +2 -2
- package/dist/cjs/chunk-DSaxcx8P.cjs.js.map +1 -0
- package/dist/cjs/{chunk-BhbvTo3M.cjs.js → chunk-DxaBuuRc.cjs.js} +4 -4
- package/dist/cjs/{chunk-BhbvTo3M.cjs.js.map → chunk-DxaBuuRc.cjs.js.map} +1 -1
- package/dist/cjs/{chunk-YXkG7ItH.cjs.js → chunk-opVAdEEy.cjs.js} +3 -3
- package/dist/cjs/{chunk-YXkG7ItH.cjs.js.map → chunk-opVAdEEy.cjs.js.map} +1 -1
- package/dist/cjs/{chunk-C3r1h4m_.cjs.js → chunk-wS3Tinbh.cjs.js} +8 -6
- package/dist/cjs/{chunk-C3r1h4m_.cjs.js.map → chunk-wS3Tinbh.cjs.js.map} +1 -1
- package/dist/cjs/index.cjs.js +4 -4
- package/dist/editor-stats.html +1 -1
- package/dist/index.js +4 -4
- package/package.json +1 -1
- package/src/translations/de.json +176 -0
- package/src/translations/en.json +1 -1
- package/src/translations/es.json +176 -0
- package/src/translations/fr.json +176 -0
- package/types.d.ts +11 -7
- package/dist/chunk-DYM9eRpO.js.map +0 -1
- package/dist/cjs/chunk-DnB9pylb.cjs.js.map +0 -1
package/dist/Attachments.js
CHANGED
|
@@ -10,8 +10,8 @@ import '@bigbinary/neetoui/Button';
|
|
|
10
10
|
import '@bigbinary/neetoui/Toastr';
|
|
11
11
|
import 'ramda';
|
|
12
12
|
import 'react-i18next';
|
|
13
|
-
import './chunk-
|
|
14
|
-
export { A as default } from './chunk-
|
|
13
|
+
import './chunk-CeSjhXdK.js';
|
|
14
|
+
export { A as default } from './chunk-DjSBDQrg.js';
|
|
15
15
|
import 'react/jsx-runtime';
|
|
16
16
|
import '@babel/runtime/helpers/objectWithoutProperties';
|
|
17
17
|
import 'zustand/shallow';
|
package/dist/Editor.js
CHANGED
|
@@ -4,7 +4,7 @@ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
|
4
4
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import React__default, { memo, useEffect, useState, useRef, useCallback, createElement, forwardRef, useImperativeHandle } from 'react';
|
|
7
|
-
import { E as Extension, a as Mark, m as mergeAttributes, b as markInputRule, c as markPasteRule, D as DecorationSet, d as Decoration, g as getMarkAttributes, N as Node, i as isNodeActive, e as isAtStartOfNode, f as isAtEndOfNode, h as getNodeType, j as getNodeAtPosition, w as wrappingInputRule, t as textblockTypeInputRule, k as keydownHandler, l as callOrReturn, n as getExtensionField, o as isNodeSelection, p as nodeInputRule, C as CALLOUT_TYPES, q as NodeViewWrapper, r as NodeViewContent, R as ReactNodeViewRenderer, s as findChildren, P as PasteRule, v as validateUrl, u as escapeForRegEx, x as ReactRenderer, y as EmojiPickerMenu, z as emojiPickerApi, A as combineTransactionSteps, B as getChangedRanges, F as findChildrenInRange, G as getMarksBetween, H as getAttributes, I as InputRule, J as highlightFocussedNode, K as resetFocussedNode, L as findParentNodeClosestToPos, O as BubbleMenu, Q as getLinkPopoverPosition, S as getMarkType, T as getMarkRange, U as useEditor, V as useEditorState, M as Menu$3, W as EditorContent, X as MediaUploader, Y as EmbedOption, Z as LinkAddPopOver, _ as EditorView } from './chunk-
|
|
7
|
+
import { E as Extension, a as Mark, m as mergeAttributes, b as markInputRule, c as markPasteRule, D as DecorationSet, d as Decoration, g as getMarkAttributes, N as Node, i as isNodeActive, e as isAtStartOfNode, f as isAtEndOfNode, h as getNodeType, j as getNodeAtPosition, w as wrappingInputRule, t as textblockTypeInputRule, k as keydownHandler, l as callOrReturn, n as getExtensionField, o as isNodeSelection, p as nodeInputRule, C as CALLOUT_TYPES, q as NodeViewWrapper, r as NodeViewContent, R as ReactNodeViewRenderer, s as findChildren, P as PasteRule, v as validateUrl, u as escapeForRegEx, x as ReactRenderer, y as EmojiPickerMenu, z as emojiPickerApi, A as combineTransactionSteps, B as getChangedRanges, F as findChildrenInRange, G as getMarksBetween, H as getAttributes, I as InputRule, J as highlightFocussedNode, K as resetFocussedNode, L as findParentNodeClosestToPos, O as BubbleMenu, Q as getLinkPopoverPosition, S as getMarkType, T as getMarkRange, U as useEditor, V as useEditorState, M as Menu$3, W as EditorContent, X as MediaUploader, Y as EmbedOption, Z as LinkAddPopOver, _ as EditorView } from './chunk-B6KCbUFU.js';
|
|
8
8
|
import classnames from 'classnames';
|
|
9
9
|
import { C as COMBINED_REGEX, D as DIRECT_UPLOAD_ENDPOINT, E as EDITOR_OPTIONS, a as EDITOR_SIZES } from './chunk-DtYaAyZo.js';
|
|
10
10
|
import { isNotPresent, findBy, isNotEmpty, isPresent, noop as noop$1, slugify } from '@bigbinary/neeto-cist';
|
|
@@ -32,7 +32,7 @@ import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
|
|
|
32
32
|
import _regeneratorRuntime from '@babel/runtime/regenerator';
|
|
33
33
|
import { flushSync, createPortal } from 'react-dom';
|
|
34
34
|
import MenuHorizontal from '@bigbinary/neeto-icons/MenuHorizontal';
|
|
35
|
-
import { h as buildImageOptions, i as DirectUpload } from './chunk-
|
|
35
|
+
import { h as buildImageOptions, i as DirectUpload } from './chunk-CeSjhXdK.js';
|
|
36
36
|
import tippy, { sticky } from 'tippy.js';
|
|
37
37
|
import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
|
|
38
38
|
import _createClass from '@babel/runtime/helpers/createClass';
|
|
@@ -83,7 +83,7 @@ import ToggleHeaderRow from '@bigbinary/neeto-icons/ToggleHeaderRow';
|
|
|
83
83
|
import Checkbox$1 from '@bigbinary/neetoui/Checkbox';
|
|
84
84
|
import Form from '@bigbinary/neetoui/formik/Form';
|
|
85
85
|
import Input$1 from '@bigbinary/neetoui/formik/Input';
|
|
86
|
-
import { A as Attachments } from './chunk-
|
|
86
|
+
import { A as Attachments } from './chunk-DjSBDQrg.js';
|
|
87
87
|
import 'tippy.js/dist/svg-arrow.css';
|
|
88
88
|
import '@bigbinary/neeto-commons-frontend/utils';
|
|
89
89
|
import '@bigbinary/neeto-icons/Check';
|
package/dist/EditorContent.js
CHANGED
|
@@ -130,7 +130,40 @@ var buildHeaderLinks = function buildHeaderLinks(editorContentNode) {
|
|
|
130
130
|
});
|
|
131
131
|
};
|
|
132
132
|
|
|
133
|
-
var
|
|
133
|
+
var handleTodoCheckboxClick = function handleTodoCheckboxClick(event, editorContentRef, onChange) {
|
|
134
|
+
if (!(event.target.type === "checkbox" && event.target.closest('ul[data-type="todoList"] li[data-type="taskItem"]'))) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
var checkbox = event.target;
|
|
138
|
+
var listItem = checkbox.closest("li");
|
|
139
|
+
if (listItem) {
|
|
140
|
+
listItem.setAttribute("data-checked", checkbox.checked.toString());
|
|
141
|
+
if (checkbox.checked) {
|
|
142
|
+
checkbox.setAttribute("checked", "checked");
|
|
143
|
+
} else {
|
|
144
|
+
checkbox.removeAttribute("checked");
|
|
145
|
+
}
|
|
146
|
+
onChange === null || onChange === void 0 || onChange(editorContentRef === null || editorContentRef === void 0 ? void 0 : editorContentRef.innerHTML);
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
var syncTodoCheckboxStates = function syncTodoCheckboxStates(editorContentRef) {
|
|
150
|
+
if (!editorContentRef) return;
|
|
151
|
+
var todoItems = editorContentRef.querySelectorAll("ul[data-type=\"todoList\"] li[data-type=\"taskItem\"]");
|
|
152
|
+
todoItems.forEach(function (listItem) {
|
|
153
|
+
var isChecked = listItem.getAttribute("data-checked") === "true";
|
|
154
|
+
var checkbox = listItem.querySelector('input[type="checkbox"]');
|
|
155
|
+
if (checkbox) {
|
|
156
|
+
checkbox.checked = isChecked;
|
|
157
|
+
if (isChecked) {
|
|
158
|
+
checkbox.setAttribute("checked", "checked");
|
|
159
|
+
} else {
|
|
160
|
+
checkbox.removeAttribute("checked");
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
var _excluded = ["content", "variables", "className", "size", "configuration", "onChange", "onClick"];
|
|
134
167
|
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; }
|
|
135
168
|
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) { _defineProperty(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; }
|
|
136
169
|
var EditorContent = function EditorContent(_ref) {
|
|
@@ -143,6 +176,8 @@ var EditorContent = function EditorContent(_ref) {
|
|
|
143
176
|
size = _ref$size === void 0 ? EDITOR_SIZES.SMALL : _ref$size,
|
|
144
177
|
_ref$configuration = _ref.configuration,
|
|
145
178
|
configuration = _ref$configuration === void 0 ? EDITOR_CONTENT_DEFAULT_CONFIGURATION : _ref$configuration,
|
|
179
|
+
onChange = _ref.onChange,
|
|
180
|
+
onClick = _ref.onClick,
|
|
146
181
|
otherProps = _objectWithoutProperties(_ref, _excluded);
|
|
147
182
|
var _useState = useState(null),
|
|
148
183
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -151,6 +186,10 @@ var EditorContent = function EditorContent(_ref) {
|
|
|
151
186
|
var editorContentRef = useRef(null);
|
|
152
187
|
var htmlContent = convertPlainTextToHtml(substituteVariables(applySyntaxHighlightingAndLineNumbers(removeEmptyTags(content)), variables));
|
|
153
188
|
var sanitize = DOMPurify.sanitize;
|
|
189
|
+
var handleContentClick = function handleContentClick(event) {
|
|
190
|
+
handleTodoCheckboxClick(event, editorContentRef.current, onChange);
|
|
191
|
+
onClick === null || onClick === void 0 || onClick(event);
|
|
192
|
+
};
|
|
154
193
|
var injectCopyButtonToCodeBlocks = function injectCopyButtonToCodeBlocks() {
|
|
155
194
|
var _editorContentRef$cur;
|
|
156
195
|
var preTags = (_editorContentRef$cur = editorContentRef.current) === null || _editorContentRef$cur === void 0 ? void 0 : _editorContentRef$cur.querySelectorAll(".".concat(EDITOR_CONTENT_CLASS_NAME, " pre"));
|
|
@@ -186,6 +225,7 @@ var EditorContent = function EditorContent(_ref) {
|
|
|
186
225
|
useEffect(function () {
|
|
187
226
|
injectCopyButtonToCodeBlocks();
|
|
188
227
|
bindImageClickListener();
|
|
228
|
+
syncTodoCheckboxStates(editorContentRef.current);
|
|
189
229
|
applyLineHighlighting(editorContentRef.current);
|
|
190
230
|
configuration.enableHeaderLinks && buildHeaderLinks(editorContentRef.current);
|
|
191
231
|
}, [content]);
|
|
@@ -196,7 +236,8 @@ var EditorContent = function EditorContent(_ref) {
|
|
|
196
236
|
className: classnames(EDITOR_CONTENT_CLASS_NAME, _defineProperty(_defineProperty({}, className, className), "neeto-editor-size--".concat(size), true)),
|
|
197
237
|
dangerouslySetInnerHTML: {
|
|
198
238
|
__html: sanitize(htmlContent, SANITIZE_OPTIONS)
|
|
199
|
-
}
|
|
239
|
+
},
|
|
240
|
+
onClick: handleContentClick
|
|
200
241
|
}, otherProps)), imagePreviewDetails && /*#__PURE__*/jsx(ImagePreview, {
|
|
201
242
|
imagePreviewDetails: imagePreviewDetails,
|
|
202
243
|
setImagePreviewDetails: setImagePreviewDetails
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditorContent.js","sources":["../src/components/EditorContent/ImagePreview.jsx","../src/components/EditorContent/utils/headers.js","../src/components/EditorContent/index.jsx"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\n\nimport classnames from \"classnames\";\nimport { useOnClickOutside } from \"neetocommons/react-utils\";\nimport { Close } from \"neetoicons\";\nimport { Button, Spinner } from \"neetoui\";\nimport { createPortal } from \"react-dom\";\nimport { useTranslation } from \"react-i18next\";\n\nconst ImagePreview = ({ imagePreviewDetails, setImagePreviewDetails }) => {\n const [isLoading, setIsLoading] = useState(true);\n\n const { t } = useTranslation();\n\n const imagePreviewRef = useRef(null);\n\n useOnClickOutside(imagePreviewRef, () => setImagePreviewDetails(null), {\n enabled: true,\n });\n\n useEffect(() => {\n if (!imagePreviewRef.current) return;\n\n imagePreviewRef.current.setAttribute(\"tabindex\", \"-1\");\n imagePreviewRef.current.focus();\n }, []);\n\n const handleKeyDown = e => {\n e.stopPropagation();\n e.key === \"Escape\" && setImagePreviewDetails(null);\n };\n\n return createPortal(\n <div className=\"ne-image-preview-wrapper active\">\n {isLoading && <Spinner className=\"ne-image-preview-wrapper__spinner\" />}\n {!isLoading && (\n <div className=\"close-button\">\n <Button\n icon={Close}\n style=\"secondary\"\n onClick={() => setImagePreviewDetails(null)}\n />\n </div>\n )}\n <div\n className={classnames(\"ne-image-preview\", {\n \"image-loaded\": !isLoading,\n })}\n >\n <img\n alt={t(\"neetoEditor.editorContent.imagePreviewAltText\")}\n ref={imagePreviewRef}\n src={imagePreviewDetails.src}\n onKeyDown={handleKeyDown}\n onLoad={() => setIsLoading(false)}\n />\n {imagePreviewDetails && (\n <p className=\"ne-image-preview__caption\">\n {imagePreviewDetails.caption}\n </p>\n )}\n </div>\n </div>,\n document.body\n );\n};\n\nexport default ImagePreview;\n","const buildLinkSVG = () => {\n const svgNS = \"http://www.w3.org/2000/svg\";\n\n const svgWrapper = document.createElement(\"span\");\n svgWrapper.classList.add(\"header-link-icon-wrapper\");\n const svg = document.createElementNS(svgNS, \"svg\");\n svg.setAttribute(\"aria-hidden\", \"true\");\n svg.setAttribute(\"height\", \"20\");\n svg.setAttribute(\"viewBox\", \"0 0 16 16\");\n svg.setAttribute(\"width\", \"20\");\n\n const path = document.createElementNS(svgNS, \"path\");\n path.setAttribute(\n \"d\",\n \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n );\n\n svg.appendChild(path);\n svgWrapper.appendChild(svg);\n\n return svgWrapper;\n};\n\nconst convertTextToId = text =>\n text\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9\\s]/g, \"\")\n .replace(/\\s+/g, \"-\");\n\nexport const buildHeaderLinks = editorContentNode => {\n const headerTags = editorContentNode.querySelectorAll(\n \"h1, h2, h3, h4, h5, h6\"\n );\n const usedIds = new Map();\n\n headerTags.forEach(heading => {\n if (heading.getAttribute(\"data-link\") === \"false\") {\n return;\n }\n\n let headingId = convertTextToId(heading.textContent);\n if (usedIds.has(headingId)) {\n const count = usedIds.get(headingId);\n usedIds.set(headingId, count + 1);\n headingId = `${headingId}-${count}`;\n } else usedIds.set(headingId, 1);\n\n heading.setAttribute(\"id\", headingId);\n\n const wrapper = document.createElement(\"div\");\n const anchor = document.createElement(\"a\");\n\n wrapper.classList.add(\"header-wrapper\");\n anchor.setAttribute(\"href\", `#${headingId}`);\n anchor.classList.add(\"header-wrapper__link\");\n anchor.appendChild(buildLinkSVG());\n\n wrapper.appendChild(heading.cloneNode(true));\n wrapper.appendChild(anchor);\n heading.replaceWith(wrapper);\n });\n};\n","import { memo, useEffect, useRef, useState } from \"react\";\n\nimport classnames from \"classnames\";\nimport DOMPurify from \"dompurify\";\nimport CopyToClipboardButton from \"neetomolecules/CopyToClipboardButton\";\nimport { isNil } from \"ramda\";\nimport { createRoot } from \"react-dom/client\";\n\nimport { EDITOR_SIZES } from \"src/common/constants\";\nimport \"src/styles/editor/editor-content.scss\";\nimport { removeEmptyTags } from \"utils\";\n\nimport {\n EDITOR_CONTENT_CLASS_NAME,\n EDITOR_CONTENT_DEFAULT_CONFIGURATION,\n SANITIZE_OPTIONS,\n} from \"./constants\";\nimport ImagePreview from \"./ImagePreview\";\nimport {\n substituteVariables,\n applyLineHighlighting,\n applySyntaxHighlightingAndLineNumbers,\n convertPlainTextToHtml,\n} from \"./utils\";\nimport { buildHeaderLinks } from \"./utils/headers\";\n\nconst EditorContent = ({\n content = \"\",\n variables = [],\n className,\n size = EDITOR_SIZES.SMALL,\n configuration = EDITOR_CONTENT_DEFAULT_CONFIGURATION,\n ...otherProps\n}) => {\n const [imagePreviewDetails, setImagePreviewDetails] = useState(null);\n const editorContentRef = useRef(null);\n\n const htmlContent = convertPlainTextToHtml(\n substituteVariables(\n applySyntaxHighlightingAndLineNumbers(removeEmptyTags(content)),\n variables\n )\n );\n const sanitize = DOMPurify.sanitize;\n\n const injectCopyButtonToCodeBlocks = () => {\n const preTags = editorContentRef.current?.querySelectorAll(\n `.${EDITOR_CONTENT_CLASS_NAME} pre`\n );\n\n preTags.forEach(preTag => {\n const button = document.createElement(\"div\");\n button.className = \"neeto-editor-codeblock-options\";\n const root = createRoot(button);\n root.render(\n <CopyToClipboardButton\n size=\"small\"\n style=\"tertiary\"\n value={preTag.textContent}\n />\n );\n preTag.appendChild(button);\n });\n };\n\n const bindImageClickListener = () => {\n const figureTags = editorContentRef.current?.querySelectorAll(\n `.${EDITOR_CONTENT_CLASS_NAME} figure`\n );\n\n figureTags.forEach(figureTag => {\n const image = figureTag.querySelector(\"img\");\n const link = figureTag.querySelector(\"a\");\n if (isNil(image) || isNil(link)) return;\n\n figureTag.addEventListener(\"click\", event => {\n event.preventDefault();\n const caption = figureTag.querySelector(\"figcaption\").innerText;\n setImagePreviewDetails({ src: image.src, caption });\n });\n });\n };\n\n useEffect(() => {\n injectCopyButtonToCodeBlocks();\n bindImageClickListener();\n applyLineHighlighting(editorContentRef.current);\n configuration.enableHeaderLinks &&\n buildHeaderLinks(editorContentRef.current);\n }, [content]);\n\n return (\n <>\n <div\n data-cy=\"neeto-editor-content\"\n ref={editorContentRef}\n className={classnames(EDITOR_CONTENT_CLASS_NAME, {\n [className]: className,\n [`neeto-editor-size--${size}`]: true,\n })}\n dangerouslySetInnerHTML={{\n __html: sanitize(htmlContent, SANITIZE_OPTIONS),\n }}\n {...otherProps}\n />\n {imagePreviewDetails && (\n <ImagePreview {...{ imagePreviewDetails, setImagePreviewDetails }} />\n )}\n </>\n );\n};\n\nexport default memo(EditorContent);\n"],"names":["ImagePreview","_ref","imagePreviewDetails","setImagePreviewDetails","_useState","useState","_useState2","_slicedToArray","isLoading","setIsLoading","_useTranslation","useTranslation","t","imagePreviewRef","useRef","useOnClickOutside","enabled","useEffect","current","setAttribute","focus","handleKeyDown","e","stopPropagation","key","createPortal","_jsxs","className","children","_jsx","Spinner","Button","icon","Close","style","onClick","classnames","alt","ref","src","onKeyDown","onLoad","caption","document","body","buildLinkSVG","svgNS","svgWrapper","createElement","classList","add","svg","createElementNS","path","appendChild","convertTextToId","text","trim","toLowerCase","replace","buildHeaderLinks","editorContentNode","headerTags","querySelectorAll","usedIds","Map","forEach","heading","getAttribute","headingId","textContent","has","count","get","set","concat","wrapper","anchor","cloneNode","replaceWith","EditorContent","_ref$content","content","_ref$variables","variables","_ref$size","size","EDITOR_SIZES","SMALL","_ref$configuration","configuration","EDITOR_CONTENT_DEFAULT_CONFIGURATION","otherProps","_objectWithoutProperties","_excluded","editorContentRef","htmlContent","convertPlainTextToHtml","substituteVariables","applySyntaxHighlightingAndLineNumbers","removeEmptyTags","sanitize","DOMPurify","injectCopyButtonToCodeBlocks","_editorContentRef$cur","preTags","EDITOR_CONTENT_CLASS_NAME","preTag","button","root","createRoot","render","CopyToClipboardButton","value","bindImageClickListener","_editorContentRef$cur2","figureTags","figureTag","image","querySelector","link","isNil","addEventListener","event","preventDefault","innerText","applyLineHighlighting","enableHeaderLinks","_Fragment","_objectSpread","_defineProperty","dangerouslySetInnerHTML","__html","SANITIZE_OPTIONS","memo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditorContent.js","sources":["../src/components/EditorContent/ImagePreview.jsx","../src/components/EditorContent/utils/headers.js","../src/components/EditorContent/utils/todoCheckbox.js","../src/components/EditorContent/index.jsx"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\n\nimport classnames from \"classnames\";\nimport { useOnClickOutside } from \"neetocommons/react-utils\";\nimport { Close } from \"neetoicons\";\nimport { Button, Spinner } from \"neetoui\";\nimport { createPortal } from \"react-dom\";\nimport { useTranslation } from \"react-i18next\";\n\nconst ImagePreview = ({ imagePreviewDetails, setImagePreviewDetails }) => {\n const [isLoading, setIsLoading] = useState(true);\n\n const { t } = useTranslation();\n\n const imagePreviewRef = useRef(null);\n\n useOnClickOutside(imagePreviewRef, () => setImagePreviewDetails(null), {\n enabled: true,\n });\n\n useEffect(() => {\n if (!imagePreviewRef.current) return;\n\n imagePreviewRef.current.setAttribute(\"tabindex\", \"-1\");\n imagePreviewRef.current.focus();\n }, []);\n\n const handleKeyDown = e => {\n e.stopPropagation();\n e.key === \"Escape\" && setImagePreviewDetails(null);\n };\n\n return createPortal(\n <div className=\"ne-image-preview-wrapper active\">\n {isLoading && <Spinner className=\"ne-image-preview-wrapper__spinner\" />}\n {!isLoading && (\n <div className=\"close-button\">\n <Button\n icon={Close}\n style=\"secondary\"\n onClick={() => setImagePreviewDetails(null)}\n />\n </div>\n )}\n <div\n className={classnames(\"ne-image-preview\", {\n \"image-loaded\": !isLoading,\n })}\n >\n <img\n alt={t(\"neetoEditor.editorContent.imagePreviewAltText\")}\n ref={imagePreviewRef}\n src={imagePreviewDetails.src}\n onKeyDown={handleKeyDown}\n onLoad={() => setIsLoading(false)}\n />\n {imagePreviewDetails && (\n <p className=\"ne-image-preview__caption\">\n {imagePreviewDetails.caption}\n </p>\n )}\n </div>\n </div>,\n document.body\n );\n};\n\nexport default ImagePreview;\n","const buildLinkSVG = () => {\n const svgNS = \"http://www.w3.org/2000/svg\";\n\n const svgWrapper = document.createElement(\"span\");\n svgWrapper.classList.add(\"header-link-icon-wrapper\");\n const svg = document.createElementNS(svgNS, \"svg\");\n svg.setAttribute(\"aria-hidden\", \"true\");\n svg.setAttribute(\"height\", \"20\");\n svg.setAttribute(\"viewBox\", \"0 0 16 16\");\n svg.setAttribute(\"width\", \"20\");\n\n const path = document.createElementNS(svgNS, \"path\");\n path.setAttribute(\n \"d\",\n \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n );\n\n svg.appendChild(path);\n svgWrapper.appendChild(svg);\n\n return svgWrapper;\n};\n\nconst convertTextToId = text =>\n text\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9\\s]/g, \"\")\n .replace(/\\s+/g, \"-\");\n\nexport const buildHeaderLinks = editorContentNode => {\n const headerTags = editorContentNode.querySelectorAll(\n \"h1, h2, h3, h4, h5, h6\"\n );\n const usedIds = new Map();\n\n headerTags.forEach(heading => {\n if (heading.getAttribute(\"data-link\") === \"false\") {\n return;\n }\n\n let headingId = convertTextToId(heading.textContent);\n if (usedIds.has(headingId)) {\n const count = usedIds.get(headingId);\n usedIds.set(headingId, count + 1);\n headingId = `${headingId}-${count}`;\n } else usedIds.set(headingId, 1);\n\n heading.setAttribute(\"id\", headingId);\n\n const wrapper = document.createElement(\"div\");\n const anchor = document.createElement(\"a\");\n\n wrapper.classList.add(\"header-wrapper\");\n anchor.setAttribute(\"href\", `#${headingId}`);\n anchor.classList.add(\"header-wrapper__link\");\n anchor.appendChild(buildLinkSVG());\n\n wrapper.appendChild(heading.cloneNode(true));\n wrapper.appendChild(anchor);\n heading.replaceWith(wrapper);\n });\n};\n","export const handleTodoCheckboxClick = (event, editorContentRef, onChange) => {\n if (\n !(\n event.target.type === \"checkbox\" &&\n event.target.closest('ul[data-type=\"todoList\"] li[data-type=\"taskItem\"]')\n )\n ) {\n return;\n }\n\n const checkbox = event.target;\n const listItem = checkbox.closest(\"li\");\n\n if (listItem) {\n listItem.setAttribute(\"data-checked\", checkbox.checked.toString());\n\n if (checkbox.checked) {\n checkbox.setAttribute(\"checked\", \"checked\");\n } else {\n checkbox.removeAttribute(\"checked\");\n }\n\n onChange?.(editorContentRef?.innerHTML);\n }\n};\n\nexport const syncTodoCheckboxStates = editorContentRef => {\n if (!editorContentRef) return;\n\n const todoItems = editorContentRef.querySelectorAll(\n `ul[data-type=\"todoList\"] li[data-type=\"taskItem\"]`\n );\n\n todoItems.forEach(listItem => {\n const isChecked = listItem.getAttribute(\"data-checked\") === \"true\";\n const checkbox = listItem.querySelector('input[type=\"checkbox\"]');\n\n if (checkbox) {\n checkbox.checked = isChecked;\n\n if (isChecked) {\n checkbox.setAttribute(\"checked\", \"checked\");\n } else {\n checkbox.removeAttribute(\"checked\");\n }\n }\n });\n};\n","import { memo, useEffect, useRef, useState } from \"react\";\n\nimport classnames from \"classnames\";\nimport DOMPurify from \"dompurify\";\nimport CopyToClipboardButton from \"neetomolecules/CopyToClipboardButton\";\nimport { isNil } from \"ramda\";\nimport { createRoot } from \"react-dom/client\";\n\nimport { EDITOR_SIZES } from \"src/common/constants\";\nimport \"src/styles/editor/editor-content.scss\";\nimport { removeEmptyTags } from \"utils\";\n\nimport {\n EDITOR_CONTENT_CLASS_NAME,\n EDITOR_CONTENT_DEFAULT_CONFIGURATION,\n SANITIZE_OPTIONS,\n} from \"./constants\";\nimport ImagePreview from \"./ImagePreview\";\nimport {\n substituteVariables,\n applyLineHighlighting,\n applySyntaxHighlightingAndLineNumbers,\n convertPlainTextToHtml,\n} from \"./utils\";\nimport { buildHeaderLinks } from \"./utils/headers\";\nimport {\n handleTodoCheckboxClick,\n syncTodoCheckboxStates,\n} from \"./utils/todoCheckbox\";\n\nconst EditorContent = ({\n content = \"\",\n variables = [],\n className,\n size = EDITOR_SIZES.SMALL,\n configuration = EDITOR_CONTENT_DEFAULT_CONFIGURATION,\n onChange,\n onClick,\n ...otherProps\n}) => {\n const [imagePreviewDetails, setImagePreviewDetails] = useState(null);\n const editorContentRef = useRef(null);\n\n const htmlContent = convertPlainTextToHtml(\n substituteVariables(\n applySyntaxHighlightingAndLineNumbers(removeEmptyTags(content)),\n variables\n )\n );\n const sanitize = DOMPurify.sanitize;\n\n const handleContentClick = event => {\n handleTodoCheckboxClick(event, editorContentRef.current, onChange);\n\n onClick?.(event);\n };\n\n const injectCopyButtonToCodeBlocks = () => {\n const preTags = editorContentRef.current?.querySelectorAll(\n `.${EDITOR_CONTENT_CLASS_NAME} pre`\n );\n\n preTags.forEach(preTag => {\n const button = document.createElement(\"div\");\n button.className = \"neeto-editor-codeblock-options\";\n const root = createRoot(button);\n root.render(\n <CopyToClipboardButton\n size=\"small\"\n style=\"tertiary\"\n value={preTag.textContent}\n />\n );\n preTag.appendChild(button);\n });\n };\n\n const bindImageClickListener = () => {\n const figureTags = editorContentRef.current?.querySelectorAll(\n `.${EDITOR_CONTENT_CLASS_NAME} figure`\n );\n\n figureTags.forEach(figureTag => {\n const image = figureTag.querySelector(\"img\");\n const link = figureTag.querySelector(\"a\");\n if (isNil(image) || isNil(link)) return;\n\n figureTag.addEventListener(\"click\", event => {\n event.preventDefault();\n const caption = figureTag.querySelector(\"figcaption\").innerText;\n setImagePreviewDetails({ src: image.src, caption });\n });\n });\n };\n\n useEffect(() => {\n injectCopyButtonToCodeBlocks();\n bindImageClickListener();\n syncTodoCheckboxStates(editorContentRef.current);\n applyLineHighlighting(editorContentRef.current);\n configuration.enableHeaderLinks &&\n buildHeaderLinks(editorContentRef.current);\n }, [content]);\n\n return (\n <>\n <div\n data-cy=\"neeto-editor-content\"\n ref={editorContentRef}\n className={classnames(EDITOR_CONTENT_CLASS_NAME, {\n [className]: className,\n [`neeto-editor-size--${size}`]: true,\n })}\n dangerouslySetInnerHTML={{\n __html: sanitize(htmlContent, SANITIZE_OPTIONS),\n }}\n onClick={handleContentClick}\n {...otherProps}\n />\n {imagePreviewDetails && (\n <ImagePreview {...{ imagePreviewDetails, setImagePreviewDetails }} />\n )}\n </>\n );\n};\n\nexport default memo(EditorContent);\n"],"names":["ImagePreview","_ref","imagePreviewDetails","setImagePreviewDetails","_useState","useState","_useState2","_slicedToArray","isLoading","setIsLoading","_useTranslation","useTranslation","t","imagePreviewRef","useRef","useOnClickOutside","enabled","useEffect","current","setAttribute","focus","handleKeyDown","e","stopPropagation","key","createPortal","_jsxs","className","children","_jsx","Spinner","Button","icon","Close","style","onClick","classnames","alt","ref","src","onKeyDown","onLoad","caption","document","body","buildLinkSVG","svgNS","svgWrapper","createElement","classList","add","svg","createElementNS","path","appendChild","convertTextToId","text","trim","toLowerCase","replace","buildHeaderLinks","editorContentNode","headerTags","querySelectorAll","usedIds","Map","forEach","heading","getAttribute","headingId","textContent","has","count","get","set","concat","wrapper","anchor","cloneNode","replaceWith","handleTodoCheckboxClick","event","editorContentRef","onChange","target","type","closest","checkbox","listItem","checked","toString","removeAttribute","innerHTML","syncTodoCheckboxStates","todoItems","isChecked","querySelector","EditorContent","_ref$content","content","_ref$variables","variables","_ref$size","size","EDITOR_SIZES","SMALL","_ref$configuration","configuration","EDITOR_CONTENT_DEFAULT_CONFIGURATION","otherProps","_objectWithoutProperties","_excluded","htmlContent","convertPlainTextToHtml","substituteVariables","applySyntaxHighlightingAndLineNumbers","removeEmptyTags","sanitize","DOMPurify","handleContentClick","injectCopyButtonToCodeBlocks","_editorContentRef$cur","preTags","EDITOR_CONTENT_CLASS_NAME","preTag","button","root","createRoot","render","CopyToClipboardButton","value","bindImageClickListener","_editorContentRef$cur2","figureTags","figureTag","image","link","isNil","addEventListener","preventDefault","innerText","applyLineHighlighting","enableHeaderLinks","_Fragment","_objectSpread","_defineProperty","dangerouslySetInnerHTML","__html","SANITIZE_OPTIONS","memo"],"mappings":"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"}
|
package/dist/FormikEditor.js
CHANGED
|
@@ -8,7 +8,7 @@ import Editor from './Editor.js';
|
|
|
8
8
|
import { jsx } from 'react/jsx-runtime';
|
|
9
9
|
import '@babel/runtime/helpers/toConsumableArray';
|
|
10
10
|
import '@babel/runtime/helpers/slicedToArray';
|
|
11
|
-
import './chunk-
|
|
11
|
+
import './chunk-B6KCbUFU.js';
|
|
12
12
|
import './chunk-DmrvuTKK.js';
|
|
13
13
|
import 'i18next';
|
|
14
14
|
import '@bigbinary/neeto-icons/TextH1';
|
|
@@ -72,7 +72,7 @@ import 'react-colorful';
|
|
|
72
72
|
import '@bigbinary/neeto-molecules/DynamicVariables';
|
|
73
73
|
import '@bigbinary/neetoui/Modal';
|
|
74
74
|
import '@bigbinary/neetoui/Tab';
|
|
75
|
-
import './chunk-
|
|
75
|
+
import './chunk-CeSjhXdK.js';
|
|
76
76
|
import 'zustand/shallow';
|
|
77
77
|
import '@bigbinary/neetoui/Toastr';
|
|
78
78
|
import 'zustand';
|
|
@@ -112,7 +112,7 @@ import '@bigbinary/neeto-icons/MergeSplit';
|
|
|
112
112
|
import '@bigbinary/neeto-icons/ToggleHeaderRow';
|
|
113
113
|
import '@bigbinary/neetoui/formik/Form';
|
|
114
114
|
import '@bigbinary/neetoui/formik/Input';
|
|
115
|
-
import './chunk-
|
|
115
|
+
import './chunk-DjSBDQrg.js';
|
|
116
116
|
import '@bigbinary/neeto-icons/MenuVertical';
|
|
117
117
|
import '@bigbinary/neetoui/Alert';
|
|
118
118
|
|
package/dist/Menu.js
CHANGED
|
@@ -3,7 +3,7 @@ import '@babel/runtime/helpers/toConsumableArray';
|
|
|
3
3
|
import '@babel/runtime/helpers/slicedToArray';
|
|
4
4
|
import 'react';
|
|
5
5
|
import 'ramda';
|
|
6
|
-
export { M as default } from './chunk-
|
|
6
|
+
export { M as default } from './chunk-B6KCbUFU.js';
|
|
7
7
|
import './chunk-CY_7yUut.js';
|
|
8
8
|
import 'react/jsx-runtime';
|
|
9
9
|
import './chunk-DmrvuTKK.js';
|
|
@@ -69,7 +69,7 @@ import '@babel/runtime/helpers/objectWithoutProperties';
|
|
|
69
69
|
import '@bigbinary/neeto-molecules/DynamicVariables';
|
|
70
70
|
import '@bigbinary/neetoui/Modal';
|
|
71
71
|
import '@bigbinary/neetoui/Tab';
|
|
72
|
-
import './chunk-
|
|
72
|
+
import './chunk-CeSjhXdK.js';
|
|
73
73
|
import 'zustand/shallow';
|
|
74
74
|
import '@bigbinary/neetoui/Toastr';
|
|
75
75
|
import 'zustand';
|
|
@@ -67,7 +67,7 @@ import _objectWithoutProperties$1 from '@babel/runtime/helpers/objectWithoutProp
|
|
|
67
67
|
import DynamicVariables from '@bigbinary/neeto-molecules/DynamicVariables';
|
|
68
68
|
import Modal from '@bigbinary/neetoui/Modal';
|
|
69
69
|
import Tab from '@bigbinary/neetoui/Tab';
|
|
70
|
-
import { F as File, u as useFileUploader, b as useDropFiles, A as ALLOWED_IMAGE_TYPES, c as ALLOWED_VIDEO_TYPES, e as convertToFileSize, D as DEFAULT_IMAGE_UPLOAD_CONFIG, f as DEFAULT_VIDEO_UPLOAD_CONFIG, p as propTypesExports, g as getTabs } from './chunk-
|
|
70
|
+
import { F as File, u as useFileUploader, b as useDropFiles, A as ALLOWED_IMAGE_TYPES, c as ALLOWED_VIDEO_TYPES, e as convertToFileSize, D as DEFAULT_IMAGE_UPLOAD_CONFIG, f as DEFAULT_VIDEO_UPLOAD_CONFIG, p as propTypesExports, g as getTabs } from './chunk-CeSjhXdK.js';
|
|
71
71
|
import Tooltip from '@bigbinary/neetoui/Tooltip';
|
|
72
72
|
import Spinner from '@bigbinary/neetoui/Spinner';
|
|
73
73
|
import { a as getAugmentedNamespace } from './chunk-E-ZsRS8r.js';
|
|
@@ -19228,14 +19228,16 @@ var HighlightDropdown = function HighlightDropdown(_ref) {
|
|
|
19228
19228
|
}).run();
|
|
19229
19229
|
})();
|
|
19230
19230
|
};
|
|
19231
|
-
var handleBackgroundColorClick = function handleBackgroundColorClick(colorVar) {
|
|
19231
|
+
var handleBackgroundColorClick = function handleBackgroundColorClick(colorVar, event) {
|
|
19232
|
+
event.stopPropagation();
|
|
19232
19233
|
if (backgroundColor === "var(".concat(colorVar, ")")) {
|
|
19233
19234
|
updateBackgroundColor(null);
|
|
19234
19235
|
} else {
|
|
19235
19236
|
updateBackgroundColor("var(".concat(colorVar, ")"));
|
|
19236
19237
|
}
|
|
19237
19238
|
};
|
|
19238
|
-
var handleTextColorClick = function handleTextColorClick(colorVar) {
|
|
19239
|
+
var handleTextColorClick = function handleTextColorClick(colorVar, event) {
|
|
19240
|
+
event.stopPropagation();
|
|
19239
19241
|
if (textColor === "var(".concat(colorVar, ")")) {
|
|
19240
19242
|
editor.chain().focus().unsetColor().run();
|
|
19241
19243
|
} else {
|
|
@@ -19250,8 +19252,8 @@ var HighlightDropdown = function HighlightDropdown(_ref) {
|
|
|
19250
19252
|
isTextColor: isTextColor,
|
|
19251
19253
|
key: idx,
|
|
19252
19254
|
isSelected: isTextColor ? textColor === "var(".concat(colorVar, ")") : backgroundColor === "var(".concat(colorVar, ")"),
|
|
19253
|
-
onClick: function onClick() {
|
|
19254
|
-
return isTextColor ? handleTextColorClick(colorVar) : handleBackgroundColorClick(colorVar);
|
|
19255
|
+
onClick: function onClick(event) {
|
|
19256
|
+
return isTextColor ? handleTextColorClick(colorVar, event) : handleBackgroundColorClick(colorVar, event);
|
|
19255
19257
|
}
|
|
19256
19258
|
});
|
|
19257
19259
|
});
|
|
@@ -19900,4 +19902,4 @@ var Menu = function Menu(props) {
|
|
|
19900
19902
|
};
|
|
19901
19903
|
|
|
19902
19904
|
export { combineTransactionSteps as A, getChangedRanges as B, CALLOUT_TYPES as C, DecorationSet as D, Extension as E, findChildrenInRange as F, getMarksBetween as G, getAttributes as H, InputRule as I, highlightFocussedNode as J, resetFocussedNode as K, findParentNodeClosestToPos as L, Menu as M, Node as N, BubbleMenu as O, PasteRule as P, getLinkPopoverPosition as Q, ReactNodeViewRenderer as R, getMarkType as S, getMarkRange as T, useEditor as U, useEditorState$1 as V, EditorContent as W, MediaUploader as X, EmbedOption as Y, LinkAddPopOver as Z, EditorView as _, Mark as a, markInputRule as b, markPasteRule as c, Decoration as d, isAtStartOfNode as e, isAtEndOfNode as f, getMarkAttributes as g, getNodeType as h, isNodeActive as i, getNodeAtPosition as j, keydownHandler as k, callOrReturn as l, mergeAttributes as m, getExtensionField as n, isNodeSelection as o, nodeInputRule as p, NodeViewWrapper as q, NodeViewContent as r, findChildren as s, textblockTypeInputRule as t, escapeForRegEx as u, validateUrl as v, wrappingInputRule as w, ReactRenderer as x, EmojiPickerMenu as y, emojiPickerApi as z };
|
|
19903
|
-
//# sourceMappingURL=chunk-
|
|
19905
|
+
//# sourceMappingURL=chunk-B6KCbUFU.js.map
|