@pie-players/pie-assessment-toolkit 0.3.2 → 0.3.4
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 -8
- package/dist/components/ItemToolBar.custom-element.js +539 -94
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/services/PNPToolResolver.d.ts.map +1 -1
- package/dist/services/PNPToolResolver.js +4 -1
- package/dist/services/PNPToolResolver.js.map +1 -1
- package/dist/services/ToolRegistry.d.ts +51 -0
- package/dist/services/ToolRegistry.d.ts.map +1 -1
- package/dist/services/ToolRegistry.js +60 -0
- package/dist/services/ToolRegistry.js.map +1 -1
- package/dist/services/ToolkitCoordinator.d.ts +12 -24
- package/dist/services/ToolkitCoordinator.d.ts.map +1 -1
- package/dist/services/ToolkitCoordinator.js +60 -99
- package/dist/services/ToolkitCoordinator.js.map +1 -1
- package/dist/services/defaultPersonalNeedsProfile.js +2 -2
- package/dist/services/defaultPersonalNeedsProfile.js.map +1 -1
- package/dist/services/interfaces.d.ts +8 -3
- package/dist/services/interfaces.d.ts.map +1 -1
- package/dist/services/interfaces.js.map +1 -1
- package/dist/services/pnp-standard-features.d.ts +1 -1
- package/dist/services/tool-providers/index.d.ts +0 -4
- package/dist/services/tool-providers/index.d.ts.map +1 -1
- package/dist/services/tool-providers/index.js +0 -2
- package/dist/services/tool-providers/index.js.map +1 -1
- package/dist/services/tools-config-normalizer.d.ts +40 -3
- package/dist/services/tools-config-normalizer.d.ts.map +1 -1
- package/dist/services/tools-config-normalizer.js +86 -11
- package/dist/services/tools-config-normalizer.js.map +1 -1
- package/dist/tools/client.d.ts +0 -2
- package/dist/tools/client.d.ts.map +1 -1
- package/dist/tools/client.js +0 -4
- package/dist/tools/client.js.map +1 -1
- package/dist/tools/default-tool-module-loaders.js +1 -1
- package/dist/tools/default-tool-module-loaders.js.map +1 -1
- package/dist/tools/library-loader.d.ts.map +1 -1
- package/dist/tools/library-loader.js +0 -35
- package/dist/tools/library-loader.js.map +1 -1
- package/dist/tools/registrations/accessibility-tools.d.ts.map +1 -1
- package/dist/tools/registrations/accessibility-tools.js +44 -41
- package/dist/tools/registrations/accessibility-tools.js.map +1 -1
- package/dist/tools/registrations/calculator.d.ts.map +1 -1
- package/dist/tools/registrations/calculator.js +50 -2
- package/dist/tools/registrations/calculator.js.map +1 -1
- package/dist/tools/registrations/interaction-tools.d.ts.map +1 -1
- package/dist/tools/registrations/interaction-tools.js +22 -28
- package/dist/tools/registrations/interaction-tools.js.map +1 -1
- package/dist/tools/registrations/measurement-tools.d.ts.map +1 -1
- package/dist/tools/registrations/measurement-tools.js +19 -27
- package/dist/tools/registrations/measurement-tools.js.map +1 -1
- package/dist/tools/registrations/subject-specific-tools.d.ts.map +1 -1
- package/dist/tools/registrations/subject-specific-tools.js +53 -37
- package/dist/tools/registrations/subject-specific-tools.js.map +1 -1
- package/dist/tools/registrations/toolbar-registration-helpers.d.ts +15 -0
- package/dist/tools/registrations/toolbar-registration-helpers.d.ts.map +1 -0
- package/dist/tools/registrations/toolbar-registration-helpers.js +22 -0
- package/dist/tools/registrations/toolbar-registration-helpers.js.map +1 -0
- package/dist/tools/registrations/tts.d.ts.map +1 -1
- package/dist/tools/registrations/tts.js +49 -0
- package/dist/tools/registrations/tts.js.map +1 -1
- package/dist/tools/types.d.ts +1 -1
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js.map +1 -1
- package/package.json +8 -10
- package/dist/services/tool-providers/MathJsToolProvider.d.ts +0 -25
- package/dist/services/tool-providers/MathJsToolProvider.d.ts.map +0 -1
- package/dist/services/tool-providers/MathJsToolProvider.js +0 -53
- package/dist/services/tool-providers/MathJsToolProvider.js.map +0 -1
- package/dist/services/tool-providers/TIToolProvider.d.ts +0 -107
- package/dist/services/tool-providers/TIToolProvider.d.ts.map +0 -1
- package/dist/services/tool-providers/TIToolProvider.js +0 -123
- package/dist/services/tool-providers/TIToolProvider.js.map +0 -1
- package/dist/tools/calculators/mathjs-provider.d.ts +0 -50
- package/dist/tools/calculators/mathjs-provider.d.ts.map +0 -1
- package/dist/tools/calculators/mathjs-provider.js +0 -660
- package/dist/tools/calculators/mathjs-provider.js.map +0 -1
- package/dist/tools/calculators/ti-provider.d.ts +0 -122
- package/dist/tools/calculators/ti-provider.d.ts.map +0 -1
- package/dist/tools/calculators/ti-provider.js +0 -710
- package/dist/tools/calculators/ti-provider.js.map +0 -1
- package/src/README.md +0 -626
- package/src/components/ItemToolBar.svelte +0 -717
- package/src/components/PieAssessmentToolkit.svelte +0 -681
- package/src/components/SectionToolBar.svelte +0 -58
- package/src/components/ToolButton.svelte +0 -146
- package/src/components/ToolButtonGroup.svelte +0 -125
- package/src/tools/README.md +0 -617
- package/src/tools/calculators/README.md +0 -395
|
@@ -1,660 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Math.js Calculator Provider
|
|
3
|
-
* Implementation of CalculatorProvider for Math.js-based calculators
|
|
4
|
-
*
|
|
5
|
-
* Supports: Basic and Scientific calculators
|
|
6
|
-
* License: Apache 2.0 (Math.js) - Commercial-friendly, no licensing fees
|
|
7
|
-
* Based on: https://mathjs.org/
|
|
8
|
-
*
|
|
9
|
-
* NOTE: This is a working implementation that provides basic/scientific
|
|
10
|
-
* calculator functionality without requiring external licenses.
|
|
11
|
-
*/
|
|
12
|
-
import { COMMON_LIBRARIES, libraryLoader } from "../library-loader.js";
|
|
13
|
-
/**
|
|
14
|
-
* Math.js Calculator Provider Implementation
|
|
15
|
-
*/
|
|
16
|
-
export class MathJsCalculatorProvider {
|
|
17
|
-
providerId = "mathjs";
|
|
18
|
-
providerName = "Math.js";
|
|
19
|
-
supportedTypes = ["basic", "scientific"];
|
|
20
|
-
version = "12.0.0";
|
|
21
|
-
initialized = false;
|
|
22
|
-
/**
|
|
23
|
-
* Initialize Math.js library
|
|
24
|
-
*/
|
|
25
|
-
async initialize() {
|
|
26
|
-
if (this.initialized)
|
|
27
|
-
return;
|
|
28
|
-
// SSR guard: Math.js calculators should NEVER run on the server
|
|
29
|
-
if (typeof window === "undefined") {
|
|
30
|
-
throw new Error("Math.js calculators can only be initialized in the browser");
|
|
31
|
-
}
|
|
32
|
-
// Load Math.js library
|
|
33
|
-
await libraryLoader.loadScript(COMMON_LIBRARIES.mathjs);
|
|
34
|
-
// Verify Math.js API is available
|
|
35
|
-
if (!window.math) {
|
|
36
|
-
throw new Error("Math.js library not loaded");
|
|
37
|
-
}
|
|
38
|
-
this.initialized = true;
|
|
39
|
-
console.log("[MathJsProvider] Initialized successfully");
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Create a calculator instance
|
|
43
|
-
*/
|
|
44
|
-
async createCalculator(type, container, config) {
|
|
45
|
-
if (!this.initialized) {
|
|
46
|
-
await this.initialize();
|
|
47
|
-
}
|
|
48
|
-
if (!this.supportsType(type)) {
|
|
49
|
-
throw new Error(`Math.js provider does not support calculator type: ${type}`);
|
|
50
|
-
}
|
|
51
|
-
return new MathJsCalculator(this, type, container, config);
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Check if type is supported
|
|
55
|
-
*/
|
|
56
|
-
supportsType(type) {
|
|
57
|
-
return this.supportedTypes.includes(type);
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Cleanup
|
|
61
|
-
*/
|
|
62
|
-
destroy() {
|
|
63
|
-
this.initialized = false;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Get provider capabilities
|
|
67
|
-
*/
|
|
68
|
-
getCapabilities() {
|
|
69
|
-
return {
|
|
70
|
-
supportsHistory: true,
|
|
71
|
-
supportsGraphing: false,
|
|
72
|
-
supportsExpressions: true,
|
|
73
|
-
canExport: true,
|
|
74
|
-
maxPrecision: 64, // Math.js supports arbitrary precision with bignumbers
|
|
75
|
-
inputMethods: ["keyboard", "mouse", "touch"],
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Math.js Calculator Instance
|
|
81
|
-
*/
|
|
82
|
-
class MathJsCalculator {
|
|
83
|
-
provider;
|
|
84
|
-
type;
|
|
85
|
-
math;
|
|
86
|
-
container;
|
|
87
|
-
currentExpression = "";
|
|
88
|
-
currentValue = "0";
|
|
89
|
-
history = [];
|
|
90
|
-
angleMode = "deg"; // Default to degrees
|
|
91
|
-
memory = 0;
|
|
92
|
-
theme = "dark";
|
|
93
|
-
// UI elements
|
|
94
|
-
displayEl;
|
|
95
|
-
historyEl;
|
|
96
|
-
// Event handler references for cleanup
|
|
97
|
-
boundKeyboardHandler = null;
|
|
98
|
-
buttonListeners = [];
|
|
99
|
-
styleElement;
|
|
100
|
-
constructor(provider, type, container, config) {
|
|
101
|
-
this.provider = provider;
|
|
102
|
-
this.type = type;
|
|
103
|
-
this.container = container;
|
|
104
|
-
this.math = window.math;
|
|
105
|
-
// Apply config settings
|
|
106
|
-
if (config?.theme) {
|
|
107
|
-
this.theme = config.theme;
|
|
108
|
-
}
|
|
109
|
-
this._initializeCalculator();
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Initialize calculator UI
|
|
113
|
-
*/
|
|
114
|
-
_initializeCalculator() {
|
|
115
|
-
// Create calculator structure
|
|
116
|
-
this.container.innerHTML = `
|
|
117
|
-
<div class="mathjs-calculator mathjs-calculator--${this.type}">
|
|
118
|
-
<div class="mathjs-calculator__display-container">
|
|
119
|
-
<div class="mathjs-calculator__history"></div>
|
|
120
|
-
<div class="mathjs-calculator__display">0</div>
|
|
121
|
-
</div>
|
|
122
|
-
<div class="mathjs-calculator__buttons">
|
|
123
|
-
${this._generateButtons()}
|
|
124
|
-
</div>
|
|
125
|
-
</div>
|
|
126
|
-
`;
|
|
127
|
-
// Apply styles
|
|
128
|
-
this._applyStyles();
|
|
129
|
-
// Get references
|
|
130
|
-
this.displayEl = this.container.querySelector(".mathjs-calculator__display");
|
|
131
|
-
this.historyEl = this.container.querySelector(".mathjs-calculator__history");
|
|
132
|
-
// Attach event listeners
|
|
133
|
-
this._attachEventListeners();
|
|
134
|
-
console.log(`[MathJsCalculator] Created ${this.type} calculator`);
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Generate button layout based on calculator type
|
|
138
|
-
*/
|
|
139
|
-
_generateButtons() {
|
|
140
|
-
if (this.type === "scientific") {
|
|
141
|
-
return this._generateScientificButtons();
|
|
142
|
-
}
|
|
143
|
-
return this._generateBasicButtons();
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Generate basic calculator buttons
|
|
147
|
-
*/
|
|
148
|
-
_generateBasicButtons() {
|
|
149
|
-
return `
|
|
150
|
-
<div class="mathjs-calculator__row">
|
|
151
|
-
<button data-action="clear" class="mathjs-btn mathjs-btn--function">C</button>
|
|
152
|
-
<button data-action="clearEntry" class="mathjs-btn mathjs-btn--function">CE</button>
|
|
153
|
-
<button data-action="backspace" class="mathjs-btn mathjs-btn--function">⌫</button>
|
|
154
|
-
<button data-input="/" class="mathjs-btn mathjs-btn--operator">÷</button>
|
|
155
|
-
</div>
|
|
156
|
-
<div class="mathjs-calculator__row">
|
|
157
|
-
<button data-input="7" class="mathjs-btn mathjs-btn--number">7</button>
|
|
158
|
-
<button data-input="8" class="mathjs-btn mathjs-btn--number">8</button>
|
|
159
|
-
<button data-input="9" class="mathjs-btn mathjs-btn--number">9</button>
|
|
160
|
-
<button data-input="*" class="mathjs-btn mathjs-btn--operator">×</button>
|
|
161
|
-
</div>
|
|
162
|
-
<div class="mathjs-calculator__row">
|
|
163
|
-
<button data-input="4" class="mathjs-btn mathjs-btn--number">4</button>
|
|
164
|
-
<button data-input="5" class="mathjs-btn mathjs-btn--number">5</button>
|
|
165
|
-
<button data-input="6" class="mathjs-btn mathjs-btn--number">6</button>
|
|
166
|
-
<button data-input="-" class="mathjs-btn mathjs-btn--operator">−</button>
|
|
167
|
-
</div>
|
|
168
|
-
<div class="mathjs-calculator__row">
|
|
169
|
-
<button data-input="1" class="mathjs-btn mathjs-btn--number">1</button>
|
|
170
|
-
<button data-input="2" class="mathjs-btn mathjs-btn--number">2</button>
|
|
171
|
-
<button data-input="3" class="mathjs-btn mathjs-btn--number">3</button>
|
|
172
|
-
<button data-input="+" class="mathjs-btn mathjs-btn--operator">+</button>
|
|
173
|
-
</div>
|
|
174
|
-
<div class="mathjs-calculator__row">
|
|
175
|
-
<button data-input="0" class="mathjs-btn mathjs-btn--number mathjs-btn--wide">0</button>
|
|
176
|
-
<button data-input="." class="mathjs-btn mathjs-btn--number">.</button>
|
|
177
|
-
<button data-action="equals" class="mathjs-btn mathjs-btn--equals">=</button>
|
|
178
|
-
</div>
|
|
179
|
-
`;
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Generate scientific calculator buttons
|
|
183
|
-
*/
|
|
184
|
-
_generateScientificButtons() {
|
|
185
|
-
return `
|
|
186
|
-
<div class="mathjs-calculator__row">
|
|
187
|
-
<button data-action="toggleAngle" class="mathjs-btn mathjs-btn--function" title="Toggle angle mode">DEG</button>
|
|
188
|
-
<button data-action="clear" class="mathjs-btn mathjs-btn--function">C</button>
|
|
189
|
-
<button data-action="clearEntry" class="mathjs-btn mathjs-btn--function">CE</button>
|
|
190
|
-
<button data-action="backspace" class="mathjs-btn mathjs-btn--function">⌫</button>
|
|
191
|
-
<button data-input="/" class="mathjs-btn mathjs-btn--operator">÷</button>
|
|
192
|
-
</div>
|
|
193
|
-
<div class="mathjs-calculator__row">
|
|
194
|
-
<button data-function="sin" class="mathjs-btn mathjs-btn--function">sin</button>
|
|
195
|
-
<button data-input="7" class="mathjs-btn mathjs-btn--number">7</button>
|
|
196
|
-
<button data-input="8" class="mathjs-btn mathjs-btn--number">8</button>
|
|
197
|
-
<button data-input="9" class="mathjs-btn mathjs-btn--number">9</button>
|
|
198
|
-
<button data-input="*" class="mathjs-btn mathjs-btn--operator">×</button>
|
|
199
|
-
</div>
|
|
200
|
-
<div class="mathjs-calculator__row">
|
|
201
|
-
<button data-function="cos" class="mathjs-btn mathjs-btn--function">cos</button>
|
|
202
|
-
<button data-input="4" class="mathjs-btn mathjs-btn--number">4</button>
|
|
203
|
-
<button data-input="5" class="mathjs-btn mathjs-btn--number">5</button>
|
|
204
|
-
<button data-input="6" class="mathjs-btn mathjs-btn--number">6</button>
|
|
205
|
-
<button data-input="-" class="mathjs-btn mathjs-btn--operator">−</button>
|
|
206
|
-
</div>
|
|
207
|
-
<div class="mathjs-calculator__row">
|
|
208
|
-
<button data-function="tan" class="mathjs-btn mathjs-btn--function">tan</button>
|
|
209
|
-
<button data-input="1" class="mathjs-btn mathjs-btn--number">1</button>
|
|
210
|
-
<button data-input="2" class="mathjs-btn mathjs-btn--number">2</button>
|
|
211
|
-
<button data-input="3" class="mathjs-btn mathjs-btn--number">3</button>
|
|
212
|
-
<button data-input="+" class="mathjs-btn mathjs-btn--operator">+</button>
|
|
213
|
-
</div>
|
|
214
|
-
<div class="mathjs-calculator__row">
|
|
215
|
-
<button data-function="sqrt" class="mathjs-btn mathjs-btn--function">√</button>
|
|
216
|
-
<button data-input="0" class="mathjs-btn mathjs-btn--number mathjs-btn--wide">0</button>
|
|
217
|
-
<button data-input="." class="mathjs-btn mathjs-btn--number">.</button>
|
|
218
|
-
<button data-action="equals" class="mathjs-btn mathjs-btn--equals">=</button>
|
|
219
|
-
</div>
|
|
220
|
-
<div class="mathjs-calculator__row">
|
|
221
|
-
<button data-function="log" class="mathjs-btn mathjs-btn--function">log</button>
|
|
222
|
-
<button data-function="ln" class="mathjs-btn mathjs-btn--function">ln</button>
|
|
223
|
-
<button data-function="pow" class="mathjs-btn mathjs-btn--function">x^y</button>
|
|
224
|
-
<button data-input="pi" class="mathjs-btn mathjs-btn--constant">π</button>
|
|
225
|
-
<button data-input="e" class="mathjs-btn mathjs-btn--constant">e</button>
|
|
226
|
-
</div>
|
|
227
|
-
`;
|
|
228
|
-
}
|
|
229
|
-
/**
|
|
230
|
-
* Apply inline styles (in production, use external stylesheet)
|
|
231
|
-
*/
|
|
232
|
-
_applyStyles() {
|
|
233
|
-
this.styleElement = document.createElement("style");
|
|
234
|
-
// Theme colors
|
|
235
|
-
const isDark = this.theme === "dark" ||
|
|
236
|
-
(this.theme === "auto" &&
|
|
237
|
-
window.matchMedia("(prefers-color-scheme: dark)").matches);
|
|
238
|
-
const colors = isDark
|
|
239
|
-
? {
|
|
240
|
-
bg: "#2c3e50",
|
|
241
|
-
displayBg: "#34495e",
|
|
242
|
-
text: "#ecf0f1",
|
|
243
|
-
historyText: "#95a5a6",
|
|
244
|
-
buttonBg: "#34495e",
|
|
245
|
-
}
|
|
246
|
-
: {
|
|
247
|
-
bg: "#ecf0f1",
|
|
248
|
-
displayBg: "#ffffff",
|
|
249
|
-
text: "#2c3e50",
|
|
250
|
-
historyText: "#7f8c8d",
|
|
251
|
-
buttonBg: "#ffffff",
|
|
252
|
-
};
|
|
253
|
-
this.styleElement.textContent = `
|
|
254
|
-
.mathjs-calculator {
|
|
255
|
-
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
256
|
-
background: ${colors.bg};
|
|
257
|
-
border-radius: 12px;
|
|
258
|
-
padding: 20px;
|
|
259
|
-
box-shadow: 0 8px 32px rgba(0,0,0,0.3);
|
|
260
|
-
max-width: 400px;
|
|
261
|
-
}
|
|
262
|
-
.mathjs-calculator__display-container {
|
|
263
|
-
background: ${colors.displayBg};
|
|
264
|
-
border-radius: 8px;
|
|
265
|
-
padding: 15px;
|
|
266
|
-
margin-bottom: 15px;
|
|
267
|
-
min-height: 80px;
|
|
268
|
-
box-shadow: inset 0 2px 4px rgba(0,0,0,0.1);
|
|
269
|
-
}
|
|
270
|
-
.mathjs-calculator__history {
|
|
271
|
-
font-size: 14px;
|
|
272
|
-
color: ${colors.historyText};
|
|
273
|
-
text-align: right;
|
|
274
|
-
min-height: 20px;
|
|
275
|
-
margin-bottom: 5px;
|
|
276
|
-
overflow: hidden;
|
|
277
|
-
text-overflow: ellipsis;
|
|
278
|
-
white-space: nowrap;
|
|
279
|
-
}
|
|
280
|
-
.mathjs-calculator__display {
|
|
281
|
-
font-size: 32px;
|
|
282
|
-
font-weight: 600;
|
|
283
|
-
color: ${colors.text};
|
|
284
|
-
text-align: right;
|
|
285
|
-
word-break: break-all;
|
|
286
|
-
}
|
|
287
|
-
.mathjs-calculator__buttons {
|
|
288
|
-
display: flex;
|
|
289
|
-
flex-direction: column;
|
|
290
|
-
gap: 8px;
|
|
291
|
-
}
|
|
292
|
-
.mathjs-calculator__row {
|
|
293
|
-
display: grid;
|
|
294
|
-
grid-template-columns: repeat(5, 1fr);
|
|
295
|
-
gap: 8px;
|
|
296
|
-
}
|
|
297
|
-
.mathjs-calculator--basic .mathjs-calculator__row {
|
|
298
|
-
grid-template-columns: repeat(4, 1fr);
|
|
299
|
-
}
|
|
300
|
-
.mathjs-btn {
|
|
301
|
-
padding: 18px 12px;
|
|
302
|
-
font-size: 18px;
|
|
303
|
-
font-weight: 500;
|
|
304
|
-
border: ${isDark ? "none" : "1px solid #bdc3c7"};
|
|
305
|
-
border-radius: 8px;
|
|
306
|
-
cursor: pointer;
|
|
307
|
-
transition: all 0.15s ease;
|
|
308
|
-
background: ${colors.buttonBg};
|
|
309
|
-
color: ${colors.text};
|
|
310
|
-
}
|
|
311
|
-
.mathjs-btn:hover {
|
|
312
|
-
transform: translateY(-2px);
|
|
313
|
-
box-shadow: 0 4px 12px rgba(0,0,0,0.2);
|
|
314
|
-
}
|
|
315
|
-
.mathjs-btn:active {
|
|
316
|
-
transform: translateY(0);
|
|
317
|
-
}
|
|
318
|
-
.mathjs-btn--number {
|
|
319
|
-
background: ${colors.buttonBg};
|
|
320
|
-
}
|
|
321
|
-
.mathjs-btn--operator {
|
|
322
|
-
background: #e67e22;
|
|
323
|
-
color: white;
|
|
324
|
-
}
|
|
325
|
-
.mathjs-btn--function {
|
|
326
|
-
background: #3498db;
|
|
327
|
-
color: white;
|
|
328
|
-
font-size: 14px;
|
|
329
|
-
}
|
|
330
|
-
.mathjs-btn--constant {
|
|
331
|
-
background: #9b59b6;
|
|
332
|
-
color: white;
|
|
333
|
-
}
|
|
334
|
-
.mathjs-btn--equals {
|
|
335
|
-
background: #27ae60;
|
|
336
|
-
color: white;
|
|
337
|
-
}
|
|
338
|
-
.mathjs-btn--wide {
|
|
339
|
-
grid-column: span 2;
|
|
340
|
-
}
|
|
341
|
-
`;
|
|
342
|
-
this.container.appendChild(this.styleElement);
|
|
343
|
-
}
|
|
344
|
-
/**
|
|
345
|
-
* Attach event listeners to buttons
|
|
346
|
-
*/
|
|
347
|
-
_attachEventListeners() {
|
|
348
|
-
const buttons = this.container.querySelectorAll(".mathjs-btn");
|
|
349
|
-
buttons.forEach((button) => {
|
|
350
|
-
const handler = (e) => {
|
|
351
|
-
const target = e.currentTarget;
|
|
352
|
-
const input = target.dataset.input;
|
|
353
|
-
const action = target.dataset.action;
|
|
354
|
-
const func = target.dataset.function;
|
|
355
|
-
if (input) {
|
|
356
|
-
this._handleInput(input);
|
|
357
|
-
}
|
|
358
|
-
else if (action) {
|
|
359
|
-
this._handleAction(action);
|
|
360
|
-
}
|
|
361
|
-
else if (func) {
|
|
362
|
-
this._handleFunction(func);
|
|
363
|
-
}
|
|
364
|
-
};
|
|
365
|
-
button.addEventListener("click", handler);
|
|
366
|
-
// Store reference for cleanup
|
|
367
|
-
this.buttonListeners.push({ element: button, handler });
|
|
368
|
-
});
|
|
369
|
-
// Keyboard support - store bound reference for cleanup
|
|
370
|
-
this.boundKeyboardHandler = this._handleKeyboard.bind(this);
|
|
371
|
-
document.addEventListener("keydown", this.boundKeyboardHandler);
|
|
372
|
-
}
|
|
373
|
-
/**
|
|
374
|
-
* Handle input button clicks
|
|
375
|
-
*/
|
|
376
|
-
_handleInput(input) {
|
|
377
|
-
// Handle special inputs
|
|
378
|
-
if (input === "pi") {
|
|
379
|
-
this.currentExpression += "pi";
|
|
380
|
-
this._updateDisplay();
|
|
381
|
-
return;
|
|
382
|
-
}
|
|
383
|
-
if (input === "e") {
|
|
384
|
-
this.currentExpression += "e";
|
|
385
|
-
this._updateDisplay();
|
|
386
|
-
return;
|
|
387
|
-
}
|
|
388
|
-
// Clear display if showing result
|
|
389
|
-
if (this.currentValue !== "0" && this.currentExpression === "") {
|
|
390
|
-
this.currentExpression = this.currentValue;
|
|
391
|
-
}
|
|
392
|
-
this.currentExpression += input;
|
|
393
|
-
this._updateDisplay();
|
|
394
|
-
}
|
|
395
|
-
/**
|
|
396
|
-
* Handle action button clicks
|
|
397
|
-
*/
|
|
398
|
-
_handleAction(action) {
|
|
399
|
-
switch (action) {
|
|
400
|
-
case "clear":
|
|
401
|
-
this.clear();
|
|
402
|
-
break;
|
|
403
|
-
case "clearEntry":
|
|
404
|
-
this.currentExpression = "";
|
|
405
|
-
this._updateDisplay();
|
|
406
|
-
break;
|
|
407
|
-
case "backspace":
|
|
408
|
-
this.currentExpression = this.currentExpression.slice(0, -1);
|
|
409
|
-
this._updateDisplay();
|
|
410
|
-
break;
|
|
411
|
-
case "equals":
|
|
412
|
-
this._calculate();
|
|
413
|
-
break;
|
|
414
|
-
case "toggleAngle":
|
|
415
|
-
this._toggleAngleMode();
|
|
416
|
-
break;
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
|
-
/**
|
|
420
|
-
* Handle function button clicks
|
|
421
|
-
*/
|
|
422
|
-
_handleFunction(func) {
|
|
423
|
-
// Get current value or expression
|
|
424
|
-
const value = this.currentExpression || this.currentValue;
|
|
425
|
-
switch (func) {
|
|
426
|
-
case "sin":
|
|
427
|
-
case "cos":
|
|
428
|
-
case "tan":
|
|
429
|
-
this.currentExpression = `${func}(${value} ${this.angleMode})`;
|
|
430
|
-
break;
|
|
431
|
-
case "sqrt":
|
|
432
|
-
this.currentExpression = `sqrt(${value})`;
|
|
433
|
-
break;
|
|
434
|
-
case "log":
|
|
435
|
-
this.currentExpression = `log10(${value})`;
|
|
436
|
-
break;
|
|
437
|
-
case "ln":
|
|
438
|
-
this.currentExpression = `log(${value})`;
|
|
439
|
-
break;
|
|
440
|
-
case "pow":
|
|
441
|
-
this.currentExpression = `${value}^`;
|
|
442
|
-
break;
|
|
443
|
-
}
|
|
444
|
-
this._updateDisplay();
|
|
445
|
-
}
|
|
446
|
-
/**
|
|
447
|
-
* Handle keyboard input
|
|
448
|
-
*/
|
|
449
|
-
_handleKeyboard(e) {
|
|
450
|
-
// Only handle if calculator is focused
|
|
451
|
-
if (!this.container.contains(document.activeElement))
|
|
452
|
-
return;
|
|
453
|
-
const key = e.key;
|
|
454
|
-
if (/[0-9\+\-\*\/\.\(\)]/.test(key)) {
|
|
455
|
-
this._handleInput(key);
|
|
456
|
-
}
|
|
457
|
-
else if (key === "Enter") {
|
|
458
|
-
e.preventDefault();
|
|
459
|
-
this._calculate();
|
|
460
|
-
}
|
|
461
|
-
else if (key === "Escape") {
|
|
462
|
-
this.clear();
|
|
463
|
-
}
|
|
464
|
-
else if (key === "Backspace") {
|
|
465
|
-
e.preventDefault();
|
|
466
|
-
this.currentExpression = this.currentExpression.slice(0, -1);
|
|
467
|
-
this._updateDisplay();
|
|
468
|
-
}
|
|
469
|
-
}
|
|
470
|
-
/**
|
|
471
|
-
* Toggle angle mode (degrees/radians)
|
|
472
|
-
*/
|
|
473
|
-
_toggleAngleMode() {
|
|
474
|
-
this.angleMode = this.angleMode === "deg" ? "rad" : "deg";
|
|
475
|
-
const btn = this.container.querySelector('[data-action="toggleAngle"]');
|
|
476
|
-
if (btn) {
|
|
477
|
-
btn.textContent = this.angleMode.toUpperCase();
|
|
478
|
-
}
|
|
479
|
-
}
|
|
480
|
-
/**
|
|
481
|
-
* Calculate expression
|
|
482
|
-
*/
|
|
483
|
-
_calculate() {
|
|
484
|
-
if (!this.currentExpression)
|
|
485
|
-
return;
|
|
486
|
-
try {
|
|
487
|
-
// Evaluate expression
|
|
488
|
-
const result = this.math.evaluate(this.currentExpression);
|
|
489
|
-
const resultStr = this._formatResult(result);
|
|
490
|
-
// Add to history
|
|
491
|
-
this.history.push({
|
|
492
|
-
expression: this.currentExpression,
|
|
493
|
-
result: resultStr,
|
|
494
|
-
timestamp: Date.now(),
|
|
495
|
-
});
|
|
496
|
-
// Update display
|
|
497
|
-
this.currentValue = resultStr;
|
|
498
|
-
if (this.historyEl) {
|
|
499
|
-
this.historyEl.textContent = this.currentExpression;
|
|
500
|
-
}
|
|
501
|
-
this.currentExpression = "";
|
|
502
|
-
this._updateDisplay();
|
|
503
|
-
console.log("[MathJsCalculator] Calculated:", this.currentValue);
|
|
504
|
-
}
|
|
505
|
-
catch (error) {
|
|
506
|
-
// More descriptive error handling
|
|
507
|
-
const errorMessage = error instanceof Error ? error.message : "Invalid expression";
|
|
508
|
-
this.currentValue = "Error";
|
|
509
|
-
if (this.historyEl) {
|
|
510
|
-
this.historyEl.textContent = errorMessage;
|
|
511
|
-
}
|
|
512
|
-
this._updateDisplay();
|
|
513
|
-
console.error("[MathJsCalculator] Calculation error:", errorMessage, error);
|
|
514
|
-
// Clear error after 3 seconds
|
|
515
|
-
setTimeout(() => {
|
|
516
|
-
if (this.currentValue === "Error" && this.historyEl) {
|
|
517
|
-
this.historyEl.textContent = "";
|
|
518
|
-
}
|
|
519
|
-
}, 3000);
|
|
520
|
-
}
|
|
521
|
-
}
|
|
522
|
-
/**
|
|
523
|
-
* Format result for display
|
|
524
|
-
*/
|
|
525
|
-
_formatResult(result) {
|
|
526
|
-
if (typeof result === "number") {
|
|
527
|
-
// Round to reasonable precision
|
|
528
|
-
return result.toPrecision(10).replace(/\.?0+$/, "");
|
|
529
|
-
}
|
|
530
|
-
return String(result);
|
|
531
|
-
}
|
|
532
|
-
/**
|
|
533
|
-
* Update display
|
|
534
|
-
*/
|
|
535
|
-
_updateDisplay() {
|
|
536
|
-
if (this.displayEl) {
|
|
537
|
-
this.displayEl.textContent = this.currentExpression || this.currentValue;
|
|
538
|
-
}
|
|
539
|
-
}
|
|
540
|
-
/**
|
|
541
|
-
* Get current value
|
|
542
|
-
*/
|
|
543
|
-
getValue() {
|
|
544
|
-
return this.currentValue;
|
|
545
|
-
}
|
|
546
|
-
/**
|
|
547
|
-
* Set value
|
|
548
|
-
*/
|
|
549
|
-
setValue(value) {
|
|
550
|
-
this.currentValue = value;
|
|
551
|
-
this.currentExpression = "";
|
|
552
|
-
this._updateDisplay();
|
|
553
|
-
}
|
|
554
|
-
/**
|
|
555
|
-
* Clear calculator
|
|
556
|
-
*/
|
|
557
|
-
clear() {
|
|
558
|
-
this.currentExpression = "";
|
|
559
|
-
this.currentValue = "0";
|
|
560
|
-
if (this.historyEl) {
|
|
561
|
-
this.historyEl.textContent = "";
|
|
562
|
-
}
|
|
563
|
-
this._updateDisplay();
|
|
564
|
-
}
|
|
565
|
-
/**
|
|
566
|
-
* Get calculation history
|
|
567
|
-
*/
|
|
568
|
-
getHistory() {
|
|
569
|
-
return [...this.history];
|
|
570
|
-
}
|
|
571
|
-
/**
|
|
572
|
-
* Clear history
|
|
573
|
-
*/
|
|
574
|
-
clearHistory() {
|
|
575
|
-
this.history = [];
|
|
576
|
-
if (this.historyEl) {
|
|
577
|
-
this.historyEl.textContent = "";
|
|
578
|
-
}
|
|
579
|
-
}
|
|
580
|
-
/**
|
|
581
|
-
* Evaluate expression
|
|
582
|
-
*/
|
|
583
|
-
async evaluate(expression) {
|
|
584
|
-
try {
|
|
585
|
-
const result = this.math.evaluate(expression);
|
|
586
|
-
return this._formatResult(result);
|
|
587
|
-
}
|
|
588
|
-
catch (error) {
|
|
589
|
-
throw new Error(`Evaluation error: ${error}`);
|
|
590
|
-
}
|
|
591
|
-
}
|
|
592
|
-
/**
|
|
593
|
-
* Export state
|
|
594
|
-
*/
|
|
595
|
-
exportState() {
|
|
596
|
-
return {
|
|
597
|
-
type: this.type,
|
|
598
|
-
provider: "mathjs",
|
|
599
|
-
value: this.currentValue,
|
|
600
|
-
history: this.history,
|
|
601
|
-
providerState: {
|
|
602
|
-
expression: this.currentExpression,
|
|
603
|
-
angleMode: this.angleMode,
|
|
604
|
-
memory: this.memory,
|
|
605
|
-
},
|
|
606
|
-
};
|
|
607
|
-
}
|
|
608
|
-
/**
|
|
609
|
-
* Import state
|
|
610
|
-
*/
|
|
611
|
-
importState(state) {
|
|
612
|
-
if (state.provider !== "mathjs") {
|
|
613
|
-
throw new Error(`Cannot import state from provider: ${state.provider}`);
|
|
614
|
-
}
|
|
615
|
-
this.currentValue = state.value;
|
|
616
|
-
if (state.history) {
|
|
617
|
-
this.history = [...state.history];
|
|
618
|
-
}
|
|
619
|
-
if (state.providerState) {
|
|
620
|
-
this.currentExpression = state.providerState.expression || "";
|
|
621
|
-
this.angleMode = state.providerState.angleMode || "deg";
|
|
622
|
-
this.memory = state.providerState.memory || 0;
|
|
623
|
-
}
|
|
624
|
-
this._updateDisplay();
|
|
625
|
-
}
|
|
626
|
-
/**
|
|
627
|
-
* Destroy calculator
|
|
628
|
-
*/
|
|
629
|
-
destroy() {
|
|
630
|
-
// Remove keyboard listener (using stored bound reference)
|
|
631
|
-
if (this.boundKeyboardHandler) {
|
|
632
|
-
document.removeEventListener("keydown", this.boundKeyboardHandler);
|
|
633
|
-
this.boundKeyboardHandler = null;
|
|
634
|
-
}
|
|
635
|
-
// Remove button listeners
|
|
636
|
-
for (const { element, handler } of this.buttonListeners) {
|
|
637
|
-
element.removeEventListener("click", handler);
|
|
638
|
-
}
|
|
639
|
-
this.buttonListeners = [];
|
|
640
|
-
// Remove style element
|
|
641
|
-
if (this.styleElement && this.styleElement.parentNode) {
|
|
642
|
-
this.styleElement.parentNode.removeChild(this.styleElement);
|
|
643
|
-
this.styleElement = undefined;
|
|
644
|
-
}
|
|
645
|
-
// Clear container using modern API
|
|
646
|
-
this.container.replaceChildren();
|
|
647
|
-
// Clear references
|
|
648
|
-
this.displayEl = undefined;
|
|
649
|
-
this.historyEl = undefined;
|
|
650
|
-
console.log("[MathJsCalculator] destroyed");
|
|
651
|
-
}
|
|
652
|
-
}
|
|
653
|
-
/**
|
|
654
|
-
* Singleton provider instance (deprecated)
|
|
655
|
-
* @deprecated Instantiate MathJsCalculatorProvider directly instead:
|
|
656
|
-
* const provider = new MathJsCalculatorProvider();
|
|
657
|
-
* await provider.initialize();
|
|
658
|
-
*/
|
|
659
|
-
export const mathjsProvider = new MathJsCalculatorProvider();
|
|
660
|
-
//# sourceMappingURL=mathjs-provider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mathjs-provider.js","sourceRoot":"","sources":["../../../src/tools/calculators/mathjs-provider.ts"],"names":[],"mappings":"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"}
|