@inkbrick/react 0.0.0-stage → 0.1.0-alpha.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.
Files changed (131) hide show
  1. package/dist/FormulaPalette-WFRPRHS5.js +320 -0
  2. package/dist/FormulaPalette-WFRPRHS5.js.map +1 -0
  3. package/dist/chunk-TPUX4C45.js +2309 -0
  4. package/dist/chunk-TPUX4C45.js.map +1 -0
  5. package/dist/index.d.ts +1431 -0
  6. package/dist/index.js +4880 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/mathCss-FLPE6QBM.js +361 -0
  9. package/dist/mathCss-FLPE6QBM.js.map +1 -0
  10. package/package.json +46 -3
  11. package/src/block-handle/BlockHandleController.ts +93 -0
  12. package/src/block-handle/BlockHandleHost.tsx +108 -0
  13. package/src/block-handle/DefaultBlockHandle.tsx +71 -0
  14. package/src/block-handle/DefaultBlockMenu.tsx +114 -0
  15. package/src/block-handle/DropIndicatorHost.tsx +58 -0
  16. package/src/block-handle/actions.tsx +146 -0
  17. package/src/block-handle/blockDrag.ts +215 -0
  18. package/src/block-handle/geometry.ts +64 -0
  19. package/src/block-handle/gripGesture.ts +108 -0
  20. package/src/block-handle/types.ts +65 -0
  21. package/src/block-handle/useBlockDrag.ts +21 -0
  22. package/src/block-handle/useBlockHandles.ts +125 -0
  23. package/src/blocks/BlockChildren.tsx +17 -0
  24. package/src/blocks/BlockProps.ts +5 -0
  25. package/src/blocks/CalloutBlock.tsx +61 -0
  26. package/src/blocks/CodeBlock.tsx +96 -0
  27. package/src/blocks/DividerBlock.tsx +15 -0
  28. package/src/blocks/Editable.tsx +84 -0
  29. package/src/blocks/FormulaBlock.tsx +173 -0
  30. package/src/blocks/HeadingBlock.tsx +22 -0
  31. package/src/blocks/ImageBlock.tsx +362 -0
  32. package/src/blocks/ListBlock.tsx +86 -0
  33. package/src/blocks/NoteBlock.tsx +10 -0
  34. package/src/blocks/PageBlock.tsx +10 -0
  35. package/src/blocks/ParagraphBlock.tsx +20 -0
  36. package/src/blocks/QuoteBlock.tsx +18 -0
  37. package/src/blocks/UnknownBlockView.tsx +27 -0
  38. package/src/blocks/defineBlock.ts +49 -0
  39. package/src/clipboard/html/blocks.ts +379 -0
  40. package/src/clipboard/html/inline.ts +92 -0
  41. package/src/clipboard/html/style.ts +92 -0
  42. package/src/clipboard/html/tags.ts +77 -0
  43. package/src/clipboard/htmlToFragment.ts +41 -0
  44. package/src/clipboard/useClipboard.ts +296 -0
  45. package/src/code/highlight.ts +56 -0
  46. package/src/code/languages.ts +236 -0
  47. package/src/code/scan/css.ts +164 -0
  48. package/src/code/scan/generic.ts +328 -0
  49. package/src/code/scan/html.ts +129 -0
  50. package/src/code/scan/markdown.ts +58 -0
  51. package/src/code/scan/shared.ts +81 -0
  52. package/src/code/scan/yaml.ts +34 -0
  53. package/src/code/types.ts +34 -0
  54. package/src/context/EditorContext.ts +9 -0
  55. package/src/context/EditorProvider.tsx +172 -0
  56. package/src/controllers/adapters.tsx +63 -0
  57. package/src/editing/BlockSelectionController.ts +27 -0
  58. package/src/editing/CaretController.ts +27 -0
  59. package/src/editing/EditorView.ts +108 -0
  60. package/src/editing/ViewportController.ts +63 -0
  61. package/src/editing/beforeInput.ts +276 -0
  62. package/src/editing/deleteAtBoundary.ts +16 -0
  63. package/src/editing/inputActions.ts +109 -0
  64. package/src/editing/renderCode.ts +69 -0
  65. package/src/editing/renderInline.ts +144 -0
  66. package/src/editing/selection.ts +262 -0
  67. package/src/editing/useEditorInput.ts +223 -0
  68. package/src/editing/useSelectionState.ts +46 -0
  69. package/src/formula/FormulaController.ts +51 -0
  70. package/src/formula/FormulaPalette.tsx +79 -0
  71. package/src/formula/FormulaPopover.tsx +181 -0
  72. package/src/formula/LazyFormulaPalette.tsx +42 -0
  73. package/src/formula/actions.ts +138 -0
  74. package/src/formula/snippet.ts +70 -0
  75. package/src/formula/symbols.ts +264 -0
  76. package/src/hooks/useBlock.ts +21 -0
  77. package/src/hooks/useBlockController.ts +30 -0
  78. package/src/hooks/useChildren.ts +16 -0
  79. package/src/hooks/useDocument.ts +16 -0
  80. package/src/hooks/useEditor.ts +13 -0
  81. package/src/hooks/useEditorView.ts +13 -0
  82. package/src/hooks/useHistory.ts +46 -0
  83. package/src/hooks/useReadOnly.ts +21 -0
  84. package/src/hooks/useT.ts +10 -0
  85. package/src/i18n/en.ts +182 -0
  86. package/src/i18n/ru.ts +174 -0
  87. package/src/i18n/translate.ts +77 -0
  88. package/src/icons/ICONS_LICENSE.md +50 -0
  89. package/src/icons/Icon.tsx +41 -0
  90. package/src/icons/lucide.ts +234 -0
  91. package/src/images/ImageError.ts +39 -0
  92. package/src/images/UploadTracker.ts +49 -0
  93. package/src/images/insertImages.ts +142 -0
  94. package/src/images/types.ts +22 -0
  95. package/src/images/upload.ts +62 -0
  96. package/src/index.ts +102 -0
  97. package/src/keymap/defaultKeymap.ts +189 -0
  98. package/src/keymap/keymap.ts +42 -0
  99. package/src/keymap/shortcut.ts +105 -0
  100. package/src/keymap/types.ts +40 -0
  101. package/src/math/FormulaView.tsx +62 -0
  102. package/src/math/mathCss.ts +4 -0
  103. package/src/math/renderer.ts +198 -0
  104. package/src/registry/defaultBlockComponents.ts +26 -0
  105. package/src/registry/resolveBlockComponent.ts +14 -0
  106. package/src/renderer/BlockRenderer.tsx +63 -0
  107. package/src/renderer/DocumentRenderer.tsx +33 -0
  108. package/src/renderer/DocumentView.tsx +94 -0
  109. package/src/renderer/virtual/VirtualChildList.tsx +355 -0
  110. package/src/renderer/virtual/estimate.ts +62 -0
  111. package/src/renderer/virtual/virtualRenderer.tsx +35 -0
  112. package/src/slash/DefaultSlashMenu.tsx +119 -0
  113. package/src/slash/SlashMenuController.ts +66 -0
  114. package/src/slash/SlashMenuHost.tsx +48 -0
  115. package/src/slash/applySlashItem.ts +57 -0
  116. package/src/slash/defaultSlashItems.tsx +186 -0
  117. package/src/slash/filter.ts +29 -0
  118. package/src/slash/items.ts +30 -0
  119. package/src/slash/syncSlashMenu.ts +67 -0
  120. package/src/slash/types.ts +21 -0
  121. package/src/toolbar/DefaultToolbar.tsx +281 -0
  122. package/src/toolbar/ToolbarController.ts +100 -0
  123. package/src/toolbar/ToolbarHost.tsx +81 -0
  124. package/src/toolbar/formatting.ts +75 -0
  125. package/src/toolbar/rich.ts +58 -0
  126. package/src/toolbar/syncToolbar.ts +39 -0
  127. package/src/toolbar/types.ts +21 -0
  128. package/src/ui/EditorUIContext.ts +26 -0
  129. package/src/ui/presentation.ts +24 -0
  130. package/src/ui/types.ts +70 -0
  131. package/README.md +0 -3
