desmost 0.10.1 → 0.11.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/README.md +5 -5
- package/dist/compiler/compile.d.ts +1 -1
- package/dist/compiler/compile.js +1 -1
- package/dist/compiler/compiler.d.ts.map +1 -1
- package/dist/compiler/compiler.js +9 -8
- package/dist/compiler/compiler.js.map +1 -1
- package/dist/compiler/format.js +1 -1
- package/dist/compiler/format.js.map +1 -1
- package/dist/decompiler/decompile.d.ts +13 -5
- package/dist/decompiler/decompile.d.ts.map +1 -1
- package/dist/decompiler/decompile.js +24 -13
- package/dist/decompiler/decompile.js.map +1 -1
- package/dist/decompiler/emit.d.ts +5 -2
- package/dist/decompiler/emit.d.ts.map +1 -1
- package/dist/decompiler/emit.js +41 -20
- package/dist/decompiler/emit.js.map +1 -1
- package/dist/decompiler/extract.d.ts +1 -9
- package/dist/decompiler/extract.d.ts.map +1 -1
- package/dist/decompiler/extract.js +24 -58
- package/dist/decompiler/extract.js.map +1 -1
- package/dist/decompiler/format.d.ts +0 -1
- package/dist/decompiler/format.d.ts.map +1 -1
- package/dist/decompiler/format.js +3 -9
- package/dist/decompiler/format.js.map +1 -1
- package/dist/errors.d.ts +14 -7
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +20 -2
- package/dist/errors.js.map +1 -1
- package/dist/magic/expr/index.js +6 -6
- package/dist/magic/expr/index.js.map +1 -1
- package/dist/magic/expr/latex.d.ts +5 -2
- package/dist/magic/expr/latex.d.ts.map +1 -1
- package/dist/magic/expr/latex.js +4 -2
- package/dist/magic/expr/latex.js.map +1 -1
- package/dist/magic/expr/text.d.ts +5 -2
- package/dist/magic/expr/text.d.ts.map +1 -1
- package/dist/magic/expr/text.js +4 -2
- package/dist/magic/expr/text.js.map +1 -1
- package/dist/magic/global/{dark-mode.d.ts → dark.d.ts} +6 -2
- package/dist/magic/global/dark.d.ts.map +1 -0
- package/dist/magic/global/dark.js +20 -0
- package/dist/magic/global/dark.js.map +1 -0
- package/dist/magic/global/desmos.d.ts +4 -1
- package/dist/magic/global/desmos.d.ts.map +1 -1
- package/dist/magic/global/desmos.js +23 -0
- package/dist/magic/global/desmos.js.map +1 -1
- package/dist/magic/global/index.d.ts +5 -5
- package/dist/magic/global/index.d.ts.map +1 -1
- package/dist/magic/global/index.js +8 -11
- package/dist/magic/global/index.js.map +1 -1
- package/dist/magic/global/viewport.d.ts +3 -0
- package/dist/magic/global/viewport.d.ts.map +1 -1
- package/dist/magic/global/viewport.js +20 -0
- package/dist/magic/global/viewport.js.map +1 -1
- package/dist/magic/incantation.d.ts +15 -2
- package/dist/magic/incantation.d.ts.map +1 -1
- package/dist/magic/incantation.js +8 -1
- package/dist/magic/incantation.js.map +1 -1
- package/dist/magic/local/anim.d.ts +5 -1
- package/dist/magic/local/anim.d.ts.map +1 -1
- package/dist/magic/local/anim.js +12 -1
- package/dist/magic/local/anim.js.map +1 -1
- package/dist/magic/local/colour.d.ts +7 -3
- package/dist/magic/local/colour.d.ts.map +1 -1
- package/dist/magic/local/colour.js +13 -3
- package/dist/magic/local/colour.js.map +1 -1
- package/dist/magic/local/dashed.d.ts +5 -1
- package/dist/magic/local/dashed.d.ts.map +1 -1
- package/dist/magic/local/dashed.js +12 -1
- package/dist/magic/local/dashed.js.map +1 -1
- package/dist/magic/local/fill.d.ts +5 -1
- package/dist/magic/local/fill.d.ts.map +1 -1
- package/dist/magic/local/fill.js +15 -1
- package/dist/magic/local/fill.js.map +1 -1
- package/dist/magic/local/hide.d.ts +5 -1
- package/dist/magic/local/hide.d.ts.map +1 -1
- package/dist/magic/local/hide.js +12 -1
- package/dist/magic/local/hide.js.map +1 -1
- package/dist/magic/local/index.d.ts +13 -2
- package/dist/magic/local/index.d.ts.map +1 -1
- package/dist/magic/local/index.js +24 -24
- package/dist/magic/local/index.js.map +1 -1
- package/dist/magic/local/label.d.ts +6 -2
- package/dist/magic/local/label.d.ts.map +1 -1
- package/dist/magic/local/label.js +19 -1
- package/dist/magic/local/label.js.map +1 -1
- package/dist/magic/local/line.d.ts +5 -1
- package/dist/magic/local/line.d.ts.map +1 -1
- package/dist/magic/local/line.js +19 -1
- package/dist/magic/local/line.js.map +1 -1
- package/dist/magic/local/no-line.d.ts +5 -1
- package/dist/magic/local/no-line.d.ts.map +1 -1
- package/dist/magic/local/no-line.js +12 -1
- package/dist/magic/local/no-line.js.map +1 -1
- package/dist/magic/local/point.d.ts +5 -1
- package/dist/magic/local/point.d.ts.map +1 -1
- package/dist/magic/local/point.js +19 -1
- package/dist/magic/local/point.js.map +1 -1
- package/dist/magic/local/secret.d.ts +5 -1
- package/dist/magic/local/secret.d.ts.map +1 -1
- package/dist/magic/local/secret.js +12 -1
- package/dist/magic/local/secret.js.map +1 -1
- package/dist/magic/local/slider.d.ts +5 -1
- package/dist/magic/local/slider.d.ts.map +1 -1
- package/dist/magic/local/slider.js +13 -1
- package/dist/magic/local/slider.js.map +1 -1
- package/dist/parser/ast.d.ts +9 -3
- package/dist/parser/ast.d.ts.map +1 -1
- package/dist/parser/ast.js +3 -1
- package/dist/parser/ast.js.map +1 -1
- package/dist/parser/desmost-parser.d.ts +2 -2
- package/dist/parser/desmost-parser.d.ts.map +1 -1
- package/dist/parser/desmost-parser.js +6 -4
- package/dist/parser/desmost-parser.js.map +1 -1
- package/dist/parser/errors.d.ts +11 -0
- package/dist/parser/errors.d.ts.map +1 -0
- package/dist/parser/errors.js +4 -0
- package/dist/parser/errors.js.map +1 -0
- package/dist/parser/generic-parser.d.ts +7 -5
- package/dist/parser/generic-parser.d.ts.map +1 -1
- package/dist/parser/generic-parser.js +7 -10
- package/dist/parser/generic-parser.js.map +1 -1
- package/package.json +1 -1
- package/src/compiler/compile.ts +1 -1
- package/src/compiler/compiler.ts +10 -9
- package/src/compiler/format.ts +1 -1
- package/src/decompiler/decompile.ts +30 -14
- package/src/decompiler/emit.ts +57 -25
- package/src/decompiler/extract.ts +30 -89
- package/src/decompiler/format.ts +3 -14
- package/src/decompiler/readme.md +2 -2
- package/src/errors.ts +13 -7
- package/src/magic/.template.ts +8 -0
- package/src/magic/expr/index.ts +6 -7
- package/src/magic/expr/latex.ts +8 -4
- package/src/magic/expr/text.ts +8 -4
- package/src/magic/global/dark.ts +29 -0
- package/src/magic/global/desmos.ts +35 -5
- package/src/magic/global/index.ts +8 -14
- package/src/magic/global/viewport.ts +29 -0
- package/src/magic/incantation.ts +28 -6
- package/src/magic/local/anim.ts +16 -3
- package/src/magic/local/colour.ts +18 -6
- package/src/magic/local/dashed.ts +16 -2
- package/src/magic/local/fill.ts +20 -3
- package/src/magic/local/hide.ts +16 -2
- package/src/magic/local/index.ts +24 -25
- package/src/magic/local/label.ts +31 -8
- package/src/magic/local/line.ts +25 -3
- package/src/magic/local/no-line.ts +16 -2
- package/src/magic/local/point.ts +27 -3
- package/src/magic/local/secret.ts +16 -2
- package/src/magic/local/slider.ts +18 -3
- package/src/parser/ast.ts +10 -7
- package/src/parser/desmost-parser.ts +10 -6
- package/src/parser/errors.ts +10 -0
- package/src/parser/generic-parser.ts +9 -11
- package/svelte/desmost.svelte +107 -107
- package/dist/magic/expr/index.d.ts +0 -3
- package/dist/magic/expr/index.d.ts.map +0 -1
- package/dist/magic/global/dark-mode.d.ts.map +0 -1
- package/dist/magic/global/dark-mode.js +0 -9
- package/dist/magic/global/dark-mode.js.map +0 -1
- package/src/magic/global/dark-mode.ts +0 -15
package/svelte/desmost.svelte
CHANGED
|
@@ -12,11 +12,11 @@ When this component is unmounted, it calls `.destroy()` on each calculator insta
|
|
|
12
12
|
|
|
13
13
|
```svelte
|
|
14
14
|
<script>
|
|
15
|
-
|
|
15
|
+
import Content from "./content.md";
|
|
16
16
|
</script>
|
|
17
17
|
|
|
18
18
|
<Desmost>
|
|
19
|
-
|
|
19
|
+
<Content />
|
|
20
20
|
</Desmost>
|
|
21
21
|
```
|
|
22
22
|
|
|
@@ -24,7 +24,7 @@ With compile options:
|
|
|
24
24
|
|
|
25
25
|
```svelte
|
|
26
26
|
<Desmost options={{ errors: "crash" }}>
|
|
27
|
-
|
|
27
|
+
<Content />
|
|
28
28
|
</Desmost>
|
|
29
29
|
```
|
|
30
30
|
|
|
@@ -32,7 +32,7 @@ With styling:
|
|
|
32
32
|
|
|
33
33
|
```svelte
|
|
34
34
|
<Desmost width="100%" height="50vh">
|
|
35
|
-
|
|
35
|
+
<Content />
|
|
36
36
|
</Desmost>
|
|
37
37
|
```
|
|
38
38
|
-->
|
|
@@ -47,72 +47,72 @@ import { onMount, type Snippet } from "svelte";
|
|
|
47
47
|
|
|
48
48
|
interface Props
|
|
49
49
|
{
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
50
|
+
children: Snippet;
|
|
51
|
+
|
|
52
|
+
/** Compile options to pass to Desmost.*/
|
|
53
|
+
options?: DesmostOptions;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Default settings to apply to all Desmos calculator instances.
|
|
57
|
+
*
|
|
58
|
+
* These are applied *before* compilation, so individual Desmost blocks can override them with `/desmos`.
|
|
59
|
+
*/
|
|
60
|
+
settings?: Desmos.GraphConfiguration & Desmos.GraphSettings;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Should compilation be lazy using `IntersectionObserver`?
|
|
64
|
+
*
|
|
65
|
+
* ## Example
|
|
66
|
+
*
|
|
67
|
+
* ```svelte
|
|
68
|
+
* <Desmost lazy />
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
lazy?: true;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* CSS styles to apply to each Desmos calculator's containing element.
|
|
75
|
+
*
|
|
76
|
+
* ## Example
|
|
77
|
+
*
|
|
78
|
+
* ```svelte
|
|
79
|
+
* <Desmost style="margin: 1rem; border: 1px solid red" />
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
style?: string;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Width of each Desmos calculator's containing element.
|
|
86
|
+
*
|
|
87
|
+
* ## Example
|
|
88
|
+
*
|
|
89
|
+
* ```svelte
|
|
90
|
+
* <Desmost width="500px" />
|
|
91
|
+
* <Desmost width="40rem" />
|
|
92
|
+
* <Desmost width="80vw" />
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
width?: string;
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Height of each Desmos calculator's containing element.
|
|
99
|
+
*
|
|
100
|
+
* ## Example
|
|
101
|
+
*
|
|
102
|
+
* ```svelte
|
|
103
|
+
* <Desmost height="500px" />
|
|
104
|
+
* <Desmost height="40rem" />
|
|
105
|
+
* <Desmost height="80vw" />
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
height?: string;
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
let {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
112
|
+
children,
|
|
113
|
+
options, settings,
|
|
114
|
+
lazy,
|
|
115
|
+
style, width, height,
|
|
116
116
|
}: Props = $props();
|
|
117
117
|
|
|
118
118
|
|
|
@@ -123,56 +123,56 @@ let lazy_observers: IntersectionObserver[] = [];
|
|
|
123
123
|
|
|
124
124
|
onMount(() =>
|
|
125
125
|
{
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
126
|
+
let sources = root.querySelectorAll("pre[lang='desmos'], pre.language-desmos");
|
|
127
|
+
|
|
128
|
+
for (let source of sources.values()) {
|
|
129
|
+
source.style.display = "none";
|
|
130
|
+
|
|
131
|
+
let el_desmos = source.parentNode!.insertBefore(
|
|
132
|
+
document.createElement("div"),
|
|
133
|
+
source.nextSibling,
|
|
134
|
+
);
|
|
135
|
+
|
|
136
|
+
if (width != undefined) el_desmos.style.width = width;
|
|
137
|
+
if (height != undefined) el_desmos.style.height = height;
|
|
138
|
+
if (style != undefined) el_desmos.style.cssText += style;
|
|
139
|
+
|
|
140
|
+
if (!lazy) {
|
|
141
|
+
inject(el_desmos, source.textContent);
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
let observer = new IntersectionObserver(([entry]) => {
|
|
145
|
+
if (entry.isIntersecting) {
|
|
146
|
+
inject(el_desmos, source.textContent);
|
|
147
|
+
observer.disconnect();
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
observer.observe(el_desmos);
|
|
151
|
+
lazy_observers.push(observer);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
return () => {
|
|
156
|
+
desmos_instances.forEach(d => d.destroy());
|
|
157
|
+
lazy_observers.forEach(o => o.disconnect());
|
|
158
|
+
};
|
|
159
159
|
});
|
|
160
160
|
|
|
161
161
|
function inject(el_desmos: HTMLElement, source: string)
|
|
162
162
|
{
|
|
163
|
-
|
|
163
|
+
let desmos = Desmos.GraphingCalculator(el_desmos);
|
|
164
164
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
165
|
+
if (settings != undefined) {
|
|
166
|
+
desmos.updateSettings(settings);
|
|
167
|
+
}
|
|
168
168
|
|
|
169
|
-
|
|
170
|
-
|
|
169
|
+
desmos_instances.push(desmos);
|
|
170
|
+
compile(desmos, source, options);
|
|
171
171
|
}
|
|
172
172
|
|
|
173
173
|
</script>
|
|
174
174
|
|
|
175
175
|
|
|
176
176
|
<div bind:this={root} style:display="contents">
|
|
177
|
-
|
|
177
|
+
{@render children?.()}
|
|
178
178
|
</div>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/magic/expr/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAM3D,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,EAInD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dark-mode.d.ts","sourceRoot":"","sources":["../../../src/magic/global/dark-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAG1D,qBAAa,mBAAoB,SAAQ,WAAW,CAAC,MAAM,CAAC;IAE3D,SAAkB,WAAW,qEACuC;IAEpE,SAAkB,UAAU,UAAS;IAErC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU;CAI/B"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Incantation } from "../incantation.js";
|
|
2
|
-
export class DarkModeIncantation extends Incantation {
|
|
3
|
-
description = "Enable dark mode for the calculator, which inverts all colours.";
|
|
4
|
-
identifier = "dark";
|
|
5
|
-
apply(target) {
|
|
6
|
-
target.updateSettings({ invertedColors: true });
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=dark-mode.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dark-mode.js","sourceRoot":"","sources":["../../../src/magic/global/dark-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAe,MAAM,gBAAgB,CAAC;AAG1D,MAAM,OAAO,mBAAoB,SAAQ,WAAmB;IAEzC,WAAW,GAC1B,iEAAiE,CAAA;IAElD,UAAU,GAAG,MAAM,CAAA;IAErC,KAAK,CAAC,MAAyB;QAE9B,MAAM,CAAC,cAAc,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;CACD"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Incantation, type GLOBAL } from "../incantation";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export class DarkModeIncantation extends Incantation<GLOBAL>
|
|
5
|
-
{
|
|
6
|
-
override readonly description
|
|
7
|
-
= "Enable dark mode for the calculator, which inverts all colours."
|
|
8
|
-
|
|
9
|
-
override readonly identifier = "dark"
|
|
10
|
-
|
|
11
|
-
apply(target: Desmos.Calculator)
|
|
12
|
-
{
|
|
13
|
-
target.updateSettings({ invertedColors: true });
|
|
14
|
-
}
|
|
15
|
-
}
|