Merge pull request 'devel' (#254) from devel into main

Reviewed-on: #254
This commit is contained in:
inhji 2023-08-02 20:49:57 +02:00
commit 9aa1be64e1
8 changed files with 150 additions and 135 deletions

184
assets/package-lock.json generated
View file

@ -15,7 +15,7 @@
"tablesort": "^5.3.0" "tablesort": "^5.3.0"
}, },
"devDependencies": { "devDependencies": {
"esbuild": "^0.18.0" "esbuild": "^0.18.17"
}, },
"peerDependencies": { "peerDependencies": {
"react": "^18.0", "react": "^18.0",
@ -45,9 +45,9 @@
} }
}, },
"node_modules/@esbuild/android-arm": { "node_modules/@esbuild/android-arm": {
"version": "0.18.14", "version": "0.18.17",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.14.tgz", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.17.tgz",
"integrity": "sha512-blODaaL+lngG5bdK/t4qZcQvq2BBqrABmYwqPPcS5VRxrCSGHb9R/rA3fqxh7R18I7WU4KKv+NYkt22FDfalcg==", "integrity": "sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
@ -61,9 +61,9 @@
} }
}, },
"node_modules/@esbuild/android-arm64": { "node_modules/@esbuild/android-arm64": {
"version": "0.18.14", "version": "0.18.17",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.14.tgz", "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.17.tgz",
"integrity": "sha512-rZ2v+Luba5/3D6l8kofWgTnqE+qsC/L5MleKIKFyllHTKHrNBMqeRCnZI1BtRx8B24xMYxeU32iIddRQqMsOsg==", "integrity": "sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -77,9 +77,9 @@
} }
}, },
"node_modules/@esbuild/android-x64": { "node_modules/@esbuild/android-x64": {
"version": "0.18.14", "version": "0.18.17",
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.14.tgz", "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.17.tgz",
"integrity": "sha512-qSwh8y38QKl+1Iqg+YhvCVYlSk3dVLk9N88VO71U4FUjtiSFylMWK3Ugr8GC6eTkkP4Tc83dVppt2n8vIdlSGg==", "integrity": "sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -93,9 +93,9 @@
} }
}, },
"node_modules/@esbuild/darwin-arm64": { "node_modules/@esbuild/darwin-arm64": {
"version": "0.18.14", "version": "0.18.17",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.14.tgz", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.17.tgz",
"integrity": "sha512-9Hl2D2PBeDYZiNbnRKRWuxwHa9v5ssWBBjisXFkVcSP5cZqzZRFBUWEQuqBHO4+PKx4q4wgHoWtfQ1S7rUqJ2Q==", "integrity": "sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -109,9 +109,9 @@
} }
}, },
"node_modules/@esbuild/darwin-x64": { "node_modules/@esbuild/darwin-x64": {
"version": "0.18.14", "version": "0.18.17",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.14.tgz", "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.17.tgz",
"integrity": "sha512-ZnI3Dg4ElQ6tlv82qLc/UNHtFsgZSKZ7KjsUNAo1BF1SoYDjkGKHJyCrYyWjFecmXpvvG/KJ9A/oe0H12odPLQ==", "integrity": "sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -125,9 +125,9 @@
} }
}, },
"node_modules/@esbuild/freebsd-arm64": { "node_modules/@esbuild/freebsd-arm64": {
"version": "0.18.14", "version": "0.18.17",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.14.tgz", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.17.tgz",
"integrity": "sha512-h3OqR80Da4oQCIa37zl8tU5MwHQ7qgPV0oVScPfKJK21fSRZEhLE4IIVpmcOxfAVmqjU6NDxcxhYaM8aDIGRLw==", "integrity": "sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -141,9 +141,9 @@
} }
}, },
"node_modules/@esbuild/freebsd-x64": { "node_modules/@esbuild/freebsd-x64": {
"version": "0.18.14", "version": "0.18.17",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.14.tgz", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.17.tgz",
"integrity": "sha512-ha4BX+S6CZG4BoH9tOZTrFIYC1DH13UTCRHzFc3GWX74nz3h/N6MPF3tuR3XlsNjMFUazGgm35MPW5tHkn2lzQ==", "integrity": "sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -157,9 +157,9 @@
} }
}, },
"node_modules/@esbuild/linux-arm": { "node_modules/@esbuild/linux-arm": {
"version": "0.18.14", "version": "0.18.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.14.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.17.tgz",
"integrity": "sha512-5+7vehI1iqru5WRtJyU2XvTOvTGURw3OZxe3YTdE9muNNIdmKAVmSHpB3Vw2LazJk2ifEdIMt/wTWnVe5V98Kg==", "integrity": "sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
@ -173,9 +173,9 @@
} }
}, },
"node_modules/@esbuild/linux-arm64": { "node_modules/@esbuild/linux-arm64": {
"version": "0.18.14", "version": "0.18.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.14.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.17.tgz",
"integrity": "sha512-IXORRe22In7U65NZCzjwAUc03nn8SDIzWCnfzJ6t/8AvGx5zBkcLfknI+0P+hhuftufJBmIXxdSTbzWc8X/V4w==", "integrity": "sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -189,9 +189,9 @@
} }
}, },
"node_modules/@esbuild/linux-ia32": { "node_modules/@esbuild/linux-ia32": {
"version": "0.18.14", "version": "0.18.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.14.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.17.tgz",
"integrity": "sha512-BfHlMa0nibwpjG+VXbOoqJDmFde4UK2gnW351SQ2Zd4t1N3zNdmUEqRkw/srC1Sa1DRBE88Dbwg4JgWCbNz/FQ==", "integrity": "sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==",
"cpu": [ "cpu": [
"ia32" "ia32"
], ],
@ -205,9 +205,9 @@
} }
}, },
"node_modules/@esbuild/linux-loong64": { "node_modules/@esbuild/linux-loong64": {
"version": "0.18.14", "version": "0.18.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.14.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.17.tgz",
"integrity": "sha512-j2/Ex++DRUWIAaUDprXd3JevzGtZ4/d7VKz+AYDoHZ3HjJzCyYBub9CU1wwIXN+viOP0b4VR3RhGClsvyt/xSw==", "integrity": "sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==",
"cpu": [ "cpu": [
"loong64" "loong64"
], ],
@ -221,9 +221,9 @@
} }
}, },
"node_modules/@esbuild/linux-mips64el": { "node_modules/@esbuild/linux-mips64el": {
"version": "0.18.14", "version": "0.18.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.14.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.17.tgz",
"integrity": "sha512-qn2+nc+ZCrJmiicoAnJXJJkZWt8Nwswgu1crY7N+PBR8ChBHh89XRxj38UU6Dkthl2yCVO9jWuafZ24muzDC/A==", "integrity": "sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==",
"cpu": [ "cpu": [
"mips64el" "mips64el"
], ],
@ -237,9 +237,9 @@
} }
}, },
"node_modules/@esbuild/linux-ppc64": { "node_modules/@esbuild/linux-ppc64": {
"version": "0.18.14", "version": "0.18.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.14.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.17.tgz",
"integrity": "sha512-aGzXzd+djqeEC5IRkDKt3kWzvXoXC6K6GyYKxd+wsFJ2VQYnOWE954qV2tvy5/aaNrmgPTb52cSCHFE+Z7Z0yg==", "integrity": "sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==",
"cpu": [ "cpu": [
"ppc64" "ppc64"
], ],
@ -253,9 +253,9 @@
} }
}, },
"node_modules/@esbuild/linux-riscv64": { "node_modules/@esbuild/linux-riscv64": {
"version": "0.18.14", "version": "0.18.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.14.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.17.tgz",
"integrity": "sha512-8C6vWbfr0ygbAiMFLS6OPz0BHvApkT2gCboOGV76YrYw+sD/MQJzyITNsjZWDXJwPu9tjrFQOVG7zijRzBCnLw==", "integrity": "sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==",
"cpu": [ "cpu": [
"riscv64" "riscv64"
], ],
@ -269,9 +269,9 @@
} }
}, },
"node_modules/@esbuild/linux-s390x": { "node_modules/@esbuild/linux-s390x": {
"version": "0.18.14", "version": "0.18.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.14.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.17.tgz",
"integrity": "sha512-G/Lf9iu8sRMM60OVGOh94ZW2nIStksEcITkXdkD09/T6QFD/o+g0+9WVyR/jajIb3A0LvBJ670tBnGe1GgXMgw==", "integrity": "sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==",
"cpu": [ "cpu": [
"s390x" "s390x"
], ],
@ -285,9 +285,9 @@
} }
}, },
"node_modules/@esbuild/linux-x64": { "node_modules/@esbuild/linux-x64": {
"version": "0.18.14", "version": "0.18.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.14.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.17.tgz",
"integrity": "sha512-TBgStYBQaa3EGhgqIDM+ECnkreb0wkcKqL7H6m+XPcGUoU4dO7dqewfbm0mWEQYH3kzFHrzjOFNpSAVzDZRSJw==", "integrity": "sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -301,9 +301,9 @@
} }
}, },
"node_modules/@esbuild/netbsd-x64": { "node_modules/@esbuild/netbsd-x64": {
"version": "0.18.14", "version": "0.18.17",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.14.tgz", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.17.tgz",
"integrity": "sha512-stvCcjyCQR2lMTroqNhAbvROqRjxPEq0oQ380YdXxA81TaRJEucH/PzJ/qsEtsHgXlWFW6Ryr/X15vxQiyRXVg==", "integrity": "sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -317,9 +317,9 @@
} }
}, },
"node_modules/@esbuild/openbsd-x64": { "node_modules/@esbuild/openbsd-x64": {
"version": "0.18.14", "version": "0.18.17",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.14.tgz", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.17.tgz",
"integrity": "sha512-apAOJF14CIsN5ht1PA57PboEMsNV70j3FUdxLmA2liZ20gEQnfTG5QU0FhENo5nwbTqCB2O3WDsXAihfODjHYw==", "integrity": "sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -333,9 +333,9 @@
} }
}, },
"node_modules/@esbuild/sunos-x64": { "node_modules/@esbuild/sunos-x64": {
"version": "0.18.14", "version": "0.18.17",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.14.tgz", "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.17.tgz",
"integrity": "sha512-fYRaaS8mDgZcGybPn2MQbn1ZNZx+UXFSUoS5Hd2oEnlsyUcr/l3c6RnXf1bLDRKKdLRSabTmyCy7VLQ7VhGdOQ==", "integrity": "sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -349,9 +349,9 @@
} }
}, },
"node_modules/@esbuild/win32-arm64": { "node_modules/@esbuild/win32-arm64": {
"version": "0.18.14", "version": "0.18.17",
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.14.tgz", "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.17.tgz",
"integrity": "sha512-1c44RcxKEJPrVj62XdmYhxXaU/V7auELCmnD+Ri+UCt+AGxTvzxl9uauQhrFso8gj6ZV1DaORV0sT9XSHOAk8Q==", "integrity": "sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -365,9 +365,9 @@
} }
}, },
"node_modules/@esbuild/win32-ia32": { "node_modules/@esbuild/win32-ia32": {
"version": "0.18.14", "version": "0.18.17",
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.14.tgz", "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.17.tgz",
"integrity": "sha512-EXAFttrdAxZkFQmpvcAQ2bywlWUsONp/9c2lcfvPUhu8vXBBenCXpoq9YkUvVP639ld3YGiYx0YUQ6/VQz3Maw==", "integrity": "sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==",
"cpu": [ "cpu": [
"ia32" "ia32"
], ],
@ -381,9 +381,9 @@
} }
}, },
"node_modules/@esbuild/win32-x64": { "node_modules/@esbuild/win32-x64": {
"version": "0.18.14", "version": "0.18.17",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.14.tgz", "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.17.tgz",
"integrity": "sha512-K0QjGbcskx+gY+qp3v4/940qg8JitpXbdxFhRDA1aYoNaPff88+aEwoq45aqJ+ogpxQxmU0ZTjgnrQD/w8iiUg==", "integrity": "sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -493,9 +493,9 @@
"integrity": "sha512-VtDvQpIJBvBatnONUsPzXYFVKQQAhuf3XTNOAsdBxCNO/QCtUUd8LSgjn0GVarBkCad6aJCZfXgrjYbl/KRr7w==" "integrity": "sha512-VtDvQpIJBvBatnONUsPzXYFVKQQAhuf3XTNOAsdBxCNO/QCtUUd8LSgjn0GVarBkCad6aJCZfXgrjYbl/KRr7w=="
}, },
"node_modules/esbuild": { "node_modules/esbuild": {
"version": "0.18.14", "version": "0.18.17",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.14.tgz", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.17.tgz",
"integrity": "sha512-uNPj5oHPYmj+ZhSQeYQVFZ+hAlJZbAGOmmILWIqrGvPVlNLbyOvU5Bu6Woi8G8nskcx0vwY0iFoMPrzT86Ko+w==", "integrity": "sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==",
"dev": true, "dev": true,
"hasInstallScript": true, "hasInstallScript": true,
"bin": { "bin": {
@ -505,28 +505,28 @@
"node": ">=12" "node": ">=12"
}, },
"optionalDependencies": { "optionalDependencies": {
"@esbuild/android-arm": "0.18.14", "@esbuild/android-arm": "0.18.17",
"@esbuild/android-arm64": "0.18.14", "@esbuild/android-arm64": "0.18.17",
"@esbuild/android-x64": "0.18.14", "@esbuild/android-x64": "0.18.17",
"@esbuild/darwin-arm64": "0.18.14", "@esbuild/darwin-arm64": "0.18.17",
"@esbuild/darwin-x64": "0.18.14", "@esbuild/darwin-x64": "0.18.17",
"@esbuild/freebsd-arm64": "0.18.14", "@esbuild/freebsd-arm64": "0.18.17",
"@esbuild/freebsd-x64": "0.18.14", "@esbuild/freebsd-x64": "0.18.17",
"@esbuild/linux-arm": "0.18.14", "@esbuild/linux-arm": "0.18.17",
"@esbuild/linux-arm64": "0.18.14", "@esbuild/linux-arm64": "0.18.17",
"@esbuild/linux-ia32": "0.18.14", "@esbuild/linux-ia32": "0.18.17",
"@esbuild/linux-loong64": "0.18.14", "@esbuild/linux-loong64": "0.18.17",
"@esbuild/linux-mips64el": "0.18.14", "@esbuild/linux-mips64el": "0.18.17",
"@esbuild/linux-ppc64": "0.18.14", "@esbuild/linux-ppc64": "0.18.17",
"@esbuild/linux-riscv64": "0.18.14", "@esbuild/linux-riscv64": "0.18.17",
"@esbuild/linux-s390x": "0.18.14", "@esbuild/linux-s390x": "0.18.17",
"@esbuild/linux-x64": "0.18.14", "@esbuild/linux-x64": "0.18.17",
"@esbuild/netbsd-x64": "0.18.14", "@esbuild/netbsd-x64": "0.18.17",
"@esbuild/openbsd-x64": "0.18.14", "@esbuild/openbsd-x64": "0.18.17",
"@esbuild/sunos-x64": "0.18.14", "@esbuild/sunos-x64": "0.18.17",
"@esbuild/win32-arm64": "0.18.14", "@esbuild/win32-arm64": "0.18.17",
"@esbuild/win32-ia32": "0.18.14", "@esbuild/win32-ia32": "0.18.17",
"@esbuild/win32-x64": "0.18.14" "@esbuild/win32-x64": "0.18.17"
} }
}, },
"node_modules/fast-equals": { "node_modules/fast-equals": {

View file

@ -70,7 +70,10 @@ defmodule Chiya.Tags.TagUpdater do
end end
defp add_tags(note, tags) do defp add_tags(note, tags) do
Enum.each(tags, &add_tag(note, &1)) tags
|> Enum.uniq()
|> Enum.each(&add_tag(note, &1))
note note
end end
@ -102,7 +105,10 @@ defmodule Chiya.Tags.TagUpdater do
end end
defp remove_tags(note, tags) do defp remove_tags(note, tags) do
Enum.each(tags, &remove_tag(note, &1)) tags
|> Enum.uniq()
|> Enum.each(&remove_tag(note, &1))
note note
end end

View file

@ -76,13 +76,13 @@ defmodule ChiyaWeb.PublicComponents do
<span class="inline-flex flex-row gap-1"> <span class="inline-flex flex-row gap-1">
<%= for tag <- @note.tags do %> <%= for tag <- @note.tags do %>
<%= if assigns.linked do %> <%= if assigns.linked do %>
<a class={["p-category", @class_tag]} href={~p"/tagged-with/#{tag.slug}"}> <a class={["p-category", @class_tag]} href={~p"/tagged-with/#{tag.slug}"}>
<%= tag.name %> <%= tag.name %>
</a> </a>
<% else %> <% else %>
<span class={["p-category", @class_tag]}> <span class={["p-category", @class_tag]}>
<%= tag.name %> <%= tag.name %>
</span> </span>
<% end %> <% end %>
<.dot class="text-theme-base/50 last:hidden" /> <.dot class="text-theme-base/50 last:hidden" />
<% end %> <% end %>
@ -162,9 +162,9 @@ defmodule ChiyaWeb.PublicComponents do
<% end %> <% end %>
<%= if not Enum.empty?(note.tags) do %> <%= if not Enum.empty?(note.tags) do %>
<span class="inline-block"> <span class="inline-block">
<.tags note={note} linked={false} /> <.tags note={note} linked={false} />
</span> </span>
<% end %> <% end %>
</a> </a>
<% end %> <% end %>

View file

@ -11,8 +11,8 @@ defmodule ChiyaWeb.NoteController do
conn conn
|> with_channels() |> with_channels()
|> render(:index, |> render(:index,
notes: notes, notes: notes,
page_title: "Notes" page_title: "Notes"
) )
end end
@ -22,8 +22,8 @@ defmodule ChiyaWeb.NoteController do
conn conn
|> with_channels() |> with_channels()
|> render(:index, |> render(:index,
notes: notes, notes: notes,
page_title: "Notes" page_title: "Notes"
) )
end end

View file

@ -12,16 +12,22 @@
<section> <section>
<ul> <ul>
<%= for {letter, tag_group} <- @tags do %> <%= for {letter, tag_group} <- @tags do %>
<li class="mb-2"> <li class="mb-2">
<span class="capitalize text-theme-primary border border-theme-background1 rounded font-sm px-2 py-1 inline-block mb-2"><%= letter %></span> <span class="capitalize text-theme-primary border border-theme-background1 rounded font-sm px-2 py-1 inline-block mb-2">
<%= letter %>
<%= for tag <- tag_group do %> </span>
<a href={~p"/tagged-with/#{tag.slug}"} class="border border-theme-background1 rounded font-sm px-2 py-1 inline-block mb-2 hover:bg-theme-background1 transition"><%= tag.name %></a>
<% end %> <%= for tag <- tag_group do %>
<a
</li> href={~p"/tagged-with/#{tag.slug}"}
<% end %> class="border border-theme-background1 rounded font-sm px-2 py-1 inline-block mb-2 hover:bg-theme-background1 transition"
>
<%= tag.name %>
</a>
<% end %>
</li>
<% end %>
</ul> </ul>
</section> </section>
</section> </section>

View file

@ -6,9 +6,8 @@ defmodule ChiyaWeb.Indie.Micropub do
def create_note(type, properties) do def create_note(type, properties) do
settings = Chiya.Site.get_settings() settings = Chiya.Site.get_settings()
channel_id = settings.micropub_channel_id
with {:ok, note_attrs} <- get_create_attrs(type, properties, channel_id), with {:ok, note_attrs} <- get_create_attrs(type, properties, settings),
{:ok, note} <- Chiya.Notes.create_note(note_attrs) do {:ok, note} <- Chiya.Notes.create_note(note_attrs) do
create_photos(note, properties) create_photos(note, properties)
@ -79,18 +78,13 @@ defmodule ChiyaWeb.Indie.Micropub do
) )
end end
defp get_create_attrs(type, properties, channel_id) do defp get_create_attrs(type, properties, settings) do
{:ok, post_type} = Props.get_post_type(properties) {:ok, post_type} = Props.get_post_type(properties)
Logger.info("Creating a #{type}/#{post_type}..") Logger.info("Creating a #{type}/#{post_type}..")
channel =
if channel_id,
do: Chiya.Channels.get_channel(channel_id),
else: nil
case post_type do case post_type do
:note -> get_note_attrs(properties, channel) :note -> get_note_attrs(properties, settings.micropub_channel_id)
:bookmark -> get_bookmark_attrs(properties, channel) :bookmark -> get_bookmark_attrs(properties, settings.bookmark_channel_id)
_ -> {:error, :insufficient_scope} _ -> {:error, :insufficient_scope}
end end
end end
@ -163,22 +157,22 @@ defmodule ChiyaWeb.Indie.Micropub do
end end
end end
defp get_note_attrs(properties, channel) do defp get_note_attrs(properties, channel_id) do
attrs = attrs =
properties properties
|> get_base_attrs() |> get_base_attrs()
|> get_channel(channel) |> get_channel(channel_id)
{:ok, attrs} {:ok, attrs}
end end
defp get_bookmark_attrs(properties, channel) do defp get_bookmark_attrs(properties, channel_id) do
url = Props.get_bookmarked_url(properties) url = Props.get_bookmarked_url(properties)
attrs = attrs =
properties properties
|> get_base_attrs() |> get_base_attrs()
|> get_channel(channel) |> get_channel(channel_id)
|> Map.put_new(:url, url) |> Map.put_new(:url, url)
|> Map.put_new(:kind, :bookmark) |> Map.put_new(:kind, :bookmark)
@ -205,9 +199,9 @@ defmodule ChiyaWeb.Indie.Micropub do
attrs attrs
end end
def get_channel(attrs, channel) do def get_channel(attrs, channel_id) do
if channel, if channel_id,
do: Map.put(attrs, :channels, [channel]), do: Map.put(attrs, :channels, [Chiya.Channels.get_channel(channel_id)]),
else: attrs else: attrs
end end

View file

@ -6,4 +6,4 @@ defmodule Chiya.Repo.Migrations.AddBookmarkChannelSetting do
add :bookmark_channel_id, references(:channels, on_delete: :nothing) add :bookmark_channel_id, references(:channels, on_delete: :nothing)
end end
end end
end end

View file

@ -53,5 +53,14 @@ defmodule Chiya.TagUpdaterTest do
tag = List.first(note.tags) tag = List.first(note.tags)
assert tag.name == "foo" assert tag.name == "foo"
end end
test "with the same tag twice only adds unique tags" do
note = note_fixture()
assert note.tags == []
TagUpdater.update_tags(note, "foo,foo")
note = Chiya.Notes.get_note_preloaded!(note.id)
assert Enum.count(note.tags) == 1
end
end end
end end