@barocss/math-editor 0.2.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ADAPTERS.md +25 -14
- package/API-JAVASCRIPT.md +1 -1
- package/API-REACT.md +5 -1
- package/API-SESSION.md +178 -6
- package/API-SOLID.md +1 -1
- package/API-SVELTE.md +1 -1
- package/API-VUE.md +1 -1
- package/API-WEB-COMPONENT.md +3 -1
- package/CHANGELOG.md +106 -0
- package/EDITING-SCENARIOS.md +174 -0
- package/EMBEDDING.md +4 -0
- package/IMPLEMENTATION.md +122 -2
- package/JSON-MODEL.md +1 -0
- package/LATEX-GUIDE.md +30 -1
- package/LATEX-MODEL.md +12 -0
- package/LATEX-SCOPE.md +12 -3
- package/LICENSE +1 -3
- package/README.md +201 -39
- package/RELEASING.md +81 -10
- package/RENDERING-TESTS.md +79 -0
- package/ROADMAP.md +220 -11
- package/STYLING.md +157 -0
- package/SUPPORT.md +24 -12
- package/VALIDATION.md +444 -4
- package/dist/context-tools.d.ts +21 -0
- package/dist/context-tools.js +37 -0
- package/dist/core.d.ts +5 -1
- package/dist/core.js +5 -1
- package/dist/document-codec.d.ts +0 -1
- package/dist/document-codec.js +0 -1
- package/dist/dom/caret-geometry.d.ts +3 -0
- package/dist/dom/caret-geometry.js +41 -0
- package/dist/dom/context-keyboard.d.ts +2 -0
- package/dist/dom/context-keyboard.js +22 -0
- package/dist/dom/elements.d.ts +1 -2
- package/dist/dom/elements.js +2 -3
- package/dist/dom/latex-panel.d.ts +10 -0
- package/dist/dom/latex-panel.js +59 -0
- package/dist/dom/matrix-selection.d.ts +11 -0
- package/dist/dom/matrix-selection.js +30 -0
- package/dist/dom/menu-position.d.ts +17 -2
- package/dist/dom/menu-position.js +129 -16
- package/dist/dom/presentation-controls.d.ts +4 -0
- package/dist/dom/presentation-controls.js +56 -0
- package/dist/dom/quick-panel.d.ts +12 -0
- package/dist/dom/quick-panel.js +102 -0
- package/dist/dom/selection.d.ts +29 -0
- package/dist/dom/selection.js +53 -0
- package/dist/dom/symbol-panel.d.ts +9 -0
- package/dist/dom/symbol-panel.js +146 -0
- package/dist/dom/theme.d.ts +6 -0
- package/dist/dom/theme.js +68 -0
- package/dist/dom/toolbar-catalog.d.ts +10 -0
- package/dist/dom/toolbar-catalog.js +35 -0
- package/dist/dom/toolbar.d.ts +13 -2
- package/dist/dom/toolbar.js +295 -28
- package/dist/dom.d.ts +9 -1
- package/dist/dom.js +682 -151
- package/dist/editor-labels.d.ts +0 -1
- package/dist/editor-labels.js +0 -1
- package/dist/enter-policy.d.ts +0 -1
- package/dist/enter-policy.js +0 -1
- package/dist/fences.d.ts +0 -1
- package/dist/fences.js +0 -1
- package/dist/i18n.d.ts +0 -1
- package/dist/i18n.js +0 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +4 -1
- package/dist/latex-insertion.d.ts +12 -0
- package/dist/latex-insertion.js +26 -0
- package/dist/latex-paste-panel.d.ts +3 -0
- package/dist/latex-paste-panel.js +18 -0
- package/dist/latex.d.ts +0 -1
- package/dist/latex.js +11 -1
- package/dist/lines.d.ts +0 -1
- package/dist/lines.js +0 -1
- package/dist/locales/en.js +39 -1
- package/dist/locales/en.json +39 -1
- package/dist/locales/ko.js +39 -1
- package/dist/locales/ko.json +39 -1
- package/dist/math-editor-toolbar.d.ts +4 -2
- package/dist/math-editor-toolbar.js +3 -4
- package/dist/math-editor.d.ts +7 -2
- package/dist/math-editor.js +661 -308
- package/dist/math-layout.d.ts +12 -0
- package/dist/math-layout.js +59 -0
- package/dist/math-spacing.d.ts +13 -0
- package/dist/math-spacing.js +87 -0
- package/dist/matrix-range.d.ts +40 -0
- package/dist/matrix-range.js +242 -0
- package/dist/matrix.d.ts +0 -1
- package/dist/matrix.js +0 -1
- package/dist/model.d.ts +4 -1
- package/dist/model.js +49 -5
- package/dist/outputs.d.ts +0 -1
- package/dist/outputs.js +0 -1
- package/dist/preferences.d.ts +24 -0
- package/dist/preferences.js +66 -0
- package/dist/presentation-controls.d.ts +10 -0
- package/dist/presentation-controls.js +10 -0
- package/dist/presentation.d.ts +13 -0
- package/dist/presentation.js +86 -0
- package/dist/quick-panel.d.ts +2 -0
- package/dist/quick-panel.js +17 -0
- package/dist/range.d.ts +2 -1
- package/dist/range.js +11 -1
- package/dist/react.d.ts +0 -1
- package/dist/react.js +0 -1
- package/dist/root-transform.d.ts +19 -0
- package/dist/root-transform.js +69 -0
- package/dist/session.d.ts +31 -2
- package/dist/session.js +108 -7
- package/dist/solid.d.ts +0 -1
- package/dist/solid.js +0 -1
- package/dist/suggestions.d.ts +13 -1
- package/dist/suggestions.js +153 -12
- package/dist/svelte.d.ts +0 -1
- package/dist/svelte.js +0 -1
- package/dist/symbol-browser.d.ts +0 -1
- package/dist/symbol-browser.js +0 -1
- package/dist/symbols.d.ts +0 -1
- package/dist/symbols.js +0 -1
- package/dist/templates.d.ts +0 -1
- package/dist/templates.js +0 -1
- package/dist/tokens.d.ts +0 -1
- package/dist/tokens.js +0 -1
- package/dist/vertical-navigation.d.ts +15 -0
- package/dist/vertical-navigation.js +145 -0
- package/dist/vue.d.ts +0 -1
- package/dist/vue.js +0 -1
- package/dist/web-component.d.ts +0 -1
- package/dist/web-component.js +9 -2
- package/package.json +11 -3
- package/src/fonts/KaTeX_Math-Italic.woff2 +0 -0
- package/src/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- package/src/fonts/README.md +18 -0
- package/src/shapes/README.md +21 -0
- package/src/shapes/parenthesis-bottom.svg +1 -0
- package/src/shapes/parenthesis-top.svg +1 -0
- package/src/shapes/parenthesis.svg +1 -0
- package/src/shapes/radical.svg +1 -0
- package/src/style.css +949 -173
- package/dist/core.d.ts.map +0 -1
- package/dist/core.js.map +0 -1
- package/dist/document-codec.d.ts.map +0 -1
- package/dist/document-codec.js.map +0 -1
- package/dist/dom/elements.d.ts.map +0 -1
- package/dist/dom/elements.js.map +0 -1
- package/dist/dom/menu-position.d.ts.map +0 -1
- package/dist/dom/menu-position.js.map +0 -1
- package/dist/dom/toolbar.d.ts.map +0 -1
- package/dist/dom/toolbar.js.map +0 -1
- package/dist/dom.d.ts.map +0 -1
- package/dist/dom.js.map +0 -1
- package/dist/editor-labels.d.ts.map +0 -1
- package/dist/editor-labels.js.map +0 -1
- package/dist/enter-policy.d.ts.map +0 -1
- package/dist/enter-policy.js.map +0 -1
- package/dist/fences.d.ts.map +0 -1
- package/dist/fences.js.map +0 -1
- package/dist/i18n.d.ts.map +0 -1
- package/dist/i18n.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/latex.d.ts.map +0 -1
- package/dist/latex.js.map +0 -1
- package/dist/lines.d.ts.map +0 -1
- package/dist/lines.js.map +0 -1
- package/dist/math-editor-toolbar.d.ts.map +0 -1
- package/dist/math-editor-toolbar.js.map +0 -1
- package/dist/math-editor.d.ts.map +0 -1
- package/dist/math-editor.js.map +0 -1
- package/dist/matrix.d.ts.map +0 -1
- package/dist/matrix.js.map +0 -1
- package/dist/model.d.ts.map +0 -1
- package/dist/model.js.map +0 -1
- package/dist/outputs.d.ts.map +0 -1
- package/dist/outputs.js.map +0 -1
- package/dist/range.d.ts.map +0 -1
- package/dist/range.js.map +0 -1
- package/dist/react.d.ts.map +0 -1
- package/dist/react.js.map +0 -1
- package/dist/session.d.ts.map +0 -1
- package/dist/session.js.map +0 -1
- package/dist/solid.d.ts.map +0 -1
- package/dist/solid.js.map +0 -1
- package/dist/suggestions.d.ts.map +0 -1
- package/dist/suggestions.js.map +0 -1
- package/dist/svelte.d.ts.map +0 -1
- package/dist/svelte.js.map +0 -1
- package/dist/symbol-browser.d.ts.map +0 -1
- package/dist/symbol-browser.js.map +0 -1
- package/dist/symbols.d.ts.map +0 -1
- package/dist/symbols.js.map +0 -1
- package/dist/templates.d.ts.map +0 -1
- package/dist/templates.js.map +0 -1
- package/dist/tokens.d.ts.map +0 -1
- package/dist/tokens.js.map +0 -1
- package/dist/vue.d.ts.map +0 -1
- package/dist/vue.js.map +0 -1
- package/dist/web-component.d.ts.map +0 -1
- package/dist/web-component.js.map +0 -1
package/src/style.css
CHANGED
|
@@ -1,23 +1,39 @@
|
|
|
1
|
-
/*
|
|
2
|
-
|
|
1
|
+
/* Match the reference math faces in both editable inputs and passive runs.
|
|
2
|
+
The bundled fonts retain their KaTeX license in src/fonts. */
|
|
3
3
|
@font-face {
|
|
4
4
|
font-family: 'Barocss Math Glyphs';
|
|
5
5
|
src: url('./fonts/KaTeX_Main-Regular.woff2') format('woff2');
|
|
6
|
-
|
|
6
|
+
font-style: normal;
|
|
7
|
+
font-weight: 400;
|
|
8
|
+
font-display: swap;
|
|
9
|
+
}
|
|
10
|
+
@font-face {
|
|
11
|
+
font-family: 'Barocss Math Glyphs';
|
|
12
|
+
src: url('./fonts/KaTeX_Math-Italic.woff2') format('woff2');
|
|
13
|
+
font-style: italic;
|
|
14
|
+
font-weight: 400;
|
|
15
|
+
font-display: swap;
|
|
16
|
+
}
|
|
17
|
+
@font-face {
|
|
18
|
+
font-family: 'Barocss Large Operators';
|
|
19
|
+
src: url('./fonts/KaTeX_Size2-Regular.woff2') format('woff2');
|
|
20
|
+
font-style: normal;
|
|
21
|
+
font-display: swap;
|
|
7
22
|
}
|
|
8
23
|
.me-editor {
|
|
9
|
-
--me-
|
|
10
|
-
--me-
|
|
11
|
-
|
|
12
|
-
font-family: system-ui, sans-serif;
|
|
24
|
+
color: var(--me-text, #202c27);
|
|
25
|
+
font-family: var(--me-ui-font-family, system-ui, sans-serif);
|
|
26
|
+
background: var(--me-background, transparent);
|
|
13
27
|
}
|
|
14
28
|
.me-tools {
|
|
29
|
+
color: var(--me-text, #202c27);
|
|
30
|
+
background: var(--me-toolbar-background, transparent);
|
|
15
31
|
display: flex;
|
|
16
32
|
align-items: center;
|
|
17
33
|
flex-wrap: wrap;
|
|
18
|
-
gap: 4px;
|
|
19
|
-
padding: 12px;
|
|
20
|
-
border-bottom: 1px solid var(--me-line);
|
|
34
|
+
gap: var(--me-toolbar-gap, 4px);
|
|
35
|
+
padding: var(--me-toolbar-padding, 12px);
|
|
36
|
+
border-bottom: 1px solid var(--me-line, #d9e1dd);
|
|
21
37
|
}
|
|
22
38
|
.me-tools button {
|
|
23
39
|
display: flex;
|
|
@@ -25,33 +41,33 @@
|
|
|
25
41
|
gap: 7px;
|
|
26
42
|
background: transparent;
|
|
27
43
|
border: 1px solid transparent;
|
|
28
|
-
border-radius: 6px;
|
|
44
|
+
border-radius: var(--me-control-radius, 6px);
|
|
29
45
|
padding: 7px 9px;
|
|
30
46
|
color: inherit;
|
|
31
47
|
cursor: pointer;
|
|
32
|
-
font: 12px system-ui;
|
|
48
|
+
font: 12px var(--me-ui-font-family, system-ui, sans-serif);
|
|
33
49
|
}
|
|
34
50
|
.me-tools button span {
|
|
35
51
|
font: 20px 'Barocss Math Glyphs', Georgia, serif;
|
|
36
52
|
}
|
|
37
53
|
.me-tools button:hover {
|
|
38
|
-
background: #edf3ef;
|
|
54
|
+
background: var(--me-hover-background, #edf3ef);
|
|
39
55
|
}
|
|
40
56
|
.me-tools button:disabled {
|
|
41
57
|
opacity: 0.35;
|
|
42
58
|
cursor: default;
|
|
43
59
|
}
|
|
44
60
|
.me-tools button:focus-visible {
|
|
45
|
-
outline: 2px solid var(--me-accent);
|
|
61
|
+
outline: 2px solid var(--me-accent, #236957);
|
|
46
62
|
}
|
|
47
63
|
.me-divider {
|
|
48
64
|
height: 20px;
|
|
49
|
-
border-left: 1px solid var(--me-line);
|
|
65
|
+
border-left: 1px solid var(--me-line, #d9e1dd);
|
|
50
66
|
margin: 0 6px;
|
|
51
67
|
}
|
|
52
68
|
.me-surface {
|
|
53
|
-
min-height: 190px;
|
|
54
|
-
padding: 48px 32px;
|
|
69
|
+
min-height: var(--me-surface-min-height, 190px);
|
|
70
|
+
padding: var(--me-surface-padding, 48px 32px);
|
|
55
71
|
display: flex;
|
|
56
72
|
align-items: center;
|
|
57
73
|
overflow-x: auto;
|
|
@@ -82,8 +98,8 @@
|
|
|
82
98
|
outline: none;
|
|
83
99
|
}
|
|
84
100
|
.me-input:focus {
|
|
85
|
-
background: #e7f2ed;
|
|
86
|
-
box-shadow: 0 2px 0 var(--me-accent);
|
|
101
|
+
background: var(--me-active-background, #e7f2ed);
|
|
102
|
+
box-shadow: 0 2px 0 var(--me-accent, #236957);
|
|
87
103
|
}
|
|
88
104
|
.me-input::placeholder {
|
|
89
105
|
color: #aabbb1;
|
|
@@ -124,11 +140,12 @@
|
|
|
124
140
|
align-self: flex-end;
|
|
125
141
|
transform: translateY(0.3em);
|
|
126
142
|
}
|
|
143
|
+
/* Normal scripts use TeX script size; root indices use scriptscript size (VIS-004/005). */
|
|
127
144
|
.me-superscript > .me-slot:last-child .me-input,
|
|
128
145
|
.me-subscript > .me-slot:last-child .me-input,
|
|
129
146
|
.me-superscript > .me-slot:last-child .me-measure,
|
|
130
147
|
.me-subscript > .me-slot:last-child .me-measure {
|
|
131
|
-
font-size: calc(var(--me-font-size, 22px) *
|
|
148
|
+
font-size: calc(var(--me-font-size, 22px) * 0.7);
|
|
132
149
|
}
|
|
133
150
|
.me-suggestions {
|
|
134
151
|
position: absolute;
|
|
@@ -137,10 +154,10 @@
|
|
|
137
154
|
left: 0;
|
|
138
155
|
min-width: 180px;
|
|
139
156
|
padding: 5px;
|
|
140
|
-
border: 1px solid var(--me-line);
|
|
157
|
+
border: 1px solid var(--me-line, #d9e1dd);
|
|
141
158
|
border-radius: 8px;
|
|
142
|
-
background: white;
|
|
143
|
-
box-shadow: 0 8px 24px #172c2420;
|
|
159
|
+
background: var(--me-panel-background, white);
|
|
160
|
+
box-shadow: var(--me-menu-shadow, 0 8px 24px #172c2420);
|
|
144
161
|
display: flex;
|
|
145
162
|
flex-direction: column;
|
|
146
163
|
}
|
|
@@ -149,18 +166,19 @@
|
|
|
149
166
|
justify-content: space-between;
|
|
150
167
|
gap: 20px;
|
|
151
168
|
border: 0;
|
|
152
|
-
background: white;
|
|
169
|
+
background: var(--me-panel-background, white);
|
|
153
170
|
padding: 9px;
|
|
154
171
|
text-align: left;
|
|
155
|
-
color: #202c27;
|
|
156
|
-
border-radius: 4px;
|
|
172
|
+
color: var(--me-text, #202c27);
|
|
173
|
+
border-radius: var(--me-control-radius, 4px);
|
|
174
|
+
font: inherit;
|
|
157
175
|
cursor: pointer;
|
|
158
176
|
}
|
|
159
177
|
.me-suggestions button[aria-selected='true'] {
|
|
160
|
-
background: #e7f2ed;
|
|
178
|
+
background: var(--me-active-background, #e7f2ed);
|
|
161
179
|
}
|
|
162
180
|
.me-suggestions small {
|
|
163
|
-
color: #6a7b72;
|
|
181
|
+
color: var(--me-muted, #6a7b72);
|
|
164
182
|
}
|
|
165
183
|
|
|
166
184
|
/* The hidden twin uses browser font shaping, including CJK fallback fonts and IME drafts.
|
|
@@ -193,36 +211,52 @@
|
|
|
193
211
|
padding-inline: 1px;
|
|
194
212
|
}
|
|
195
213
|
.me-empty-boundary .me-input {
|
|
196
|
-
border: 1px dashed var(--me-line);
|
|
214
|
+
border: 1px dashed var(--me-line, #d9e1dd);
|
|
197
215
|
}
|
|
198
216
|
.me-suggestion-panel {
|
|
199
217
|
position: fixed;
|
|
200
|
-
z-index: 1000;
|
|
218
|
+
z-index: var(--me-menu-z-index, 1000);
|
|
201
219
|
display: flex;
|
|
202
220
|
flex-direction: column;
|
|
203
221
|
width: min(336px, calc(100vw - 16px));
|
|
204
|
-
background: #fff;
|
|
205
|
-
color: #202c27;
|
|
206
|
-
border: 1px solid #d9e1dd;
|
|
207
|
-
border-radius: 10px;
|
|
208
|
-
box-shadow: 0 12px 32px #172c2426;
|
|
209
|
-
font: 13px/1.4 system-ui, sans-serif;
|
|
222
|
+
background: var(--me-panel-background, #fff);
|
|
223
|
+
color: var(--me-text, #202c27);
|
|
224
|
+
border: 1px solid var(--me-line, #d9e1dd);
|
|
225
|
+
border-radius: var(--me-radius, 10px);
|
|
226
|
+
box-shadow: var(--me-menu-shadow, 0 12px 32px #172c2426);
|
|
227
|
+
font: 13px/1.4 var(--me-ui-font-family, system-ui, sans-serif);
|
|
228
|
+
/* A menu can live inside a centered or formatted host document. */
|
|
229
|
+
text-align: start;
|
|
230
|
+
text-indent: 0;
|
|
231
|
+
text-transform: none;
|
|
232
|
+
letter-spacing: normal;
|
|
233
|
+
word-spacing: normal;
|
|
234
|
+
white-space: normal;
|
|
210
235
|
overflow: hidden;
|
|
211
236
|
}
|
|
212
237
|
.me-suggestion-heading,
|
|
213
238
|
.me-suggestion-footer {
|
|
214
239
|
padding: 10px 12px;
|
|
215
240
|
font-size: 11px;
|
|
216
|
-
color: #708075;
|
|
241
|
+
color: var(--me-muted, #708075);
|
|
217
242
|
flex-shrink: 0;
|
|
218
243
|
}
|
|
219
244
|
.me-suggestion-heading {
|
|
220
245
|
display: flex;
|
|
246
|
+
flex-wrap: wrap;
|
|
221
247
|
justify-content: space-between;
|
|
222
|
-
|
|
248
|
+
gap: 4px 12px;
|
|
249
|
+
border-bottom: 1px solid var(--me-line, #edf0eb);
|
|
250
|
+
}
|
|
251
|
+
.me-suggestion-query {
|
|
252
|
+
min-width: 0;
|
|
253
|
+
max-width: 100%;
|
|
254
|
+
overflow: hidden;
|
|
255
|
+
text-overflow: ellipsis;
|
|
256
|
+
white-space: nowrap;
|
|
223
257
|
}
|
|
224
258
|
.me-suggestion-footer {
|
|
225
|
-
border-top: 1px solid #edf0eb;
|
|
259
|
+
border-top: 1px solid var(--me-line, #edf0eb);
|
|
226
260
|
}
|
|
227
261
|
.me-suggestion-panel .me-suggestions {
|
|
228
262
|
position: static;
|
|
@@ -244,8 +278,13 @@
|
|
|
244
278
|
.me-candidate-glyph {
|
|
245
279
|
font: 26px 'Barocss Math Glyphs', Georgia, serif;
|
|
246
280
|
min-width: 42px;
|
|
281
|
+
flex-shrink: 0;
|
|
247
282
|
text-align: center;
|
|
248
283
|
}
|
|
284
|
+
.me-candidate-copy {
|
|
285
|
+
min-width: 0;
|
|
286
|
+
overflow-wrap: anywhere;
|
|
287
|
+
}
|
|
249
288
|
.me-suggestions strong {
|
|
250
289
|
display: block;
|
|
251
290
|
font-size: 13px;
|
|
@@ -263,10 +302,10 @@
|
|
|
263
302
|
}
|
|
264
303
|
.me-limit .me-input,
|
|
265
304
|
.me-limit .me-measure {
|
|
266
|
-
font-size: calc(var(--me-font-size, 22px) *
|
|
305
|
+
font-size: calc(var(--me-font-size, 22px) * 0.7);
|
|
267
306
|
}
|
|
268
307
|
.me-operator-glyph {
|
|
269
|
-
font:
|
|
308
|
+
font: calc(var(--me-font-size, 22px) * 1.59) / 1 'Barocss Math Glyphs', Georgia, serif;
|
|
270
309
|
}
|
|
271
310
|
.me-large-operator {
|
|
272
311
|
gap: 8px;
|
|
@@ -277,63 +316,63 @@
|
|
|
277
316
|
|
|
278
317
|
/* Slot roles are presentation metadata, not a claim that text is a variable or constant. */
|
|
279
318
|
.me-row {
|
|
280
|
-
--me-ink: #2358a0;
|
|
319
|
+
--me-ink: var(--me-variable, #2358a0);
|
|
281
320
|
--me-tint: #eff5ff;
|
|
282
321
|
--me-focus: #dbeaff;
|
|
283
|
-
--me-ring: #3676d3;
|
|
322
|
+
--me-ring: var(--me-focus-color, #3676d3);
|
|
284
323
|
}
|
|
285
324
|
.me-row[data-math-role='numerator'],
|
|
286
325
|
.me-row[data-math-role='base'] {
|
|
287
|
-
--me-ink: #2358a0;
|
|
326
|
+
--me-ink: var(--me-variable, #2358a0);
|
|
288
327
|
--me-tint: #eff5ff;
|
|
289
328
|
--me-focus: #dbeaff;
|
|
290
|
-
--me-ring: #3676d3;
|
|
329
|
+
--me-ring: var(--me-focus-color, #3676d3);
|
|
291
330
|
}
|
|
292
331
|
.me-row[data-math-role='denominator'],
|
|
293
332
|
.me-row[data-math-role='radicand'] {
|
|
294
|
-
--me-ink: #086b60;
|
|
333
|
+
--me-ink: var(--me-variable, #086b60);
|
|
295
334
|
--me-tint: #eaf7f1;
|
|
296
335
|
--me-focus: #cef0e4;
|
|
297
|
-
--me-ring: #138777;
|
|
336
|
+
--me-ring: var(--me-focus-color, #138777);
|
|
298
337
|
}
|
|
299
338
|
.me-row[data-math-role='exponent'],
|
|
300
339
|
.me-row[data-math-role='upper'] {
|
|
301
|
-
--me-ink: #88430b;
|
|
340
|
+
--me-ink: var(--me-variable, #88430b);
|
|
302
341
|
--me-tint: #fff4e5;
|
|
303
342
|
--me-focus: #ffe2b4;
|
|
304
|
-
--me-ring: #bd6a18;
|
|
343
|
+
--me-ring: var(--me-focus-color, #bd6a18);
|
|
305
344
|
}
|
|
306
345
|
.me-row[data-math-role='index'],
|
|
307
346
|
.me-row[data-math-role='lower'] {
|
|
308
|
-
--me-ink: #7c3d90;
|
|
347
|
+
--me-ink: var(--me-variable, #7c3d90);
|
|
309
348
|
--me-tint: #f8eefb;
|
|
310
349
|
--me-focus: #edd7f6;
|
|
311
|
-
--me-ring: #9d50b1;
|
|
350
|
+
--me-ring: var(--me-focus-color, #9d50b1);
|
|
312
351
|
}
|
|
313
352
|
.me-row[data-math-role='group'] {
|
|
314
|
-
--me-ink: #4e53a4;
|
|
353
|
+
--me-ink: var(--me-variable, #4e53a4);
|
|
315
354
|
--me-tint: #f1f0ff;
|
|
316
355
|
--me-focus: #e1dfff;
|
|
317
|
-
--me-ring: #726ad0;
|
|
356
|
+
--me-ring: var(--me-focus-color, #726ad0);
|
|
318
357
|
}
|
|
319
358
|
.me-input {
|
|
320
359
|
color: var(--me-ink);
|
|
321
|
-
background: var(--me-tint);
|
|
360
|
+
background: var(--me-input-background, var(--me-tint));
|
|
322
361
|
border-radius: 4px;
|
|
323
362
|
caret-color: var(--me-ink);
|
|
324
363
|
}
|
|
325
364
|
.me-input:hover:not(:focus) {
|
|
326
|
-
background: var(--me-focus);
|
|
365
|
+
background: var(--me-input-focus-background, var(--me-focus));
|
|
327
366
|
box-shadow: none;
|
|
328
367
|
}
|
|
329
368
|
.me-input:focus {
|
|
330
|
-
background: var(--me-focus);
|
|
369
|
+
background: var(--me-input-focus-background, var(--me-focus));
|
|
331
370
|
outline: none;
|
|
332
371
|
box-shadow: none;
|
|
333
372
|
}
|
|
334
373
|
.me-input::selection {
|
|
335
|
-
color: white;
|
|
336
|
-
background: var(--me-ring);
|
|
374
|
+
color: var(--me-selection-color, white);
|
|
375
|
+
background: var(--me-selection-background, var(--me-ring));
|
|
337
376
|
}
|
|
338
377
|
.me-input::placeholder {
|
|
339
378
|
color: var(--me-ink);
|
|
@@ -344,7 +383,7 @@
|
|
|
344
383
|
box-shadow: none;
|
|
345
384
|
}
|
|
346
385
|
.me-empty-boundary .me-input:hover:not(:focus) {
|
|
347
|
-
background: var(--me-focus);
|
|
386
|
+
background: var(--me-input-focus-background, var(--me-focus));
|
|
348
387
|
}
|
|
349
388
|
.me-empty-boundary .me-input:focus {
|
|
350
389
|
border-color: transparent;
|
|
@@ -439,18 +478,18 @@
|
|
|
439
478
|
flex-wrap: wrap;
|
|
440
479
|
gap: 8px;
|
|
441
480
|
padding: 10px 14px;
|
|
442
|
-
border-bottom: 1px solid #dce2e8;
|
|
443
|
-
background: #f4f4fb;
|
|
444
|
-
font: 12px system-ui;
|
|
445
|
-
color: #4e53a4;
|
|
481
|
+
border-bottom: 1px solid var(--me-line, #dce2e8);
|
|
482
|
+
background: var(--me-subtle-background, #f4f4fb);
|
|
483
|
+
font: 12px var(--me-ui-font-family, system-ui, sans-serif);
|
|
484
|
+
color: var(--me-text, #4e53a4);
|
|
446
485
|
}
|
|
447
486
|
.me-matrix-tools button,
|
|
448
487
|
.me-matrix-tools select {
|
|
449
488
|
font: inherit;
|
|
450
489
|
color: inherit;
|
|
451
|
-
background: white;
|
|
452
|
-
border: 1px solid #d6d5e6;
|
|
453
|
-
border-radius: 5px;
|
|
490
|
+
background: var(--me-panel-background, white);
|
|
491
|
+
border: 1px solid var(--me-line, #d6d5e6);
|
|
492
|
+
border-radius: var(--me-control-radius, 5px);
|
|
454
493
|
padding: 6px 8px;
|
|
455
494
|
}
|
|
456
495
|
.me-matrix-tools button:disabled {
|
|
@@ -458,7 +497,7 @@
|
|
|
458
497
|
}
|
|
459
498
|
.me-matrix-tools small {
|
|
460
499
|
font-size: 11px;
|
|
461
|
-
color: #77758b;
|
|
500
|
+
color: var(--me-muted, #77758b);
|
|
462
501
|
}
|
|
463
502
|
|
|
464
503
|
.me-matrix-size {
|
|
@@ -466,8 +505,8 @@
|
|
|
466
505
|
font-size: 12px;
|
|
467
506
|
color: inherit;
|
|
468
507
|
background: transparent;
|
|
469
|
-
border: 1px solid #dcdfe2;
|
|
470
|
-
border-radius: 5px;
|
|
508
|
+
border: 1px solid var(--me-line, #dcdfe2);
|
|
509
|
+
border-radius: var(--me-control-radius, 5px);
|
|
471
510
|
padding: 6px;
|
|
472
511
|
max-width: 100%;
|
|
473
512
|
}
|
|
@@ -476,7 +515,7 @@
|
|
|
476
515
|
display: flex;
|
|
477
516
|
flex-direction: column;
|
|
478
517
|
align-items: flex-start;
|
|
479
|
-
gap: 18px;
|
|
518
|
+
gap: var(--me-line-gap, 18px);
|
|
480
519
|
min-width: 0;
|
|
481
520
|
}
|
|
482
521
|
.me-document-line {
|
|
@@ -503,14 +542,14 @@
|
|
|
503
542
|
opacity: 0.65;
|
|
504
543
|
}
|
|
505
544
|
.me-run[data-token-kind='variable'] .me-input {
|
|
506
|
-
color: #245da1;
|
|
545
|
+
color: var(--me-variable, #245da1);
|
|
507
546
|
}
|
|
508
547
|
.me-run[data-token-kind='constant'] .me-input {
|
|
509
|
-
color: #a65316;
|
|
548
|
+
color: var(--me-number, #a65316);
|
|
510
549
|
font-style: normal;
|
|
511
550
|
}
|
|
512
551
|
.me-run[data-token-kind='symbol'] .me-input {
|
|
513
|
-
color: #7853a6;
|
|
552
|
+
color: var(--me-symbol, #7853a6);
|
|
514
553
|
font-style: normal;
|
|
515
554
|
}
|
|
516
555
|
.me-run[data-token-kind='constant'] .me-measure,
|
|
@@ -537,31 +576,31 @@
|
|
|
537
576
|
align-items: center;
|
|
538
577
|
gap: 14px;
|
|
539
578
|
padding: 8px 16px;
|
|
540
|
-
border-bottom: 1px solid var(--me-line);
|
|
541
|
-
font: 11px system-ui;
|
|
542
|
-
color: #78857e;
|
|
579
|
+
border-bottom: 1px solid var(--me-line, #d9e1dd);
|
|
580
|
+
font: 11px var(--me-ui-font-family, system-ui, sans-serif);
|
|
581
|
+
color: var(--me-muted, #78857e);
|
|
543
582
|
}
|
|
544
583
|
.me-token-legend [data-kind='variable'] {
|
|
545
|
-
color: #245da1;
|
|
584
|
+
color: var(--me-variable, #245da1);
|
|
546
585
|
}
|
|
547
586
|
.me-token-legend [data-kind='constant'] {
|
|
548
|
-
color: #a65316;
|
|
587
|
+
color: var(--me-number, #a65316);
|
|
549
588
|
}
|
|
550
589
|
.me-token-legend [data-kind='symbol'] {
|
|
551
|
-
color: #7853a6;
|
|
590
|
+
color: var(--me-symbol, #7853a6);
|
|
552
591
|
}
|
|
553
592
|
|
|
554
593
|
.me-matrix[data-selected='true'] {
|
|
555
|
-
outline: 2px solid #245da1;
|
|
594
|
+
outline: 2px solid var(--me-variable, #245da1);
|
|
556
595
|
outline-offset: 3px;
|
|
557
|
-
background: #245da112;
|
|
596
|
+
background: var(--me-selection-background, #245da112);
|
|
558
597
|
border-radius: 3px;
|
|
559
598
|
}
|
|
560
599
|
.me-grid-selection-hint {
|
|
561
600
|
padding: 8px 16px;
|
|
562
|
-
font: 12px system-ui;
|
|
563
|
-
color: #245da1;
|
|
564
|
-
background: #eef5ff;
|
|
601
|
+
font: 12px var(--me-ui-font-family, system-ui, sans-serif);
|
|
602
|
+
color: var(--me-variable, #245da1);
|
|
603
|
+
background: var(--me-selection-background, #eef5ff);
|
|
565
604
|
}
|
|
566
605
|
.me-preview-token {
|
|
567
606
|
position: absolute;
|
|
@@ -578,29 +617,29 @@
|
|
|
578
617
|
user-select: none;
|
|
579
618
|
}
|
|
580
619
|
.me-preview-token:hover {
|
|
581
|
-
background: var(--me-focus);
|
|
620
|
+
background: var(--me-input-focus-background, var(--me-focus));
|
|
582
621
|
}
|
|
583
622
|
.me-run[data-token-kind='variable'] .me-preview-token {
|
|
584
|
-
color: #245da1;
|
|
623
|
+
color: var(--me-variable, #245da1);
|
|
585
624
|
}
|
|
586
625
|
.me-run[data-token-kind='constant'] .me-preview-token {
|
|
587
|
-
color: #a65316;
|
|
626
|
+
color: var(--me-number, #a65316);
|
|
588
627
|
font-style: normal;
|
|
589
628
|
}
|
|
590
629
|
.me-run[data-token-kind='symbol'] .me-preview-token {
|
|
591
|
-
color: #7853a6;
|
|
630
|
+
color: var(--me-symbol, #7853a6);
|
|
592
631
|
font-style: normal;
|
|
593
632
|
}
|
|
594
633
|
.me-superscript > .me-slot:last-child .me-preview-token,
|
|
595
634
|
.me-subscript > .me-slot:last-child .me-preview-token {
|
|
596
|
-
font-size: calc(var(--me-font-size, 22px) *
|
|
635
|
+
font-size: calc(var(--me-font-size, 22px) * 0.7);
|
|
597
636
|
}
|
|
598
637
|
.me-limit .me-preview-token {
|
|
599
|
-
font-size: calc(var(--me-font-size, 22px) *
|
|
638
|
+
font-size: calc(var(--me-font-size, 22px) * 0.7);
|
|
600
639
|
}
|
|
601
640
|
.me-range-highlight,
|
|
602
641
|
.me-empty[data-range-selected='true'] {
|
|
603
|
-
background: #b9d8ff;
|
|
642
|
+
background: var(--me-selection-background, #b9d8ff);
|
|
604
643
|
color: inherit;
|
|
605
644
|
border-radius: 2px;
|
|
606
645
|
}
|
|
@@ -608,7 +647,7 @@
|
|
|
608
647
|
outline: none;
|
|
609
648
|
}
|
|
610
649
|
.me-surface:focus-visible {
|
|
611
|
-
outline: 2px solid #3676d3;
|
|
650
|
+
outline: 2px solid var(--me-focus-color, #3676d3);
|
|
612
651
|
outline-offset: -2px;
|
|
613
652
|
}
|
|
614
653
|
.me-line-number {
|
|
@@ -616,17 +655,17 @@
|
|
|
616
655
|
margin-right: 16px;
|
|
617
656
|
text-align: right;
|
|
618
657
|
align-self: center;
|
|
619
|
-
color: #8a9790;
|
|
620
|
-
font: 11px/1.5 system-ui;
|
|
658
|
+
color: var(--me-muted, #8a9790);
|
|
659
|
+
font: 11px/1.5 var(--me-ui-font-family, system-ui, sans-serif);
|
|
621
660
|
font-variant-numeric: tabular-nums;
|
|
622
661
|
user-select: none;
|
|
623
662
|
cursor: default;
|
|
624
663
|
}
|
|
625
664
|
.me-symbol-browser {
|
|
626
665
|
padding: 16px;
|
|
627
|
-
border-bottom: 1px solid var(--me-line);
|
|
628
|
-
background: #f6f8f6;
|
|
629
|
-
font: 12px/1.5 system-ui;
|
|
666
|
+
border-bottom: 1px solid var(--me-line, #d9e1dd);
|
|
667
|
+
background: var(--me-subtle-background, #f6f8f6);
|
|
668
|
+
font: 12px/1.5 var(--me-ui-font-family, system-ui, sans-serif);
|
|
630
669
|
}
|
|
631
670
|
.me-symbol-browser-heading {
|
|
632
671
|
display: flex;
|
|
@@ -636,15 +675,15 @@
|
|
|
636
675
|
}
|
|
637
676
|
.me-symbol-browser-heading small {
|
|
638
677
|
font-weight: 400;
|
|
639
|
-
color: #6a7b72;
|
|
678
|
+
color: var(--me-muted, #6a7b72);
|
|
640
679
|
margin-left: 8px;
|
|
641
680
|
}
|
|
642
681
|
.me-symbol-browser-heading button {
|
|
643
682
|
font: inherit;
|
|
644
|
-
background: white;
|
|
683
|
+
background: var(--me-panel-background, white);
|
|
645
684
|
color: inherit;
|
|
646
|
-
border: 1px solid var(--me-line);
|
|
647
|
-
border-radius: 5px;
|
|
685
|
+
border: 1px solid var(--me-line, #d9e1dd);
|
|
686
|
+
border-radius: var(--me-control-radius, 5px);
|
|
648
687
|
padding: 5px 10px;
|
|
649
688
|
cursor: pointer;
|
|
650
689
|
}
|
|
@@ -656,15 +695,15 @@
|
|
|
656
695
|
}
|
|
657
696
|
.me-symbol-search input {
|
|
658
697
|
font: inherit;
|
|
659
|
-
border: 1px solid var(--me-line);
|
|
660
|
-
border-radius: 5px;
|
|
698
|
+
border: 1px solid var(--me-line, #d9e1dd);
|
|
699
|
+
border-radius: var(--me-control-radius, 5px);
|
|
661
700
|
padding: 9px 10px;
|
|
662
701
|
min-width: 0;
|
|
663
|
-
background: white;
|
|
702
|
+
background: var(--me-panel-background, white);
|
|
664
703
|
color: inherit;
|
|
665
704
|
}
|
|
666
705
|
.me-symbol-help {
|
|
667
|
-
color: #627469;
|
|
706
|
+
color: var(--me-muted, #627469);
|
|
668
707
|
margin: 8px 0 12px;
|
|
669
708
|
}
|
|
670
709
|
.me-symbol-grid {
|
|
@@ -683,24 +722,24 @@
|
|
|
683
722
|
gap: 5px;
|
|
684
723
|
min-height: 74px;
|
|
685
724
|
padding: 8px 5px;
|
|
686
|
-
border: 1px solid var(--me-line);
|
|
687
|
-
border-radius: 6px;
|
|
688
|
-
background: white;
|
|
725
|
+
border: 1px solid var(--me-line, #d9e1dd);
|
|
726
|
+
border-radius: var(--me-control-radius, 6px);
|
|
727
|
+
background: var(--me-panel-background, white);
|
|
689
728
|
color: inherit;
|
|
690
|
-
font: 11px/1.3 system-ui;
|
|
729
|
+
font: 11px/1.3 var(--me-ui-font-family, system-ui, sans-serif);
|
|
691
730
|
cursor: pointer;
|
|
692
731
|
overflow-wrap: anywhere;
|
|
693
732
|
}
|
|
694
733
|
.me-symbol-grid button:hover {
|
|
695
|
-
background: #e7f2ed;
|
|
696
|
-
border-color: #9cbbac;
|
|
734
|
+
background: var(--me-active-background, #e7f2ed);
|
|
735
|
+
border-color: var(--me-accent, #9cbbac);
|
|
697
736
|
}
|
|
698
737
|
.me-symbol-glyph {
|
|
699
738
|
font: 25px/1.2 'Barocss Math Glyphs', Georgia, 'Times New Roman', serif;
|
|
700
739
|
}
|
|
701
740
|
.me-symbol-browser button:focus-visible,
|
|
702
741
|
.me-symbol-search input:focus-visible {
|
|
703
|
-
outline: 2px solid var(--me-accent);
|
|
742
|
+
outline: 2px solid var(--me-accent, #236957);
|
|
704
743
|
outline-offset: 2px;
|
|
705
744
|
}
|
|
706
745
|
|
|
@@ -725,28 +764,22 @@
|
|
|
725
764
|
color: var(--me-symbol, #7650b2);
|
|
726
765
|
}
|
|
727
766
|
.me-dom-editor .me-dom-selected {
|
|
728
|
-
background: #dbeafe;
|
|
767
|
+
background: var(--me-selection-background, #dbeafe);
|
|
729
768
|
border-radius: 3px;
|
|
730
769
|
}
|
|
731
770
|
.me-dom-status {
|
|
732
771
|
display: block;
|
|
733
|
-
font: 12px/1.5 sans-serif;
|
|
772
|
+
font: 12px/1.5 var(--me-ui-font-family, system-ui, sans-serif);
|
|
734
773
|
}
|
|
735
774
|
.me-dom-status:empty {
|
|
736
775
|
display: none;
|
|
737
776
|
}
|
|
738
|
-
.me-dom-menu {
|
|
739
|
-
position: fixed;
|
|
740
|
-
z-index: 1000;
|
|
741
|
-
max-height: 230px;
|
|
742
|
-
overflow-y: auto;
|
|
743
|
-
width: 290px;
|
|
744
|
-
}
|
|
745
777
|
.me-dom-menu[hidden] {
|
|
746
778
|
display: none;
|
|
747
779
|
}
|
|
748
|
-
.me-dom-menu .me-
|
|
749
|
-
|
|
780
|
+
.me-dom-menu[data-compact='true'] .me-suggestion-heading,
|
|
781
|
+
.me-dom-menu[data-compact='true'] .me-suggestion-footer {
|
|
782
|
+
display: none;
|
|
750
783
|
}
|
|
751
784
|
.me-dom-editor[data-mode='inline'] {
|
|
752
785
|
display: inline-block;
|
|
@@ -755,7 +788,7 @@
|
|
|
755
788
|
}
|
|
756
789
|
.me-dom-editor[data-mode='inline'] .me-surface {
|
|
757
790
|
display: inline-block;
|
|
758
|
-
padding: 2px 4px;
|
|
791
|
+
padding: var(--me-inline-padding, 2px 4px);
|
|
759
792
|
min-height: 0;
|
|
760
793
|
}
|
|
761
794
|
.me-dom-editor[data-mode='inline'] .me-document-lines {
|
|
@@ -787,7 +820,7 @@
|
|
|
787
820
|
grid-row: 1;
|
|
788
821
|
}
|
|
789
822
|
.me-scripts > .me-slot:not(:first-child) :is(.me-input, .me-measure, .me-preview-token) {
|
|
790
|
-
font-size: calc(var(--me-font-size, 22px) *
|
|
823
|
+
font-size: calc(var(--me-font-size, 22px) * 0.7);
|
|
791
824
|
}
|
|
792
825
|
|
|
793
826
|
.me-textGroup,
|
|
@@ -802,7 +835,7 @@
|
|
|
802
835
|
font-family: 'Barocss Math Glyphs', Georgia, serif;
|
|
803
836
|
font-style: normal;
|
|
804
837
|
white-space: pre;
|
|
805
|
-
color: #263b32;
|
|
838
|
+
color: var(--me-text, #263b32);
|
|
806
839
|
}
|
|
807
840
|
.me-textGroup .me-preview-token *,
|
|
808
841
|
.me-operatorName .me-preview-token * {
|
|
@@ -833,7 +866,7 @@
|
|
|
833
866
|
margin-top: 4px;
|
|
834
867
|
}
|
|
835
868
|
.me-indexedRoot > .me-slot:nth-last-child(2) :is(.me-input, .me-measure, .me-preview-token) {
|
|
836
|
-
font-size: calc(var(--me-font-size, 22px) *
|
|
869
|
+
font-size: calc(var(--me-font-size, 22px) * 0.5);
|
|
837
870
|
}
|
|
838
871
|
|
|
839
872
|
/* Accents follow the editable body's width, including nested structures. */
|
|
@@ -932,7 +965,7 @@
|
|
|
932
965
|
align-self: baseline;
|
|
933
966
|
}
|
|
934
967
|
.me-limit-operator .me-limit :is(.me-input, .me-measure, .me-preview-token) {
|
|
935
|
-
font-size: calc(var(--me-font-size, 22px) *
|
|
968
|
+
font-size: calc(var(--me-font-size, 22px) * 0.7);
|
|
936
969
|
line-height: 1.1;
|
|
937
970
|
padding-block: 1px;
|
|
938
971
|
}
|
|
@@ -946,13 +979,10 @@
|
|
|
946
979
|
}
|
|
947
980
|
|
|
948
981
|
/* Functions are semantic operator nodes, distinct from ordinary variables. */
|
|
949
|
-
.me-editor {
|
|
950
|
-
--me-function: #087b78;
|
|
951
|
-
}
|
|
952
982
|
.me-operatorName :is(.me-input, .me-preview-token, .me-measure),
|
|
953
983
|
.me-limit-glyph,
|
|
954
984
|
.me-token-legend [data-kind='function'] {
|
|
955
|
-
color: var(--me-function);
|
|
985
|
+
color: var(--me-function, #087b78);
|
|
956
986
|
}
|
|
957
987
|
|
|
958
988
|
/* Explicit LaTeX spacing is content, independent of empty caret hit areas. */
|
|
@@ -969,7 +999,7 @@
|
|
|
969
999
|
}
|
|
970
1000
|
.me-quad:hover,
|
|
971
1001
|
.me-qquad:hover {
|
|
972
|
-
background: var(--me-focus);
|
|
1002
|
+
background: var(--me-input-focus-background, var(--me-focus));
|
|
973
1003
|
}
|
|
974
1004
|
|
|
975
1005
|
.me-roman :is(.me-input, .me-measure, .me-preview-token) {
|
|
@@ -984,7 +1014,7 @@
|
|
|
984
1014
|
font-size: calc(var(--me-font-size, 22px) * 16 / 22);
|
|
985
1015
|
}
|
|
986
1016
|
.me-limit :is(.me-quad, .me-qquad) {
|
|
987
|
-
font-size: calc(var(--me-font-size, 22px) *
|
|
1017
|
+
font-size: calc(var(--me-font-size, 22px) * 0.7);
|
|
988
1018
|
}
|
|
989
1019
|
|
|
990
1020
|
/* Structured delimiters export as \left/\right and stretch with their body. */
|
|
@@ -1001,14 +1031,11 @@
|
|
|
1001
1031
|
:is(.me-parentheses, .me-brackets, .me-absolute) > .me-delimiter:last-child {
|
|
1002
1032
|
border-right: 1.5px solid currentColor;
|
|
1003
1033
|
}
|
|
1004
|
-
/*
|
|
1034
|
+
/* The outline mask is shared with mixed fences in the contour rules below. */
|
|
1005
1035
|
.me-parentheses > .me-delimiter:first-child,
|
|
1006
1036
|
.me-parentheses > .me-delimiter:last-child {
|
|
1007
|
-
flex-basis: 8px;
|
|
1008
1037
|
border: 0;
|
|
1009
1038
|
background: currentColor;
|
|
1010
|
-
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 100' preserveAspectRatio='none'%3E%3Cpath d='M14 0C4 16 0 32 0 50C0 68 4 84 14 100L14 97C7 80 3 65 3 50C3 35 7 20 14 3Z'/%3E%3C/svg%3E")
|
|
1011
|
-
center / 100% 100% no-repeat;
|
|
1012
1039
|
}
|
|
1013
1040
|
.me-parentheses > .me-delimiter:last-child {
|
|
1014
1041
|
transform: scaleX(-1);
|
|
@@ -1038,7 +1065,7 @@
|
|
|
1038
1065
|
:is(.me-openClosed, .me-closedOpen, .me-fenced) > :is([data-fence='('], [data-fence=')']),
|
|
1039
1066
|
.me-matrix[data-environment='pmatrix'] > .me-matrix-delimiter {
|
|
1040
1067
|
background: currentColor;
|
|
1041
|
-
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 100' preserveAspectRatio='none'%3E%3Cpath d='M14 0C4 16 0 32 0 50C0 68 4 84 14 100L14
|
|
1068
|
+
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 100' preserveAspectRatio='none'%3E%3Cpath d='M14 0C4 16 0 32 0 50C0 68 4 84 14 100L14 98C7 80 2.5 65 2.5 50C2.5 35 7 20 14 2Z'/%3E%3C/svg%3E")
|
|
1042
1069
|
center / 100% 100% no-repeat;
|
|
1043
1070
|
}
|
|
1044
1071
|
.me-delimiter[data-fence=')'] {
|
|
@@ -1090,7 +1117,7 @@
|
|
|
1090
1117
|
:is(.me-overset, .me-underset)
|
|
1091
1118
|
> .me-slot:first-child
|
|
1092
1119
|
:is(.me-input, .me-preview-token, .me-measure) {
|
|
1093
|
-
font-size: calc(var(--me-font-size, 22px) *
|
|
1120
|
+
font-size: calc(var(--me-font-size, 22px) * 0.7);
|
|
1094
1121
|
}
|
|
1095
1122
|
/* Square and indexed roots share a radical joined to the radicand's overbar. */
|
|
1096
1123
|
.me-root > .me-radical,
|
|
@@ -1102,17 +1129,6 @@
|
|
|
1102
1129
|
margin-top: 4px;
|
|
1103
1130
|
font-size: 0;
|
|
1104
1131
|
background: currentColor;
|
|
1105
|
-
clip-path: polygon(
|
|
1106
|
-
0 55%,
|
|
1107
|
-
6px 50%,
|
|
1108
|
-
12px 88%,
|
|
1109
|
-
21px 0,
|
|
1110
|
-
100% 0,
|
|
1111
|
-
14px 100%,
|
|
1112
|
-
11px 100%,
|
|
1113
|
-
5px 58%,
|
|
1114
|
-
1px 61%
|
|
1115
|
-
);
|
|
1116
1132
|
}
|
|
1117
1133
|
.me-indexedRoot > .me-slot:nth-last-child(2) {
|
|
1118
1134
|
margin-right: -9px;
|
|
@@ -1155,7 +1171,7 @@
|
|
|
1155
1171
|
> .me-operator-glyph {
|
|
1156
1172
|
grid-column: 1;
|
|
1157
1173
|
grid-row: 1 / 3;
|
|
1158
|
-
font-size:
|
|
1174
|
+
font-size: calc(var(--me-font-size, 22px) * 2);
|
|
1159
1175
|
}
|
|
1160
1176
|
:is(
|
|
1161
1177
|
[data-structure='integral'],
|
|
@@ -1215,11 +1231,12 @@
|
|
|
1215
1231
|
/* Keep nested fractions readable while avoiding full-size recursive stacks.
|
|
1216
1232
|
Apply the same size to the input, passive glyph and measuring twin. */
|
|
1217
1233
|
.me-fraction .me-fraction :is(.me-input, .me-measure, .me-preview-token) {
|
|
1218
|
-
font-size: calc(var(--me-font-size, 22px) *
|
|
1219
|
-
line-height: 1
|
|
1234
|
+
font-size: calc(var(--me-font-size, 22px) * 0.7);
|
|
1235
|
+
line-height: 1;
|
|
1236
|
+
padding-block: 0;
|
|
1220
1237
|
}
|
|
1221
1238
|
.me-fraction .me-fraction .me-fraction :is(.me-input, .me-measure, .me-preview-token) {
|
|
1222
|
-
font-size:
|
|
1239
|
+
font-size: calc(var(--me-font-size, 22px) * 0.5);
|
|
1223
1240
|
}
|
|
1224
1241
|
.me-fraction .me-fraction .me-row {
|
|
1225
1242
|
min-height: 0;
|
|
@@ -1275,8 +1292,8 @@
|
|
|
1275
1292
|
}
|
|
1276
1293
|
[data-structure='contourIntegral'][data-limit-placement] > .me-limits > .me-operator-glyph {
|
|
1277
1294
|
font: normal var(--me-font-size, 22px) / 2.3 'Barocss Contour', serif;
|
|
1278
|
-
width:
|
|
1279
|
-
height:
|
|
1295
|
+
width: calc(var(--me-font-size, 22px) * 25 / 22);
|
|
1296
|
+
height: calc(var(--me-font-size, 22px) * 2.3);
|
|
1280
1297
|
transform: none;
|
|
1281
1298
|
}
|
|
1282
1299
|
|
|
@@ -1300,7 +1317,7 @@
|
|
|
1300
1317
|
:is(.me-overbrace, .me-underbrace)
|
|
1301
1318
|
> .me-slot:first-child
|
|
1302
1319
|
:is(.me-input, .me-measure, .me-preview-token) {
|
|
1303
|
-
font-size: calc(var(--me-font-size, 22px) *
|
|
1320
|
+
font-size: calc(var(--me-font-size, 22px) * 0.7);
|
|
1304
1321
|
line-height: 1.1;
|
|
1305
1322
|
}
|
|
1306
1323
|
:is(.me-overbrace, .me-underbrace) > .me-slot:last-child {
|
|
@@ -1308,20 +1325,23 @@
|
|
|
1308
1325
|
width: 100%;
|
|
1309
1326
|
box-sizing: border-box;
|
|
1310
1327
|
}
|
|
1328
|
+
:is(.me-overbrace, .me-underbrace) > .me-slot:last-child {
|
|
1329
|
+
min-width: calc(var(--me-font-size, 22px) * 1.6);
|
|
1330
|
+
}
|
|
1311
1331
|
.me-overbrace > .me-slot:last-child {
|
|
1312
|
-
padding-top:
|
|
1332
|
+
padding-top: calc(var(--me-font-size, 22px) * 0.4);
|
|
1313
1333
|
}
|
|
1314
1334
|
.me-underbrace > .me-slot:last-child {
|
|
1315
|
-
padding-bottom:
|
|
1335
|
+
padding-bottom: calc(var(--me-font-size, 22px) * 0.4);
|
|
1316
1336
|
}
|
|
1317
1337
|
:is(.me-overbrace, .me-underbrace) > .me-slot:last-child::before {
|
|
1318
1338
|
content: '';
|
|
1319
1339
|
position: absolute;
|
|
1320
1340
|
inset-inline: 0;
|
|
1321
1341
|
top: 0;
|
|
1322
|
-
height:
|
|
1342
|
+
height: calc(var(--me-font-size, 22px) * 0.35);
|
|
1323
1343
|
background: currentColor;
|
|
1324
|
-
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 12' preserveAspectRatio='none'%3E%3Cpath d='M0
|
|
1344
|
+
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 12' preserveAspectRatio='none'%3E%3Cpath d='M0 12C4 6 12 7 24 5C37 3 45 2 50 0C55 2 63 3 76 5C88 7 96 6 100 12L98 12C94 9 86 10 75 8C62 6 54 5 50 3C46 5 38 6 25 8C14 10 6 9 2 12Z'/%3E%3C/svg%3E")
|
|
1325
1345
|
center / 100% 100% no-repeat;
|
|
1326
1346
|
pointer-events: none;
|
|
1327
1347
|
}
|
|
@@ -1336,10 +1356,10 @@
|
|
|
1336
1356
|
min-height: 32px;
|
|
1337
1357
|
padding: 7px 12px;
|
|
1338
1358
|
gap: 9px;
|
|
1339
|
-
border: 1px solid #b8cec3;
|
|
1340
|
-
border-radius: 7px;
|
|
1341
|
-
background: #edf4ef;
|
|
1342
|
-
color: #245443;
|
|
1359
|
+
border: 1px solid var(--me-accent, #b8cec3);
|
|
1360
|
+
border-radius: var(--me-control-radius, 7px);
|
|
1361
|
+
background: var(--me-active-background, #edf4ef);
|
|
1362
|
+
color: var(--me-accent, #245443);
|
|
1343
1363
|
font-weight: 600;
|
|
1344
1364
|
white-space: nowrap;
|
|
1345
1365
|
}
|
|
@@ -1355,16 +1375,46 @@
|
|
|
1355
1375
|
transform: translateY(2px) rotate(225deg);
|
|
1356
1376
|
}
|
|
1357
1377
|
.me-tools .me-toolbar-toggle:hover {
|
|
1358
|
-
background: #dfece4;
|
|
1359
|
-
border-color: #8fac9c;
|
|
1378
|
+
background: var(--me-hover-background, #dfece4);
|
|
1379
|
+
border-color: var(--me-accent, #8fac9c);
|
|
1360
1380
|
}
|
|
1361
1381
|
.me-tools .me-toolbar-toggle[aria-expanded='true'] {
|
|
1362
|
-
background: #dfece4;
|
|
1382
|
+
background: var(--me-hover-background, #dfece4);
|
|
1363
1383
|
}
|
|
1364
1384
|
.me-tools .me-toolbar-toggle:focus-visible {
|
|
1365
1385
|
outline-offset: 2px;
|
|
1366
1386
|
}
|
|
1367
1387
|
|
|
1388
|
+
/* Native discovery panels share their toolbar's containment and iframe document. */
|
|
1389
|
+
.me-dom-toolbar-panels {
|
|
1390
|
+
display: block;
|
|
1391
|
+
min-width: 0;
|
|
1392
|
+
max-width: 100%;
|
|
1393
|
+
}
|
|
1394
|
+
.me-dom-toolbar-panels[hidden],
|
|
1395
|
+
.me-dom-grid-tools[hidden] {
|
|
1396
|
+
display: none;
|
|
1397
|
+
}
|
|
1398
|
+
.me-dom-symbol-browser {
|
|
1399
|
+
box-sizing: border-box;
|
|
1400
|
+
max-width: 100%;
|
|
1401
|
+
border: 1px solid var(--me-line, #d9e1dd);
|
|
1402
|
+
border-radius: 0 0 8px 8px;
|
|
1403
|
+
color: var(--me-text, #202c27);
|
|
1404
|
+
}
|
|
1405
|
+
.me-dom-symbol-browser .me-symbol-grid {
|
|
1406
|
+
max-height: min(350px, 45vh);
|
|
1407
|
+
}
|
|
1408
|
+
.me-dom-symbol-browser .me-symbol-grid button:focus-visible {
|
|
1409
|
+
background: var(--me-active-background, #e7f2ed);
|
|
1410
|
+
border-color: var(--me-accent, #9cbbac);
|
|
1411
|
+
}
|
|
1412
|
+
.me-dom-grid-tools {
|
|
1413
|
+
flex-wrap: wrap;
|
|
1414
|
+
margin: 0;
|
|
1415
|
+
border-top: 0;
|
|
1416
|
+
}
|
|
1417
|
+
|
|
1368
1418
|
/* Fixed accents stay centered; wide variants follow the editable body. */
|
|
1369
1419
|
:is(.me-tilde, .me-bar, .me-dot, .me-ddot, .me-widehat, .me-widetilde) {
|
|
1370
1420
|
position: relative;
|
|
@@ -1450,7 +1500,7 @@
|
|
|
1450
1500
|
)[data-limit-placement='nolimits']
|
|
1451
1501
|
> .me-limits
|
|
1452
1502
|
> .me-operator-glyph {
|
|
1453
|
-
font-size:
|
|
1503
|
+
font-size: calc(var(--me-font-size, 22px) * 2);
|
|
1454
1504
|
}
|
|
1455
1505
|
|
|
1456
1506
|
/* TeX math units: 18mu = 1em. Negative spacing has no painted hit box. */
|
|
@@ -1485,12 +1535,12 @@
|
|
|
1485
1535
|
/* Explicit fraction/binomial styles override the surrounding default size.
|
|
1486
1536
|
Nested explicit styles use the nearest style container's inherited value. */
|
|
1487
1537
|
.me-structure[data-math-style='display'] {
|
|
1488
|
-
--me-explicit-size: 22px;
|
|
1538
|
+
--me-explicit-size: var(--me-font-size, 22px);
|
|
1489
1539
|
}
|
|
1490
1540
|
.me-structure[data-math-style='text'] {
|
|
1491
|
-
--me-explicit-size:
|
|
1541
|
+
--me-explicit-size: calc(var(--me-font-size, 22px) * 0.7);
|
|
1492
1542
|
}
|
|
1493
|
-
.me-structure[data-math-style] :is(.me-input, .me-measure, .me-preview-token) {
|
|
1543
|
+
.me-structure[data-math-style] > .me-slot :is(.me-input, .me-measure, .me-preview-token) {
|
|
1494
1544
|
font-size: var(--me-explicit-size);
|
|
1495
1545
|
}
|
|
1496
1546
|
.me-structure[data-math-style='text'] > .me-slot > .me-row {
|
|
@@ -1602,3 +1652,729 @@
|
|
|
1602
1652
|
justify-self: start;
|
|
1603
1653
|
transform: scaleX(-1);
|
|
1604
1654
|
}
|
|
1655
|
+
.me-matrix-cell[data-cell-selected='true'] {
|
|
1656
|
+
background: color-mix(in srgb, var(--me-accent, #32745d) 18%, transparent);
|
|
1657
|
+
border-radius: 0.12em;
|
|
1658
|
+
box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--me-accent, #32745d) 35%, transparent);
|
|
1659
|
+
}
|
|
1660
|
+
|
|
1661
|
+
/* Shared, nonmodal utilities keep native input and host draft events contained. */
|
|
1662
|
+
.me-utility-panel {
|
|
1663
|
+
padding: 12px;
|
|
1664
|
+
border-top: 1px solid var(--me-line, #dcdfe2);
|
|
1665
|
+
font: 13px/1.5 system-ui, sans-serif;
|
|
1666
|
+
color: var(--me-text, #253b33);
|
|
1667
|
+
}
|
|
1668
|
+
.me-utility-panel label {
|
|
1669
|
+
display: grid;
|
|
1670
|
+
gap: 6px;
|
|
1671
|
+
}
|
|
1672
|
+
.me-utility-panel textarea {
|
|
1673
|
+
width: 100%;
|
|
1674
|
+
box-sizing: border-box;
|
|
1675
|
+
resize: vertical;
|
|
1676
|
+
padding: 8px;
|
|
1677
|
+
font: 14px/1.5 monospace;
|
|
1678
|
+
color: inherit;
|
|
1679
|
+
background: var(--me-control-bg, #fff);
|
|
1680
|
+
border: 1px solid var(--me-line, #dcdfe2);
|
|
1681
|
+
border-radius: var(--me-control-radius, 5px);
|
|
1682
|
+
}
|
|
1683
|
+
.me-utility-actions {
|
|
1684
|
+
display: flex;
|
|
1685
|
+
gap: 8px;
|
|
1686
|
+
}
|
|
1687
|
+
.me-utility-panel button {
|
|
1688
|
+
padding: 6px 10px;
|
|
1689
|
+
color: inherit;
|
|
1690
|
+
background: var(--me-control-bg, #fff);
|
|
1691
|
+
border: 1px solid var(--me-line, #dcdfe2);
|
|
1692
|
+
border-radius: var(--me-control-radius, 5px);
|
|
1693
|
+
cursor: pointer;
|
|
1694
|
+
}
|
|
1695
|
+
.me-utility-error {
|
|
1696
|
+
color: var(--me-error, #a52d2d);
|
|
1697
|
+
}
|
|
1698
|
+
.me-utility-error:empty {
|
|
1699
|
+
display: none;
|
|
1700
|
+
}
|
|
1701
|
+
|
|
1702
|
+
.me-quick-panel .me-utility-actions {
|
|
1703
|
+
flex-wrap: wrap;
|
|
1704
|
+
margin-bottom: 10px;
|
|
1705
|
+
}
|
|
1706
|
+
.me-quick-panel .me-symbol-grid {
|
|
1707
|
+
max-height: 260px;
|
|
1708
|
+
overflow: auto;
|
|
1709
|
+
}
|
|
1710
|
+
.me-quick-item {
|
|
1711
|
+
display: flex;
|
|
1712
|
+
min-width: 0;
|
|
1713
|
+
gap: 2px;
|
|
1714
|
+
}
|
|
1715
|
+
.me-quick-item button:first-child {
|
|
1716
|
+
flex: 1;
|
|
1717
|
+
min-width: 0;
|
|
1718
|
+
text-align: start;
|
|
1719
|
+
}
|
|
1720
|
+
.me-quick-item button:last-child {
|
|
1721
|
+
flex: none;
|
|
1722
|
+
}
|
|
1723
|
+
.me-quick-item button[aria-pressed='true'] {
|
|
1724
|
+
color: var(--me-number, #a65316);
|
|
1725
|
+
background: var(--me-active-bg, #edf3ff);
|
|
1726
|
+
}
|
|
1727
|
+
|
|
1728
|
+
.me-presentation-tools[hidden] {
|
|
1729
|
+
display: none;
|
|
1730
|
+
}
|
|
1731
|
+
.me-presentation-tools label {
|
|
1732
|
+
display: flex;
|
|
1733
|
+
align-items: center;
|
|
1734
|
+
gap: 8px;
|
|
1735
|
+
}
|
|
1736
|
+
|
|
1737
|
+
/* A fraction inside a script uses scriptscript-sized terms. Its rows must not
|
|
1738
|
+
retain the body's minimum line height, including while a term is editable. */
|
|
1739
|
+
:is(.me-superscript, .me-subscript, .me-scripts)
|
|
1740
|
+
> .me-slot:not(:first-child)
|
|
1741
|
+
.me-fraction:not([data-math-style='display'])
|
|
1742
|
+
:is(.me-input, .me-measure, .me-preview-token) {
|
|
1743
|
+
font-size: calc(var(--me-font-size, 22px) * 0.5);
|
|
1744
|
+
line-height: 1.1;
|
|
1745
|
+
padding-block: 0;
|
|
1746
|
+
}
|
|
1747
|
+
:is(.me-superscript, .me-subscript, .me-scripts)
|
|
1748
|
+
> .me-slot:not(:first-child)
|
|
1749
|
+
.me-fraction:not([data-math-style='display'])
|
|
1750
|
+
.me-row {
|
|
1751
|
+
min-height: 0;
|
|
1752
|
+
}
|
|
1753
|
+
:is(.me-superscript, .me-subscript, .me-scripts)
|
|
1754
|
+
> .me-slot:not(:first-child)
|
|
1755
|
+
.me-fraction:not([data-math-style='display'])
|
|
1756
|
+
> .me-slot {
|
|
1757
|
+
padding: 0 2px;
|
|
1758
|
+
}
|
|
1759
|
+
/* Compact fraction terms already reduce the script height. A simple base needs
|
|
1760
|
+
only a small shift; a tall structured base needs height-relative clearance. */
|
|
1761
|
+
.me-superscript > .me-slot:last-child:has(> .me-row > .me-fraction) {
|
|
1762
|
+
transform: translateY(-0.2em);
|
|
1763
|
+
}
|
|
1764
|
+
.me-subscript > .me-slot:last-child:has(> .me-row > .me-fraction) {
|
|
1765
|
+
transform: translateY(0.2em);
|
|
1766
|
+
}
|
|
1767
|
+
.me-superscript:has(> .me-slot:first-child > .me-row > .me-structure)
|
|
1768
|
+
> .me-slot:last-child:has(> .me-row > .me-fraction) {
|
|
1769
|
+
transform: translateY(-45%);
|
|
1770
|
+
}
|
|
1771
|
+
.me-subscript:has(> .me-slot:first-child > .me-row > .me-structure)
|
|
1772
|
+
> .me-slot:last-child:has(> .me-row > .me-fraction) {
|
|
1773
|
+
transform: translateY(45%);
|
|
1774
|
+
}
|
|
1775
|
+
/* Empty model boundaries are caret targets, not extra space before a script. */
|
|
1776
|
+
:is(.me-superscript, .me-subscript, .me-scripts)
|
|
1777
|
+
> .me-slot:not(:first-child)
|
|
1778
|
+
> .me-row
|
|
1779
|
+
> .me-empty-boundary:not(:focus-within)
|
|
1780
|
+
> .me-measure {
|
|
1781
|
+
min-width: 1px;
|
|
1782
|
+
width: 1px;
|
|
1783
|
+
padding-inline: 0;
|
|
1784
|
+
}
|
|
1785
|
+
:is(.me-superscript, .me-subscript, .me-scripts)
|
|
1786
|
+
> .me-slot:not(:first-child)
|
|
1787
|
+
> .me-row
|
|
1788
|
+
> .me-fraction {
|
|
1789
|
+
margin-inline: 1px;
|
|
1790
|
+
}
|
|
1791
|
+
|
|
1792
|
+
/* Query-independent structure actions remain visible while their operand is edited. */
|
|
1793
|
+
.me-context-footer {
|
|
1794
|
+
display: flex;
|
|
1795
|
+
align-items: center;
|
|
1796
|
+
flex-wrap: wrap;
|
|
1797
|
+
gap: 8px 12px;
|
|
1798
|
+
padding: 10px 14px;
|
|
1799
|
+
border-top: 1px solid var(--me-line, #d9e1dd);
|
|
1800
|
+
background: var(--me-subtle-background, #f6f8f6);
|
|
1801
|
+
color: var(--me-text, #202c27);
|
|
1802
|
+
font: 12px/1.4 var(--me-ui-font-family, system-ui, sans-serif);
|
|
1803
|
+
text-align: start;
|
|
1804
|
+
}
|
|
1805
|
+
.me-context-footer[hidden] {
|
|
1806
|
+
display: none;
|
|
1807
|
+
}
|
|
1808
|
+
.me-context-label {
|
|
1809
|
+
font-weight: 600;
|
|
1810
|
+
}
|
|
1811
|
+
.me-context-actions {
|
|
1812
|
+
display: flex;
|
|
1813
|
+
flex-wrap: wrap;
|
|
1814
|
+
gap: 6px;
|
|
1815
|
+
}
|
|
1816
|
+
.me-context-button {
|
|
1817
|
+
appearance: none;
|
|
1818
|
+
font: inherit;
|
|
1819
|
+
color: inherit;
|
|
1820
|
+
background: var(--me-panel-background, white);
|
|
1821
|
+
border: 1px solid var(--me-line, #cbd8cf);
|
|
1822
|
+
border-radius: var(--me-control-radius, 6px);
|
|
1823
|
+
padding: 6px 10px;
|
|
1824
|
+
cursor: pointer;
|
|
1825
|
+
}
|
|
1826
|
+
.me-context-button:hover:not(:disabled) {
|
|
1827
|
+
background: var(--me-hover-background, #e7efe9);
|
|
1828
|
+
}
|
|
1829
|
+
.me-context-button:focus-visible {
|
|
1830
|
+
outline: 2px solid var(--me-accent, #236957);
|
|
1831
|
+
outline-offset: 2px;
|
|
1832
|
+
}
|
|
1833
|
+
.me-context-button:disabled {
|
|
1834
|
+
opacity: 0.5;
|
|
1835
|
+
cursor: default;
|
|
1836
|
+
}
|
|
1837
|
+
.me-context-hint {
|
|
1838
|
+
color: var(--me-muted, #708075);
|
|
1839
|
+
font-size: 11px;
|
|
1840
|
+
}
|
|
1841
|
+
.me-context-button[aria-pressed='true'] {
|
|
1842
|
+
background: var(--me-hover-background, #e7efe9);
|
|
1843
|
+
color: var(--me-accent, #236957);
|
|
1844
|
+
font-weight: 600;
|
|
1845
|
+
}
|
|
1846
|
+
|
|
1847
|
+
/* Geometry audit: remove UI line-box struts from math stacks. Keep the same
|
|
1848
|
+
metrics for passive text, the input, and its measuring span. */
|
|
1849
|
+
.me-large-operator > .me-limits > .me-limit {
|
|
1850
|
+
display: inline-flex;
|
|
1851
|
+
}
|
|
1852
|
+
.me-large-operator > .me-limits > .me-limit > .me-row {
|
|
1853
|
+
min-height: 0;
|
|
1854
|
+
}
|
|
1855
|
+
.me-large-operator .me-limit :is(.me-input, .me-measure, .me-preview-token) {
|
|
1856
|
+
line-height: 1.1;
|
|
1857
|
+
padding-block: 0;
|
|
1858
|
+
}
|
|
1859
|
+
/* Side bounds span the full integral height, with room for the glyph's slant. */
|
|
1860
|
+
:is(
|
|
1861
|
+
[data-structure='integral'],
|
|
1862
|
+
[data-structure='doubleIntegral'],
|
|
1863
|
+
[data-structure='tripleIntegral'],
|
|
1864
|
+
[data-structure='contourIntegral']
|
|
1865
|
+
)
|
|
1866
|
+
> .me-limits
|
|
1867
|
+
> :is(.me-limit:first-child, .me-limit:last-child) {
|
|
1868
|
+
position: relative;
|
|
1869
|
+
}
|
|
1870
|
+
:is(
|
|
1871
|
+
[data-structure='integral'],
|
|
1872
|
+
[data-structure='doubleIntegral'],
|
|
1873
|
+
[data-structure='tripleIntegral'],
|
|
1874
|
+
[data-structure='contourIntegral']
|
|
1875
|
+
)
|
|
1876
|
+
> .me-limits
|
|
1877
|
+
> .me-operator-glyph {
|
|
1878
|
+
font-size: calc(var(--me-font-size, 22px) * 2);
|
|
1879
|
+
}
|
|
1880
|
+
:is(
|
|
1881
|
+
[data-structure='integral'],
|
|
1882
|
+
[data-structure='doubleIntegral'],
|
|
1883
|
+
[data-structure='tripleIntegral'],
|
|
1884
|
+
[data-structure='contourIntegral']
|
|
1885
|
+
)
|
|
1886
|
+
> .me-limits
|
|
1887
|
+
> .me-limit:first-child {
|
|
1888
|
+
top: calc(var(--me-font-size, 22px) * -0.35);
|
|
1889
|
+
}
|
|
1890
|
+
:is(
|
|
1891
|
+
[data-structure='integral'],
|
|
1892
|
+
[data-structure='doubleIntegral'],
|
|
1893
|
+
[data-structure='tripleIntegral'],
|
|
1894
|
+
[data-structure='contourIntegral']
|
|
1895
|
+
)
|
|
1896
|
+
> .me-limits
|
|
1897
|
+
> .me-limit:last-child {
|
|
1898
|
+
top: calc(var(--me-font-size, 22px) * 0.25);
|
|
1899
|
+
}
|
|
1900
|
+
:is(
|
|
1901
|
+
[data-structure='integral'],
|
|
1902
|
+
[data-structure='doubleIntegral'],
|
|
1903
|
+
[data-structure='tripleIntegral'],
|
|
1904
|
+
[data-structure='contourIntegral']
|
|
1905
|
+
)[data-limit-placement='limits']
|
|
1906
|
+
> .me-limits
|
|
1907
|
+
> .me-limit {
|
|
1908
|
+
top: 0;
|
|
1909
|
+
}
|
|
1910
|
+
/* Annotation rows overlap their text line boxes, not their painted glyphs. */
|
|
1911
|
+
:is(.me-overset, .me-underset) > .me-slot {
|
|
1912
|
+
display: inline-flex;
|
|
1913
|
+
justify-content: center;
|
|
1914
|
+
}
|
|
1915
|
+
:is(.me-overset, .me-underset) > .me-slot > .me-row {
|
|
1916
|
+
min-height: 0;
|
|
1917
|
+
}
|
|
1918
|
+
:is(.me-overset, .me-underset) > .me-slot :is(.me-input, .me-measure, .me-preview-token) {
|
|
1919
|
+
line-height: 1;
|
|
1920
|
+
padding-block: 0;
|
|
1921
|
+
}
|
|
1922
|
+
.me-overset > .me-slot:first-child {
|
|
1923
|
+
margin-bottom: calc(var(--me-font-size, 22px) * -0.2);
|
|
1924
|
+
}
|
|
1925
|
+
.me-underset > .me-slot:first-child {
|
|
1926
|
+
margin-top: calc(var(--me-font-size, 22px) * -0.2);
|
|
1927
|
+
}
|
|
1928
|
+
/* Matrix environments use text-style cells; aligned/cases retain display rows. */
|
|
1929
|
+
.me-matrix[data-structure='matrix'] > .me-matrix-grid {
|
|
1930
|
+
row-gap: calc(var(--me-font-size, 22px) * 0.07);
|
|
1931
|
+
}
|
|
1932
|
+
.me-matrix[data-structure='matrix'] > .me-matrix-grid > .me-matrix-cell > .me-row {
|
|
1933
|
+
min-height: 0;
|
|
1934
|
+
}
|
|
1935
|
+
.me-matrix[data-structure='matrix']
|
|
1936
|
+
> .me-matrix-grid
|
|
1937
|
+
> .me-matrix-cell
|
|
1938
|
+
> .me-row
|
|
1939
|
+
> .me-run
|
|
1940
|
+
:is(.me-input, .me-measure, .me-preview-token) {
|
|
1941
|
+
line-height: 1.2;
|
|
1942
|
+
padding-block: 0;
|
|
1943
|
+
}
|
|
1944
|
+
.me-matrix[data-structure='matrix']
|
|
1945
|
+
.me-fraction:not([data-math-style='display'])
|
|
1946
|
+
:is(.me-input, .me-measure, .me-preview-token) {
|
|
1947
|
+
font-size: calc(var(--me-font-size, 22px) * 0.7);
|
|
1948
|
+
line-height: 0.85;
|
|
1949
|
+
padding-block: 0;
|
|
1950
|
+
}
|
|
1951
|
+
.me-matrix[data-structure='matrix'] .me-fraction:not([data-math-style='display']) .me-row {
|
|
1952
|
+
min-height: 0;
|
|
1953
|
+
}
|
|
1954
|
+
|
|
1955
|
+
/* Brace annotations need a compact body row as well as a compact label row. */
|
|
1956
|
+
:is(.me-overbrace, .me-underbrace) > .me-slot > .me-row {
|
|
1957
|
+
min-height: 0;
|
|
1958
|
+
}
|
|
1959
|
+
:is(.me-overbrace, .me-underbrace) > .me-slot :is(.me-input, .me-measure, .me-preview-token) {
|
|
1960
|
+
line-height: 1.1;
|
|
1961
|
+
padding-block: 0;
|
|
1962
|
+
}
|
|
1963
|
+
/* A display fraction in a script keeps full-size terms. Raise/lower the whole
|
|
1964
|
+
stack so that its near edge clears the base, not just its fraction bar. */
|
|
1965
|
+
.me-superscript > .me-slot:last-child:has(> .me-row > .me-fraction[data-math-style='display']) {
|
|
1966
|
+
transform: translateY(-30%);
|
|
1967
|
+
}
|
|
1968
|
+
.me-subscript > .me-slot:last-child:has(> .me-row > .me-fraction[data-math-style='display']) {
|
|
1969
|
+
transform: translateY(30%);
|
|
1970
|
+
}
|
|
1971
|
+
|
|
1972
|
+
/* Use the display operator glyphs themselves, including their italic correction,
|
|
1973
|
+
rather than enlarging/skewing a text-font integral or sum. */
|
|
1974
|
+
.me-large-operator[data-structure][data-limit-placement] > .me-limits > .me-operator-glyph {
|
|
1975
|
+
font: normal var(--me-font-size, 22px) / 1.6 'Barocss Large Operators', serif;
|
|
1976
|
+
transform: none;
|
|
1977
|
+
width: auto;
|
|
1978
|
+
height: calc(var(--me-font-size, 22px) * 1.6);
|
|
1979
|
+
}
|
|
1980
|
+
.me-large-operator:is(
|
|
1981
|
+
[data-structure='integral'],
|
|
1982
|
+
[data-structure='doubleIntegral'],
|
|
1983
|
+
[data-structure='tripleIntegral'],
|
|
1984
|
+
[data-structure='contourIntegral']
|
|
1985
|
+
)[data-limit-placement]
|
|
1986
|
+
> .me-limits
|
|
1987
|
+
> .me-operator-glyph {
|
|
1988
|
+
line-height: 2.3;
|
|
1989
|
+
height: calc(var(--me-font-size, 22px) * 2.3);
|
|
1990
|
+
}
|
|
1991
|
+
/* Keep fence curvature and stroke proportional to the chosen math size. */
|
|
1992
|
+
.me-parentheses > .me-delimiter,
|
|
1993
|
+
:is(.me-openClosed, .me-closedOpen, .me-fenced) > :is([data-fence='('], [data-fence=')']) {
|
|
1994
|
+
flex-basis: calc(var(--me-font-size, 22px) * 0.389);
|
|
1995
|
+
}
|
|
1996
|
+
.me-parentheses:has(> .me-slot .me-structure) > .me-delimiter,
|
|
1997
|
+
:is(.me-openClosed, .me-closedOpen, .me-fenced):has(> .me-slot .me-structure)
|
|
1998
|
+
> :is([data-fence='('], [data-fence=')']) {
|
|
1999
|
+
flex-basis: calc(var(--me-font-size, 22px) * 0.55);
|
|
2000
|
+
}
|
|
2001
|
+
.me-matrix[data-environment='pmatrix'] > .me-matrix-delimiter {
|
|
2002
|
+
width: calc(var(--me-font-size, 22px) * 0.55);
|
|
2003
|
+
}
|
|
2004
|
+
.me-delimiter:is([data-fence='{'], [data-fence='}']),
|
|
2005
|
+
.me-matrix:is([data-environment='Bmatrix'], [data-structure='cases']) > .me-matrix-delimiter {
|
|
2006
|
+
width: calc(var(--me-font-size, 22px) * 0.55);
|
|
2007
|
+
flex-basis: calc(var(--me-font-size, 22px) * 0.55);
|
|
2008
|
+
}
|
|
2009
|
+
|
|
2010
|
+
/* Brace outlines derived from KaTeX 0.16.28 svgGeometry.js (MIT; see
|
|
2011
|
+
fonts/LICENSE-KaTeX.txt). Clip three slices so long braces keep curved ends. */
|
|
2012
|
+
:is(.me-overbrace, .me-underbrace) > .me-slot:last-child::before {
|
|
2013
|
+
height: calc(var(--me-font-size, 22px) * 0.548);
|
|
2014
|
+
mask: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22100%25%22%20height%3D%22100%25%22%3E%3Csvg%20x%3D%220%22%20width%3D%2225%25%22%20height%3D%22100%25%22%20viewBox%3D%220%200%20400000%20548%22%20preserveAspectRatio%3D%22xMinYMin%20slice%22%3E%3Cpath%20d%3D%22M6%20548l-6-6v-35l6-11c56-104%20135.3-181.3%20238-232%2057.3-28.7%20117%20-45%20179-50h399577v120H403c-43.3%207-81%2015-113%2026-100.7%2033-179.7%2091-237%20174-2.7%20%205-6%209-10%2013-.7%201-7.3%201-20%201H6z%22%2F%3E%3C%2Fsvg%3E%3Csvg%20x%3D%2225%25%22%20width%3D%2250%25%22%20height%3D%22100%25%22%20viewBox%3D%220%200%20400000%20548%22%20preserveAspectRatio%3D%22xMidYMin%20slice%22%3E%3Cpath%20d%3D%22M200428%20334%20c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7%204-5.7%208.7-9%2014%20-53.3%2086.7-123.7%20153-211%20199-66.7%2036-137.3%2056.3-212%2062H0V214h199568c178.3-11.7%20%20311.7-78.3%20403-201%206-8%209.7-12%2011-12%20.7-.7%206.7-1%2018-1s17.3.3%2018%201c1.3%200%205%204%2011%20%2012%2044.7%2059.3%20101.3%20106.3%20170%20141s145.3%2054.3%20229%2060h199572v120z%22%2F%3E%3C%2Fsvg%3E%3Csvg%20x%3D%2275%25%22%20width%3D%2225%25%22%20height%3D%22100%25%22%20viewBox%3D%220%200%20400000%20548%22%20preserveAspectRatio%3D%22xMaxYMin%20slice%22%3E%3Cpath%20d%3D%22M400000%20542l%20-6%206h-17c-12.7%200-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5%20s-117.2-55.8-184.5-66.5c-.7%200-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6%201%20c124.7%208%20235%2061.7%20331%20161%2031.3%2033.3%2059.7%2072.7%2085%20118l7%2013v35z%22%2F%3E%3C%2Fsvg%3E%3C%2Fsvg%3E')
|
|
2015
|
+
center / 100% 100% no-repeat;
|
|
2016
|
+
}
|
|
2017
|
+
.me-overbrace > .me-slot:last-child {
|
|
2018
|
+
padding-top: calc(var(--me-font-size, 22px) * 0.598);
|
|
2019
|
+
}
|
|
2020
|
+
.me-underbrace > .me-slot:last-child {
|
|
2021
|
+
padding-bottom: calc(var(--me-font-size, 22px) * 0.598);
|
|
2022
|
+
}
|
|
2023
|
+
.me-overbrace > .me-slot:first-child {
|
|
2024
|
+
margin-bottom: calc(var(--me-font-size, 22px) * -0.2);
|
|
2025
|
+
}
|
|
2026
|
+
.me-underbrace > .me-slot:first-child {
|
|
2027
|
+
margin-top: calc(var(--me-font-size, 22px) * -0.2);
|
|
2028
|
+
}
|
|
2029
|
+
.me-root > .me-radical,
|
|
2030
|
+
.me-indexedRoot > .me-radical {
|
|
2031
|
+
width: calc(var(--me-font-size, 22px) * 0.85);
|
|
2032
|
+
}
|
|
2033
|
+
.me-indexedRoot > .me-slot:nth-last-child(2) {
|
|
2034
|
+
align-self: center;
|
|
2035
|
+
display: inline-flex;
|
|
2036
|
+
margin-right: calc(var(--me-font-size, 22px) * -0.6);
|
|
2037
|
+
margin-top: 0;
|
|
2038
|
+
transform: translate(
|
|
2039
|
+
calc(var(--me-font-size, 22px) * 0.35),
|
|
2040
|
+
calc(var(--me-font-size, 22px) * -0.3)
|
|
2041
|
+
);
|
|
2042
|
+
}
|
|
2043
|
+
.me-indexedRoot > .me-slot:nth-last-child(2) > .me-row {
|
|
2044
|
+
min-height: 0;
|
|
2045
|
+
}
|
|
2046
|
+
.me-matrix[data-structure='matrix'] > .me-matrix-grid {
|
|
2047
|
+
column-gap: calc(var(--me-font-size, 22px) * 0.8);
|
|
2048
|
+
}
|
|
2049
|
+
|
|
2050
|
+
/* TeX leaves a thin space after a large operator. Integral side limits also
|
|
2051
|
+
need its italic correction so their upper label clears the slanted tip. */
|
|
2052
|
+
.me-large-operator {
|
|
2053
|
+
gap: calc(var(--me-font-size, 22px) / 6);
|
|
2054
|
+
}
|
|
2055
|
+
.me-large-operator:is(
|
|
2056
|
+
[data-structure='integral'],
|
|
2057
|
+
[data-structure='doubleIntegral'],
|
|
2058
|
+
[data-structure='tripleIntegral'],
|
|
2059
|
+
[data-structure='contourIntegral']
|
|
2060
|
+
):not([data-limit-placement='limits'])
|
|
2061
|
+
> .me-limits
|
|
2062
|
+
> .me-limit:first-child {
|
|
2063
|
+
margin-left: calc(var(--me-font-size, 22px) * 0.44445);
|
|
2064
|
+
}
|
|
2065
|
+
.me-large-operator:is(
|
|
2066
|
+
[data-structure='integral'],
|
|
2067
|
+
[data-structure='doubleIntegral'],
|
|
2068
|
+
[data-structure='tripleIntegral'],
|
|
2069
|
+
[data-structure='contourIntegral']
|
|
2070
|
+
)[data-limit-placement='limits']
|
|
2071
|
+
> .me-limits
|
|
2072
|
+
> .me-operator-glyph {
|
|
2073
|
+
padding-inline-end: calc(var(--me-font-size, 22px) * 0.44445);
|
|
2074
|
+
}
|
|
2075
|
+
.me-large-operator:is(
|
|
2076
|
+
[data-structure='integral'],
|
|
2077
|
+
[data-structure='doubleIntegral'],
|
|
2078
|
+
[data-structure='tripleIntegral'],
|
|
2079
|
+
[data-structure='contourIntegral']
|
|
2080
|
+
)[data-limit-placement='limits']
|
|
2081
|
+
> .me-limits
|
|
2082
|
+
> .me-limit:last-child {
|
|
2083
|
+
transform: translateX(calc(var(--me-font-size, 22px) * -0.22222));
|
|
2084
|
+
}
|
|
2085
|
+
/* The upright glyph's lower side limit no longer needs the negative offset
|
|
2086
|
+
used for the skewed text-font integral. */
|
|
2087
|
+
.me-large-operator:is(
|
|
2088
|
+
[data-structure='integral'],
|
|
2089
|
+
[data-structure='doubleIntegral'],
|
|
2090
|
+
[data-structure='tripleIntegral'],
|
|
2091
|
+
[data-structure='contourIntegral']
|
|
2092
|
+
):not([data-limit-placement='limits'])
|
|
2093
|
+
> .me-limits
|
|
2094
|
+
> .me-limit:last-child {
|
|
2095
|
+
margin-left: 0;
|
|
2096
|
+
}
|
|
2097
|
+
/* A radical encloses math ink rather than the taller UI text line box.
|
|
2098
|
+
Tall nested structures continue to determine their own row height. */
|
|
2099
|
+
:is(.me-root, .me-indexedRoot) > .me-slot:last-child > .me-row {
|
|
2100
|
+
min-height: 0;
|
|
2101
|
+
}
|
|
2102
|
+
:is(.me-root, .me-indexedRoot)
|
|
2103
|
+
> .me-slot:last-child
|
|
2104
|
+
> .me-row
|
|
2105
|
+
> .me-run
|
|
2106
|
+
:is(.me-input, .me-measure, .me-preview-token) {
|
|
2107
|
+
line-height: 1;
|
|
2108
|
+
padding-block: 0;
|
|
2109
|
+
}
|
|
2110
|
+
|
|
2111
|
+
/* Inline math uses text-style operator glyphs and side limits by default.
|
|
2112
|
+
Explicit limits/nolimits remain authoritative. */
|
|
2113
|
+
@font-face {
|
|
2114
|
+
font-family: 'Barocss Small Operators';
|
|
2115
|
+
src: url('./fonts/KaTeX_Size1-Regular.woff2') format('woff2');
|
|
2116
|
+
font-style: normal;
|
|
2117
|
+
font-display: swap;
|
|
2118
|
+
}
|
|
2119
|
+
/* TeX stops reducing nested scripts at scriptscript size. */
|
|
2120
|
+
:is(.me-superscript, .me-subscript, .me-scripts)
|
|
2121
|
+
> .me-slot:not(:first-child)
|
|
2122
|
+
:is(.me-superscript, .me-subscript, .me-scripts)
|
|
2123
|
+
> .me-slot:not(:first-child)
|
|
2124
|
+
:is(.me-input, .me-measure, .me-preview-token) {
|
|
2125
|
+
font-size: calc(var(--me-font-size, 22px) * 0.5);
|
|
2126
|
+
line-height: 1.1;
|
|
2127
|
+
padding-block: 0;
|
|
2128
|
+
}
|
|
2129
|
+
:is(.me-superscript, .me-subscript, .me-scripts)
|
|
2130
|
+
> .me-slot:not(:first-child)
|
|
2131
|
+
:is(.me-superscript, .me-subscript, .me-scripts)
|
|
2132
|
+
> .me-slot:not(:first-child)
|
|
2133
|
+
> .me-row {
|
|
2134
|
+
min-height: 0;
|
|
2135
|
+
}
|
|
2136
|
+
:is(.me-superscript, .me-subscript, .me-scripts)
|
|
2137
|
+
> .me-slot:not(:first-child)
|
|
2138
|
+
:is(.me-root, .me-indexedRoot)
|
|
2139
|
+
> .me-radical {
|
|
2140
|
+
width: calc(var(--me-font-size, 22px) * 0.595);
|
|
2141
|
+
min-height: calc(var(--me-font-size, 22px) * 0.7);
|
|
2142
|
+
}
|
|
2143
|
+
.me-superscript > .me-slot:last-child:has(> .me-row > :is(.me-root, .me-indexedRoot)) {
|
|
2144
|
+
transform: translateY(-15%);
|
|
2145
|
+
}
|
|
2146
|
+
|
|
2147
|
+
/* Nested scripts need less lift after their line boxes shrink. */
|
|
2148
|
+
:is(.me-superscript, .me-subscript, .me-scripts)
|
|
2149
|
+
> .me-slot:not(:first-child)
|
|
2150
|
+
.me-superscript
|
|
2151
|
+
> .me-slot:last-child {
|
|
2152
|
+
transform: translateY(-0.1em);
|
|
2153
|
+
}
|
|
2154
|
+
|
|
2155
|
+
/* KaTeX glyph contours retain the short curve and tall end caps. The cap
|
|
2156
|
+
length is bounded; only the straight stem extends for very tall bodies. */
|
|
2157
|
+
.me-parentheses > .me-delimiter,
|
|
2158
|
+
:is(.me-openClosed, .me-closedOpen, .me-fenced) > :is([data-fence='('], [data-fence=')']) {
|
|
2159
|
+
mask: url('./shapes/parenthesis.svg') center / 61.44% var(--me-font-size, 22px) no-repeat;
|
|
2160
|
+
}
|
|
2161
|
+
.me-parentheses:has(> .me-slot .me-structure) > .me-delimiter,
|
|
2162
|
+
:is(.me-openClosed, .me-closedOpen, .me-fenced):has(> .me-slot .me-structure)
|
|
2163
|
+
> :is([data-fence='('], [data-fence=')']),
|
|
2164
|
+
.me-matrix[data-environment='pmatrix'] > .me-matrix-delimiter {
|
|
2165
|
+
--me-fence-cap: min(50%, calc(var(--me-font-size, 22px) * 1.809));
|
|
2166
|
+
mask: url('./shapes/parenthesis-top.svg') left top / 100% var(--me-fence-cap) no-repeat,
|
|
2167
|
+
url('./shapes/parenthesis-bottom.svg') left bottom / 100% var(--me-fence-cap) no-repeat,
|
|
2168
|
+
linear-gradient(currentColor, currentColor) left center / 22.826%
|
|
2169
|
+
calc(100% - var(--me-fence-cap) - var(--me-fence-cap) + 1px) no-repeat;
|
|
2170
|
+
}
|
|
2171
|
+
|
|
2172
|
+
/* The font contour has a tapered entry and thin rising stroke. Reusing it
|
|
2173
|
+
avoids the thick uniform diagonal produced by the old polygon. */
|
|
2174
|
+
:is(.me-root, .me-indexedRoot) > .me-radical {
|
|
2175
|
+
clip-path: none;
|
|
2176
|
+
mask: url('./shapes/radical.svg') center / 100% 100% no-repeat;
|
|
2177
|
+
}
|
|
2178
|
+
|
|
2179
|
+
/* A nested radical needs clearance above its own rule. Without this space,
|
|
2180
|
+
successive rules collapse together even when the operand metrics agree. */
|
|
2181
|
+
:is(.me-root, .me-indexedRoot)
|
|
2182
|
+
> .me-slot:last-child:has(> .me-row > :is(.me-root, .me-indexedRoot)) {
|
|
2183
|
+
padding-top: calc(var(--me-font-size, 22px) * 0.25);
|
|
2184
|
+
}
|
|
2185
|
+
|
|
2186
|
+
/* Resolve reduced operator styles from model slots. Display operators retain
|
|
2187
|
+
their existing geometry; text/script contexts use Size1 and side limits. */
|
|
2188
|
+
.me-editor [data-operator-style] {
|
|
2189
|
+
--me-operator-scale: 1;
|
|
2190
|
+
--me-bound-scale: 0.7;
|
|
2191
|
+
--me-operator-size: calc(var(--me-font-size, 22px) * var(--me-operator-scale));
|
|
2192
|
+
}
|
|
2193
|
+
.me-editor [data-operator-style='script'] {
|
|
2194
|
+
--me-operator-scale: 0.7;
|
|
2195
|
+
--me-bound-scale: 0.5;
|
|
2196
|
+
}
|
|
2197
|
+
.me-editor [data-operator-style='scriptscript'] {
|
|
2198
|
+
--me-operator-scale: 0.5;
|
|
2199
|
+
--me-bound-scale: 0.5;
|
|
2200
|
+
}
|
|
2201
|
+
.me-editor
|
|
2202
|
+
.me-large-operator[data-operator-style]:not([data-operator-style='display'])
|
|
2203
|
+
> .me-limits
|
|
2204
|
+
> .me-operator-glyph {
|
|
2205
|
+
font: normal var(--me-operator-size) / 1.1 'Barocss Small Operators', serif;
|
|
2206
|
+
height: calc(var(--me-operator-size) * 1.1);
|
|
2207
|
+
transform: none;
|
|
2208
|
+
}
|
|
2209
|
+
.me-editor
|
|
2210
|
+
:is(.me-large-operator, .me-limit-operator)[data-operator-style]:not(
|
|
2211
|
+
[data-operator-style='display']
|
|
2212
|
+
) {
|
|
2213
|
+
gap: calc(var(--me-operator-size) / 6);
|
|
2214
|
+
}
|
|
2215
|
+
.me-editor .me-large-operator[data-operator-style][data-layout-limits='side'] > .me-limits {
|
|
2216
|
+
display: inline-grid;
|
|
2217
|
+
grid-template-columns: max-content max-content;
|
|
2218
|
+
grid-template-rows: auto auto;
|
|
2219
|
+
align-items: center;
|
|
2220
|
+
}
|
|
2221
|
+
.me-editor
|
|
2222
|
+
.me-large-operator[data-operator-style][data-layout-limits='side']
|
|
2223
|
+
> .me-limits
|
|
2224
|
+
> .me-operator-glyph {
|
|
2225
|
+
grid-column: 1;
|
|
2226
|
+
grid-row: 1 / 3;
|
|
2227
|
+
}
|
|
2228
|
+
.me-editor
|
|
2229
|
+
.me-large-operator[data-operator-style][data-layout-limits='side']
|
|
2230
|
+
> .me-limits
|
|
2231
|
+
> .me-limit:first-child {
|
|
2232
|
+
grid-column: 2;
|
|
2233
|
+
grid-row: 1;
|
|
2234
|
+
}
|
|
2235
|
+
.me-editor
|
|
2236
|
+
.me-large-operator[data-operator-style][data-layout-limits='side']
|
|
2237
|
+
> .me-limits
|
|
2238
|
+
> .me-limit:last-child {
|
|
2239
|
+
grid-column: 2;
|
|
2240
|
+
grid-row: 2;
|
|
2241
|
+
}
|
|
2242
|
+
.me-editor
|
|
2243
|
+
.me-large-operator[data-operator-style]:not([data-operator-style='display'])
|
|
2244
|
+
> .me-limits
|
|
2245
|
+
> .me-limit {
|
|
2246
|
+
top: 0;
|
|
2247
|
+
margin-left: 0;
|
|
2248
|
+
}
|
|
2249
|
+
.me-editor
|
|
2250
|
+
.me-large-operator[data-operator-style]:not([data-operator-style='display']):is(
|
|
2251
|
+
[data-structure='integral'],
|
|
2252
|
+
[data-structure='doubleIntegral'],
|
|
2253
|
+
[data-structure='tripleIntegral'],
|
|
2254
|
+
[data-structure='contourIntegral']
|
|
2255
|
+
)[data-layout-limits='side']
|
|
2256
|
+
> .me-limits
|
|
2257
|
+
> .me-limit:first-child {
|
|
2258
|
+
margin-left: calc(var(--me-operator-size) * 0.19445);
|
|
2259
|
+
top: calc(var(--me-operator-size) * -0.12);
|
|
2260
|
+
}
|
|
2261
|
+
.me-editor
|
|
2262
|
+
.me-large-operator[data-operator-style]:not([data-operator-style='display']):is(
|
|
2263
|
+
[data-structure='integral'],
|
|
2264
|
+
[data-structure='doubleIntegral'],
|
|
2265
|
+
[data-structure='tripleIntegral'],
|
|
2266
|
+
[data-structure='contourIntegral']
|
|
2267
|
+
)[data-layout-limits='side']
|
|
2268
|
+
> .me-limits
|
|
2269
|
+
> .me-limit:last-child {
|
|
2270
|
+
top: calc(var(--me-operator-size) * 0.08);
|
|
2271
|
+
}
|
|
2272
|
+
.me-editor
|
|
2273
|
+
.me-large-operator[data-operator-style]:not([data-operator-style='display']):is(
|
|
2274
|
+
[data-structure='integral'],
|
|
2275
|
+
[data-structure='doubleIntegral'],
|
|
2276
|
+
[data-structure='tripleIntegral'],
|
|
2277
|
+
[data-structure='contourIntegral']
|
|
2278
|
+
)[data-layout-limits='stacked']
|
|
2279
|
+
> .me-limits
|
|
2280
|
+
> .me-operator-glyph {
|
|
2281
|
+
padding-inline-end: calc(var(--me-operator-size) * 0.19445);
|
|
2282
|
+
}
|
|
2283
|
+
.me-editor
|
|
2284
|
+
.me-large-operator[data-operator-style]:not([data-operator-style='display']):is(
|
|
2285
|
+
[data-structure='integral'],
|
|
2286
|
+
[data-structure='doubleIntegral'],
|
|
2287
|
+
[data-structure='tripleIntegral'],
|
|
2288
|
+
[data-structure='contourIntegral']
|
|
2289
|
+
)[data-layout-limits='stacked']
|
|
2290
|
+
> .me-limits
|
|
2291
|
+
> .me-limit:last-child {
|
|
2292
|
+
transform: translateX(calc(var(--me-operator-size) * -0.097225));
|
|
2293
|
+
}
|
|
2294
|
+
.me-editor
|
|
2295
|
+
.me-limit-operator[data-operator-style]:not([data-operator-style='display'])
|
|
2296
|
+
> .me-limits
|
|
2297
|
+
> .me-limit-glyph {
|
|
2298
|
+
font-size: var(--me-operator-size);
|
|
2299
|
+
}
|
|
2300
|
+
.me-editor .me-limit-operator[data-operator-style][data-layout-limits='side'] > .me-limits {
|
|
2301
|
+
flex-direction: row;
|
|
2302
|
+
align-items: center;
|
|
2303
|
+
gap: 0;
|
|
2304
|
+
}
|
|
2305
|
+
.me-editor
|
|
2306
|
+
.me-limit-operator[data-operator-style][data-layout-limits='side']
|
|
2307
|
+
> .me-limits
|
|
2308
|
+
> .me-limit {
|
|
2309
|
+
transform: translateY(calc(var(--me-operator-size) * 0.18));
|
|
2310
|
+
}
|
|
2311
|
+
/* Row styles distinguish a nested operator body from its own smaller bounds.
|
|
2312
|
+
Do not apply an ancestor bound's size to every descendant text token. */
|
|
2313
|
+
.me-editor [data-operator-style]:not([data-operator-style='display']) .me-row[data-layout-style] {
|
|
2314
|
+
min-height: 0;
|
|
2315
|
+
}
|
|
2316
|
+
.me-editor
|
|
2317
|
+
[data-operator-style]:not([data-operator-style='display'])
|
|
2318
|
+
.me-row[data-layout-style]
|
|
2319
|
+
> .me-run
|
|
2320
|
+
:is(.me-input, .me-measure, .me-preview-token) {
|
|
2321
|
+
font-size: var(--me-font-size, 22px);
|
|
2322
|
+
line-height: 1.1;
|
|
2323
|
+
padding-block: 0;
|
|
2324
|
+
}
|
|
2325
|
+
.me-editor
|
|
2326
|
+
[data-operator-style]:not([data-operator-style='display'])
|
|
2327
|
+
.me-row[data-layout-style='script']
|
|
2328
|
+
> .me-run
|
|
2329
|
+
:is(.me-input, .me-measure, .me-preview-token) {
|
|
2330
|
+
font-size: calc(var(--me-font-size, 22px) * 0.7);
|
|
2331
|
+
}
|
|
2332
|
+
.me-editor
|
|
2333
|
+
[data-operator-style]:not([data-operator-style='display'])
|
|
2334
|
+
.me-row[data-layout-style='scriptscript']
|
|
2335
|
+
> .me-run
|
|
2336
|
+
:is(.me-input, .me-measure, .me-preview-token) {
|
|
2337
|
+
font-size: calc(var(--me-font-size, 22px) * 0.5);
|
|
2338
|
+
}
|
|
2339
|
+
|
|
2340
|
+
/* Glyph width and mathematical spacing are separate from the caret hit area.
|
|
2341
|
+
Binary/relation/punctuation gaps disappear in script styles. Empty slots
|
|
2342
|
+
retain their existing minimum width; only model boundaries shrink. */
|
|
2343
|
+
.me-row {
|
|
2344
|
+
--me-spacing-unit: calc(var(--me-font-size, 22px) / 18);
|
|
2345
|
+
}
|
|
2346
|
+
.me-row[data-layout-style='script'],
|
|
2347
|
+
.me-row[data-layout-style='scriptscript'] {
|
|
2348
|
+
--me-spacing-unit: 0px;
|
|
2349
|
+
}
|
|
2350
|
+
.me-row > :is(.me-run, .me-operatorName, .me-fraction)[data-math-spacing='true'] {
|
|
2351
|
+
margin-left: calc(var(--me-space-before, 0) * var(--me-spacing-unit));
|
|
2352
|
+
margin-right: calc(var(--me-space-after, 0) * var(--me-spacing-unit));
|
|
2353
|
+
}
|
|
2354
|
+
.me-run[data-math-spacing='true']:not(.me-empty) > .me-measure {
|
|
2355
|
+
padding-inline: 0;
|
|
2356
|
+
min-width: 0;
|
|
2357
|
+
}
|
|
2358
|
+
.me-row > .me-empty-boundary:not(:focus-within) > .me-measure {
|
|
2359
|
+
min-width: 1px;
|
|
2360
|
+
width: 1px;
|
|
2361
|
+
padding-inline: 0;
|
|
2362
|
+
}
|
|
2363
|
+
|
|
2364
|
+
/* Function names contribute glyph width only. The row sets their thin spacing,
|
|
2365
|
+
including the suppressed gap before an opening parenthesis. */
|
|
2366
|
+
.me-operatorName > .me-slot > .me-row > .me-run:not(.me-empty) > .me-measure {
|
|
2367
|
+
min-width: 0;
|
|
2368
|
+
padding-inline: 0;
|
|
2369
|
+
}
|
|
2370
|
+
.me-row[data-layout-style='script'] {
|
|
2371
|
+
--me-tight-unit: calc(var(--me-font-size, 22px) * 0.7 / 18);
|
|
2372
|
+
}
|
|
2373
|
+
.me-row[data-layout-style='scriptscript'] {
|
|
2374
|
+
--me-tight-unit: calc(var(--me-font-size, 22px) * 0.5 / 18);
|
|
2375
|
+
}
|
|
2376
|
+
.me-row:is([data-layout-style='script'], [data-layout-style='scriptscript'])
|
|
2377
|
+
> [data-math-spacing='true'] {
|
|
2378
|
+
margin-left: calc(var(--me-tight-before, 0) * var(--me-tight-unit));
|
|
2379
|
+
margin-right: calc(var(--me-tight-after, 0) * var(--me-tight-unit));
|
|
2380
|
+
}
|