replace grapheme-splitter with graphemer (updated fork) (#3160)

This commit is contained in:
John Regan
2023-07-10 19:13:40 -04:00
committed by GitHub
parent 22683dab46
commit a663f8ec34
3 changed files with 8 additions and 20 deletions

View File

@@ -2,7 +2,7 @@ import { Popover } from 'antd';
import React, { FC, useEffect, useState } from 'react'; import React, { FC, useEffect, useState } from 'react';
import { useRecoilValue } from 'recoil'; import { useRecoilValue } from 'recoil';
import sanitizeHtml from 'sanitize-html'; import sanitizeHtml from 'sanitize-html';
import GraphemeSplitter from 'grapheme-splitter'; import Graphemer from 'graphemer';
import dynamic from 'next/dynamic'; import dynamic from 'next/dynamic';
import classNames from 'classnames'; import classNames from 'classnames';
@@ -34,7 +34,7 @@ export type ChatTextFieldProps = {
const characterLimit = 300; const characterLimit = 300;
const maxNodeDepth = 10; const maxNodeDepth = 10;
const graphemeSplitter = new GraphemeSplitter(); const graphemer = new Graphemer();
const getNodeTextContent = (node, depth) => { const getNodeTextContent = (node, depth) => {
let text = ''; let text = '';
@@ -131,7 +131,7 @@ export const ChatTextField: FC<ChatTextFieldProps> = ({ defaultText, enabled, fo
const getCharacterCount = () => { const getCharacterCount = () => {
const message = getTextContent(contentEditable); const message = getTextContent(contentEditable);
return graphemeSplitter.countGraphemes(message); return graphemer.countGraphemes(message);
}; };
const sendMessage = () => { const sendMessage = () => {
@@ -141,7 +141,7 @@ export const ChatTextField: FC<ChatTextFieldProps> = ({ defaultText, enabled, fo
} }
const message = getTextContent(contentEditable); const message = getTextContent(contentEditable);
const count = graphemeSplitter.countGraphemes(message); const count = graphemer.countGraphemes(message);
if (count === 0 || count > characterLimit) return; if (count === 0 || count > characterLimit) return;
websocketService.send({ type: MessageType.CHAT, body: message }); websocketService.send({ type: MessageType.CHAT, body: message });

18
web/package-lock.json generated
View File

@@ -25,7 +25,7 @@
"chart.js": "^4.2.0", "chart.js": "^4.2.0",
"classnames": "2.3.2", "classnames": "2.3.2",
"date-fns": "^2.29.3", "date-fns": "^2.29.3",
"grapheme-splitter": "^1.0.4", "graphemer": "^1.4.0",
"interweave": "^13.0.0", "interweave": "^13.0.0",
"interweave-autolink": "^5.1.0", "interweave-autolink": "^5.1.0",
"lodash": "4.17.21", "lodash": "4.17.21",
@@ -23546,16 +23546,10 @@
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
}, },
"node_modules/grapheme-splitter": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
"integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ=="
},
"node_modules/graphemer": { "node_modules/graphemer": {
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="
"dev": true
}, },
"node_modules/gzip-size": { "node_modules/gzip-size": {
"version": "6.0.0", "version": "6.0.0",
@@ -63525,16 +63519,10 @@
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
}, },
"grapheme-splitter": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
"integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ=="
},
"graphemer": { "graphemer": {
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="
"dev": true
}, },
"gzip-size": { "gzip-size": {
"version": "6.0.0", "version": "6.0.0",

View File

@@ -30,7 +30,7 @@
"chart.js": "^4.2.0", "chart.js": "^4.2.0",
"classnames": "2.3.2", "classnames": "2.3.2",
"date-fns": "^2.29.3", "date-fns": "^2.29.3",
"grapheme-splitter": "^1.0.4", "graphemer": "^1.4.0",
"interweave": "^13.0.0", "interweave": "^13.0.0",
"interweave-autolink": "^5.1.0", "interweave-autolink": "^5.1.0",
"lodash": "4.17.21", "lodash": "4.17.21",