@barocss/math-editor 0.1.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 (123) hide show
  1. package/ADAPTERS.md +170 -0
  2. package/CHANGELOG.md +13 -0
  3. package/EMBEDDING.md +95 -0
  4. package/IMPLEMENTATION.md +111 -0
  5. package/LATEX-SCOPE.md +7 -0
  6. package/LICENSE +23 -0
  7. package/LOCALIZATION.md +97 -0
  8. package/README.md +151 -0
  9. package/RELEASING.md +31 -0
  10. package/ROADMAP.md +102 -0
  11. package/SUPPORT.md +160 -0
  12. package/SYMBOLS.md +96 -0
  13. package/VALIDATION.md +85 -0
  14. package/dist/core.d.ts +11 -0
  15. package/dist/core.d.ts.map +1 -0
  16. package/dist/core.js +11 -0
  17. package/dist/core.js.map +1 -0
  18. package/dist/dom/elements.d.ts +3 -0
  19. package/dist/dom/elements.d.ts.map +1 -0
  20. package/dist/dom/elements.js +9 -0
  21. package/dist/dom/elements.js.map +1 -0
  22. package/dist/dom/toolbar.d.ts +11 -0
  23. package/dist/dom/toolbar.d.ts.map +1 -0
  24. package/dist/dom/toolbar.js +46 -0
  25. package/dist/dom/toolbar.js.map +1 -0
  26. package/dist/dom.d.ts +32 -0
  27. package/dist/dom.d.ts.map +1 -0
  28. package/dist/dom.js +581 -0
  29. package/dist/dom.js.map +1 -0
  30. package/dist/editor-labels.d.ts +9 -0
  31. package/dist/editor-labels.d.ts.map +1 -0
  32. package/dist/editor-labels.js +31 -0
  33. package/dist/editor-labels.js.map +1 -0
  34. package/dist/enter-policy.d.ts +11 -0
  35. package/dist/enter-policy.d.ts.map +1 -0
  36. package/dist/enter-policy.js +13 -0
  37. package/dist/enter-policy.js.map +1 -0
  38. package/dist/i18n.d.ts +20 -0
  39. package/dist/i18n.d.ts.map +1 -0
  40. package/dist/i18n.js +58 -0
  41. package/dist/i18n.js.map +1 -0
  42. package/dist/index.d.ts +12 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +12 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/lines.d.ts +7 -0
  47. package/dist/lines.d.ts.map +1 -0
  48. package/dist/lines.js +51 -0
  49. package/dist/lines.js.map +1 -0
  50. package/dist/locales/en.js +214 -0
  51. package/dist/locales/en.json +213 -0
  52. package/dist/locales/ko.js +214 -0
  53. package/dist/locales/ko.json +213 -0
  54. package/dist/math-editor-toolbar.d.ts +24 -0
  55. package/dist/math-editor-toolbar.d.ts.map +1 -0
  56. package/dist/math-editor-toolbar.js +21 -0
  57. package/dist/math-editor-toolbar.js.map +1 -0
  58. package/dist/math-editor.d.ts +23 -0
  59. package/dist/math-editor.d.ts.map +1 -0
  60. package/dist/math-editor.js +692 -0
  61. package/dist/math-editor.js.map +1 -0
  62. package/dist/matrix.d.ts +29 -0
  63. package/dist/matrix.d.ts.map +1 -0
  64. package/dist/matrix.js +125 -0
  65. package/dist/matrix.js.map +1 -0
  66. package/dist/model.d.ts +74 -0
  67. package/dist/model.d.ts.map +1 -0
  68. package/dist/model.js +262 -0
  69. package/dist/model.js.map +1 -0
  70. package/dist/outputs.d.ts +13 -0
  71. package/dist/outputs.d.ts.map +1 -0
  72. package/dist/outputs.js +61 -0
  73. package/dist/outputs.js.map +1 -0
  74. package/dist/range.d.ts +30 -0
  75. package/dist/range.d.ts.map +1 -0
  76. package/dist/range.js +275 -0
  77. package/dist/range.js.map +1 -0
  78. package/dist/react.d.ts +11 -0
  79. package/dist/react.d.ts.map +1 -0
  80. package/dist/react.js +20 -0
  81. package/dist/react.js.map +1 -0
  82. package/dist/session.d.ts +50 -0
  83. package/dist/session.d.ts.map +1 -0
  84. package/dist/session.js +116 -0
  85. package/dist/session.js.map +1 -0
  86. package/dist/solid.d.ts +12 -0
  87. package/dist/solid.d.ts.map +1 -0
  88. package/dist/solid.js +9 -0
  89. package/dist/solid.js.map +1 -0
  90. package/dist/suggestions.d.ts +27 -0
  91. package/dist/suggestions.d.ts.map +1 -0
  92. package/dist/suggestions.js +125 -0
  93. package/dist/suggestions.js.map +1 -0
  94. package/dist/svelte.d.ts +5 -0
  95. package/dist/svelte.d.ts.map +1 -0
  96. package/dist/svelte.js +14 -0
  97. package/dist/svelte.js.map +1 -0
  98. package/dist/symbol-browser.d.ts +8 -0
  99. package/dist/symbol-browser.d.ts.map +1 -0
  100. package/dist/symbol-browser.js +32 -0
  101. package/dist/symbol-browser.js.map +1 -0
  102. package/dist/symbols.d.ts +3 -0
  103. package/dist/symbols.d.ts.map +1 -0
  104. package/dist/symbols.js +94 -0
  105. package/dist/symbols.js.map +1 -0
  106. package/dist/templates.d.ts +16 -0
  107. package/dist/templates.d.ts.map +1 -0
  108. package/dist/templates.js +86 -0
  109. package/dist/templates.js.map +1 -0
  110. package/dist/tokens.d.ts +11 -0
  111. package/dist/tokens.d.ts.map +1 -0
  112. package/dist/tokens.js +24 -0
  113. package/dist/tokens.js.map +1 -0
  114. package/dist/vue.d.ts +5 -0
  115. package/dist/vue.d.ts.map +1 -0
  116. package/dist/vue.js +16 -0
  117. package/dist/vue.js.map +1 -0
  118. package/dist/web-component.d.ts +10 -0
  119. package/dist/web-component.d.ts.map +1 -0
  120. package/dist/web-component.js +67 -0
  121. package/dist/web-component.js.map +1 -0
  122. package/package.json +124 -0
  123. package/src/style.css +781 -0
