@bigbinary/neeto-molecules 3.2.16 → 3.2.17
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/DocumentEditor.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _extends from '@babel/runtime/helpers/extends';
|
|
2
2
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
3
3
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
4
|
-
import React__default, { useRef, useState,
|
|
4
|
+
import React__default, { useCallback, memo, useRef, useState, useMemo } from 'react';
|
|
5
5
|
import classnames from 'classnames';
|
|
6
6
|
import { isPresent, noop } from '@bigbinary/neeto-cist';
|
|
7
7
|
import FormikEditor from '@bigbinary/neeto-editor/FormikEditor';
|
|
@@ -34,15 +34,15 @@ var useEditor = function useEditor(_ref) {
|
|
|
34
34
|
var _useFormikContext = useFormikContext(),
|
|
35
35
|
setFieldValue = _useFormikContext.setFieldValue,
|
|
36
36
|
errors = _useFormikContext.errors;
|
|
37
|
-
var handleContentChange = function
|
|
37
|
+
var handleContentChange = useCallback(function (content) {
|
|
38
38
|
setFieldValue(editorContentFieldName, content);
|
|
39
39
|
onContentChange === null || onContentChange === void 0 ? void 0 : onContentChange(content);
|
|
40
|
-
};
|
|
41
|
-
var handleAttachmentChange = function
|
|
40
|
+
}, [editorContentFieldName, onContentChange, setFieldValue]);
|
|
41
|
+
var handleAttachmentChange = useCallback(function (attachments) {
|
|
42
42
|
setAttachments(attachments);
|
|
43
43
|
setFieldValue("attachments", attachments);
|
|
44
44
|
onAttachmentChange === null || onAttachmentChange === void 0 ? void 0 : onAttachmentChange(attachments);
|
|
45
|
-
};
|
|
45
|
+
}, [onAttachmentChange, setAttachments, setFieldValue]);
|
|
46
46
|
var handleTitleChange = function handleTitleChange(event) {
|
|
47
47
|
var title = event.target.value;
|
|
48
48
|
setFieldValue(titleFieldName, title);
|
|
@@ -142,6 +142,9 @@ var Editor = function Editor(_ref) {
|
|
|
142
142
|
editorRef.current = node;
|
|
143
143
|
getEditorRef(node);
|
|
144
144
|
}, []);
|
|
145
|
+
var addons = useMemo(function () {
|
|
146
|
+
return EDITOR_ADDONS.concat(editorProps.addons || []);
|
|
147
|
+
}, [editorProps.addons]);
|
|
145
148
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
146
149
|
className: "neeto-molecules-document__wrapper",
|
|
147
150
|
"data-testid": "document-editor-container",
|
|
@@ -155,10 +158,11 @@ var Editor = function Editor(_ref) {
|
|
|
155
158
|
name: editorContentFieldName,
|
|
156
159
|
ref: setEditorRef,
|
|
157
160
|
menuClassName: classnames("neeto-molecules-document-editor__menubar", menuClassName)
|
|
158
|
-
}, _objectSpread({
|
|
161
|
+
}, _objectSpread(_objectSpread({
|
|
159
162
|
attachments: attachments
|
|
160
|
-
}, editorProps), {
|
|
161
|
-
addons:
|
|
163
|
+
}, editorProps), {}, {
|
|
164
|
+
addons: addons
|
|
165
|
+
}), {
|
|
162
166
|
onChange: handleContentChange,
|
|
163
167
|
onChangeAttachments: handleAttachmentChange
|
|
164
168
|
}), /*#__PURE__*/React__default.createElement("div", {
|
|
@@ -181,6 +185,8 @@ var Editor = function Editor(_ref) {
|
|
|
181
185
|
style: "body3"
|
|
182
186
|
}, errors[editorContentFieldName]))));
|
|
183
187
|
};
|
|
188
|
+
Editor.displayName = "DocumentEditor";
|
|
189
|
+
var index = /*#__PURE__*/memo(Editor);
|
|
184
190
|
|
|
185
|
-
export {
|
|
191
|
+
export { index as default };
|
|
186
192
|
//# sourceMappingURL=DocumentEditor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentEditor.js","sources":["../src/components/DocumentEditor/constants.js","../src/components/DocumentEditor/hooks/useEditor.js","../src/components/DocumentEditor/utils.js","../src/components/DocumentEditor/index.jsx"],"sourcesContent":["export const EDITOR_ADDONS = [\n \"highlight\",\n \"emoji\",\n \"video-upload\",\n \"code-block\",\n \"block-quote\",\n \"image-upload\",\n \"image-upload-unsplash\",\n \"divider\",\n \"video-embed\",\n \"undo\",\n \"redo\",\n \"table\",\n];\n\nexport const DEFAULT_EDITOR_PROPS = {\n isCharacterCountActive: true,\n isMenuIndependent: true,\n addons: [],\n};\n","import { useFormikContext } from \"formik\";\nimport { isPresent } from \"neetocist\";\nimport useHotkeys from \"neetohotkeys\";\n\nconst useEditor = ({\n onContentChange,\n editorContentFieldName,\n setAttachments,\n onAttachmentChange,\n onTitleChange,\n titleFieldName,\n editorRef,\n titleRef,\n}) => {\n const { setFieldValue, errors } = useFormikContext();\n\n const handleContentChange = content => {\n setFieldValue(editorContentFieldName, content);\n onContentChange?.(content);\n };\n\n const handleAttachmentChange = attachments => {\n setAttachments(attachments);\n setFieldValue(\"attachments\", attachments);\n onAttachmentChange?.(attachments);\n };\n\n const handleTitleChange = event => {\n const title = event.target.value;\n setFieldValue(titleFieldName, title);\n onTitleChange?.(title);\n };\n\n const handleEditorBackspaceKeypress = () => {\n const editor = editorRef.current?.editor;\n const selection = editor?.state?.selection;\n if (\n editor?.isFocused &&\n isPresent(titleRef.current) &&\n selection?.anchor === 1\n ) {\n const title = titleRef.current.value;\n titleRef.current.focus();\n titleRef.current.setSelectionRange(title?.length, title?.length);\n }\n };\n\n const titleHotkeyRef = useHotkeys(\n \"return\",\n () => {\n editorRef.current?.editor?.commands?.insertContentAt(0, \"<p />\");\n editorRef.current?.editor?.commands?.focus(\"start\");\n },\n { mode: \"scoped\" }\n );\n\n const editorHotkeyRef = useHotkeys(\n \"backspace\",\n handleEditorBackspaceKeypress,\n { mode: \"scoped\" }\n );\n\n return {\n handleContentChange,\n handleAttachmentChange,\n handleTitleChange,\n editorHotkeyRef,\n titleHotkeyRef,\n errors,\n };\n};\n\nexport default useEditor;\n","export const getUniqueAttachments = attachments => {\n const uniqueAttachments = attachments?.reduce(\n (uniqueAttachments, attachment) => ({\n ...uniqueAttachments,\n [attachment.signedId]: attachment,\n }),\n {}\n );\n\n return Object.values(uniqueAttachments || {});\n};\n","import React, { useCallback, useRef, useState } from \"react\";\n\nimport classNames from \"classnames\";\nimport { noop } from \"neetocist\";\nimport { FormikEditor } from \"neetoeditor\";\nimport { Typography } from \"neetoui\";\nimport { Textarea } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { DEFAULT_EDITOR_PROPS, EDITOR_ADDONS } from \"./constants\";\nimport \"./editor.scss\";\nimport useEditor from \"./hooks/useEditor\";\nimport { getUniqueAttachments } from \"./utils\";\n\nconst Editor = ({\n attachments: initialAttachments,\n onContentChange,\n onAttachmentChange,\n onTitleChange,\n getTitleRef = noop,\n getEditorRef = noop,\n menuClassName,\n editorContentFieldName = \"htmlContent\",\n titleFieldName = \"title\",\n editorProps = DEFAULT_EDITOR_PROPS,\n titleProps = {},\n}) => {\n const { t } = useTranslation();\n\n const titleRef = useRef();\n const editorRef = useRef();\n\n const [attachments, setAttachments] = useState(() =>\n getUniqueAttachments(initialAttachments)\n );\n\n const {\n handleContentChange,\n handleAttachmentChange,\n handleTitleChange,\n editorHotkeyRef,\n titleHotkeyRef,\n errors,\n } = useEditor({\n onContentChange,\n editorContentFieldName,\n setAttachments,\n onAttachmentChange,\n onTitleChange,\n titleFieldName,\n editorRef,\n titleRef,\n });\n\n const setTitleRef = node => {\n titleHotkeyRef.current = node;\n getTitleRef(node);\n titleRef.current = node;\n };\n\n const setEditorRef = useCallback(node => {\n editorRef.current = node;\n getEditorRef(node);\n }, []);\n\n return (\n <div\n className=\"neeto-molecules-document__wrapper\"\n data-testid=\"document-editor-container\"\n ref={editorHotkeyRef}\n >\n <FormikEditor\n attachmentsClassName=\"editor-content-attachments\"\n className=\"h-full w-full\"\n contentClassName=\"editor-content__wrapper neeto-molecules-document__container\"\n data-cy=\"neeto-molecules-document-content-text-area\"\n error={undefined}\n name={editorContentFieldName}\n ref={setEditorRef}\n menuClassName={classNames(\n \"neeto-molecules-document-editor__menubar\",\n menuClassName\n )}\n {...{ attachments, ...editorProps }}\n addons={EDITOR_ADDONS.concat(editorProps.addons || [])}\n onChange={handleContentChange}\n onChangeAttachments={handleAttachmentChange}\n >\n <div className=\"neeto-molecules-document__container px-4\">\n <Textarea\n nakedTextarea\n className=\"neeto-molecules-document__title\"\n data-cy=\"neeto-molecules-document-title-text-field\"\n name={titleFieldName}\n ref={setTitleRef}\n rows={1}\n placeholder={\n titleProps.placeholder || t(\"neetoMolecules.documentEditor.title\")\n }\n onChange={handleTitleChange}\n onKeyDown={e =>\n e.key === \"Enter\" && !e.shiftKey && e.preventDefault()\n }\n {...titleProps}\n />\n {errors[editorContentFieldName] && (\n <Typography\n className=\"neeto-ui-input__error neeto-molecules-editor-content__error\"\n data-cy=\"articles-content-input-error\"\n style=\"body3\"\n >\n {errors[editorContentFieldName]}\n </Typography>\n )}\n </div>\n </FormikEditor>\n </div>\n );\n};\n\nEditor.propTypes = {\n /**\n * List of initial attachments.\n */\n attachments: PropTypes.arrayOf(\n PropTypes.shape({\n contentType: PropTypes.string,\n filename: PropTypes.string,\n signedId: PropTypes.string,\n url: PropTypes.string,\n })\n ),\n /**\n * Callback that will be triggered when the editor content changes.\n * This function is not throttled.\n */\n onContentChange: PropTypes.func,\n /**\n * Callback that will be triggered when the attachments changes.\n */\n onAttachmentChange: PropTypes.func,\n /**\n * Callback that will be triggered when the article title changes.\n */\n onTitleChange: PropTypes.func,\n /**\n * This function will be called with the title node reference.\n */\n getTitleRef: PropTypes.func,\n /**\n * This function will be called with editor reference.\n */\n getEditorRef: PropTypes.func,\n /**\n * Formik field name of the editor. The default value is `htmlContent`.\n */\n editorContentFieldName: PropTypes.string,\n /**\n * Formik field name of the title. The default value is `title`.\n */\n titleFieldName: PropTypes.string,\n /**\n * These props will be passed down to the editor component.\n */\n editorProps: PropTypes.object,\n /**\n * These props will be passed down to the title text area component.\n */\n titleProps: PropTypes.object,\n /**\n * A prop to pass class names to the editor menubar.\n */\n menuClassName: PropTypes.string,\n};\n\nexport default Editor;\n"],"names":["EDITOR_ADDONS","DEFAULT_EDITOR_PROPS","isCharacterCountActive","isMenuIndependent","addons","useEditor","_ref","onContentChange","editorContentFieldName","setAttachments","onAttachmentChange","onTitleChange","titleFieldName","editorRef","titleRef","_useFormikContext","useFormikContext","setFieldValue","errors","handleContentChange","content","handleAttachmentChange","attachments","handleTitleChange","event","title","target","value","handleEditorBackspaceKeypress","_editorRef$current","_editor$state","editor","current","selection","state","isFocused","isPresent","anchor","focus","setSelectionRange","length","titleHotkeyRef","useHotkeys","_editorRef$current2","_editorRef$current2$e","_editorRef$current2$e2","_editorRef$current3","_editorRef$current3$e","_editorRef$current3$e2","commands","insertContentAt","mode","editorHotkeyRef","getUniqueAttachments","uniqueAttachments","reduce","attachment","_objectSpread","_defineProperty","signedId","Object","values","Editor","initialAttachments","_ref$getTitleRef","getTitleRef","noop","_ref$getEditorRef","getEditorRef","menuClassName","_ref$editorContentFie","_ref$titleFieldName","_ref$editorProps","editorProps","_ref$titleProps","titleProps","_useTranslation","useTranslation","t","useRef","_useState","useState","_useState2","_slicedToArray","_useEditor","setTitleRef","node","setEditorRef","useCallback","React","createElement","className","ref","FormikEditor","_extends","attachmentsClassName","contentClassName","error","undefined","name","classNames","concat","onChange","onChangeAttachments","Textarea","nakedTextarea","rows","placeholder","onKeyDown","e","key","shiftKey","preventDefault","Typography","style"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DocumentEditor.js","sources":["../src/components/DocumentEditor/constants.js","../src/components/DocumentEditor/hooks/useEditor.js","../src/components/DocumentEditor/utils.js","../src/components/DocumentEditor/index.jsx"],"sourcesContent":["export const EDITOR_ADDONS = [\n \"highlight\",\n \"emoji\",\n \"video-upload\",\n \"code-block\",\n \"block-quote\",\n \"image-upload\",\n \"image-upload-unsplash\",\n \"divider\",\n \"video-embed\",\n \"undo\",\n \"redo\",\n \"table\",\n];\n\nexport const DEFAULT_EDITOR_PROPS = {\n isCharacterCountActive: true,\n isMenuIndependent: true,\n addons: [],\n};\n","import { useCallback } from \"react\";\n\nimport { useFormikContext } from \"formik\";\nimport { isPresent } from \"neetocist\";\nimport useHotkeys from \"neetohotkeys\";\n\nconst useEditor = ({\n onContentChange,\n editorContentFieldName,\n setAttachments,\n onAttachmentChange,\n onTitleChange,\n titleFieldName,\n editorRef,\n titleRef,\n}) => {\n const { setFieldValue, errors } = useFormikContext();\n\n const handleContentChange = useCallback(\n content => {\n setFieldValue(editorContentFieldName, content);\n onContentChange?.(content);\n },\n [editorContentFieldName, onContentChange, setFieldValue]\n );\n\n const handleAttachmentChange = useCallback(\n attachments => {\n setAttachments(attachments);\n setFieldValue(\"attachments\", attachments);\n onAttachmentChange?.(attachments);\n },\n [onAttachmentChange, setAttachments, setFieldValue]\n );\n\n const handleTitleChange = event => {\n const title = event.target.value;\n setFieldValue(titleFieldName, title);\n onTitleChange?.(title);\n };\n\n const handleEditorBackspaceKeypress = () => {\n const editor = editorRef.current?.editor;\n const selection = editor?.state?.selection;\n if (\n editor?.isFocused &&\n isPresent(titleRef.current) &&\n selection?.anchor === 1\n ) {\n const title = titleRef.current.value;\n titleRef.current.focus();\n titleRef.current.setSelectionRange(title?.length, title?.length);\n }\n };\n\n const titleHotkeyRef = useHotkeys(\n \"return\",\n () => {\n editorRef.current?.editor?.commands?.insertContentAt(0, \"<p />\");\n editorRef.current?.editor?.commands?.focus(\"start\");\n },\n { mode: \"scoped\" }\n );\n\n const editorHotkeyRef = useHotkeys(\n \"backspace\",\n handleEditorBackspaceKeypress,\n { mode: \"scoped\" }\n );\n\n return {\n handleContentChange,\n handleAttachmentChange,\n handleTitleChange,\n editorHotkeyRef,\n titleHotkeyRef,\n errors,\n };\n};\n\nexport default useEditor;\n","export const getUniqueAttachments = attachments => {\n const uniqueAttachments = attachments?.reduce(\n (uniqueAttachments, attachment) => ({\n ...uniqueAttachments,\n [attachment.signedId]: attachment,\n }),\n {}\n );\n\n return Object.values(uniqueAttachments || {});\n};\n","import React, { memo, useCallback, useMemo, useRef, useState } from \"react\";\n\nimport classNames from \"classnames\";\nimport { noop } from \"neetocist\";\nimport { FormikEditor } from \"neetoeditor\";\nimport { Typography } from \"neetoui\";\nimport { Textarea } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { DEFAULT_EDITOR_PROPS, EDITOR_ADDONS } from \"./constants\";\nimport \"./editor.scss\";\nimport useEditor from \"./hooks/useEditor\";\nimport { getUniqueAttachments } from \"./utils\";\n\nconst Editor = ({\n attachments: initialAttachments,\n onContentChange,\n onAttachmentChange,\n onTitleChange,\n getTitleRef = noop,\n getEditorRef = noop,\n menuClassName,\n editorContentFieldName = \"htmlContent\",\n titleFieldName = \"title\",\n editorProps = DEFAULT_EDITOR_PROPS,\n titleProps = {},\n}) => {\n const { t } = useTranslation();\n\n const titleRef = useRef();\n const editorRef = useRef();\n\n const [attachments, setAttachments] = useState(() =>\n getUniqueAttachments(initialAttachments)\n );\n\n const {\n handleContentChange,\n handleAttachmentChange,\n handleTitleChange,\n editorHotkeyRef,\n titleHotkeyRef,\n errors,\n } = useEditor({\n onContentChange,\n editorContentFieldName,\n setAttachments,\n onAttachmentChange,\n onTitleChange,\n titleFieldName,\n editorRef,\n titleRef,\n });\n\n const setTitleRef = node => {\n titleHotkeyRef.current = node;\n getTitleRef(node);\n titleRef.current = node;\n };\n\n const setEditorRef = useCallback(node => {\n editorRef.current = node;\n getEditorRef(node);\n }, []);\n\n const addons = useMemo(\n () => EDITOR_ADDONS.concat(editorProps.addons || []),\n [editorProps.addons]\n );\n\n return (\n <div\n className=\"neeto-molecules-document__wrapper\"\n data-testid=\"document-editor-container\"\n ref={editorHotkeyRef}\n >\n <FormikEditor\n attachmentsClassName=\"editor-content-attachments\"\n className=\"h-full w-full\"\n contentClassName=\"editor-content__wrapper neeto-molecules-document__container\"\n data-cy=\"neeto-molecules-document-content-text-area\"\n error={undefined}\n name={editorContentFieldName}\n ref={setEditorRef}\n menuClassName={classNames(\n \"neeto-molecules-document-editor__menubar\",\n menuClassName\n )}\n {...{ attachments, ...editorProps, addons }}\n onChange={handleContentChange}\n onChangeAttachments={handleAttachmentChange}\n >\n <div className=\"neeto-molecules-document__container px-4\">\n <Textarea\n nakedTextarea\n className=\"neeto-molecules-document__title\"\n data-cy=\"neeto-molecules-document-title-text-field\"\n name={titleFieldName}\n ref={setTitleRef}\n rows={1}\n placeholder={\n titleProps.placeholder || t(\"neetoMolecules.documentEditor.title\")\n }\n onChange={handleTitleChange}\n onKeyDown={e =>\n e.key === \"Enter\" && !e.shiftKey && e.preventDefault()\n }\n {...titleProps}\n />\n {errors[editorContentFieldName] && (\n <Typography\n className=\"neeto-ui-input__error neeto-molecules-editor-content__error\"\n data-cy=\"articles-content-input-error\"\n style=\"body3\"\n >\n {errors[editorContentFieldName]}\n </Typography>\n )}\n </div>\n </FormikEditor>\n </div>\n );\n};\n\nEditor.propTypes = {\n /**\n * List of initial attachments.\n */\n attachments: PropTypes.arrayOf(\n PropTypes.shape({\n contentType: PropTypes.string,\n filename: PropTypes.string,\n signedId: PropTypes.string,\n url: PropTypes.string,\n })\n ),\n /**\n * Callback that will be triggered when the editor content changes.\n * This function is not throttled.\n */\n onContentChange: PropTypes.func,\n /**\n * Callback that will be triggered when the attachments changes.\n */\n onAttachmentChange: PropTypes.func,\n /**\n * Callback that will be triggered when the article title changes.\n */\n onTitleChange: PropTypes.func,\n /**\n * This function will be called with the title node reference.\n */\n getTitleRef: PropTypes.func,\n /**\n * This function will be called with editor reference.\n */\n getEditorRef: PropTypes.func,\n /**\n * Formik field name of the editor. The default value is `htmlContent`.\n */\n editorContentFieldName: PropTypes.string,\n /**\n * Formik field name of the title. The default value is `title`.\n */\n titleFieldName: PropTypes.string,\n /**\n * These props will be passed down to the editor component.\n */\n editorProps: PropTypes.object,\n /**\n * These props will be passed down to the title text area component.\n */\n titleProps: PropTypes.object,\n /**\n * A prop to pass class names to the editor menubar.\n */\n menuClassName: PropTypes.string,\n};\n\nEditor.displayName = \"DocumentEditor\";\n\nexport default memo(Editor);\n"],"names":["EDITOR_ADDONS","DEFAULT_EDITOR_PROPS","isCharacterCountActive","isMenuIndependent","addons","useEditor","_ref","onContentChange","editorContentFieldName","setAttachments","onAttachmentChange","onTitleChange","titleFieldName","editorRef","titleRef","_useFormikContext","useFormikContext","setFieldValue","errors","handleContentChange","useCallback","content","handleAttachmentChange","attachments","handleTitleChange","event","title","target","value","handleEditorBackspaceKeypress","_editorRef$current","_editor$state","editor","current","selection","state","isFocused","isPresent","anchor","focus","setSelectionRange","length","titleHotkeyRef","useHotkeys","_editorRef$current2","_editorRef$current2$e","_editorRef$current2$e2","_editorRef$current3","_editorRef$current3$e","_editorRef$current3$e2","commands","insertContentAt","mode","editorHotkeyRef","getUniqueAttachments","uniqueAttachments","reduce","attachment","_objectSpread","_defineProperty","signedId","Object","values","Editor","initialAttachments","_ref$getTitleRef","getTitleRef","noop","_ref$getEditorRef","getEditorRef","menuClassName","_ref$editorContentFie","_ref$titleFieldName","_ref$editorProps","editorProps","_ref$titleProps","titleProps","_useTranslation","useTranslation","t","useRef","_useState","useState","_useState2","_slicedToArray","_useEditor","setTitleRef","node","setEditorRef","useMemo","concat","React","createElement","className","ref","FormikEditor","_extends","attachmentsClassName","contentClassName","error","undefined","name","classNames","onChange","onChangeAttachments","Textarea","nakedTextarea","rows","placeholder","onKeyDown","e","key","shiftKey","preventDefault","Typography","style","displayName","memo"],"mappings":"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"}
|
|
@@ -48,15 +48,15 @@ var useEditor = function useEditor(_ref) {
|
|
|
48
48
|
var _useFormikContext = formik.useFormikContext(),
|
|
49
49
|
setFieldValue = _useFormikContext.setFieldValue,
|
|
50
50
|
errors = _useFormikContext.errors;
|
|
51
|
-
var handleContentChange = function
|
|
51
|
+
var handleContentChange = React.useCallback(function (content) {
|
|
52
52
|
setFieldValue(editorContentFieldName, content);
|
|
53
53
|
onContentChange === null || onContentChange === void 0 ? void 0 : onContentChange(content);
|
|
54
|
-
};
|
|
55
|
-
var handleAttachmentChange = function
|
|
54
|
+
}, [editorContentFieldName, onContentChange, setFieldValue]);
|
|
55
|
+
var handleAttachmentChange = React.useCallback(function (attachments) {
|
|
56
56
|
setAttachments(attachments);
|
|
57
57
|
setFieldValue("attachments", attachments);
|
|
58
58
|
onAttachmentChange === null || onAttachmentChange === void 0 ? void 0 : onAttachmentChange(attachments);
|
|
59
|
-
};
|
|
59
|
+
}, [onAttachmentChange, setAttachments, setFieldValue]);
|
|
60
60
|
var handleTitleChange = function handleTitleChange(event) {
|
|
61
61
|
var title = event.target.value;
|
|
62
62
|
setFieldValue(titleFieldName, title);
|
|
@@ -156,6 +156,9 @@ var Editor = function Editor(_ref) {
|
|
|
156
156
|
editorRef.current = node;
|
|
157
157
|
getEditorRef(node);
|
|
158
158
|
}, []);
|
|
159
|
+
var addons = React.useMemo(function () {
|
|
160
|
+
return EDITOR_ADDONS.concat(editorProps.addons || []);
|
|
161
|
+
}, [editorProps.addons]);
|
|
159
162
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
160
163
|
className: "neeto-molecules-document__wrapper",
|
|
161
164
|
"data-testid": "document-editor-container",
|
|
@@ -169,10 +172,11 @@ var Editor = function Editor(_ref) {
|
|
|
169
172
|
name: editorContentFieldName,
|
|
170
173
|
ref: setEditorRef,
|
|
171
174
|
menuClassName: classnames__default["default"]("neeto-molecules-document-editor__menubar", menuClassName)
|
|
172
|
-
}, _objectSpread({
|
|
175
|
+
}, _objectSpread(_objectSpread({
|
|
173
176
|
attachments: attachments
|
|
174
|
-
}, editorProps), {
|
|
175
|
-
addons:
|
|
177
|
+
}, editorProps), {}, {
|
|
178
|
+
addons: addons
|
|
179
|
+
}), {
|
|
176
180
|
onChange: handleContentChange,
|
|
177
181
|
onChangeAttachments: handleAttachmentChange
|
|
178
182
|
}), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
@@ -195,6 +199,8 @@ var Editor = function Editor(_ref) {
|
|
|
195
199
|
style: "body3"
|
|
196
200
|
}, errors[editorContentFieldName]))));
|
|
197
201
|
};
|
|
202
|
+
Editor.displayName = "DocumentEditor";
|
|
203
|
+
var index = /*#__PURE__*/React.memo(Editor);
|
|
198
204
|
|
|
199
|
-
module.exports =
|
|
205
|
+
module.exports = index;
|
|
200
206
|
//# sourceMappingURL=DocumentEditor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentEditor.js","sources":["../../src/components/DocumentEditor/constants.js","../../src/components/DocumentEditor/hooks/useEditor.js","../../src/components/DocumentEditor/utils.js","../../src/components/DocumentEditor/index.jsx"],"sourcesContent":["export const EDITOR_ADDONS = [\n \"highlight\",\n \"emoji\",\n \"video-upload\",\n \"code-block\",\n \"block-quote\",\n \"image-upload\",\n \"image-upload-unsplash\",\n \"divider\",\n \"video-embed\",\n \"undo\",\n \"redo\",\n \"table\",\n];\n\nexport const DEFAULT_EDITOR_PROPS = {\n isCharacterCountActive: true,\n isMenuIndependent: true,\n addons: [],\n};\n","import { useFormikContext } from \"formik\";\nimport { isPresent } from \"neetocist\";\nimport useHotkeys from \"neetohotkeys\";\n\nconst useEditor = ({\n onContentChange,\n editorContentFieldName,\n setAttachments,\n onAttachmentChange,\n onTitleChange,\n titleFieldName,\n editorRef,\n titleRef,\n}) => {\n const { setFieldValue, errors } = useFormikContext();\n\n const handleContentChange = content => {\n setFieldValue(editorContentFieldName, content);\n onContentChange?.(content);\n };\n\n const handleAttachmentChange = attachments => {\n setAttachments(attachments);\n setFieldValue(\"attachments\", attachments);\n onAttachmentChange?.(attachments);\n };\n\n const handleTitleChange = event => {\n const title = event.target.value;\n setFieldValue(titleFieldName, title);\n onTitleChange?.(title);\n };\n\n const handleEditorBackspaceKeypress = () => {\n const editor = editorRef.current?.editor;\n const selection = editor?.state?.selection;\n if (\n editor?.isFocused &&\n isPresent(titleRef.current) &&\n selection?.anchor === 1\n ) {\n const title = titleRef.current.value;\n titleRef.current.focus();\n titleRef.current.setSelectionRange(title?.length, title?.length);\n }\n };\n\n const titleHotkeyRef = useHotkeys(\n \"return\",\n () => {\n editorRef.current?.editor?.commands?.insertContentAt(0, \"<p />\");\n editorRef.current?.editor?.commands?.focus(\"start\");\n },\n { mode: \"scoped\" }\n );\n\n const editorHotkeyRef = useHotkeys(\n \"backspace\",\n handleEditorBackspaceKeypress,\n { mode: \"scoped\" }\n );\n\n return {\n handleContentChange,\n handleAttachmentChange,\n handleTitleChange,\n editorHotkeyRef,\n titleHotkeyRef,\n errors,\n };\n};\n\nexport default useEditor;\n","export const getUniqueAttachments = attachments => {\n const uniqueAttachments = attachments?.reduce(\n (uniqueAttachments, attachment) => ({\n ...uniqueAttachments,\n [attachment.signedId]: attachment,\n }),\n {}\n );\n\n return Object.values(uniqueAttachments || {});\n};\n","import React, { useCallback, useRef, useState } from \"react\";\n\nimport classNames from \"classnames\";\nimport { noop } from \"neetocist\";\nimport { FormikEditor } from \"neetoeditor\";\nimport { Typography } from \"neetoui\";\nimport { Textarea } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { DEFAULT_EDITOR_PROPS, EDITOR_ADDONS } from \"./constants\";\nimport \"./editor.scss\";\nimport useEditor from \"./hooks/useEditor\";\nimport { getUniqueAttachments } from \"./utils\";\n\nconst Editor = ({\n attachments: initialAttachments,\n onContentChange,\n onAttachmentChange,\n onTitleChange,\n getTitleRef = noop,\n getEditorRef = noop,\n menuClassName,\n editorContentFieldName = \"htmlContent\",\n titleFieldName = \"title\",\n editorProps = DEFAULT_EDITOR_PROPS,\n titleProps = {},\n}) => {\n const { t } = useTranslation();\n\n const titleRef = useRef();\n const editorRef = useRef();\n\n const [attachments, setAttachments] = useState(() =>\n getUniqueAttachments(initialAttachments)\n );\n\n const {\n handleContentChange,\n handleAttachmentChange,\n handleTitleChange,\n editorHotkeyRef,\n titleHotkeyRef,\n errors,\n } = useEditor({\n onContentChange,\n editorContentFieldName,\n setAttachments,\n onAttachmentChange,\n onTitleChange,\n titleFieldName,\n editorRef,\n titleRef,\n });\n\n const setTitleRef = node => {\n titleHotkeyRef.current = node;\n getTitleRef(node);\n titleRef.current = node;\n };\n\n const setEditorRef = useCallback(node => {\n editorRef.current = node;\n getEditorRef(node);\n }, []);\n\n return (\n <div\n className=\"neeto-molecules-document__wrapper\"\n data-testid=\"document-editor-container\"\n ref={editorHotkeyRef}\n >\n <FormikEditor\n attachmentsClassName=\"editor-content-attachments\"\n className=\"h-full w-full\"\n contentClassName=\"editor-content__wrapper neeto-molecules-document__container\"\n data-cy=\"neeto-molecules-document-content-text-area\"\n error={undefined}\n name={editorContentFieldName}\n ref={setEditorRef}\n menuClassName={classNames(\n \"neeto-molecules-document-editor__menubar\",\n menuClassName\n )}\n {...{ attachments, ...editorProps }}\n addons={EDITOR_ADDONS.concat(editorProps.addons || [])}\n onChange={handleContentChange}\n onChangeAttachments={handleAttachmentChange}\n >\n <div className=\"neeto-molecules-document__container px-4\">\n <Textarea\n nakedTextarea\n className=\"neeto-molecules-document__title\"\n data-cy=\"neeto-molecules-document-title-text-field\"\n name={titleFieldName}\n ref={setTitleRef}\n rows={1}\n placeholder={\n titleProps.placeholder || t(\"neetoMolecules.documentEditor.title\")\n }\n onChange={handleTitleChange}\n onKeyDown={e =>\n e.key === \"Enter\" && !e.shiftKey && e.preventDefault()\n }\n {...titleProps}\n />\n {errors[editorContentFieldName] && (\n <Typography\n className=\"neeto-ui-input__error neeto-molecules-editor-content__error\"\n data-cy=\"articles-content-input-error\"\n style=\"body3\"\n >\n {errors[editorContentFieldName]}\n </Typography>\n )}\n </div>\n </FormikEditor>\n </div>\n );\n};\n\nEditor.propTypes = {\n /**\n * List of initial attachments.\n */\n attachments: PropTypes.arrayOf(\n PropTypes.shape({\n contentType: PropTypes.string,\n filename: PropTypes.string,\n signedId: PropTypes.string,\n url: PropTypes.string,\n })\n ),\n /**\n * Callback that will be triggered when the editor content changes.\n * This function is not throttled.\n */\n onContentChange: PropTypes.func,\n /**\n * Callback that will be triggered when the attachments changes.\n */\n onAttachmentChange: PropTypes.func,\n /**\n * Callback that will be triggered when the article title changes.\n */\n onTitleChange: PropTypes.func,\n /**\n * This function will be called with the title node reference.\n */\n getTitleRef: PropTypes.func,\n /**\n * This function will be called with editor reference.\n */\n getEditorRef: PropTypes.func,\n /**\n * Formik field name of the editor. The default value is `htmlContent`.\n */\n editorContentFieldName: PropTypes.string,\n /**\n * Formik field name of the title. The default value is `title`.\n */\n titleFieldName: PropTypes.string,\n /**\n * These props will be passed down to the editor component.\n */\n editorProps: PropTypes.object,\n /**\n * These props will be passed down to the title text area component.\n */\n titleProps: PropTypes.object,\n /**\n * A prop to pass class names to the editor menubar.\n */\n menuClassName: PropTypes.string,\n};\n\nexport default Editor;\n"],"names":["EDITOR_ADDONS","DEFAULT_EDITOR_PROPS","isCharacterCountActive","isMenuIndependent","addons","useEditor","_ref","onContentChange","editorContentFieldName","setAttachments","onAttachmentChange","onTitleChange","titleFieldName","editorRef","titleRef","_useFormikContext","useFormikContext","setFieldValue","errors","handleContentChange","content","handleAttachmentChange","attachments","handleTitleChange","event","title","target","value","handleEditorBackspaceKeypress","_editorRef$current","_editor$state","editor","current","selection","state","isFocused","isPresent","anchor","focus","setSelectionRange","length","titleHotkeyRef","useHotkeys","_editorRef$current2","_editorRef$current2$e","_editorRef$current2$e2","_editorRef$current3","_editorRef$current3$e","_editorRef$current3$e2","commands","insertContentAt","mode","editorHotkeyRef","getUniqueAttachments","uniqueAttachments","reduce","attachment","_objectSpread","_defineProperty","signedId","Object","values","Editor","initialAttachments","_ref$getTitleRef","getTitleRef","noop","_ref$getEditorRef","getEditorRef","menuClassName","_ref$editorContentFie","_ref$titleFieldName","_ref$editorProps","editorProps","_ref$titleProps","titleProps","_useTranslation","useTranslation","t","useRef","_useState","useState","_useState2","_slicedToArray","_useEditor","setTitleRef","node","setEditorRef","useCallback","React","createElement","className","ref","FormikEditor","_extends","attachmentsClassName","contentClassName","error","undefined","name","classNames","concat","onChange","onChangeAttachments","Textarea","nakedTextarea","rows","placeholder","onKeyDown","e","key","shiftKey","preventDefault","Typography","style"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DocumentEditor.js","sources":["../../src/components/DocumentEditor/constants.js","../../src/components/DocumentEditor/hooks/useEditor.js","../../src/components/DocumentEditor/utils.js","../../src/components/DocumentEditor/index.jsx"],"sourcesContent":["export const EDITOR_ADDONS = [\n \"highlight\",\n \"emoji\",\n \"video-upload\",\n \"code-block\",\n \"block-quote\",\n \"image-upload\",\n \"image-upload-unsplash\",\n \"divider\",\n \"video-embed\",\n \"undo\",\n \"redo\",\n \"table\",\n];\n\nexport const DEFAULT_EDITOR_PROPS = {\n isCharacterCountActive: true,\n isMenuIndependent: true,\n addons: [],\n};\n","import { useCallback } from \"react\";\n\nimport { useFormikContext } from \"formik\";\nimport { isPresent } from \"neetocist\";\nimport useHotkeys from \"neetohotkeys\";\n\nconst useEditor = ({\n onContentChange,\n editorContentFieldName,\n setAttachments,\n onAttachmentChange,\n onTitleChange,\n titleFieldName,\n editorRef,\n titleRef,\n}) => {\n const { setFieldValue, errors } = useFormikContext();\n\n const handleContentChange = useCallback(\n content => {\n setFieldValue(editorContentFieldName, content);\n onContentChange?.(content);\n },\n [editorContentFieldName, onContentChange, setFieldValue]\n );\n\n const handleAttachmentChange = useCallback(\n attachments => {\n setAttachments(attachments);\n setFieldValue(\"attachments\", attachments);\n onAttachmentChange?.(attachments);\n },\n [onAttachmentChange, setAttachments, setFieldValue]\n );\n\n const handleTitleChange = event => {\n const title = event.target.value;\n setFieldValue(titleFieldName, title);\n onTitleChange?.(title);\n };\n\n const handleEditorBackspaceKeypress = () => {\n const editor = editorRef.current?.editor;\n const selection = editor?.state?.selection;\n if (\n editor?.isFocused &&\n isPresent(titleRef.current) &&\n selection?.anchor === 1\n ) {\n const title = titleRef.current.value;\n titleRef.current.focus();\n titleRef.current.setSelectionRange(title?.length, title?.length);\n }\n };\n\n const titleHotkeyRef = useHotkeys(\n \"return\",\n () => {\n editorRef.current?.editor?.commands?.insertContentAt(0, \"<p />\");\n editorRef.current?.editor?.commands?.focus(\"start\");\n },\n { mode: \"scoped\" }\n );\n\n const editorHotkeyRef = useHotkeys(\n \"backspace\",\n handleEditorBackspaceKeypress,\n { mode: \"scoped\" }\n );\n\n return {\n handleContentChange,\n handleAttachmentChange,\n handleTitleChange,\n editorHotkeyRef,\n titleHotkeyRef,\n errors,\n };\n};\n\nexport default useEditor;\n","export const getUniqueAttachments = attachments => {\n const uniqueAttachments = attachments?.reduce(\n (uniqueAttachments, attachment) => ({\n ...uniqueAttachments,\n [attachment.signedId]: attachment,\n }),\n {}\n );\n\n return Object.values(uniqueAttachments || {});\n};\n","import React, { memo, useCallback, useMemo, useRef, useState } from \"react\";\n\nimport classNames from \"classnames\";\nimport { noop } from \"neetocist\";\nimport { FormikEditor } from \"neetoeditor\";\nimport { Typography } from \"neetoui\";\nimport { Textarea } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { DEFAULT_EDITOR_PROPS, EDITOR_ADDONS } from \"./constants\";\nimport \"./editor.scss\";\nimport useEditor from \"./hooks/useEditor\";\nimport { getUniqueAttachments } from \"./utils\";\n\nconst Editor = ({\n attachments: initialAttachments,\n onContentChange,\n onAttachmentChange,\n onTitleChange,\n getTitleRef = noop,\n getEditorRef = noop,\n menuClassName,\n editorContentFieldName = \"htmlContent\",\n titleFieldName = \"title\",\n editorProps = DEFAULT_EDITOR_PROPS,\n titleProps = {},\n}) => {\n const { t } = useTranslation();\n\n const titleRef = useRef();\n const editorRef = useRef();\n\n const [attachments, setAttachments] = useState(() =>\n getUniqueAttachments(initialAttachments)\n );\n\n const {\n handleContentChange,\n handleAttachmentChange,\n handleTitleChange,\n editorHotkeyRef,\n titleHotkeyRef,\n errors,\n } = useEditor({\n onContentChange,\n editorContentFieldName,\n setAttachments,\n onAttachmentChange,\n onTitleChange,\n titleFieldName,\n editorRef,\n titleRef,\n });\n\n const setTitleRef = node => {\n titleHotkeyRef.current = node;\n getTitleRef(node);\n titleRef.current = node;\n };\n\n const setEditorRef = useCallback(node => {\n editorRef.current = node;\n getEditorRef(node);\n }, []);\n\n const addons = useMemo(\n () => EDITOR_ADDONS.concat(editorProps.addons || []),\n [editorProps.addons]\n );\n\n return (\n <div\n className=\"neeto-molecules-document__wrapper\"\n data-testid=\"document-editor-container\"\n ref={editorHotkeyRef}\n >\n <FormikEditor\n attachmentsClassName=\"editor-content-attachments\"\n className=\"h-full w-full\"\n contentClassName=\"editor-content__wrapper neeto-molecules-document__container\"\n data-cy=\"neeto-molecules-document-content-text-area\"\n error={undefined}\n name={editorContentFieldName}\n ref={setEditorRef}\n menuClassName={classNames(\n \"neeto-molecules-document-editor__menubar\",\n menuClassName\n )}\n {...{ attachments, ...editorProps, addons }}\n onChange={handleContentChange}\n onChangeAttachments={handleAttachmentChange}\n >\n <div className=\"neeto-molecules-document__container px-4\">\n <Textarea\n nakedTextarea\n className=\"neeto-molecules-document__title\"\n data-cy=\"neeto-molecules-document-title-text-field\"\n name={titleFieldName}\n ref={setTitleRef}\n rows={1}\n placeholder={\n titleProps.placeholder || t(\"neetoMolecules.documentEditor.title\")\n }\n onChange={handleTitleChange}\n onKeyDown={e =>\n e.key === \"Enter\" && !e.shiftKey && e.preventDefault()\n }\n {...titleProps}\n />\n {errors[editorContentFieldName] && (\n <Typography\n className=\"neeto-ui-input__error neeto-molecules-editor-content__error\"\n data-cy=\"articles-content-input-error\"\n style=\"body3\"\n >\n {errors[editorContentFieldName]}\n </Typography>\n )}\n </div>\n </FormikEditor>\n </div>\n );\n};\n\nEditor.propTypes = {\n /**\n * List of initial attachments.\n */\n attachments: PropTypes.arrayOf(\n PropTypes.shape({\n contentType: PropTypes.string,\n filename: PropTypes.string,\n signedId: PropTypes.string,\n url: PropTypes.string,\n })\n ),\n /**\n * Callback that will be triggered when the editor content changes.\n * This function is not throttled.\n */\n onContentChange: PropTypes.func,\n /**\n * Callback that will be triggered when the attachments changes.\n */\n onAttachmentChange: PropTypes.func,\n /**\n * Callback that will be triggered when the article title changes.\n */\n onTitleChange: PropTypes.func,\n /**\n * This function will be called with the title node reference.\n */\n getTitleRef: PropTypes.func,\n /**\n * This function will be called with editor reference.\n */\n getEditorRef: PropTypes.func,\n /**\n * Formik field name of the editor. The default value is `htmlContent`.\n */\n editorContentFieldName: PropTypes.string,\n /**\n * Formik field name of the title. The default value is `title`.\n */\n titleFieldName: PropTypes.string,\n /**\n * These props will be passed down to the editor component.\n */\n editorProps: PropTypes.object,\n /**\n * These props will be passed down to the title text area component.\n */\n titleProps: PropTypes.object,\n /**\n * A prop to pass class names to the editor menubar.\n */\n menuClassName: PropTypes.string,\n};\n\nEditor.displayName = \"DocumentEditor\";\n\nexport default memo(Editor);\n"],"names":["EDITOR_ADDONS","DEFAULT_EDITOR_PROPS","isCharacterCountActive","isMenuIndependent","addons","useEditor","_ref","onContentChange","editorContentFieldName","setAttachments","onAttachmentChange","onTitleChange","titleFieldName","editorRef","titleRef","_useFormikContext","useFormikContext","setFieldValue","errors","handleContentChange","useCallback","content","handleAttachmentChange","attachments","handleTitleChange","event","title","target","value","handleEditorBackspaceKeypress","_editorRef$current","_editor$state","editor","current","selection","state","isFocused","isPresent","anchor","focus","setSelectionRange","length","titleHotkeyRef","useHotkeys","_editorRef$current2","_editorRef$current2$e","_editorRef$current2$e2","_editorRef$current3","_editorRef$current3$e","_editorRef$current3$e2","commands","insertContentAt","mode","editorHotkeyRef","getUniqueAttachments","uniqueAttachments","reduce","attachment","_objectSpread","_defineProperty","signedId","Object","values","Editor","initialAttachments","_ref$getTitleRef","getTitleRef","noop","_ref$getEditorRef","getEditorRef","menuClassName","_ref$editorContentFie","_ref$titleFieldName","_ref$editorProps","editorProps","_ref$titleProps","titleProps","_useTranslation","useTranslation","t","useRef","_useState","useState","_useState2","_slicedToArray","_useEditor","setTitleRef","node","setEditorRef","useMemo","concat","React","createElement","className","ref","FormikEditor","_extends","attachmentsClassName","contentClassName","error","undefined","name","classNames","onChange","onChangeAttachments","Textarea","nakedTextarea","rows","placeholder","onKeyDown","e","key","shiftKey","preventDefault","Typography","style","displayName","memo"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bigbinary/neeto-molecules",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.17",
|
|
4
4
|
"description": "A package of reusable molecular components for neeto products.",
|
|
5
5
|
"repository": "git@github.com:bigbinary/neeto-molecules.git",
|
|
6
6
|
"author": "Amaljith K <amaljith.k@bigbinary.com>",
|