@@ -0,0 +1,320 @@
1
+ import {
2
+ CARET,
3
+ useT
4
+ } from "./chunk-TPUX4C45.js";
5
+
6
+ // src/formula/FormulaPalette.tsx
7
+ import { useState } from "react";
8
+
9
+ // src/formula/symbols.ts
10
+ var sym = (label, command) => ({ label, snippet: `${command} ` });
11
+ var greek = (names) => names.map(([label, name]) => sym(label, `\\${name}`));
12
+ var fn = (name, label = name) => ({ label, snippet: `\\${name}(${CARET})` });
13
+ var SYMBOL_CATEGORIES = [
14
+ {
15
+ id: "functions",
16
+ icon: "sin",
17
+ items: [
18
+ fn("sin"),
19
+ fn("cos"),
20
+ fn("tan"),
21
+ fn("cot"),
22
+ fn("sec"),
23
+ fn("csc"),
24
+ fn("arcsin", "asin"),
25
+ fn("arccos", "acos"),
26
+ fn("arctan", "atan"),
27
+ fn("sinh"),
28
+ fn("cosh"),
29
+ fn("tanh"),
30
+ fn("log"),
31
+ fn("ln"),
32
+ fn("exp"),
33
+ { label: "log\u208D\u2099\u208E", snippet: `\\log_{${CARET}}`, title: "\\log_{ }" },
34
+ { label: "lim", snippet: `\\lim_{${CARET} \\to \\infty}` },
35
+ fn("max"),
36
+ fn("min"),
37
+ fn("det"),
38
+ fn("gcd"),
39
+ fn("arg"),
40
+ fn("deg"),
41
+ { label: "mod", snippet: "\\bmod " }
42
+ ]
43
+ },
44
+ {
45
+ id: "structures",
46
+ icon: "a/b",
47
+ items: [
48
+ { label: "a/b", snippet: `\\frac{${CARET}}{ }`, title: "\\frac{ }{ }" },
49
+ { label: "\u221A", snippet: `\\sqrt{${CARET}}` },
50
+ { label: "\u207F\u221A", snippet: `\\sqrt[n]{${CARET}}` },
51
+ { label: "x\u207F", snippet: `^{${CARET}}`, title: "^{ }" },
52
+ { label: "x\u2099", snippet: `_{${CARET}}`, title: "_{ }" },
53
+ { label: "x\u2099\u207F", snippet: `_{${CARET}}^{ }` },
54
+ { label: "\u2211", snippet: `\\sum_{i=1}^{n} ${CARET}`, title: "\\sum_{i=1}^{n}" },
55
+ { label: "\u220F", snippet: `\\prod_{i=1}^{n} ${CARET}`, title: "\\prod_{i=1}^{n}" },
56
+ { label: "\u222B", snippet: `\\int_{a}^{b} ${CARET} \\, dx`, title: "\\int_{a}^{b} \\, dx" },
57
+ { label: "\u222C", snippet: `\\iint ${CARET} \\, dA` },
58
+ { label: "\u222E", snippet: `\\oint ${CARET} \\, d\\ell` },
59
+ { label: "\u207F\u2044\u2096", snippet: `\\binom{n}{k}` },
60
+ { label: "(a)", snippet: `\\left( ${CARET} \\right)`, title: "\\left( \\right)" },
61
+ { label: "[a]", snippet: `\\left[ ${CARET} \\right]`, title: "\\left[ \\right]" },
62
+ { label: "{a}", snippet: `\\left\\{ ${CARET} \\right\\}`, title: "\\left\\{ \\right\\}" },
63
+ { label: "|a|", snippet: `\\left| ${CARET} \\right|`, title: "\\left| \\right|" },
64
+ { label: "\u2016a\u2016", snippet: `\\left\\| ${CARET} \\right\\|`, title: "\\left\\| \\right\\|" },
65
+ { label: "\u230Aa\u230B", snippet: `\\lfloor ${CARET} \\rfloor` },
66
+ { label: "\u2308a\u2309", snippet: `\\lceil ${CARET} \\rceil` },
67
+ { label: "v\u20D7", snippet: `\\vec{${CARET}}` },
68
+ { label: "\u0101", snippet: `\\bar{${CARET}}` },
69
+ { label: "\xE2", snippet: `\\hat{${CARET}}` },
70
+ { label: "\u0227", snippet: `\\dot{${CARET}}` },
71
+ { label: "a\u035Eb", snippet: `\\overline{${CARET}}` },
72
+ {
73
+ label: "(\u22EE)",
74
+ snippet: `\\begin{pmatrix} ${CARET} & \\\\ & \\end{pmatrix}`,
75
+ title: "pmatrix"
76
+ },
77
+ {
78
+ label: "[\u22EE]",
79
+ snippet: `\\begin{bmatrix} ${CARET} & \\\\ & \\end{bmatrix}`,
80
+ title: "bmatrix"
81
+ },
82
+ {
83
+ label: "{\u22EE",
84
+ snippet: `\\begin{cases} ${CARET} & \\text{if } \\\\ & \\text{otherwise} \\end{cases}`,
85
+ title: "cases"
86
+ },
87
+ { label: "text", snippet: `\\text{${CARET}}` }
88
+ ]
89
+ },
90
+ {
91
+ id: "greek",
92
+ icon: "\u03B1\u03B2",
93
+ items: [
94
+ ...greek([
95
+ ["\u03B1", "alpha"],
96
+ ["\u03B2", "beta"],
97
+ ["\u03B3", "gamma"],
98
+ ["\u03B4", "delta"],
99
+ ["\u03B5", "epsilon"],
100
+ ["\u03B6", "zeta"],
101
+ ["\u03B7", "eta"],
102
+ ["\u03B8", "theta"],
103
+ ["\u03B9", "iota"],
104
+ ["\u03BA", "kappa"],
105
+ ["\u03BB", "lambda"],
106
+ ["\u03BC", "mu"],
107
+ ["\u03BD", "nu"],
108
+ ["\u03BE", "xi"],
109
+ ["\u03C0", "pi"],
110
+ ["\u03C1", "rho"],
111
+ ["\u03C3", "sigma"],
112
+ ["\u03C4", "tau"],
113
+ ["\u03C5", "upsilon"],
114
+ ["\u03C6", "phi"],
115
+ ["\u03C7", "chi"],
116
+ ["\u03C8", "psi"],
117
+ ["\u03C9", "omega"],
118
+ ["\u03F5", "varepsilon"],
119
+ ["\u03D1", "vartheta"],
120
+ ["\u03D5", "varphi"],
121
+ ["\u03F1", "varrho"],
122
+ ["\u03C2", "varsigma"],
123
+ ["\u0393", "Gamma"],
124
+ ["\u0394", "Delta"],
125
+ ["\u0398", "Theta"],
126
+ ["\u039B", "Lambda"],
127
+ ["\u039E", "Xi"],
128
+ ["\u03A0", "Pi"],
129
+ ["\u03A3", "Sigma"],
130
+ ["\u03A6", "Phi"],
131
+ ["\u03A8", "Psi"],
132
+ ["\u03A9", "Omega"]
133
+ ])
134
+ ]
135
+ },
136
+ {
137
+ id: "operators",
138
+ icon: "\xB1",
139
+ items: [
140
+ sym("\xB1", "\\pm"),
141
+ sym("\u2213", "\\mp"),
142
+ sym("\xD7", "\\times"),
143
+ sym("\xF7", "\\div"),
144
+ sym("\xB7", "\\cdot"),
145
+ sym("\u2217", "\\ast"),
146
+ sym("\u2218", "\\circ"),
147
+ sym("\u2295", "\\oplus"),
148
+ sym("\u2297", "\\otimes"),
149
+ sym("\u221E", "\\infty"),
150
+ sym("\u2202", "\\partial"),
151
+ sym("\u2207", "\\nabla"),
152
+ sym("\u2032", "'"),
153
+ sym("\xB0", "^\\circ"),
154
+ sym("\u2113", "\\ell"),
155
+ sym("\u210F", "\\hbar"),
156
+ sym("\u2026", "\\ldots"),
157
+ sym("\u22EF", "\\cdots"),
158
+ sym("\u22EE", "\\vdots"),
159
+ sym("\u22F1", "\\ddots"),
160
+ sym("\u2020", "\\dagger"),
161
+ sym("%", "\\%"),
162
+ sym("\u2220", "\\angle"),
163
+ sym("\u25B3", "\\triangle")
164
+ ]
165
+ },
166
+ {
167
+ id: "relations",
168
+ icon: "\u2264",
169
+ items: [
170
+ sym("\u2260", "\\neq"),
171
+ sym("\u2248", "\\approx"),
172
+ sym("\u2261", "\\equiv"),
173
+ sym("\u223C", "\\sim"),
174
+ sym("\u2243", "\\simeq"),
175
+ sym("\u2245", "\\cong"),
176
+ sym("\u221D", "\\propto"),
177
+ sym("\u2264", "\\leq"),
178
+ sym("\u2265", "\\geq"),
179
+ sym("\u226A", "\\ll"),
180
+ sym("\u226B", "\\gg"),
181
+ sym("<", "<"),
182
+ sym(">", ">"),
183
+ sym("\u2208", "\\in"),
184
+ sym("\u2209", "\\notin"),
185
+ sym("\u220B", "\\ni"),
186
+ sym("\u2282", "\\subset"),
187
+ sym("\u2286", "\\subseteq"),
188
+ sym("\u2283", "\\supset"),
189
+ sym("\u2287", "\\supseteq"),
190
+ sym("\u2223", "\\mid"),
191
+ sym("\u2225", "\\parallel"),
192
+ sym("\u22A5", "\\perp"),
193
+ sym(":=", ":=")
194
+ ]
195
+ },
196
+ {
197
+ id: "arrows",
198
+ icon: "\u2192",
199
+ items: [
200
+ sym("\u2192", "\\to"),
201
+ sym("\u2190", "\\leftarrow"),
202
+ sym("\u2194", "\\leftrightarrow"),
203
+ sym("\u21D2", "\\Rightarrow"),
204
+ sym("\u21D0", "\\Leftarrow"),
205
+ sym("\u21D4", "\\Leftrightarrow"),
206
+ sym("\u21A6", "\\mapsto"),
207
+ sym("\u2191", "\\uparrow"),
208
+ sym("\u2193", "\\downarrow"),
209
+ sym("\u27F6", "\\longrightarrow"),
210
+ sym("\u27F9", "\\Longrightarrow"),
211
+ sym("\u21CC", "\\rightleftharpoons"),
212
+ sym("\u21AA", "\\hookrightarrow"),
213
+ sym("\u2234", "\\therefore"),
214
+ sym("\u2235", "\\because"),
215
+ sym("\u2197", "\\nearrow"),
216
+ sym("\u2198", "\\searrow")
217
+ ]
218
+ },
219
+ {
220
+ id: "sets",
221
+ icon: "\u211D",
222
+ items: [
223
+ sym("\u2205", "\\emptyset"),
224
+ sym("\u2115", "\\mathbb{N}"),
225
+ sym("\u2124", "\\mathbb{Z}"),
226
+ sym("\u211A", "\\mathbb{Q}"),
227
+ sym("\u211D", "\\mathbb{R}"),
228
+ sym("\u2102", "\\mathbb{C}"),
229
+ sym("\u222A", "\\cup"),
230
+ sym("\u2229", "\\cap"),
231
+ sym("\u2216", "\\setminus"),
232
+ sym("\u2200", "\\forall"),
233
+ sym("\u2203", "\\exists"),
234
+ sym("\u2204", "\\nexists"),
235
+ sym("\xAC", "\\neg"),
236
+ sym("\u2227", "\\land"),
237
+ sym("\u2228", "\\lor"),
238
+ sym("\u22A4", "\\top"),
239
+ sym("\u22A2", "\\vdash"),
240
+ sym("\u22A8", "\\models"),
241
+ sym("\u2135", "\\aleph"),
242
+ sym("\u{1D4AB}", "\\mathcal{P}"),
243
+ sym("\u{1D53C}", "\\mathbb{E}")
244
+ ]
245
+ }
246
+ ];
247
+
248
+ // src/formula/FormulaPalette.tsx
249
+ import { jsx, jsxs } from "react/jsx-runtime";
250
+ function FormulaPalette({ onInsert }) {
251
+ const t = useT();
252
+ const [active, setActive] = useState("functions");
253
+ const category = SYMBOL_CATEGORIES.find((item) => item.id === active) ?? SYMBOL_CATEGORIES[0];
254
+ const name = (id) => t(`formula.palette.${id}`);
255
+ return /* @__PURE__ */ jsxs(
256
+ "div",
257
+ {
258
+ className: "formula-palette",
259
+ "data-inkbrick-part": "formula-palette",
260
+ role: "group",
261
+ "aria-label": t("formula.palette.label"),
262
+ onMouseDown: (event) => event.preventDefault(),
263
+ children: [
264
+ /* @__PURE__ */ jsx(
265
+ "div",
266
+ {
267
+ className: "formula-palette__tabs",
268
+ "data-inkbrick-part": "formula-palette-tabs",
269
+ role: "tablist",
270
+ children: SYMBOL_CATEGORIES.map((item) => /* @__PURE__ */ jsx(
271
+ "button",
272
+ {
273
+ type: "button",
274
+ role: "tab",
275
+ "data-inkbrick-part": "formula-palette-tab",
276
+ "data-category": item.id,
277
+ "data-active": item.id === active || void 0,
278
+ "aria-selected": item.id === active,
279
+ "aria-label": name(item.id),
280
+ title: name(item.id),
281
+ onClick: () => setActive(item.id),
282
+ children: item.icon
283
+ },
284
+ item.id
285
+ ))
286
+ }
287
+ ),
288
+ /* @__PURE__ */ jsx(
289
+ "div",
290
+ {
291
+ className: "formula-palette__grid",
292
+ "data-inkbrick-part": "formula-palette-grid",
293
+ role: "tabpanel",
294
+ "aria-label": name(category.id),
295
+ children: category.items.map((item) => {
296
+ const code = item.title ?? item.snippet.split(CARET).join("").trim();
297
+ return /* @__PURE__ */ jsx(
298
+ "button",
299
+ {
300
+ type: "button",
301
+ "data-inkbrick-part": "formula-symbol",
302
+ "data-snippet": item.snippet,
303
+ "aria-label": code,
304
+ title: code,
305
+ onClick: () => onInsert(item.snippet),
306
+ children: item.label
307
+ },
308
+ item.snippet
309
+ );
310
+ })
311
+ }
312
+ )
313
+ ]
314
+ }
315
+ );
316
+ }
317
+ export {
318
+ FormulaPalette
319
+ };
320
+ //# sourceMappingURL=FormulaPalette-WFRPRHS5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/formula/FormulaPalette.tsx","../src/formula/symbols.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport type { MessageKey } from '../i18n/en';\nimport { useT } from '../hooks/useT';\nimport { CARET } from './snippet';\nimport { SYMBOL_CATEGORIES, type SymbolCategoryId } from './symbols';\n\nexport interface FormulaPaletteProps {\n readonly onInsert: (snippet: string) => void;\n}\n\n/**\n * Палитра математических символов и шаблонов: вкладки по категориям (функции, структуры, греческие буквы, операторы,\n * отношения, стрелки, множества) и сетка кнопок. Нажатие вставляет код LaTeX в поле формулы; фокус из поля не уходит.\n * Атрибуты: `data-inkbrick-part=\"formula-palette\"`, `formula-palette-tabs`, `formula-palette-grid`, `formula-symbol`.\n */\nexport function FormulaPalette({ onInsert }: FormulaPaletteProps) {\n const t = useT();\n const [active, setActive] = useState<SymbolCategoryId>('functions');\n const category = SYMBOL_CATEGORIES.find((item) => item.id === active) ?? SYMBOL_CATEGORIES[0];\n const name = (id: SymbolCategoryId) => t(`formula.palette.${id}` as MessageKey);\n\n return (\n <div\n className=\"formula-palette\"\n data-inkbrick-part=\"formula-palette\"\n role=\"group\"\n aria-label={t('formula.palette.label')}\n onMouseDown={(event) => event.preventDefault()}\n >\n <div\n className=\"formula-palette__tabs\"\n data-inkbrick-part=\"formula-palette-tabs\"\n role=\"tablist\"\n >\n {SYMBOL_CATEGORIES.map((item) => (\n <button\n key={item.id}\n type=\"button\"\n role=\"tab\"\n data-inkbrick-part=\"formula-palette-tab\"\n data-category={item.id}\n data-active={item.id === active || undefined}\n aria-selected={item.id === active}\n aria-label={name(item.id)}\n title={name(item.id)}\n onClick={() => setActive(item.id)}\n >\n {item.icon}\n </button>\n ))}\n </div>\n <div\n className=\"formula-palette__grid\"\n data-inkbrick-part=\"formula-palette-grid\"\n role=\"tabpanel\"\n aria-label={name(category.id)}\n >\n {category.items.map((item) => {\n const code = item.title ?? item.snippet.split(CARET).join('').trim();\n\n return (\n <button\n key={item.snippet}\n type=\"button\"\n data-inkbrick-part=\"formula-symbol\"\n data-snippet={item.snippet}\n aria-label={code}\n title={code}\n onClick={() => onInsert(item.snippet)}\n >\n {item.label}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","import { CARET } from './snippet';\n\nexport { CARET };\n\nexport type SymbolCategoryId =\n 'functions' | 'structures' | 'greek' | 'operators' | 'relations' | 'arrows' | 'sets';\n\nexport interface MathSymbol {\n readonly label: string;\n readonly snippet: string;\n readonly title?: string;\n}\n\nexport interface SymbolCategory {\n readonly id: SymbolCategoryId;\n readonly icon: string;\n readonly items: readonly MathSymbol[];\n}\n\nconst sym = (label: string, command: string): MathSymbol => ({ label, snippet: `${command} ` });\n\nconst greek = (names: readonly [string, string][]): MathSymbol[] =>\n names.map(([label, name]) => sym(label, `\\\\${name}`));\n\nconst fn = (name: string, label = name): MathSymbol => ({ label, snippet: `\\\\${name}(${CARET})` });\n\n/**\n * Палитра математических символов и шаблонов для редактора формул. Это данные: код LaTeX после вставки правится\n * как обычный текст. Состав подобран из того, что поддерживает Temml/KaTeX.\n */\nexport const SYMBOL_CATEGORIES: readonly SymbolCategory[] = [\n {\n id: 'functions',\n icon: 'sin',\n items: [\n fn('sin'),\n fn('cos'),\n fn('tan'),\n fn('cot'),\n fn('sec'),\n fn('csc'),\n fn('arcsin', 'asin'),\n fn('arccos', 'acos'),\n fn('arctan', 'atan'),\n fn('sinh'),\n fn('cosh'),\n fn('tanh'),\n fn('log'),\n fn('ln'),\n fn('exp'),\n { label: 'log₍ₙ₎', snippet: `\\\\log_{${CARET}}`, title: '\\\\log_{ }' },\n { label: 'lim', snippet: `\\\\lim_{${CARET} \\\\to \\\\infty}` },\n fn('max'),\n fn('min'),\n fn('det'),\n fn('gcd'),\n fn('arg'),\n fn('deg'),\n { label: 'mod', snippet: '\\\\bmod ' },\n ],\n },\n {\n id: 'structures',\n icon: 'a/b',\n items: [\n { label: 'a/b', snippet: `\\\\frac{${CARET}}{ }`, title: '\\\\frac{ }{ }' },\n { label: '√', snippet: `\\\\sqrt{${CARET}}` },\n { label: 'ⁿ√', snippet: `\\\\sqrt[n]{${CARET}}` },\n { label: 'xⁿ', snippet: `^{${CARET}}`, title: '^{ }' },\n { label: 'xₙ', snippet: `_{${CARET}}`, title: '_{ }' },\n { label: 'xₙⁿ', snippet: `_{${CARET}}^{ }` },\n { label: '∑', snippet: `\\\\sum_{i=1}^{n} ${CARET}`, title: '\\\\sum_{i=1}^{n}' },\n { label: '∏', snippet: `\\\\prod_{i=1}^{n} ${CARET}`, title: '\\\\prod_{i=1}^{n}' },\n { label: '∫', snippet: `\\\\int_{a}^{b} ${CARET} \\\\, dx`, title: '\\\\int_{a}^{b} \\\\, dx' },\n { label: '∬', snippet: `\\\\iint ${CARET} \\\\, dA` },\n { label: '∮', snippet: `\\\\oint ${CARET} \\\\, d\\\\ell` },\n { label: 'ⁿ⁄ₖ', snippet: `\\\\binom{n}{k}` },\n { label: '(a)', snippet: `\\\\left( ${CARET} \\\\right)`, title: '\\\\left( \\\\right)' },\n { label: '[a]', snippet: `\\\\left[ ${CARET} \\\\right]`, title: '\\\\left[ \\\\right]' },\n { label: '{a}', snippet: `\\\\left\\\\{ ${CARET} \\\\right\\\\}`, title: '\\\\left\\\\{ \\\\right\\\\}' },\n { label: '|a|', snippet: `\\\\left| ${CARET} \\\\right|`, title: '\\\\left| \\\\right|' },\n { label: '‖a‖', snippet: `\\\\left\\\\| ${CARET} \\\\right\\\\|`, title: '\\\\left\\\\| \\\\right\\\\|' },\n { label: '⌊a⌋', snippet: `\\\\lfloor ${CARET} \\\\rfloor` },\n { label: '⌈a⌉', snippet: `\\\\lceil ${CARET} \\\\rceil` },\n { label: 'v⃗', snippet: `\\\\vec{${CARET}}` },\n { label: 'ā', snippet: `\\\\bar{${CARET}}` },\n { label: 'â', snippet: `\\\\hat{${CARET}}` },\n { label: 'ȧ', snippet: `\\\\dot{${CARET}}` },\n { label: 'a͞b', snippet: `\\\\overline{${CARET}}` },\n {\n label: '(⋮)',\n snippet: `\\\\begin{pmatrix} ${CARET} & \\\\\\\\ & \\\\end{pmatrix}`,\n title: 'pmatrix',\n },\n {\n label: '[⋮]',\n snippet: `\\\\begin{bmatrix} ${CARET} & \\\\\\\\ & \\\\end{bmatrix}`,\n title: 'bmatrix',\n },\n {\n label: '{⋮',\n snippet: `\\\\begin{cases} ${CARET} & \\\\text{if } \\\\\\\\ & \\\\text{otherwise} \\\\end{cases}`,\n title: 'cases',\n },\n { label: 'text', snippet: `\\\\text{${CARET}}` },\n ],\n },\n {\n id: 'greek',\n icon: 'αβ',\n items: [\n ...greek([\n ['α', 'alpha'],\n ['β', 'beta'],\n ['γ', 'gamma'],\n ['δ', 'delta'],\n ['ε', 'epsilon'],\n ['ζ', 'zeta'],\n ['η', 'eta'],\n ['θ', 'theta'],\n ['ι', 'iota'],\n ['κ', 'kappa'],\n ['λ', 'lambda'],\n ['μ', 'mu'],\n ['ν', 'nu'],\n ['ξ', 'xi'],\n ['π', 'pi'],\n ['ρ', 'rho'],\n ['σ', 'sigma'],\n ['τ', 'tau'],\n ['υ', 'upsilon'],\n ['φ', 'phi'],\n ['χ', 'chi'],\n ['ψ', 'psi'],\n ['ω', 'omega'],\n ['ϵ', 'varepsilon'],\n ['ϑ', 'vartheta'],\n ['ϕ', 'varphi'],\n ['ϱ', 'varrho'],\n ['ς', 'varsigma'],\n ['Γ', 'Gamma'],\n ['Δ', 'Delta'],\n ['Θ', 'Theta'],\n ['Λ', 'Lambda'],\n ['Ξ', 'Xi'],\n ['Π', 'Pi'],\n ['Σ', 'Sigma'],\n ['Φ', 'Phi'],\n ['Ψ', 'Psi'],\n ['Ω', 'Omega'],\n ]),\n ],\n },\n {\n id: 'operators',\n icon: '±',\n items: [\n sym('±', '\\\\pm'),\n sym('∓', '\\\\mp'),\n sym('×', '\\\\times'),\n sym('÷', '\\\\div'),\n sym('·', '\\\\cdot'),\n sym('∗', '\\\\ast'),\n sym('∘', '\\\\circ'),\n sym('⊕', '\\\\oplus'),\n sym('⊗', '\\\\otimes'),\n sym('∞', '\\\\infty'),\n sym('∂', '\\\\partial'),\n sym('∇', '\\\\nabla'),\n sym('′', \"'\"),\n sym('°', '^\\\\circ'),\n sym('ℓ', '\\\\ell'),\n sym('ℏ', '\\\\hbar'),\n sym('…', '\\\\ldots'),\n sym('⋯', '\\\\cdots'),\n sym('⋮', '\\\\vdots'),\n sym('⋱', '\\\\ddots'),\n sym('†', '\\\\dagger'),\n sym('%', '\\\\%'),\n sym('∠', '\\\\angle'),\n sym('△', '\\\\triangle'),\n ],\n },\n {\n id: 'relations',\n icon: '≤',\n items: [\n sym('≠', '\\\\neq'),\n sym('≈', '\\\\approx'),\n sym('≡', '\\\\equiv'),\n sym('∼', '\\\\sim'),\n sym('≃', '\\\\simeq'),\n sym('≅', '\\\\cong'),\n sym('∝', '\\\\propto'),\n sym('≤', '\\\\leq'),\n sym('≥', '\\\\geq'),\n sym('≪', '\\\\ll'),\n sym('≫', '\\\\gg'),\n sym('<', '<'),\n sym('>', '>'),\n sym('∈', '\\\\in'),\n sym('∉', '\\\\notin'),\n sym('∋', '\\\\ni'),\n sym('⊂', '\\\\subset'),\n sym('⊆', '\\\\subseteq'),\n sym('⊃', '\\\\supset'),\n sym('⊇', '\\\\supseteq'),\n sym('∣', '\\\\mid'),\n sym('∥', '\\\\parallel'),\n sym('⊥', '\\\\perp'),\n sym(':=', ':='),\n ],\n },\n {\n id: 'arrows',\n icon: '→',\n items: [\n sym('→', '\\\\to'),\n sym('←', '\\\\leftarrow'),\n sym('↔', '\\\\leftrightarrow'),\n sym('⇒', '\\\\Rightarrow'),\n sym('⇐', '\\\\Leftarrow'),\n sym('⇔', '\\\\Leftrightarrow'),\n sym('↦', '\\\\mapsto'),\n sym('↑', '\\\\uparrow'),\n sym('↓', '\\\\downarrow'),\n sym('⟶', '\\\\longrightarrow'),\n sym('⟹', '\\\\Longrightarrow'),\n sym('⇌', '\\\\rightleftharpoons'),\n sym('↪', '\\\\hookrightarrow'),\n sym('∴', '\\\\therefore'),\n sym('∵', '\\\\because'),\n sym('↗', '\\\\nearrow'),\n sym('↘', '\\\\searrow'),\n ],\n },\n {\n id: 'sets',\n icon: 'ℝ',\n items: [\n sym('∅', '\\\\emptyset'),\n sym('ℕ', '\\\\mathbb{N}'),\n sym('ℤ', '\\\\mathbb{Z}'),\n sym('ℚ', '\\\\mathbb{Q}'),\n sym('ℝ', '\\\\mathbb{R}'),\n sym('ℂ', '\\\\mathbb{C}'),\n sym('∪', '\\\\cup'),\n sym('∩', '\\\\cap'),\n sym('∖', '\\\\setminus'),\n sym('∀', '\\\\forall'),\n sym('∃', '\\\\exists'),\n sym('∄', '\\\\nexists'),\n sym('¬', '\\\\neg'),\n sym('∧', '\\\\land'),\n sym('∨', '\\\\lor'),\n sym('⊤', '\\\\top'),\n sym('⊢', '\\\\vdash'),\n sym('⊨', '\\\\models'),\n sym('ℵ', '\\\\aleph'),\n sym('𝒫', '\\\\mathcal{P}'),\n sym('𝔼', '\\\\mathbb{E}'),\n ],\n },\n];\n"],"mappings":"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","names":[]}