@kodaeditor/core 1.0.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/LICENSE.md +83 -0
- package/README.md +94 -0
- package/THIRD-PARTY-LICENSES.txt +1811 -0
- package/dist/commands.d.ts +15 -0
- package/dist/docx-alignment.d.ts +14 -0
- package/dist/docx-breaks.d.ts +31 -0
- package/dist/docx-forms.d.ts +28 -0
- package/dist/docx-headers.d.ts +22 -0
- package/dist/docx-images.d.ts +41 -0
- package/dist/docx-import.d.ts +36 -0
- package/dist/docx-math.d.ts +18 -0
- package/dist/docx-styles.d.ts +53 -0
- package/dist/docx-symbols.d.ts +19 -0
- package/dist/docx-text-styles.d.ts +27 -0
- package/dist/editor.d.ts +372 -0
- package/dist/fallback.d.ts +13 -0
- package/dist/floatingToolbar.d.ts +7 -0
- package/dist/group-icons.d.ts +17 -0
- package/dist/i18n.d.ts +214 -0
- package/dist/icons.d.ts +1 -0
- package/dist/image-view.d.ts +27 -0
- package/dist/import-formats.d.ts +41 -0
- package/dist/index.d.ts +15 -0
- package/dist/kodaeditor-core.umd.cjs +1 -0
- package/dist/kodaeditor.js +1 -0
- package/dist/kodaeditor.umd.cjs +1 -0
- package/dist/license.d.ts +90 -0
- package/dist/markdown.d.ts +4 -0
- package/dist/menubar.d.ts +60 -0
- package/dist/offline-license.d.ts +36 -0
- package/dist/pagination.d.ts +11 -0
- package/dist/paste.d.ts +54 -0
- package/dist/pdf-import-cdn.d.ts +2 -0
- package/dist/pdf-import.d.ts +8 -0
- package/dist/print.d.ts +18 -0
- package/dist/rtf-images.d.ts +24 -0
- package/dist/schema.d.ts +14 -0
- package/dist/search.d.ts +17 -0
- package/dist/serialize.d.ts +20 -0
- package/dist/slashMenu.d.ts +8 -0
- package/dist/styles.d.ts +8 -0
- package/dist/table-split.d.ts +26 -0
- package/dist/table-view.d.ts +34 -0
- package/dist/tableColumnTrade.d.ts +15 -0
- package/dist/tableToolbar.d.ts +14 -0
- package/dist/toc-view.d.ts +23 -0
- package/dist/toolbar-editor.d.ts +89 -0
- package/dist/validate-signature.d.ts +64 -0
- package/dist/vendor/pdf.min.mjs +29 -0
- package/dist/vendor/pdf.worker.min.mjs +29 -0
- package/dist/vendor/xlsx.full.min.js +24 -0
- package/dist/web-component.d.ts +383 -0
- package/dist/xlsx-import-cdn.d.ts +1 -0
- package/dist/xlsx-import.d.ts +2 -0
- package/package.json +88 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Command } from 'prosemirror-state';
|
|
2
|
+
import type { Node as PMNode } from 'prosemirror-model';
|
|
3
|
+
import type { Strings } from './i18n';
|
|
4
|
+
/** Создаёт узел таблицы rows×cols с шапкой в первой строке. */
|
|
5
|
+
export declare function createTable(rows: number, cols: number): PMNode;
|
|
6
|
+
export interface SlashItem {
|
|
7
|
+
titleKey: keyof Strings;
|
|
8
|
+
icon: string;
|
|
9
|
+
keywords: string[];
|
|
10
|
+
command: Command;
|
|
11
|
+
}
|
|
12
|
+
/** Пункты slash-меню (порядок = порядок показа). */
|
|
13
|
+
export declare const SLASH_ITEMS: SlashItem[];
|
|
14
|
+
/** Фильтр пунктов по запросу (название + ключевые слова). */
|
|
15
|
+
export declare function filterSlashItems(query: string, strings: Strings): SlashItem[];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Восстановление выравнивания абзацев при импорте .docx (w:jc).
|
|
3
|
+
*
|
|
4
|
+
* mammoth не переносит прямое форматирование абзаца, включая text-align —
|
|
5
|
+
* из-за этого правое выравнивание сумм/дат в ячейках таблиц (частый паттерн
|
|
6
|
+
* реальных инвойсов) и центрированные заголовки терялись. Схема редактора
|
|
7
|
+
* это выравнивание УЖЕ поддерживает (paragraph.attrs.align, см. schema.ts) —
|
|
8
|
+
* не хватало только источника данных на стороне docx-импорта. Тот же
|
|
9
|
+
* text-match паттерн, что docx-text-styles.ts использует для цвета/размера.
|
|
10
|
+
*/
|
|
11
|
+
/** Читает .docx и возвращает text-align по тексту абзацев. Безопасно к ошибкам. */
|
|
12
|
+
export declare function extractDocxAlignment(arrayBuffer: ArrayBuffer): Promise<Map<string, string>>;
|
|
13
|
+
/** Накладывает text-align на блоки mammoth-вывода по тексту абзаца. */
|
|
14
|
+
export declare function applyDocxAlignment(root: HTMLElement, alignment: Map<string, string>): void;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Разрывы страниц/секций при импорте .docx.
|
|
3
|
+
*
|
|
4
|
+
* mammoth теряет ручной разрыв страницы (Ctrl+Enter -> <w:br w:type="page"/>) и
|
|
5
|
+
* разрыв секции «с новой страницы» (<w:sectPr> внутри w:pPr). В многостраничных
|
|
6
|
+
* ЭДО это смысловая граница: «приложение — с новой страницы», «акт / протокол».
|
|
7
|
+
* Без неё две страницы сливаются в сплошной поток.
|
|
8
|
+
*
|
|
9
|
+
* В потоковом HTML-редакторе постраничности нет, поэтому НАМЕРЕННЫЙ разрыв
|
|
10
|
+
* показываем горизонтальной линией <hr class="koda-pagebreak"> (схема её знает —
|
|
11
|
+
* это кнопка «Горизонтальная линия»). Автопагинацию (w:lastRenderedPageBreak —
|
|
12
|
+
* лишь подсказка рендера) и continuous-секции НЕ трогаем: это не границы.
|
|
13
|
+
*
|
|
14
|
+
* Делается в два шага: (1) в document.xml на месте разрыва ставим текстовый
|
|
15
|
+
* сентинел ДО mammoth; (2) в готовом HTML сентинел -> <hr>, разрезая абзац
|
|
16
|
+
* через Range (корректно делит вложенное форматирование).
|
|
17
|
+
*/
|
|
18
|
+
/** Невидимый маркер (private-use) на месте разрыва — переживает mammoth как текст. */
|
|
19
|
+
export declare const PB_SENTINEL = "\uE000EUZPAGEBREAK\uE000";
|
|
20
|
+
/**
|
|
21
|
+
* Мутирует parsed document.xml: ручной page-break и параграф-уровневый sectPr
|
|
22
|
+
* «с новой страницы» -> текстовый сентинел. Возвращает true при изменении.
|
|
23
|
+
* Часть общего препроцессинга (один repack zip).
|
|
24
|
+
*/
|
|
25
|
+
export declare function replaceBreaksInDoc(doc: Document): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* В готовом HTML: сентинел -> <hr class="koda-pagebreak">. Абзац, содержащий
|
|
28
|
+
* сентинел, разрезается через Range (хвост с сохранением вложенного
|
|
29
|
+
* форматирования выносится в новый блок). Возвращает true при изменении.
|
|
30
|
+
*/
|
|
31
|
+
export declare function splitPageBreaks(root: HTMLElement): boolean;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Чекбоксы форм при импорте .docx (анкеты ЭДО: ☒ Согласен / ☐ ...).
|
|
3
|
+
*
|
|
4
|
+
* mammoth теряет состояние чекбоксов: и современных content-control
|
|
5
|
+
* (w14:checkbox), и legacy form-field (w:checkBox в w:ffData). Остаётся только
|
|
6
|
+
* текст метки — не видно, отмечено или нет. Здесь чекбоксы заменяются в
|
|
7
|
+
* document.xml на символ ☒ (отмечен) / ☐ (пустой) ДО mammoth, так состояние
|
|
8
|
+
* сохраняется как читаемый символ.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Мутирует parsed document.xml: чекбоксы -> ☒/☐. Возвращает true, если что-то
|
|
12
|
+
* заменено. Чистая DOM-операция (общий repack с формулами).
|
|
13
|
+
*/
|
|
14
|
+
export declare function replaceCheckboxesInDoc(doc: Document): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Разворачивает w:fldSimple: mammoth ИГНОРИРУЕТ содержимое простых полей (DATE,
|
|
17
|
+
* NUMPAGES, REF и т.п.), теряя кэшированное значение. Здесь дети fldSimple
|
|
18
|
+
* (последний вычисленный результат) выносятся наружу как обычные прогоны, и
|
|
19
|
+
* значение поля сохраняется как текст. Возвращает true, если что-то развёрнуто.
|
|
20
|
+
*/
|
|
21
|
+
export declare function unwrapSimpleFields(doc: Document): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Tab-лидеры (точечные/подчёркнутые линии заполнения — «Подпись.........» в
|
|
24
|
+
* формах ЭДО) mammoth теряет вместе с табом. Здесь tab-символ в абзаце с
|
|
25
|
+
* tab-стопом, у которого есть w:leader, заменяется на строку лид-символов —
|
|
26
|
+
* чтобы линия для подписи/заполнения осталась видимой. Возвращает true при замене.
|
|
27
|
+
*/
|
|
28
|
+
export declare function replaceTabLeadersInDoc(doc: Document): boolean;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Извлечение колонтитулов (шапка/футер) из .docx при импорте.
|
|
3
|
+
*
|
|
4
|
+
* mammoth берёт только тело документа и ИГНОРИРУЕТ колонтитулы. Для ЭДО это
|
|
5
|
+
* потеря: фирменный бланк, реквизиты организации, «УТВЕРЖДАЮ», номера страниц
|
|
6
|
+
* часто лежат именно в шапке/футере (word/header*.xml, word/footer*.xml).
|
|
7
|
+
*
|
|
8
|
+
* Здесь шапка/футер читаются прямо из zip и конвертируются в простой HTML
|
|
9
|
+
* (абзацы с выравниванием/жирным + таблицы), чтобы летерхед не пропал.
|
|
10
|
+
* Шапка ставится в НАЧАЛО документа, футер — в КОНЕЦ (один раз, т.к. в
|
|
11
|
+
* потоковом редакторе нет постраничного повтора).
|
|
12
|
+
*/
|
|
13
|
+
export interface DocxHeaderFooter {
|
|
14
|
+
header: string;
|
|
15
|
+
footer: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Читает .docx и возвращает HTML шапки и футера (самые «насыщенные» из
|
|
19
|
+
* нескольких, т.к. часто есть default/first/even — летерхед обычно в одном).
|
|
20
|
+
* Безопасно к ошибкам — при сбое отдаёт пустые строки.
|
|
21
|
+
*/
|
|
22
|
+
export declare function extractDocxHeaderFooter(arrayBuffer: ArrayBuffer): Promise<DocxHeaderFooter>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Извлечение картинок из .docx и вставка их в нужные ячейки таблиц.
|
|
3
|
+
*
|
|
4
|
+
* mammoth тащит только простые inline-картинки и теряет VML-фигуры (круглое
|
|
5
|
+
* фото в `v:oval`), плавающие рисунки и часть DrawingML. Для резюме/форм это
|
|
6
|
+
* критично — пропадает фото и логотипы. Здесь картинки достаются прямо из zip
|
|
7
|
+
* (`word/media/*`), сопоставляются с ячейками таблиц по позиции в OOXML и
|
|
8
|
+
* вставляются в соответствующие ячейки mammoth-вывода.
|
|
9
|
+
*/
|
|
10
|
+
/** Картинки по таблицам: cells[индекс ячейки row-major] = массив data-URI. */
|
|
11
|
+
export interface DocxTableImages {
|
|
12
|
+
cells: string[][];
|
|
13
|
+
}
|
|
14
|
+
/** Читает .docx и возвращает картинки по таблицам/ячейкам. Безопасно к ошибкам. */
|
|
15
|
+
export declare function extractDocxImages(arrayBuffer: ArrayBuffer): Promise<DocxTableImages[]>;
|
|
16
|
+
/** Вставляет извлечённые картинки в ячейки таблиц mammoth-вывода по позиции. */
|
|
17
|
+
export declare function applyDocxImages(root: HTMLElement, tables: DocxTableImages[]): void;
|
|
18
|
+
/**
|
|
19
|
+
* Размеры ОТОБРАЖЕНИЯ картинок, которые рендерит mammoth, в порядке документа.
|
|
20
|
+
* Источники (mammoth теряет размер — рисует в натуральную величину):
|
|
21
|
+
* - DrawingML инлайн: `<wp:inline>` → `<wp:extent cx cy>` (EMU);
|
|
22
|
+
* - VML-картинка: `<v:shape|rect|oval style="width:..pt;height:..pt">` c
|
|
23
|
+
* вложенным `<v:imagedata>` (pt). Чистые векторные фигуры (без imagedata,
|
|
24
|
+
* напр. блок-схемы) пропускаются — mammoth их всё равно не рендерит.
|
|
25
|
+
* Возвращает по элементу на каждый рисунок-картинку (null, если размера нет).
|
|
26
|
+
*/
|
|
27
|
+
export declare function extractInlineImageSizes(arrayBuffer: ArrayBuffer): Promise<({
|
|
28
|
+
w: number;
|
|
29
|
+
h: number;
|
|
30
|
+
} | null)[]>;
|
|
31
|
+
/**
|
|
32
|
+
* Проставляет размеры отображения на инлайн-картинки mammoth-вывода.
|
|
33
|
+
* Безопасно: применяет ТОЛЬКО когда число `<img>` совпадает с числом инлайн-
|
|
34
|
+
* рисунков (тогда соответствие 1:1 по порядку надёжно). Иначе — пропуск, чтобы
|
|
35
|
+
* не проставить чужой размер (mammoth мог потерять часть рисунков или это VML).
|
|
36
|
+
* Вызывать на сыром mammoth-выводе, ДО инъекции табличных картинок.
|
|
37
|
+
*/
|
|
38
|
+
export declare function applyInlineImageSizes(root: HTMLElement, sizes: ({
|
|
39
|
+
w: number;
|
|
40
|
+
h: number;
|
|
41
|
+
} | null)[]): void;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export interface DocxImportResult {
|
|
2
|
+
html: string;
|
|
3
|
+
warnings: string[];
|
|
4
|
+
}
|
|
5
|
+
export type DocxImportErrorCode = 'corrupt' | 'invalid' | 'parse';
|
|
6
|
+
/**
|
|
7
|
+
* Ошибка импорта с готовым к показу пользователю сообщением (поле
|
|
8
|
+
* `userMessage`) и машинным кодом причины. UI показывает `userMessage`,
|
|
9
|
+
* а не сырой текст исключения движка.
|
|
10
|
+
*/
|
|
11
|
+
export declare class DocxImportError extends Error {
|
|
12
|
+
readonly code: DocxImportErrorCode;
|
|
13
|
+
readonly userMessage: string;
|
|
14
|
+
constructor(code: DocxImportErrorCode, userMessage: string, cause?: unknown);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Классифицирует сырое исключение движка/zip-распаковщика в код причины и
|
|
18
|
+
* человекочитаемое сообщение (RU). Чистая функция — тестируется отдельно.
|
|
19
|
+
*/
|
|
20
|
+
export declare function classifyDocxError(message: string): {
|
|
21
|
+
code: DocxImportErrorCode;
|
|
22
|
+
userMessage: string;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Превращает голый текст (аварийный fallback, когда богатый разбор упал) в
|
|
26
|
+
* минимальный безопасный HTML: непустые строки -> абзацы, с экранированием.
|
|
27
|
+
* Чистая функция — тестируется отдельно.
|
|
28
|
+
*/
|
|
29
|
+
export declare function rawTextToHtml(text: string): string;
|
|
30
|
+
/**
|
|
31
|
+
* Конвертирует .docx (File или ArrayBuffer) в чистый HTML для редактора.
|
|
32
|
+
* Картинки приходят как data-URI (base64) и сохраняются в документе.
|
|
33
|
+
*
|
|
34
|
+
* Бросает {@link DocxImportError}, если файл невозможно открыть даже как текст.
|
|
35
|
+
*/
|
|
36
|
+
export declare function importDocxToHtml(source: File | ArrayBuffer): Promise<DocxImportResult>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OMML-формулы (Office Math) при импорте .docx.
|
|
3
|
+
*
|
|
4
|
+
* mammoth ПОЛНОСТЬЮ выкидывает математику (m:oMath) — формула пропадает без
|
|
5
|
+
* следа. Полноценный рендер (MathML) схема редактора не пропустит, поэтому
|
|
6
|
+
* здесь формула конвертируется в ЧИТАЕМЫЙ Unicode-текст (дроби, степени,
|
|
7
|
+
* индексы, корни, интегралы/суммы) и подставляется НА МЕСТО формулы прямо в
|
|
8
|
+
* document.xml ДО mammoth — так текст формулы встаёт в правильную позицию.
|
|
9
|
+
* Лучше «(a)/(b) + x²», чем пустота.
|
|
10
|
+
*/
|
|
11
|
+
/** oMath -> текст. */
|
|
12
|
+
export declare function omathToText(omath: Element): string;
|
|
13
|
+
/**
|
|
14
|
+
* Мутирует parsed document.xml: заменяет m:oMath/m:oMathPara на текстовые
|
|
15
|
+
* w:r-прогоны. Возвращает true, если что-то заменено. Чистая DOM-операция —
|
|
16
|
+
* чтобы препроцессинг (формулы + чекбоксы) делал ОДИН repack zip.
|
|
17
|
+
*/
|
|
18
|
+
export declare function replaceMathInDoc(doc: Document): boolean;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Дочерпывание табличных стилей из OOXML при импорте .docx.
|
|
3
|
+
*
|
|
4
|
+
* mammoth даёт чистую семантику, но осознанно игнорирует оформление:
|
|
5
|
+
* - ширины колонок (`w:tblGrid`),
|
|
6
|
+
* - заливку ячеек (`w:shd` на ячейке),
|
|
7
|
+
* - заливку из СТИЛЯ таблицы (`w:tblStyle` + conditional formatting: шапка,
|
|
8
|
+
* бандинг строк/колонок) — частый кейс встроенных стилей Word (Light Shading,
|
|
9
|
+
* Grid Table и т.п.) и форм ЭДО.
|
|
10
|
+
* Всё это читается прямо из zip и накладывается на таблицы mammoth-вывода
|
|
11
|
+
* (порядок таблиц и ячеек совпадает с документным).
|
|
12
|
+
*/
|
|
13
|
+
export interface DocxTableStyle {
|
|
14
|
+
/** Ширины колонок в px (из w:tblGrid, twips -> px). */
|
|
15
|
+
colWidths: number[];
|
|
16
|
+
/**
|
|
17
|
+
* Заливки ячеек ПО СТРОКАМ (на каждую отрисованную mammoth-строку — список
|
|
18
|
+
* заливок слева направо). vMerge-continue ячейки пропущены (mammoth их не
|
|
19
|
+
* рендерит). Раскладка по строкам локализует рассинхрон рамками строки.
|
|
20
|
+
*/
|
|
21
|
+
cellFills: (string | null)[][];
|
|
22
|
+
}
|
|
23
|
+
/** Парсит theme1.xml -> Map слот(dk1/lt1/accent1…) -> hex(6). */
|
|
24
|
+
export declare function parseThemeColors(xml: string): Map<string, string>;
|
|
25
|
+
interface CondFills {
|
|
26
|
+
whole: string | null;
|
|
27
|
+
firstRow: string | null;
|
|
28
|
+
lastRow: string | null;
|
|
29
|
+
firstCol: string | null;
|
|
30
|
+
lastCol: string | null;
|
|
31
|
+
band1Horz: string | null;
|
|
32
|
+
band2Horz: string | null;
|
|
33
|
+
band1Vert: string | null;
|
|
34
|
+
band2Vert: string | null;
|
|
35
|
+
rowBandSize: number;
|
|
36
|
+
colBandSize: number;
|
|
37
|
+
}
|
|
38
|
+
type StyleMap = Map<string, CondFills>;
|
|
39
|
+
/** Парсит word/styles.xml -> Map styleId -> CondFills (с разрешением basedOn). */
|
|
40
|
+
export declare function parseTableStyleDefs(stylesXml: string, theme: Map<string, string>): StyleMap;
|
|
41
|
+
/**
|
|
42
|
+
* Разбор таблиц из XML. styles/theme опциональны (тесты могут передать xml без
|
|
43
|
+
* стилей; тогда работает только явный w:shd).
|
|
44
|
+
*/
|
|
45
|
+
export declare function parseTablesFromXml(xml: string, styles?: StyleMap, theme?: Map<string, string>): DocxTableStyle[];
|
|
46
|
+
/** Читает .docx и возвращает стили таблиц по порядку. Безопасно к ошибкам. */
|
|
47
|
+
export declare function extractDocxTableStyles(arrayBuffer: ArrayBuffer): Promise<DocxTableStyle[]>;
|
|
48
|
+
/**
|
|
49
|
+
* Накладывает стили на таблицы mammoth-вывода: ширины колонок (через
|
|
50
|
+
* `<colgroup>` — дальше их подхватит normalizeTableWidths) и заливку ячеек.
|
|
51
|
+
*/
|
|
52
|
+
export declare function applyDocxTableStyles(root: HTMLElement, styles: DocxTableStyle[]): void;
|
|
53
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Символьные прогоны Wingdings/Symbol (w:sym) при импорте .docx.
|
|
3
|
+
*
|
|
4
|
+
* Старые формы ЭДО ставят чекбоксы и маркеры символьным шрифтом: не текст ☐, а
|
|
5
|
+
* <w:sym w:font="Wingdings" w:char="F0A8"/> — код глифа В ШРИФТЕ. Без самого
|
|
6
|
+
* шрифта Wingdings (а сайт его не грузит) mammoth выдаёт либо пусто, либо
|
|
7
|
+
* нестандартный глиф (🞎/🗹), не совпадающий с ☐/☒ из обычных чекбоксов форм.
|
|
8
|
+
*
|
|
9
|
+
* Здесь известные коды Wingdings/Symbol заменяются НА МЕСТЕ в document.xml на
|
|
10
|
+
* корректный Unicode ДО mammoth: пустой чекбокс -> ☐, отмеченный -> ☒/☑,
|
|
11
|
+
* телефон -> ☎, греческие буквы Symbol -> α/β/… Неизвестные коды не трогаем —
|
|
12
|
+
* пусть их обрабатывает mammoth, чтобы ничего не сломать.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Мутирует parsed document.xml: w:sym с известным шрифтом/кодом -> текстовый
|
|
16
|
+
* прогон w:r/w:t с Unicode-символом. Неизвестные оставляет нетронутыми.
|
|
17
|
+
* Возвращает true, если что-то заменено. Общий repack с формулами/чекбоксами.
|
|
18
|
+
*/
|
|
19
|
+
export declare function replaceSymbolsInDoc(doc: Document): boolean;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Восстановление оформления текста при импорте .docx (цвет и размер).
|
|
3
|
+
*
|
|
4
|
+
* mammoth маппит «Heading 1/2/3» и «Title» в <h1>/<h2>/<h3>, но выбрасывает
|
|
5
|
+
* цвет и кегль, заданные в именованных стилях (word/styles.xml). Из-за этого
|
|
6
|
+
* синие заголовки резюме (#548AB7) и крупное имя (48pt) теряются. Здесь цвет и
|
|
7
|
+
* размер вычисляются для каждого абзаца (прямой run-стиль > стиль абзаца) и
|
|
8
|
+
* накладываются на блоки mammoth по тексту.
|
|
9
|
+
*/
|
|
10
|
+
interface TextStyle {
|
|
11
|
+
color?: string;
|
|
12
|
+
size?: string;
|
|
13
|
+
}
|
|
14
|
+
/** Читает .docx и возвращает оформление по тексту абзацев. Безопасно к ошибкам. */
|
|
15
|
+
export declare function extractDocxTextStyles(arrayBuffer: ArrayBuffer): Promise<Map<string, TextStyle>>;
|
|
16
|
+
/** Накладывает цвет/размер на блоки mammoth-вывода по тексту. */
|
|
17
|
+
export declare function applyDocxTextStyles(root: HTMLElement, styles: Map<string, TextStyle>): void;
|
|
18
|
+
interface StyledRun {
|
|
19
|
+
text: string;
|
|
20
|
+
color: string | null;
|
|
21
|
+
size: string | null;
|
|
22
|
+
font: string | null;
|
|
23
|
+
background: string | null;
|
|
24
|
+
}
|
|
25
|
+
export declare function extractDocxRunColors(arrayBuffer: ArrayBuffer): Promise<Map<string, StyledRun[]>>;
|
|
26
|
+
export declare function applyDocxRunColors(root: HTMLElement, map: Map<string, StyledRun[]>): void;
|
|
27
|
+
export {};
|