diff --git a/build.sh b/build.sh index c63e37b..4c2182b 100755 --- a/build.sh +++ b/build.sh @@ -4,28 +4,10 @@ # NODE_ENV is set to production, npm won't install anything unset NODE_ENV -echo "Rebuilding deprived main site" -echo "cwd: ${pwd}" - -#rm -rf deprived-main-website -#git clone https://gitea.deprived.dev/Sveskejuice/deprived-main-website.git - -git restore . -git clean -fd git pull -git checkout WeGoingBasic +git reset --hard WeGoingBasic -echo "Project files up to date. Proceeding to install deps" - -echo "npm config list:" -npm config list - -npm cache clean --force -npm i -npm i @sveltejs/adapter-static -npm i @sveltejs/kit -npm i @zerodevx/svelte-img -npm tailwind init +npm ci echo "Ready to build, building..." diff --git a/package-lock.json b/package-lock.json index 041d5fd..276d8e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,8 @@ "name": "deprived-main-website", "version": "0.0.1", "dependencies": { + "lucide-svelte": "^0.475.0", + "svelte-katex": "^0.1.2", "svelte-media-queries": "^1.6.2", "svelte-parallax": "^0.6.0", "theme-change": "^2.5.0" @@ -48,7 +50,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -781,7 +782,6 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -795,7 +795,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -804,7 +803,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -812,14 +810,12 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1475,7 +1471,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true, "license": "MIT" }, "node_modules/@types/pug": { @@ -1488,7 +1483,6 @@ "version": "8.11.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -1573,7 +1567,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dev": true, "dependencies": { "dequal": "^2.0.3" } @@ -1620,7 +1613,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", - "dev": true, "dependencies": { "dequal": "^2.0.3" } @@ -1801,7 +1793,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", - "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15", "@types/estree": "^1.0.1", @@ -1915,7 +1906,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", - "dev": true, "dependencies": { "mdn-data": "2.0.30", "source-map-js": "^1.0.1" @@ -1997,7 +1987,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, "engines": { "node": ">=6" } @@ -2164,7 +2153,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, "dependencies": { "@types/estree": "^1.0.0" } @@ -2500,7 +2488,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", - "dev": true, "dependencies": { "@types/estree": "*" } @@ -2586,6 +2573,31 @@ "node": ">=6" } }, + "node_modules/katex": { + "version": "0.15.6", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.15.6.tgz", + "integrity": "sha512-UpzJy4yrnqnhXvRPhjEuLA4lcPn6eRngixW7Q3TJErjg3Aw2PuLFBzTkdUb89UtumxjhHTqL3a5GDGETMSwgJA==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.0.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, "node_modules/kleur": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", @@ -2614,8 +2626,7 @@ "node_modules/locate-character": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", - "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", - "dev": true + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==" }, "node_modules/lodash.castarray": { "version": "4.4.0", @@ -2653,11 +2664,19 @@ "yallist": "^3.0.2" } }, + "node_modules/lucide-svelte": { + "version": "0.475.0", + "resolved": "https://registry.npmjs.org/lucide-svelte/-/lucide-svelte-0.475.0.tgz", + "integrity": "sha512-N5+hFTPHaZe9HhqJDxxxODfYuOmI6v+JIowzERcea/uxytN/JZlehVTcINBNp8wMo7l6ov1Jf5srrDbkI/WsJg==", + "license": "ISC", + "peerDependencies": { + "svelte": "^3 || ^4 || ^5.0.0-next.42" + } + }, "node_modules/magic-string": { "version": "0.30.10", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", - "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" } @@ -2665,8 +2684,7 @@ "node_modules/mdn-data": { "version": "2.0.30", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" }, "node_modules/merge2": { "version": "1.4.1", @@ -2962,7 +2980,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", - "dev": true, "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^3.0.0", @@ -3448,7 +3465,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -3669,7 +3685,6 @@ "version": "4.2.19", "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.19.tgz", "integrity": "sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==", - "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.1", @@ -3734,6 +3749,15 @@ "svelte": "^3.19.0 || ^4.0.0" } }, + "node_modules/svelte-katex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/svelte-katex/-/svelte-katex-0.1.2.tgz", + "integrity": "sha512-jgqMgP0hwgsaYKLNa9GGpuEKiwE7Gr6QlDKp3C3QQkIb30G+WEHCljfl+nVCNra1aTr7uIemQmlyMA3avHx6HQ==", + "license": "MIT", + "dependencies": { + "katex": "^0.15.2" + } + }, "node_modules/svelte-media-queries": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/svelte-media-queries/-/svelte-media-queries-1.6.2.tgz", diff --git a/package.json b/package.json index e3bbfec..f658140 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,8 @@ }, "type": "module", "dependencies": { + "lucide-svelte": "^0.475.0", + "svelte-katex": "^0.1.2", "svelte-media-queries": "^1.6.2", "svelte-parallax": "^0.6.0", "theme-change": "^2.5.0" diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 8fb365d..6b6c8b2 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -58,7 +58,9 @@
-
+ -
+

Games

