@mirai/core 0.4.529 → 0.4.530
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/build/components/Chat/components/Message/Message.js +14 -10
- package/build/components/Chat/components/Message/Message.js.map +1 -1
- package/build/components/Chat/components/Message/helpers/formatText.js +64 -11
- package/build/components/Chat/components/Message/helpers/formatText.js.map +1 -1
- package/package.json +1 -1
|
@@ -11,7 +11,7 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
11
11
|
var _components = require("./components");
|
|
12
12
|
var _helpers = require("./helpers");
|
|
13
13
|
var style = _interopRequireWildcard(require("./Message.module.css"));
|
|
14
|
-
const _excluded = ["busy", "
|
|
14
|
+
const _excluded = ["busy", "synapse", "text"],
|
|
15
15
|
_excluded2 = ["testId"];
|
|
16
16
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
17
17
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -26,7 +26,6 @@ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t =
|
|
|
26
26
|
const Message = _ref => {
|
|
27
27
|
let {
|
|
28
28
|
busy = false,
|
|
29
|
-
images = [],
|
|
30
29
|
synapse,
|
|
31
30
|
text
|
|
32
31
|
} = _ref,
|
|
@@ -39,17 +38,23 @@ const Message = _ref => {
|
|
|
39
38
|
} = (0, _dataSources.useStore)();
|
|
40
39
|
const [containerWidth, setContainerWidth] = (0, _react.useState)();
|
|
41
40
|
const {
|
|
42
|
-
|
|
41
|
+
imageUrls,
|
|
43
42
|
text: textWithoutInlineImage
|
|
44
|
-
} = (0, _helpers.
|
|
45
|
-
const galleryImages = inlineImageUrl ? [...images, inlineImageUrl] : images;
|
|
43
|
+
} = (0, _helpers.extractImageMarkdown)(text);
|
|
46
44
|
const {
|
|
47
45
|
testId
|
|
48
46
|
} = others,
|
|
49
47
|
synapseProps = _objectWithoutProperties(others, _excluded2);
|
|
50
48
|
(0, _react.useEffect)(() => {
|
|
51
49
|
if (!synapse || !(containerRef !== null && containerRef !== void 0 && containerRef.current)) return setContainerWidth();
|
|
52
|
-
const updateWidth = () =>
|
|
50
|
+
const updateWidth = () => {
|
|
51
|
+
var _node$parentElement;
|
|
52
|
+
const node = containerRef.current;
|
|
53
|
+
const nodeWidth = node.offsetWidth;
|
|
54
|
+
const parentWidth = (_node$parentElement = node.parentElement) === null || _node$parentElement === void 0 ? void 0 : _node$parentElement.offsetWidth;
|
|
55
|
+
const nextWidth = parentWidth && parentWidth > nodeWidth ? parentWidth : nodeWidth;
|
|
56
|
+
setContainerWidth(nextWidth > 0 ? nextWidth : undefined);
|
|
57
|
+
};
|
|
53
58
|
updateWidth();
|
|
54
59
|
window.addEventListener('resize', updateWidth);
|
|
55
60
|
return () => window.removeEventListener('resize', updateWidth);
|
|
@@ -68,19 +73,18 @@ const Message = _ref => {
|
|
|
68
73
|
className: style.spinner
|
|
69
74
|
}) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ui.Text, {
|
|
70
75
|
className: style.text
|
|
71
|
-
}, (0, _helpers.formatText)(textWithoutInlineImage)),
|
|
76
|
+
}, (0, _helpers.formatText)(textWithoutInlineImage)), imageUrls.length > 0 && containerWidth > 0 ? /*#__PURE__*/_react.default.createElement(_ui.Slider, {
|
|
72
77
|
height: containerWidth * 0.66,
|
|
73
|
-
images:
|
|
78
|
+
images: imageUrls,
|
|
74
79
|
width: containerWidth,
|
|
75
80
|
className: style.gallery
|
|
76
|
-
})))), !busy && synapse && urlParams.sarai === 'environment' && /*#__PURE__*/_react.default.createElement(_components.Environment, _objectSpread(_objectSpread({
|
|
81
|
+
}) : null))), !busy && synapse && urlParams.sarai === 'environment' && /*#__PURE__*/_react.default.createElement(_components.Environment, _objectSpread(_objectSpread({
|
|
77
82
|
synapse
|
|
78
83
|
}, others), synapseProps)));
|
|
79
84
|
};
|
|
80
85
|
exports.Message = Message;
|
|
81
86
|
Message.propTypes = {
|
|
82
87
|
busy: _propTypes.default.bool,
|
|
83
|
-
images: _propTypes.default.arrayOf(_propTypes.default.string),
|
|
84
88
|
synapse: _propTypes.default.bool,
|
|
85
89
|
text: _propTypes.default.string
|
|
86
90
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Message.js","names":["_dataSources","require","_ui","_propTypes","_interopRequireDefault","_react","_interopRequireWildcard","_components","_helpers","style","_excluded","_excluded2","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","_objectWithoutProperties","_objectWithoutPropertiesLoose","indexOf","propertyIsEnumerable","Message","_ref","busy","images","synapse","text","others","containerRef","useRef","urlParams","useStore","containerWidth","setContainerWidth","useState","imageUrl","inlineImageUrl","textWithoutInlineImage","extractTrailingImageMarkdown","galleryImages","testId","synapseProps","useEffect","current","updateWidth","offsetWidth","window","addEventListener","removeEventListener","createElement","View","wide","row","className","styles","message","ref","undefined","content","spinner","Fragment","Text","formatText","Slider","height","width","gallery","sarai","Environment","exports","propTypes","PropTypes","bool","arrayOf","string"],"sources":["../../../../../src/components/Chat/components/Message/Message.jsx"],"sourcesContent":["import { useStore } from '@mirai/data-sources';\nimport { Slider, styles, Text, View } from '@mirai/ui';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { Environment } from './components';\nimport { extractTrailingImageMarkdown, formatText } from './helpers';\nimport * as style from './Message.module.css';\n\n// ! TODO: Refacto use of intent/response vs lisa.intent/response\nconst Message = ({ busy = false, images = [], synapse, text, ...others }) => {\n const containerRef = useRef();\n const { value: { urlParams = {} } = {} } = useStore();\n\n const [containerWidth, setContainerWidth] = useState();\n const { imageUrl: inlineImageUrl, text: textWithoutInlineImage } = extractTrailingImageMarkdown(text);\n const galleryImages = inlineImageUrl ? [...images, inlineImageUrl] : images;\n\n const { testId, ...synapseProps } = others;\n\n useEffect(() => {\n if (!synapse || !containerRef?.current) return setContainerWidth();\n\n const updateWidth = () => setContainerWidth(containerRef.current.offsetWidth);\n updateWidth();\n\n window.addEventListener('resize', updateWidth);\n\n return () => window.removeEventListener('resize', updateWidth);\n }, [synapse]);\n\n return (\n <View testId={testId} wide>\n <View row wide className={styles(style.message, synapse && style.synapse)}>\n <View\n ref={synapse ? containerRef : undefined}\n className={styles(style.content, synapse && style.synapse, busy && style.busy)}\n >\n {busy ? (\n <View className={style.spinner} />\n ) : (\n <>\n <Text className={style.text}>{formatText(textWithoutInlineImage)}</Text>\n {galleryImages.length > 0 && containerWidth && (\n <Slider\n height={containerWidth * 0.66}\n images={galleryImages}\n width={containerWidth}\n className={style.gallery}\n />\n )}\n </>\n )}\n </View>\n </View>\n\n {!busy && synapse && urlParams.sarai === 'environment' && (\n <Environment {...{ synapse, ...others, ...synapseProps }} />\n )}\n </View>\n );\n};\n\nMessage.propTypes = {\n busy: PropTypes.bool,\n images: PropTypes.arrayOf(PropTypes.string),\n synapse: PropTypes.bool,\n text: PropTypes.string,\n};\n\nexport { Message };\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Message.js","names":["_dataSources","require","_ui","_propTypes","_interopRequireDefault","_react","_interopRequireWildcard","_components","_helpers","style","_excluded","_excluded2","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","_objectWithoutProperties","_objectWithoutPropertiesLoose","indexOf","propertyIsEnumerable","Message","_ref","busy","synapse","text","others","containerRef","useRef","urlParams","useStore","containerWidth","setContainerWidth","useState","imageUrls","textWithoutInlineImage","extractImageMarkdown","testId","synapseProps","useEffect","current","updateWidth","_node$parentElement","node","nodeWidth","offsetWidth","parentWidth","parentElement","nextWidth","undefined","window","addEventListener","removeEventListener","createElement","View","wide","row","className","styles","message","ref","content","spinner","Fragment","Text","formatText","Slider","height","images","width","gallery","sarai","Environment","exports","propTypes","PropTypes","bool","string"],"sources":["../../../../../src/components/Chat/components/Message/Message.jsx"],"sourcesContent":["import { useStore } from '@mirai/data-sources';\nimport { Slider, styles, Text, View } from '@mirai/ui';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { Environment } from './components';\nimport { extractImageMarkdown, formatText } from './helpers';\nimport * as style from './Message.module.css';\n\n// ! TODO: Refacto use of intent/response vs lisa.intent/response\nconst Message = ({ busy = false, synapse, text, ...others }) => {\n const containerRef = useRef();\n const { value: { urlParams = {} } = {} } = useStore();\n\n const [containerWidth, setContainerWidth] = useState();\n const { imageUrls, text: textWithoutInlineImage } = extractImageMarkdown(text);\n\n const { testId, ...synapseProps } = others;\n\n useEffect(() => {\n if (!synapse || !containerRef?.current) return setContainerWidth();\n\n const updateWidth = () => {\n const node = containerRef.current;\n const nodeWidth = node.offsetWidth;\n const parentWidth = node.parentElement?.offsetWidth;\n const nextWidth = parentWidth && parentWidth > nodeWidth ? parentWidth : nodeWidth;\n setContainerWidth(nextWidth > 0 ? nextWidth : undefined);\n };\n updateWidth();\n\n window.addEventListener('resize', updateWidth);\n\n return () => window.removeEventListener('resize', updateWidth);\n }, [synapse]);\n\n return (\n <View testId={testId} wide>\n <View row wide className={styles(style.message, synapse && style.synapse)}>\n <View\n ref={synapse ? containerRef : undefined}\n className={styles(style.content, synapse && style.synapse, busy && style.busy)}\n >\n {busy ? (\n <View className={style.spinner} />\n ) : (\n <>\n <Text className={style.text}>{formatText(textWithoutInlineImage)}</Text>\n {imageUrls.length > 0 && containerWidth > 0 ? (\n <Slider\n height={containerWidth * 0.66}\n images={imageUrls}\n width={containerWidth}\n className={style.gallery}\n />\n ) : null}\n </>\n )}\n </View>\n </View>\n\n {!busy && synapse && urlParams.sarai === 'environment' && (\n <Environment {...{ synapse, ...others, ...synapseProps }} />\n )}\n </View>\n );\n};\n\nMessage.propTypes = {\n busy: PropTypes.bool,\n synapse: PropTypes.bool,\n text: PropTypes.string,\n};\n\nexport { Message };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,11 +3,14 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.formatText = exports.
|
|
6
|
+
exports.formatText = exports.extractImageMarkdown = void 0;
|
|
7
7
|
var _ui = require("@mirai/ui");
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
-
const IMAGE_MARKDOWN_REGEX = /!\[
|
|
10
|
+
const IMAGE_MARKDOWN_REGEX = /!\[[^\]]*]\((https?:\/\/[^\s)]+)\)/g;
|
|
11
|
+
const IMAGE_LIST_ITEM_REGEX = /^(?:(?:\d+\.|[-*])\s+)?(https?:\/\/[^\s)]+)\s*$/;
|
|
12
|
+
const IMAGE_URL_EXTENSION_REGEX = /\.(?:apng|avif|bmp|gif|jpe?g|png|svg|webp)(?:[?#][^\s)]*)?$/i;
|
|
13
|
+
const LIST_MARKER_ONLY_REGEX = /^(?:\d+[.)]|[-*])$/;
|
|
11
14
|
const LINK_TOKEN_REGEX = /\[([^\]]+)\]\((https?:\/\/[^\s)]+)\)|(https?:\/\/[^\s]+)/g;
|
|
12
15
|
const TRAILING_PUNCTUATION_REGEX = /[.,!?;:]$/;
|
|
13
16
|
const renderTextWithLineBreaks = (value, keyPrefix) => {
|
|
@@ -20,24 +23,74 @@ const renderTextWithLineBreaks = (value, keyPrefix) => {
|
|
|
20
23
|
})];
|
|
21
24
|
});
|
|
22
25
|
};
|
|
23
|
-
const
|
|
26
|
+
const isImageUrl = function () {
|
|
27
|
+
let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
28
|
+
return IMAGE_URL_EXTENSION_REGEX.test(value);
|
|
29
|
+
};
|
|
30
|
+
const getImageListLineUrl = function () {
|
|
31
|
+
let line = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
32
|
+
const match = line.trim().match(IMAGE_LIST_ITEM_REGEX);
|
|
33
|
+
if (!match) return undefined;
|
|
34
|
+
const [, imageUrl] = match;
|
|
35
|
+
return isImageUrl(imageUrl) ? imageUrl : undefined;
|
|
36
|
+
};
|
|
37
|
+
const normalizeTextAfterImageExtraction = function () {
|
|
38
|
+
let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
39
|
+
const compactedLines = [];
|
|
40
|
+
const lines = value.split('\n').map(line => line.replace(/[ \t]+$/g, ''));
|
|
41
|
+
lines.forEach(line => {
|
|
42
|
+
const isEmptyLine = line.trim() === '';
|
|
43
|
+
if (!isEmptyLine) return compactedLines.push(line);
|
|
44
|
+
if (!compactedLines.length || compactedLines[compactedLines.length - 1] === '') return undefined;
|
|
45
|
+
return compactedLines.push('');
|
|
46
|
+
});
|
|
47
|
+
return compactedLines.join('\n').trim();
|
|
48
|
+
};
|
|
49
|
+
const isListMarkerOnlyLine = function () {
|
|
50
|
+
let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
51
|
+
return LIST_MARKER_ONLY_REGEX.test(value.trim());
|
|
52
|
+
};
|
|
53
|
+
const extractImageMarkdown = text => {
|
|
24
54
|
if (!text) return {
|
|
25
|
-
|
|
55
|
+
imageUrls: [],
|
|
26
56
|
text
|
|
27
57
|
};
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
imageUrl
|
|
58
|
+
const imageItems = [];
|
|
59
|
+
const textWithoutMarkdownImages = text.replace(IMAGE_MARKDOWN_REGEX, (match, imageUrl, index) => {
|
|
60
|
+
if (!isImageUrl(imageUrl)) return match;
|
|
61
|
+
imageItems.push({
|
|
62
|
+
imageUrl,
|
|
63
|
+
index
|
|
64
|
+
});
|
|
65
|
+
return '';
|
|
66
|
+
});
|
|
67
|
+
let sourceOffset = 0;
|
|
68
|
+
text.split('\n').forEach(line => {
|
|
69
|
+
const imageUrl = getImageListLineUrl(line);
|
|
70
|
+
if (imageUrl) imageItems.push({
|
|
71
|
+
imageUrl,
|
|
72
|
+
index: sourceOffset
|
|
73
|
+
});
|
|
74
|
+
sourceOffset += line.length + 1;
|
|
75
|
+
});
|
|
76
|
+
if (!imageItems.length) return {
|
|
77
|
+
imageUrls: [],
|
|
31
78
|
text
|
|
32
79
|
};
|
|
33
|
-
const
|
|
34
|
-
const
|
|
80
|
+
const textWithoutImageList = textWithoutMarkdownImages.split('\n').filter(line => !getImageListLineUrl(line) && !isListMarkerOnlyLine(line)).join('\n');
|
|
81
|
+
const imageUrls = imageItems.sort((a, b) => a.index - b.index).map(_ref => {
|
|
82
|
+
let {
|
|
83
|
+
imageUrl
|
|
84
|
+
} = _ref;
|
|
85
|
+
return imageUrl;
|
|
86
|
+
});
|
|
87
|
+
const nextText = normalizeTextAfterImageExtraction(textWithoutImageList);
|
|
35
88
|
return {
|
|
36
|
-
|
|
89
|
+
imageUrls,
|
|
37
90
|
text: nextText
|
|
38
91
|
};
|
|
39
92
|
};
|
|
40
|
-
exports.
|
|
93
|
+
exports.extractImageMarkdown = extractImageMarkdown;
|
|
41
94
|
const formatText = text => {
|
|
42
95
|
if (!text) return text;
|
|
43
96
|
const hasNewlines = text.includes('\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatText.js","names":["_ui","require","_react","_interopRequireDefault","e","__esModule","default","IMAGE_MARKDOWN_REGEX","LINK_TOKEN_REGEX","TRAILING_PUNCTUATION_REGEX","renderTextWithLineBreaks","value","keyPrefix","lines","split","length","flatMap","line","index","createElement","key","concat","extractTrailingImageMarkdown","text","imageUrl","undefined","match","nextText","replace","exports","formatText","hasNewlines","includes","hasLinks","test","lastIndex","output","exec","rawMatch","markdownLabel","markdownUrl","rawUrl","matchIndex","beforeText","slice","renderedBefore","Array","isArray","push","linkUrl","linkLabel","Action","href","paragraph","rel","target","underline","remainingText","renderedRemaining"],"sources":["../../../../../../src/components/Chat/components/Message/helpers/formatText.js"],"sourcesContent":["import { Action } from '@mirai/ui';\nimport React from 'react';\n\nconst IMAGE_MARKDOWN_REGEX = /!\\[image\\]\\((https?:\\/\\/[^\\s)]+)\\)\\s*$/;\nconst LINK_TOKEN_REGEX = /\\[([^\\]]+)\\]\\((https?:\\/\\/[^\\s)]+)\\)|(https?:\\/\\/[^\\s]+)/g;\nconst TRAILING_PUNCTUATION_REGEX = /[.,!?;:]$/;\n\nconst renderTextWithLineBreaks = (value, keyPrefix) => {\n const lines = value.split('\\n');\n\n if (lines.length === 1) return value;\n\n return lines.flatMap((line, index) => {\n if (index === lines.length - 1) return line;\n\n return [line, <br key={`${keyPrefix}-br-${index}`} />];\n });\n};\n\nexport const extractTrailingImageMarkdown = (text) => {\n if (!text) return { imageUrl: undefined, text };\n\n const match = text.match(IMAGE_MARKDOWN_REGEX);\n\n if (!match) return { imageUrl: undefined, text };\n\n const [, imageUrl] = match;\n const nextText = text.replace(IMAGE_MARKDOWN_REGEX, '').replace(/[ \\t]+$/g, '');\n\n return { imageUrl, text: nextText };\n};\n\nexport const formatText = (text) => {\n if (!text) return text;\n\n const hasNewlines = text.includes('\\n');\n const hasLinks = LINK_TOKEN_REGEX.test(text);\n LINK_TOKEN_REGEX.lastIndex = 0;\n\n if (!hasLinks && !hasNewlines) return text;\n if (!hasLinks) return renderTextWithLineBreaks(text, 'text');\n\n const output = [];\n let lastIndex = 0;\n let match;\n\n while ((match = LINK_TOKEN_REGEX.exec(text)) !== null) {\n const [rawMatch, markdownLabel, markdownUrl, rawUrl] = match;\n const matchIndex = match.index;\n\n if (matchIndex > lastIndex) {\n const beforeText = text.slice(lastIndex, matchIndex);\n const renderedBefore = renderTextWithLineBreaks(beforeText, `text-${matchIndex}`);\n if (Array.isArray(renderedBefore)) {\n output.push(...renderedBefore);\n } else {\n output.push(renderedBefore);\n }\n }\n\n const linkUrl = (markdownUrl || rawUrl).replace(TRAILING_PUNCTUATION_REGEX, '');\n const linkLabel = markdownLabel || linkUrl;\n\n output.push(\n <Action key={`link-${matchIndex}`} href={linkUrl} paragraph rel=\"noopener noreferrer\" target=\"_blank\" underline>\n {linkLabel}\n </Action>,\n );\n\n lastIndex = matchIndex + rawMatch.length;\n }\n\n if (lastIndex < text.length) {\n const remainingText = text.slice(lastIndex);\n const renderedRemaining = renderTextWithLineBreaks(remainingText, `text-${lastIndex}`);\n if (Array.isArray(renderedRemaining)) {\n output.push(...renderedRemaining);\n } else {\n output.push(renderedRemaining);\n }\n }\n\n return output;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"formatText.js","names":["_ui","require","_react","_interopRequireDefault","e","__esModule","default","IMAGE_MARKDOWN_REGEX","IMAGE_LIST_ITEM_REGEX","IMAGE_URL_EXTENSION_REGEX","LIST_MARKER_ONLY_REGEX","LINK_TOKEN_REGEX","TRAILING_PUNCTUATION_REGEX","renderTextWithLineBreaks","value","keyPrefix","lines","split","length","flatMap","line","index","createElement","key","concat","isImageUrl","arguments","undefined","test","getImageListLineUrl","match","trim","imageUrl","normalizeTextAfterImageExtraction","compactedLines","map","replace","forEach","isEmptyLine","push","join","isListMarkerOnlyLine","extractImageMarkdown","text","imageUrls","imageItems","textWithoutMarkdownImages","sourceOffset","textWithoutImageList","filter","sort","a","b","_ref","nextText","exports","formatText","hasNewlines","includes","hasLinks","lastIndex","output","exec","rawMatch","markdownLabel","markdownUrl","rawUrl","matchIndex","beforeText","slice","renderedBefore","Array","isArray","linkUrl","linkLabel","Action","href","paragraph","rel","target","underline","remainingText","renderedRemaining"],"sources":["../../../../../../src/components/Chat/components/Message/helpers/formatText.js"],"sourcesContent":["import { Action } from '@mirai/ui';\nimport React from 'react';\n\nconst IMAGE_MARKDOWN_REGEX = /!\\[[^\\]]*]\\((https?:\\/\\/[^\\s)]+)\\)/g;\nconst IMAGE_LIST_ITEM_REGEX = /^(?:(?:\\d+\\.|[-*])\\s+)?(https?:\\/\\/[^\\s)]+)\\s*$/;\nconst IMAGE_URL_EXTENSION_REGEX = /\\.(?:apng|avif|bmp|gif|jpe?g|png|svg|webp)(?:[?#][^\\s)]*)?$/i;\nconst LIST_MARKER_ONLY_REGEX = /^(?:\\d+[.)]|[-*])$/;\nconst LINK_TOKEN_REGEX = /\\[([^\\]]+)\\]\\((https?:\\/\\/[^\\s)]+)\\)|(https?:\\/\\/[^\\s]+)/g;\nconst TRAILING_PUNCTUATION_REGEX = /[.,!?;:]$/;\n\nconst renderTextWithLineBreaks = (value, keyPrefix) => {\n const lines = value.split('\\n');\n\n if (lines.length === 1) return value;\n\n return lines.flatMap((line, index) => {\n if (index === lines.length - 1) return line;\n\n return [line, <br key={`${keyPrefix}-br-${index}`} />];\n });\n};\n\nconst isImageUrl = (value = '') => IMAGE_URL_EXTENSION_REGEX.test(value);\n\nconst getImageListLineUrl = (line = '') => {\n const match = line.trim().match(IMAGE_LIST_ITEM_REGEX);\n\n if (!match) return undefined;\n\n const [, imageUrl] = match;\n return isImageUrl(imageUrl) ? imageUrl : undefined;\n};\n\nconst normalizeTextAfterImageExtraction = (value = '') => {\n const compactedLines = [];\n const lines = value.split('\\n').map((line) => line.replace(/[ \\t]+$/g, ''));\n\n lines.forEach((line) => {\n const isEmptyLine = line.trim() === '';\n\n if (!isEmptyLine) return compactedLines.push(line);\n if (!compactedLines.length || compactedLines[compactedLines.length - 1] === '') return undefined;\n\n return compactedLines.push('');\n });\n\n return compactedLines.join('\\n').trim();\n};\n\nconst isListMarkerOnlyLine = (value = '') => LIST_MARKER_ONLY_REGEX.test(value.trim());\n\nexport const extractImageMarkdown = (text) => {\n if (!text) return { imageUrls: [], text };\n\n const imageItems = [];\n const textWithoutMarkdownImages = text.replace(IMAGE_MARKDOWN_REGEX, (match, imageUrl, index) => {\n if (!isImageUrl(imageUrl)) return match;\n\n imageItems.push({ imageUrl, index });\n return '';\n });\n\n let sourceOffset = 0;\n text.split('\\n').forEach((line) => {\n const imageUrl = getImageListLineUrl(line);\n if (imageUrl) imageItems.push({ imageUrl, index: sourceOffset });\n sourceOffset += line.length + 1;\n });\n\n if (!imageItems.length) return { imageUrls: [], text };\n\n const textWithoutImageList = textWithoutMarkdownImages\n .split('\\n')\n .filter((line) => !getImageListLineUrl(line) && !isListMarkerOnlyLine(line))\n .join('\\n');\n\n const imageUrls = imageItems.sort((a, b) => a.index - b.index).map(({ imageUrl }) => imageUrl);\n const nextText = normalizeTextAfterImageExtraction(textWithoutImageList);\n\n return { imageUrls, text: nextText };\n};\n\nexport const formatText = (text) => {\n if (!text) return text;\n\n const hasNewlines = text.includes('\\n');\n const hasLinks = LINK_TOKEN_REGEX.test(text);\n LINK_TOKEN_REGEX.lastIndex = 0;\n\n if (!hasLinks && !hasNewlines) return text;\n if (!hasLinks) return renderTextWithLineBreaks(text, 'text');\n\n const output = [];\n let lastIndex = 0;\n let match;\n\n while ((match = LINK_TOKEN_REGEX.exec(text)) !== null) {\n const [rawMatch, markdownLabel, markdownUrl, rawUrl] = match;\n const matchIndex = match.index;\n\n if (matchIndex > lastIndex) {\n const beforeText = text.slice(lastIndex, matchIndex);\n const renderedBefore = renderTextWithLineBreaks(beforeText, `text-${matchIndex}`);\n if (Array.isArray(renderedBefore)) {\n output.push(...renderedBefore);\n } else {\n output.push(renderedBefore);\n }\n }\n\n const linkUrl = (markdownUrl || rawUrl).replace(TRAILING_PUNCTUATION_REGEX, '');\n const linkLabel = markdownLabel || linkUrl;\n\n output.push(\n <Action key={`link-${matchIndex}`} href={linkUrl} paragraph rel=\"noopener noreferrer\" target=\"_blank\" underline>\n {linkLabel}\n </Action>,\n );\n\n lastIndex = matchIndex + rawMatch.length;\n }\n\n if (lastIndex < text.length) {\n const remainingText = text.slice(lastIndex);\n const renderedRemaining = renderTextWithLineBreaks(remainingText, `text-${lastIndex}`);\n if (Array.isArray(renderedRemaining)) {\n output.push(...renderedRemaining);\n } else {\n output.push(renderedRemaining);\n }\n }\n\n return output;\n};\n"],"mappings":"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","ignoreList":[]}
|