@4399ywkf/editor 0.4.3 → 0.5.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/README.md +84 -0
- package/dist/{DocView-IZ4JBSIA.js → DocView-XQMJUUVK.js} +3 -3
- package/dist/{DocView-IZ4JBSIA.js.map → DocView-XQMJUUVK.js.map} +1 -1
- package/dist/SheetView-DSADIZNS.js +3 -0
- package/dist/{SheetView-2EID6B2I.js.map → SheetView-DSADIZNS.js.map} +1 -1
- package/dist/{chunk-FQCG2HNJ.js → chunk-IUDLMN53.js} +32 -2
- package/dist/chunk-IUDLMN53.js.map +1 -0
- package/dist/chunk-L6ZR5HHW.js +84 -0
- package/dist/chunk-L6ZR5HHW.js.map +1 -0
- package/dist/doc.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/pdf.d.ts +1 -1
- package/dist/registry-BBL8yeIT.d.ts +148 -0
- package/dist/sheet.d.ts +8 -4
- package/dist/sheet.js +1 -1
- package/dist/xlsx.d.ts +273 -0
- package/dist/xlsx.js +613 -0
- package/dist/xlsx.js.map +1 -0
- package/package.json +6 -2
- package/dist/SheetView-2EID6B2I.js +0 -3
- package/dist/chunk-FQCG2HNJ.js.map +0 -1
- package/dist/chunk-RJUDOUEZ.js +0 -56
- package/dist/chunk-RJUDOUEZ.js.map +0 -1
- package/dist/registry-CvGg65s9.d.ts +0 -68
package/dist/chunk-RJUDOUEZ.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { useRef, useEffect } from 'react';
|
|
2
|
-
import { jsx } from 'react/jsx-runtime';
|
|
3
|
-
|
|
4
|
-
// src/views/SheetView.tsx
|
|
5
|
-
function SheetView({ content, readOnly, className, onReady, onError }) {
|
|
6
|
-
const hostRef = useRef(null);
|
|
7
|
-
const disposeRef = useRef(null);
|
|
8
|
-
useEffect(() => {
|
|
9
|
-
let cancelled = false;
|
|
10
|
-
const host = hostRef.current;
|
|
11
|
-
if (!host) return;
|
|
12
|
-
(async () => {
|
|
13
|
-
try {
|
|
14
|
-
const [{ createUniver, LocaleType, merge }, sheetsCore, zhCN] = await Promise.all([
|
|
15
|
-
import('@univerjs/presets'),
|
|
16
|
-
import('@univerjs/presets/preset-sheets-core'),
|
|
17
|
-
import('@univerjs/presets/preset-sheets-core/locales/zh-CN')
|
|
18
|
-
]);
|
|
19
|
-
if (cancelled) return;
|
|
20
|
-
const { univerAPI, univer } = createUniver({
|
|
21
|
-
locale: LocaleType.ZH_CN,
|
|
22
|
-
locales: { [LocaleType.ZH_CN]: merge({}, zhCN.default) },
|
|
23
|
-
// 可选 peer:@univerjs/presets 未安装时这里的类型解析不到,
|
|
24
|
-
// 统一用 never 过桥,运行时由上面的 try/catch 兜底并给出可读提示
|
|
25
|
-
presets: [
|
|
26
|
-
sheetsCore.UniverSheetsCorePreset({
|
|
27
|
-
container: host
|
|
28
|
-
})
|
|
29
|
-
]
|
|
30
|
-
});
|
|
31
|
-
if (content) univerAPI.createWorkbook(content);
|
|
32
|
-
else univerAPI.createWorkbook({});
|
|
33
|
-
if (readOnly) univerAPI.getActiveWorkbook?.()?.setEditable?.(false);
|
|
34
|
-
disposeRef.current = () => univer.dispose();
|
|
35
|
-
onReady?.(univerAPI);
|
|
36
|
-
} catch (e) {
|
|
37
|
-
const err = e instanceof Error ? e : new Error(String(e));
|
|
38
|
-
onError?.(
|
|
39
|
-
new Error(
|
|
40
|
-
`表格引擎加载失败:${err.message}。请确认已安装可选依赖 @univerjs/presets(pnpm add @univerjs/presets)`
|
|
41
|
-
)
|
|
42
|
-
);
|
|
43
|
-
}
|
|
44
|
-
})();
|
|
45
|
-
return () => {
|
|
46
|
-
cancelled = true;
|
|
47
|
-
disposeRef.current?.();
|
|
48
|
-
disposeRef.current = null;
|
|
49
|
-
};
|
|
50
|
-
}, [content, readOnly, onReady, onError]);
|
|
51
|
-
return /* @__PURE__ */ jsx("div", { ref: hostRef, className, style: { width: "100%", height: "100%" } });
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export { SheetView };
|
|
55
|
-
//# sourceMappingURL=chunk-RJUDOUEZ.js.map
|
|
56
|
-
//# sourceMappingURL=chunk-RJUDOUEZ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/views/SheetView.tsx"],"names":[],"mappings":";;;;AAae,SAAR,UAA2B,EAAE,OAAA,EAAS,UAAU,SAAA,EAAW,OAAA,EAAS,SAAQ,EAAsB;AACvG,EAAA,MAAM,OAAA,GAAU,OAAuB,IAAI,CAAA;AAC3C,EAAA,MAAM,UAAA,GAAa,OAA4B,IAAI,CAAA;AAEnD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAA,GAAY,KAAA;AAChB,IAAA,MAAM,OAAO,OAAA,CAAQ,OAAA;AACrB,IAAA,IAAI,CAAC,IAAA,EAAM;AAEV,IAAA,CAAC,YAAY;AACZ,MAAA,IAAI;AAEF,QAAA,MAAM,CAAC,EAAE,YAAA,EAAc,UAAA,EAAY,KAAA,EAAM,EAAG,UAAA,EAAY,IAAI,CAAA,GAAI,MAAM,OAAA,CAAQ,GAAA,CAAI;AAAA,UAChF,OAAO,mBAAmB,CAAA;AAAA,UAC1B,OAAO,sCAAsC,CAAA;AAAA,UAC7C,OAAO,oDAAoD;AAAA,SAC5D,CAAA;AACD,QAAA,IAAI,SAAA,EAAW;AAEf,QAAA,MAAM,EAAE,SAAA,EAAW,MAAA,EAAO,GAAI,YAAA,CAAa;AAAA,UACzC,QAAQ,UAAA,CAAW,KAAA;AAAA,UACnB,OAAA,EAAS,EAAE,CAAC,UAAA,CAAW,KAAK,GAAG,KAAA,CAAM,EAAC,EAAI,IAAA,CAAwC,OAAO,CAAA,EAAE;AAAA;AAAA;AAAA,UAG3F,OAAA,EAAS;AAAA,YACN,WAA2E,sBAAA,CAAuB;AAAA,cACjG,SAAA,EAAW;AAAA,aACZ;AAAA;AACH,SACD,CAAA;AAED,QAAA,IAAI,OAAA,EAAS,SAAA,CAAU,cAAA,CAAe,OAAgB,CAAA;AAAA,aACjD,SAAA,CAAU,cAAA,CAAe,EAAE,CAAA;AAChC,QAAA,IAAI,QAAA,EAAU,SAAA,CAAU,iBAAA,IAAoB,EAAG,cAAc,KAAK,CAAA;AAElE,QAAA,UAAA,CAAW,OAAA,GAAU,MAAO,MAAA,CAA8C,OAAA,EAAQ;AAClF,QAAA,OAAA,GAAU,SAAS,CAAA;AAAA,MACrB,SAAS,CAAA,EAAG;AACV,QAAA,MAAM,GAAA,GAAM,aAAa,KAAA,GAAQ,CAAA,GAAI,IAAI,KAAA,CAAM,MAAA,CAAO,CAAC,CAAC,CAAA;AACxD,QAAA,OAAA;AAAA,UACE,IAAI,KAAA;AAAA,YACF,CAAA,SAAA,EAAY,IAAI,OAAO,CAAA,yDAAA;AAAA;AAEzB,SACF;AAAA,MACF;AAAA,IACF,CAAA,GAAG;AAEH,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,GAAY,IAAA;AACZ,MAAA,UAAA,CAAW,OAAA,IAAU;AACrB,MAAA,UAAA,CAAW,OAAA,GAAU,IAAA;AAAA,IACvB,CAAA;AAAA,EACF,GAAG,CAAC,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,OAAO,CAAC,CAAA;AAExC,EAAA,uBAAO,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,OAAA,EAAS,SAAA,EAAsB,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAO,EAAG,CAAA;AAC5F","file":"chunk-RJUDOUEZ.js","sourcesContent":["import { useEffect, useRef } from \"react\"\nimport type { DocumentViewProps } from \"../registry\"\n\n/**\n * sheet 通道:Univer 适配。\n *\n * 只用 Apache-2.0 的 OSS 核心。**不碰** `@univerjs-pro/*` 与 `univer-cli`:\n * 前者要自建 Univer Server 且需商业授权,后者 63MB、license 字段为 None、\n * 90/91 个 JS 被混淆、还会向 univer.ai 上报遥测 —— 不能进生产链路。\n *\n * xlsx 出入建议走 SheetJS(Apache-2.0)在宿主侧做,接受公式/图表保真损失,\n * 换零采购与代码可控。\n */\nexport default function SheetView({ content, readOnly, className, onReady, onError }: DocumentViewProps) {\n const hostRef = useRef<HTMLDivElement>(null)\n const disposeRef = useRef<(() => void) | null>(null)\n\n useEffect(() => {\n let cancelled = false\n const host = hostRef.current\n if (!host) return\n\n ;(async () => {\n try {\n // 动态 import:871KB gzip 的引擎只在真的打开表格时才下载\n const [{ createUniver, LocaleType, merge }, sheetsCore, zhCN] = await Promise.all([\n import(\"@univerjs/presets\"),\n import(\"@univerjs/presets/preset-sheets-core\"),\n import(\"@univerjs/presets/preset-sheets-core/locales/zh-CN\"),\n ])\n if (cancelled) return\n\n const { univerAPI, univer } = createUniver({\n locale: LocaleType.ZH_CN,\n locales: { [LocaleType.ZH_CN]: merge({}, (zhCN as unknown as { default: object }).default) },\n // 可选 peer:@univerjs/presets 未安装时这里的类型解析不到,\n // 统一用 never 过桥,运行时由上面的 try/catch 兜底并给出可读提示\n presets: [\n (sheetsCore as unknown as { UniverSheetsCorePreset: (o: object) => never }).UniverSheetsCorePreset({\n container: host,\n }),\n ] as never,\n })\n\n if (content) univerAPI.createWorkbook(content as never)\n else univerAPI.createWorkbook({})\n if (readOnly) univerAPI.getActiveWorkbook?.()?.setEditable?.(false)\n\n disposeRef.current = () => (univer as unknown as { dispose: () => void }).dispose()\n onReady?.(univerAPI)\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e))\n onError?.(\n new Error(\n `表格引擎加载失败:${err.message}。` +\n `请确认已安装可选依赖 @univerjs/presets(pnpm add @univerjs/presets)`,\n ),\n )\n }\n })()\n\n return () => {\n cancelled = true\n disposeRef.current?.()\n disposeRef.current = null\n }\n }, [content, readOnly, onReady, onError])\n\n return <div ref={hostRef} className={className} style={{ width: \"100%\", height: \"100%\" }} />\n}\n"]}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { ComponentType } from 'react';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* 格式注册表 —— 整个包的骨架。
|
|
5
|
-
*
|
|
6
|
-
* 设计取自腾讯 WorkBuddy 的三通道结构:**按「文档住在哪 / 是什么」分通道,
|
|
7
|
-
* 每个通道一个独立引擎,上面加一层路由**。它没有试图用一套编辑器覆盖全部格式,
|
|
8
|
-
* 我们也不该。
|
|
9
|
-
*
|
|
10
|
-
* 三条硬约束:
|
|
11
|
-
*
|
|
12
|
-
* 1. **引擎必须懒加载。** Univer sheets 核心 gzip 后 871KB、pdf.js 也有几百 KB。
|
|
13
|
-
* 塞进主包会毁掉阅读侧的首屏 —— 只有用户真的打开一个表格 / PDF 时才该下载。
|
|
14
|
-
*
|
|
15
|
-
* 2. **能力要可申报,不能靠猜。** `capabilities` 明确说清每种格式能不能编辑、
|
|
16
|
-
* 能不能被 AI 结构化操作。上层据此决定给什么 UI,而不是先渲染再报错。
|
|
17
|
-
*
|
|
18
|
-
* 3. **宿主可注册自有引擎。** 内置覆盖不了的格式(如 pptx)留给宿主接,
|
|
19
|
-
* 而不是我们假装支持。
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
type DocumentFormat = "doc" | "sheet" | "pdf" | "pptx" | (string & {});
|
|
23
|
-
interface FormatCapabilities {
|
|
24
|
-
/** 能否编辑。false 表示只读预览 */
|
|
25
|
-
editable: boolean;
|
|
26
|
-
/** 能否被 AI 通过结构化工具面操作(读结构、按 id 定位、增删改) */
|
|
27
|
-
aiOperable: boolean;
|
|
28
|
-
/** 能否协同编辑 */
|
|
29
|
-
collaborative: boolean;
|
|
30
|
-
/** 支持导入的扩展名 */
|
|
31
|
-
importExtensions: string[];
|
|
32
|
-
/** 支持导出的格式 */
|
|
33
|
-
exportFormats: string[];
|
|
34
|
-
}
|
|
35
|
-
interface FormatAdapter {
|
|
36
|
-
format: DocumentFormat;
|
|
37
|
-
/** 展示名,给 UI 用 */
|
|
38
|
-
label: string;
|
|
39
|
-
capabilities: FormatCapabilities;
|
|
40
|
-
/** 该格式认领哪些扩展名(小写、带点) */
|
|
41
|
-
extensions: string[];
|
|
42
|
-
/**
|
|
43
|
-
* 懒加载视图组件。**必须是动态 import**,否则引擎会被打进主包。
|
|
44
|
-
*/
|
|
45
|
-
load: () => Promise<{
|
|
46
|
-
default: ComponentType<DocumentViewProps>;
|
|
47
|
-
}>;
|
|
48
|
-
}
|
|
49
|
-
interface DocumentViewProps {
|
|
50
|
-
/** 文档来源:URL / File / 已有内容 */
|
|
51
|
-
source?: string | Blob | File;
|
|
52
|
-
/** 已有内容(doc 走 tiptap JSON 或 HTML;sheet 走 Univer snapshot) */
|
|
53
|
-
content?: unknown;
|
|
54
|
-
readOnly?: boolean;
|
|
55
|
-
/** 协同房间号,仅 collaborative 为 true 的格式有意义 */
|
|
56
|
-
room?: string;
|
|
57
|
-
className?: string;
|
|
58
|
-
/** 引擎就绪回调,拿到底层实例(tiptap Editor / Univer API / PDFDocumentProxy) */
|
|
59
|
-
onReady?: (instance: unknown) => void;
|
|
60
|
-
onError?: (error: Error) => void;
|
|
61
|
-
}
|
|
62
|
-
declare function registerFormat(adapter: FormatAdapter): void;
|
|
63
|
-
declare function getFormat(format: DocumentFormat): FormatAdapter | undefined;
|
|
64
|
-
declare function listFormats(): FormatAdapter[];
|
|
65
|
-
/** 按扩展名判定格式。传文件名、路径或裸扩展名都行。 */
|
|
66
|
-
declare function detectFormat(nameOrExt: string): DocumentFormat | undefined;
|
|
67
|
-
|
|
68
|
-
export { type DocumentViewProps as D, type FormatAdapter as F, type DocumentFormat as a, type FormatCapabilities as b, detectFormat as d, getFormat as g, listFormats as l, registerFormat as r };
|