@mrshmllw/smores-react 7.0.1 → 9.0.0
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/RichTextEditor/RichTextEditor.d.ts +1 -1
- package/dist/RichTextEditor/RichTextEditor.js +44 -28
- package/dist/RichTextEditor/RichTextEditor.js.map +1 -1
- package/dist/hooks/useEventListener/index.d.ts +1 -1
- package/dist/hooks/useScript/index.d.ts +1 -1
- package/dist/utils/debounce.d.ts +1 -1
- package/dist/utils/focusOutline.d.ts +1 -1
- package/package.json +15 -15
@@ -1,44 +1,60 @@
|
|
1
|
-
import
|
2
|
-
import
|
3
|
-
import {
|
4
|
-
import {
|
5
|
-
import {
|
6
|
-
import { ContentEditable } from '@lexical/react/LexicalContentEditable';
|
1
|
+
import { CodeHighlightNode, CodeNode } from '@lexical/code';
|
2
|
+
import { $generateNodesFromDOM } from '@lexical/html';
|
3
|
+
import { AutoLinkNode, LinkNode } from '@lexical/link';
|
4
|
+
import { ListItemNode, ListNode } from '@lexical/list';
|
5
|
+
import { TRANSFORMERS } from '@lexical/markdown';
|
7
6
|
import { LexicalComposer } from '@lexical/react/LexicalComposer';
|
7
|
+
import { ContentEditable } from '@lexical/react/LexicalContentEditable';
|
8
8
|
import LexicalErrorBoundary from '@lexical/react/LexicalErrorBoundary';
|
9
|
-
import CustomAutoLinkPlugin from './plugins/AutoLinkPlugin';
|
10
|
-
import { AutoLinkNode, LinkNode } from '@lexical/link';
|
11
|
-
import { ListNode, ListItemNode } from '@lexical/list';
|
12
|
-
import { LinkPlugin } from '@lexical/react/LexicalLinkPlugin';
|
13
|
-
import ToolbarPlugin from './plugins/ToolbarPlugin';
|
14
9
|
import { HistoryPlugin } from '@lexical/react/LexicalHistoryPlugin';
|
10
|
+
import { LinkPlugin } from '@lexical/react/LexicalLinkPlugin';
|
15
11
|
import { ListPlugin } from '@lexical/react/LexicalListPlugin';
|
16
12
|
import { MarkdownShortcutPlugin } from '@lexical/react/LexicalMarkdownShortcutPlugin';
|
17
|
-
import {
|
13
|
+
import { RichTextPlugin } from '@lexical/react/LexicalRichTextPlugin';
|
18
14
|
import { HeadingNode, QuoteNode } from '@lexical/rich-text';
|
19
|
-
import { CodeHighlightNode, CodeNode } from '@lexical/code';
|
20
|
-
import { $generateNodesFromDOM } from '@lexical/html';
|
21
|
-
import { $createParagraphNode, $getRoot } from 'lexical';
|
22
15
|
import DOMPurify from 'dompurify';
|
16
|
+
import { $createParagraphNode, $getRoot, } from 'lexical';
|
17
|
+
import React, { useCallback, useState } from 'react';
|
18
|
+
import styled from 'styled-components';
|
19
|
+
import { Box } from '../Box';
|
20
|
+
import { theme } from '../theme';
|
21
|
+
import CustomAutoLinkPlugin from './plugins/AutoLinkPlugin';
|
23
22
|
import { EditorUpdatePlugin } from './plugins/EditorUpdatePlugin';
|
24
|
-
|
23
|
+
import ToolbarPlugin from './plugins/ToolbarPlugin';
|
24
|
+
const appendNodes = (root, nodes) => {
|
25
|
+
nodes
|
26
|
+
.filter((node) => node.__type !== 'linebreak')
|
27
|
+
.map((node) => {
|
28
|
+
if (node.__type === 'text') {
|
29
|
+
const paragraphNode = $createParagraphNode();
|
30
|
+
paragraphNode.append(node);
|
31
|
+
return paragraphNode;
|
32
|
+
}
|
33
|
+
return node;
|
34
|
+
})
|
35
|
+
.forEach((node) => root.append(node));
|
36
|
+
};
|
37
|
+
export const RichTextEditor = ({ value, height, outline = false, maxHeight = '300px', onChange, ...props }) => {
|
38
|
+
const [editorState, setEditorState] = useState(null);
|
39
|
+
useCallback(() => {
|
40
|
+
editorState &&
|
41
|
+
editorState.update(() => {
|
42
|
+
const parser = new DOMParser();
|
43
|
+
const dom = parser.parseFromString(value ? DOMPurify.sanitize(value) : '<p></p>', 'text/html');
|
44
|
+
const root = $getRoot();
|
45
|
+
root.clear();
|
46
|
+
const nodes = $generateNodesFromDOM(editorState, dom);
|
47
|
+
appendNodes(root, nodes);
|
48
|
+
});
|
49
|
+
}, [value])();
|
25
50
|
const defaultEditorState = (editor) => {
|
51
|
+
setEditorState(editor);
|
26
52
|
const parser = new DOMParser();
|
27
|
-
const dom = parser.parseFromString(
|
53
|
+
const dom = parser.parseFromString(value ? DOMPurify.sanitize(value) : '<p></p>', 'text/html');
|
28
54
|
const nodes = $generateNodesFromDOM(editor, dom);
|
29
55
|
const root = $getRoot();
|
30
56
|
root.clear();
|
31
|
-
nodes
|
32
|
-
.filter((node) => node.__type !== 'linebreak')
|
33
|
-
.map((node) => {
|
34
|
-
if (node.__type === 'text') {
|
35
|
-
const paragraphNode = $createParagraphNode();
|
36
|
-
paragraphNode.append(node);
|
37
|
-
return paragraphNode;
|
38
|
-
}
|
39
|
-
return node;
|
40
|
-
})
|
41
|
-
.forEach((node) => root.append(node));
|
57
|
+
appendNodes(root, nodes);
|
42
58
|
};
|
43
59
|
const initialConfig = {
|
44
60
|
editorState: defaultEditorState,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"RichTextEditor.js","sourceRoot":"","sources":["../../src/RichTextEditor/RichTextEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
1
|
+
{"version":3,"file":"RichTextEditor.js","sourceRoot":"","sources":["../../src/RichTextEditor/RichTextEditor.tsx"],"names":[],"mappings":"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"}
|
@@ -4,5 +4,5 @@ export declare const useEventListener: ({ eventName, callback, ref, capture, }:
|
|
4
4
|
eventName: keyof HTMLElementEventMap | string;
|
5
5
|
callback: GenericEventCallback;
|
6
6
|
ref: RefObject<HTMLElement | Document>;
|
7
|
-
capture?: boolean
|
7
|
+
capture?: boolean;
|
8
8
|
}) => void;
|
package/dist/utils/debounce.d.ts
CHANGED
@@ -4,4 +4,4 @@
|
|
4
4
|
* @param delay - The debouncing delay.
|
5
5
|
* @returns A debounced version of the function.
|
6
6
|
*/
|
7
|
-
export declare const debounce: <Args extends unknown[], R>(fn: (...args: Args) => R, delay: number) => (...args: Args) => void;
|
7
|
+
export declare const debounce: <Args extends unknown[], R>(fn: (...args: Args) => R, delay: number) => ((...args: Args) => void);
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@mrshmllw/smores-react",
|
3
|
-
"version": "
|
3
|
+
"version": "9.0.0",
|
4
4
|
"main": "./dist/index.js",
|
5
5
|
"description": "Collection of React components used by Marshmallow Technology",
|
6
6
|
"keywords": [
|
@@ -15,7 +15,7 @@
|
|
15
15
|
"scripts": {
|
16
16
|
"clean": "rimraf ./dist",
|
17
17
|
"build": "npm run clean && tsc --p ./tsconfig.build.json",
|
18
|
-
"build-storybook": "storybook build -c .storybook
|
18
|
+
"build-storybook": "storybook build -c .storybook",
|
19
19
|
"check-types": "tsc --noEmit",
|
20
20
|
"deploy-storybook": "storybook-to-ghpages",
|
21
21
|
"prepublishOnly": "npm run build",
|
@@ -26,7 +26,7 @@
|
|
26
26
|
"test": "vitest --silent",
|
27
27
|
"updateSnaps": "vitest --u",
|
28
28
|
"snyk-protect": "snyk-protect",
|
29
|
-
"prepare": "npm run snyk-protect && husky
|
29
|
+
"prepare": "npm run snyk-protect && husky",
|
30
30
|
"pre-commit-lint": "npm run check-types && lint-staged",
|
31
31
|
"fix-package-lock-conflicts": "echo \"Make sure conflicts in package.json are resolved before running this script\" && npm i --package-lock-only"
|
32
32
|
},
|
@@ -39,13 +39,12 @@
|
|
39
39
|
"@babel/preset-typescript": "^7.18.6",
|
40
40
|
"@semantic-release/changelog": "^6.0.3",
|
41
41
|
"@semantic-release/git": "^10.0.1",
|
42
|
-
"@semantic-release/github": "^
|
43
|
-
"@semantic-release/npm": "^
|
42
|
+
"@semantic-release/github": "^10.0.2",
|
43
|
+
"@semantic-release/npm": "^12.0.0",
|
44
44
|
"@snyk/protect": "^1.881.0",
|
45
|
-
"@storybook/addon-essentials": "^
|
46
|
-
"@storybook/
|
47
|
-
"@storybook/react": "^
|
48
|
-
"@storybook/react-vite": "^7.0.6",
|
45
|
+
"@storybook/addon-essentials": "^8.0.4",
|
46
|
+
"@storybook/react": "^8.0.4",
|
47
|
+
"@storybook/react-vite": "^8.0.4",
|
49
48
|
"@storybook/storybook-deployer": "^2.8.16",
|
50
49
|
"@testing-library/react": "^14.0.0",
|
51
50
|
"@types/body-scroll-lock": "^3.1.0",
|
@@ -61,24 +60,25 @@
|
|
61
60
|
"eslint-config-prettier": "^9.0.0",
|
62
61
|
"eslint-plugin-react": "^7.29.2",
|
63
62
|
"eslint-plugin-react-hooks": "^4.1.2",
|
64
|
-
"husky": "^
|
63
|
+
"husky": "^9.0.11",
|
65
64
|
"lint-staged": "^15.1.0",
|
66
65
|
"prettier": "^3.0.0",
|
67
66
|
"react": "^18.2.0",
|
68
67
|
"react-dom": "^18.2.0",
|
69
68
|
"rimraf": "^5.0.5",
|
70
|
-
"semantic-release": "^
|
71
|
-
"storybook": "^
|
69
|
+
"semantic-release": "^23.0.7",
|
70
|
+
"storybook": "^8.0.4",
|
72
71
|
"styled-components": "^6.1.8",
|
73
72
|
"typescript": "^5.0.2",
|
74
|
-
"vitest": "^1.2.2"
|
73
|
+
"vitest": "^1.2.2",
|
74
|
+
"vite": "^5.2.6"
|
75
75
|
},
|
76
76
|
"dependencies": {
|
77
|
+
"@lexical/react": "^0.13.1",
|
77
78
|
"body-scroll-lock": "^4.0.0-beta.0",
|
78
|
-
"date-fns": "^
|
79
|
+
"date-fns": "^3.6.0",
|
79
80
|
"dompurify": "^3.0.9",
|
80
81
|
"lexical": "^0.13.1",
|
81
|
-
"@lexical/react": "^0.13.1",
|
82
82
|
"polished": "^4.1.3"
|
83
83
|
},
|
84
84
|
"peerDependencies": {
|