Replace svelte with Solidjs

This commit is contained in:
Maciej Jur 2023-04-14 21:27:12 +02:00
parent 34cf5f9742
commit 50b1059de2
10 changed files with 171 additions and 213 deletions

View file

@ -2,9 +2,9 @@ import { defineConfig } from 'astro/config';
import rehypeKatex from 'rehype-katex';
import remarkMath from 'remark-math';
import remarkEmoji from 'remark-emoji';
import svelte from "@astrojs/svelte";
import mdx from '@astrojs/mdx';
import remarkRuby from './src/assets/ruby';
import solid from '@astrojs/solid-js';
// https://astro.build/config
@ -25,7 +25,7 @@ export default defineConfig({
}
},
integrations: [
svelte(),
mdx(),
solid()
],
});

View file

@ -11,8 +11,8 @@
},
"dependencies": {
"@astrojs/mdx": "^0.18.4",
"@astrojs/svelte": "^2.1.0",
"astro": "^2.2.3",
"@astrojs/solid-js": "^2.1.0",
"astro": "^2.3.0",
"dayjs": "^1.11.7",
"leaflet": "^1.9.3",
"leaflet.markercluster": "^1.5.3",
@ -26,7 +26,7 @@
"remark-parse": "^10.0.1",
"remark-rehype": "^10.1.0",
"reveal.js": "^4.5.0",
"svelte": "^3.58.0",
"solid-js": "^1.7.3",
"unified": "^10.1.2",
"unist-util-visit": "^4.1.2"
},
@ -34,7 +34,6 @@
"@types/leaflet": "^1.9.3",
"@types/leaflet.markercluster": "^1.5.1",
"@types/lunr": "^2.3.4",
"@types/marked": "^4.0.8",
"@types/reveal.js": "^4.4.2",
"@types/unist": "^2.0.6",
"sass": "^1.62.0"

View file