@@ -0,0 +1,12 @@
1
+ import { type Accessor } from 'solid-js';
2
+ import { type DOMMathEditorOptions } from './dom.js';
3
+ declare module 'solid-js' {
4
+ namespace JSX {
5
+ interface Directives {
6
+ mathEditor: DOMMathEditorOptions;
7
+ }
8
+ }
9
+ }
10
+ /** Solid directive: <div use:mathEditor={options()} />. */
11
+ export declare function mathEditor(host: HTMLElement, options: Accessor<DOMMathEditorOptions>): void;
12
+ //# sourceMappingURL=solid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid.d.ts","sourceRoot":"","sources":["../src/solid.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAmB,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACtE,OAAO,QAAQ,UAAU,CAAC;IACxB,UAAU,GAAG,CAAC;QACZ,UAAU,UAAU;YAClB,UAAU,EAAE,oBAAoB,CAAC;SAClC;KACF;CACF;AACD,2DAA2D;AAC3D,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,oBAAoB,CAAC,QAIpF"}
package/dist/solid.js ADDED
@@ -0,0 +1,9 @@
1
+ import { createEffect, onCleanup } from 'solid-js';
2
+ import { mountMathEditor } from './dom.js';
3
+ /** Solid directive: <div use:mathEditor={options()} />. */
4
+ export function mathEditor(host, options) {
5
+ const editor = mountMathEditor(host, options());
6
+ createEffect(() => editor.update(options()));
7
+ onCleanup(() => editor.destroy());
8
+ }
9
+ //# sourceMappingURL=solid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid.js","sourceRoot":"","sources":["../src/solid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAiB,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,eAAe,EAA6B,MAAM,UAAU,CAAC;AAQtE,2DAA2D;AAC3D,MAAM,UAAU,UAAU,CAAC,IAAiB,EAAE,OAAuC;IACnF,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAChD,YAAY,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7C,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { type MathLocale, type MathMessageParameters } from './i18n.js';
2
+ import { type MathState, type StructureKind } from './model.js';
3
+ export interface MathSuggestion {
4
+ templateId?: string;
5
+ identity?: boolean;
6
+ matrixSize?: number;
7
+ id: string;
8
+ /** Catalog entries hold message keys; findSuggestions returns localized display text. */
9
+ label: string;
10
+ labelParameters?: MathMessageParameters;
11
+ detailParameters?: MathMessageParameters;
12
+ glyph: string;
13
+ detail: string;
14
+ value?: string;
15
+ kind?: StructureKind;
16
+ aliases: string[];
17
+ triggers: string[];
18
+ }
19
+ export declare const mathStructures: MathSuggestion[];
20
+ export declare const matrixPresets: MathSuggestion[];
21
+ export declare const identityPresets: MathSuggestion[];
22
+ export declare function findSuggestions(text: string, caret: number, locale?: MathLocale): {
23
+ query: string;
24
+ candidates: MathSuggestion[];
25
+ };
26
+ export declare function acceptSuggestion(state: MathState, query: string, candidate: MathSuggestion): MathState;
27
+ //# sourceMappingURL=suggestions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggestions.d.ts","sourceRoot":"","sources":["../src/suggestions.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC3B,MAAM,WAAW,CAAC;AAGnB,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,yFAAyF;IACzF,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAiBD,eAAO,MAAM,cAAc,kBAkG1B,CAAC;AACF,eAAO,MAAM,aAAa,EAAE,cAAc,EAQvC,CAAC;AACJ,eAAO,MAAM,eAAe,EAAE,cAAc,EAUzC,CAAC;AA4BJ,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,UAAiB,GACxB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,cAAc,EAAE,CAAA;CAAE,CA2CjD;AACD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,cAAc,GACxB,SAAS,CAiBX"}
@@ -0,0 +1,125 @@
1
+ import { mathLocaleAliases, translate, } from './i18n.js';
2
+ import { insertTemplate, mathTemplates } from './templates.js';
3
+ import { insertIdentityMatrix, insertMatrix } from './matrix.js';
4
+ import { insertStructure, setText, textNodes, } from './model.js';
5
+ import { mathSymbols } from './symbols.js';
6
+ const structure = (kind, glyph, label, aliases, triggers, detail) => ({
7
+ id: kind,
8
+ kind,
9
+ glyph,
10
+ label,
11
+ aliases: [...aliases, translate('ko', label)],
12
+ triggers,
13
+ detail,
14
+ });
15
+ export const mathStructures = [
16
+ structure('matrix', '[▦]', 'structure.matrix', ['matrix', '행렬', 'vector', '벡터'], [], 'structure.matrixDetail'),
17
+ structure('aligned', '≡', 'structure.aligned', ['aligned', 'align', '정렬', '등호'], [], 'structure.alignedDetail'),
18
+ structure('cases', '{', 'structure.cases', ['cases', 'case', '조건', '구간'], [], 'structure.casesDetail'),
19
+ structure('fraction', 'a/b', 'structure.fraction', ['frac', 'fraction', 'division'], ['/'], 'structure.fractionDetail'),
20
+ structure('root', '√', 'structure.root', ['sqrt', 'root'], ['√'], 'structure.rootDetail'),
21
+ structure('superscript', 'x²', 'structure.superscript', ['power', 'superscript'], ['^', '_'], 'structure.superscriptDetail'),
22
+ structure('subscript', 'xᵢ', 'structure.subscript', ['index', 'subscript'], ['_', '^'], 'structure.subscriptDetail'),
23
+ structure('parentheses', '(□)', 'structure.parentheses', ['parentheses', 'round'], ['('], 'structure.parenthesesDetail'),
24
+ structure('brackets', '[□]', 'structure.brackets', ['brackets', 'square'], ['[', '('], 'structure.bracketsDetail'),
25
+ structure('absolute', '|□|', 'structure.absolute', ['abs', 'absolute'], ['|', '('], 'structure.absoluteDetail'),
26
+ structure('sum', '∑', 'structure.sum', ['sum', 'summation', '시그마'], ['∑'], 'structure.limitsDetail'),
27
+ structure('product', '∏', 'structure.product', ['product', 'prod'], ['∏', '*'], 'structure.limitsDetail'),
28
+ structure('integral', '∫', 'structure.integral', ['integral', 'int'], ['∫'], 'structure.integralDetail'),
29
+ ];
30
+ export const matrixPresets = [2, 3, 4].map((size) => ({
31
+ ...mathStructures[0],
32
+ id: `matrix-${size}`,
33
+ label: 'matrix.size',
34
+ labelParameters: { rows: size, columns: size },
35
+ detail: 'grid.dimensions',
36
+ detailParameters: { rows: size, columns: size },
37
+ matrixSize: size,
38
+ }));
39
+ export const identityPresets = [2, 3, 4].map((size) => ({
40
+ ...mathStructures[0],
41
+ id: `identity-${size}`,
42
+ label: 'matrix.identity',
43
+ labelParameters: { rows: size, columns: size },
44
+ glyph: 'I',
45
+ detail: 'matrix.identityDetail',
46
+ aliases: ['identity', '단위', '단위행렬', '항등', '행렬', 'matrix'],
47
+ matrixSize: size,
48
+ identity: true,
49
+ }));
50
+ const catalog = [
51
+ ...mathTemplates.map((t) => ({
52
+ id: `template-${t.id}`,
53
+ templateId: t.id,
54
+ label: t.label,
55
+ labelParameters: t.labelParameters,
56
+ glyph: t.kind === 'zero' ? '0' : t.kind === 'vector' ? '[⋮]' : 'ƒ',
57
+ detail: 'template.detail',
58
+ aliases: t.aliases,
59
+ triggers: [],
60
+ })),
61
+ ...matrixPresets,
62
+ ...identityPresets,
63
+ ...mathStructures.filter((item) => item.kind !== 'matrix'),
64
+ ...mathSymbols.map(([value, label, aliases, triggers]) => ({
65
+ id: `symbol-${value}`,
66
+ value,
67
+ glyph: value,
68
+ label,
69
+ detail: 'suggestion.insertSymbol',
70
+ aliases: [...aliases.split(' '), translate('ko', label)],
71
+ triggers: triggers.split(' ').filter(Boolean),
72
+ })),
73
+ ];
74
+ const triggers = [...new Set(catalog.flatMap((c) => c.triggers))].sort((a, b) => b.length - a.length);
75
+ export function findSuggestions(text, caret, locale = 'ko') {
76
+ const before = text.slice(0, caret);
77
+ // Recognize the longest symbolic spelling first: E/ must never become a fraction query.
78
+ const trigger = triggers.find((t) => before.endsWith(t) &&
79
+ (t.length > 1 || !/[A-Za-z]/.test(t) || !/[\p{L}\p{N}]/u.test(before.at(-2) ?? '')));
80
+ const word = before.match(/(?:\\)?[\p{L}\p{M}]+$/u)?.[0];
81
+ const query = trigger ?? word ?? '';
82
+ if (!query)
83
+ return { query: '', candidates: [] };
84
+ const name = query.replace(/^\\/, '');
85
+ const candidates = trigger
86
+ ? catalog.filter((c) => c.triggers.includes(trigger))
87
+ : catalog.filter((c) => [
88
+ ...c.aliases,
89
+ translate(locale, c.label, c.labelParameters),
90
+ ...mathLocaleAliases(locale, c.id),
91
+ ...(c.matrixSize ? mathLocaleAliases(locale, c.identity ? 'identity' : 'matrix') : []),
92
+ ].some((a) => a.normalize('NFC').toLowerCase().startsWith(name.normalize('NFC').toLowerCase())));
93
+ if (trigger === '_')
94
+ candidates.sort((a, b) => Number(b.kind === 'subscript') - Number(a.kind === 'subscript'));
95
+ if (!trigger && /^[A-Z]/.test(name))
96
+ candidates.sort((a, b) => Number(b.aliases.some((s) => s.startsWith(name))) -
97
+ Number(a.aliases.some((s) => s.startsWith(name))));
98
+ // Literal characters come before editable structures. Stable sorting preserves the
99
+ // existing case-sensitive Greek ranking and relative order within each group.
100
+ candidates.sort((a, b) => Number(b.value !== undefined) - Number(a.value !== undefined));
101
+ return {
102
+ query,
103
+ candidates: candidates.map((item) => ({
104
+ ...item,
105
+ label: translate(locale, item.label, item.labelParameters),
106
+ detail: translate(locale, item.detail, item.detailParameters),
107
+ })),
108
+ };
109
+ }
110
+ export function acceptSuggestion(state, query, candidate) {
111
+ const node = textNodes(state.document).find((n) => n.id === state.caret.id);
112
+ const start = state.caret.start - query.length;
113
+ if (!node || start < 0 || node.text.slice(start, state.caret.start) !== query)
114
+ return state;
115
+ const text = node.text.slice(0, start) + (candidate.value ?? '') + node.text.slice(state.caret.end);
116
+ const next = setText(state, text, start + (candidate.value?.length ?? 0));
117
+ if (candidate.templateId)
118
+ return insertTemplate(next, candidate.templateId);
119
+ if (candidate.matrixSize)
120
+ return (candidate.identity ? insertIdentityMatrix : insertMatrix)(next, candidate.matrixSize);
121
+ return candidate.kind
122
+ ? insertStructure(next, candidate.kind, ['fraction', 'superscript', 'subscript'].includes(candidate.kind))
123
+ : next;
124
+ }
125
+ //# sourceMappingURL=suggestions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggestions.js","sourceRoot":"","sources":["../src/suggestions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Action } from 'svelte/action';
2
+ import { type DOMMathEditorOptions } from './dom.js';
3
+ /** Svelte action: <div use:mathEditor={options} />. */
4
+ export declare const mathEditor: Action<HTMLElement, DOMMathEditorOptions | undefined>;
5
+ //# sourceMappingURL=svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte.d.ts","sourceRoot":"","sources":["../src/svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAmB,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACtE,uDAAuD;AACvD,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,oBAAoB,GAAG,SAAS,CAa5E,CAAC"}
package/dist/svelte.js ADDED
@@ -0,0 +1,14 @@
1
+ import { mountMathEditor } from './dom.js';
2
+ /** Svelte action: <div use:mathEditor={options} />. */
3
+ export const mathEditor = (host, options) => {
4
+ const editor = mountMathEditor(host, options);
5
+ return {
6
+ update(next) {
7
+ editor.update(next ?? {});
8
+ },
9
+ destroy() {
10
+ editor.destroy();
11
+ },
12
+ };
13
+ };
14
+ //# sourceMappingURL=svelte.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte.js","sourceRoot":"","sources":["../src/svelte.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAA6B,MAAM,UAAU,CAAC;AACtE,uDAAuD;AACvD,MAAM,CAAC,MAAM,UAAU,GAA0D,CAC/E,IAAI,EACJ,OAAO,EACP,EAAE;IACF,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,OAAO;QACL,MAAM,CAAC,IAAI;YACT,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO;YACL,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type MathLocale } from './i18n.js';
2
+ /** Discovery UI uses the same catalog as suggestions and LaTeX export. */
3
+ export declare function SymbolBrowser({ locale, onInsert, onClose, }: {
4
+ locale: MathLocale;
5
+ onInsert: (glyph: string) => void;
6
+ onClose: () => void;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=symbol-browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-browser.d.ts","sourceRoot":"","sources":["../src/symbol-browser.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAgC,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAE1E,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,QAAQ,EACR,OAAO,GACR,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,2CA4EA"}
@@ -0,0 +1,32 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from 'react';
3
+ import { mathSymbols } from './symbols.js';
4
+ import { translate, mathLocaleAliases } from './i18n.js';
5
+ /** Discovery UI uses the same catalog as suggestions and LaTeX export. */
6
+ export function SymbolBrowser({ locale, onInsert, onClose, }) {
7
+ const [query, setQuery] = useState('');
8
+ const search = useRef(null);
9
+ const t = (text) => translate(locale, text);
10
+ useEffect(() => {
11
+ search.current?.focus();
12
+ }, []);
13
+ const needle = query.trim().normalize('NFC').toLowerCase();
14
+ const matches = mathSymbols.filter(([glyph, label, aliases, triggers, latex]) => [
15
+ glyph,
16
+ translate('ko', label),
17
+ translate('en', label),
18
+ translate(locale, label),
19
+ ...mathLocaleAliases(locale, `symbol-${glyph}`),
20
+ aliases,
21
+ triggers,
22
+ latex,
23
+ ].some((value) => value.normalize('NFC').toLowerCase().includes(needle)));
24
+ return (_jsxs("section", { className: "me-symbol-browser", "aria-label": t('symbols.title'), onCopy: (event) => event.stopPropagation(), onCut: (event) => event.stopPropagation(), onPaste: (event) => event.stopPropagation(), onKeyDown: (event) => {
25
+ event.stopPropagation();
26
+ if (event.key === 'Escape' && !event.nativeEvent.isComposing) {
27
+ event.preventDefault();
28
+ onClose();
29
+ }
30
+ }, children: [_jsxs("div", { className: "me-symbol-browser-heading", children: [_jsxs("strong", { children: [t('symbols.title'), ' ', _jsxs("small", { children: [matches.length, " / ", mathSymbols.length] })] }), _jsx("button", { type: "button", onClick: onClose, children: t('common.close') })] }), _jsxs("label", { className: "me-symbol-search", children: [t('symbols.search'), _jsx("input", { ref: search, type: "search", value: query, onChange: (event) => setQuery(event.target.value), placeholder: t('symbols.searchPlaceholder') })] }), _jsx("p", { className: "me-symbol-help", children: t('symbols.help') }), _jsx("div", { className: "me-symbol-grid", children: matches.map(([glyph, label]) => (_jsxs("button", { type: "button", "aria-label": `${glyph} — ${t(label)}`, title: `${translate('en', label)} / ${translate('ko', label)}`, onClick: () => onInsert(glyph), children: [_jsx("span", { className: "me-symbol-glyph", "aria-hidden": "true", children: glyph }), _jsx("span", { children: t(label) })] }, glyph))) }), !matches.length && _jsx("p", { role: "status", children: t('symbols.noMatches') })] }));
31
+ }
32
+ //# sourceMappingURL=symbol-browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-browser.js","sourceRoot":"","sources":["../src/symbol-browser.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** One catalog powers discovery and LaTeX export. */
2
+ export declare const mathSymbols: readonly [readonly ["∋", "symbol.contains", "ni contains", "", "\\ni"], readonly ["⊃", "symbol.superset", "supset superset", "", "\\supset"], readonly ["⊇", "symbol.supersetOrEqual", "supseteq", "", "\\supseteq"], readonly ["⊈", "symbol.notSubsetOrEqual", "nsubseteq", "", "\\nsubseteq"], readonly ["∖", "symbol.setDifference", "setminus difference", "", "\\setminus"], readonly ["ℕ", "symbol.naturals", "naturals natural", "", "\\mathbb{N}"], readonly ["ℤ", "symbol.integers", "integers integer", "", "\\mathbb{Z}"], readonly ["ℚ", "symbol.rationals", "rationals rational", "", "\\mathbb{Q}"], readonly ["ℝ", "symbol.reals", "reals real", "", "\\mathbb{R}"], readonly ["ℂ", "symbol.complexes", "complexes complex", "", "\\mathbb{C}"], readonly ["⊥", "symbol.perpendicular", "perp perpendicular", "", "\\perp"], readonly ["∥", "symbol.parallel", "parallel", "", "\\parallel"], readonly ["≅", "symbol.congruent", "cong congruent", "", "\\cong"], readonly ["∼", "symbol.similar", "sim similar", "", "\\sim"], readonly ["↦", "symbol.mapsTo", "mapsto maps", "|->", "\\mapsto"], readonly ["…", "symbol.ellipsis", "ldots ellipsis", "", "\\ldots"], readonly ["⋯", "symbol.centeredDots", "cdots", "", "\\cdots"], readonly ["⋮", "symbol.verticalDots", "vdots", "", "\\vdots"], readonly ["⋱", "symbol.diagonalDots", "ddots", "", "\\ddots"], readonly ["°", "symbol.degree", "degree degrees 각도", "", "{}^{\\circ}"], readonly ["∠", "symbol.angle", "angle", "", "\\angle"], readonly ["+", "symbol.plus", "plus sum", "+", "+"], readonly ["−", "symbol.minus", "minus", "-", "-"], readonly ["±", "symbol.plusMinus", "plusminus sum", "+- +", "\\pm"], readonly ["∓", "symbol.minusPlus", "minusplus", "-+ -", "\\mp"], readonly ["×", "symbol.times", "times multiply", "*", "\\times"], readonly ["·", "symbol.dot", "dot multiply", "*", "\\cdot"], readonly ["÷", "symbol.divide", "divide division", "/", "\\div"], readonly ["=", "symbol.equal", "equal", "=", "="], readonly ["≠", "symbol.notEqual", "neq unequal", "!= /= =", "\\ne"], readonly ["≈", "symbol.approximatelyEqual", "approx", "~ ~~ =", "\\approx"], readonly ["≡", "symbol.equivalent", "equiv", "=== =", "\\equiv"], readonly ["<", "symbol.lessThan", "less", "<", "<"], readonly [">", "symbol.greaterThan", "greater", ">", ">"], readonly ["≤", "symbol.lessOrEqual", "leq less", "<= <- <", "\\le"], readonly ["≥", "symbol.greaterOrEqual", "geq greater", ">= >- >", "\\ge"], readonly ["∝", "symbol.proportional", "proportional", "~", "\\propto"], readonly ["→", "symbol.rightArrow", "rightarrow arrow", "-> -", "\\to"], readonly ["←", "symbol.leftArrow", "leftarrow arrow", "<- <", "\\leftarrow"], readonly ["↔", "symbol.leftRightArrow", "leftrightarrow arrow", "<->", "\\leftrightarrow"], readonly ["⇒", "symbol.implies", "implies arrow", "=> =", "\\Rightarrow"], readonly ["⇔", "symbol.iff", "iff arrow", "<=>", "\\Leftrightarrow"], readonly ["∈", "symbol.elementOf", "in element", "E", "\\in"], readonly ["∉", "symbol.notElementOf", "notin element", "E/", "\\notin"], readonly ["∀", "symbol.forAll", "forall", "A", "\\forall"], readonly ["∃", "symbol.exists", "exists", "E", "\\exists"], readonly ["∪", "symbol.union", "union", "U", "\\cup"], readonly ["∩", "symbol.intersection", "intersection", "", "\\cap"], readonly ["⊂", "symbol.subset", "subset", "<", "\\subset"], readonly ["⊆", "symbol.subsetOrEqual", "subseteq", "<=", "\\subseteq"], readonly ["∅", "symbol.emptySet", "emptyset", "", "\\emptyset"], readonly ["∞", "symbol.infinity", "infinity infty", "", "\\infty"], readonly ["∂", "symbol.partialDerivative", "partial derivative", "", "\\partial"], readonly ["∇", "symbol.nabla", "nabla gradient", "", "\\nabla"], readonly ["∧", "symbol.logicalAnd", "and wedge", "^", "\\wedge"], readonly ["∨", "symbol.logicalOr", "or vee", "", "\\vee"], readonly ["¬", "symbol.logicalNot", "not neg", "!", "\\neg"], readonly ["α", "symbol.alpha", "alpha", "", "\\alpha"], readonly ["β", "symbol.beta", "beta", "", "\\beta"], readonly ["γ", "symbol.gamma", "gamma", "", "\\gamma"], readonly ["δ", "symbol.delta", "delta", "", "\\delta"], readonly ["ε", "symbol.epsilon", "epsilon", "", "\\epsilon"], readonly ["ζ", "symbol.zeta", "zeta", "", "\\zeta"], readonly ["η", "symbol.eta", "eta", "", "\\eta"], readonly ["θ", "symbol.theta", "theta", "", "\\theta"], readonly ["ι", "symbol.iota", "iota", "", "\\iota"], readonly ["κ", "symbol.kappa", "kappa", "", "\\kappa"], readonly ["λ", "symbol.lambda", "lambda", "", "\\lambda"], readonly ["μ", "symbol.mu", "mu", "", "\\mu"], readonly ["ν", "symbol.nu", "nu", "", "\\nu"], readonly ["ξ", "symbol.xi", "xi", "", "\\xi"], readonly ["π", "symbol.pi", "pi", "", "\\pi"], readonly ["ρ", "symbol.rho", "rho", "", "\\rho"], readonly ["σ", "symbol.sigma", "sigma", "", "\\sigma"], readonly ["τ", "symbol.tau", "tau", "", "\\tau"], readonly ["υ", "symbol.upsilon", "upsilon", "", "\\upsilon"], readonly ["φ", "symbol.phi", "phi", "", "\\phi"], readonly ["χ", "symbol.chi", "chi", "", "\\chi"], readonly ["ψ", "symbol.psi", "psi", "", "\\psi"], readonly ["ω", "symbol.omega", "omega", "", "\\omega"], readonly ["Γ", "symbol.upperGamma", "Gamma", "", "\\Gamma"], readonly ["Δ", "symbol.upperDelta", "Delta", "", "\\Delta"], readonly ["Θ", "symbol.upperTheta", "Theta", "", "\\Theta"], readonly ["Λ", "symbol.upperLambda", "Lambda", "", "\\Lambda"], readonly ["Ξ", "symbol.upperXi", "Xi", "", "\\Xi"], readonly ["Π", "symbol.upperPi", "Pi", "", "\\Pi"], readonly ["Σ", "symbol.upperSigma", "Sigma", "", "\\Sigma"], readonly ["Φ", "symbol.upperPhi", "Phi", "", "\\Phi"], readonly ["Ψ", "symbol.upperPsi", "Psi", "", "\\Psi"], readonly ["Ω", "symbol.upperOmega", "Omega", "", "\\Omega"]];
3
+ //# sourceMappingURL=symbols.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../src/symbols.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,eAAO,MAAM,WAAW,uhLA4Fd,CAAC"}
@@ -0,0 +1,94 @@
1
+ /** One catalog powers discovery and LaTeX export. */
2
+ export const mathSymbols = [
3
+ ['∋', 'symbol.contains', 'ni contains', '', '\\ni'],
4
+ ['⊃', 'symbol.superset', 'supset superset', '', '\\supset'],
5
+ ['⊇', 'symbol.supersetOrEqual', 'supseteq', '', '\\supseteq'],
6
+ ['⊈', 'symbol.notSubsetOrEqual', 'nsubseteq', '', '\\nsubseteq'],
7
+ ['∖', 'symbol.setDifference', 'setminus difference', '', '\\setminus'],
8
+ ['ℕ', 'symbol.naturals', 'naturals natural', '', '\\mathbb{N}'],
9
+ ['ℤ', 'symbol.integers', 'integers integer', '', '\\mathbb{Z}'],
10
+ ['ℚ', 'symbol.rationals', 'rationals rational', '', '\\mathbb{Q}'],
11
+ ['ℝ', 'symbol.reals', 'reals real', '', '\\mathbb{R}'],
12
+ ['ℂ', 'symbol.complexes', 'complexes complex', '', '\\mathbb{C}'],
13
+ ['⊥', 'symbol.perpendicular', 'perp perpendicular', '', '\\perp'],
14
+ ['∥', 'symbol.parallel', 'parallel', '', '\\parallel'],
15
+ ['≅', 'symbol.congruent', 'cong congruent', '', '\\cong'],
16
+ ['∼', 'symbol.similar', 'sim similar', '', '\\sim'],
17
+ ['↦', 'symbol.mapsTo', 'mapsto maps', '|->', '\\mapsto'],
18
+ ['…', 'symbol.ellipsis', 'ldots ellipsis', '', '\\ldots'],
19
+ ['⋯', 'symbol.centeredDots', 'cdots', '', '\\cdots'],
20
+ ['⋮', 'symbol.verticalDots', 'vdots', '', '\\vdots'],
21
+ ['⋱', 'symbol.diagonalDots', 'ddots', '', '\\ddots'],
22
+ ['°', 'symbol.degree', 'degree degrees 각도', '', '{}^{\\circ}'],
23
+ ['∠', 'symbol.angle', 'angle', '', '\\angle'],
24
+ ['+', 'symbol.plus', 'plus sum', '+', '+'],
25
+ ['−', 'symbol.minus', 'minus', '-', '-'],
26
+ ['±', 'symbol.plusMinus', 'plusminus sum', '+- +', '\\pm'],
27
+ ['∓', 'symbol.minusPlus', 'minusplus', '-+ -', '\\mp'],
28
+ ['×', 'symbol.times', 'times multiply', '*', '\\times'],
29
+ ['·', 'symbol.dot', 'dot multiply', '*', '\\cdot'],
30
+ ['÷', 'symbol.divide', 'divide division', '/', '\\div'],
31
+ ['=', 'symbol.equal', 'equal', '=', '='],
32
+ ['≠', 'symbol.notEqual', 'neq unequal', '!= /= =', '\\ne'],
33
+ ['≈', 'symbol.approximatelyEqual', 'approx', '~ ~~ =', '\\approx'],
34
+ ['≡', 'symbol.equivalent', 'equiv', '=== =', '\\equiv'],
35
+ ['<', 'symbol.lessThan', 'less', '<', '<'],
36
+ ['>', 'symbol.greaterThan', 'greater', '>', '>'],
37
+ ['≤', 'symbol.lessOrEqual', 'leq less', '<= <- <', '\\le'],
38
+ ['≥', 'symbol.greaterOrEqual', 'geq greater', '>= >- >', '\\ge'],
39
+ ['∝', 'symbol.proportional', 'proportional', '~', '\\propto'],
40
+ ['→', 'symbol.rightArrow', 'rightarrow arrow', '-> -', '\\to'],
41
+ ['←', 'symbol.leftArrow', 'leftarrow arrow', '<- <', '\\leftarrow'],
42
+ ['↔', 'symbol.leftRightArrow', 'leftrightarrow arrow', '<->', '\\leftrightarrow'],
43
+ ['⇒', 'symbol.implies', 'implies arrow', '=> =', '\\Rightarrow'],
44
+ ['⇔', 'symbol.iff', 'iff arrow', '<=>', '\\Leftrightarrow'],
45
+ ['∈', 'symbol.elementOf', 'in element', 'E', '\\in'],
46
+ ['∉', 'symbol.notElementOf', 'notin element', 'E/', '\\notin'],
47
+ ['∀', 'symbol.forAll', 'forall', 'A', '\\forall'],
48
+ ['∃', 'symbol.exists', 'exists', 'E', '\\exists'],
49
+ ['∪', 'symbol.union', 'union', 'U', '\\cup'],
50
+ ['∩', 'symbol.intersection', 'intersection', '', '\\cap'],
51
+ ['⊂', 'symbol.subset', 'subset', '<', '\\subset'],
52
+ ['⊆', 'symbol.subsetOrEqual', 'subseteq', '<=', '\\subseteq'],
53
+ ['∅', 'symbol.emptySet', 'emptyset', '', '\\emptyset'],
54
+ ['∞', 'symbol.infinity', 'infinity infty', '', '\\infty'],
55
+ ['∂', 'symbol.partialDerivative', 'partial derivative', '', '\\partial'],
56
+ ['∇', 'symbol.nabla', 'nabla gradient', '', '\\nabla'],
57
+ ['∧', 'symbol.logicalAnd', 'and wedge', '^', '\\wedge'],
58
+ ['∨', 'symbol.logicalOr', 'or vee', '', '\\vee'],
59
+ ['¬', 'symbol.logicalNot', 'not neg', '!', '\\neg'],
60
+ ['α', 'symbol.alpha', 'alpha', '', '\\alpha'],
61
+ ['β', 'symbol.beta', 'beta', '', '\\beta'],
62
+ ['γ', 'symbol.gamma', 'gamma', '', '\\gamma'],
63
+ ['δ', 'symbol.delta', 'delta', '', '\\delta'],
64
+ ['ε', 'symbol.epsilon', 'epsilon', '', '\\epsilon'],
65
+ ['ζ', 'symbol.zeta', 'zeta', '', '\\zeta'],
66
+ ['η', 'symbol.eta', 'eta', '', '\\eta'],
67
+ ['θ', 'symbol.theta', 'theta', '', '\\theta'],
68
+ ['ι', 'symbol.iota', 'iota', '', '\\iota'],
69
+ ['κ', 'symbol.kappa', 'kappa', '', '\\kappa'],
70
+ ['λ', 'symbol.lambda', 'lambda', '', '\\lambda'],
71
+ ['μ', 'symbol.mu', 'mu', '', '\\mu'],
72
+ ['ν', 'symbol.nu', 'nu', '', '\\nu'],
73
+ ['ξ', 'symbol.xi', 'xi', '', '\\xi'],
74
+ ['π', 'symbol.pi', 'pi', '', '\\pi'],
75
+ ['ρ', 'symbol.rho', 'rho', '', '\\rho'],
76
+ ['σ', 'symbol.sigma', 'sigma', '', '\\sigma'],
77
+ ['τ', 'symbol.tau', 'tau', '', '\\tau'],
78
+ ['υ', 'symbol.upsilon', 'upsilon', '', '\\upsilon'],
79
+ ['φ', 'symbol.phi', 'phi', '', '\\phi'],
80
+ ['χ', 'symbol.chi', 'chi', '', '\\chi'],
81
+ ['ψ', 'symbol.psi', 'psi', '', '\\psi'],
82
+ ['ω', 'symbol.omega', 'omega', '', '\\omega'],
83
+ ['Γ', 'symbol.upperGamma', 'Gamma', '', '\\Gamma'],
84
+ ['Δ', 'symbol.upperDelta', 'Delta', '', '\\Delta'],
85
+ ['Θ', 'symbol.upperTheta', 'Theta', '', '\\Theta'],
86
+ ['Λ', 'symbol.upperLambda', 'Lambda', '', '\\Lambda'],
87
+ ['Ξ', 'symbol.upperXi', 'Xi', '', '\\Xi'],
88
+ ['Π', 'symbol.upperPi', 'Pi', '', '\\Pi'],
89
+ ['Σ', 'symbol.upperSigma', 'Sigma', '', '\\Sigma'],
90
+ ['Φ', 'symbol.upperPhi', 'Phi', '', '\\Phi'],
91
+ ['Ψ', 'symbol.upperPsi', 'Psi', '', '\\Psi'],
92
+ ['Ω', 'symbol.upperOmega', 'Omega', '', '\\Omega'],
93
+ ];
94
+ //# sourceMappingURL=symbols.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbols.js","sourceRoot":"","sources":["../src/symbols.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { MathMessageParameters } from './i18n.js';
2
+ import { type MathState } from './model.js';
3
+ import { type MathRange, type MathFragment } from './range.js';
4
+ export interface MathTemplate {
5
+ id: string;
6
+ label: string;
7
+ labelParameters?: MathMessageParameters;
8
+ aliases: string[];
9
+ size: number;
10
+ kind: 'zero' | 'vector' | 'quadratic' | 'pythagorean';
11
+ }
12
+ export declare const mathTemplates: MathTemplate[];
13
+ /** Each call creates independent, editable nodes; templates are not opaque LaTeX. */
14
+ export declare function createTemplate(id: string): MathFragment | undefined;
15
+ export declare function insertTemplate(state: MathState, id: string, range?: MathRange): MathState;
16
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAoC,KAAK,SAAS,EAAsB,MAAM,YAAY,CAAC;AAClG,OAAO,EAAiB,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAY9E,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,aAAa,CAAC;CACvD;AACD,eAAO,MAAM,aAAa,EAAE,YAAY,EA+BvC,CAAC;AACF,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAmCnE;AACD,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,CAGzF"}
@@ -0,0 +1,86 @@
1
+ import { row } from './model.js';
2
+ import { pasteFragment } from './range.js';
3
+ const expression = (...children) => {
4
+ const result = row();
5
+ result.children = [result.children[0], ...children, row().children[0]];
6
+ return result;
7
+ };
8
+ const text = (value) => row(value).children[0];
9
+ const node = (type, slots) => ({ type, id: row().id, slots });
10
+ const power = (value) => node('superscript', [row(value), row('2')]);
11
+ export const mathTemplates = [
12
+ ...[2, 3, 4].map((size) => ({
13
+ id: `zero-${size}`,
14
+ label: 'matrix.zero',
15
+ labelParameters: { rows: size, columns: size },
16
+ aliases: ['zero', 'zero matrix', '영행렬'],
17
+ size,
18
+ kind: 'zero',
19
+ })),
20
+ ...[2, 3].map((size) => ({
21
+ id: `vector-${size}`,
22
+ label: 'matrix.vector',
23
+ labelParameters: { rows: size },
24
+ aliases: ['vector', 'column', '벡터', '열벡터'],
25
+ size,
26
+ kind: 'vector',
27
+ })),
28
+ {
29
+ id: 'quadratic',
30
+ label: 'template.quadratic',
31
+ aliases: ['quadratic', '근의공식', '근의'],
32
+ size: 0,
33
+ kind: 'quadratic',
34
+ },
35
+ {
36
+ id: 'pythagorean',
37
+ label: 'template.pythagorean',
38
+ aliases: ['pythagorean', '피타고라스'],
39
+ size: 0,
40
+ kind: 'pythagorean',
41
+ },
42
+ ];
43
+ /** Each call creates independent, editable nodes; templates are not opaque LaTeX. */
44
+ export function createTemplate(id) {
45
+ const template = mathTemplates.find((item) => item.id === id);
46
+ if (!template)
47
+ return;
48
+ let result;
49
+ if (template.kind === 'zero' || template.kind === 'vector') {
50
+ const columns = template.kind === 'zero' ? template.size : 1;
51
+ result = expression({
52
+ type: 'matrix',
53
+ id: row().id,
54
+ columns,
55
+ environment: 'bmatrix',
56
+ slots: Array.from({ length: template.size * columns }, () => row(template.kind === 'zero' ? '0' : '')),
57
+ });
58
+ }
59
+ else if (template.kind === 'quadratic') {
60
+ const discriminant = expression(power('b'), text('−4ac'));
61
+ result = expression(text('x='), node('fraction', [expression(text('−b±'), node('root', [discriminant])), row('2a')]));
62
+ }
63
+ else
64
+ result = expression(power('a'), text('+'), power('b'), text('='), power('c'));
65
+ // Merge adjacent text boundaries before exposing a fragment to the clipboard parser.
66
+ const normalize = (r) => {
67
+ const merged = [];
68
+ for (const n of r.children) {
69
+ if (n.type !== 'text')
70
+ n.slots.forEach(normalize);
71
+ const last = merged.at(-1);
72
+ if (n.type === 'text' && last?.type === 'text')
73
+ last.text += n.text;
74
+ else
75
+ merged.push(n);
76
+ }
77
+ r.children = merged;
78
+ };
79
+ normalize(result);
80
+ return { version: 1, rows: [result] };
81
+ }
82
+ export function insertTemplate(state, id, range) {
83
+ const fragment = createTemplate(id);
84
+ return fragment ? pasteFragment(state, fragment, range) : state;
85
+ }
86
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export type MathTokenKind = 'variable' | 'constant' | 'symbol' | 'space' | 'empty' | 'draft';
2
+ export interface MathToken {
3
+ text: string;
4
+ start: number;
5
+ end: number;
6
+ kind: MathTokenKind;
7
+ }
8
+ /** Lexical input units, not inferred mathematical definitions (e and c remain variables). */
9
+ export declare function tokenizeMathText(text: string): MathToken[];
10
+ export declare function tokenIndexAt(tokens: MathToken[], offset: number, affinity?: 'forward' | 'backward'): number;
11
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAC7F,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,aAAa,CAAC;CACrB;AACD,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAgB1D;AACD,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,EAAE,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,SAAS,GAAG,UAAuB,GAC5C,MAAM,CAOR"}
package/dist/tokens.js ADDED
@@ -0,0 +1,24 @@
1
+ /** Lexical input units, not inferred mathematical definitions (e and c remain variables). */
2
+ export function tokenizeMathText(text) {
3
+ const tokens = [];
4
+ const pattern = /\d+(?:\.\d*)?|\.\d+|[\p{L}\p{M}]+|\s+|<=>|<->|===|E\/|->|<-|=>|<=|>=|!=|\/=|\+-|-\+|[^]/gu;
5
+ for (const match of text.matchAll(pattern)) {
6
+ const value = match[0];
7
+ const kind = /^\s+$/u.test(value)
8
+ ? 'space'
9
+ : /^(?:\d|\.\d)/u.test(value)
10
+ ? 'constant'
11
+ : /^[\p{L}\p{M}]+$/u.test(value)
12
+ ? 'variable'
13
+ : 'symbol';
14
+ tokens.push({ text: value, start: match.index, end: match.index + value.length, kind });
15
+ }
16
+ return tokens.length ? tokens : [{ text: '', start: 0, end: 0, kind: 'empty' }];
17
+ }
18
+ export function tokenIndexAt(tokens, offset, affinity = 'backward') {
19
+ const index = tokens.findIndex((token) => affinity === 'forward'
20
+ ? offset >= token.start && offset < token.end
21
+ : offset > token.start && offset <= token.end);
22
+ return index >= 0 ? index : offset <= 0 ? 0 : tokens.length - 1;
23
+ }
24
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAOA,6FAA6F;AAC7F,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,MAAM,OAAO,GACX,2FAA2F,CAAC;IAC9F,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,IAAI,GAAkB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9C,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC7B,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;oBAChC,CAAC,CAAC,UAAU;oBACZ,CAAC,CAAC,QAAQ,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAM,EAAE,GAAG,EAAE,KAAK,CAAC,KAAM,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAClF,CAAC;AACD,MAAM,UAAU,YAAY,CAC1B,MAAmB,EACnB,MAAc,EACd,WAAmC,UAAU;IAE7C,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CACvC,QAAQ,KAAK,SAAS;QACpB,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG;QAC7C,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC,GAAG,CAChD,CAAC;IACF,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAClE,CAAC"}
package/dist/vue.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ import type { ObjectDirective } from 'vue';
2
+ import { type DOMMathEditorOptions } from './dom.js';
3
+ /** Use as v-math-editor. session/defaultValue are mount-only. */
4
+ export declare const vMathEditor: ObjectDirective<HTMLElement, DOMMathEditorOptions>;
5
+ //# sourceMappingURL=vue.d.ts.map