diff --git a/src/routes/tools/+page.svelte b/src/routes/tools/+page.svelte new file mode 100644 index 0000000..f4b3bb0 --- /dev/null +++ b/src/routes/tools/+page.svelte @@ -0,0 +1,53 @@ + + +
+ +
+

Tools

+ These are the tools collected from different places of the + internet + + +
+ +
+

MPUs/SoCs

+ Whatever acronym you want lol +
+ + +
+
+ +
+ I if you have tool suggestions, then either create an issue, create a pull request, or send an email. I probably wont add it though, since this is free work lol. +
+
+
+
diff --git a/src/routes/tools/battery-life-calculator/+page.svelte b/src/routes/tools/battery-life-calculator/+page.svelte new file mode 100644 index 0000000..7037823 --- /dev/null +++ b/src/routes/tools/battery-life-calculator/+page.svelte @@ -0,0 +1,183 @@ + + +
+ +
+

Battery life calculator

+ + Calculates the time a battery will last. Too lazy to explain + more. + + + +
+ +
+

Software

+
+
+ Duration of code execution +
+ +
+ sec +
+
+
+
+ sleep time +
+ +
+ sec +
+
+
+ +
+

Hardware

+
+
+ Use custom values +
+ +
+
+ + {#if !useCustom} +
+ + + {#if selectedMcu != undefined && selectedMcu?.wifi != undefined} +

+ wifi +

+ {/if} + {#if selectedMcu != undefined && selectedMcu?.wifi != undefined} +

+ ble +

+ {/if} +
+ {:else} +
+ Duration of code execution +
+ +
+ sec +
+
+
+
+ sleep time +
+ +
+ sec +
+
+
+ {/if} +
+
+ +
+ Source for the calculations is at this + github + and the + original website. + I just mearly made additions. +
+
+
+
+ + diff --git a/src/routes/tools/battery-life-calculator/pageSrc/BatteryCalc.js b/src/routes/tools/battery-life-calculator/pageSrc/BatteryCalc.js new file mode 100644 index 0000000..2913ab7 --- /dev/null +++ b/src/routes/tools/battery-life-calculator/pageSrc/BatteryCalc.js @@ -0,0 +1,108 @@ +export class BatteryLifeCalculator { + constructor( + timeRunSeconds, + timeSleepSeconds, + consumptionActiveMilliAmpHours, + consumptionSleepMilliAmpHours, + powerBatteryTotalMilliAmpHours, + powerBatteryBufferBeforeEmptyPercent = 20) { + this.timeRunSeconds = timeRunSeconds + this.timeSleepSeconds = timeSleepSeconds + this.consumptionActiveMilliAmpHours = consumptionActiveMilliAmpHours + this.consumptionSleepMilliAmpHours = consumptionSleepMilliAmpHours + this.powerBatteryTotalMilliAmpHours = powerBatteryTotalMilliAmpHours + this.powerBatteryBufferBeforeEmptyPercent = powerBatteryBufferBeforeEmptyPercent + + console.log("The source of this battery calc is here: https://github.com/simonneutert/batterylife-calculator\nI was too lazy to make the math myself."); + } + + // public API + + milliAmpToMicroAmp(milliAmps) { + return milliAmps * 1000 + } + + microAmpToMilliAmp(milliAmps) { + return milliAmps * 0.001 + } + + calculate() { + return { + powerAveragePerHour: this.powerEstimatedHourly(), + runtimeHoursEstimated: this.runtimeHoursEstimated(), + runtimeDaysEstimated: this.runtimeDaysEstimated(), + runtimeDaysRemainingHoursEstimated: this.runtimeDaysRemainingHoursEstimated() + } + } + + powerEstimatedHourly() { + return this.calcPowerEst( + this.powerRun(), + this.consumptionActiveMilliAmpHours, + this.powerSleep(), + this.consumptionSleepMilliAmpHours + ) + } + + runtimeHoursEstimated() { + return parseInt(this.powerLipo() / this.powerEstimatedHourly()) + } + + runtimeDaysEstimated() { + return parseInt(this.runtimeHoursEstimated() / 24) + } + + runtimeDaysRemainingHoursEstimated() { + return parseInt(this.runtimeHoursEstimated() % 24) + } + + // private + + roundOff(x) { + return Math.round(x * 100.0) / 100.0 + } + + calcPowerLipo(x, y) { + return parseFloat((x * (100 - y)) / 100) + } + + calcRuns(x, y) { + return parseFloat(60 / (x + y)) + } + + calcRunsHour(x, y) { + return parseFloat(3600 / (x + y)) + } + + calcPowerRun(x, y) { + return parseFloat((x / (x + y)) * 3600) + } + + calcPowerSleep(x, y) { + return parseFloat((y / (x + y)) * 3600) + } + + powerLipo() { + return this.calcPowerLipo(this.powerBatteryTotalMilliAmpHours, this.powerBatteryBufferBeforeEmptyPercent) + } + + runs() { + return this.calcRuns(this.timeRunSeconds, this.timeSleepSeconds) + } + + runsHour() { + return this.calcRunsHour(this.timeRunSeconds, this.timeSleepSeconds) + } + + powerRun() { + return this.calcPowerRun(this.timeRunSeconds, this.timeSleepSeconds) + } + + powerSleep() { + return this.calcPowerSleep(this.timeRunSeconds, this.timeSleepSeconds) + } + + calcPowerEst(a, b, c, d) { + return parseFloat((a / 3600) * b + (c / 3600) * d) + } +} diff --git a/src/routes/tools/battery-life-calculator/pageSrc/MCU_defs.ts b/src/routes/tools/battery-life-calculator/pageSrc/MCU_defs.ts new file mode 100644 index 0000000..d4372f2 --- /dev/null +++ b/src/routes/tools/battery-life-calculator/pageSrc/MCU_defs.ts @@ -0,0 +1,63 @@ +export interface MCU_Type { + name: string; + cpu: { [key: string]: Number }; // state: power consumption + sleep: { [key: string]: Number }; + wifi?: { [key: string]: Number }; + bluetooth?: { [key: string]: Number }; +} + +const MCUs: MCU_Type[] = [ + { + name: "esp32-s3", + cpu: { // mili amps + single_core_40MHz: 21.8, + dual_core_40MHz: 24.4, + single_core_80MHz: 42.6, + dual_core_80MHz: 47.3, + single_core_160MHz: 54.6, + dual_core_160MHz: 54.1, + single_core_240MHz: 65.9, + dual_core_240MHz: 81.3, + }, + sleep: { + + }, + wifi: { // + dBm_21: 318.2, + sleep: 10 + }, + bluetooth: { + active: 100, + sleep: 5 + } + }, + + { + name: "esp32-c3", + cpu: { + single_core_80MHz: 22, + single_core_160MHz: 54.6, + }, + sleep: { + + }, + wifi: { + active: 110, + sleep: 9 + }, + bluetooth: { + active: 90, + sleep: 4 + } + } +]; + +export function getMCU(name: string): MCU_Type | undefined{ + for (let i = 0; i < MCUs.length; i++) { + const element = MCUs[i]; + if (element.name == name) + return element + } + + return undefined; +} \ No newline at end of file diff --git a/src/routes/tools/comps/ToolButton.svelte b/src/routes/tools/comps/ToolButton.svelte new file mode 100644 index 0000000..967b4b2 --- /dev/null +++ b/src/routes/tools/comps/ToolButton.svelte @@ -0,0 +1,27 @@ + + +
+
+
+
{title}
+ +
+
{desc}
+ +
+ {#if icon != undefined} + + {/if} + {btnText} +
+
+
\ No newline at end of file diff --git a/src/routes/zhen/cv/rev2/+page.svelte b/src/routes/zhen/cv/rev2/+page.svelte index 5b59441..55fe6c0 100644 --- a/src/routes/zhen/cv/rev2/+page.svelte +++ b/src/routes/zhen/cv/rev2/+page.svelte @@ -49,8 +49,8 @@ Zhentao Wei's CV {getFormattedDate()} - - + + @@ -120,12 +120,6 @@ } } - @media print { - .hide-on-print { - display: none; - } -} - .cv-container-container{ width: 100%; height: 100%; @@ -149,11 +143,6 @@ padding: auto; } - .include-in-print { &, & * { - -webkit-print-color-adjust:exact !important; - print-color-adjust:exact !important; - }} - .sections { // Shared between sections > div { diff --git a/src/routes/zhen/notes/physics/1/+page.svelte b/src/routes/zhen/notes/physics/1/+page.svelte new file mode 100644 index 0000000..58c1a8d --- /dev/null +++ b/src/routes/zhen/notes/physics/1/+page.svelte @@ -0,0 +1,72 @@ + + + + + + + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolDescription
$v_i$Initial velo
$v_f$Final velo
$a$Accel
$\Delta x$The amount of change.
$t$You're on your own on this one
+
+
+ + {#each { length: 3 } as _, i} +
test {i}
+ {/each} +
+
+
diff --git a/src/routes/zhen/notes/physics/sharedComps/A4.svelte b/src/routes/zhen/notes/physics/sharedComps/A4.svelte new file mode 100644 index 0000000..f7ab836 --- /dev/null +++ b/src/routes/zhen/notes/physics/sharedComps/A4.svelte @@ -0,0 +1,16 @@ + + +
+
+
+ +
+ + {#if bottomBorder} +
+ {/if} +
+
\ No newline at end of file diff --git a/src/routes/zhen/notes/physics/sharedComps/Math.svelte b/src/routes/zhen/notes/physics/sharedComps/Math.svelte new file mode 100644 index 0000000..e69de29 diff --git a/static/stylesheets/global.css b/static/stylesheets/global.css index 5cd3a51..4ac99e5 100644 --- a/static/stylesheets/global.css +++ b/static/stylesheets/global.css @@ -17,6 +17,17 @@ font-family: "CozetteVector"; } +@media print { + .hide-on-print { + display: none; + } +} + +.include-in-print { &, & * { + -webkit-print-color-adjust:exact !important; + print-color-adjust:exact !important; +}} + html { background: var(--background1); }