@prozilla-os/calculator 1.0.1

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/LICENSE.md ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 Sieben De Beule
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,68 @@
1
+ <div align="center">
2
+ <br />
3
+ <p>
4
+ <a href="https://os.prozilla.dev/"><img src="https://os.prozilla.dev/assets/logo.svg?v=2" height="200" alt="ProzillaOS" /></a>
5
+ </p>
6
+ <p>
7
+ <a href="https://github.com/prozilla-os/ProzillaOS/blob/main/LICENSE.md"><img alt="License" src="https://img.shields.io/github/license/Prozilla/ProzillaOS?style=flat-square&color=FF4D5B&label=License"></a>
8
+ <a href="https://github.com/prozilla-os/ProzillaOS"><img alt="Stars" src="https://img.shields.io/github/stars/Prozilla/ProzillaOS?style=flat-square&color=FED24C&label=%E2%AD%90"></a>
9
+ <a href="https://github.com/prozilla-os/ProzillaOS"><img alt="Forks" src="https://img.shields.io/github/forks/Prozilla/ProzillaOS?style=flat-square&color=4D9CFF&label=Forks&logo=github"></a>
10
+ <a href="https://www.npmjs.com/package/prozilla-os"><img alt="NPM Version" src="https://img.shields.io/npm/v/prozilla-os?logo=npm&style=flat-square&label=prozilla-os&color=FF4D5B"></a>
11
+ </p>
12
+ </div>
13
+
14
+ ## About
15
+
16
+ `@prozilla-os/calculator` is a ProzillaOS application for making basic calculations.
17
+
18
+ ## Installation
19
+
20
+ `@prozilla-os/core` is required to run this application.
21
+
22
+ ```sh
23
+ $ npm install @prozilla-os/core @prozilla-os/calculator
24
+ $ yarn add @prozilla-os/core @prozilla-os/calculator
25
+ $ pnpm add @prozilla-os/core @prozilla-os/calculator
26
+ ```
27
+
28
+ ## Usage
29
+
30
+ ### Basic setup
31
+
32
+ ```tsx
33
+ import { Desktop, ModalsView, ProzillaOS, Taskbar, WindowsView, AppsConfig } from "@prozilla-os/core";
34
+ import { calculator } from "@prozilla-os/calculator";
35
+
36
+ function App() {
37
+ return (
38
+ <ProzillaOS
39
+ systemName="Example"
40
+ tagLine="Powered by ProzillaOS"
41
+ config={{
42
+ apps: new AppsConfig({
43
+ apps: [ calculator ]
44
+ })
45
+ }}
46
+ >
47
+ <Taskbar/>
48
+ <WindowsView/>
49
+ <ModalsView/>
50
+ <Desktop/>
51
+ </ProzillaOS>
52
+ );
53
+ }
54
+ ```
55
+
56
+ ## Links
57
+
58
+ - [Website/demo][website]
59
+ - [GitHub][github]
60
+ - [npm][npm]
61
+ - [Discord][discord]
62
+ - [Ko-fi][ko-fi]
63
+
64
+ [website]: https://os.prozilla.dev/calculator
65
+ [github]: https://github.com/prozilla-os/ProzillaOS/tree/convert-to-monorepo/packages/apps/calculator
66
+ [npm]: https://www.npmjs.com/package/@prozilla-os/calculator
67
+ [discord]: https://discord.gg/JwbyQP4tdz
68
+ [ko-fi]: https://ko-fi.com/prozilla
@@ -0,0 +1 @@
1
+ ._Calculator_1ddjk_1{display:flex;flex-direction:column;height:100%;--output-height: 20%;--button-gap: .25rem}._Output_1ddjk_19{display:flex;gap:.25rem;flex-direction:column;justify-content:center;align-items:flex-end;height:var(--output-height);padding:.5rem}._Calculation_1ddjk_39,._Preview_1ddjk_39{margin:0}._Calculation_1ddjk_39{color:var(--foreground-color-2);height:1.25rem}._Preview_1ddjk_39{color:var(--foreground-color-0);font-size:2.5rem}._Input_1ddjk_67{display:flex;gap:var(--button-gap);flex-direction:column;height:calc(100% - var(--output-height));padding:.5rem}._InputRow_1ddjk_83{flex:1;display:flex;gap:var(--button-gap)}._Button_1ddjk_95{flex:1;border-radius:var(--border-radius-0);font-size:1.5rem}._InputRow_1ddjk_83:first-of-type ._Button_1ddjk_95{--normal-color: var(--background-color-1);--hover-color: var(--background-color-2)}._InputRow_1ddjk_83 ._Button_1ddjk_95:last-of-type{--text-color: var(--background-color-0);--normal-color: var(--blue-0);--hover-color: var(--blue-1)}._ButtonLarge_1ddjk_129{min-width:calc(50% - var(--button-gap) / 2)}
package/dist/main.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import { App } from '@prozilla-os/core';
2
+ import { WindowProps } from '@prozilla-os/core';
3
+
4
+ export declare const calculator: App<WindowProps>;
5
+
6
+ export { }
package/dist/main.js ADDED
@@ -0,0 +1,170 @@
1
+ import { Button as n, App as R, Vector2 as $ } from "@prozilla-os/core";
2
+ import { jsxs as r, jsx as t } from "react/jsx-runtime";
3
+ import { useState as h, useCallback as f, useEffect as y } from "react";
4
+ import './assets/main.css';const F = "_Calculator_1ddjk_1", L = "_Output_1ddjk_19", O = "_Calculation_1ddjk_39", E = "_Preview_1ddjk_39", S = "_Input_1ddjk_67", P = "_InputRow_1ddjk_83", g = "_Button_1ddjk_95", x = "_ButtonLarge_1ddjk_129", e = {
5
+ Calculator: F,
6
+ Output: L,
7
+ Calculation: O,
8
+ Preview: E,
9
+ Input: S,
10
+ InputRow: P,
11
+ Button: g,
12
+ ButtonLarge: x
13
+ };
14
+ function z({ active: w }) {
15
+ const [l, o] = h("0"), [i, _] = h(null), [d, N] = h(null), [C, b] = h(null), [I, j] = h(!1), k = f(() => {
16
+ o("0"), _(null), N(null), b(null);
17
+ }, []), a = f((c) => {
18
+ let s = !1;
19
+ d != null && (I && l != null ? (_(parseFloat(l)), N(null), o(null)) : k(), s = !0), !(c === "." && (l != null && l.includes("."))) && (c === "-" ? l === "0" ? o("-0") : l != null && o((parseFloat(l) * -1).toString()) : c === "%" && l != null ? o((parseFloat(l) / 100).toString()) : l === "0" || l === "-0" || l == null || s ? o(c === "." ? "0." : l === "-0" ? `-${c}` : c) : o(l + c));
20
+ }, [l, I, k, d]), m = f((c = !1) => {
21
+ if (i != null && l != null) {
22
+ N(parseFloat(l));
23
+ const s = i, B = parseFloat(l);
24
+ let p = 0;
25
+ switch (C) {
26
+ case "×":
27
+ p = s * B;
28
+ break;
29
+ case "÷":
30
+ p = s / B;
31
+ break;
32
+ case "+":
33
+ p = s + B;
34
+ break;
35
+ case "-":
36
+ p = s - B;
37
+ break;
38
+ }
39
+ o(p.toString());
40
+ }
41
+ j(c);
42
+ }, [i, l, C]), u = f((c) => {
43
+ i != null && d == null ? m(!0) : l != null && (_(parseFloat(l)), N(null), o(null)), b(c);
44
+ }, [m, i, l, d]);
45
+ y(() => {
46
+ const c = (s) => {
47
+ if (w)
48
+ switch (s.preventDefault(), s.key) {
49
+ case "0":
50
+ case "1":
51
+ case "2":
52
+ case "3":
53
+ case "4":
54
+ case "5":
55
+ case "6":
56
+ case "7":
57
+ case "8":
58
+ case "9":
59
+ a(s.key);
60
+ break;
61
+ case ".":
62
+ case ",":
63
+ a(".");
64
+ break;
65
+ case "Escape":
66
+ k();
67
+ break;
68
+ case "=":
69
+ case "Enter":
70
+ m();
71
+ break;
72
+ case "*":
73
+ u("×");
74
+ break;
75
+ case "/":
76
+ u("÷");
77
+ break;
78
+ case "+":
79
+ case "-":
80
+ u(s.key);
81
+ break;
82
+ case "%":
83
+ a("%");
84
+ break;
85
+ }
86
+ };
87
+ return document.addEventListener("keydown", c), () => {
88
+ document.removeEventListener("keydown", c);
89
+ };
90
+ }, [w, a, m, u, k]);
91
+ let v = "";
92
+ return C != null && (v = `${i} ${C} ${d != null ? d + " =" : ""}`), /* @__PURE__ */ r("div", { className: e.Calculator, children: [
93
+ /* @__PURE__ */ r("div", { className: e.Output, children: [
94
+ /* @__PURE__ */ t("p", { className: e.Calculation, children: v }),
95
+ /* @__PURE__ */ t("p", { className: e.Preview, children: l ?? i })
96
+ ] }),
97
+ /* @__PURE__ */ r("div", { className: e.Input, children: [
98
+ /* @__PURE__ */ r("div", { className: e.InputRow, children: [
99
+ /* @__PURE__ */ t(n, { className: e.Button, onClick: k, children: "C" }),
100
+ /* @__PURE__ */ t(n, { className: e.Button, onClick: () => {
101
+ a("-");
102
+ }, children: "+/-" }),
103
+ /* @__PURE__ */ t(n, { className: e.Button, onClick: () => {
104
+ a("%");
105
+ }, children: "%" }),
106
+ /* @__PURE__ */ t(n, { className: e.Button, onClick: () => {
107
+ u("÷");
108
+ }, children: "÷" })
109
+ ] }),
110
+ /* @__PURE__ */ r("div", { className: e.InputRow, children: [
111
+ /* @__PURE__ */ t(n, { className: e.Button, onClick: () => {
112
+ a("7");
113
+ }, children: "7" }),
114
+ /* @__PURE__ */ t(n, { className: e.Button, onClick: () => {
115
+ a("8");
116
+ }, children: "8" }),
117
+ /* @__PURE__ */ t(n, { className: e.Button, onClick: () => {
118
+ a("9");
119
+ }, children: "9" }),
120
+ /* @__PURE__ */ t(n, { className: e.Button, onClick: () => {
121
+ u("×");
122
+ }, children: "×" })
123
+ ] }),
124
+ /* @__PURE__ */ r("div", { className: e.InputRow, children: [
125
+ /* @__PURE__ */ t(n, { className: e.Button, onClick: () => {
126
+ a("4");
127
+ }, children: "4" }),
128
+ /* @__PURE__ */ t(n, { className: e.Button, onClick: () => {
129
+ a("5");
130
+ }, children: "5" }),
131
+ /* @__PURE__ */ t(n, { className: e.Button, onClick: () => {
132
+ a("6");
133
+ }, children: "6" }),
134
+ /* @__PURE__ */ t(n, { className: e.Button, onClick: () => {
135
+ u("-");
136
+ }, children: "-" })
137
+ ] }),
138
+ /* @__PURE__ */ r("div", { className: e.InputRow, children: [
139
+ /* @__PURE__ */ t(n, { className: e.Button, onClick: () => {
140
+ a("1");
141
+ }, children: "1" }),
142
+ /* @__PURE__ */ t(n, { className: e.Button, onClick: () => {
143
+ a("2");
144
+ }, children: "2" }),
145
+ /* @__PURE__ */ t(n, { className: e.Button, onClick: () => {
146
+ a("3");
147
+ }, children: "3" }),
148
+ /* @__PURE__ */ t(n, { className: e.Button, onClick: () => {
149
+ u("+");
150
+ }, children: "+" })
151
+ ] }),
152
+ /* @__PURE__ */ r("div", { className: e.InputRow, children: [
153
+ /* @__PURE__ */ t(n, { className: `${e.Button} ${e.ButtonLarge}`, onClick: () => {
154
+ a("0");
155
+ }, children: "0" }),
156
+ /* @__PURE__ */ t(n, { className: e.Button, onClick: () => {
157
+ a(".");
158
+ }, children: "." }),
159
+ /* @__PURE__ */ t(n, { className: e.Button, onClick: () => {
160
+ m();
161
+ }, children: "=" })
162
+ ] })
163
+ ] })
164
+ ] });
165
+ }
166
+ const U = new R("Calculator", "calculator", z, { size: new $(400, 600) }).setIconUrl("https://os.prozilla.dev/assets/apps/icons/calculator.svg");
167
+ export {
168
+ U as calculator
169
+ };
170
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sources":["../src/components/Calculator.tsx","../src/main.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\r\nimport styles from \"./Calculator.module.css\";\r\nimport { Button, WindowProps } from \"@prozilla-os/core\";\r\n\r\nexport function Calculator({ active }: WindowProps) {\r\n\tconst [input, setInput] = useState<string | null>(\"0\");\r\n\tconst [firstNumber, setFirstNumber] = useState<number | null>(null);\r\n\tconst [secondNumber, setSecondNumber] = useState<number | null>(null);\r\n\tconst [operation, setOperation] = useState<string | null>(null);\r\n\tconst [isIntermediate, setIsIntermediate] = useState(false);\r\n\r\n\tconst reset = useCallback(() => {\r\n\t\tsetInput(\"0\");\r\n\t\tsetFirstNumber(null);\r\n\t\tsetSecondNumber(null);\r\n\t\tsetOperation(null);\r\n\t}, []);\r\n\r\n\tconst addInput = useCallback((string: string) => {\r\n\t\tlet hasReset = false;\r\n\t\tif (secondNumber != null) {\r\n\t\t\tif (isIntermediate && input != null) {\r\n\t\t\t\tsetFirstNumber(parseFloat(input));\r\n\t\t\t\tsetSecondNumber(null);\r\n\t\t\t\tsetInput(null);\r\n\t\t\t} else {\r\n\t\t\t\treset();\r\n\t\t\t}\r\n\t\t\thasReset = true;\r\n\t\t}\t\t\t\r\n\r\n\t\tif (string === \".\" && input?.includes(\".\"))\r\n\t\t\treturn;\r\n\r\n\t\tif (string === \"-\") {\r\n\t\t\tif (input === \"0\") {\r\n\t\t\t\tsetInput(\"-0\");\r\n\t\t\t} else if (input != null) {\r\n\t\t\t\tsetInput((parseFloat(input) * -1).toString());\r\n\t\t\t}\r\n\t\t} else if (string === \"%\" && input != null) {\r\n\t\t\tsetInput((parseFloat(input) / 100).toString());\r\n\t\t} else if (input === \"0\" || input === \"-0\" || input == null || hasReset) {\r\n\t\t\tif (string === \".\") {\r\n\t\t\t\tsetInput(input === \"-0\" ? \"0.\" : \"0.\");\r\n\t\t\t} else {\r\n\t\t\t\tsetInput(input === \"-0\" ? `-${string}` : string);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tsetInput(input + string);\r\n\t\t}\r\n\r\n\t}, [input, isIntermediate, reset, secondNumber]);\r\n\r\n\tconst calculate = useCallback((intermediate = false) => {\r\n\t\tif (firstNumber != null && input != null) {\r\n\t\t\tsetSecondNumber(parseFloat(input));\r\n\r\n\t\t\tconst a = firstNumber;\r\n\t\t\tconst b = parseFloat(input);\r\n\t\t\t\r\n\t\t\tlet result = 0;\r\n\t\t\tswitch (operation) {\r\n\t\t\t\tcase \"×\":\r\n\t\t\t\t\tresult = a * b;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"÷\":\r\n\t\t\t\t\tresult = a / b;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"+\":\r\n\t\t\t\t\tresult = a + b;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"-\":\r\n\t\t\t\t\tresult = a - b;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tsetInput(result.toString());\r\n\t\t}\r\n\r\n\t\tsetIsIntermediate(intermediate);\r\n\t}, [firstNumber, input, operation]);\r\n\r\n\tconst changeOperation = useCallback((operation: string) => {\r\n\t\tif (firstNumber != null && secondNumber == null) {\r\n\t\t\tcalculate(true);\r\n\t\t} else if (input != null) {\r\n\t\t\tsetFirstNumber(parseFloat(input));\r\n\t\t\tsetSecondNumber(null);\r\n\t\t\tsetInput(null);\r\n\t\t}\r\n\r\n\t\tsetOperation(operation);\r\n\t}, [calculate, firstNumber, input, secondNumber]);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst onKeyDown = (event: KeyboardEvent) => {\r\n\t\t\tif (!active)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tevent.preventDefault();\r\n\r\n\t\t\tswitch (event.key) {\r\n\t\t\t\tcase \"0\":\r\n\t\t\t\tcase \"1\":\r\n\t\t\t\tcase \"2\":\r\n\t\t\t\tcase \"3\":\r\n\t\t\t\tcase \"4\":\r\n\t\t\t\tcase \"5\":\r\n\t\t\t\tcase \"6\":\r\n\t\t\t\tcase \"7\":\r\n\t\t\t\tcase \"8\":\r\n\t\t\t\tcase \"9\":\r\n\t\t\t\t\taddInput(event.key);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \".\":\r\n\t\t\t\tcase \",\":\r\n\t\t\t\t\taddInput(\".\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"Escape\":\r\n\t\t\t\t\treset();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"=\":\r\n\t\t\t\tcase \"Enter\":\r\n\t\t\t\t\tcalculate();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"*\":\r\n\t\t\t\t\tchangeOperation(\"×\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"/\":\r\n\t\t\t\t\tchangeOperation(\"÷\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"+\":\r\n\t\t\t\tcase \"-\":\r\n\t\t\t\t\tchangeOperation(event.key);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%\":\r\n\t\t\t\t\taddInput(\"%\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tdocument.addEventListener(\"keydown\", onKeyDown);\r\n\r\n\t\treturn () => {\r\n\t\t\tdocument.removeEventListener(\"keydown\", onKeyDown);\r\n\t\t};\r\n\t}, [active, addInput, calculate, changeOperation, reset]);\r\n\r\n\tlet calculation = \"\";\r\n\tif (operation != null)\r\n\t\tcalculation = `${firstNumber} ${operation} ${secondNumber != null ? secondNumber + \" =\" : \"\"}`;\r\n\r\n\treturn (<div className={styles.Calculator}>\r\n\t\t<div className={styles.Output}>\r\n\t\t\t<p className={styles.Calculation}>{calculation}</p>\r\n\t\t\t<p className={styles.Preview}>{input ?? firstNumber}</p>\r\n\t\t</div>\r\n\t\t<div className={styles.Input}>\r\n\t\t\t<div className={styles.InputRow}>\r\n\t\t\t\t<Button className={styles.Button} onClick={reset}>C</Button>\r\n\t\t\t\t<Button className={styles.Button} onClick={() => { addInput(\"-\"); }}>+/-</Button>\r\n\t\t\t\t<Button className={styles.Button} onClick={() => { addInput(\"%\"); }}>%</Button>\r\n\t\t\t\t<Button className={styles.Button} onClick={() => { changeOperation(\"÷\"); }}>÷</Button>\r\n\t\t\t</div>\r\n\t\t\t<div className={styles.InputRow}>\r\n\t\t\t\t<Button className={styles.Button} onClick={() => { addInput(\"7\"); }}>7</Button>\r\n\t\t\t\t<Button className={styles.Button} onClick={() => { addInput(\"8\"); }}>8</Button>\r\n\t\t\t\t<Button className={styles.Button} onClick={() => { addInput(\"9\"); }}>9</Button>\r\n\t\t\t\t<Button className={styles.Button} onClick={() => { changeOperation(\"×\"); }}>×</Button>\r\n\t\t\t</div>\r\n\t\t\t<div className={styles.InputRow}>\r\n\t\t\t\t<Button className={styles.Button} onClick={() => { addInput(\"4\"); }}>4</Button>\r\n\t\t\t\t<Button className={styles.Button} onClick={() => { addInput(\"5\"); }}>5</Button>\r\n\t\t\t\t<Button className={styles.Button} onClick={() => { addInput(\"6\"); }}>6</Button>\r\n\t\t\t\t<Button className={styles.Button} onClick={() => { changeOperation(\"-\"); }}>-</Button>\r\n\t\t\t</div>\r\n\t\t\t<div className={styles.InputRow}>\r\n\t\t\t\t<Button className={styles.Button} onClick={() => { addInput(\"1\"); }}>1</Button>\r\n\t\t\t\t<Button className={styles.Button} onClick={() => { addInput(\"2\"); }}>2</Button>\r\n\t\t\t\t<Button className={styles.Button} onClick={() => { addInput(\"3\"); }}>3</Button>\r\n\t\t\t\t<Button className={styles.Button} onClick={() => { changeOperation(\"+\"); }}>+</Button>\r\n\t\t\t</div>\r\n\t\t\t<div className={styles.InputRow}>\r\n\t\t\t\t<Button className={`${styles.Button} ${styles.ButtonLarge}`} onClick={() => { addInput(\"0\"); }}>0</Button>\r\n\t\t\t\t<Button className={styles.Button} onClick={() => { addInput(\".\"); }}>.</Button>\r\n\t\t\t\t<Button className={styles.Button} onClick={() => { calculate(); }}>=</Button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>);\r\n}","import { App, Vector2 } from \"@prozilla-os/core\";\r\nimport { Calculator } from \"./components/Calculator\";\r\n\r\nconst calculator = new App(\"Calculator\", \"calculator\", Calculator, { size: new Vector2(400, 600) })\r\n\t.setIconUrl(\"https://os.prozilla.dev/assets/apps/icons/calculator.svg\");\r\n\r\nexport { calculator };"],"names":["Calculator","active","input","setInput","useState","firstNumber","setFirstNumber","secondNumber","setSecondNumber","operation","setOperation","isIntermediate","setIsIntermediate","reset","useCallback","addInput","string","hasReset","calculate","intermediate","a","b","result","changeOperation","useEffect","onKeyDown","event","calculation","jsxs","styles","jsx","Button","calculator","App","Vector2"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@prozilla-os/calculator",
3
+ "description": "A ProzillaOS application for making basic calculations.",
4
+ "version": "1.0.1",
5
+ "homepage": "https://os.prozilla.dev/calculator",
6
+ "author": {
7
+ "name": "Prozilla",
8
+ "email": "business@prozilla.dev",
9
+ "url": "https://prozilla.dev/"
10
+ },
11
+ "type": "module",
12
+ "main": "dist/main.js",
13
+ "types": "dist/main.d.ts",
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/prozilla-os/ProzillaOS.git",
17
+ "directory": "packages/apps/calculator"
18
+ },
19
+ "license": "MIT",
20
+ "dependencies": {
21
+ "react": "^18.3.1",
22
+ "@prozilla-os/core": "1.0.15"
23
+ },
24
+ "devDependencies": {
25
+ "@types/node": "^20.14.5",
26
+ "@types/react": "^18.3.3",
27
+ "@vitejs/plugin-react-swc": "^3.7.0",
28
+ "typescript": "^5.4.5",
29
+ "vite": "^5.3.1",
30
+ "vite-plugin-dts": "^3.9.1",
31
+ "vite-plugin-lib-inject-css": "^2.1.1",
32
+ "@prozilla-os/shared": "1.0.2"
33
+ },
34
+ "files": [
35
+ "dist"
36
+ ],
37
+ "sideEffects": [
38
+ "**/*.css"
39
+ ],
40
+ "publishConfig": {
41
+ "registry": "https://registry.npmjs.org/",
42
+ "access": "public"
43
+ },
44
+ "scripts": {
45
+ "build": "tsc && vite build"
46
+ }
47
+ }