@ -3,13 +3,13 @@ lockfileVersion: '6.0'
dependencies:
'@astrojs/mdx':
specifier: ^0.18.4
version: 0.18.4(astro@2.2.3)(rollup@3.20.2)
'@astrojs/svelte':
version: 0.18.4(astro@2.3.0)(rollup@3.20.2)
'@astrojs/solid-js':
specifier: ^2.1.0
version: 2.1.0(astro@2.2.3)(svelte@3.58.0)(typescript@4.9.5)(vite@4.2.1)
version: 2.1.0(@babel/core@7.21.4)(solid-js@1.7.3)
astro:
specifier: ^2.2.3
version: 2.2.3(sass@1.62.0)
specifier: ^2.3.0
version: 2.3.0(sass@1.62.0)
dayjs:
specifier: ^1.11.7
version: 1.11.7
@ -49,9 +49,9 @@ dependencies:
reveal.js:
specifier: ^4.5.0
version: 4.5.0
svelte:
specifier: ^3.58.0
version: 3.58.0
solid-js:
specifier: ^1.7.3
version: 1.7.3
unified:
specifier: ^10.1.2
version: 10.1.2
@ -69,9 +69,6 @@ devDependencies:
'@types/lunr':
specifier: ^2.3.4
version: 2.3.4
'@types/marked':
specifier: ^4.0.8
version: 4.0.8
'@types/reveal.js':
specifier: ^4.4.2
version: 4.4.2
@ -118,13 +115,13 @@ packages:
vscode-uri: 3.0.7
dev: false
/@astrojs/markdown-remark@2.1.3(astro@2.2.3):
resolution: {integrity: sha512-Di8Qbit9p7L7eqKklAJmiW9nVD+XMsNHpaNzCLduWjOonDu9fVgEzdjeDrTVCDtgrvkfhpAekuNXrp5+w4F91g==}
/@astrojs/markdown-remark@2.1.4(astro@2.3.0):
resolution: {integrity: sha512-z5diCcFo2xkBAJ11KySAIKpZZkULZmzUvWsZ2VWIOrR6QrEgEfVl5jTpgPSedx4m+xUPuemlUviOotGB7ItNsQ==}
peerDependencies:
astro: ^2.2.0
astro: ^2.3.0
dependencies:
'@astrojs/prism': 2.1.1
astro: 2.2.3(sass@1.62.0)
astro: 2.3.0(sass@1.62.0)
github-slugger: 1.5.0
import-meta-resolve: 2.2.2
rehype-raw: 6.1.1
@ -141,11 +138,11 @@ packages:
- supports-color
dev: false
/@astrojs/mdx@0.18.4(astro@2.2.3)(rollup@3.20.2):
/@astrojs/mdx@0.18.4(astro@2.3.0)(rollup@3.20.2):
resolution: {integrity: sha512-yLlHF74oBtCCPnCY4LBios3OrXc97IXIBVOWuyXxmNwAYMA4xIfClN2YP9cFQJITDI/d80qrANzQLQInUNKlHA==}
engines: {node: '>=16.12.0'}
dependencies:
'@astrojs/markdown-remark': 2.1.3(astro@2.2.3)
'@astrojs/markdown-remark': 2.1.4(astro@2.3.0)
'@astrojs/prism': 2.1.1
'@mdx-js/mdx': 2.3.0
'@mdx-js/rollup': 2.3.0(rollup@3.20.2)
@ -176,20 +173,17 @@ packages:
prismjs: 1.29.0
dev: false
/@astrojs/svelte@2.1.0(astro@2.2.3)(svelte@3.58.0)(typescript@4.9.5)(vite@4.2.1):
resolution: {integrity: sha512-upfkscrNuZbQvqVB5EG38FPJCgHCxO/LOJLAap75rO/++c1T7ztbVru4uSYVBRJkzTDuH3TS52T8kFTVgHXx/g==}
/@astrojs/solid-js@2.1.0(@babel/core@7.21.4)(solid-js@1.7.3):
resolution: {integrity: sha512-p07DP9NRWJPjtF+CzPZ9lzOMkoyw6wSs3S6g3OZUxR+DVQy3VIXXDqCcnZZVJI34VakkHuViZaoNNkBW/9I54w==}
engines: {node: '>=16.12.0'}
peerDependencies:
astro: ^2.1.0
svelte: ^3.54.0
solid-js: ^1.4.3
dependencies:
'@sveltejs/vite-plugin-svelte': 2.0.4(svelte@3.58.0)(vite@4.2.1)
astro: 2.2.3(sass@1.62.0)
svelte: 3.58.0
svelte2tsx: 0.5.23(svelte@3.58.0)(typescript@4.9.5)
babel-preset-solid: 1.7.3(@babel/core@7.21.4)
solid-js: 1.7.3
vitefu: 0.2.4(vite@4.2.1)
transitivePeerDependencies:
- supports-color
- typescript
- '@babel/core'
- vite
dev: false
@ -301,6 +295,13 @@ packages:
'@babel/types': 7.21.4
dev: false
/@babel/helper-module-imports@7.18.6:
resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.21.4
dev: false
/@babel/helper-module-imports@7.21.4:
resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==}
engines: {node: '>=6.9.0'}
@ -784,25 +785,6 @@ packages:
rollup: 3.20.2
dev: false
/@sveltejs/vite-plugin-svelte@2.0.4(svelte@3.58.0)(vite@4.2.1):
resolution: {integrity: sha512-pjqhW00KwK2uzDGEr+yJBwut+D+4XfJO/+bHHdHzPRXn9+1Jeq5JcFHyrUiYaXgHtyhX0RsllCTm4ssAx4ZY7Q==}
engines: {node: ^14.18.0 || >= 16}
peerDependencies:
svelte: ^3.54.0
vite: ^4.0.0
dependencies:
debug: 4.3.4
deepmerge: 4.3.1
kleur: 4.1.5
magic-string: 0.30.0
svelte: 3.58.0
svelte-hmr: 0.15.1(svelte@3.58.0)
vite: 4.2.1(sass@1.62.0)
vitefu: 0.2.4(vite@4.2.1)
transitivePeerDependencies:
- supports-color
dev: false
/@types/acorn@4.0.6:
resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==}
dependencies:
@ -892,10 +874,6 @@ packages:
resolution: {integrity: sha512-j4x4XJwZvorEUbA519VdQ5b9AOU9TSvfi8tvxMAfP8XzNLtFex7A8vFQwqOx3WACbV0KMXbACV3cZl4/gynQ7g==}
dev: true
/@types/marked@4.0.8:
resolution: {integrity: sha512-HVNzMT5QlWCOdeuBsgXP8EZzKUf0+AXzN+sLmjvaB3ZlLqO+e4u0uXrdw9ub69wBKFs+c6/pA4r9sy6cCDvImw==}
dev: true
/@types/mdast@3.0.11:
resolution: {integrity: sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==}
dependencies:
@ -1020,8 +998,8 @@ packages:
hasBin: true
dev: false
/astro@2.2.3(sass@1.62.0):
resolution: {integrity: sha512-Pd67ZBoYxqeyHCZ0UpdmDZYNgcs7JTwc0NMzUScrH4y2hjSY4S8iwmNUtd9pf65gkxMpEbqfvQj06kLzgi4HZg==}
/astro@2.3.0(sass@1.62.0):
resolution: {integrity: sha512-1t8U6vDHQLT0gw0IXZLtJKDIShCcJwOuh0K1JyPgFwu1famb/ggyvsqp9nxBZIbNV8BcAWDHrJA+Z7hh1oEiWA==}
engines: {node: '>=16.12.0', npm: '>=6.14.0'}
hasBin: true
peerDependencies:
@ -1032,7 +1010,7 @@ packages:
dependencies:
'@astrojs/compiler': 1.3.1
'@astrojs/language-server': 0.28.3
'@astrojs/markdown-remark': 2.1.3(astro@2.2.3)
'@astrojs/markdown-remark': 2.1.4(astro@2.3.0)
'@astrojs/telemetry': 2.1.0
'@astrojs/webapi': 2.1.0
'@babel/core': 7.21.4
@ -1093,6 +1071,28 @@ packages:
- terser
dev: false
/babel-plugin-jsx-dom-expressions@0.36.10(@babel/core@7.21.4):
resolution: {integrity: sha512-QA2k/14WGw+RgcGGnEuLWwnu4em6CGhjeXtjvgOYyFHYS2a+CzPeaVQHDOlfuiBcjq/3hWMspHMIMnPEOIzdBg==}
peerDependencies:
'@babel/core': ^7.20.12
dependencies:
'@babel/core': 7.21.4
'@babel/helper-module-imports': 7.18.6
'@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.4)
'@babel/types': 7.21.4
html-entities: 2.3.3
validate-html-nesting: 1.2.1
dev: false
/babel-preset-solid@1.7.3(@babel/core@7.21.4):
resolution: {integrity: sha512-HOdyrij99zo+CBrmtDxSexBAl54vCBCfBoyueLBvcfVniaEXNd4ftKqSN6XQcLvFfCY28UFO+DHaigXzWKOfzg==}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
'@babel/core': 7.21.4
babel-plugin-jsx-dom-expressions: 0.36.10(@babel/core@7.21.4)
dev: false
/bail@2.0.2:
resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
dev: false
@ -1139,7 +1139,7 @@ packages:
hasBin: true
dependencies:
caniuse-lite: 1.0.30001478
electron-to-chromium: 1.4.361
electron-to-chromium: 1.4.364
node-releases: 2.0.10
update-browserslist-db: 1.0.10(browserslist@4.21.5)
dev: false
@ -1302,6 +1302,10 @@ packages:
which: 2.0.2
dev: false
/csstype@3.1.2:
resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
dev: false
/dayjs@1.11.7:
resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==}
dev: false
@ -1324,20 +1328,11 @@ packages:
character-entities: 2.0.2
dev: false
/dedent-js@1.0.1:
resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==}
dev: false
/deepmerge-ts@4.3.0:
resolution: {integrity: sha512-if3ZYdkD2dClhnXR5reKtG98cwyaRT1NeugQoAPTTfsOpV9kqyeiBF9Qa5RHjemb3KzD5ulqygv6ED3t5j9eJw==}
engines: {node: '>=12.4.0'}
dev: false
/deepmerge@4.3.1:
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
engines: {node: '>=0.10.0'}
dev: false
/defaults@1.0.4:
resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
dependencies:
@ -1376,8 +1371,8 @@ packages:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
dev: false
/electron-to-chromium@1.4.361:
resolution: {integrity: sha512-VocVwjPp05HUXzf3xmL0boRn5b0iyqC7amtDww84Jb1QJNPBc7F69gJyEeXRoriLBC4a5pSyckdllrXAg4mmRA==}
/electron-to-chromium@1.4.364:
resolution: {integrity: sha512-v6GxKdF57qfweXSfnne9nw1vS/86G4+UtscEe+3HQF+zhhrjAY4+9A4gstIQO56gyZvVrt9MZwt9aevCz/tohQ==}
dev: false
/emmet@2.4.2:
@ -1783,6 +1778,10 @@ packages:
space-separated-tokens: 2.0.2
dev: false
/html-entities@2.3.3:
resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==}
dev: false
/html-escaper@3.0.3:
resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==}
dev: false
@ -2037,12 +2036,6 @@ packages:
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
dev: false
/lower-case@2.0.2:
resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
dependencies:
tslib: 2.5.0
dev: false
/lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
dependencies:
@ -2067,13 +2060,6 @@ packages:
'@jridgewell/sourcemap-codec': 1.4.15
dev: false
/magic-string@0.30.0:
resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==}
engines: {node: '>=12'}
dependencies:
'@jridgewell/sourcemap-codec': 1.4.15
dev: false
/markdown-extensions@1.1.1:
resolution: {integrity: sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==}
engines: {node: '>=0.10.0'}
@ -2692,13 +2678,6 @@ packages:
'@types/nlcst': 1.0.0
dev: false
/no-case@3.0.4:
resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
dependencies:
lower-case: 2.0.2
tslib: 2.5.0
dev: false
/node-emoji@1.11.0:
resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==}
dependencies:
@ -2816,13 +2795,6 @@ packages:
resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
dev: false
/pascal-case@3.1.2:
resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
dependencies:
no-case: 3.0.4
tslib: 2.5.0
dev: false
/path-exists@4.0.0:
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
engines: {node: '>=8'}
@ -3067,8 +3039,8 @@ packages:
unist-util-visit: 4.1.2
dev: false
/resolve@1.22.2:
resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==}
/resolve@1.22.3:
resolution: {integrity: sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw==}
hasBin: true
dependencies:
is-core-module: 2.12.0
@ -3194,6 +3166,11 @@ packages:
lru-cache: 6.0.0
dev: false
/seroval@0.5.1:
resolution: {integrity: sha512-ZfhQVB59hmIauJG5Ydynupy8KHyr5imGNtdDhbZG68Ufh1Ynkv9KOYOAABf71oVbQxJ8VkWnMHAjEHE7fWkH5g==}
engines: {node: '>=10'}
dev: false
/server-destroy@1.0.1:
resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==}
dev: false
@ -3231,6 +3208,13 @@ packages:
engines: {node: '>=12'}
dev: false
/solid-js@1.7.3:
resolution: {integrity: sha512-4hwaF/zV/xbNeBBIYDyu3dcReOZBECbO//mrra6GqOrKy4Soyo+fnKjpZSa0nODm6j1aL0iQRh/7ofYowH+jzw==}
dependencies:
csstype: 3.1.2
seroval: 0.5.1
dev: false
/source-map-js@1.0.2:
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
engines: {node: '>=0.10.0'}
@ -3362,32 +3346,6 @@ packages:
engines: {node: '>= 0.4'}
dev: false
/svelte-hmr@0.15.1(svelte@3.58.0):
resolution: {integrity: sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==}
engines: {node: ^12.20 || ^14.13.1 || >= 16}
peerDependencies:
svelte: '>=3.19.0'
dependencies:
svelte: 3.58.0
dev: false
/svelte2tsx@0.5.23(svelte@3.58.0)(typescript@4.9.5):
resolution: {integrity: sha512-jYFnugTQRFmUpvLXPQrKzVYcW5ErT+0QCxg027Zx9BuvYefMZFuoBSTDYe7viPEFGrPPiLgT2m7f5n9khE7f7Q==}
peerDependencies:
svelte: ^3.24
typescript: ^4.1.2
dependencies:
dedent-js: 1.0.1
pascal-case: 3.1.2
svelte: 3.58.0
typescript: 4.9.5
dev: false
/svelte@3.58.0:
resolution: {integrity: sha512-brIBNNB76mXFmU/Kerm4wFnkskBbluBDCjx/8TcpYRb298Yh2dztS2kQ6bhtjMcvUhd5ynClfwpz5h2gnzdQ1A==}
engines: {node: '>= 8'}
dev: false
/synckit@0.8.5:
resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==}
engines: {node: ^14.18.0 || >=16.0.0}
@ -3428,7 +3386,7 @@ packages:
'@types/json5': 0.0.30
'@types/resolve': 1.20.2
json5: 2.2.3
resolve: 1.22.2
resolve: 1.22.3
strip-bom: 4.0.0
type-fest: 0.13.1
dev: false
@ -3447,12 +3405,6 @@ packages:
engines: {node: '>=12.20'}
dev: false
/typescript@4.9.5:
resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
engines: {node: '>=4.2.0'}
hasBin: true
dev: false
/typescript@5.0.4:
resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==}
engines: {node: '>=12.20'}
@ -3585,6 +3537,10 @@ packages:
sade: 1.8.1
dev: false
/validate-html-nesting@1.2.1:
resolution: {integrity: sha512-T1ab131NkP3BfXB7KUSgV7Rhu81R2id+L6NaJ7NypAAG5iV6gXnPpQE5RK1fvb+3JYsPTL+ihWna5sr5RN9gaQ==}
dev: false
/vfile-location@4.1.0:
resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==}
dependencies:
@ -3635,7 +3591,7 @@ packages:
dependencies:
esbuild: 0.17.16
postcss: 8.4.21
resolve: 1.22.2
resolve: 1.22.3
rollup: 3.20.2
sass: 1.62.0
optionalDependencies:

