zcw-shared 2.10.0 → 2.12.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/assets/materialFileIconMaps.json +3256 -0
- package/dist/constants/apiErrorCodes.d.ts +2 -2
- package/dist/constants/apiErrorCodes.js +11 -12
- package/dist/constants/apiErrorCodes.js.map +1 -1
- package/dist/functions/ai/aiLlmModelCapabilities.d.ts +13 -0
- package/dist/functions/ai/aiLlmModelCapabilities.js +80 -0
- package/dist/functions/ai/aiLlmModelCapabilities.js.map +1 -0
- package/dist/functions/browser/shortcutModKeyHint.d.ts +7 -0
- package/dist/functions/browser/shortcutModKeyHint.js +21 -0
- package/dist/functions/browser/shortcutModKeyHint.js.map +1 -0
- package/dist/functions/chat/chatShellTabConfig.d.ts +36 -0
- package/dist/functions/chat/chatShellTabConfig.js +222 -0
- package/dist/functions/chat/chatShellTabConfig.js.map +1 -0
- package/dist/functions/chat/chatShellTabEditor.d.ts +7 -0
- package/dist/functions/chat/chatShellTabEditor.js +43 -0
- package/dist/functions/chat/chatShellTabEditor.js.map +1 -0
- package/dist/functions/code/getLanguageFromExtension.d.ts +5 -0
- package/dist/functions/code/getLanguageFromExtension.js +90 -0
- package/dist/functions/code/getLanguageFromExtension.js.map +1 -0
- package/dist/functions/code/index.d.ts +1 -0
- package/dist/functions/code/index.js +2 -0
- package/dist/functions/code/index.js.map +1 -0
- package/dist/functions/dom/copyHtmlAndPlainToClipboard.d.ts +1 -0
- package/dist/functions/dom/copyHtmlAndPlainToClipboard.js +68 -0
- package/dist/functions/dom/copyHtmlAndPlainToClipboard.js.map +1 -0
- package/dist/functions/dom/copyTextToClipboard.d.ts +1 -0
- package/dist/functions/dom/copyTextToClipboard.js +36 -0
- package/dist/functions/dom/copyTextToClipboard.js.map +1 -0
- package/dist/functions/file/extractVideoCover.d.ts +6 -0
- package/dist/functions/file/extractVideoCover.js +57 -0
- package/dist/functions/file/extractVideoCover.js.map +1 -0
- package/dist/functions/file/index.d.ts +4 -0
- package/dist/functions/file/index.js +5 -0
- package/dist/functions/file/index.js.map +1 -0
- package/dist/functions/file/inferMediaType.d.ts +8 -0
- package/dist/functions/file/inferMediaType.js +24 -0
- package/dist/functions/file/inferMediaType.js.map +1 -0
- package/dist/functions/file/materialFileIcon.d.ts +10 -0
- package/dist/functions/file/materialFileIcon.js +36 -0
- package/dist/functions/file/materialFileIcon.js.map +1 -0
- package/dist/functions/im/forwardBundlePayload.d.ts +23 -0
- package/dist/functions/im/forwardBundlePayload.js +59 -0
- package/dist/functions/im/forwardBundlePayload.js.map +1 -0
- package/dist/functions/im/getActiveMentionQuery.d.ts +4 -0
- package/dist/functions/im/getActiveMentionQuery.js +23 -0
- package/dist/functions/im/getActiveMentionQuery.js.map +1 -0
- package/dist/functions/im/imInlineContentTokens.d.ts +49 -0
- package/dist/functions/im/imInlineContentTokens.js +185 -0
- package/dist/functions/im/imInlineContentTokens.js.map +1 -0
- package/dist/functions/im/imRichClipboardPlain.d.ts +8 -0
- package/dist/functions/im/imRichClipboardPlain.js +162 -0
- package/dist/functions/im/imRichClipboardPlain.js.map +1 -0
- package/dist/functions/im/imRichContentHtml.d.ts +53 -0
- package/dist/functions/im/imRichContentHtml.js +476 -0
- package/dist/functions/im/imRichContentHtml.js.map +1 -0
- package/dist/functions/im/index.d.ts +4 -0
- package/dist/functions/im/index.js +5 -0
- package/dist/functions/im/index.js.map +1 -0
- package/dist/functions/im/parseImMentionSegments.d.ts +8 -4
- package/dist/functions/im/parseImMentionSegments.js +39 -3
- package/dist/functions/im/parseImMentionSegments.js.map +1 -1
- package/dist/functions/path/index.d.ts +4 -0
- package/dist/functions/path/index.js +5 -0
- package/dist/functions/path/index.js.map +1 -0
- package/dist/functions/path/pathBasename.d.ts +1 -0
- package/dist/functions/path/pathBasename.js +11 -0
- package/dist/functions/path/pathBasename.js.map +1 -0
- package/dist/functions/path/pathDirname.d.ts +1 -0
- package/dist/functions/path/pathDirname.js +19 -0
- package/dist/functions/path/pathDirname.js.map +1 -0
- package/dist/functions/path/pathExtname.d.ts +4 -0
- package/dist/functions/path/pathExtname.js +15 -0
- package/dist/functions/path/pathExtname.js.map +1 -0
- package/dist/functions/path/pathLastSegment.d.ts +1 -0
- package/dist/functions/path/pathLastSegment.js +11 -0
- package/dist/functions/path/pathLastSegment.js.map +1 -0
- package/dist/functions/qiankun/createQiankunVueApp.js +94 -18
- package/dist/functions/qiankun/createQiankunVueApp.js.map +1 -1
- package/dist/functions/tencent-cloud/deploy.tcb.d.ts +0 -1
- package/dist/functions/tencent-cloud/deploy.tcb.js +0 -1
- package/dist/functions/tencent-cloud/deploy.tcb.js.map +1 -1
- package/dist/functions/tree/index.d.ts +1 -0
- package/dist/functions/tree/index.js +2 -0
- package/dist/functions/tree/index.js.map +1 -0
- package/dist/functions/tree/pathsToTreeNodes.d.ts +26 -0
- package/dist/functions/tree/pathsToTreeNodes.js +102 -0
- package/dist/functions/tree/pathsToTreeNodes.js.map +1 -0
- package/dist/schemas/video.schema.d.ts +45 -45
- package/dist/schemas/video.schema.js +3 -3
- package/dist/schemas/video.schema.js.map +1 -1
- package/package.json +24 -2
- package/types/ai-llm-model-capabilities.d.ts +25 -0
- package/types/assets.d.ts +12 -0
- package/types/chat-shell-tab-config.d.ts +64 -0
- package/types/im-api.d.ts +11 -1
- package/types/im-chat.d.ts +47 -2
- package/types/im-forward.d.ts +37 -0
- package/types/im-reply.d.ts +6 -0
- package/types/video.d.ts +8 -4
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { copyTextToClipboard } from './copyTextToClipboard';
|
|
2
|
+
export async function copyHtmlAndPlainToClipboard(html, plain) {
|
|
3
|
+
const wireHtml = html.trim();
|
|
4
|
+
const restorablePlain = plain.trim();
|
|
5
|
+
if (!wireHtml && !restorablePlain)
|
|
6
|
+
return false;
|
|
7
|
+
const w = globalThis;
|
|
8
|
+
const nav = w.navigator;
|
|
9
|
+
const doc = w.document;
|
|
10
|
+
const clipboard = nav?.clipboard;
|
|
11
|
+
if (clipboard?.write && typeof w.ClipboardItem === 'function' && wireHtml && w.Blob) {
|
|
12
|
+
try {
|
|
13
|
+
await clipboard.write([
|
|
14
|
+
new w.ClipboardItem({
|
|
15
|
+
'text/html': new w.Blob([wireHtml], { type: 'text/html' }),
|
|
16
|
+
'text/plain': new w.Blob([restorablePlain || wireHtml], {
|
|
17
|
+
type: 'text/plain',
|
|
18
|
+
}),
|
|
19
|
+
}),
|
|
20
|
+
]);
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (wireHtml && doc?.body) {
|
|
27
|
+
const sel = w.window?.getSelection?.() ?? null;
|
|
28
|
+
const savedRanges = [];
|
|
29
|
+
if (sel) {
|
|
30
|
+
for (let i = 0; i < sel.rangeCount; i++) {
|
|
31
|
+
savedRanges.push(sel.getRangeAt(i));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
const host = doc.createElement('div');
|
|
36
|
+
const h = host;
|
|
37
|
+
h.contentEditable = 'true';
|
|
38
|
+
h.innerHTML = wireHtml;
|
|
39
|
+
h.style.cssText =
|
|
40
|
+
'position:fixed;top:0;left:0;width:1px;height:1px;opacity:0;pointer-events:none;overflow:hidden;';
|
|
41
|
+
doc.body.appendChild(host);
|
|
42
|
+
const range = doc.createRange?.();
|
|
43
|
+
range?.selectNodeContents(host);
|
|
44
|
+
sel?.removeAllRanges();
|
|
45
|
+
if (range)
|
|
46
|
+
sel?.addRange(range);
|
|
47
|
+
const ok = doc.execCommand?.('copy') ?? false;
|
|
48
|
+
doc.body.removeChild(host);
|
|
49
|
+
sel?.removeAllRanges();
|
|
50
|
+
for (const r of savedRanges) {
|
|
51
|
+
try {
|
|
52
|
+
sel?.addRange(r);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (ok)
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (restorablePlain) {
|
|
64
|
+
return copyTextToClipboard(restorablePlain);
|
|
65
|
+
}
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=copyHtmlAndPlainToClipboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copyHtmlAndPlainToClipboard.js","sourceRoot":"","sources":["../../../src/functions/dom/copyHtmlAndPlainToClipboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function copyTextToClipboard(text: string): Promise<boolean>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export async function copyTextToClipboard(text) {
|
|
2
|
+
if (text === '')
|
|
3
|
+
return false;
|
|
4
|
+
const w = globalThis;
|
|
5
|
+
const doc = w.document;
|
|
6
|
+
const nav = w.navigator;
|
|
7
|
+
if (!doc?.body)
|
|
8
|
+
return false;
|
|
9
|
+
if (nav?.clipboard?.writeText) {
|
|
10
|
+
try {
|
|
11
|
+
await nav.clipboard.writeText(text);
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
try {
|
|
18
|
+
const ta = doc.createElement('textarea');
|
|
19
|
+
const t = ta;
|
|
20
|
+
t.value = text;
|
|
21
|
+
t.readOnly = true;
|
|
22
|
+
t.style.cssText =
|
|
23
|
+
'position:fixed;top:0;left:0;width:2em;height:2em;padding:0;border:none;outline:none;opacity:0;pointer-events:none;';
|
|
24
|
+
doc.body.appendChild(ta);
|
|
25
|
+
t.focus();
|
|
26
|
+
t.select();
|
|
27
|
+
t.setSelectionRange(0, text.length);
|
|
28
|
+
const ok = doc.execCommand?.('copy') ?? false;
|
|
29
|
+
doc.body.removeChild(ta);
|
|
30
|
+
return ok;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=copyTextToClipboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copyTextToClipboard.js","sourceRoot":"","sources":["../../../src/functions/dom/copyTextToClipboard.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAY;IACpD,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,KAAK,CAAA;IAC7B,MAAM,CAAC,GAAG,UAAuE,CAAA;IACjF,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAA;IACtB,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,CAAA;IACvB,IAAI,CAAC,GAAG,EAAE,IAAI;QAAE,OAAO,KAAK,CAAA;IAE5B,IAAI,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YACnC,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;QACxC,MAAM,CAAC,GAAG,EAOT,CAAA;QACD,CAAC,CAAC,KAAK,GAAG,IAAI,CAAA;QACd,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAA;QACjB,CAAC,CAAC,KAAK,CAAC,OAAO;YACb,oHAAoH,CAAA;QACtH,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QACxB,CAAC,CAAC,KAAK,EAAE,CAAA;QACT,CAAC,CAAC,MAAM,EAAE,CAAA;QACV,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QACnC,MAAM,EAAE,GAAI,GAAuB,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAA;QAClE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QACxB,OAAO,EAAE,CAAA;IACX,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export async function extractVideoCoverAsFile(videoFile, options = {}) {
|
|
2
|
+
const { seekTimeSec = 0.1, quality = 0.9, mimeType = 'image/jpeg', maxWidth = 1080, } = options;
|
|
3
|
+
if (typeof document === 'undefined') {
|
|
4
|
+
throw new Error('当前环境不支持视频封面提取');
|
|
5
|
+
}
|
|
6
|
+
const video = document.createElement('video');
|
|
7
|
+
video.preload = 'metadata';
|
|
8
|
+
video.muted = true;
|
|
9
|
+
video.playsInline = true;
|
|
10
|
+
const objectUrl = URL.createObjectURL(videoFile);
|
|
11
|
+
video.src = objectUrl;
|
|
12
|
+
try {
|
|
13
|
+
await new Promise((resolve, reject) => {
|
|
14
|
+
const onLoaded = () => resolve();
|
|
15
|
+
const onError = () => reject(new Error('读取视频失败,无法提取封面'));
|
|
16
|
+
video.addEventListener('loadedmetadata', onLoaded, { once: true });
|
|
17
|
+
video.addEventListener('error', onError, { once: true });
|
|
18
|
+
});
|
|
19
|
+
const duration = Number.isFinite(video.duration) ? video.duration : 0;
|
|
20
|
+
const targetTime = Math.max(0, Math.min(seekTimeSec, duration > 0 ? Math.max(0, duration - 0.05) : seekTimeSec));
|
|
21
|
+
await new Promise((resolve, reject) => {
|
|
22
|
+
const onSeeked = () => resolve();
|
|
23
|
+
const onError = () => reject(new Error('定位视频帧失败,无法提取封面'));
|
|
24
|
+
video.addEventListener('seeked', onSeeked, { once: true });
|
|
25
|
+
video.addEventListener('error', onError, { once: true });
|
|
26
|
+
video.currentTime = targetTime;
|
|
27
|
+
});
|
|
28
|
+
const srcW = Math.max(1, video.videoWidth || 1);
|
|
29
|
+
const srcH = Math.max(1, video.videoHeight || 1);
|
|
30
|
+
const scale = srcW > maxWidth ? maxWidth / srcW : 1;
|
|
31
|
+
const outW = Math.max(1, Math.round(srcW * scale));
|
|
32
|
+
const outH = Math.max(1, Math.round(srcH * scale));
|
|
33
|
+
const canvas = document.createElement('canvas');
|
|
34
|
+
canvas.width = outW;
|
|
35
|
+
canvas.height = outH;
|
|
36
|
+
const ctx = canvas.getContext('2d');
|
|
37
|
+
if (!ctx)
|
|
38
|
+
throw new Error('创建封面画布失败');
|
|
39
|
+
ctx.drawImage(video, 0, 0, outW, outH);
|
|
40
|
+
const blob = await new Promise((resolve, reject) => {
|
|
41
|
+
canvas.toBlob((b) => {
|
|
42
|
+
if (!b) {
|
|
43
|
+
reject(new Error('生成封面失败'));
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
resolve(b);
|
|
47
|
+
}, mimeType, quality);
|
|
48
|
+
});
|
|
49
|
+
const ext = mimeType === 'image/png' ? 'png' : 'jpg';
|
|
50
|
+
const base = videoFile.name.replace(/\.[^/.]+$/, '') || 'video-cover';
|
|
51
|
+
return new File([blob], `${base}-cover.${ext}`, { type: mimeType });
|
|
52
|
+
}
|
|
53
|
+
finally {
|
|
54
|
+
URL.revokeObjectURL(objectUrl);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=extractVideoCover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractVideoCover.js","sourceRoot":"","sources":["../../../src/functions/file/extractVideoCover.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { formatFileSize } from './formatFileSize';
|
|
2
|
+
export { getFileExtension, type GetFileExtensionOptions } from './getFileExtension';
|
|
3
|
+
export { getIconfontNameByExtension } from './getIconfontNameByExtension';
|
|
4
|
+
export { materialIconNameForPath, materialFileIconUrl, getFileIconUrl, type MaterialFileIconMaps, } from './materialFileIcon';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { formatFileSize } from './formatFileSize';
|
|
2
|
+
export { getFileExtension } from './getFileExtension';
|
|
3
|
+
export { getIconfontNameByExtension } from './getIconfontNameByExtension';
|
|
4
|
+
export { materialIconNameForPath, materialFileIconUrl, getFileIconUrl, } from './materialFileIcon';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/file/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAgC,MAAM,oBAAoB,CAAA;AACnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AACzE,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,GAEf,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type MediaType = 'image' | 'video' | 'file';
|
|
2
|
+
export interface InferMediaTypeFile {
|
|
3
|
+
type: string;
|
|
4
|
+
name: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function inferMediaType(file: InferMediaTypeFile): MediaType;
|
|
7
|
+
export declare function isImageFile(file: InferMediaTypeFile): boolean;
|
|
8
|
+
export declare function isVideoFile(file: InferMediaTypeFile): boolean;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export function inferMediaType(file) {
|
|
2
|
+
const mime = (file.type || '').toLowerCase();
|
|
3
|
+
if (mime.startsWith('image/')) {
|
|
4
|
+
return 'image';
|
|
5
|
+
}
|
|
6
|
+
if (mime.startsWith('video/')) {
|
|
7
|
+
return 'video';
|
|
8
|
+
}
|
|
9
|
+
const name = (file.name || '').toLowerCase();
|
|
10
|
+
if (/\.(png|jpe?g|gif|webp|bmp|svg|heic|heif|tiff?|ico|avif)$/i.test(name)) {
|
|
11
|
+
return 'image';
|
|
12
|
+
}
|
|
13
|
+
if (/\.(mp4|mov|m4v|webm|mkv|avi|flv|wmv|mpg|mpeg|3gp|ts|m3u8)$/i.test(name)) {
|
|
14
|
+
return 'video';
|
|
15
|
+
}
|
|
16
|
+
return 'file';
|
|
17
|
+
}
|
|
18
|
+
export function isImageFile(file) {
|
|
19
|
+
return inferMediaType(file) === 'image';
|
|
20
|
+
}
|
|
21
|
+
export function isVideoFile(file) {
|
|
22
|
+
return inferMediaType(file) === 'video';
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=inferMediaType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inferMediaType.js","sourceRoot":"","sources":["../../../src/functions/file/inferMediaType.ts"],"names":[],"mappings":"AAqCA,MAAM,UAAU,cAAc,CAAC,IAAwB;IACrD,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IAG5C,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAA;IAChB,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAA;IAChB,CAAC;IAGD,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IAG5C,IAAI,2DAA2D,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3E,OAAO,OAAO,CAAA;IAChB,CAAC;IAGD,IAAI,6DAA6D,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7E,OAAO,OAAO,CAAA;IAChB,CAAC;IAGD,OAAO,MAAM,CAAA;AACf,CAAC;AAQD,MAAM,UAAU,WAAW,CAAC,IAAwB;IAClD,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,OAAO,CAAA;AACzC,CAAC;AAQD,MAAM,UAAU,WAAW,CAAC,IAAwB;IAClD,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,OAAO,CAAA;AACzC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface MaterialFileIconMaps {
|
|
2
|
+
defaultFileIcon: string;
|
|
3
|
+
defaultFolderIcon: string;
|
|
4
|
+
extToIcon: Record<string, string>;
|
|
5
|
+
fileNameToIcon: Record<string, string>;
|
|
6
|
+
folderNameToIcon: Record<string, string>;
|
|
7
|
+
}
|
|
8
|
+
export declare function materialIconNameForPath(maps: MaterialFileIconMaps, relPosixPath: string, isDirectory: boolean): string;
|
|
9
|
+
export declare function materialFileIconUrl(iconName: string, baseUrl?: string): string;
|
|
10
|
+
export declare function getFileIconUrl(maps: MaterialFileIconMaps, relPosixPath: string, isDirectory: boolean, baseUrl?: string): string;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export function materialIconNameForPath(maps, relPosixPath, isDirectory) {
|
|
2
|
+
const trimmed = relPosixPath.replace(/\\/g, '/').replace(/^\/+/, '');
|
|
3
|
+
const segs = trimmed.split('/').filter(Boolean);
|
|
4
|
+
const basename = segs[segs.length - 1] ?? trimmed;
|
|
5
|
+
if (isDirectory) {
|
|
6
|
+
const key = basename.toLowerCase();
|
|
7
|
+
return maps.folderNameToIcon[key] ?? maps.defaultFolderIcon;
|
|
8
|
+
}
|
|
9
|
+
if (maps.fileNameToIcon[basename]) {
|
|
10
|
+
return maps.fileNameToIcon[basename];
|
|
11
|
+
}
|
|
12
|
+
const parts = basename.split('.');
|
|
13
|
+
if (parts.length >= 2) {
|
|
14
|
+
for (let start = 1; start < parts.length; start++) {
|
|
15
|
+
const candidate = parts.slice(start).join('.');
|
|
16
|
+
if (maps.extToIcon[candidate]) {
|
|
17
|
+
return maps.extToIcon[candidate];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return maps.defaultFileIcon;
|
|
22
|
+
}
|
|
23
|
+
export function materialFileIconUrl(iconName, baseUrl = '/') {
|
|
24
|
+
const name = encodeURIComponent(iconName);
|
|
25
|
+
const b = baseUrl.trim();
|
|
26
|
+
if (b === './' || b === '.')
|
|
27
|
+
return `./material-icons/${name}.svg`;
|
|
28
|
+
if (b === '/')
|
|
29
|
+
return `/material-icons/${name}.svg`;
|
|
30
|
+
return `${b.replace(/\/$/, '')}/material-icons/${name}.svg`;
|
|
31
|
+
}
|
|
32
|
+
export function getFileIconUrl(maps, relPosixPath, isDirectory, baseUrl = '/') {
|
|
33
|
+
const iconName = materialIconNameForPath(maps, relPosixPath, isDirectory);
|
|
34
|
+
return materialFileIconUrl(iconName, baseUrl);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=materialFileIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"materialFileIcon.js","sourceRoot":"","sources":["../../../src/functions/file/materialFileIcon.ts"],"names":[],"mappings":"AAmEA,MAAM,UAAU,uBAAuB,CACrC,IAA0B,EAC1B,YAAoB,EACpB,WAAoB;IAEpB,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IACpE,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,OAAO,CAAA;IAEjD,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;QAClC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAA;IAC7D,CAAC;IAED,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACjC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YAClD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC9C,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC,eAAe,CAAA;AAC7B,CAAC;AAsBD,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,UAAkB,GAAG;IACzE,MAAM,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IACzC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;IACxB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,oBAAoB,IAAI,MAAM,CAAA;IAClE,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,mBAAmB,IAAI,MAAM,CAAA;IACnD,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,IAAI,MAAM,CAAA;AAC7D,CAAC;AAsBD,MAAM,UAAU,cAAc,CAC5B,IAA0B,EAC1B,YAAoB,EACpB,WAAoB,EACpB,UAAkB,GAAG;IAErB,MAAM,QAAQ,GAAG,uBAAuB,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,CAAA;IACzE,OAAO,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;AAC/C,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare const IM_FORWARD_BUNDLE_EXTRA_KEY = "forward_bundle";
|
|
2
|
+
export declare const IM_FORWARD_BUNDLE_CONTENT_VERSION = 1;
|
|
3
|
+
export interface ImForwardBundleStoredItem {
|
|
4
|
+
sender_id?: string;
|
|
5
|
+
sender_name: string;
|
|
6
|
+
type: string;
|
|
7
|
+
content: string;
|
|
8
|
+
snippet: string;
|
|
9
|
+
message_id?: string;
|
|
10
|
+
sender_seq?: number;
|
|
11
|
+
extra_data?: Record<string, unknown>;
|
|
12
|
+
}
|
|
13
|
+
export interface ImForwardBundleExtra {
|
|
14
|
+
items: ImForwardBundleStoredItem[];
|
|
15
|
+
}
|
|
16
|
+
export interface ImForwardBundleContentPayload {
|
|
17
|
+
v: typeof IM_FORWARD_BUNDLE_CONTENT_VERSION;
|
|
18
|
+
items: ImForwardBundleStoredItem[];
|
|
19
|
+
}
|
|
20
|
+
export declare function imForwardBundleHasRenderablePayload(bundle: ImForwardBundleExtra | null | undefined): boolean;
|
|
21
|
+
export declare function serializeForwardBundleContent(items: readonly ImForwardBundleStoredItem[]): string;
|
|
22
|
+
export declare function parseForwardBundleFromContent(content: string | undefined | null): ImForwardBundleExtra | null;
|
|
23
|
+
export declare function parseForwardBundleFromImMessage(messageType: string | undefined | null, content: string | undefined | null, extraData?: Record<string, unknown> | null): ImForwardBundleExtra | null;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export const IM_FORWARD_BUNDLE_EXTRA_KEY = 'forward_bundle';
|
|
2
|
+
export const IM_FORWARD_BUNDLE_CONTENT_VERSION = 1;
|
|
3
|
+
function isValidStoredItem(raw) {
|
|
4
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw))
|
|
5
|
+
return false;
|
|
6
|
+
const rec = raw;
|
|
7
|
+
const snippet = String(rec.snippet ?? '').trim();
|
|
8
|
+
const content = String(rec.content ?? '').trim();
|
|
9
|
+
return snippet.length > 0 || content.length > 0;
|
|
10
|
+
}
|
|
11
|
+
function normalizeBundleExtra(raw) {
|
|
12
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw))
|
|
13
|
+
return null;
|
|
14
|
+
const items = raw.items;
|
|
15
|
+
if (!Array.isArray(items) || items.length === 0)
|
|
16
|
+
return null;
|
|
17
|
+
const out = items.filter(isValidStoredItem);
|
|
18
|
+
return out.length > 0 ? { items: out } : null;
|
|
19
|
+
}
|
|
20
|
+
export function imForwardBundleHasRenderablePayload(bundle) {
|
|
21
|
+
return (bundle?.items?.length ?? 0) > 0;
|
|
22
|
+
}
|
|
23
|
+
export function serializeForwardBundleContent(items) {
|
|
24
|
+
const payload = {
|
|
25
|
+
v: IM_FORWARD_BUNDLE_CONTENT_VERSION,
|
|
26
|
+
items: [...items],
|
|
27
|
+
};
|
|
28
|
+
return JSON.stringify(payload);
|
|
29
|
+
}
|
|
30
|
+
export function parseForwardBundleFromContent(content) {
|
|
31
|
+
const c = String(content ?? '').trim();
|
|
32
|
+
if (!c || c[0] !== '{')
|
|
33
|
+
return null;
|
|
34
|
+
try {
|
|
35
|
+
const raw = JSON.parse(c);
|
|
36
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw))
|
|
37
|
+
return null;
|
|
38
|
+
const rec = raw;
|
|
39
|
+
const v = Number(rec.v);
|
|
40
|
+
if (v !== IM_FORWARD_BUNDLE_CONTENT_VERSION)
|
|
41
|
+
return null;
|
|
42
|
+
return normalizeBundleExtra({ items: rec.items });
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export function parseForwardBundleFromImMessage(messageType, content, extraData) {
|
|
49
|
+
if (String(messageType ?? '').trim() !== 'forward_bundle')
|
|
50
|
+
return null;
|
|
51
|
+
const fromContent = parseForwardBundleFromContent(content);
|
|
52
|
+
if (fromContent)
|
|
53
|
+
return fromContent;
|
|
54
|
+
if (!extraData || typeof extraData !== 'object' || Array.isArray(extraData)) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
return normalizeBundleExtra(extraData[IM_FORWARD_BUNDLE_EXTRA_KEY]);
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=forwardBundlePayload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forwardBundlePayload.js","sourceRoot":"","sources":["../../../src/functions/im/forwardBundlePayload.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,2BAA2B,GAAG,gBAAgB,CAAA;AAE3D,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAA;AAwBlD,SAAS,iBAAiB,CAAC,GAAY;IACrC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IACvE,MAAM,GAAG,GAAG,GAA8B,CAAA;IAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAChD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAChD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA;AACjD,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAY;IACxC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IACtE,MAAM,KAAK,GAAI,GAA4B,CAAC,KAAK,CAAA;IACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAC5D,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAC3C,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AAC/C,CAAC;AAGD,MAAM,UAAU,mCAAmC,CACjD,MAA+C;IAE/C,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;AACzC,CAAC;AAGD,MAAM,UAAU,6BAA6B,CAC3C,KAA2C;IAE3C,MAAM,OAAO,GAAkC;QAC7C,CAAC,EAAE,iCAAiC;QACpC,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;KAClB,CAAA;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;AAChC,CAAC;AAGD,MAAM,UAAU,6BAA6B,CAC3C,OAAkC;IAElC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IACtC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;QAAE,OAAO,IAAI,CAAA;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAY,CAAA;QACpC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAA;QACtE,MAAM,GAAG,GAAG,GAA8B,CAAA;QAC1C,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,CAAC,KAAK,iCAAiC;YAAE,OAAO,IAAI,CAAA;QACxD,OAAO,oBAAoB,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAA;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAGD,MAAM,UAAU,+BAA+B,CAC7C,WAAsC,EACtC,OAAkC,EAClC,SAA0C;IAE1C,IAAI,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,gBAAgB;QAAE,OAAO,IAAI,CAAA;IACtE,MAAM,WAAW,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAA;IAC1D,IAAI,WAAW;QAAE,OAAO,WAAW,CAAA;IACnC,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5E,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,oBAAoB,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC,CAAA;AACrE,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export function getActiveMentionQuery(text, cursorPos) {
|
|
2
|
+
if (cursorPos < 0 || cursorPos > text.length)
|
|
3
|
+
return null;
|
|
4
|
+
const before = text.slice(0, cursorPos);
|
|
5
|
+
let searchEnd = before.length;
|
|
6
|
+
while (searchEnd >= 0) {
|
|
7
|
+
const atIndex = before.lastIndexOf('@', searchEnd - 1);
|
|
8
|
+
if (atIndex < 0)
|
|
9
|
+
return null;
|
|
10
|
+
if (atIndex > 0 && !/[\s\n]/.test(before[atIndex - 1])) {
|
|
11
|
+
searchEnd = atIndex;
|
|
12
|
+
continue;
|
|
13
|
+
}
|
|
14
|
+
const tail = before.slice(atIndex + 1);
|
|
15
|
+
if (tail.includes('\n') || /\s/.test(tail)) {
|
|
16
|
+
searchEnd = atIndex > 0 ? atIndex - 1 : -1;
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
return { atIndex, filter: tail };
|
|
20
|
+
}
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=getActiveMentionQuery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getActiveMentionQuery.js","sourceRoot":"","sources":["../../../src/functions/im/getActiveMentionQuery.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,qBAAqB,CACnC,IAAY,EACZ,SAAiB;IAEjB,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IACzD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;IACvC,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAA;IAC7B,OAAO,SAAS,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,CAAC,CAAC,CAAA;QACtD,IAAI,OAAO,GAAG,CAAC;YAAE,OAAO,IAAI,CAAA;QAC5B,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAE,CAAC,EAAE,CAAC;YACxD,SAAS,GAAG,OAAO,CAAA;YACnB,SAAQ;QACV,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAA;QACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,SAAS,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC1C,SAAQ;QACV,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;IAClC,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export declare function formatImFileToken(filePath: string): string;
|
|
2
|
+
export declare const formatImLocalFileToken: typeof formatImFileToken;
|
|
3
|
+
export declare function formatImImageLocalToken(attachKey: string): string;
|
|
4
|
+
export interface ImImageIntrinsicDimensions {
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function formatImImageUrlToken(url: string, dimensions?: ImImageIntrinsicDimensions): string;
|
|
9
|
+
export declare function parseImImageUrlTokenPayload(payload: string): {
|
|
10
|
+
url: string;
|
|
11
|
+
width?: number;
|
|
12
|
+
height?: number;
|
|
13
|
+
};
|
|
14
|
+
export type ImRichContentSegment = {
|
|
15
|
+
type: 'text';
|
|
16
|
+
text: string;
|
|
17
|
+
} | {
|
|
18
|
+
type: 'mention';
|
|
19
|
+
userId: string;
|
|
20
|
+
raw: string;
|
|
21
|
+
label?: string;
|
|
22
|
+
} | {
|
|
23
|
+
type: 'file';
|
|
24
|
+
path: string;
|
|
25
|
+
raw: string;
|
|
26
|
+
} | {
|
|
27
|
+
type: 'image';
|
|
28
|
+
url: string;
|
|
29
|
+
raw: string;
|
|
30
|
+
pending: boolean;
|
|
31
|
+
attachKey?: string;
|
|
32
|
+
width?: number;
|
|
33
|
+
height?: number;
|
|
34
|
+
};
|
|
35
|
+
export declare function parseImRichContentSegments(content: string): ImRichContentSegment[];
|
|
36
|
+
export declare function contentHasImageLocalTokens(content: string): boolean;
|
|
37
|
+
export declare function replaceImImageLocalToken(content: string, attachKey: string, url: string, dimensions?: ImImageIntrinsicDimensions): string;
|
|
38
|
+
export declare function replaceImImageUrlToken(content: string, fromUrl: string, toUrl: string, dimensions?: ImImageIntrinsicDimensions): string;
|
|
39
|
+
export declare function contentHasImRichInlineTokens(content: string): boolean;
|
|
40
|
+
export type MaterializeImRichContentOptions = {
|
|
41
|
+
resolveMentionLabel?: (userId: string) => string;
|
|
42
|
+
mentionFallbackLabel?: (userId: string) => string;
|
|
43
|
+
formatLocalFilePath?: (path: string) => string;
|
|
44
|
+
preserveLocalFileTokens?: boolean;
|
|
45
|
+
preserveImageUrlTokens?: boolean;
|
|
46
|
+
formatImageUrl?: (url: string) => string;
|
|
47
|
+
formatImagePending?: () => string;
|
|
48
|
+
};
|
|
49
|
+
export declare function materializeImRichContentTokensInText(content: string, options?: MaterializeImRichContentOptions): string;
|