@bigbinary/neeto-editor 1.45.17 → 1.45.19
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 +3 -3
- package/dist/Editor.js +15 -8
- package/dist/Editor.js.map +1 -1
- package/dist/EditorContent.js +8 -5
- package/dist/EditorContent.js.map +1 -1
- package/dist/FormikEditor.js +8 -7
- package/dist/FormikEditor.js.map +1 -1
- package/dist/Menu.js +6 -5
- package/dist/Menu.js.map +1 -1
- package/dist/chunk-BMJOPQ2b.js +19 -0
- package/dist/chunk-BMJOPQ2b.js.map +1 -0
- package/dist/{chunk-DBch3tqq.js → chunk-CXjxEHI4.js} +75 -3
- package/dist/chunk-CXjxEHI4.js.map +1 -0
- package/dist/{chunk-D86RZ044.js → chunk-CxUlY2ns.js} +2 -2
- package/dist/{chunk-D86RZ044.js.map → chunk-CxUlY2ns.js.map} +1 -1
- package/dist/{chunk-dj52vbNl.js → chunk-DLd26xqr.js} +7 -5
- package/dist/{chunk-dj52vbNl.js.map → chunk-DLd26xqr.js.map} +1 -1
- package/dist/{chunk-B8oM63AV.js → chunk-Dt1M1PSn.js} +2 -2
- package/dist/{chunk-B8oM63AV.js.map → chunk-Dt1M1PSn.js.map} +1 -1
- package/dist/{chunk-B4UG02G1.js → chunk-DzSwFO6-.js} +4 -4
- package/dist/{chunk-B4UG02G1.js.map → chunk-DzSwFO6-.js.map} +1 -1
- package/dist/{chunk-BV0txNQ1.js → chunk-Q8kq5V5L.js} +4 -4
- package/dist/{chunk-BV0txNQ1.js.map → chunk-Q8kq5V5L.js.map} +1 -1
- package/dist/{chunk-CDBSVHz6.js → chunk-mYLzFJMK.js} +4 -17
- package/dist/chunk-mYLzFJMK.js.map +1 -0
- package/dist/{chunk-UtuZMtPZ.js → chunk-vS_ygswz.js} +4 -18
- package/dist/chunk-vS_ygswz.js.map +1 -0
- package/dist/cjs/Editor.cjs.js +16 -9
- package/dist/cjs/Editor.cjs.js.map +1 -1
- package/dist/cjs/EditorContent.cjs.js +12 -9
- package/dist/cjs/EditorContent.cjs.js.map +1 -1
- package/dist/cjs/FormikEditor.cjs.js +5 -4
- package/dist/cjs/FormikEditor.cjs.js.map +1 -1
- package/dist/cjs/Menu.cjs.js +5 -4
- package/dist/cjs/Menu.cjs.js.map +1 -1
- package/dist/cjs/{chunk-DNcqB5sj.cjs.js → chunk-3udi5E4s.cjs.js} +6 -4
- package/dist/cjs/{chunk-DNcqB5sj.cjs.js.map → chunk-3udi5E4s.cjs.js.map} +1 -1
- package/dist/cjs/chunk-Cuak8W9P.cjs.js +48 -0
- package/dist/cjs/chunk-Cuak8W9P.cjs.js.map +1 -0
- package/dist/cjs/{chunk-Juybs_3x.cjs.js → chunk-DK-1ndCW.cjs.js} +4 -39
- package/dist/cjs/chunk-DK-1ndCW.cjs.js.map +1 -0
- package/dist/cjs/{chunk-BIff7Ppc.cjs.js → chunk-DOGA_bpR.cjs.js} +5 -21
- package/dist/cjs/chunk-DOGA_bpR.cjs.js.map +1 -0
- package/dist/cjs/{chunk-Dh0stJ0O.cjs.js → chunk-DoS4ZUHL.cjs.js} +83 -1
- package/dist/cjs/chunk-DoS4ZUHL.cjs.js.map +1 -0
- package/dist/cjs/index.cjs.js +5 -6
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/utils.cjs.js +4 -5
- package/dist/cjs/utils.cjs.js.map +1 -1
- package/dist/editor-stats.html +1 -19
- package/dist/index.js +8 -9
- package/dist/index.js.map +1 -1
- package/dist/utils.js +5 -6
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-B88REGV6.js +0 -59
- package/dist/chunk-B88REGV6.js.map +0 -1
- package/dist/chunk-CDBSVHz6.js.map +0 -1
- package/dist/chunk-DBch3tqq.js.map +0 -1
- package/dist/chunk-LjMXcuRe.js +0 -6
- package/dist/chunk-LjMXcuRe.js.map +0 -1
- package/dist/chunk-UtuZMtPZ.js.map +0 -1
- package/dist/cjs/chunk-BIff7Ppc.cjs.js.map +0 -1
- package/dist/cjs/chunk-DN1S-KLQ.cjs.js +0 -10
- package/dist/cjs/chunk-DN1S-KLQ.cjs.js.map +0 -1
- package/dist/cjs/chunk-Dh0stJ0O.cjs.js.map +0 -1
- package/dist/cjs/chunk-Juybs_3x.cjs.js.map +0 -1
- package/dist/cjs/chunk-a-cnTJIr.cjs.js +0 -63
- package/dist/cjs/chunk-a-cnTJIr.cjs.js.map +0 -1
package/dist/EditorContent.js
CHANGED
|
@@ -7,9 +7,12 @@ import DOMPurify from 'dompurify';
|
|
|
7
7
|
import CopyToClipboardButton from '@bigbinary/neeto-molecules/CopyToClipboardButton';
|
|
8
8
|
import { isNil } from 'ramda';
|
|
9
9
|
import { createRoot } from 'react-dom/client';
|
|
10
|
-
import {
|
|
10
|
+
import { a as EDITOR_SIZES } from './chunk-CxUlY2ns.js';
|
|
11
11
|
import { n } from './chunk-DmrvuTKK.js';
|
|
12
|
-
import
|
|
12
|
+
import '@bigbinary/neeto-cist';
|
|
13
|
+
import './chunk-BMJOPQ2b.js';
|
|
14
|
+
import { s as substituteVariables, a as applySyntaxHighlightingAndLineNumbers, b as applyLineHighlighting } from './chunk-mYLzFJMK.js';
|
|
15
|
+
import { r as removeEmptyTags, E as EDITOR_CONTENT_CLASS_NAME, S as SANITIZE_OPTIONS, b as EDITOR_CONTENT_DEFAULT_CONFIGURATION } from './chunk-CXjxEHI4.js';
|
|
13
16
|
import { useOnClickOutside } from '@bigbinary/neeto-commons-frontend/react-utils';
|
|
14
17
|
import Close from '@bigbinary/neeto-icons/Close';
|
|
15
18
|
import Button from '@bigbinary/neetoui/Button';
|
|
@@ -17,8 +20,8 @@ import Spinner from '@bigbinary/neetoui/Spinner';
|
|
|
17
20
|
import { createPortal } from 'react-dom';
|
|
18
21
|
import { useTranslation } from 'react-i18next';
|
|
19
22
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
20
|
-
import '
|
|
21
|
-
import '
|
|
23
|
+
import 'i18next';
|
|
24
|
+
import 'yup';
|
|
22
25
|
import 'react-dom/server';
|
|
23
26
|
import '@babel/runtime/helpers/toConsumableArray';
|
|
24
27
|
|
|
@@ -139,7 +142,7 @@ var EditorContent = function EditorContent(_ref) {
|
|
|
139
142
|
imagePreviewDetails = _useState2[0],
|
|
140
143
|
setImagePreviewDetails = _useState2[1];
|
|
141
144
|
var editorContentRef = useRef(null);
|
|
142
|
-
var htmlContent = substituteVariables(applySyntaxHighlightingAndLineNumbers(content), variables);
|
|
145
|
+
var htmlContent = substituteVariables(applySyntaxHighlightingAndLineNumbers(removeEmptyTags(content)), variables);
|
|
143
146
|
var sanitize = DOMPurify.sanitize;
|
|
144
147
|
var injectCopyButtonToCodeBlocks = function injectCopyButtonToCodeBlocks() {
|
|
145
148
|
var _editorContentRef$cur;
|
|
@@ -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 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 anchor = document.createElement(\"a\");\n anchor.setAttribute(\"href\", `#${headingId}`);\n anchor.classList.add(\"header-wrapper-link\");\n anchor.appendChild(buildLinkSVG());\n anchor.appendChild(heading.cloneNode(true));\n\n heading.replaceWith(anchor);\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\";\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} 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 = substituteVariables(\n applySyntaxHighlightingAndLineNumbers(content),\n variables\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","headingId","textContent","has","count","get","set","concat","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","substituteVariables","applySyntaxHighlightingAndLineNumbers","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/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 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 anchor = document.createElement(\"a\");\n anchor.setAttribute(\"href\", `#${headingId}`);\n anchor.classList.add(\"header-wrapper-link\");\n anchor.appendChild(buildLinkSVG());\n anchor.appendChild(heading.cloneNode(true));\n\n heading.replaceWith(anchor);\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} 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 = substituteVariables(\n applySyntaxHighlightingAndLineNumbers(removeEmptyTags(content)),\n variables\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","headingId","textContent","has","count","get","set","concat","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","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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"}
|
package/dist/FormikEditor.js
CHANGED
|
@@ -7,12 +7,13 @@ import Editor from './Editor.js';
|
|
|
7
7
|
import { jsx } from 'react/jsx-runtime';
|
|
8
8
|
import '@babel/runtime/helpers/toConsumableArray';
|
|
9
9
|
import '@babel/runtime/helpers/slicedToArray';
|
|
10
|
-
import './chunk-
|
|
10
|
+
import './chunk-DLd26xqr.js';
|
|
11
11
|
import 'ramda';
|
|
12
12
|
import './chunk-DmrvuTKK.js';
|
|
13
13
|
import 'i18next';
|
|
14
|
-
import './chunk-
|
|
15
|
-
import './chunk-
|
|
14
|
+
import './chunk-vS_ygswz.js';
|
|
15
|
+
import './chunk-CxUlY2ns.js';
|
|
16
|
+
import './chunk-BMJOPQ2b.js';
|
|
16
17
|
import 'yup';
|
|
17
18
|
import 'tippy.js';
|
|
18
19
|
import 'react-dom';
|
|
@@ -64,7 +65,7 @@ import 'react-colorful';
|
|
|
64
65
|
import '@bigbinary/neeto-molecules/DynamicVariables';
|
|
65
66
|
import '@bigbinary/neetoui/Modal';
|
|
66
67
|
import '@bigbinary/neetoui/Tab';
|
|
67
|
-
import './chunk-
|
|
68
|
+
import './chunk-Dt1M1PSn.js';
|
|
68
69
|
import 'zustand/shallow';
|
|
69
70
|
import '@bigbinary/neetoui/Toastr';
|
|
70
71
|
import 'zustand';
|
|
@@ -79,11 +80,11 @@ import '@bigbinary/neetoui/Checkbox';
|
|
|
79
80
|
import '@bigbinary/neeto-icons/MenuHorizontal';
|
|
80
81
|
import '@tippyjs/react';
|
|
81
82
|
import '@bigbinary/neeto-icons/File';
|
|
83
|
+
import 'react-dom/server';
|
|
84
|
+
import './chunk-CXjxEHI4.js';
|
|
82
85
|
import 'yjs';
|
|
83
86
|
import '@bigbinary/neeto-icons/Down';
|
|
84
87
|
import '@bigbinary/neeto-molecules/CopyToClipboardButton';
|
|
85
|
-
import './chunk-DBch3tqq.js';
|
|
86
|
-
import './chunk-LjMXcuRe.js';
|
|
87
88
|
import '@bigbinary/neeto-icons/Paragraph';
|
|
88
89
|
import '@bigbinary/neeto-icons/TextH1';
|
|
89
90
|
import '@bigbinary/neeto-icons/TextH2';
|
|
@@ -100,7 +101,7 @@ import '@bigbinary/neeto-icons/MergeSplit';
|
|
|
100
101
|
import '@bigbinary/neeto-icons/ToggleHeaderRow';
|
|
101
102
|
import '@bigbinary/neetoui/formik/Form';
|
|
102
103
|
import '@bigbinary/neetoui/formik/Input';
|
|
103
|
-
import './chunk-
|
|
104
|
+
import './chunk-Q8kq5V5L.js';
|
|
104
105
|
import '@bigbinary/neeto-icons/MenuVertical';
|
|
105
106
|
import '@bigbinary/neetoui/Alert';
|
|
106
107
|
|
package/dist/FormikEditor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormikEditor.js","sources":["../src/components/Editor/FormikEditor.jsx"],"sourcesContent":["import { forwardRef, memo } from \"react\";\n\nimport { FastField } from \"formik\";\nimport { noop } from \"neetocist\";\n\nimport Editor from \".\";\n\nconst FormikEditor = (\n {\n name,\n onChange = noop,\n shouldUpdate,\n attachments = [],\n mentions = [],\n variables = [],\n ...otherProps\n },\n ref\n) => {\n // Similar to the `shouldComponentUpdate` logic of FastField component.\n // https://github.com/jaredpalmer/formik/blob/main/packages/formik/src/FastField.tsx#L75-L93\n // Additionally calls the shouldUpdate function passed from the host application and compares to\n // the rest of the values.\n const internalShouldUpdate = (prevProps, nextProps) => {\n const prevFormikProps = prevProps.formik;\n const nextFormikProps = nextProps.formik;\n\n return (\n prevFormikProps.errors[name] !== nextFormikProps.errors[name] ||\n prevFormikProps.touched[name] !== nextFormikProps.touched[name] ||\n Object.keys(nextProps).length !== Object.keys(prevProps).length ||\n prevFormikProps.isSubmitting !== nextFormikProps.isSubmitting ||\n Boolean(shouldUpdate?.(prevProps, nextProps))\n );\n };\n\n return (\n <FastField\n {...{ attachments, mentions, name, variables }}\n shouldUpdate={internalShouldUpdate}\n >\n {({ field, form, meta }) => (\n <Editor\n {...{ attachments, mentions, name, ref, variables }}\n error={meta.touched ? meta.error : \"\"}\n initialValue={field.value}\n onBlur={() => {\n form.setFieldTouched(name, true);\n }}\n onChange={value => {\n form.setFieldValue(name, value);\n onChange?.(value);\n }}\n {...otherProps}\n />\n )}\n </FastField>\n );\n};\n\nFormikEditor.displayName = \"FormikNeetoEditor\";\n\nexport default memo(forwardRef(FormikEditor));\n"],"names":["FormikEditor","_ref","ref","name","_ref$onChange","onChange","noop","shouldUpdate","_ref$attachments","attachments","_ref$mentions","mentions","_ref$variables","variables","otherProps","_objectWithoutProperties","_excluded","internalShouldUpdate","prevProps","nextProps","prevFormikProps","formik","nextFormikProps","errors","touched","Object","keys","length","isSubmitting","Boolean","_jsx","FastField","children","_ref2","field","form","meta","Editor","_objectSpread","error","initialValue","value","onBlur","setFieldTouched","setFieldValue","displayName","memo","forwardRef"],"mappings":"
|
|
1
|
+
{"version":3,"file":"FormikEditor.js","sources":["../src/components/Editor/FormikEditor.jsx"],"sourcesContent":["import { forwardRef, memo } from \"react\";\n\nimport { FastField } from \"formik\";\nimport { noop } from \"neetocist\";\n\nimport Editor from \".\";\n\nconst FormikEditor = (\n {\n name,\n onChange = noop,\n shouldUpdate,\n attachments = [],\n mentions = [],\n variables = [],\n ...otherProps\n },\n ref\n) => {\n // Similar to the `shouldComponentUpdate` logic of FastField component.\n // https://github.com/jaredpalmer/formik/blob/main/packages/formik/src/FastField.tsx#L75-L93\n // Additionally calls the shouldUpdate function passed from the host application and compares to\n // the rest of the values.\n const internalShouldUpdate = (prevProps, nextProps) => {\n const prevFormikProps = prevProps.formik;\n const nextFormikProps = nextProps.formik;\n\n return (\n prevFormikProps.errors[name] !== nextFormikProps.errors[name] ||\n prevFormikProps.touched[name] !== nextFormikProps.touched[name] ||\n Object.keys(nextProps).length !== Object.keys(prevProps).length ||\n prevFormikProps.isSubmitting !== nextFormikProps.isSubmitting ||\n Boolean(shouldUpdate?.(prevProps, nextProps))\n );\n };\n\n return (\n <FastField\n {...{ attachments, mentions, name, variables }}\n shouldUpdate={internalShouldUpdate}\n >\n {({ field, form, meta }) => (\n <Editor\n {...{ attachments, mentions, name, ref, variables }}\n error={meta.touched ? meta.error : \"\"}\n initialValue={field.value}\n onBlur={() => {\n form.setFieldTouched(name, true);\n }}\n onChange={value => {\n form.setFieldValue(name, value);\n onChange?.(value);\n }}\n {...otherProps}\n />\n )}\n </FastField>\n );\n};\n\nFormikEditor.displayName = \"FormikNeetoEditor\";\n\nexport default memo(forwardRef(FormikEditor));\n"],"names":["FormikEditor","_ref","ref","name","_ref$onChange","onChange","noop","shouldUpdate","_ref$attachments","attachments","_ref$mentions","mentions","_ref$variables","variables","otherProps","_objectWithoutProperties","_excluded","internalShouldUpdate","prevProps","nextProps","prevFormikProps","formik","nextFormikProps","errors","touched","Object","keys","length","isSubmitting","Boolean","_jsx","FastField","children","_ref2","field","form","meta","Editor","_objectSpread","error","initialValue","value","onBlur","setFieldTouched","setFieldValue","displayName","memo","forwardRef"],"mappings":"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"}
|
package/dist/Menu.js
CHANGED
|
@@ -3,16 +3,17 @@ 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-
|
|
7
|
-
import './chunk-
|
|
6
|
+
export { M as default } from './chunk-DLd26xqr.js';
|
|
7
|
+
import './chunk-BMJOPQ2b.js';
|
|
8
8
|
import 'react/jsx-runtime';
|
|
9
9
|
import './chunk-DmrvuTKK.js';
|
|
10
10
|
import 'i18next';
|
|
11
|
+
import './chunk-vS_ygswz.js';
|
|
12
|
+
import '@bigbinary/neeto-cist';
|
|
13
|
+
import './chunk-CxUlY2ns.js';
|
|
11
14
|
import 'tippy.js';
|
|
12
15
|
import 'react-dom';
|
|
13
16
|
import 'classnames';
|
|
14
|
-
import './chunk-D86RZ044.js';
|
|
15
|
-
import '@bigbinary/neeto-cist';
|
|
16
17
|
import 'tippy.js/dist/svg-arrow.css';
|
|
17
18
|
import '@bigbinary/neeto-icons/Link';
|
|
18
19
|
import '@bigbinary/neeto-icons/Column';
|
|
@@ -61,7 +62,7 @@ import '@babel/runtime/helpers/objectWithoutProperties';
|
|
|
61
62
|
import '@bigbinary/neeto-molecules/DynamicVariables';
|
|
62
63
|
import '@bigbinary/neetoui/Modal';
|
|
63
64
|
import '@bigbinary/neetoui/Tab';
|
|
64
|
-
import './chunk-
|
|
65
|
+
import './chunk-Dt1M1PSn.js';
|
|
65
66
|
import 'zustand/shallow';
|
|
66
67
|
import '@bigbinary/neetoui/Toastr';
|
|
67
68
|
import 'zustand';
|
package/dist/Menu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Menu.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { U as URL_REGEXP, E as EDITOR_OPTIONS } from './chunk-CxUlY2ns.js';
|
|
2
|
+
import { t } from 'i18next';
|
|
3
|
+
import * as yup from 'yup';
|
|
4
|
+
|
|
5
|
+
var DEFAULT_EDITOR_OPTIONS = [EDITOR_OPTIONS.BOLD, EDITOR_OPTIONS.ITALIC, EDITOR_OPTIONS.UNDERLINE, EDITOR_OPTIONS.STRIKETHROUGH, EDITOR_OPTIONS.LINK, EDITOR_OPTIONS.PARAGRAPH, EDITOR_OPTIONS.H1, EDITOR_OPTIONS.H2, EDITOR_OPTIONS.LIST_BULLETS, EDITOR_OPTIONS.LIST_ORDERED, EDITOR_OPTIONS.CODE];
|
|
6
|
+
var EDITOR_PADDING_SIZE = 12;
|
|
7
|
+
var EDITOR_BORDER_SIZE = 1;
|
|
8
|
+
var EDITOR_LINE_HEIGHT = 21;
|
|
9
|
+
var IMAGE_REGEX = new RegExp(/(<img[^>]*?>)(?![\s\S]*<\/figure>)/g);
|
|
10
|
+
var IMAGE_REPLACEMENT_PATTERN = "<figure>$1</figure>";
|
|
11
|
+
var EMPTY_DIV_REGEX = new RegExp(/<div[^>]*?>\s*(?:<br[^>]*?>)\s*<\/div>/g);
|
|
12
|
+
var TRAILING_BR_REGEX = new RegExp(/\s*(?:<br[^>]*?>)+\s*$/);
|
|
13
|
+
var LINK_VALIDATION_SCHEMA = yup.object().shape({
|
|
14
|
+
textContent: yup.string().required(t("neetoEditor.error.textRequired")),
|
|
15
|
+
urlString: yup.string().matches(URL_REGEXP, t("neetoEditor.error.invalidUrl")).required(t("neetoEditor.error.urlRequired"))
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
export { DEFAULT_EDITOR_OPTIONS as D, EMPTY_DIV_REGEX as E, IMAGE_REGEX as I, LINK_VALIDATION_SCHEMA as L, TRAILING_BR_REGEX as T, IMAGE_REPLACEMENT_PATTERN as a, EDITOR_LINE_HEIGHT as b, EDITOR_PADDING_SIZE as c, EDITOR_BORDER_SIZE as d };
|
|
19
|
+
//# sourceMappingURL=chunk-BMJOPQ2b.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk-BMJOPQ2b.js","sources":["../src/components/Editor/constants.js"],"sourcesContent":["import { EDITOR_OPTIONS, URL_REGEXP } from \"common/constants\";\nimport { t } from \"i18next\";\nimport * as yup from \"yup\";\n\nexport const DEFAULT_EDITOR_OPTIONS = [\n EDITOR_OPTIONS.BOLD,\n EDITOR_OPTIONS.ITALIC,\n EDITOR_OPTIONS.UNDERLINE,\n EDITOR_OPTIONS.STRIKETHROUGH,\n EDITOR_OPTIONS.LINK,\n EDITOR_OPTIONS.PARAGRAPH,\n EDITOR_OPTIONS.H1,\n EDITOR_OPTIONS.H2,\n EDITOR_OPTIONS.LIST_BULLETS,\n EDITOR_OPTIONS.LIST_ORDERED,\n EDITOR_OPTIONS.CODE,\n];\nexport const EDITOR_PADDING_SIZE = 12;\n\nexport const EDITOR_BORDER_SIZE = 1;\n\nexport const EDITOR_LINE_HEIGHT = 21;\n\nexport const IMAGE_REGEX = new RegExp(/(<img[^>]*?>)(?![\\s\\S]*<\\/figure>)/g);\nexport const IMAGE_REPLACEMENT_PATTERN = \"<figure>$1</figure>\";\nexport const EMPTY_DIV_REGEX = new RegExp(\n /<div[^>]*?>\\s*(?:<br[^>]*?>)\\s*<\\/div>/g\n);\nexport const TRAILING_BR_REGEX = new RegExp(/\\s*(?:<br[^>]*?>)+\\s*$/);\n\nexport const LINK_VALIDATION_SCHEMA = yup.object().shape({\n textContent: yup.string().required(t(\"neetoEditor.error.textRequired\")),\n urlString: yup\n .string()\n .matches(URL_REGEXP, t(\"neetoEditor.error.invalidUrl\"))\n .required(t(\"neetoEditor.error.urlRequired\")),\n});\n"],"names":["DEFAULT_EDITOR_OPTIONS","EDITOR_OPTIONS","BOLD","ITALIC","UNDERLINE","STRIKETHROUGH","LINK","PARAGRAPH","H1","H2","LIST_BULLETS","LIST_ORDERED","CODE","EDITOR_PADDING_SIZE","EDITOR_BORDER_SIZE","EDITOR_LINE_HEIGHT","IMAGE_REGEX","RegExp","IMAGE_REPLACEMENT_PATTERN","EMPTY_DIV_REGEX","TRAILING_BR_REGEX","LINK_VALIDATION_SCHEMA","yup","object","shape","textContent","string","required","t","urlString","matches","URL_REGEXP"],"mappings":";;;;AAIO,IAAMA,sBAAsB,GAAG,CACpCC,cAAc,CAACC,IAAI,EACnBD,cAAc,CAACE,MAAM,EACrBF,cAAc,CAACG,SAAS,EACxBH,cAAc,CAACI,aAAa,EAC5BJ,cAAc,CAACK,IAAI,EACnBL,cAAc,CAACM,SAAS,EACxBN,cAAc,CAACO,EAAE,EACjBP,cAAc,CAACQ,EAAE,EACjBR,cAAc,CAACS,YAAY,EAC3BT,cAAc,CAACU,YAAY,EAC3BV,cAAc,CAACW,IAAI,EACpB;AACM,IAAMC,mBAAmB,GAAG,GAAE;AAE9B,IAAMC,kBAAkB,GAAG,EAAC;AAE5B,IAAMC,kBAAkB,GAAG,GAAE;IAEvBC,WAAW,GAAG,IAAIC,MAAM,CAAC,qCAAqC,EAAC;AACrE,IAAMC,yBAAyB,GAAG,sBAAqB;IACjDC,eAAe,GAAG,IAAIF,MAAM,CACvC,yCACF,EAAC;IACYG,iBAAiB,GAAG,IAAIH,MAAM,CAAC,wBAAwB,EAAC;AAE9D,IAAMI,sBAAsB,GAAGC,GAAG,CAACC,MAAM,EAAE,CAACC,KAAK,CAAC;AACvDC,EAAAA,WAAW,EAAEH,GAAG,CAACI,MAAM,EAAE,CAACC,QAAQ,CAACC,CAAC,CAAC,gCAAgC,CAAC,CAAC;EACvEC,SAAS,EAAEP,GAAG,CACXI,MAAM,EAAE,CACRI,OAAO,CAACC,UAAU,EAAEH,CAAC,CAAC,8BAA8B,CAAC,CAAC,CACtDD,QAAQ,CAACC,CAAC,CAAC,+BAA+B,CAAC,CAAA;AAChD,CAAC;;;;"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
2
|
+
import { g as getDefaultExportFromCjs } from './chunk-CxUlY2ns.js';
|
|
3
|
+
import { isNotPresent } from '@bigbinary/neeto-cist';
|
|
2
4
|
|
|
3
5
|
var deepFreezeEs6 = {exports: {}};
|
|
4
6
|
|
|
@@ -16143,5 +16145,75 @@ lowlight.registerLanguage('wasm', wasm);
|
|
|
16143
16145
|
lowlight.registerLanguage('xml', xml);
|
|
16144
16146
|
lowlight.registerLanguage('yaml', yaml);
|
|
16145
16147
|
|
|
16146
|
-
|
|
16147
|
-
|
|
16148
|
+
var EDITOR_CONTENT_CLASS_NAME = "neeto-editor-content";
|
|
16149
|
+
var SANITIZE_OPTIONS = {
|
|
16150
|
+
ADD_TAGS: ["iframe"],
|
|
16151
|
+
ADD_ATTR: ["target", "allow", "allowfullscreen", "frameborder"]
|
|
16152
|
+
};
|
|
16153
|
+
var CODE_BLOCK_REGEX = /<pre(?:\s+[^>]+)?><code(?:\s+class="language-([^"]*)")?>([\S\s]*?)<\/code><\/pre>/gim;
|
|
16154
|
+
var VARIABLE_SPAN_REGEX = /<span data-variable="" [^>]*data-label="([^"]+)">{{([^}]+)}}<\/span>/g;
|
|
16155
|
+
var LANGUAGE_LIST = [].concat(_toConsumableArray(lowlight.listLanguages()), ["html"]);
|
|
16156
|
+
var EDITOR_CONTENT_DEFAULT_CONFIGURATION = {
|
|
16157
|
+
enableHeaderLinks: false
|
|
16158
|
+
};
|
|
16159
|
+
|
|
16160
|
+
var NON_EMPTY_TAGS = ["img", "iframe"];
|
|
16161
|
+
var MARGIN_HEIGHT = 8;
|
|
16162
|
+
var EMPTY_TAGS_TO_REMOVE = ["p", "h1", "h2", "h3", "h4", "h5", "h6", "br"];
|
|
16163
|
+
|
|
16164
|
+
var removeTagsStart = function removeTagsStart(node) {
|
|
16165
|
+
while (node.firstChild && EMPTY_TAGS_TO_REMOVE.includes((_node$firstChild$tagN = node.firstChild.tagName) === null || _node$firstChild$tagN === void 0 ? void 0 : _node$firstChild$tagN.toLowerCase())) {
|
|
16166
|
+
var _node$firstChild$tagN;
|
|
16167
|
+
if (!node.firstChild.innerHTML) {
|
|
16168
|
+
node.firstChild.remove();
|
|
16169
|
+
} else {
|
|
16170
|
+
removeTagsStart(node.firstChild);
|
|
16171
|
+
if (node.firstChild.innerHTML) {
|
|
16172
|
+
break;
|
|
16173
|
+
}
|
|
16174
|
+
}
|
|
16175
|
+
}
|
|
16176
|
+
};
|
|
16177
|
+
var removeTagsEnd = function removeTagsEnd(node) {
|
|
16178
|
+
while (node.lastChild && EMPTY_TAGS_TO_REMOVE.includes((_node$lastChild$tagNa = node.lastChild.tagName) === null || _node$lastChild$tagNa === void 0 ? void 0 : _node$lastChild$tagNa.toLowerCase())) {
|
|
16179
|
+
var _node$lastChild$tagNa;
|
|
16180
|
+
if (!node.lastChild.innerHTML) {
|
|
16181
|
+
node.lastChild.remove();
|
|
16182
|
+
} else {
|
|
16183
|
+
removeTagsEnd(node.lastChild);
|
|
16184
|
+
if (node.lastChild.innerHTML) {
|
|
16185
|
+
break;
|
|
16186
|
+
}
|
|
16187
|
+
}
|
|
16188
|
+
}
|
|
16189
|
+
};
|
|
16190
|
+
var removeEmptyTags = function removeEmptyTags(html) {
|
|
16191
|
+
var tempDiv = document.createElement("div");
|
|
16192
|
+
tempDiv.innerHTML = html;
|
|
16193
|
+
removeTagsStart(tempDiv);
|
|
16194
|
+
removeTagsEnd(tempDiv);
|
|
16195
|
+
return tempDiv.innerHTML;
|
|
16196
|
+
};
|
|
16197
|
+
var isEditorEmpty = function isEditorEmpty(htmlContent) {
|
|
16198
|
+
var _element$textContent;
|
|
16199
|
+
if (isNotPresent(htmlContent)) return true;
|
|
16200
|
+
if (NON_EMPTY_TAGS.some(function (tag) {
|
|
16201
|
+
return htmlContent.includes(tag);
|
|
16202
|
+
})) return false;
|
|
16203
|
+
var element = document.createElement("div");
|
|
16204
|
+
element.innerHTML = htmlContent;
|
|
16205
|
+
var editorIsEmpty = isNotPresent((_element$textContent = element.textContent) === null || _element$textContent === void 0 ? void 0 : _element$textContent.trim());
|
|
16206
|
+
element.remove();
|
|
16207
|
+
return editorIsEmpty;
|
|
16208
|
+
};
|
|
16209
|
+
var isEditorContentWithinLimit = function isEditorContentWithinLimit(htmlContent, maxLength) {
|
|
16210
|
+
if (isNotPresent(htmlContent)) return true;
|
|
16211
|
+
var element = document.createElement("div");
|
|
16212
|
+
element.innerHTML = htmlContent;
|
|
16213
|
+
var isLengthWithinLimit = element.textContent.length <= maxLength;
|
|
16214
|
+
element.remove();
|
|
16215
|
+
return isLengthWithinLimit;
|
|
16216
|
+
};
|
|
16217
|
+
|
|
16218
|
+
export { CODE_BLOCK_REGEX as C, EDITOR_CONTENT_CLASS_NAME as E, LANGUAGE_LIST as L, MARGIN_HEIGHT as M, SANITIZE_OPTIONS as S, VARIABLE_SPAN_REGEX as V, isEditorContentWithinLimit as a, EDITOR_CONTENT_DEFAULT_CONFIGURATION as b, core as c, isEditorEmpty as i, lowlight as l, removeEmptyTags as r };
|
|
16219
|
+
//# sourceMappingURL=chunk-CXjxEHI4.js.map
|