@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.
- package/ADAPTERS.md +170 -0
- package/CHANGELOG.md +13 -0
- package/EMBEDDING.md +95 -0
- package/IMPLEMENTATION.md +111 -0
- package/LATEX-SCOPE.md +7 -0
- package/LICENSE +23 -0
- package/LOCALIZATION.md +97 -0
- package/README.md +151 -0
- package/RELEASING.md +31 -0
- package/ROADMAP.md +102 -0
- package/SUPPORT.md +160 -0
- package/SYMBOLS.md +96 -0
- package/VALIDATION.md +85 -0
- package/dist/core.d.ts +11 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +11 -0
- package/dist/core.js.map +1 -0
- package/dist/dom/elements.d.ts +3 -0
- package/dist/dom/elements.d.ts.map +1 -0
- package/dist/dom/elements.js +9 -0
- package/dist/dom/elements.js.map +1 -0
- package/dist/dom/toolbar.d.ts +11 -0
- package/dist/dom/toolbar.d.ts.map +1 -0
- package/dist/dom/toolbar.js +46 -0
- package/dist/dom/toolbar.js.map +1 -0
- package/dist/dom.d.ts +32 -0
- package/dist/dom.d.ts.map +1 -0
- package/dist/dom.js +581 -0
- package/dist/dom.js.map +1 -0
- package/dist/editor-labels.d.ts +9 -0
- package/dist/editor-labels.d.ts.map +1 -0
- package/dist/editor-labels.js +31 -0
- package/dist/editor-labels.js.map +1 -0
- package/dist/enter-policy.d.ts +11 -0
- package/dist/enter-policy.d.ts.map +1 -0
- package/dist/enter-policy.js +13 -0
- package/dist/enter-policy.js.map +1 -0
- package/dist/i18n.d.ts +20 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +58 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/lines.d.ts +7 -0
- package/dist/lines.d.ts.map +1 -0
- package/dist/lines.js +51 -0
- package/dist/lines.js.map +1 -0
- package/dist/locales/en.js +214 -0
- package/dist/locales/en.json +213 -0
- package/dist/locales/ko.js +214 -0
- package/dist/locales/ko.json +213 -0
- package/dist/math-editor-toolbar.d.ts +24 -0
- package/dist/math-editor-toolbar.d.ts.map +1 -0
- package/dist/math-editor-toolbar.js +21 -0
- package/dist/math-editor-toolbar.js.map +1 -0
- package/dist/math-editor.d.ts +23 -0
- package/dist/math-editor.d.ts.map +1 -0
- package/dist/math-editor.js +692 -0
- package/dist/math-editor.js.map +1 -0
- package/dist/matrix.d.ts +29 -0
- package/dist/matrix.d.ts.map +1 -0
- package/dist/matrix.js +125 -0
- package/dist/matrix.js.map +1 -0
- package/dist/model.d.ts +74 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +262 -0
- package/dist/model.js.map +1 -0
- package/dist/outputs.d.ts +13 -0
- package/dist/outputs.d.ts.map +1 -0
- package/dist/outputs.js +61 -0
- package/dist/outputs.js.map +1 -0
- package/dist/range.d.ts +30 -0
- package/dist/range.d.ts.map +1 -0
- package/dist/range.js +275 -0
- package/dist/range.js.map +1 -0
- package/dist/react.d.ts +11 -0
- package/dist/react.d.ts.map +1 -0
- package/dist/react.js +20 -0
- package/dist/react.js.map +1 -0
- package/dist/session.d.ts +50 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +116 -0
- package/dist/session.js.map +1 -0
- package/dist/solid.d.ts +12 -0
- package/dist/solid.d.ts.map +1 -0
- package/dist/solid.js +9 -0
- package/dist/solid.js.map +1 -0
- package/dist/suggestions.d.ts +27 -0
- package/dist/suggestions.d.ts.map +1 -0
- package/dist/suggestions.js +125 -0
- package/dist/suggestions.js.map +1 -0
- package/dist/svelte.d.ts +5 -0
- package/dist/svelte.d.ts.map +1 -0
- package/dist/svelte.js +14 -0
- package/dist/svelte.js.map +1 -0
- package/dist/symbol-browser.d.ts +8 -0
- package/dist/symbol-browser.d.ts.map +1 -0
- package/dist/symbol-browser.js +32 -0
- package/dist/symbol-browser.js.map +1 -0
- package/dist/symbols.d.ts +3 -0
- package/dist/symbols.d.ts.map +1 -0
- package/dist/symbols.js +94 -0
- package/dist/symbols.js.map +1 -0
- package/dist/templates.d.ts +16 -0
- package/dist/templates.d.ts.map +1 -0
- package/dist/templates.js +86 -0
- package/dist/templates.js.map +1 -0
- package/dist/tokens.d.ts +11 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +24 -0
- package/dist/tokens.js.map +1 -0
- package/dist/vue.d.ts +5 -0
- package/dist/vue.d.ts.map +1 -0
- package/dist/vue.js +16 -0
- package/dist/vue.js.map +1 -0
- package/dist/web-component.d.ts +10 -0
- package/dist/web-component.d.ts.map +1 -0
- package/dist/web-component.js +67 -0
- package/dist/web-component.js.map +1 -0
- package/package.json +124 -0
- package/src/style.css +781 -0
package/dist/solid.d.ts
ADDED
|
@@ -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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"}
|
package/dist/svelte.d.ts
ADDED
|
@@ -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"}
|
package/dist/symbols.js
ADDED
|
@@ -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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"}
|
package/dist/tokens.d.ts
ADDED
|
@@ -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
|