mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-25 02:13:00 +08:00
#### PR Dependency Tree * **PR #14452** 👈 This tree was auto-generated by [Charcoal](https://github.com/danerwilliams/charcoal) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Improved null-safety, dependency tracking, upload validation, and error logging for more reliable uploads, clipboard, calendar linking, telemetry, PDF/theme printing, and preview/zoom behavior. * Tightened handling of all-day calendar events (missing date now reported). * **Deprecations** * Removed deprecated RadioButton and RadioButtonGroup; use RadioGroup. * **Chores** * Unified and upgraded linting/config, reorganized imports, and standardized binary handling for more consistent builds and tooling. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
import type { ExtensionType, Schema, Workspace } from '@blocksuite/store';
|
|
// @ts-expect-error -- mammoth.browser has no compatible type declaration for this subpath.
|
|
import { convertToHtml } from 'mammoth/mammoth.browser';
|
|
|
|
import { HtmlTransformer } from './html';
|
|
|
|
type ImportDocxOptions = {
|
|
collection: Workspace;
|
|
schema: Schema;
|
|
imported: Blob;
|
|
extensions: ExtensionType[];
|
|
};
|
|
|
|
/**
|
|
* Imports a .docx file into a doc.
|
|
*
|
|
* @param options - The import options.
|
|
* @param options.collection - The target doc collection.
|
|
* @param options.schema - The schema of the target doc collection.
|
|
* @param options.imported - The .docx file as a Blob.
|
|
* @returns A Promise that resolves to the ID of the newly created doc, or undefined if import fails.
|
|
*/
|
|
async function importDocx({
|
|
collection,
|
|
schema,
|
|
imported,
|
|
extensions,
|
|
}: ImportDocxOptions) {
|
|
try {
|
|
const { value } = await convertToHtml({
|
|
arrayBuffer: await imported.arrayBuffer(),
|
|
});
|
|
return await HtmlTransformer.importHTMLToDoc({
|
|
collection,
|
|
schema,
|
|
html: value,
|
|
extensions,
|
|
});
|
|
} catch (e) {
|
|
console.error('Failed to import .docx file:', e);
|
|
return undefined;
|
|
}
|
|
}
|
|
|
|
export const DocxTransformer = {
|
|
importDocx,
|
|
};
|