75
src/components/Search.tsx Normal file
View file

@ -0,0 +1,75 @@
import { createSignal, onMount } from "solid-js";
import dayjs from "dayjs";
import lunr from "lunr";
const KEY = 'q' as const;
export default function Search() {
const [query, setQuery] = createSignal('');
// Data loaded from server
let index: lunr.Index;
let metadata: any;
async function load() {
const data = await fetch('/search.json').then(r => r.json());
index = lunr.Index.load(data.index);
metadata = data.metadata;
}
// Dynamically calculated from query
const results = () => index?.search(query()) ?? [];
// Update URL query and history
let debounce: number;
function syncHistory(value: string) {
clearTimeout(debounce);
debounce = setTimeout(() => {
const url = new URL(window.location.href);
(value) ? url.searchParams.set(KEY, value) : url.searchParams.delete(KEY);
window.history.pushState({}, '', url);
}, 1000);
}
// set query to URL param
function sync() {
clearTimeout(debounce);
setQuery(new URLSearchParams(window.location.search).get('q') || '');
}
function onInput(value: string) {
setQuery(value);
syncHistory(value);
}
onMount(async () => {
await load().then(sync);
window.addEventListener('popstate', sync);
});
return (
<article class="c-search">
<h1>Search</h1>
<input class="c-search__input" placeholder="Start typing here!"
value={query()}
onInput={e => onInput(e.target.value)}/>
{query() && (
<section class="c-search__results">
<div>Showing results for "{query()}" ({results().length})</div>
{results().map(result => {
const meta = metadata[result.ref];
const date = dayjs(meta.date);
return (
<a class="c-search__result" href={result.ref}>
<span class="c-search__name">{meta.title}</span>
<time class="c-search__date" datetime={date.toISOString()}>{date.format("MMM DD, YYYY")}</time>
</a>
)
})}
</section>
) || (
<div>No results to show yet...</div>
)}
</article>
);
}

