@kodaeditor/core 1.0.0 → 1.0.2
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/dist/docx-import.d.ts +11 -11
- package/dist/editor.d.ts +109 -159
- package/dist/fallback.d.ts +7 -8
- package/dist/i18n.d.ts +15 -26
- package/dist/import-formats.d.ts +19 -17
- package/dist/index.d.ts +4 -4
- package/dist/kodaeditor-core.umd.cjs +1 -1
- package/dist/kodaeditor.js +1 -1
- package/dist/kodaeditor.umd.cjs +1 -1
- package/dist/license.d.ts +46 -50
- package/dist/schema.d.ts +7 -7
- package/dist/serialize.d.ts +11 -11
- package/dist/web-component.d.ts +80 -189
- package/package.json +4 -6
- package/dist/commands.d.ts +0 -15
- package/dist/docx-alignment.d.ts +0 -14
- package/dist/docx-breaks.d.ts +0 -31
- package/dist/docx-forms.d.ts +0 -28
- package/dist/docx-headers.d.ts +0 -22
- package/dist/docx-images.d.ts +0 -41
- package/dist/docx-math.d.ts +0 -18
- package/dist/docx-styles.d.ts +0 -53
- package/dist/docx-symbols.d.ts +0 -19
- package/dist/docx-text-styles.d.ts +0 -27
- package/dist/floatingToolbar.d.ts +0 -7
- package/dist/group-icons.d.ts +0 -17
- package/dist/icons.d.ts +0 -1
- package/dist/image-view.d.ts +0 -27
- package/dist/markdown.d.ts +0 -4
- package/dist/menubar.d.ts +0 -60
- package/dist/offline-license.d.ts +0 -36
- package/dist/pagination.d.ts +0 -11
- package/dist/paste.d.ts +0 -54
- package/dist/pdf-import-cdn.d.ts +0 -2
- package/dist/pdf-import.d.ts +0 -8
- package/dist/print.d.ts +0 -18
- package/dist/rtf-images.d.ts +0 -24
- package/dist/search.d.ts +0 -17
- package/dist/slashMenu.d.ts +0 -8
- package/dist/styles.d.ts +0 -8
- package/dist/table-split.d.ts +0 -26
- package/dist/table-view.d.ts +0 -34
- package/dist/tableColumnTrade.d.ts +0 -15
- package/dist/tableToolbar.d.ts +0 -14
- package/dist/toc-view.d.ts +0 -23
- package/dist/toolbar-editor.d.ts +0 -89
- package/dist/validate-signature.d.ts +0 -64
- package/dist/xlsx-import-cdn.d.ts +0 -1
- package/dist/xlsx-import.d.ts +0 -2
package/dist/table-split.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Word-подобное «Разделить ячейку»: делит ОДНУ ячейку на сетку N столбцов × M
|
|
3
|
-
* строк, не затрагивая остальные ячейки таблицы.
|
|
4
|
-
*
|
|
5
|
-
* prosemirror-tables даёт только `splitCell` (разъединяет ранее объединённую
|
|
6
|
-
* ячейку обратно в 1×1). Для деления обычной ячейки на произвольную сетку — как
|
|
7
|
-
* в Word по «Разделить ячейку → Столбцов/Строк» — мы:
|
|
8
|
-
* 1) вставляем столбцы/строки во ВСЮ таблицу (addColumn/addRow);
|
|
9
|
-
* 2) «сливаем обратно» новые ячейки во всех строках/столбцах ВНЕ области целевой
|
|
10
|
-
* ячейки, увеличивая colspan/rowspan соседа — так делится только она.
|
|
11
|
-
*
|
|
12
|
-
* Надёжность: каждое структурное изменение — ОТДЕЛЬНАЯ транзакция (view.dispatch).
|
|
13
|
-
* Хелперы prosemirror-tables ожидают координаты «шага 0» и маппят через tr.mapping;
|
|
14
|
-
* накапливать несколько структурных правок в одной транзакции нельзя — позиции
|
|
15
|
-
* разъезжаются. Таблицы малы, серия мелких диспатчей дёшева и предсказуема.
|
|
16
|
-
*
|
|
17
|
-
* Безопасность: только одиночная неслитая ячейка (1×1). Для уже объединённой
|
|
18
|
-
* ячейки и любой нештатной ситуации — return false: вызывающий код применит
|
|
19
|
-
* встроенный splitCell.
|
|
20
|
-
*/
|
|
21
|
-
import type { EditorView } from 'prosemirror-view';
|
|
22
|
-
/**
|
|
23
|
-
* Делит текущую ОДИНОЧНУЮ ячейку (1×1) на nCols × nRows.
|
|
24
|
-
* Возвращает false, если ячейка уже объединена или сценарий нештатный.
|
|
25
|
-
*/
|
|
26
|
-
export declare function splitCellInto(view: EditorView, nCols: number, nRows: number): boolean;
|
package/dist/table-view.d.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import type { Node as PMNode } from 'prosemirror-model';
|
|
2
|
-
import type { NodeView, ViewMutationRecord } from 'prosemirror-view';
|
|
3
|
-
/**
|
|
4
|
-
* Резиновый TableView для prosemirror-tables.
|
|
5
|
-
*
|
|
6
|
-
* Штатный TableView при фиксированных ширинах колонок пишет таблице
|
|
7
|
-
* `style.width = <сумма>px` и colgroup в пикселях. Из-за этого таблица,
|
|
8
|
-
* вставленная/импортированная из Word, не растягивалась на ширину листа и
|
|
9
|
-
* обрезалась справа (см. скриншоты сравнения с TinyMCE).
|
|
10
|
-
*
|
|
11
|
-
* Здесь colgroup строится в ПРОЦЕНТАХ (пропорции сохраняются), а таблица
|
|
12
|
-
* получает width:100% — она заполняет текстовую область листа, как в Word и
|
|
13
|
-
* как делает TinyMCE. data-colwidth (px) остаётся в модели для column-resize:
|
|
14
|
-
* во время перетаскивания библиотека временно рисует px, после отпускания
|
|
15
|
-
* update() возвращает проценты.
|
|
16
|
-
*/
|
|
17
|
-
export declare class ResponsiveTableView implements NodeView {
|
|
18
|
-
readonly dom: HTMLElement;
|
|
19
|
-
readonly table: HTMLTableElement;
|
|
20
|
-
readonly colgroup: HTMLElement;
|
|
21
|
-
readonly contentDOM: HTMLElement;
|
|
22
|
-
private node;
|
|
23
|
-
constructor(node: PMNode, defaultCellMinWidth: number);
|
|
24
|
-
update(node: PMNode): boolean;
|
|
25
|
-
/**
|
|
26
|
-
* Свойства таблицы (диалог «Свойства таблицы»): выравнивание (margin) и рамка
|
|
27
|
-
* применяются всегда; пользовательская ширина переопределяет авто-ширину
|
|
28
|
-
* responsive-логики (updateColumns вызывается ДО — поэтому width из tableStyle
|
|
29
|
-
* имеет приоритет). Снятие свойства возвращает responsive-поведение.
|
|
30
|
-
*/
|
|
31
|
-
private applyTableStyle;
|
|
32
|
-
ignoreMutation(record: ViewMutationRecord): boolean;
|
|
33
|
-
private updateColumns;
|
|
34
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* «Обмен с соседом» при ресайзе колонки таблицы.
|
|
3
|
-
*
|
|
4
|
-
* Таблицы у нас резиновые (width:100%), ширины колонок — доли от суммы. Штатный
|
|
5
|
-
* ресайз prosemirror-tables меняет ширину ТОЛЬКО перетаскиваемой колонки, из-за
|
|
6
|
-
* чего сумма меняется, и при пересчёте долей «едут» ВСЕ колонки (жалоба заказчика
|
|
7
|
-
* «меняешь одно — другое непредсказуемо»).
|
|
8
|
-
*
|
|
9
|
-
* Здесь после ресайза соседняя колонка компенсируется на ту же дельту — СУММА
|
|
10
|
-
* остаётся постоянной. Тогда резина сохраняется (таблица на 100%), но двигаются
|
|
11
|
-
* только перетаскиваемая колонка и её сосед, как в Word. Работает ТОЛЬКО в момент
|
|
12
|
-
* завершения ресайза (по состоянию columnResizing), поэтому обычный ввод не грузит.
|
|
13
|
-
*/
|
|
14
|
-
import { Plugin } from 'prosemirror-state';
|
|
15
|
-
export declare function tableColumnTradePlugin(): Plugin;
|
package/dist/tableToolbar.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Контекстная панель таблицы (Google Docs / Notion UX): когда курсор внутри
|
|
3
|
-
* таблицы — над ней всплывает мини-панель с операциями (строки/колонки,
|
|
4
|
-
* объединение/разделение, удаление таблицы). Действия «на месте», а не теряются
|
|
5
|
-
* в общем тулбаре. Вне таблицы панель скрыта.
|
|
6
|
-
*/
|
|
7
|
-
import { Plugin } from 'prosemirror-state';
|
|
8
|
-
import type { Strings } from './i18n';
|
|
9
|
-
/** Колбэки, чтобы split/merge открывали диалог/подсказку вместо «голой» команды. */
|
|
10
|
-
export interface TableToolbarCallbacks {
|
|
11
|
-
onSplitCell?: () => void;
|
|
12
|
-
onMergeCells?: () => void;
|
|
13
|
-
}
|
|
14
|
-
export declare function tableToolbarPlugin(strings: Strings, callbacks?: TableToolbarCallbacks): Plugin;
|
package/dist/toc-view.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* NodeView оглавления: наполняется динамически из заголовков документа.
|
|
3
|
-
* Сам toc-узел — atom (без редактируемого содержимого); список строится по
|
|
4
|
-
* h1–h6. Перерисовывается при изменении документа (Editor зовёт refresh() из
|
|
5
|
-
* dispatchTransaction). Клик по пункту прокручивает к заголовку.
|
|
6
|
-
*/
|
|
7
|
-
import type { NodeView } from 'prosemirror-view';
|
|
8
|
-
import type { EditorView } from 'prosemirror-view';
|
|
9
|
-
import type { Node as PMNode } from 'prosemirror-model';
|
|
10
|
-
export declare class TocView implements NodeView {
|
|
11
|
-
readonly dom: HTMLElement;
|
|
12
|
-
private node;
|
|
13
|
-
private view;
|
|
14
|
-
private title;
|
|
15
|
-
private registry;
|
|
16
|
-
constructor(node: PMNode, view: EditorView, title: string, registry: Set<TocView>);
|
|
17
|
-
refresh(): void;
|
|
18
|
-
private render;
|
|
19
|
-
private scrollTo;
|
|
20
|
-
update(node: PMNode): boolean;
|
|
21
|
-
ignoreMutation(): boolean;
|
|
22
|
-
destroy(): void;
|
|
23
|
-
}
|
package/dist/toolbar-editor.d.ts
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Редактор панели «карандаш» - настройка тулбара прямо на месте, без диалога:
|
|
3
|
-
* - drag-and-drop: кнопки перетаскиваются по панели и из палитры снизу;
|
|
4
|
-
* - × убирает кнопку (она возвращается в палитру доступных);
|
|
5
|
-
* - группы: кнопка-группа с обложкой+названием и вложенными кнопками, можно
|
|
6
|
-
* группировать/разгруппировать, перетаскивать кнопки в группу и из неё;
|
|
7
|
-
* - обложка группы: иконка из пакета панели / emoji / загруженное изображение.
|
|
8
|
-
*
|
|
9
|
-
* Во время редактирования источник правды - DOM (chips в контейнерах). При
|
|
10
|
-
* «Готово» раскладка считывается из DOM и сохраняется хостом.
|
|
11
|
-
*/
|
|
12
|
-
import type { Strings } from './i18n';
|
|
13
|
-
import { type GroupIconKind } from './group-icons';
|
|
14
|
-
/** Группа панели: обложка + название + вложенные кнопки (один уровень). */
|
|
15
|
-
export interface GroupSpec {
|
|
16
|
-
type: 'group';
|
|
17
|
-
icon: string;
|
|
18
|
-
iconKind: GroupIconKind;
|
|
19
|
-
label: string;
|
|
20
|
-
items: string[];
|
|
21
|
-
}
|
|
22
|
-
/** Запись раскладки: токен кнопки/разделителя ('|') или группа. */
|
|
23
|
-
export type LayoutEntry = string | GroupSpec;
|
|
24
|
-
export declare function isGroupSpec(e: unknown): e is GroupSpec;
|
|
25
|
-
/** Что редактору нужно от хоста (web-component), чтобы не зависеть от него напрямую. */
|
|
26
|
-
export interface ToolbarEditorHost {
|
|
27
|
-
shell: HTMLElement;
|
|
28
|
-
toolbar: HTMLElement;
|
|
29
|
-
strings: Strings;
|
|
30
|
-
currentEntries(): LayoutEntry[];
|
|
31
|
-
allTokens(): string[];
|
|
32
|
-
tokenLabel(token: string): string;
|
|
33
|
-
tokenIcon(token: string): string;
|
|
34
|
-
save(entries: LayoutEntry[]): void;
|
|
35
|
-
reset(): void;
|
|
36
|
-
}
|
|
37
|
-
export declare class ToolbarEditor {
|
|
38
|
-
private host;
|
|
39
|
-
private active;
|
|
40
|
-
private overlay?;
|
|
41
|
-
private editRow?;
|
|
42
|
-
private palette?;
|
|
43
|
-
private drag?;
|
|
44
|
-
private onMove;
|
|
45
|
-
private onUp;
|
|
46
|
-
private onKey;
|
|
47
|
-
constructor(host: ToolbarEditorHost);
|
|
48
|
-
isActive(): boolean;
|
|
49
|
-
open(): void;
|
|
50
|
-
/** Сброс к дефолтной раскладке: чистим сохранённую + перерисовываем чипы. */
|
|
51
|
-
private resetLayout;
|
|
52
|
-
private done;
|
|
53
|
-
/**
|
|
54
|
-
* Принудительно закрыть снаружи: вызывается при отключении редактора от
|
|
55
|
-
* DOM. Без этого открытая палитра оставляла на document слушатель keydown,
|
|
56
|
-
* который держал в памяти весь отсоединённый редактор.
|
|
57
|
-
*/
|
|
58
|
-
destroy(): void;
|
|
59
|
-
private close;
|
|
60
|
-
private readback;
|
|
61
|
-
private readGroupChip;
|
|
62
|
-
private buildEntryChip;
|
|
63
|
-
/** Перетаскиваемая «фишка» обычной кнопки/разделителя. */
|
|
64
|
-
private buildTokenChip;
|
|
65
|
-
/** Капсула группы в режиме редактирования: обложка, название, вложенные chips, controls. */
|
|
66
|
-
private buildGroupChip;
|
|
67
|
-
private addRemoveBtn;
|
|
68
|
-
private createGroup;
|
|
69
|
-
private ungroup;
|
|
70
|
-
private editGroup;
|
|
71
|
-
private refreshPalette;
|
|
72
|
-
private buildPaletteChip;
|
|
73
|
-
private addToken;
|
|
74
|
-
private makeDraggable;
|
|
75
|
-
private startDrag;
|
|
76
|
-
private positionGhost;
|
|
77
|
-
private handleMove;
|
|
78
|
-
/** Ближайшая фишка-сосед в зоне, перед которой вставлять (по X-середине). */
|
|
79
|
-
private nearestChip;
|
|
80
|
-
private handleUp;
|
|
81
|
-
private endDrag;
|
|
82
|
-
private cancelDrag;
|
|
83
|
-
private openIconPicker;
|
|
84
|
-
private iconCell;
|
|
85
|
-
/** Файл → нормализованный data-URL (контейн 64×64 PNG), чтобы не раздувать localStorage. */
|
|
86
|
-
private fileToIcon;
|
|
87
|
-
private actionBtn;
|
|
88
|
-
private esc;
|
|
89
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Проверка подписи ответа license-сервера.
|
|
3
|
-
*
|
|
4
|
-
* Зачем. Ветка «лицензия подтверждена по кэшу» опирается на localStorage, то
|
|
5
|
-
* есть на данные, которые клиент пишет сам. Без подписи обход выглядит так:
|
|
6
|
-
* закрыть наш домен в hosts, положить одну запись в localStorage - и выгрузки
|
|
7
|
-
* чистые навсегда. Существенно, что это ЛЕГЧЕ, чем снять пометку из кода:
|
|
8
|
-
* патчить бандл умеет разработчик, подделать localStorage - любой по
|
|
9
|
-
* инструкции. Подписанный ответ поднимает цену подделки до обладания нашим
|
|
10
|
-
* приватным ключом.
|
|
11
|
-
*
|
|
12
|
-
* Пара для этих подписей ОТДЕЛЬНАЯ, не та, которой подписываются офлайн-
|
|
13
|
-
* лицензии. Причина несимметричности ущерба: приватный ключ офлайн-пары
|
|
14
|
-
* сознательно не лежит на боевом сервере (см. .env.example license-сервера),
|
|
15
|
-
* потому что его кража позволяет печатать бессрочные лицензии на любой домен,
|
|
16
|
-
* а отозвать их нечем - офлайн-лицензии к нам не обращаются никогда. Ключ для
|
|
17
|
-
* подписи ответов, наоборот, обязан лежать на сервере, смотрящем в интернет;
|
|
18
|
-
* его компрометация стоит ровно перевыпуска пары и обновления константы.
|
|
19
|
-
*
|
|
20
|
-
* Формат: ECDSA P-256 / SHA-256, подпись raw IEEE-P1363 (r||s, 64 байта) в
|
|
21
|
-
* base64url - то, что принимает Web Crypto. Node подписывает в DER по
|
|
22
|
-
* умолчанию, поэтому серверу нужен { dsaEncoding: 'ieee-p1363' }.
|
|
23
|
-
*/
|
|
24
|
-
/**
|
|
25
|
-
* Публичная половина пары, которой license-сервер подписывает ответы /validate.
|
|
26
|
-
* Не секрет по своей природе: нужна только для проверки подписи, не для её
|
|
27
|
-
* создания. Приватная лежит на сервере лицензий в отдельном каталоге, НЕ рядом
|
|
28
|
-
* с keys.json - скрипт бэкапа архивирует весь каталог данных и отправляет в
|
|
29
|
-
* Telegram, так что ключ по соседству уехал бы в мессенджер первым же ночным
|
|
30
|
-
* бэкапом.
|
|
31
|
-
*/
|
|
32
|
-
export declare const VALIDATE_PUBLIC_KEY_SPKI_B64: string;
|
|
33
|
-
/** Ответ /validate в подписанном виде. */
|
|
34
|
-
export interface SignedAnswer {
|
|
35
|
-
valid: boolean;
|
|
36
|
-
plugins: string[];
|
|
37
|
-
/** Момент подписи на сервере, unix-секунды. Подделать нельзя - он под подписью. */
|
|
38
|
-
at: number;
|
|
39
|
-
/** base64url, raw IEEE-P1363. */
|
|
40
|
-
sig: string;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Каноническая строка, над которой считается подпись.
|
|
44
|
-
*
|
|
45
|
-
* Плагины сортируются: порядок приходит из хранилища сервера и может
|
|
46
|
-
* измениться при любой его правке, а несовпадение порядка ломало бы подпись
|
|
47
|
-
* только у клиентов с двумя и более плагинами - дефект плавающий и
|
|
48
|
-
* мучительный в отладке.
|
|
49
|
-
*
|
|
50
|
-
* Разделитель `|` безопасен: его нет ни в ключе (там A-Z, 0-9 и дефис), ни в
|
|
51
|
-
* домене, ни в именах плагинов. Иначе подпись можно было бы переклеить между
|
|
52
|
-
* полями, сдвинув границу.
|
|
53
|
-
*/
|
|
54
|
-
export declare function canonicalAnswer(key: string, domain: string, valid: boolean, plugins: string[], at: number): string;
|
|
55
|
-
/**
|
|
56
|
-
* Проверяет подпись ответа сервера. Никогда не бросает: любая проблема -
|
|
57
|
-
* битая base64, чужая подпись, отсутствующее поле - это `false`.
|
|
58
|
-
*
|
|
59
|
-
* Мягкого режима нет намеренно: если принимать ответы без подписи, обход
|
|
60
|
-
* сводится к тому, чтобы отдать ответ без неё, и вся защита исчезает. Из
|
|
61
|
-
* этого следует порядок выката - сервер начинает подписывать РАНЬШЕ, чем
|
|
62
|
-
* выходит ядро с этой проверкой.
|
|
63
|
-
*/
|
|
64
|
-
export declare function verifyAnswerSignature(publicKeySpkiB64: string, answer: SignedAnswer, key: string, domain: string): Promise<boolean>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function xlsxToHtml(data: ArrayBuffer): Promise<string>;
|
package/dist/xlsx-import.d.ts
DELETED