@olddevs/ui 4.3.0 → 4.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/CHANGELOG.md +36 -0
- package/dist/editor/RichTextEditor.d.ts +11 -4
- package/dist/editor/RichTextEditor.d.ts.map +1 -1
- package/dist/editor/RichTextEditor.js +124 -60
- package/dist/editor/RichTextEditor.js.map +1 -1
- package/dist/editor/RichTextView.d.ts +2 -1
- package/dist/editor/RichTextView.d.ts.map +1 -1
- package/dist/editor/RichTextView.js.map +1 -1
- package/dist/editor/core/containers.d.ts +2 -6
- package/dist/editor/core/containers.d.ts.map +1 -1
- package/dist/editor/core/containers.js +2 -1
- package/dist/editor/core/containers.js.map +1 -1
- package/dist/editor/core/customTool.d.ts +8 -2
- package/dist/editor/core/customTool.d.ts.map +1 -1
- package/dist/editor/core/customTool.js.map +1 -1
- package/dist/editor/core/customToolEngine.d.ts +9 -1
- package/dist/editor/core/customToolEngine.d.ts.map +1 -1
- package/dist/editor/core/customToolEngine.js +12 -0
- package/dist/editor/core/customToolEngine.js.map +1 -1
- package/dist/editor/core/extensions.d.ts.map +1 -1
- package/dist/editor/core/extensions.js +1 -1
- package/dist/editor/core/extensions.js.map +1 -1
- package/dist/editor/core/handle.d.ts +18 -5
- package/dist/editor/core/handle.d.ts.map +1 -1
- package/dist/editor/core/handle.js +2 -13
- package/dist/editor/core/handle.js.map +1 -1
- package/dist/editor/core/handleWatchers.d.ts +36 -0
- package/dist/editor/core/handleWatchers.d.ts.map +1 -0
- package/dist/editor/core/handleWatchers.js +29 -0
- package/dist/editor/core/handleWatchers.js.map +1 -0
- package/dist/editor/core/nodeNames.d.ts +7 -0
- package/dist/editor/core/nodeNames.d.ts.map +1 -0
- package/dist/editor/core/nodeNames.js +2 -0
- package/dist/editor/core/nodeNames.js.map +1 -0
- package/dist/editor/core/schema.d.ts.map +1 -1
- package/dist/editor/core/schema.js +4 -2
- package/dist/editor/core/schema.js.map +1 -1
- package/dist/editor/core/toolCommands.d.ts +78 -0
- package/dist/editor/core/toolCommands.d.ts.map +1 -0
- package/dist/editor/core/toolCommands.js +2 -0
- package/dist/editor/core/toolCommands.js.map +1 -0
- package/dist/editor/core/toolDefinition.d.ts +139 -0
- package/dist/editor/core/toolDefinition.d.ts.map +1 -0
- package/dist/editor/core/toolDefinition.js +28 -0
- package/dist/editor/core/toolDefinition.js.map +1 -0
- package/dist/editor/core/toolDescriptor.d.ts +71 -2
- package/dist/editor/core/toolDescriptor.d.ts.map +1 -1
- package/dist/editor/core/toolDescriptor.js +6 -2
- package/dist/editor/core/toolDescriptor.js.map +1 -1
- package/dist/editor/core/toolOptions.d.ts +157 -0
- package/dist/editor/core/toolOptions.d.ts.map +1 -0
- package/dist/editor/core/toolOptions.js +21 -0
- package/dist/editor/core/toolOptions.js.map +1 -0
- package/dist/editor/core/toolState.d.ts +46 -0
- package/dist/editor/core/toolState.d.ts.map +1 -0
- package/dist/editor/core/toolState.js +2 -0
- package/dist/editor/core/toolState.js.map +1 -0
- package/dist/editor/core/tools.d.ts +10 -3
- package/dist/editor/core/tools.d.ts.map +1 -1
- package/dist/editor/core/tools.js +2 -1
- package/dist/editor/core/tools.js.map +1 -1
- package/dist/editor/core/viewIsland.d.ts.map +1 -1
- package/dist/editor/core/viewIsland.js +2 -1
- package/dist/editor/core/viewIsland.js.map +1 -1
- package/dist/editor/features/builtins.d.ts +9 -4
- package/dist/editor/features/builtins.d.ts.map +1 -1
- package/dist/editor/features/builtins.js +36 -7
- package/dist/editor/features/builtins.js.map +1 -1
- package/dist/editor/features/search/SearchPanel.d.ts.map +1 -1
- package/dist/editor/features/search/SearchPanel.js +26 -12
- package/dist/editor/features/search/SearchPanel.js.map +1 -1
- package/dist/editor/features/search/revealMatch.d.ts +16 -0
- package/dist/editor/features/search/revealMatch.d.ts.map +1 -1
- package/dist/editor/features/search/revealMatch.js +22 -0
- package/dist/editor/features/search/revealMatch.js.map +1 -1
- package/dist/editor/features/search/searchPlugin.d.ts +8 -3
- package/dist/editor/features/search/searchPlugin.d.ts.map +1 -1
- package/dist/editor/features/search/searchPlugin.js +17 -6
- package/dist/editor/features/search/searchPlugin.js.map +1 -1
- package/dist/editor/features/search/searchSnapshot.d.ts +14 -0
- package/dist/editor/features/search/searchSnapshot.d.ts.map +1 -0
- package/dist/editor/features/search/searchSnapshot.js +17 -0
- package/dist/editor/features/search/searchSnapshot.js.map +1 -0
- package/dist/editor/features/search/searchTool.d.ts +3 -0
- package/dist/editor/features/search/searchTool.d.ts.map +1 -1
- package/dist/editor/features/search/searchTool.js +30 -1
- package/dist/editor/features/search/searchTool.js.map +1 -1
- package/dist/editor/features/toc/RichTextToc.d.ts +91 -0
- package/dist/editor/features/toc/RichTextToc.d.ts.map +1 -0
- package/dist/editor/features/toc/RichTextToc.js +417 -0
- package/dist/editor/features/toc/RichTextToc.js.map +1 -0
- package/dist/editor/features/toc/documentHeadings.d.ts +30 -0
- package/dist/editor/features/toc/documentHeadings.d.ts.map +1 -0
- package/dist/editor/features/toc/documentHeadings.js +20 -0
- package/dist/editor/features/toc/documentHeadings.js.map +1 -0
- package/dist/editor/features/toc/headings.d.ts +35 -0
- package/dist/editor/features/toc/headings.d.ts.map +1 -0
- package/dist/editor/features/toc/headings.js +27 -0
- package/dist/editor/features/toc/headings.js.map +1 -0
- package/dist/editor/features/toc/stickyOffset.d.ts +3 -0
- package/dist/editor/features/toc/stickyOffset.d.ts.map +1 -0
- package/dist/editor/features/toc/stickyOffset.js +14 -0
- package/dist/editor/features/toc/stickyOffset.js.map +1 -0
- package/dist/editor/features/toc/tocSnapshot.d.ts +10 -0
- package/dist/editor/features/toc/tocSnapshot.d.ts.map +1 -0
- package/dist/editor/features/toc/tocSnapshot.js +8 -0
- package/dist/editor/features/toc/tocSnapshot.js.map +1 -0
- package/dist/editor/features/toc/tocTool.d.ts +6 -0
- package/dist/editor/features/toc/tocTool.d.ts.map +1 -0
- package/dist/editor/features/toc/tocTool.js +21 -0
- package/dist/editor/features/toc/tocTool.js.map +1 -0
- package/dist/editor/hooks/useRichTextToolState.d.ts +43 -0
- package/dist/editor/hooks/useRichTextToolState.d.ts.map +1 -0
- package/dist/editor/hooks/useRichTextToolState.js +77 -0
- package/dist/editor/hooks/useRichTextToolState.js.map +1 -0
- package/dist/editor/index.d.ts +10 -0
- package/dist/editor/index.d.ts.map +1 -1
- package/dist/editor/index.js +4 -0
- package/dist/editor/index.js.map +1 -1
- package/dist/i18n/defaults.d.ts.map +1 -1
- package/dist/i18n/defaults.js +1 -0
- package/dist/i18n/defaults.js.map +1 -1
- package/dist/i18n/messages.d.ts +5 -0
- package/dist/i18n/messages.d.ts.map +1 -1
- package/dist/locales/ru.d.ts.map +1 -1
- package/dist/locales/ru.js +1 -0
- package/dist/locales/ru.js.map +1 -1
- package/docs/api/editor-extension.en.md +223 -23
- package/docs/api/editor-extension.md +224 -22
- package/docs/api/messages.en.md +743 -0
- package/docs/api/messages.md +1 -0
- package/docs/api/migration-notes.en.md +36 -1
- package/docs/api/migration-notes.md +35 -0
- package/docs/api/utilities.en.md +233 -0
- package/docs/components/content/rich-text-toc.en.md +132 -0
- package/docs/components/content/rich-text-toc.md +131 -0
- package/docs/components/index.en.md +3 -2
- package/docs/components/index.md +2 -1
- package/docs/components/inputs/rich-text-editor.en.md +277 -43
- package/docs/components/inputs/rich-text-editor.md +247 -11
- package/docs/conventions.en.md +318 -0
- package/docs/getting-started.en.md +7 -7
- package/docs/getting-started.md +6 -6
- package/docs/glossary.en.md +52 -47
- package/docs/glossary.md +51 -46
- package/docs/index.en.md +53 -0
- package/llms.txt +1 -0
- package/package.json +1 -1
- package/src/editor/RichTextEditor.tsx +197 -38
- package/src/editor/RichTextView.tsx +2 -1
- package/src/editor/core/containers.ts +8 -6
- package/src/editor/core/customTool.ts +8 -2
- package/src/editor/core/customToolEngine.ts +20 -1
- package/src/editor/core/extensions.ts +2 -1
- package/src/editor/core/handle.ts +26 -23
- package/src/editor/core/handleWatchers.ts +72 -0
- package/src/editor/core/nodeNames.ts +7 -0
- package/src/editor/core/schema.ts +5 -2
- package/src/editor/core/toolCommands.ts +85 -0
- package/src/editor/core/toolDefinition.ts +208 -0
- package/src/editor/core/toolDescriptor.ts +94 -3
- package/src/editor/core/toolOptions.ts +211 -0
- package/src/editor/core/toolState.ts +56 -0
- package/src/editor/core/tools.ts +12 -3
- package/src/editor/core/viewIsland.ts +5 -4
- package/src/editor/features/builtins.ts +72 -13
- package/src/editor/features/search/SearchPanel.tsx +38 -14
- package/src/editor/features/search/revealMatch.ts +45 -0
- package/src/editor/features/search/searchPlugin.ts +40 -11
- package/src/editor/features/search/searchSnapshot.ts +29 -0
- package/src/editor/features/search/searchTool.ts +51 -1
- package/src/editor/features/toc/RichTextToc.tsx +810 -0
- package/src/editor/features/toc/documentHeadings.ts +59 -0
- package/src/editor/features/toc/headings.ts +77 -0
- package/src/editor/features/toc/stickyOffset.ts +21 -0
- package/src/editor/features/toc/tocSnapshot.ts +24 -0
- package/src/editor/features/toc/tocTool.ts +41 -0
- package/src/editor/hooks/useRichTextToolState.ts +153 -0
- package/src/editor/index.ts +21 -0
- package/src/i18n/defaults.ts +1 -0
- package/src/i18n/messages.ts +5 -0
- package/src/locales/ru.ts +1 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import type { PrefixedName } from "./customTool.js";
|
|
2
|
+
import type { ToolDefinition } from "./toolDefinition.js";
|
|
3
|
+
import type { SearchToolState, TocToolState } from "./toolState.js";
|
|
4
|
+
import type { SearchToolCommands, TocToolCommands } from "./toolCommands.js";
|
|
5
|
+
import type { Tool as ToolName } from "./tools.js";
|
|
6
|
+
/**
|
|
7
|
+
* Уровень заголовка в опциях Оглавления: 1 — `h1` … 4 — `h4`. Выше четвёртого
|
|
8
|
+
* Схема кита заголовков не знает.
|
|
9
|
+
*/
|
|
10
|
+
export type TocLevel = 1 | 2 | 3 | 4;
|
|
11
|
+
/**
|
|
12
|
+
* Опции Инструмента `search` (все значения — со стартовыми умолчаниями кита).
|
|
13
|
+
* Это стартовые флажки поиска вообще, а не только панели: запрос, который
|
|
14
|
+
* задаёт Команда `setQuery`, берёт не названные в ней флажки отсюда, пока
|
|
15
|
+
* поиск не закрыт (`close()`, Escape в панели).
|
|
16
|
+
*/
|
|
17
|
+
export interface SearchToolOptions {
|
|
18
|
+
/**
|
|
19
|
+
* Панель открывается с включённым флажком «Регистр». Флажок остаётся
|
|
20
|
+
* переключаемым; кит не запоминает его между открытиями. По умолчанию `false`.
|
|
21
|
+
*/
|
|
22
|
+
matchCase: boolean;
|
|
23
|
+
/** Панель открывается с включённым флажком «Слово целиком». По умолчанию `false`. */
|
|
24
|
+
wholeWord: boolean;
|
|
25
|
+
/** Панель открывается с включённым переключателем «Регулярное выражение». По умолчанию `false`. */
|
|
26
|
+
regex: boolean;
|
|
27
|
+
}
|
|
28
|
+
/** Опции Инструмента `toc` (ADR-0068). */
|
|
29
|
+
export interface TocToolOptions {
|
|
30
|
+
/**
|
|
31
|
+
* Имя CSS-переменной с высотой липкой шапки экрана (ADR-0016): переход к
|
|
32
|
+
* заголовку ставит его под шапку, а подсветка считает раздел текущим от её
|
|
33
|
+
* нижнего края. Значение — имя переменной целиком, с двумя дефисами:
|
|
34
|
+
* `--header-h`. Липкую Панель Редактора это не двигает: она по-прежнему
|
|
35
|
+
* стоит под `--topbar-h`. По умолчанию `--topbar-h`.
|
|
36
|
+
*/
|
|
37
|
+
offsetVar: string;
|
|
38
|
+
/**
|
|
39
|
+
* Уровни заголовков, которые попадают в Оглавление: подмножество 1–4. Заголовка
|
|
40
|
+
* другого уровня нет ни в полосе, ни в списке, и отступ пунктов считается
|
|
41
|
+
* от самого крупного из оставшихся. По умолчанию все четыре.
|
|
42
|
+
*/
|
|
43
|
+
levels: readonly TocLevel[];
|
|
44
|
+
/**
|
|
45
|
+
* Ширина списка — длина CSS или пиксели. Постоянная, а не по самому длинному
|
|
46
|
+
* заголовку. По умолчанию 240.
|
|
47
|
+
*/
|
|
48
|
+
listWidth: number | string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Типы Инструментов Редактора по имени: что экран задаёт при настройке (`options`),
|
|
52
|
+
* что читает (`state`) и что вызывает (`commands`). Расширяемый интерфейс, как
|
|
53
|
+
* `Storage` и `Commands` у Tiptap: кит объявляет в нём `search` и `toc`, а
|
|
54
|
+
* потребитель дописывает свои Инструменты через declaration merging:
|
|
55
|
+
*
|
|
56
|
+
* ```ts
|
|
57
|
+
* declare module "@olddevs/ui/editor" {
|
|
58
|
+
* interface RichTextTools {
|
|
59
|
+
* acme_note: {
|
|
60
|
+
* options: { tone: "info" | "warning" };
|
|
61
|
+
* state: { count: number };
|
|
62
|
+
* commands: { clear(): boolean };
|
|
63
|
+
* };
|
|
64
|
+
* }
|
|
65
|
+
* }
|
|
66
|
+
* ```
|
|
67
|
+
*
|
|
68
|
+
* Из карты выводятся типы `useRichTextToolState`, `handle.tool()` и Опции `tool()`
|
|
69
|
+
* встроенного; Опции своего Инструмента `tool()` берёт из `defaults` его определения.
|
|
70
|
+
* Инструмент, не дописанный в карту, работает: типизация добровольна.
|
|
71
|
+
*/
|
|
72
|
+
export interface RichTextTools {
|
|
73
|
+
search: {
|
|
74
|
+
options: SearchToolOptions;
|
|
75
|
+
state: SearchToolState;
|
|
76
|
+
commands: SearchToolCommands;
|
|
77
|
+
};
|
|
78
|
+
toc: {
|
|
79
|
+
options: TocToolOptions;
|
|
80
|
+
state: TocToolState;
|
|
81
|
+
commands: TocToolCommands;
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Имена встроенных Инструментов, у которых есть опции: ключи карты, совпадающие
|
|
86
|
+
* с именами кита. Свой Инструмент, дописанный в карту, сюда не попадает —
|
|
87
|
+
* настраивается по определению, а не по имени.
|
|
88
|
+
*/
|
|
89
|
+
export type ConfigurableToolName = keyof RichTextTools & ToolName;
|
|
90
|
+
/** Опции Инструмента из карты; нет карты или `options` — `never`. */
|
|
91
|
+
type OptionsOf<Name extends ConfigurableToolName> = RichTextTools[Name] extends {
|
|
92
|
+
options: infer Options;
|
|
93
|
+
} ? Options : never;
|
|
94
|
+
/**
|
|
95
|
+
* Опции, которые экран передаёт `tool()`: каждое поле необязательно, остальное
|
|
96
|
+
* берётся из умолчаний. Вложенные объекты вкладываются так же, а массивы и
|
|
97
|
+
* функции — значение целиком (правило слияния, `mergeOptions`).
|
|
98
|
+
*/
|
|
99
|
+
export type ToolOptionsInput<Options> = {
|
|
100
|
+
[Key in keyof Options]?: Options[Key] extends readonly unknown[] | ((...args: never[]) => unknown) ? Options[Key] : Options[Key] extends object ? ToolOptionsInput<Options[Key]> : Options[Key];
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Настроенный Инструмент: запись для `tools`, которую возвращает `tool()`.
|
|
104
|
+
* Непрозрачная — поля читает только кит. У встроенного это имя и опции, а не
|
|
105
|
+
* описание: описания встроенных наружу не выходят (ADR-0058, п. 10.3). У своего
|
|
106
|
+
* Инструмента добавляется определение, которое `tool()` настраивает.
|
|
107
|
+
*/
|
|
108
|
+
export interface ConfiguredTool<Name extends string = ToolName> {
|
|
109
|
+
/** Метка записи: по ней `tools` отличает Настроенный Инструмент от своего. */
|
|
110
|
+
readonly configured: true;
|
|
111
|
+
readonly name: Name;
|
|
112
|
+
readonly options: Readonly<Record<string, unknown>>;
|
|
113
|
+
/** Определение своего Инструмента (`defineTool`); у встроенного его нет. */
|
|
114
|
+
readonly definition?: ToolDefinition;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Слить Опции: вложенные простые объекты сливаются, массивы, функции и всё
|
|
118
|
+
* остальное заменяются целиком — как `configure` у Tiptap. Значение `undefined`
|
|
119
|
+
* не в счёт: остаётся то, что было. Новый объект, исходные не меняются (вложенный
|
|
120
|
+
* объект, которого нет в `given`, остаётся тем же).
|
|
121
|
+
*/
|
|
122
|
+
export declare function mergeOptions(base: object, given: object): object;
|
|
123
|
+
/**
|
|
124
|
+
* Настроить Инструмент прямо в `tools`: встроенный — по имени, свой — по
|
|
125
|
+
* определению (`defineTool`).
|
|
126
|
+
*
|
|
127
|
+
* ```tsx
|
|
128
|
+
* <RichTextEditor
|
|
129
|
+
* tools={[
|
|
130
|
+
* ...RICH_TEXT_PRESETS.full,
|
|
131
|
+
* tool("toc", { offsetVar: "--header-h", levels: [2, 3] }),
|
|
132
|
+
* tool(mention, { labels: { insert: "Отметить коллегу" } }),
|
|
133
|
+
* ]}
|
|
134
|
+
* />
|
|
135
|
+
* ```
|
|
136
|
+
*
|
|
137
|
+
* Запись включает Инструмент и без имени в `tools`; если в `tools` есть и голое
|
|
138
|
+
* имя (из пресета), побеждает Настроенный Инструмент. Две записи `tool()` с
|
|
139
|
+
* одним встроенным именем — ошибка набора, как и две записи одного своего
|
|
140
|
+
* Инструмента. Место на поверхности не меняется: у встроенного оно
|
|
141
|
+
* определяется порядком кита, у своего — порядком `tools`. Передавать нужно
|
|
142
|
+
* только те опции, которые меняются, остальные берутся из умолчаний; вложенные
|
|
143
|
+
* объекты сливаются, массивы и функции заменяются целиком.
|
|
144
|
+
*
|
|
145
|
+
* Опции читаются один раз, вместе с набором, при создании движка. Чтобы сменить
|
|
146
|
+
* их на лету, пересоздайте Редактор через `key`. Неверное значение встроенной
|
|
147
|
+
* опции (из JS без типов) заменяется умолчанием, в разработке — один
|
|
148
|
+
* `console.error`; опции своего Инструмента проверяет его автор.
|
|
149
|
+
*
|
|
150
|
+
* Встроенный — только Инструмент с опциями: `search` и `toc`. Серверно-безопасна.
|
|
151
|
+
*/
|
|
152
|
+
export declare function tool<Name extends ConfigurableToolName>(name: Name, options?: ToolOptionsInput<OptionsOf<Name>>): ConfiguredTool<Name>;
|
|
153
|
+
export declare function tool<Name extends PrefixedName, Options extends object>(definition: ToolDefinition<Name, Options, unknown, object>, options?: ToolOptionsInput<Options>): ConfiguredTool<Name>;
|
|
154
|
+
/** Запись `tools` — Настроенный Инструмент. `null` и строки — нет. */
|
|
155
|
+
export declare function isConfiguredTool(entry: unknown): entry is ConfiguredTool<string>;
|
|
156
|
+
export {};
|
|
157
|
+
//# sourceMappingURL=toolOptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolOptions.d.ts","sourceRoot":"","sources":["../../../src/editor/core/toolOptions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export function mergeOptions(base, given) {
|
|
2
|
+
const plain = (value) => value?.constructor === Object;
|
|
3
|
+
const result = { ...base };
|
|
4
|
+
for (const [key, value] of Object.entries(given)) {
|
|
5
|
+
if (value !== undefined) {
|
|
6
|
+
result[key] = plain(value) && plain(result[key]) ? mergeOptions(result[key], value) : value;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
return result;
|
|
10
|
+
}
|
|
11
|
+
export function tool(entry, options = {}) {
|
|
12
|
+
return typeof entry === "string"
|
|
13
|
+
? { configured: true, name: entry, options }
|
|
14
|
+
: { configured: true, name: entry.name, options, definition: entry };
|
|
15
|
+
}
|
|
16
|
+
export function isConfiguredTool(entry) {
|
|
17
|
+
return (typeof entry === "object" &&
|
|
18
|
+
entry !== null &&
|
|
19
|
+
entry.configured === true);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=toolOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolOptions.js","sourceRoot":"","sources":["../../../src/editor/core/toolOptions.ts"],"names":[],"mappings":"AAgJA,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,KAAa;IAEtD,MAAM,KAAK,GAAG,CAAC,KAAc,EAAmB,EAAE,CAC/C,KAA0C,EAAE,WAAW,KAAK,MAAM,CAAC;IACtE,MAAM,MAAM,GAA4B,EAAE,GAAG,IAAI,EAAE,CAAC;IACpD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9F,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAuCD,MAAM,UAAU,IAAI,CAClB,KAAgC,EAChC,UAAmC,EAAE;IAErC,OAAO,OAAO,KAAK,KAAK,QAAQ;QAC9B,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;QAC5C,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACzE,CAAC;AAGD,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAkC,CAAC,UAAU,KAAK,IAAI,CACxD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { SearchToolOptions, TocLevel } from "./toolOptions.js";
|
|
2
|
+
/** Состояние Инструмента `search` (ADR-0058). */
|
|
3
|
+
export interface SearchToolState {
|
|
4
|
+
/** Панель Поиска открыта. */
|
|
5
|
+
open: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Запрос. Закрытие панели убирает запрос и подсветку; без панели запрос ставит
|
|
8
|
+
* Команда `setQuery`.
|
|
9
|
+
*/
|
|
10
|
+
query: string;
|
|
11
|
+
/**
|
|
12
|
+
* Флажки поиска. Закрытие панели возвращает их к стартовым из Опций
|
|
13
|
+
* Инструмента, с которыми панель и откроется.
|
|
14
|
+
*/
|
|
15
|
+
flags: Readonly<SearchToolOptions>;
|
|
16
|
+
/** Сколько совпадений запроса в Документе. */
|
|
17
|
+
total: number;
|
|
18
|
+
/** Индекс текущего совпадения, от 0; `-1` — совпадений нет. */
|
|
19
|
+
current: number;
|
|
20
|
+
/**
|
|
21
|
+
* Текст ошибки, если запрос — неверное регулярное выражение (сообщение движка
|
|
22
|
+
* JavaScript, не локализованное); иначе `null`. Совпадений при ошибке нет.
|
|
23
|
+
*/
|
|
24
|
+
error: string | null;
|
|
25
|
+
}
|
|
26
|
+
/** Заголовок в Состоянии Инструмента `toc`: пункт списка Оглавления. */
|
|
27
|
+
export interface TocToolHeading {
|
|
28
|
+
/** Уровень по тегу: 1 для `h1` … 4 для `h4`. */
|
|
29
|
+
level: TocLevel;
|
|
30
|
+
/** Текст пункта — текст заголовка без разметки, без крайних пробелов. */
|
|
31
|
+
text: string;
|
|
32
|
+
/** Номер пункта в списке Оглавления, от 0; по нему текущий раздел находит свой заголовок. */
|
|
33
|
+
index: number;
|
|
34
|
+
}
|
|
35
|
+
/** Состояние Инструмента `toc` (ADR-0068). */
|
|
36
|
+
export interface TocToolState {
|
|
37
|
+
/**
|
|
38
|
+
* Заголовки Документа в порядке чтения — те же, что в полосе и списке Оглавления:
|
|
39
|
+
* верхний уровень и Обёртки, только уровни из Опции `levels`, без пустых.
|
|
40
|
+
* Список отдаётся и при одном заголовке, хотя полосы тогда нет.
|
|
41
|
+
*/
|
|
42
|
+
headings: readonly TocToolHeading[];
|
|
43
|
+
/** Индекс текущего раздела в `headings`, от 0; `-1` — заголовков нет. Следует за прокруткой. */
|
|
44
|
+
current: number;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=toolState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolState.d.ts","sourceRoot":"","sources":["../../../src/editor/core/toolState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAUpE,iDAAiD;AACjD,MAAM,WAAW,eAAe;IAC9B,6BAA6B;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACnC,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,KAAK,EAAE,QAAQ,CAAC;IAChB,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,6FAA6F;IAC7F,KAAK,EAAE,MAAM,CAAC;CACf;AAED,8CAA8C;AAC9C,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;IACpC,gGAAgG;IAChG,OAAO,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolState.js","sourceRoot":"","sources":["../../../src/editor/core/toolState.ts"],"names":[],"mappings":""}
|
|
@@ -48,12 +48,19 @@
|
|
|
48
48
|
* разметку решает Схема, и режим её не расширяет. В `basic` его нет: в
|
|
49
49
|
* комментарии кнопка «HTML» без явного запроса экрана — лишняя.
|
|
50
50
|
*
|
|
51
|
+
* `toc` — Оглавление в левом поле рамки (ADR-0068): полоса и список
|
|
52
|
+
* `RichTextToc`, липкие под Панелью или в прокручиваемом поле. Своей Схемы нет.
|
|
53
|
+
* Настраивается записью `tool("toc", { offsetVar, levels, listWidth })`.
|
|
54
|
+
* В пресеты не входит — ни в `full`, ни в `basic`: оно меняет раскладку поля,
|
|
55
|
+
* и обновление кита не должно сдвигать текст там, где его не просили.
|
|
56
|
+
*
|
|
51
57
|
* `search` — поиск и замена по Документу: кнопка «Поиск»
|
|
52
58
|
* фиксированной Панели и `Mod+F` в поле открывают панель в углу поля. Своей
|
|
53
59
|
* Схемы нет, как у `clearFormatting`. Есть и в `basic`: искать по длинному
|
|
54
|
-
* описанию нужно и там, а кнопка у правого края ряд не удлиняет.
|
|
60
|
+
* описанию нужно и там, а кнопка у правого края ряд не удлиняет. Стартовые
|
|
61
|
+
* флажки панели задаёт запись `tool("search", { matchCase, wholeWord, regex })`.
|
|
55
62
|
*/
|
|
56
|
-
export declare const TOOLS: readonly ["history", "heading", "heading1", "bold", "italic", "underline", "strike", "code", "superscript", "subscript", "clearFormatting", "link", "color", "highlight", "align", "bulletList", "orderedList", "taskList", "blockquote", "codeBlock", "horizontalRule", "table", "image", "layout", "wrapper", "emoji", "source", "search", "insertMenu"];
|
|
63
|
+
export declare const TOOLS: readonly ["history", "heading", "heading1", "bold", "italic", "underline", "strike", "code", "superscript", "subscript", "clearFormatting", "link", "color", "highlight", "align", "bulletList", "orderedList", "taskList", "blockquote", "codeBlock", "horizontalRule", "table", "image", "layout", "wrapper", "emoji", "source", "search", "insertMenu", "toc"];
|
|
57
64
|
/** Имя инструмента Редактора. Список и смысл каждого — на странице компонента. */
|
|
58
65
|
export type Tool = (typeof TOOLS)[number];
|
|
59
66
|
/** Готовый набор инструментов. */
|
|
@@ -72,7 +79,7 @@ export declare const PRESETS: Record<RichTextEditorPreset, readonly Tool[]>;
|
|
|
72
79
|
/**
|
|
73
80
|
* Пресеты наружу — массивами (ADR-0058, п. 1.2): свой набор собирается из них,
|
|
74
81
|
* например `[...RICH_TEXT_PRESETS.full, mergeTagTool]`. Копии заморожены:
|
|
75
|
-
* `PRESETS.full` —
|
|
82
|
+
* `PRESETS.full` — почти весь `TOOLS`, и правка массива потребителем меняла бы набор
|
|
76
83
|
* кита во всех Редакторах страницы. Состав пресета — не контракт (ADR-0058,
|
|
77
84
|
* п. 12.5): стабильный набор — точный список имён.
|
|
78
85
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/editor/core/tools.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/editor/core/tools.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,eAAO,MAAM,KAAK,mWA+BR,CAAC;AAEX,kFAAkF;AAClF,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1C,kCAAkC;AAClC,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpD;;;;;;;;;GASG;AACH,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,oBAAoB,EAAE,SAAS,IAAI,EAAE,CAejE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,SAAS,IAAI,EAAE,CAAC,CAIlF,CAAC;AAEL;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,oBAAoB,EAC5B,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,SAAS,GACjC,WAAW,CAAC,IAAI,CAAC,CAGnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/editor/core/tools.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/editor/core/tools.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAgEb,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,SAAS;IACT,SAAS;IACT,UAAU;IACV,MAAM;IACN,QAAQ;IACR,WAAW;IACX,QAAQ;IACR,MAAM;IACN,aAAa;IACb,WAAW;IACX,iBAAiB;IACjB,MAAM;IACN,OAAO;IACP,WAAW;IACX,OAAO;IACP,YAAY;IACZ,aAAa;IACb,UAAU;IACV,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,OAAO;IACP,OAAO;IACP,QAAQ;IACR,SAAS;IACT,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,YAAY;IACZ,KAAK;CACG,CAAC;AAkBX,MAAM,CAAC,MAAM,OAAO,GAAkD;IAEpE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC;IAC5C,KAAK,EAAE;QACL,SAAS;QACT,MAAM;QACN,QAAQ;QACR,QAAQ;QACR,MAAM;QACN,MAAM;QACN,YAAY;QACZ,aAAa;QACb,YAAY;QACZ,QAAQ;KACT;CACF,CAAC;AASF,MAAM,CAAC,MAAM,iBAAiB,GAC5B,MAAM,CAAC,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;CACzC,CAAC,CAAC;AAWL,MAAM,UAAU,YAAY,CAC1B,MAA4B,EAC5B,KAAkC;IAElC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAS,KAAK,CAAC,CAAC;IACrC,OAAO,IAAI,GAAG,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/F,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewIsland.d.ts","sourceRoot":"","sources":["../../../src/editor/core/viewIsland.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"viewIsland.d.ts","sourceRoot":"","sources":["../../../src/editor/core/viewIsland.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAapE,+EAA+E;AAC/E,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACzC,2FAA2F;IAC3F,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;CAC3D;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CAO9F"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
import { customToolOf } from "./toolDefinition.js";
|
|
1
2
|
export function islandsFor(tools, html) {
|
|
2
|
-
return (tools ?? []).flatMap((
|
|
3
|
+
return (tools ?? []).flatMap((entry) => Object.entries(customToolOf(entry)?.blocks ?? {}).flatMap(([block, { island, attributes }]) => island && html.includes(`data-block="${block}"`) ? [{ block, island, attributes }] : []));
|
|
3
4
|
}
|
|
4
5
|
//# sourceMappingURL=viewIsland.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewIsland.js","sourceRoot":"","sources":["../../../src/editor/core/viewIsland.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"viewIsland.js","sourceRoot":"","sources":["../../../src/editor/core/viewIsland.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AA0BnD,MAAM,UAAU,UAAU,CAAC,KAAuC,EAAE,IAAY;IAE9E,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACrC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,CAC5F,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CACxF,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -16,10 +16,15 @@ export declare const BUILTIN_TOOLS: Partial<Record<Tool, ToolDescriptor>>;
|
|
|
16
16
|
* Развернуть `tools` (или `preset`) в один список описаний.
|
|
17
17
|
*
|
|
18
18
|
* Имена — те же, что у `resolveTools`: точный `tools` или пресет, неизвестная
|
|
19
|
-
* строка отбрасывается молча.
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
19
|
+
* строка отбрасывается молча. Запись `tool()` включает Инструмент так же, как
|
|
20
|
+
* его имя, а если в `tools` есть и имя (из пресета), и запись, побеждает
|
|
21
|
+
* Настроенный Инструмент; две записи с одним именем — ошибка набора
|
|
22
|
+
* (`ToolList.error`). Порядок встроенных — порядок кита (`TOOLS`), а не
|
|
23
|
+
* `tools`: место встроенного на поверхности решает кит, и Настроенный стоит
|
|
24
|
+
* там же, где голое имя. Свои Инструменты (описания в `tools`) идут следом, в
|
|
25
|
+
* порядке `tools` (ADR-0058, п. 5.3); набор имён (`Set`) — только имена кита.
|
|
26
|
+
*
|
|
27
|
+
* Опции Инструментов читаются здесь, один раз, вместе с набором.
|
|
23
28
|
*/
|
|
24
29
|
export declare function expandTools(preset: RichTextEditorPreset, tools: readonly ToolEntry[] | undefined): ToolList;
|
|
25
30
|
//# sourceMappingURL=builtins.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../../src/editor/features/builtins.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../../src/editor/features/builtins.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAY,KAAK,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAKzF,OAAO,EAAuB,KAAK,oBAAoB,EAAE,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAyB7F;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAkE/D,CAAC;AAgCF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,oBAAoB,EAC5B,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,GACtC,QAAQ,CAkCV"}
|
|
@@ -6,10 +6,13 @@ import { turnIntoTypes } from "../core/blockTypes.js";
|
|
|
6
6
|
import { CODE_BLOCK_TOOL } from "./code/codeBlockTool.js";
|
|
7
7
|
import { EMOJI_TOOL } from "./emoji/emojiTool.js";
|
|
8
8
|
import { LINK_TOOL } from "./link/linkTool.js";
|
|
9
|
-
import {
|
|
9
|
+
import { devError } from "../../lib/dev-warn.js";
|
|
10
|
+
import { describeCustomTool, describeDefinition } from "../core/customToolEngine.js";
|
|
10
11
|
import { toolList } from "../core/toolDescriptor.js";
|
|
12
|
+
import { isConfiguredTool, mergeOptions } from "../core/toolOptions.js";
|
|
11
13
|
import { SEARCH_TOOL } from "./search/searchTool.js";
|
|
12
14
|
import { TABLE_TOOL } from "./table/tableTool.js";
|
|
15
|
+
import { TOC_TOOL } from "./toc/tocTool.js";
|
|
13
16
|
import { resolveTools, TOOLS } from "../core/tools.js";
|
|
14
17
|
import { unwrapWrapperAt, WRAPPER_NODE } from "./wrapper/wrapper.js";
|
|
15
18
|
const BLOCKQUOTE_SHORTCUT = {
|
|
@@ -33,6 +36,7 @@ const BLOCKQUOTE_ITEMS = [
|
|
|
33
36
|
];
|
|
34
37
|
export const BUILTIN_TOOLS = {
|
|
35
38
|
search: SEARCH_TOOL,
|
|
39
|
+
toc: TOC_TOOL,
|
|
36
40
|
wrapper: {
|
|
37
41
|
name: "wrapper",
|
|
38
42
|
legacy: true,
|
|
@@ -77,12 +81,37 @@ export const BUILTIN_TOOLS = {
|
|
|
77
81
|
codeBlock: CODE_BLOCK_TOOL,
|
|
78
82
|
table: TABLE_TOOL,
|
|
79
83
|
};
|
|
84
|
+
function resolveOptions(descriptor, configured) {
|
|
85
|
+
const { defaults, checks } = descriptor;
|
|
86
|
+
const given = Object.entries(configured?.options ?? {}).filter(([, value]) => value !== undefined);
|
|
87
|
+
const valid = given.filter(([key, value]) => checks?.[key]?.(value));
|
|
88
|
+
if (valid.length < given.length) {
|
|
89
|
+
devError(`RichTextEditor: tool "${descriptor.name}": ignored invalid options: ` +
|
|
90
|
+
given
|
|
91
|
+
.filter((entry) => !valid.includes(entry))
|
|
92
|
+
.map(([key]) => key)
|
|
93
|
+
.join(", "));
|
|
94
|
+
}
|
|
95
|
+
return defaults
|
|
96
|
+
? { ...descriptor, options: mergeOptions(defaults, Object.fromEntries(valid)) }
|
|
97
|
+
: descriptor;
|
|
98
|
+
}
|
|
80
99
|
export function expandTools(preset, tools) {
|
|
81
|
-
const
|
|
82
|
-
const
|
|
83
|
-
const
|
|
84
|
-
.filter((
|
|
85
|
-
.map(
|
|
86
|
-
|
|
100
|
+
const configured = (tools ?? []).filter((entry) => isConfiguredTool(entry) && !entry.definition);
|
|
101
|
+
const twice = configured.find((entry, index) => configured.some((e, i) => i < index && e.name === entry.name));
|
|
102
|
+
const names = resolveTools(preset, tools && [
|
|
103
|
+
...tools.filter((entry) => typeof entry === "string"),
|
|
104
|
+
...configured.map((entry) => entry.name),
|
|
105
|
+
]);
|
|
106
|
+
const builtin = TOOLS.filter((name) => names.has(name)).map((name) => resolveOptions(BUILTIN_TOOLS[name] ?? { name, legacy: true }, configured.find((entry) => entry.name === name)));
|
|
107
|
+
const custom = (tools ?? []).flatMap((entry) => {
|
|
108
|
+
if (typeof entry !== "object" || entry === null)
|
|
109
|
+
return [];
|
|
110
|
+
if (isConfiguredTool(entry)) {
|
|
111
|
+
return entry.definition ? describeDefinition(entry.definition, entry.options) : [];
|
|
112
|
+
}
|
|
113
|
+
return "defined" in entry ? describeDefinition(entry) : describeCustomTool(entry);
|
|
114
|
+
});
|
|
115
|
+
return toolList(builtin.map((descriptor) => descriptor.name), [...builtin, ...custom], twice && `tool "${twice.name}": two tool() entries share this name`);
|
|
87
116
|
}
|
|
88
117
|
//# sourceMappingURL=builtins.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../../src/editor/features/builtins.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,UAAU,MAAM,8BAA8B,CAAC;AACtD,OAAO,cAAc,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../../src/editor/features/builtins.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,UAAU,MAAM,8BAA8B,CAAC;AACtD,OAAO,cAAc,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAsC,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAuB,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,KAAK,EAAwC,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGrE,MAAM,mBAAmB,GAAoB;IAC3C,EAAE,EAAE,YAAY;IAChB,KAAK,EAAE,WAAW;IAClB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU;CAC3B,CAAC;AAEF,MAAM,gBAAgB,GAA0B;IAC9C;QACE,EAAE,EAAE,YAAY;QAChB,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU;QAC1B,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,CAAC,GAAG,CAAC;QACd,QAAQ,EAAE,GAAG;QACb,IAAI,EAAE,mBAAmB,CAAC,IAAI;QAC9B,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE;KACtC;CACF,CAAC;AAYF,MAAM,CAAC,MAAM,aAAa,GAA0C;IAClE,MAAM,EAAE,WAAW;IAEnB,GAAG,EAAE,QAAQ;IAMb,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE;YACZ;gBACE,EAAE,EAAE,QAAQ;gBACZ,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM;gBACpC,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,CAAC,YAAY,CAAC;gBAEtB,GAAG,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CACnB,KAAK,MAAM;qBACR,KAAK,EAAE;qBACP,KAAK,EAAE;qBACP,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;qBAC7C,GAAG,EAAE;aACX;SACF;KACF;IAMD,cAAc,EAAE;QACd,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,cAAc,CAAC;QAC9B,WAAW,EAAE;YACX;gBACE,EAAE,EAAE,gBAAgB;gBACpB,OAAO,EAAE,QAAQ;gBACjB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc;gBAC9B,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;gBACtB,QAAQ,EAAE,KAAK;gBACf,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,iBAAiB,EAAE;aAC1C;SACF;KACF;IACD,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC;QAC1B,WAAW,EAAE,gBAAgB;QAE7B,UAAU,EAAE,aAAa,CAAC,YAAY,EAAE,gBAAgB,CAAC;QAEzD,SAAS,EAAE,CAAC,mBAAmB,CAAC;KACjC;IACD,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,UAAU;IAMjB,SAAS,EAAE,eAAe;IAC1B,KAAK,EAAE,UAAU;CAClB,CAAC;AASF,SAAS,cAAc,CACrB,UAA0B,EAC1B,UAAsC;IAEtC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAC5D,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CACnC,CAAC;IACF,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAChC,QAAQ,CACN,yBAAyB,UAAU,CAAC,IAAI,8BAA8B;YACpE,KAAK;iBACF,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;iBACzC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;iBACnB,IAAI,CAAC,IAAI,CAAC,CAChB,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ;QACb,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE;QAC/E,CAAC,CAAC,UAAU,CAAC;AACjB,CAAC;AAgBD,MAAM,UAAU,WAAW,CACzB,MAA4B,EAC5B,KAAuC;IAGvC,MAAM,UAAU,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CACrC,CAAC,KAAK,EAA2B,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CACjF,CAAC;IACF,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAC7C,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAC9D,CAAC;IACF,MAAM,KAAK,GAAG,YAAY,CACxB,MAAM,EACN,KAAK,IAAI;QACP,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;QACrD,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;KACzC,CACF,CAAC;IACF,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACnE,cAAc,CACZ,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAC7C,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAChD,CACF,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,EAAE,CAAC;QAC3D,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,CAAC;QACD,OAAO,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IACH,OAAO,QAAQ,CACb,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAY,CAAC,EACpD,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,EACvB,KAAK,IAAI,SAAS,KAAK,CAAC,IAAI,uCAAuC,CACpE,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchPanel.d.ts","sourceRoot":"","sources":["../../../../src/editor/features/search/SearchPanel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"SearchPanel.d.ts","sourceRoot":"","sources":["../../../../src/editor/features/search/SearchPanel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAkB3C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,gBAAgB,+BAkPlF"}
|
|
@@ -10,14 +10,15 @@ import { ChevronDownIcon, ChevronUpIcon, CloseIcon } from "../../../icons.js";
|
|
|
10
10
|
import { useMessages } from "../../../i18n/useMessages.js";
|
|
11
11
|
import { cn } from "../../../lib/cn.js";
|
|
12
12
|
import { GLASS_PANEL_CLASS } from "../../styles/glass.js";
|
|
13
|
-
import {
|
|
13
|
+
import { cancelRevealMatch, registerSearchOverlays, scheduleRevealMatch } from "./revealMatch.js";
|
|
14
14
|
import { searchState } from "./searchPlugin.js";
|
|
15
15
|
const NO_OPTIONS = { matchCase: false, wholeWord: false, regex: false };
|
|
16
|
+
const FLAGS = ["matchCase", "wholeWord", "regex"];
|
|
16
17
|
export function SearchPanel({ editor, focus, onClose, className }) {
|
|
17
18
|
const messages = useMessages().editor;
|
|
18
|
-
const [query, setQuery] = useState(focus.query);
|
|
19
|
+
const [query, setQuery] = useState(() => focus.query || searchState(editor.state)?.query || "");
|
|
19
20
|
const [replacement, setReplacement] = useState("");
|
|
20
|
-
const [options, setOptions] = useState(NO_OPTIONS);
|
|
21
|
+
const [options, setOptions] = useState(() => searchState(editor.state)?.options ?? NO_OPTIONS);
|
|
21
22
|
const searchRef = useRef(null);
|
|
22
23
|
const replaceRef = useRef(null);
|
|
23
24
|
const panelRef = useRef(null);
|
|
@@ -30,6 +31,8 @@ export function SearchPanel({ editor, focus, onClose, className }) {
|
|
|
30
31
|
current: state?.current ?? -1,
|
|
31
32
|
total: state?.total ?? 0,
|
|
32
33
|
error: state?.error,
|
|
34
|
+
engineQuery: state?.query ?? "",
|
|
35
|
+
engineOptions: state?.options ?? NO_OPTIONS,
|
|
33
36
|
editable: current.isEditable,
|
|
34
37
|
};
|
|
35
38
|
},
|
|
@@ -49,19 +52,30 @@ export function SearchPanel({ editor, focus, onClose, className }) {
|
|
|
49
52
|
field?.focus();
|
|
50
53
|
field?.select();
|
|
51
54
|
}, [focus.token, focus.query, focus.replace, query]);
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
55
|
+
const reveal = () => scheduleRevealMatch(editor);
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
const unregister = registerSearchOverlays(editor, () => [
|
|
58
|
+
panelRef.current,
|
|
59
|
+
panelRef.current?.parentElement,
|
|
60
|
+
]);
|
|
61
|
+
return () => {
|
|
62
|
+
unregister();
|
|
63
|
+
cancelRevealMatch(editor);
|
|
64
|
+
};
|
|
65
|
+
}, [editor]);
|
|
61
66
|
useEffect(() => {
|
|
62
67
|
editor.commands.setSearch(query, options);
|
|
63
68
|
reveal();
|
|
64
69
|
}, [editor, query, options]);
|
|
70
|
+
useEffect(() => {
|
|
71
|
+
const live = searchState(editor.state);
|
|
72
|
+
if (!live)
|
|
73
|
+
return;
|
|
74
|
+
if (live.query !== query)
|
|
75
|
+
setQuery(live.query);
|
|
76
|
+
if (FLAGS.some((flag) => live.options[flag] !== options[flag]))
|
|
77
|
+
setOptions(live.options);
|
|
78
|
+
}, [search.engineQuery, search.engineOptions]);
|
|
65
79
|
const step = (direction) => {
|
|
66
80
|
editor.commands.searchStep(direction);
|
|
67
81
|
reveal();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchPanel.js","sourceRoot":"","sources":["../../../../src/editor/features/search/SearchPanel.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAsB,MAAM,OAAO,CAAC;AAChG,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"SearchPanel.js","sourceRoot":"","sources":["../../../../src/editor/features/search/SearchPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Editor } from "@tiptap/core";
|
|
1
2
|
/**
|
|
2
3
|
* Показать текущее совпадение поиска.
|
|
3
4
|
*
|
|
@@ -22,4 +23,19 @@
|
|
|
22
23
|
* @param overlays элементы поверх Документа: панель поиска и её липкий родитель
|
|
23
24
|
*/
|
|
24
25
|
export declare function revealCurrentMatch(documentRoot: HTMLElement, overlays: readonly (Element | null | undefined)[]): void;
|
|
26
|
+
/**
|
|
27
|
+
* Панель поиска сообщает, что лежит поверх Документа, пока открыта. Команды
|
|
28
|
+
* Инструмента (`next`, `previous`, `setQuery`) живут вне панели, но должны
|
|
29
|
+
* обходить её так же. Возвращает снятие регистрации.
|
|
30
|
+
*/
|
|
31
|
+
export declare function registerSearchOverlays(editor: Editor, overlays: () => readonly (Element | null | undefined)[]): () => void;
|
|
32
|
+
/**
|
|
33
|
+
* Показать текущее совпадение кадром позже, когда панель уже разложена. Вызовы
|
|
34
|
+
* одного поля в пределах кадра сливаются в одну прокрутку: панель и команда
|
|
35
|
+
* Инструмента, сработавшие на один переход, не прокручивают дважды. Фокус не
|
|
36
|
+
* трогает.
|
|
37
|
+
*/
|
|
38
|
+
export declare function scheduleRevealMatch(editor: Editor): void;
|
|
39
|
+
/** Отменить отложенную прокрутку (панель закрылась или поле разобрано). */
|
|
40
|
+
export declare function cancelRevealMatch(editor: Editor): void;
|
|
25
41
|
//# sourceMappingURL=revealMatch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revealMatch.d.ts","sourceRoot":"","sources":["../../../../src/editor/features/search/revealMatch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"revealMatch.d.ts","sourceRoot":"","sources":["../../../../src/editor/features/search/revealMatch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAO3C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,WAAW,EACzB,QAAQ,EAAE,SAAS,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,GAChD,IAAI,CAmCN;AAMD;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,SAAS,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,GACtD,MAAM,IAAI,CAKZ;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAUxD;AAED,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAGtD"}
|