View file

@ -1,7 +1,6 @@
---
import timeline from '../assets/timeline.json';
---
<div class="sc-timeline">
{timeline.map((year: any) => (
<section class="sc-timeline__year">

View file

@ -1,68 +0,0 @@
<script lang="ts">
import dayjs from "dayjs";
import lunr from "lunr";
import { onMount } from "svelte";
const KEY = 'q' as const;
let value = '';
let index: lunr.Index;
let results: lunr.Index.Result[] = [];
let metadata: any;
/** Update the value so that it reflects the URL */
function sync() {
value = new URLSearchParams(window.location.search).get('q') || '';
search();
}
let debounce: number; // timer handle
/** Update browser URL with the query string */
function syncHistory(value: string) {
clearTimeout(debounce);
debounce = setTimeout(() => {
const url = new URL(window.location.href);
(value)
? url.searchParams.set(KEY, value)
: url.searchParams.delete(KEY);
window.history.pushState({}, '', url);
}, 1000);
}
async function load() {
const data = await fetch('/search.json').then(r => r.json());
index = lunr.Index.load(data.index);
metadata = data.metadata;
}
function search() {
results = (!value || !index) ? [] : index.search(value);
syncHistory(value);
}
onMount(() => load().then(sync).then(search));
</script>
<article class="c-search">
<h1>Search</h1>
<input class="c-search__input" bind:value on:input={search} placeholder="Start typing here!"/>
{#if value}
<section class="c-search__results">
<div>Showing results for "{value}" ({results.length})</div>
{#each results as result}
{@const meta = metadata[result.ref]}
{@const date = dayjs(meta.date)}
<a class="c-search__result" href={result.ref}>
<span class="c-search__name">{meta.title}</span>
<time class="c-search__date" datetime={date.toISOString()}>{date.format("MMM DD, YYYY")}</time>
</a>
{/each}
</section>
{:else}
<div>No results to show yet...</div>
{/if}
</article>
<svelte:window on:popstate={sync} />

View file

@ -12,12 +12,12 @@ Now that you've been warned, please enjoy the transient ramblings that are prese
## Interactive map with my Geotagged photos
Throughout the last few years I've been taking photos in random places. I've spent some time geotagging them, and I've been able to create a map of them. It takes a horrendous amount of time to geotag them, and honestly I've forgotten some places, so it will take a while to add at least some of the rest.
[Take me to the map!](@/map/index.md)
[Take me to the map!](/map/)
## A short guide to the Hanafuda card game
I've been playing Hanafuda for a while now, so I decided to write a short guide to the game. I am by no means good at the game, so take everything with a grain of salt, but it should be enough to get you started.
[Take me to the guide!](@/posts/hanafuda.md)
[Take me to the guide!](/posts/)
## Thanks for visiting!

View file

@ -1,10 +1,10 @@
---
import Base from "../layouts/Base.astro";
import Search from "../components/search/Search.svelte";
import Search from "../components/Search";
---
<Base>
<main>
<Search client:load />
<Search client:load/>
</main>
</Base>

View file

@ -1,5 +0,0 @@
import { vitePreprocess } from '@astrojs/svelte';
export default {
preprocess: vitePreprocess(),
};

View file

@ -1,6 +1,8 @@
{
"extends": "astro/tsconfigs/strict",
"compilerOptions": {
"allowJs": true
"allowJs": true,
"jsx": "preserve",
"jsxImportSource": "solid-js"
}
}