Wrapping up for the day. The new launcher is partially working. There is a lot of work to do.
This commit is contained in:
404
package-lock.json
generated
404
package-lock.json
generated
@@ -907,9 +907,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rollup/rollup-android-arm-eabi": {
|
||||
"version": "4.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.19.0.tgz",
|
||||
"integrity": "sha512-JlPfZ/C7yn5S5p0yKk7uhHTTnFlvTgLetl2VxqE518QgyM7C9bSfFTYvB/Q/ftkq0RIPY4ySxTz+/wKJ/dXC0w==",
|
||||
"version": "4.19.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.19.2.tgz",
|
||||
"integrity": "sha512-OHflWINKtoCFSpm/WmuQaWW4jeX+3Qt3XQDepkkiFTsoxFc5BpF3Z5aDxFZgBqRjO6ATP5+b1iilp4kGIZVWlA==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
@@ -921,9 +921,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-android-arm64": {
|
||||
"version": "4.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.19.0.tgz",
|
||||
"integrity": "sha512-RDxUSY8D1tWYfn00DDi5myxKgOk6RvWPxhmWexcICt/MEC6yEMr4HNCu1sXXYLw8iAsg0D44NuU+qNq7zVWCrw==",
|
||||
"version": "4.19.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.19.2.tgz",
|
||||
"integrity": "sha512-k0OC/b14rNzMLDOE6QMBCjDRm3fQOHAL8Ldc9bxEWvMo4Ty9RY6rWmGetNTWhPo+/+FNd1lsQYRd0/1OSix36A==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -935,9 +935,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-darwin-arm64": {
|
||||
"version": "4.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.19.0.tgz",
|
||||
"integrity": "sha512-emvKHL4B15x6nlNTBMtIaC9tLPRpeA5jMvRLXVbl/W9Ie7HhkrE7KQjvgS9uxgatL1HmHWDXk5TTS4IaNJxbAA==",
|
||||
"version": "4.19.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.19.2.tgz",
|
||||
"integrity": "sha512-IIARRgWCNWMTeQH+kr/gFTHJccKzwEaI0YSvtqkEBPj7AshElFq89TyreKNFAGh5frLfDCbodnq+Ye3dqGKPBw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -949,9 +949,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-darwin-x64": {
|
||||
"version": "4.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.19.0.tgz",
|
||||
"integrity": "sha512-fO28cWA1dC57qCd+D0rfLC4VPbh6EOJXrreBmFLWPGI9dpMlER2YwSPZzSGfq11XgcEpPukPTfEVFtw2q2nYJg==",
|
||||
"version": "4.19.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.19.2.tgz",
|
||||
"integrity": "sha512-52udDMFDv54BTAdnw+KXNF45QCvcJOcYGl3vQkp4vARyrcdI/cXH8VXTEv/8QWfd6Fru8QQuw1b2uNersXOL0g==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -963,9 +963,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
|
||||
"version": "4.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.19.0.tgz",
|
||||
"integrity": "sha512-2Rn36Ubxdv32NUcfm0wB1tgKqkQuft00PtM23VqLuCUR4N5jcNWDoV5iBC9jeGdgS38WK66ElncprqgMUOyomw==",
|
||||
"version": "4.19.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.19.2.tgz",
|
||||
"integrity": "sha512-r+SI2t8srMPYZeoa1w0o/AfoVt9akI1ihgazGYPQGRilVAkuzMGiTtexNZkrPkQsyFrvqq/ni8f3zOnHw4hUbA==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
@@ -977,9 +977,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
|
||||
"version": "4.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.19.0.tgz",
|
||||
"integrity": "sha512-gJuzIVdq/X1ZA2bHeCGCISe0VWqCoNT8BvkQ+BfsixXwTOndhtLUpOg0A1Fcx/+eA6ei6rMBzlOz4JzmiDw7JQ==",
|
||||
"version": "4.19.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.19.2.tgz",
|
||||
"integrity": "sha512-+tYiL4QVjtI3KliKBGtUU7yhw0GMcJJuB9mLTCEauHEsqfk49gtUBXGtGP3h1LW8MbaTY6rSFIQV1XOBps1gBA==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
@@ -991,9 +991,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm64-gnu": {
|
||||
"version": "4.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.19.0.tgz",
|
||||
"integrity": "sha512-0EkX2HYPkSADo9cfeGFoQ7R0/wTKb7q6DdwI4Yn/ULFE1wuRRCHybxpl2goQrx4c/yzK3I8OlgtBu4xvted0ug==",
|
||||
"version": "4.19.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.19.2.tgz",
|
||||
"integrity": "sha512-OR5DcvZiYN75mXDNQQxlQPTv4D+uNCUsmSCSY2FolLf9W5I4DSoJyg7z9Ea3TjKfhPSGgMJiey1aWvlWuBzMtg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -1005,9 +1005,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm64-musl": {
|
||||
"version": "4.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.19.0.tgz",
|
||||
"integrity": "sha512-GlIQRj9px52ISomIOEUq/IojLZqzkvRpdP3cLgIE1wUWaiU5Takwlzpz002q0Nxxr1y2ZgxC2obWxjr13lvxNQ==",
|
||||
"version": "4.19.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.19.2.tgz",
|
||||
"integrity": "sha512-Hw3jSfWdUSauEYFBSFIte6I8m6jOj+3vifLg8EU3lreWulAUpch4JBjDMtlKosrBzkr0kwKgL9iCfjA8L3geoA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -1019,9 +1019,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
|
||||
"version": "4.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.19.0.tgz",
|
||||
"integrity": "sha512-N6cFJzssruDLUOKfEKeovCKiHcdwVYOT1Hs6dovDQ61+Y9n3Ek4zXvtghPPelt6U0AH4aDGnDLb83uiJMkWYzQ==",
|
||||
"version": "4.19.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.19.2.tgz",
|
||||
"integrity": "sha512-rhjvoPBhBwVnJRq/+hi2Q3EMiVF538/o9dBuj9TVLclo9DuONqt5xfWSaE6MYiFKpo/lFPJ/iSI72rYWw5Hc7w==",
|
||||
"cpu": [
|
||||
"ppc64"
|
||||
],
|
||||
@@ -1033,9 +1033,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
|
||||
"version": "4.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.19.0.tgz",
|
||||
"integrity": "sha512-2DnD3mkS2uuam/alF+I7M84koGwvn3ZVD7uG+LEWpyzo/bq8+kKnus2EVCkcvh6PlNB8QPNFOz6fWd5N8o1CYg==",
|
||||
"version": "4.19.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.19.2.tgz",
|
||||
"integrity": "sha512-EAz6vjPwHHs2qOCnpQkw4xs14XJq84I81sDRGPEjKPFVPBw7fwvtwhVjcZR6SLydCv8zNK8YGFblKWd/vRmP8g==",
|
||||
"cpu": [
|
||||
"riscv64"
|
||||
],
|
||||
@@ -1047,9 +1047,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-s390x-gnu": {
|
||||
"version": "4.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.19.0.tgz",
|
||||
"integrity": "sha512-D6pkaF7OpE7lzlTOFCB2m3Ngzu2ykw40Nka9WmKGUOTS3xcIieHe82slQlNq69sVB04ch73thKYIWz/Ian8DUA==",
|
||||
"version": "4.19.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.19.2.tgz",
|
||||
"integrity": "sha512-IJSUX1xb8k/zN9j2I7B5Re6B0NNJDJ1+soezjNojhT8DEVeDNptq2jgycCOpRhyGj0+xBn7Cq+PK7Q+nd2hxLA==",
|
||||
"cpu": [
|
||||
"s390x"
|
||||
],
|
||||
@@ -1061,9 +1061,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-x64-gnu": {
|
||||
"version": "4.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.19.0.tgz",
|
||||
"integrity": "sha512-HBndjQLP8OsdJNSxpNIN0einbDmRFg9+UQeZV1eiYupIRuZsDEoeGU43NQsS34Pp166DtwQOnpcbV/zQxM+rWA==",
|
||||
"version": "4.19.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.19.2.tgz",
|
||||
"integrity": "sha512-OgaToJ8jSxTpgGkZSkwKE+JQGihdcaqnyHEFOSAU45utQ+yLruE1dkonB2SDI8t375wOKgNn8pQvaWY9kPzxDQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -1075,9 +1075,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-x64-musl": {
|
||||
"version": "4.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.19.0.tgz",
|
||||
"integrity": "sha512-HxfbvfCKJe/RMYJJn0a12eiOI9OOtAUF4G6ozrFUK95BNyoJaSiBjIOHjZskTUffUrB84IPKkFG9H9nEvJGW6A==",
|
||||
"version": "4.19.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.19.2.tgz",
|
||||
"integrity": "sha512-5V3mPpWkB066XZZBgSd1lwozBk7tmOkKtquyCJ6T4LN3mzKENXyBwWNQn8d0Ci81hvlBw5RoFgleVpL6aScLYg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -1089,9 +1089,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-win32-arm64-msvc": {
|
||||
"version": "4.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.19.0.tgz",
|
||||
"integrity": "sha512-HxDMKIhmcguGTiP5TsLNolwBUK3nGGUEoV/BO9ldUBoMLBssvh4J0X8pf11i1fTV7WShWItB1bKAKjX4RQeYmg==",
|
||||
"version": "4.19.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.19.2.tgz",
|
||||
"integrity": "sha512-ayVstadfLeeXI9zUPiKRVT8qF55hm7hKa+0N1V6Vj+OTNFfKSoUxyZvzVvgtBxqSb5URQ8sK6fhwxr9/MLmxdA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -1103,9 +1103,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-win32-ia32-msvc": {
|
||||
"version": "4.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.19.0.tgz",
|
||||
"integrity": "sha512-xItlIAZZaiG/u0wooGzRsx11rokP4qyc/79LkAOdznGRAbOFc+SfEdfUOszG1odsHNgwippUJavag/+W/Etc6Q==",
|
||||
"version": "4.19.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.19.2.tgz",
|
||||
"integrity": "sha512-Mda7iG4fOLHNsPqjWSjANvNZYoW034yxgrndof0DwCy0D3FvTjeNo+HGE6oGWgvcLZNLlcp0hLEFcRs+UGsMLg==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
@@ -1117,9 +1117,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-win32-x64-msvc": {
|
||||
"version": "4.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.19.0.tgz",
|
||||
"integrity": "sha512-xNo5fV5ycvCCKqiZcpB65VMR11NJB+StnxHz20jdqRAktfdfzhgjTiJ2doTDQE/7dqGaV5I7ZGqKpgph6lCIag==",
|
||||
"version": "4.19.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.19.2.tgz",
|
||||
"integrity": "sha512-DPi0ubYhSow/00YqmG1jWm3qt1F8aXziHc/UNy8bo9cpCacqhuWu+iSq/fp2SyEQK7iYTZ60fBU9cat3MXTjIQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -1193,9 +1193,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@sveltejs/kit": {
|
||||
"version": "2.5.18",
|
||||
"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.5.18.tgz",
|
||||
"integrity": "sha512-+g06hvpVAnH7b4CDjhnTDgFWBKBiQJpuSmQeGYOuzbO3SC3tdYjRNlDCrafvDtKbGiT2uxY5Dn9qdEUGVZdWOQ==",
|
||||
"version": "2.5.20",
|
||||
"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.5.20.tgz",
|
||||
"integrity": "sha512-47rJ5BoYwURE/Rp7FNMLp3NzdbWC9DQ/PmKd0mebxT2D/PrPxZxcLImcD3zsWdX2iS6oJk8ITJbO/N2lWnnUqA==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
@@ -1328,9 +1328,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "20.14.12",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.12.tgz",
|
||||
"integrity": "sha512-r7wNXakLeSsGT0H1AU863vS2wa5wBOK4bWMjZz2wj+8nBx+m5PeIn0k8AloSLpRuiwdRQZwarZqHE4FNArPuJQ==",
|
||||
"version": "20.14.14",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.14.tgz",
|
||||
"integrity": "sha512-d64f00982fS9YoOgJkAMolK7MN8Iq3TDdVjchbYHdEmjth/DHowx82GnoA+tVUAN+7vxfYUgAzi+JXbKNd2SDQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -1352,17 +1352,17 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@typescript-eslint/eslint-plugin": {
|
||||
"version": "7.17.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.17.0.tgz",
|
||||
"integrity": "sha512-pyiDhEuLM3PuANxH7uNYan1AaFs5XE0zw1hq69JBvGvE7gSuEoQl1ydtEe/XQeoC3GQxLXyOVa5kNOATgM638A==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz",
|
||||
"integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@eslint-community/regexpp": "^4.10.0",
|
||||
"@typescript-eslint/scope-manager": "7.17.0",
|
||||
"@typescript-eslint/type-utils": "7.17.0",
|
||||
"@typescript-eslint/utils": "7.17.0",
|
||||
"@typescript-eslint/visitor-keys": "7.17.0",
|
||||
"@typescript-eslint/scope-manager": "7.18.0",
|
||||
"@typescript-eslint/type-utils": "7.18.0",
|
||||
"@typescript-eslint/utils": "7.18.0",
|
||||
"@typescript-eslint/visitor-keys": "7.18.0",
|
||||
"graphemer": "^1.4.0",
|
||||
"ignore": "^5.3.1",
|
||||
"natural-compare": "^1.4.0",
|
||||
@@ -1386,16 +1386,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/parser": {
|
||||
"version": "7.17.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.17.0.tgz",
|
||||
"integrity": "sha512-puiYfGeg5Ydop8eusb/Hy1k7QmOU6X3nvsqCgzrB2K4qMavK//21+PzNE8qeECgNOIoertJPUC1SpegHDI515A==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz",
|
||||
"integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==",
|
||||
"dev": true,
|
||||
"license": "BSD-2-Clause",
|
||||
"dependencies": {
|
||||
"@typescript-eslint/scope-manager": "7.17.0",
|
||||
"@typescript-eslint/types": "7.17.0",
|
||||
"@typescript-eslint/typescript-estree": "7.17.0",
|
||||
"@typescript-eslint/visitor-keys": "7.17.0",
|
||||
"@typescript-eslint/scope-manager": "7.18.0",
|
||||
"@typescript-eslint/types": "7.18.0",
|
||||
"@typescript-eslint/typescript-estree": "7.18.0",
|
||||
"@typescript-eslint/visitor-keys": "7.18.0",
|
||||
"debug": "^4.3.4"
|
||||
},
|
||||
"engines": {
|
||||
@@ -1415,14 +1415,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/scope-manager": {
|
||||
"version": "7.17.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.17.0.tgz",
|
||||
"integrity": "sha512-0P2jTTqyxWp9HiKLu/Vemr2Rg1Xb5B7uHItdVZ6iAenXmPo4SZ86yOPCJwMqpCyaMiEHTNqizHfsbmCFT1x9SA==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz",
|
||||
"integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "7.17.0",
|
||||
"@typescript-eslint/visitor-keys": "7.17.0"
|
||||
"@typescript-eslint/types": "7.18.0",
|
||||
"@typescript-eslint/visitor-keys": "7.18.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.18.0 || >=20.0.0"
|
||||
@@ -1433,14 +1433,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/type-utils": {
|
||||
"version": "7.17.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.17.0.tgz",
|
||||
"integrity": "sha512-XD3aaBt+orgkM/7Cei0XNEm1vwUxQ958AOLALzPlbPqb8C1G8PZK85tND7Jpe69Wualri81PLU+Zc48GVKIMMA==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz",
|
||||
"integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@typescript-eslint/typescript-estree": "7.17.0",
|
||||
"@typescript-eslint/utils": "7.17.0",
|
||||
"@typescript-eslint/typescript-estree": "7.18.0",
|
||||
"@typescript-eslint/utils": "7.18.0",
|
||||
"debug": "^4.3.4",
|
||||
"ts-api-utils": "^1.3.0"
|
||||
},
|
||||
@@ -1461,9 +1461,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/types": {
|
||||
"version": "7.17.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.17.0.tgz",
|
||||
"integrity": "sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz",
|
||||
"integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -1475,14 +1475,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/typescript-estree": {
|
||||
"version": "7.17.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.17.0.tgz",
|
||||
"integrity": "sha512-72I3TGq93t2GoSBWI093wmKo0n6/b7O4j9o8U+f65TVD0FS6bI2180X5eGEr8MA8PhKMvYe9myZJquUT2JkCZw==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz",
|
||||
"integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==",
|
||||
"dev": true,
|
||||
"license": "BSD-2-Clause",
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "7.17.0",
|
||||
"@typescript-eslint/visitor-keys": "7.17.0",
|
||||
"@typescript-eslint/types": "7.18.0",
|
||||
"@typescript-eslint/visitor-keys": "7.18.0",
|
||||
"debug": "^4.3.4",
|
||||
"globby": "^11.1.0",
|
||||
"is-glob": "^4.0.3",
|
||||
@@ -1504,16 +1504,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/utils": {
|
||||
"version": "7.17.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.17.0.tgz",
|
||||
"integrity": "sha512-r+JFlm5NdB+JXc7aWWZ3fKSm1gn0pkswEwIYsrGPdsT2GjsRATAKXiNtp3vgAAO1xZhX8alIOEQnNMl3kbTgJw==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz",
|
||||
"integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@eslint-community/eslint-utils": "^4.4.0",
|
||||
"@typescript-eslint/scope-manager": "7.17.0",
|
||||
"@typescript-eslint/types": "7.17.0",
|
||||
"@typescript-eslint/typescript-estree": "7.17.0"
|
||||
"@typescript-eslint/scope-manager": "7.18.0",
|
||||
"@typescript-eslint/types": "7.18.0",
|
||||
"@typescript-eslint/typescript-estree": "7.18.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.18.0 || >=20.0.0"
|
||||
@@ -1527,13 +1527,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/visitor-keys": {
|
||||
"version": "7.17.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.17.0.tgz",
|
||||
"integrity": "sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz",
|
||||
"integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "7.17.0",
|
||||
"@typescript-eslint/types": "7.18.0",
|
||||
"eslint-visitor-keys": "^3.4.3"
|
||||
},
|
||||
"engines": {
|
||||
@@ -1552,14 +1552,14 @@
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/@vitest/expect": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.4.tgz",
|
||||
"integrity": "sha512-39jr5EguIoanChvBqe34I8m1hJFI4+jxvdOpD7gslZrVQBKhh8H9eD7J/LJX4zakrw23W+dITQTDqdt43xVcJw==",
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.5.tgz",
|
||||
"integrity": "sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vitest/spy": "2.0.4",
|
||||
"@vitest/utils": "2.0.4",
|
||||
"@vitest/spy": "2.0.5",
|
||||
"@vitest/utils": "2.0.5",
|
||||
"chai": "^5.1.1",
|
||||
"tinyrainbow": "^1.2.0"
|
||||
},
|
||||
@@ -1568,9 +1568,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vitest/pretty-format": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.4.tgz",
|
||||
"integrity": "sha512-RYZl31STbNGqf4l2eQM1nvKPXE0NhC6Eq0suTTePc4mtMQ1Fn8qZmjV4emZdEdG2NOWGKSCrHZjmTqDCDoeFBw==",
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.5.tgz",
|
||||
"integrity": "sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -1581,13 +1581,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vitest/runner": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.4.tgz",
|
||||
"integrity": "sha512-Gk+9Su/2H2zNfNdeJR124gZckd5st4YoSuhF1Rebi37qTXKnqYyFCd9KP4vl2cQHbtuVKjfEKrNJxHHCW8thbQ==",
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.5.tgz",
|
||||
"integrity": "sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vitest/utils": "2.0.4",
|
||||
"@vitest/utils": "2.0.5",
|
||||
"pathe": "^1.1.2"
|
||||
},
|
||||
"funding": {
|
||||
@@ -1595,13 +1595,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vitest/snapshot": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.4.tgz",
|
||||
"integrity": "sha512-or6Mzoz/pD7xTvuJMFYEtso1vJo1S5u6zBTinfl+7smGUhqybn6VjzCDMhmTyVOFWwkCMuNjmNNxnyXPgKDoPw==",
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.5.tgz",
|
||||
"integrity": "sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vitest/pretty-format": "2.0.4",
|
||||
"@vitest/pretty-format": "2.0.5",
|
||||
"magic-string": "^0.30.10",
|
||||
"pathe": "^1.1.2"
|
||||
},
|
||||
@@ -1610,9 +1610,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vitest/spy": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.4.tgz",
|
||||
"integrity": "sha512-uTXU56TNoYrTohb+6CseP8IqNwlNdtPwEO0AWl+5j7NelS6x0xZZtP0bDWaLvOfUbaYwhhWp1guzXUxkC7mW7Q==",
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.5.tgz",
|
||||
"integrity": "sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -1623,13 +1623,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vitest/utils": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.4.tgz",
|
||||
"integrity": "sha512-Zc75QuuoJhOBnlo99ZVUkJIuq4Oj0zAkrQ2VzCqNCx6wAwViHEh5Fnp4fiJTE9rA+sAoXRf00Z9xGgfEzV6fzQ==",
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.5.tgz",
|
||||
"integrity": "sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vitest/pretty-format": "2.0.4",
|
||||
"@vitest/pretty-format": "2.0.5",
|
||||
"estree-walker": "^3.0.3",
|
||||
"loupe": "^3.1.1",
|
||||
"tinyrainbow": "^1.2.0"
|
||||
@@ -1824,9 +1824,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/axios": {
|
||||
"version": "1.7.2",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz",
|
||||
"integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==",
|
||||
"version": "1.7.3",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.7.3.tgz",
|
||||
"integrity": "sha512-Ar7ND9pU99eJ9GpoGQKhKf58GpUOgnzuaB7ueNQ5BMi0p+LZ5oaEnfF999fAArcTIBwXTCHAmGcHOZJaWPq9Nw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"follow-redirects": "^1.15.6",
|
||||
@@ -1888,9 +1888,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/browserslist": {
|
||||
"version": "4.23.2",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz",
|
||||
"integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==",
|
||||
"version": "4.23.3",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz",
|
||||
"integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
@@ -1908,9 +1908,9 @@
|
||||
],
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"caniuse-lite": "^1.0.30001640",
|
||||
"electron-to-chromium": "^1.4.820",
|
||||
"node-releases": "^2.0.14",
|
||||
"caniuse-lite": "^1.0.30001646",
|
||||
"electron-to-chromium": "^1.5.4",
|
||||
"node-releases": "^2.0.18",
|
||||
"update-browserslist-db": "^1.1.0"
|
||||
},
|
||||
"bin": {
|
||||
@@ -1974,9 +1974,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/caniuse-lite": {
|
||||
"version": "1.0.30001643",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz",
|
||||
"integrity": "sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==",
|
||||
"version": "1.0.30001646",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001646.tgz",
|
||||
"integrity": "sha512-dRg00gudiBDDTmUhClSdv3hqRfpbOnU28IpI1T6PBTLWa+kOj0681C8uML3PifYfREuBrVjDGhL3adYpBT6spw==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
@@ -2215,9 +2215,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/debug": {
|
||||
"version": "4.3.5",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
|
||||
"integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
|
||||
"version": "4.3.6",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
|
||||
"integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -2385,9 +2385,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/electron-to-chromium": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.0.tgz",
|
||||
"integrity": "sha512-Vb3xHHYnLseK8vlMJQKJYXJ++t4u1/qJ3vykuVrVjvdiOEhYyT1AuP4x03G8EnPmYvYOhe9T+dADTmthjRQMkA==",
|
||||
"version": "1.5.4",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.4.tgz",
|
||||
"integrity": "sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==",
|
||||
"dev": true,
|
||||
"license": "ISC"
|
||||
},
|
||||
@@ -3556,13 +3556,13 @@
|
||||
"license": "ISC"
|
||||
},
|
||||
"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==",
|
||||
"version": "0.30.11",
|
||||
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz",
|
||||
"integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jridgewell/sourcemap-codec": "^1.4.15"
|
||||
"@jridgewell/sourcemap-codec": "^1.5.0"
|
||||
}
|
||||
},
|
||||
"node_modules/mdn-data": {
|
||||
@@ -4178,9 +4178,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss": {
|
||||
"version": "8.4.39",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz",
|
||||
"integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==",
|
||||
"version": "8.4.40",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.40.tgz",
|
||||
"integrity": "sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
@@ -4616,9 +4616,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rollup": {
|
||||
"version": "4.19.0",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.19.0.tgz",
|
||||
"integrity": "sha512-5r7EYSQIowHsK4eTZ0Y81qpZuJz+MUuYeqmmYmRMl1nwhdmbiYqt5jwzf6u7wyOzJgYqtCRMtVRKOtHANBz7rA==",
|
||||
"version": "4.19.2",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.19.2.tgz",
|
||||
"integrity": "sha512-6/jgnN1svF9PjNYJ4ya3l+cqutg49vOZ4rVgsDKxdl+5gpGPnByFXWGyfH9YGx9i3nfBwSu1Iyu6vGwFFA0BdQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -4632,22 +4632,22 @@
|
||||
"npm": ">=8.0.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@rollup/rollup-android-arm-eabi": "4.19.0",
|
||||
"@rollup/rollup-android-arm64": "4.19.0",
|
||||
"@rollup/rollup-darwin-arm64": "4.19.0",
|
||||
"@rollup/rollup-darwin-x64": "4.19.0",
|
||||
"@rollup/rollup-linux-arm-gnueabihf": "4.19.0",
|
||||
"@rollup/rollup-linux-arm-musleabihf": "4.19.0",
|
||||
"@rollup/rollup-linux-arm64-gnu": "4.19.0",
|
||||
"@rollup/rollup-linux-arm64-musl": "4.19.0",
|
||||
"@rollup/rollup-linux-powerpc64le-gnu": "4.19.0",
|
||||
"@rollup/rollup-linux-riscv64-gnu": "4.19.0",
|
||||
"@rollup/rollup-linux-s390x-gnu": "4.19.0",
|
||||
"@rollup/rollup-linux-x64-gnu": "4.19.0",
|
||||
"@rollup/rollup-linux-x64-musl": "4.19.0",
|
||||
"@rollup/rollup-win32-arm64-msvc": "4.19.0",
|
||||
"@rollup/rollup-win32-ia32-msvc": "4.19.0",
|
||||
"@rollup/rollup-win32-x64-msvc": "4.19.0",
|
||||
"@rollup/rollup-android-arm-eabi": "4.19.2",
|
||||
"@rollup/rollup-android-arm64": "4.19.2",
|
||||
"@rollup/rollup-darwin-arm64": "4.19.2",
|
||||
"@rollup/rollup-darwin-x64": "4.19.2",
|
||||
"@rollup/rollup-linux-arm-gnueabihf": "4.19.2",
|
||||
"@rollup/rollup-linux-arm-musleabihf": "4.19.2",
|
||||
"@rollup/rollup-linux-arm64-gnu": "4.19.2",
|
||||
"@rollup/rollup-linux-arm64-musl": "4.19.2",
|
||||
"@rollup/rollup-linux-powerpc64le-gnu": "4.19.2",
|
||||
"@rollup/rollup-linux-riscv64-gnu": "4.19.2",
|
||||
"@rollup/rollup-linux-s390x-gnu": "4.19.2",
|
||||
"@rollup/rollup-linux-x64-gnu": "4.19.2",
|
||||
"@rollup/rollup-linux-x64-musl": "4.19.2",
|
||||
"@rollup/rollup-win32-arm64-msvc": "4.19.2",
|
||||
"@rollup/rollup-win32-ia32-msvc": "4.19.2",
|
||||
"@rollup/rollup-win32-x64-msvc": "4.19.2",
|
||||
"fsevents": "~2.3.2"
|
||||
}
|
||||
},
|
||||
@@ -4775,9 +4775,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/set-cookie-parser": {
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz",
|
||||
"integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==",
|
||||
"version": "2.7.0",
|
||||
"resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.0.tgz",
|
||||
"integrity": "sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
@@ -5101,9 +5101,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/svelte-check": {
|
||||
"version": "3.8.4",
|
||||
"resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.8.4.tgz",
|
||||
"integrity": "sha512-61aHMkdinWyH8BkkTX9jPLYxYzaAAz/FK/VQqdr2FiCQQ/q04WCwDlpGbHff1GdrMYTmW8chlTFvRWL9k0A8vg==",
|
||||
"version": "3.8.5",
|
||||
"resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.8.5.tgz",
|
||||
"integrity": "sha512-3OGGgr9+bJ/+1nbPgsvulkLC48xBsqsgtc8Wam281H4G9F5v3mYGa2bHRsPuwHC5brKl4AxJH95QF73kmfihGQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -5256,9 +5256,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/svelte2tsx": {
|
||||
"version": "0.7.13",
|
||||
"resolved": "https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.7.13.tgz",
|
||||
"integrity": "sha512-aObZ93/kGAiLXA/I/kP+x9FriZM+GboB/ReOIGmLNbVGEd2xC+aTCppm3mk1cc9I/z60VQf7b2QDxC3jOXu3yw==",
|
||||
"version": "0.7.15",
|
||||
"resolved": "https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.7.15.tgz",
|
||||
"integrity": "sha512-91RbLJI448FR1UEZqXSS3ucVMERuWo8ACOhxfkBPK1CL2ocGMOC5bwc8tzFvb/Ji8NqZ7wmSGfvRebcUsiauKA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -5271,9 +5271,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/tailwindcss": {
|
||||
"version": "3.4.6",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.6.tgz",
|
||||
"integrity": "sha512-1uRHzPB+Vzu57ocybfZ4jh5Q3SdlH7XW23J5sQoM9LhE9eIOlzxer/3XPSsycvih3rboRsvt0QCmzSrqyOYUIA==",
|
||||
"version": "3.4.7",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.7.tgz",
|
||||
"integrity": "sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -5372,9 +5372,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/tailwindcss/node_modules/yaml": {
|
||||
"version": "2.4.5",
|
||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz",
|
||||
"integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==",
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz",
|
||||
"integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"bin": {
|
||||
@@ -5426,9 +5426,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/tinybench": {
|
||||
"version": "2.8.0",
|
||||
"resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.8.0.tgz",
|
||||
"integrity": "sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==",
|
||||
"version": "2.9.0",
|
||||
"resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
|
||||
"integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
@@ -5553,9 +5553,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/typescript-svelte-plugin": {
|
||||
"version": "0.3.39",
|
||||
"resolved": "https://registry.npmjs.org/typescript-svelte-plugin/-/typescript-svelte-plugin-0.3.39.tgz",
|
||||
"integrity": "sha512-7c6AAhoIIIGYmERtgeBfL40/nzG4ciPqbYXweRg+AvS8tG8q7kENLmaHK6BCnwmxATxxCTio02JTQZyZMP1XVg==",
|
||||
"version": "0.3.40",
|
||||
"resolved": "https://registry.npmjs.org/typescript-svelte-plugin/-/typescript-svelte-plugin-0.3.40.tgz",
|
||||
"integrity": "sha512-/5k/DktoxpiUp4QDRVODCYenb91sD+z4Qt4nHk2ycCAk6dUaBvlqfOdd8TRXWb+xUBWov12HsgfV68tLeI2V7g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -5619,9 +5619,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/vite": {
|
||||
"version": "5.3.4",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-5.3.4.tgz",
|
||||
"integrity": "sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==",
|
||||
"version": "5.3.5",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-5.3.5.tgz",
|
||||
"integrity": "sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -5675,9 +5675,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/vite-node": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.4.tgz",
|
||||
"integrity": "sha512-ZpJVkxcakYtig5iakNeL7N3trufe3M6vGuzYAr4GsbCTwobDeyPJpE4cjDhhPluv8OvQCFzu2LWp6GkoKRITXA==",
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.5.tgz",
|
||||
"integrity": "sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -5759,19 +5759,19 @@
|
||||
}
|
||||
},
|
||||
"node_modules/vitest": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.4.tgz",
|
||||
"integrity": "sha512-luNLDpfsnxw5QSW4bISPe6tkxVvv5wn2BBs/PuDRkhXZ319doZyLOBr1sjfB5yCEpTiU7xCAdViM8TNVGPwoog==",
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.5.tgz",
|
||||
"integrity": "sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@ampproject/remapping": "^2.3.0",
|
||||
"@vitest/expect": "2.0.4",
|
||||
"@vitest/pretty-format": "^2.0.4",
|
||||
"@vitest/runner": "2.0.4",
|
||||
"@vitest/snapshot": "2.0.4",
|
||||
"@vitest/spy": "2.0.4",
|
||||
"@vitest/utils": "2.0.4",
|
||||
"@vitest/expect": "2.0.5",
|
||||
"@vitest/pretty-format": "^2.0.5",
|
||||
"@vitest/runner": "2.0.5",
|
||||
"@vitest/snapshot": "2.0.5",
|
||||
"@vitest/spy": "2.0.5",
|
||||
"@vitest/utils": "2.0.5",
|
||||
"chai": "^5.1.1",
|
||||
"debug": "^4.3.5",
|
||||
"execa": "^8.0.1",
|
||||
@@ -5782,7 +5782,7 @@
|
||||
"tinypool": "^1.0.0",
|
||||
"tinyrainbow": "^1.2.0",
|
||||
"vite": "^5.0.0",
|
||||
"vite-node": "2.0.4",
|
||||
"vite-node": "2.0.5",
|
||||
"why-is-node-running": "^2.3.0"
|
||||
},
|
||||
"bin": {
|
||||
@@ -5797,8 +5797,8 @@
|
||||
"peerDependencies": {
|
||||
"@edge-runtime/vm": "*",
|
||||
"@types/node": "^18.0.0 || >=20.0.0",
|
||||
"@vitest/browser": "2.0.4",
|
||||
"@vitest/ui": "2.0.4",
|
||||
"@vitest/browser": "2.0.5",
|
||||
"@vitest/ui": "2.0.5",
|
||||
"happy-dom": "*",
|
||||
"jsdom": "*"
|
||||
},
|
||||
|
||||
@@ -56,13 +56,15 @@ export async function handle_load_ae_obj_id__event_session(
|
||||
export async function handle_load_ae_obj_li__event_session(
|
||||
{
|
||||
api_cfg,
|
||||
event_id,
|
||||
for_obj_type,
|
||||
for_obj_id,
|
||||
params={},
|
||||
try_cache=true,
|
||||
log_lvl=0
|
||||
}: {
|
||||
api_cfg: any,
|
||||
event_id: string,
|
||||
for_obj_type: string,
|
||||
for_obj_id: string,
|
||||
params?: key_val,
|
||||
try_cache?: boolean,
|
||||
log_lvl?: number
|
||||
@@ -82,8 +84,8 @@ export async function handle_load_ae_obj_li__event_session(
|
||||
ae_promises.load__event_session_obj_li = await api.get_ae_obj_li_for_obj_id_crud({
|
||||
api_cfg: api_cfg,
|
||||
obj_type: 'event_session',
|
||||
for_obj_type: 'event',
|
||||
for_obj_id: event_id,
|
||||
for_obj_type: for_obj_type,
|
||||
for_obj_id: for_obj_id,
|
||||
use_alt_table: true, // NOTE: This will use the table_name_alt value instead of the table_name value in the API config.
|
||||
use_alt_base: false, // NOTE: This will use the base_name_alt value instead of the base_name value
|
||||
enabled: enabled,
|
||||
@@ -110,7 +112,7 @@ export async function handle_load_ae_obj_li__event_session(
|
||||
if (log_lvl) {
|
||||
console.log('ae_promises.load__event_session_obj_li:', ae_promises.load__event_session_obj_li);
|
||||
}
|
||||
return ae_promises.load__event_session;
|
||||
return ae_promises.load__event_session_obj_li;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ export let for_id: null|string = null;
|
||||
console.log(`ae_e_data_store ${ds_code} for_type=${for_type} for_id=${for_id} account_id=${$ae_loc.account_id}`);
|
||||
|
||||
// export let store: string = 'local';
|
||||
// export let display: string = 'block';
|
||||
export let display: string = 'block'; // Avoid; Use class list instead
|
||||
export let class_li: string = ''; // : string[] = [];
|
||||
export let try_cache: boolean = true;
|
||||
|
||||
|
||||
@@ -20,13 +20,17 @@ export async function load({ params, parent }) { // route
|
||||
if (!person_id) {
|
||||
console.log(`ae core person [person_id] +page.ts: The person_id was not found in the params!!!`);
|
||||
error(404, {
|
||||
message: 'Session not found'
|
||||
message: 'Person not found'
|
||||
});
|
||||
}
|
||||
|
||||
ae_acct.slct.person_id = person_id;
|
||||
|
||||
let load_person_obj = await core_func.handle_load_ae_obj_id__person({api_cfg: ae_acct.api, person_id: person_id, try_cache: false});
|
||||
let load_person_obj = await core_func.handle_load_ae_obj_id__person({
|
||||
api_cfg: ae_acct.api,
|
||||
person_id: person_id,
|
||||
try_cache: false
|
||||
});
|
||||
|
||||
ae_acct.slct.person_obj = load_person_obj;
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ $: if ($events_slct.exhibit_id) {
|
||||
// }
|
||||
// params['return_file'] = true;
|
||||
|
||||
// let event_exhibit_tracking_export_file_get_promise = await api.get_object({api_cfg: ae_api, endpoint: endpoint, params: params, return_blob: true, filename: filename, auto_download: auto_download, log_lvl: log_lvl});
|
||||
// let event_exhibit_tracking_export_file_get_promise = await api.get_object({api_cfg: $ae_api, endpoint: endpoint, params: params, return_blob: true, filename: filename, auto_download: auto_download, log_lvl: log_lvl});
|
||||
// // console.log(event_exhibit_tracking_export_file_get_promise);
|
||||
// return event_exhibit_tracking_export_file_get_promise;
|
||||
// }
|
||||
|
||||
25
src/routes/events_pres_mgmt/(launcher)/+layout.svelte
Normal file
25
src/routes/events_pres_mgmt/(launcher)/+layout.svelte
Normal file
@@ -0,0 +1,25 @@
|
||||
<script lang="ts">
|
||||
/** @type {import('./$types').LayoutData} */
|
||||
export let data: any;
|
||||
let log_lvl = 0;
|
||||
|
||||
// import { AppShell, AppBar, initializeStores } from '@skeletonlabs/skeleton';
|
||||
|
||||
// import { ae_loc, ae_sess, ae_api, slct, slct_trigger } from '$lib/ae_stores';
|
||||
// import { events_loc, events_slct } from '$lib/ae_events_stores';
|
||||
|
||||
import { onMount } from 'svelte';
|
||||
onMount(() => {
|
||||
console.log('Launcher: +layout.svelte');
|
||||
// Hide the AppShell shell header (id="shell-header") and footer
|
||||
document.getElementById('shell-header').classList.add('hidden');
|
||||
document.getElementById('shell-footer').classList.add('hidden');
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<slot />
|
||||
|
||||
|
||||
0
src/routes/events_pres_mgmt/(launcher)/+layout.ts
Normal file
0
src/routes/events_pres_mgmt/(launcher)/+layout.ts
Normal file
@@ -0,0 +1,64 @@
|
||||
/** @type {import('./$types').PageLoad} */
|
||||
import { error } from '@sveltejs/kit';
|
||||
console.log(`ae pres_mgmt launcher [slug] +page.ts: start`);
|
||||
|
||||
import { events_func } from '$lib/ae_events_functions';
|
||||
|
||||
export async function load({ params, parent }) { // route
|
||||
let log_lvl = 0;
|
||||
|
||||
let data = await parent();
|
||||
// console.log(`ae events_pres_mgmt event [slug] +page.ts data:`, data);
|
||||
data.log_lvl = log_lvl;
|
||||
|
||||
let account_id = data.account_id;
|
||||
let ae_acct = data[account_id];
|
||||
console.log(`ae_acct = `, ae_acct);
|
||||
|
||||
if (!account_id) {
|
||||
console.log(`ae pres_mgmt launcher [slug] +page.ts: The account_id was not found in the data!!!`);
|
||||
error(404, {
|
||||
message: 'Account ID not found'
|
||||
});
|
||||
}
|
||||
|
||||
let event_id = params.slug;
|
||||
if (!event_id) {
|
||||
console.log(`ae pres_mgmt launcher [slug] +layout.ts: The event_id was not found in the params.slug!!!`);
|
||||
error(404, {
|
||||
message: 'Event ID not found'
|
||||
});
|
||||
}
|
||||
|
||||
ae_acct.slct.event_id = event_id;
|
||||
|
||||
let load_event_obj = events_func.handle_load_ae_obj_id__event({api_cfg: ae_acct.api, event_id: event_id, try_cache: false});
|
||||
|
||||
ae_acct.slct.event_obj = await load_event_obj;
|
||||
|
||||
let load_event_session_obj_li = events_func.handle_load_ae_obj_li__event_session({
|
||||
api_cfg: ae_acct.api,
|
||||
for_obj_type: 'event',
|
||||
for_obj_id: event_id,
|
||||
params: {qry__enabled: 'enabled', qry__limit: 550},
|
||||
try_cache: false
|
||||
});
|
||||
console.log(`load_event_session_obj_li = `, load_event_session_obj_li);
|
||||
|
||||
ae_acct.slct.event_session_obj_li = load_event_session_obj_li;
|
||||
|
||||
let load_event_location_obj_li = events_func.handle_load_ae_obj_li__event_location({
|
||||
api_cfg: ae_acct.api,
|
||||
event_id: event_id,
|
||||
params: {qry__enabled: 'enabled', qry__limit: 550},
|
||||
try_cache: false
|
||||
});
|
||||
console.log(`load_event_location_obj_li = `, load_event_location_obj_li);
|
||||
|
||||
ae_acct.slct.event_location_obj_li = load_event_location_obj_li;
|
||||
|
||||
// WARNING: Precaution against shared data between sites and sessions.
|
||||
data[account_id] = ae_acct;
|
||||
|
||||
return data;
|
||||
}
|
||||
@@ -0,0 +1,213 @@
|
||||
<script lang="ts">
|
||||
/** @type {import('./$types').PageData} */
|
||||
export let data: any;
|
||||
|
||||
// Imports
|
||||
import { browser } from '$app/environment';
|
||||
import { onMount } from 'svelte';
|
||||
|
||||
import type { key_val } from '$lib/ae_stores';
|
||||
import { ae_util } from '$lib/ae_utils';
|
||||
import { api } from '$lib/api';
|
||||
import Element_ae_crud from '$lib/element_ae_crud.svelte';
|
||||
import Element_data_store from '$lib/element_data_store.svelte';
|
||||
|
||||
import { liveQuery } from "dexie";
|
||||
// import { core_func } from '$lib/ae_core_functions';
|
||||
// import { db_core } from "$lib/db_core";
|
||||
import { db_events } from "$lib/db_events";
|
||||
import { ae_snip, ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger } from '$lib/ae_stores';
|
||||
import { events_loc, events_sess, events_slct, events_trigger } from '$lib/ae_events_stores';
|
||||
import { events_func } from '$lib/ae_events_functions';
|
||||
|
||||
|
||||
import { kill_processes, open_local_file_v2, run_cmd, run_cmd_sync, run_osascript, get_device_info } from './electron.js';
|
||||
import Event_launcher_menu from './launcher_menu.svelte';
|
||||
import Event_launcher_session_view from './launcher_session_view.svelte';
|
||||
|
||||
|
||||
// Exports
|
||||
|
||||
|
||||
// Variables
|
||||
// Quickly save the data passed from the parent(s) to the Svelte stores, localStorage, and other.
|
||||
$slct.account_id = data.account_id;
|
||||
// console.log(`$slct.account_id = `, $slct.account_id);
|
||||
let ae_acct = data[$slct.account_id];
|
||||
// console.log(`ae_acct = `, ae_acct);
|
||||
|
||||
// $ae_loc.url_origin = data.url.origin;
|
||||
|
||||
$events_slct.event_id = ae_acct.slct.event_id;
|
||||
$events_slct.event_obj = ae_acct.slct.event_obj;
|
||||
$events_slct.event_location_obj_li = ae_acct.slct.event_location_obj_li;
|
||||
$events_slct.event_session_obj_li = ae_acct.slct.event_session_obj_li;
|
||||
// $events_trigger = 'event_location_li';
|
||||
|
||||
|
||||
let lq__event_obj = liveQuery(
|
||||
() => db_events.events.get($events_slct.event_id)
|
||||
);
|
||||
|
||||
|
||||
let event_location_id_li: string[] = [];
|
||||
$: if ($events_trigger == 'event_location_li' && $events_slct.event_location_obj_li && $events_slct.event_location_obj_li.length > 0) {
|
||||
console.log(`$events_slct.event_location_obj_li:`, $events_slct.event_location_obj_li);
|
||||
$events_trigger = null;
|
||||
|
||||
event_location_id_li = [];
|
||||
|
||||
let tmp_li = []; // This is to prevent the array from constantly updating and triggering the liveQuery.
|
||||
|
||||
for (let i = 0; i < $events_slct.event_location_obj_li.length; i++) {
|
||||
let event_location_obj = $events_slct.event_location_obj_li[i];
|
||||
let event_location_id_random = event_location_obj.event_location_id_random;
|
||||
tmp_li.push(event_location_id_random);
|
||||
}
|
||||
event_location_id_li = tmp_li;
|
||||
console.log(`event_location_id_li:`, event_location_id_li);
|
||||
}
|
||||
|
||||
|
||||
let event_session_id_li: string[] = [];
|
||||
$: if ($events_slct.event_session_obj_li && $events_slct.event_session_obj_li.length && $events_trigger == 'event_session_li') {
|
||||
console.log(`$events_slct.event_session_obj_li:`, $events_slct.event_session_obj_li);
|
||||
$events_trigger = null;
|
||||
|
||||
event_session_id_li = [];
|
||||
|
||||
let tmp_li = []; // This is to prevent the array from constantly updating and triggering the liveQuery.
|
||||
|
||||
for (let i = 0; i < $events_slct.event_session_obj_li.length; i++) {
|
||||
let event_session_obj = $events_slct.event_session_obj_li[i];
|
||||
let event_session_id_random = event_session_obj.event_session_id_random;
|
||||
tmp_li.push(event_session_id_random);
|
||||
}
|
||||
event_session_id_li = tmp_li;
|
||||
console.log(`event_session_id_li:`, event_session_id_li);
|
||||
}
|
||||
|
||||
|
||||
// let lq__event_session_obj = liveQuery(
|
||||
// () => db_events.sessions.get($events_slct.event_session_id)
|
||||
// );
|
||||
|
||||
if (!$events_loc.launcher) {
|
||||
$events_loc.launcher = {};
|
||||
}
|
||||
if (!$events_sess.launcher) {
|
||||
$events_sess.launcher = {};
|
||||
}
|
||||
|
||||
$events_sess.launcher.show_content__session_code = true;
|
||||
$events_sess.launcher.show_content__presentation_code = true;
|
||||
$events_sess.launcher.show_content__presenter_code = true;
|
||||
|
||||
|
||||
// Functions and Logic
|
||||
|
||||
onMount(() => {
|
||||
console.log('Pres Mgmt Launcher [slug]: +page.svelte');
|
||||
|
||||
$events_trigger = 'event_location_li';
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<svelte:head>
|
||||
<title>
|
||||
Launcher: {ae_util.shorten_string({ string: $lq__event_obj?.name, max_length: 20, begin_length: 10, end_length: 4 })}
|
||||
({$lq__event_obj?.event_id ?? 'loading...'}) - Pres Mgmt - {$ae_loc?.title}
|
||||
</title>
|
||||
</svelte:head>
|
||||
|
||||
{#if !$lq__event_obj}
|
||||
<div class="flex flex-row items-center justify-center">
|
||||
<span class="fas fa-spinner fa-spin mx-1"></span>
|
||||
<span>Loading...</span>
|
||||
</div>
|
||||
{:else}
|
||||
<header id="Main-Header" class="flex flex-row items-center justify-evenly">
|
||||
<h3 class="h4 text-center italic">Æ Presentation Launcher</h3>
|
||||
<h2 class="h3 text-center">{$lq__event_obj?.name}</h2>
|
||||
</header>
|
||||
{/if}
|
||||
|
||||
|
||||
<!-- The menu should be to the left of the main session view. -->
|
||||
<div
|
||||
class="
|
||||
container h-full min-w-full w-full
|
||||
flex flex-row flex-wrap sm:flex-nowrap gap-0
|
||||
justify-center
|
||||
py-1 px-2 pb-16
|
||||
bg-gray-100
|
||||
"
|
||||
>
|
||||
|
||||
<section
|
||||
id="Main-Nav-Menu"
|
||||
class="event_launcher_menu
|
||||
container h-full flex flex-col gap-4 py-1 px-1
|
||||
basis-1/5
|
||||
min-w-48
|
||||
max-w-xs
|
||||
border-r border-gray-200
|
||||
"
|
||||
>
|
||||
{#await $events_slct.event_location_obj_li}
|
||||
Loading location list...
|
||||
{:then event_location_obj_li}
|
||||
{#if $lq__event_obj && event_location_obj_li && event_location_obj_li.length > 0}
|
||||
<Event_launcher_menu
|
||||
bind:event_id={$events_slct.event_id}
|
||||
bind:event_location_id={$events_slct.event_location_id}
|
||||
bind:slct_event_session_id={$events_slct.event_session_id}
|
||||
|
||||
|
||||
bind:event_location_id_li={event_location_id_li}
|
||||
|
||||
event_location_obj_li={event_location_obj_li}
|
||||
|
||||
dq__event_obj={$lq__event_obj}
|
||||
dq__where_type_id_val={'event_id'}
|
||||
bind:dq__where_eq_id_val={$events_slct.event_id}
|
||||
>
|
||||
</Event_launcher_menu>
|
||||
{/if}
|
||||
{/await}
|
||||
<!-- Root: slct Location ID: {$events_slct.event_location_id ?? '-- not set --'} -->
|
||||
</section>
|
||||
|
||||
<section
|
||||
id="Main-Content"
|
||||
class="event_launcher_main
|
||||
container h-full flex flex-col gap-1 py-1 px-2
|
||||
items-center
|
||||
basis-4/5
|
||||
max-w-full
|
||||
"
|
||||
>
|
||||
{#if $events_trigger == 'load__event_session_obj' && $events_slct.event_session_id}
|
||||
<Event_launcher_session_view
|
||||
slct_event_session_id={$events_slct.event_session_id}
|
||||
>
|
||||
</Event_launcher_session_view>
|
||||
{/if}
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- <section
|
||||
class="
|
||||
ae_events_pres_mgmt_event
|
||||
md:container h-full mx-auto flex flex-col gap-1 py-1 px-2 pb-16
|
||||
items-center
|
||||
min-w-100
|
||||
w-3/4
|
||||
max-w-max
|
||||
"
|
||||
>
|
||||
</section> -->
|
||||
@@ -0,0 +1,318 @@
|
||||
/* ### Electron Specific JavaScript ### */
|
||||
// import crypto from 'crypto';
|
||||
// import {fs} from 'fs';
|
||||
// import path from 'path';
|
||||
// const crypto = require('crypto');
|
||||
// const fs = require('fs');
|
||||
// const fs_promises = require('node:fs/promises');
|
||||
// const path = require('path');
|
||||
// const { ipcRenderer } = require('electron');
|
||||
|
||||
|
||||
// function sleep(milliseconds) {
|
||||
// const date = Date.now();
|
||||
// let currentDate = null;
|
||||
// do {
|
||||
// currentDate = Date.now();
|
||||
// } while (currentDate - date < milliseconds);
|
||||
// }
|
||||
|
||||
// // exports.check_hash_file_cache should no longer be needed with this.
|
||||
// // Updated 2022-10-11
|
||||
// export let check_hash_file_cache_v2 = async function check_hash_file_cache_v2({local_file_cache_path, hash, check_hash=false}) {
|
||||
// console.log('*** check_hash_file_cache_v2() ***');
|
||||
// console.log(`Host File Cache Path: ${local_file_cache_path}; Hash: ${hash}`);
|
||||
|
||||
// let hash_filename = `${hash}.file`;
|
||||
|
||||
// let subdirectory = hash_filename.substring(0,2);
|
||||
// let subdirectory_path = path.join(local_file_cache_path, subdirectory);
|
||||
// if (fs.existsSync(subdirectory_path)) {
|
||||
// } else {
|
||||
// console.log(`Hashed file subdirectory not found in cache: ${subdirectory_path}`);
|
||||
// return null;
|
||||
// }
|
||||
|
||||
// let hash_file_cache_path = path.join(subdirectory_path, hash_filename);
|
||||
|
||||
// if (fs.existsSync(hash_file_cache_path)) {
|
||||
// console.log(`Hashed file exists in cache: ${hash_file_cache_path}`);
|
||||
|
||||
// if (check_hash) {
|
||||
// const file_buffer = fs.readFileSync(hash_file_cache_path);
|
||||
// const file_hash_sha256 = crypto.createHash('sha256');
|
||||
// file_hash_sha256.update(file_buffer);
|
||||
|
||||
// const file_hash_sha256_check = file_hash_sha256.digest('hex');
|
||||
// if (file_hash_sha256_check == hash) {
|
||||
// console.log('File hash match', file_hash_sha256_check);
|
||||
// } else {
|
||||
// console.log('File hash does not match', file_hash_sha256_check);
|
||||
// return false;
|
||||
// }
|
||||
// }
|
||||
|
||||
// return true;
|
||||
// } else {
|
||||
// console.log(`Hashed file not found in cache: ${hash_file_cache_path}`);
|
||||
// return null;
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
// Updated 2022-05-07
|
||||
export let kill_processes = async function kill_processes({process_name_li=[]}) {
|
||||
console.log('*** kill_processes() ***');
|
||||
console.log(`Process Name List: ${process_name_li}`);
|
||||
|
||||
let fail_flag = null;
|
||||
if (process_name_li) {
|
||||
for (let i = 0; i < process_name_li.length; i++) {
|
||||
// separate the keys and the values
|
||||
let process_name = process_name_li[i];
|
||||
let signal = null;
|
||||
|
||||
if (process_name == 'osit_aperture_wrapper') {
|
||||
signal = 'INT'; // INT (interrupt) correctly stops the wrapper
|
||||
}
|
||||
|
||||
let kill_processes_result = await native_app.kill_processes({process_name: process_name, signal: signal});
|
||||
console.log(kill_processes_result);
|
||||
if (kill_processes_result) {
|
||||
console.log('Killed process.');
|
||||
// return kill_processes_result;
|
||||
} else {
|
||||
console.log('Did not kill process. Something went wrong.');
|
||||
fail_flag = true;
|
||||
// return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return fail_flag;
|
||||
|
||||
// let kill_processes_result = await native_app.kill_processes({process_name: process_name});
|
||||
// console.log(kill_processes_result);
|
||||
// if (kill_processes_result) {
|
||||
// console.log('Killed process.');
|
||||
// return kill_processes_result;
|
||||
// } else {
|
||||
// console.log('Did not kill process. Something went wrong.');
|
||||
// return false;
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
// Updated 2022-05-06
|
||||
export let open_local_file = async function open_local_file({file_path, filename}) {
|
||||
console.log('*** open_local_file() ***');
|
||||
console.log(`File Path: ${file_path}; Filename: ${filename}`);
|
||||
|
||||
console.log('Process: Check local hash file cache, Download hash file to cache, and Open cached hash file after copying to temp directory');
|
||||
|
||||
// let check_local_file_result = await native_app.check_local_file({local_file_path: file_path, filename: filename});
|
||||
// console.log(check_local_file_result);
|
||||
// if (check_local_file_result) {
|
||||
// console.log('Local file found.');
|
||||
// } else {
|
||||
// console.log('Local file not found. Will not attempt to open.');
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// console.log('Local file file found and ready to be opened.');
|
||||
let open_local_file_result = await native_app.open_local_file({local_file_path: file_path, filename: filename});
|
||||
console.log(open_local_file_result);
|
||||
if (open_local_file_result) {
|
||||
console.log('Local file was opened.');
|
||||
return open_local_file_result;
|
||||
} else {
|
||||
console.log('Local file was not opened. Something went wrong.');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// exports.open_local_file should no longer be needed with this.
|
||||
// Updated 2022-10-11
|
||||
export let open_local_file_v2 = async function open_local_file_v2({file_path, filename}) {
|
||||
console.log('*** open_local_file_v2() ***');
|
||||
console.log(`Local File Path: ${file_path}; Filename: ${filename}`);
|
||||
|
||||
console.log('Process: Check local hash file cache, Download hash file to cache, and Open cached hash file after copying to temp directory');
|
||||
|
||||
let open_local_file_result = await ipcRenderer.invoke('open_local_file', file_path, filename).then((result) => {
|
||||
console.log('IPC open local file finished');
|
||||
if (result) {
|
||||
console.log('Local file was opened.');
|
||||
return result;
|
||||
} else {
|
||||
console.log('Local file was not opened. Something went wrong.');
|
||||
console.log(result);
|
||||
return false;
|
||||
}
|
||||
|
||||
console.log(result);
|
||||
return true;
|
||||
})
|
||||
|
||||
return open_local_file_result;
|
||||
}
|
||||
|
||||
|
||||
// // Updated 2022-05-06
|
||||
// export let open_hash_file_to_temp = async function open_hash_file_to_temp({local_file_cache_path, hash, host_file_temp_path, filename}) {
|
||||
// console.log('*** open_hash_file_to_temp() ***');
|
||||
// console.log(`Host File Cache Path: ${local_file_cache_path}; Hash: ${hash}; Host File Temp Path: ${host_file_temp_path}; Filename: ${filename}`);
|
||||
|
||||
// console.log('Process: Check local hash file cache, Download hash file to cache, and Open cached hash file after copying to temp directory');
|
||||
|
||||
// let open_hash_file_to_temp_result = await native_app.open_hash_file_to_temp({local_file_cache_path: local_file_cache_path, hash: hash, host_file_temp_path: host_file_temp_path, filename: filename});
|
||||
// console.log(open_hash_file_to_temp_result);
|
||||
// if (open_hash_file_to_temp_result) {
|
||||
// console.log('Local hash file was opened from temp directory.');
|
||||
// return open_hash_file_to_temp_result;
|
||||
// } else {
|
||||
// console.log('Local hash file was not opened from the temp directory. Something went wrong.');
|
||||
// return false;
|
||||
// }
|
||||
// }
|
||||
|
||||
// // exports.open_hash_file_to_temp should no longer be needed with this.
|
||||
// // Updated 2022-10-11
|
||||
// export let open_hash_file_to_temp_v2 = async function open_hash_file_to_temp_v2({local_file_cache_path, hash, host_file_temp_path, filename}) {
|
||||
// console.log('*** open_hash_file_to_temp_v2() ***');
|
||||
// console.log(`Host File Cache Path: ${local_file_cache_path}; Hash: ${hash}; Host File Temp Path: ${host_file_temp_path}; Filename: ${filename}`);
|
||||
|
||||
// console.log('Process: Check local hash file cache, Download hash file to cache, and Open cached hash file after copying to temp directory');
|
||||
|
||||
// let subdirectory = hash.substring(0,2);
|
||||
// let subdirectory_path = path.join(local_file_cache_path, subdirectory);
|
||||
// if (fs.existsSync(subdirectory_path)) {
|
||||
// } else {
|
||||
// console.log(`Hashed file subdirectory not found in cache: ${subdirectory_path}`);
|
||||
// return null;
|
||||
// }
|
||||
|
||||
// let hash_filename = hash+'.file';
|
||||
// let full_cache_file_path = path.join(subdirectory_path, hash_filename);
|
||||
// console.log(full_cache_file_path);
|
||||
|
||||
// const file_buffer = fs.readFileSync(full_cache_file_path);
|
||||
// const file_hash_sha256 = crypto.createHash('sha256');
|
||||
// file_hash_sha256.update(file_buffer);
|
||||
|
||||
// const file_hash_sha256_check = file_hash_sha256.digest('hex');
|
||||
// if (file_hash_sha256_check == hash) {
|
||||
// console.log('File hash match', file_hash_sha256_check);
|
||||
// } else {
|
||||
// console.log('File hash does not match', file_hash_sha256_check);
|
||||
// // await setTimeout(async () => {console.log('Done waiting????'); open_file_clicked = false;}, 5000);
|
||||
// // sleep(6000);
|
||||
// // console.log('???????? WAITED X SECONDS ????????');
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// let open_hash_file_to_temp_result = await ipcRenderer.invoke('open_hash_file_to_temp', subdirectory_path, hash, host_file_temp_path, filename).then((result) => {
|
||||
// console.log('IPC open hash file to temp finished');
|
||||
// if (result) {
|
||||
// console.log('Local hash file was opened from temp directory.');
|
||||
// return result;
|
||||
// } else {
|
||||
// console.log('Local hash file was not opened from the temp directory. Something went wrong.');
|
||||
// console.log(result);
|
||||
// return false;
|
||||
// }
|
||||
// })
|
||||
|
||||
// return open_hash_file_to_temp_result;
|
||||
// }
|
||||
|
||||
|
||||
// Updated 2022-05-07
|
||||
export let run_cmd = async function run_cmd({cmd=null, return_stdout=null}) {
|
||||
console.log('*** run_cmd() ***');
|
||||
|
||||
let run_cmd_result = await native_app.run_cmd({cmd: cmd, return_stdout: return_stdout})
|
||||
.then(function (result) {
|
||||
if (result) {
|
||||
console.log('Command ran');
|
||||
} else {
|
||||
console.log('Command did not run. Something went wrong.');
|
||||
return false;
|
||||
}
|
||||
if (return_stdout) {
|
||||
return result;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
console.log('Run Command Result:', run_cmd_result);
|
||||
|
||||
return run_cmd_result;
|
||||
}
|
||||
|
||||
|
||||
// Updated 2022-10-27
|
||||
export let run_cmd_sync = function run_cmd_sync({cmd=null, return_stdout=null}) {
|
||||
console.log('*** run_cmd_sync() ***');
|
||||
|
||||
let run_cmd_result = native_app.run_cmd_sync({cmd: cmd, return_stdout: return_stdout});
|
||||
|
||||
// if (run_cmd_result) {
|
||||
// console.log('Command ran');
|
||||
// } else {
|
||||
// console.log('Command did not run. Something went wrong.');
|
||||
// // return false;
|
||||
// }
|
||||
|
||||
// if (return_stdout) {
|
||||
// return run_cmd_result;
|
||||
// } else {
|
||||
// return true;
|
||||
// }
|
||||
|
||||
console.log('Run Command Result:', run_cmd_result);
|
||||
|
||||
return run_cmd_result;
|
||||
}
|
||||
|
||||
|
||||
// Updated 2022-05-07
|
||||
export let run_osascript = async function run_osascript({cmd=null, interactive=false, language=null, flags='h', program_file=null}) {
|
||||
console.log('*** run_osascript() ***');
|
||||
|
||||
let run_osascript_result = await native_app.run_osascript({cmd: cmd, interactive: interactive, language: language, flags: flags, program_file: program_file});
|
||||
|
||||
console.log(run_osascript_result);
|
||||
|
||||
if (run_osascript_result) {
|
||||
console.log('Apple Script ran');
|
||||
} else {
|
||||
console.log('Apple Script did not run. Something went wrong.');
|
||||
}
|
||||
|
||||
return run_osascript_result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Updated 2022-05-07
|
||||
export let get_device_info = async function get_device_info({event_device_id}) {
|
||||
console.log('*** get_device_info() ***');
|
||||
|
||||
console.log(event_device_id);
|
||||
|
||||
let get_device_info_result = await native_app.get_device_info();
|
||||
|
||||
console.log(get_device_info_result);
|
||||
|
||||
if (get_device_info_result) {
|
||||
console.log('Success');
|
||||
} else {
|
||||
console.log('Failed? Something went wrong.');
|
||||
}
|
||||
|
||||
return get_device_info_result;
|
||||
}
|
||||
@@ -0,0 +1,327 @@
|
||||
<script lang="ts">
|
||||
import { createEventDispatcher, onMount } from 'svelte';
|
||||
|
||||
import { ae } from 'aether_npm_lib';
|
||||
|
||||
export let element_id = 'svelte_input_file_element';
|
||||
export let input_name = 'file_list';
|
||||
export let container_class_li = [];
|
||||
export let input_class_li = ['file_drop_area'];
|
||||
export let table_class_li = [];
|
||||
|
||||
export let multiple: boolean = true;
|
||||
export let required: boolean = true;
|
||||
export let accept: string = 'audio/*, image/*, video/*, .bak, .cfg, .css, .csv, .doc, .docx, .gz, .htm, .html, .ini, .iso, .j2, .json, .key, .keynote, .md, .pdf, .ppt, .pptx, .rar, .rtf, .sql, .svelte, ttf, .txt, .xls, .xlsx, .xz, .zip, .bin, .dmg, .exe, .js, .msi, .php, .py, .sh';
|
||||
export let untrusted_extension_list = ['bin', 'dmg', 'exe', 'js', 'msi', 'php', 'py', 'sh'];
|
||||
export let legacy_extension_list = ['avi', 'doc', 'ppt', 'xls', 'wmv'];
|
||||
export let use_selected_file_table = true;
|
||||
|
||||
const dispatch = createEventDispatcher();
|
||||
|
||||
export let input_file_list;
|
||||
let input_file_list_processed;
|
||||
|
||||
onMount(() => {
|
||||
console.log('** Element Mounted: ** Element Input File');
|
||||
});
|
||||
|
||||
|
||||
$: if (input_file_list) {
|
||||
console.log(input_file_list);
|
||||
|
||||
process_file_list(input_file_list).then(function (result) {
|
||||
// console.log(result);
|
||||
|
||||
// Save the results to the file upload list to be displayed as a table.
|
||||
input_file_list_processed = result; // Includes file hash
|
||||
|
||||
dispatch(
|
||||
'input_file_list_updated',
|
||||
{
|
||||
element_id: element_id,
|
||||
input_file_list: input_file_list,
|
||||
input_file_list_processed: result, // Includes file hash
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
async function process_file_list(file_list) {
|
||||
console.log('*** process_file_list() ***');
|
||||
|
||||
if (!file_list) {
|
||||
// file_list_processed = null;
|
||||
return false;
|
||||
}
|
||||
|
||||
// input_file_list_processed = [];
|
||||
|
||||
let file_list_processing = [];
|
||||
|
||||
// const forLoop = async _ => {
|
||||
// console.log('*** Start ***');
|
||||
|
||||
// for (let [i, file_item] of file_list.entries()) { // Not sure why this does not work???
|
||||
for await (const [i, file_item] of Array.prototype.entries.call(file_list)) {
|
||||
console.log(i, file_item);
|
||||
|
||||
// NOTE: The file list is readonly. The filenames can not be changed here.
|
||||
if (file_item.name.endsWith('.odpmac') || file_item.name.endsWith('.odpwin') || file_item.name.endsWith('.pptmac') || file_item.name.endsWith('.pptwin') || file_item.name.endsWith('.pptxmac') || file_item.name.endsWith('.pptxwin')) {
|
||||
console.log('This file extension may need to be fixed? API upload will take care of it.');
|
||||
// file_item.name = file_item.name.replace('.odpwin', '.odp');
|
||||
}
|
||||
|
||||
let file_data = {};
|
||||
|
||||
let filename = file_item.name;
|
||||
// console.log(filename);
|
||||
file_data['filename'] = filename;
|
||||
|
||||
let guessed_extension = ae.util.guess_file_extension(filename);
|
||||
file_data['guessed_extension'] = guessed_extension;
|
||||
|
||||
file_data['type'] = file_item.type;
|
||||
|
||||
let modified_date = new Date(file_item.lastModified);
|
||||
file_data['modified_date'] = modified_date;
|
||||
let modified_datetime_string = ae.util.iso_datetime_formatter(modified_date, 'datetime_medium');
|
||||
file_data['modified_datetime_string'] = modified_datetime_string;
|
||||
|
||||
let file_size_bytes = file_item.size;
|
||||
file_data['file_size_bytes'] = file_size_bytes;
|
||||
let file_size_string = ae.util.format_bytes(file_item.size, 2);
|
||||
file_data['file_size_string'] = file_size_string;
|
||||
|
||||
// // NOTE: Calculate the hash of the file before upload. Check if this exact file has already been uploaded.
|
||||
// let file_reader = new FileReader();
|
||||
// file_reader.onload = async function() {
|
||||
|
||||
// const hash_buffer = crypto.subtle.digest('SHA-256', file_reader.result);
|
||||
// let hash_hex_test = hash_buffer.then(async function (result_buffer) {
|
||||
// const hash_array = Array.from(new Uint8Array(result_buffer)); // convert buffer to byte array
|
||||
// const hash_hex = hash_array.map(b => b.toString(16).padStart(2, '0')).join('');
|
||||
// console.log(`File hash hex? ${hash_hex}`);
|
||||
// file_data['hash_sha256'] = hash_hex;
|
||||
// return hash_hex;
|
||||
// })
|
||||
// .catch(function (error) {
|
||||
// console.log('Something went wrong?', error);
|
||||
// });
|
||||
|
||||
// return hash_hex_test;
|
||||
|
||||
// // file_data['hash_hex_test'] = hash_hex_test;
|
||||
|
||||
// // const hash_buffer = await crypto.subtle.digest('SHA-256', file_reader.result);
|
||||
// // let hash_str = await new TextDecoder().decode(hash_buffer);
|
||||
// // console.log(`File hash string? ${hash_str}`);
|
||||
// // file_data['hash_str'] = hash_str;
|
||||
|
||||
// // const hash_array = Array.from(new Uint8Array(hash_buffer)); // convert buffer to byte array
|
||||
// // const hash_hex = hash_array.map(b => b.toString(16).padStart(2, '0')).join('');
|
||||
// // console.log(`File hash hex? ${hash_hex}`);
|
||||
|
||||
// // file_data['hash_sha256'] = hash_hex;
|
||||
// // return hash_hex_test;
|
||||
// // return hash_hex;
|
||||
// }
|
||||
|
||||
// // file_reader.then(function (result) {
|
||||
// // console.log(`File hash hex? ${result}`);
|
||||
// // return hash_hex;
|
||||
// // })
|
||||
// // .catch(function (error) {
|
||||
// // console.log('No results returned or failed.', error);
|
||||
// // });
|
||||
// // file_data['hash_sha256'] = file_reader.readAsArrayBuffer(file_item);
|
||||
|
||||
|
||||
|
||||
let warning_untrusted_extension = false;
|
||||
let warning_legacy_extension = false;
|
||||
let warning_size = false;
|
||||
let warning_message = null;
|
||||
|
||||
if (untrusted_extension_list.includes(guessed_extension)) {
|
||||
console.log('This is an untrusted extension. Going to warn.')
|
||||
warning_untrusted_extension = true;
|
||||
warning_message = 'It appears this an untrusted file type and is likely meant to be an executable or installable application. It is <strong>strongly</strong> recommended that this file not be used.';
|
||||
|
||||
} else if (legacy_extension_list.includes(guessed_extension)) {
|
||||
console.log('This is a legacy extension. Going to warn.')
|
||||
warning_legacy_extension = true;
|
||||
if (guessed_extension == 'ppt') {
|
||||
warning_message = 'It appears this is a legacy PowerPoint file and has not been officially supported since Office PowerPoint 2003. This file is known to have issues and may not work well. It is <strong>strongly</strong> recommended that this file be saved using the modern PPTX format.';
|
||||
} else if (guessed_extension == 'avi') {
|
||||
warning_message = 'It appears this is a video file using the AVI format. It is <strong>strongly</strong> recommended that this file be re-saved as an MP4, MOV, MKV, or MPG/MPEG. The file will also likely be much smaller.';
|
||||
} else if (guessed_extension == 'wmv') {
|
||||
warning_message = 'It appears this is a video file using Microsoft\'s WMV format. It is <strong>strongly</strong> recommended that this file be re-saved as an MP4, MOV, MKV, or MPG/MPEG.';
|
||||
} else {
|
||||
warning_message = 'It appears this is a legacy or not very well supported file format. It is <strong>strongly</strong> recommended that it be saved in an alternative format if possible.';
|
||||
}
|
||||
|
||||
} else if (file_size_bytes > 52428800) {
|
||||
console.log('This is large file size. Going to warn.');
|
||||
warning_size = true;
|
||||
if (file_size_bytes > 209715200) { // > 200 MB
|
||||
warning_message = `This file size (${file_size_string}) is very large and may take a while to upload depending on your network connection. Be sure you have a stable network connection, especially if you are uploading over a wireless connection. Many business (convention centers, hotels, restaurants, etc) cap upload speeds significantly. In some cases it may be worth compressing the file or embedded media. Many audio, image, and video files can be compressed without a significant loss in quality.`;
|
||||
} else if (file_size_bytes > 104857600) { // 100 MB to 200 MB
|
||||
warning_message = `This file size (${file_size_string}) is large and will likely take a few minutes or more depending on your network connection. Be sure you have a stable network connection. In some cases it may be worth compressing the file or embedded media. Many audio, image, and video files can be compressed without a significant loss in quality.`;
|
||||
} else { // 50 to 100 MB
|
||||
warning_message = `This file size (${file_size_string}) is large and may take a few minutes or more to upload depending on your network connection. In some cases it may be worth compressing the file or embedded media. Many audio, image, and video files can be compressed without a significant loss in quality.`;
|
||||
}
|
||||
|
||||
} else {
|
||||
}
|
||||
|
||||
file_data['warning_untrusted_extension'] = warning_untrusted_extension;
|
||||
file_data['warning_legacy_extension'] = warning_legacy_extension;
|
||||
file_data['warning_size'] = warning_size;
|
||||
|
||||
file_data['warning_message'] = warning_message;
|
||||
|
||||
file_data['uploaded'] = null;
|
||||
file_data['uploaded_bytes'] = null;
|
||||
|
||||
// input_file_list_processed.push(JSON.parse(JSON.stringify(file_data)));
|
||||
// input_file_list_processed = input_file_list_processed;
|
||||
|
||||
// console.log(get_file_hash(file_item));
|
||||
// console.log(await get_file_hash(file_item));
|
||||
|
||||
const file_hash = await ae.util.get_file_hash(file_item);
|
||||
// const file_hash = get_file_hash(file_item);
|
||||
// console.log(file_hash);
|
||||
if (file_hash) {
|
||||
file_data['hash_sha256'] = file_hash;
|
||||
file_data['hash_sha256_match'] = null;
|
||||
} else {
|
||||
file_data['hash_sha256'] = null;
|
||||
file_data['hash_sha256_match'] = false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
file_list_processing.push(file_data);
|
||||
// input_file_list_processed.push(file_data);
|
||||
}
|
||||
|
||||
console.log(file_list_processing);
|
||||
|
||||
// return JSON.parse(JSON.stringify(file_list_processing));
|
||||
return file_list_processing
|
||||
}
|
||||
|
||||
|
||||
function remove_file_from_filelist(index) {
|
||||
console.log('*** remove_file_from_filelist() ***');
|
||||
|
||||
// Can not use something like this because it is readonly:
|
||||
const dt = new DataTransfer();
|
||||
// let input = document.getElementById(input_element_id);
|
||||
|
||||
let input_element = document.querySelector('input[type="file"].svelte_input_file_element');
|
||||
|
||||
let files = input_file_list;
|
||||
|
||||
for (let i = 0; i < files.length; i++) {
|
||||
const file = files[i];
|
||||
if (index !== i) // Only include the file if it does not match the index value.
|
||||
dt.items.add(file);
|
||||
}
|
||||
|
||||
// NOTE: I thought just setting the input_element.files OR input_file_list would trigger the input_file_list change.
|
||||
// input_element.files = Object.assign({}, dt.files);
|
||||
input_element.files = dt.files; // Assign the updates list
|
||||
// input_file_list = null;
|
||||
input_file_list = dt.files; // I feel like this should not need to be done, but doing it anyways.
|
||||
|
||||
return true;
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<div class="svelte_element element_input_file {container_class_li.join(' ')}">
|
||||
<input type="file" bind:files={input_file_list} {multiple} {required} {accept} name={input_name} class="svelte_input_file_element {input_class_li.join(' ')}" id={element_id} />
|
||||
|
||||
<!-- {#await input_file_list_processed} -->
|
||||
<!-- {:then} -->
|
||||
{#if use_selected_file_table && input_file_list_processed && input_file_list_processed.length}
|
||||
<strong>Files selected for upload</strong>
|
||||
<table class="slct_file_list {table_class_li.join(' ')}">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Remove</th>
|
||||
<th>Filename</th>
|
||||
<th>Modified</th>
|
||||
<th>Size</th>
|
||||
<!-- <th>Type</th> -->
|
||||
<th>Ext</th>
|
||||
<th>Hash</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{#each input_file_list_processed as file_list_item, file_index}
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="file_remove">
|
||||
<button on:click|preventDefault={() => { (remove_file_from_filelist(file_index)); }} class="ae_btn btn_md btn_default" title="Remove file from upload list">
|
||||
<span class="fas fa-minus"></span>
|
||||
</button>
|
||||
</td>
|
||||
<td class="file_filename">{file_list_item.filename}</td>
|
||||
<td class="file_last_modified">{file_list_item.modified_datetime_string}</td>
|
||||
<td class="file_size" class:warning_file_size={file_list_item.warning_size}>{file_list_item.file_size_string}</td>
|
||||
<!-- <td class="file_type" class:warning_file_untrusted_extension={file_list_item.warning_untrusted_extension} class:warning_file_legacy_extension={file_list_item.warning_legacy_extension}>{file_list_item.type}</td> -->
|
||||
<td class="file_extension" class:warning_file_untrusted_extension={file_list_item.warning_untrusted_extension} class:warning_file_legacy_extension={file_list_item.warning_legacy_extension}>{file_list_item.guessed_extension}</td>
|
||||
<td class="file_hash file_hash256">
|
||||
{ae.util.shorten_string({string: file_list_item.hash_sha256, begin_length: 5, end_length: 4, wildcard_length: 2})}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
{/each}
|
||||
|
||||
</table>
|
||||
{/if}
|
||||
<!-- {/await} -->
|
||||
|
||||
<button on:click|preventDefault={async () => {
|
||||
// const file = document.getElementById('event_file_upload_file_list').files[0];
|
||||
// let test_result = await ae.util.get_file_hash(file);
|
||||
|
||||
// get_file_hash(file)
|
||||
// .then(hash => {
|
||||
// console.log(hash); // This will print the hash value
|
||||
// })
|
||||
// .catch(error => {
|
||||
// console.error(error);
|
||||
// });
|
||||
|
||||
// let test_result = await get_file_hash(input_file_list[0]);
|
||||
// console.log(test_result);;
|
||||
}}
|
||||
class="ae_btn btn_md btn_default d_none" title="Get file hash?"
|
||||
>
|
||||
<span class="fas fa-hash"></span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
||||
<style>
|
||||
th {
|
||||
text-align: center;
|
||||
font-size: smaller;
|
||||
}
|
||||
td {
|
||||
text-align: center;
|
||||
}
|
||||
.file_last_modified, .file_size, .file_type {
|
||||
font-size: smaller;
|
||||
}
|
||||
|
||||
.file_hash {
|
||||
font-family: 'Courier New', Courier, monospace;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,421 @@
|
||||
<script lang="ts">
|
||||
// *** Import Svelte core
|
||||
import { onMount, tick } from 'svelte';
|
||||
import { fade, scale, fly } from 'svelte/transition';
|
||||
|
||||
type key_val = {
|
||||
[key: string]: any;
|
||||
};
|
||||
|
||||
// *** Import Aether core variables and functions
|
||||
import { ae } from 'aether_npm_lib';
|
||||
|
||||
// import { } from '../../mods/electron.js';
|
||||
import { ae_event_launcher, event_file_obj_def, open_event_file_as_modal, ae_screen_saver_img_list } from '../../stores_mod_events';
|
||||
|
||||
// *** Import Aether core components
|
||||
|
||||
// *** Import Aether module variables and functions
|
||||
// import { ae_event_launcher } from '../stores_event.js';
|
||||
import { download_event_file } from '../stores_event_api.js';
|
||||
|
||||
// *** Import Aether module components
|
||||
|
||||
// *** Export/Exposed variables and functions for component
|
||||
export let event_file_obj = $event_file_obj_def;
|
||||
// export let use_os: boolean = false;
|
||||
// export let os: string = null;
|
||||
export let max_filename_length: number = 50;
|
||||
export let hide_launch_icon: boolean = false;
|
||||
export let hide_meta: boolean = false;
|
||||
export let hide_created_on: boolean = false;
|
||||
export let hide_os: boolean = false;
|
||||
export let hide_size: boolean = false;
|
||||
export let show_bak_download: boolean = false;
|
||||
// export let hide_api_download: boolean = true;
|
||||
|
||||
export let btn_size: string = 'btn_md';
|
||||
|
||||
export let open_file_as: string = '';
|
||||
export let poster_title: string = '';
|
||||
|
||||
// *** Set initial variables
|
||||
let ae_promises: key_val = {};
|
||||
let ae_downloads: key_val = {};
|
||||
|
||||
let open_file_clicked = null;
|
||||
let open_file_status = null; // null, 'checking_cache', 'checking_cache_failed', 'downloading_file', 'downloading_file_failed', 'opening_file', 'opening_file_failed', 'opening_file_success'
|
||||
let open_file_status_message = null;
|
||||
|
||||
let screen_saver_exts = ['jpg', 'png', 'PNG', 'webp'];
|
||||
|
||||
if (screen_saver_exts.includes(event_file_obj.extension)) {
|
||||
// $ae_event_launcher.screen_saver_img_list.push(event_file_obj);
|
||||
// $ae_event_launcher.screen_saver_img_list[event_file_obj.event_file_id_random] = event_file_obj;
|
||||
|
||||
$ae_screen_saver_img_list[event_file_obj.event_file_id_random] = Object.create(event_file_obj);
|
||||
|
||||
// let temp_obj = Object.create(event_file_obj)
|
||||
|
||||
// $ae_event_launcher.screen_saver_img_list[temp_obj.event_file_id_random] = Object.create(temp_obj);
|
||||
|
||||
// $ae_event_launcher = $ae_event_launcher;
|
||||
}
|
||||
|
||||
onMount(() => {
|
||||
console.log('** Component Mounted: ** Event Launcher File Container (Hash Open)');
|
||||
|
||||
if (screen_saver_exts.includes(event_file_obj.extension)) {
|
||||
// $ae_event_launcher.screen_saver_img_list[event_file_obj.event_file_id_random] = event_file_obj;
|
||||
|
||||
let temp_obj = Object.create(event_file_obj)
|
||||
|
||||
$ae_event_launcher.screen_saver_img_list[temp_obj.event_file_id_random] = Object.create(temp_obj);
|
||||
|
||||
$ae_event_launcher = $ae_event_launcher;
|
||||
}
|
||||
|
||||
window.addEventListener('message', function(event) {
|
||||
console.log('Message received in event file uploaded manage component:');
|
||||
console.log(event);
|
||||
|
||||
if (event.data.type == 'api_download_blob') {
|
||||
console.log('Download blob (file) message received:');
|
||||
console.log(event.data);
|
||||
|
||||
// Get the event_file_id from the event.data.endpoint value.
|
||||
// Example: /event/file/abc123/download
|
||||
|
||||
let endpoint = event.data.endpoint;
|
||||
let event_file_id = endpoint.split('/')[3];
|
||||
|
||||
ae_downloads[event_file_id] = {
|
||||
'size_total': event.data.size_total,
|
||||
'size_loaded': event.data.size_loaded,
|
||||
'percent_completed': event.data.percent_completed,
|
||||
};
|
||||
|
||||
// let event_file_id = event.data.event_file_id;
|
||||
// let filename = event.data.filename;
|
||||
// let auto_download = event.data.auto_download;
|
||||
|
||||
// ae_promises[event_file_id]
|
||||
// ae_promises[event_file_id] = download_event_file({ 'event_file_id': event_file_id, 'return_file': true, filename: filename, auto_download: auto_download, log_lvl: 1 });
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
async function handle_open_file() {
|
||||
console.log('*** handle_open_file() ***');
|
||||
console.log(`App Mode: ${$ae_event_launcher.app_mode}; Cache Path: ${$ae_event_launcher.local_file_cache_path}; Temp Path: ${$ae_event_launcher.host_file_temp_path}`);
|
||||
|
||||
// null or "default" is for regular use in their preferred browser.
|
||||
// "app" mode is for Electron and node.js.
|
||||
// "onsite" mode is for Chrome or Firefox and downloading files with modified extensions and other slight changes.
|
||||
|
||||
if ($ae_event_launcher.app_mode == 'native' && native_app) {
|
||||
console.log('* ** *** **** BEGIN TESTING **** *** ** *');
|
||||
console.log('Process: Check local hash file cache, Download hash file to cache, and Open cached hash file after copying to temp directory');
|
||||
|
||||
open_file_clicked = true;
|
||||
// await tick();
|
||||
// setTimeout(() => {console.log('Finished waiting to hide the message.'); open_file_clicked = false;}, 15000);
|
||||
|
||||
open_file_status = 'checking_cache';
|
||||
open_file_status_message = 'Checking local cache...';
|
||||
let check_hash_file_cache_result = await native_app.check_hash_file_cache_v2({local_file_cache_path: $ae_event_launcher.local_file_cache_path, hash: event_file_obj.hash_sha256, check_hash: true});
|
||||
if (check_hash_file_cache_result) {
|
||||
console.log('Cached hash file found.');
|
||||
} else if (check_hash_file_cache_result == null) {
|
||||
console.log(`Cached hash file not found. Need to download from API server. Base URL ${$ae_event_launcher.api.base_url}`);
|
||||
open_file_status = 'downloading_file';
|
||||
open_file_status_message = 'Downloading file...';
|
||||
let download_hash_file_to_cache_result = await native_app.download_hash_file_to_cache_v2({api_base_url: $ae_event_launcher.api.base_url, api_base_url_backup: $ae_event_launcher.api.base_url_backup, local_file_cache_path: $ae_event_launcher.local_file_cache_path, event_file_id: event_file_obj.event_file_id_random, hash: event_file_obj.hash_sha256, verify_hash: true, overwrite_existing: false});
|
||||
// console.log(download_hash_file_to_cache_result);
|
||||
if (download_hash_file_to_cache_result) {
|
||||
console.log('Hash file downloaded to cache.');
|
||||
} else if (download_hash_file_to_cache_result == null) {
|
||||
console.log('Hash file was not found in cache and or could not be downloaded.');
|
||||
open_file_status = 'file_not_found';
|
||||
open_file_status_message = 'File was not found in cache and could not be downloaded.';
|
||||
setTimeout(() => {console.log(`Hiding Open File Message: ${open_file_status_message}`); open_file_clicked = false;}, 10000); // Default 15 seconds (15000)
|
||||
return null;
|
||||
} else {
|
||||
console.log('Hash file may be in the process of being downloaded or something went wrong.');
|
||||
open_file_status = 'downloading_file_or_failed';
|
||||
open_file_status_message = 'Hash file may be in the process of being downloaded or something went wrong.';
|
||||
setTimeout(() => {console.log(`Hiding Open File Message: ${open_file_status_message}`); open_file_clicked = false;}, 10000); // Default 15 seconds (15000)
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
console.log(`Cached hash file found, but hash did not match. May still be downloading from the API server. Base URL ${$ae_event_launcher.api.base_url}`);
|
||||
open_file_status = 'try_again';
|
||||
open_file_status_message = 'Please try again...';
|
||||
return null;
|
||||
}
|
||||
|
||||
setTimeout(() => {console.log('Finished waiting to hide the message.'); open_file_clicked = false;}, 15000); // Default 15 seconds (15000)
|
||||
|
||||
console.log('Cached hash file found and ready to be opened from the temp directory.');
|
||||
open_file_status = 'opening_file';
|
||||
open_file_status_message = 'Opening file...';
|
||||
|
||||
let filename = '';
|
||||
if ((event_file_obj.extension == 'ppt' || event_file_obj.extension == 'pptx') && event_file_obj.open_in_os == 'win') {
|
||||
if (event_file_obj.extension == 'ppt') {
|
||||
filename = event_file_obj.filename.replace('.ppt', '.pptwin');
|
||||
} else if (event_file_obj.extension == 'pptx') {
|
||||
filename = event_file_obj.filename.replace('.pptx', '.pptxwin');
|
||||
}
|
||||
} else {
|
||||
filename = event_file_obj.filename;
|
||||
}
|
||||
console.log(`Opening ${filename}`);
|
||||
|
||||
let electron_open_hash_file_to_temp_result = await native_app.open_hash_file_to_temp_v2({local_file_cache_path: $ae_event_launcher.local_file_cache_path, hash: event_file_obj.hash_sha256, host_file_temp_path: $ae_event_launcher.host_file_temp_path, filename: filename, verify_hash: true});
|
||||
if (electron_open_hash_file_to_temp_result) {
|
||||
console.log('Local hash file was opened to temp.');
|
||||
open_file_status = 'opening_file_success';
|
||||
open_file_status_message = 'Opening Application';
|
||||
} else if (electron_open_hash_file_to_temp_result == null) {
|
||||
console.log('Local hash file was not found. It may still be downloading.');
|
||||
open_file_status = 'file_not_found';
|
||||
open_file_status_message = 'File not found!';
|
||||
} else {
|
||||
console.log('Local hash file was not opened to temp. Something went wrong.');
|
||||
open_file_status = 'opening_file_failed';
|
||||
open_file_status_message = 'Failed to open the file!';
|
||||
return false;
|
||||
}
|
||||
|
||||
console.log('Done with test of cache check, download file, and open cached file from temp directory.');
|
||||
} else if ($ae_event_launcher.app_mode == 'onsite') {
|
||||
open_file_clicked = true;
|
||||
await tick();
|
||||
setTimeout(() => {console.log('Finished waiting to hide the message.'); open_file_clicked = false;}, 15000);
|
||||
} else {
|
||||
|
||||
// NOTE: Add first test controller command here.
|
||||
// $ae_event_launcher.controller_cmd = `ae:open:event_file_id=${$slct.event_file_id}`;
|
||||
// $ae_event_launcher.controller_trigger_send = true; // Trigger the controller to send.
|
||||
// $ae_event_launcher.controller_cmd = null; // Reset command to null
|
||||
|
||||
|
||||
open_file_clicked = true;
|
||||
await tick();
|
||||
setTimeout(() => {console.log('Finished waiting to hide the message.'); open_file_clicked = false;}, 15000);
|
||||
}
|
||||
}
|
||||
|
||||
// function handle_open_file_as_poster() {
|
||||
// console.log('*** handle_open_file_as_poster() ***');
|
||||
|
||||
// $ae_event_launcher.show_modal_event_poster = true;
|
||||
// if (event_file_obj.extension == 'png' || event_file_obj.extension == 'jpg') {
|
||||
// $ae_event_launcher.event_poster_file_type = 'image';
|
||||
// } else if (event_file_obj.extension == 'mp4' || event_file_obj.extension == 'mov') {
|
||||
// $ae_event_launcher.event_poster_file_type = 'video';
|
||||
// }
|
||||
|
||||
// $ae_event_launcher.event_poster_src = `/event/file/${event_file_obj.event_file_id_random}/download`;
|
||||
// $ae_event_launcher.event_poster_title = poster_title;
|
||||
// }
|
||||
</script>
|
||||
|
||||
|
||||
<div class="event_launcher_file_cont">
|
||||
<span class="event_file_action">
|
||||
|
||||
{#if open_file_clicked}
|
||||
<div class="open_file_clicked alert" in:fade="{{ duration: 250 }}" out:fade="{{ duration: 2000 }}">
|
||||
{#if ($ae_event_launcher.app_mode == 'native')}
|
||||
{#if (open_file_status)}
|
||||
<div class="alert_msg_pulse"><strong>*** {open_file_status_message} ***</strong></div>
|
||||
{/if}
|
||||
|
||||
<!-- <strong>*** Please wait while this file is cached... ***</strong> -->
|
||||
<p>Most files will automatically be opened full screen.</p>
|
||||
<p>PowerPoint or KeyNote will attempt to display in presenter view.</p>
|
||||
<p>PDFs, videos, and images will attempt to be displayed mirrored.</p>
|
||||
<p>Please close the file when finished.</p>
|
||||
{:else if ($ae_event_launcher.app_mode == 'onsite')}
|
||||
<strong>*** Please wait while this file loads... ***</strong>
|
||||
<p>Most files will automatically be opened full screen.</p>
|
||||
<p>PowerPoint or KeyNote will attempt to display in presenter view.</p>
|
||||
<p>PDFs, videos, and images will attempt to be displayed mirrored.</p>
|
||||
<p>Please close the file when finished.</p>
|
||||
{:else}
|
||||
<strong>*** Please wait while this file downloads... ***</strong>
|
||||
<p>Onsite in the Speaker Ready Room and conference session rooms:
|
||||
<ul>
|
||||
<li>Most files will automatically be opened full screen.</li>
|
||||
<li>PowerPoint or KeyNote will attempt to display in presenter view.</li>
|
||||
<li>PDFs, videos, and images will attempt to be displayed mirrored.</li>
|
||||
<li>Please close the file when finished.</li>
|
||||
</ul>
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{#if (open_file_as == 'poster')}
|
||||
<!-- <a
|
||||
href="/event/file/{event_file_obj.event_file_id_random}/download"
|
||||
download
|
||||
class="ae_btn btn_info {btn_size}"
|
||||
on:click|preventDefault={() => {handle_open_file_as_poster();}}
|
||||
data-hash_sha256={event_file_obj.hash_sha256}
|
||||
data-filename={event_file_obj.filename}
|
||||
title={event_file_obj.filename}
|
||||
>
|
||||
<span class="fas fa-paper-plane" class:d_none="{hide_launch_icon}"></span> {ae.util.shorten_filename(event_file_obj.filename, max_filename_length)}
|
||||
</a> -->
|
||||
<button
|
||||
class="ae_btn btn_info {btn_size}"
|
||||
on:click={() => {
|
||||
let as_modal_result = open_event_file_as_modal({
|
||||
event_file_id: event_file_obj.event_file_id_random,
|
||||
filename: event_file_obj.filename,
|
||||
extension: event_file_obj.extension,
|
||||
modal_title: poster_title
|
||||
});
|
||||
|
||||
if (as_modal_result) {
|
||||
console.log($ae_event_launcher);
|
||||
console.log(event_file_obj);
|
||||
ae_event_launcher.set({...$ae_event_launcher, ...as_modal_result});
|
||||
}
|
||||
|
||||
if ($ae_event_launcher.controller == 'local_push') {
|
||||
$ae_event_launcher.controller_cmd = `ae_open:event_file=${event_file_obj.event_file_id_random}`;
|
||||
$ae_event_launcher.controller_trigger_send = true;
|
||||
}
|
||||
}}
|
||||
title={`${event_file_obj.filename} [BTN] -- SHA256 hash: ${event_file_obj.hash_sha256.slice(0, 10)}...`}
|
||||
>
|
||||
{#if (screen_saver_exts.includes(event_file_obj.extension))}
|
||||
<span class="fas fa-chart-bar" class:d_none="{hide_launch_icon}"></span>
|
||||
Open Poster
|
||||
{:else}
|
||||
<span class="fas fa-paper-plane" class:d_none="{hide_launch_icon}"></span> {ae.util.shorten_filename(event_file_obj.filename, max_filename_length)}
|
||||
{/if}
|
||||
</button>
|
||||
<!-- {#if ($ae_event_launcher.app_mode == 'native')} -->
|
||||
{:else if ($ae_event_launcher.app_mode == 'native')}
|
||||
<a
|
||||
href="/event/file/{event_file_obj.event_file_id_random}/download?use_os=true"
|
||||
download
|
||||
class="ae_btn btn_info {btn_size}"
|
||||
on:click|preventDefault={() => {handle_open_file();}}
|
||||
data-hash_sha256={event_file_obj.hash_sha256}
|
||||
data-filename={event_file_obj.filename}
|
||||
title={`${event_file_obj.filename} [A] -- SHA256 hash: ${event_file_obj.hash_sha256.slice(0, 10)}...`}
|
||||
>
|
||||
<span class="fas fa-paper-plane" class:d_none="{hide_launch_icon}"></span> {ae.util.shorten_filename(event_file_obj.filename, max_filename_length)}
|
||||
</a>
|
||||
{:else if ($ae_event_launcher.app_mode == 'onsite' && (event_file_obj.extension == 'ppt' || event_file_obj.extension == 'pptx') && event_file_obj.open_in_os == 'win')}
|
||||
<a
|
||||
href="/event/file/{event_file_obj.event_file_id_random}/download?use_os=true" download
|
||||
class="ae_btn btn_info {btn_size}"
|
||||
on:click={() => {handle_open_file();}}
|
||||
data-hash_sha256={event_file_obj.hash_sha256}
|
||||
data-filename={event_file_obj.filename}
|
||||
title={`${event_file_obj.filename} [A] -- SHA256 hash: ${event_file_obj.hash_sha256.slice(0, 10)}...`}
|
||||
>
|
||||
<span class="fas fa-paper-plane" class:d_none="{hide_launch_icon}"></span> {ae.util.shorten_filename(event_file_obj.filename, max_filename_length)}
|
||||
</a>
|
||||
{:else}
|
||||
<button
|
||||
class="ae_btn btn_info {btn_size}"
|
||||
on:click={() => {
|
||||
ae_promises[event_file_obj.event_file_id_random]
|
||||
ae_promises[event_file_obj.event_file_id_random] = download_event_file({ 'event_file_id': event_file_obj.event_file_id_random, 'return_file': true, filename: event_file_obj.filename, auto_download: true, log_lvl: 1 })
|
||||
.then((result) => {
|
||||
console.log('Downloaded file:');
|
||||
console.log(result);
|
||||
|
||||
if (result === null) {
|
||||
ae_promises[event_file_obj.event_file_id_random] = null;
|
||||
}
|
||||
})
|
||||
|
||||
}}
|
||||
title={`${event_file_obj.filename} [API] -- SHA256 hash: ${event_file_obj.hash_sha256.slice(0, 10)}...`}
|
||||
>
|
||||
{#await ae_promises[event_file_obj.event_file_id_random]}
|
||||
<span class="fas fa-spinner fa-spin"></span>
|
||||
Downloading...
|
||||
<span>
|
||||
{#if ae_downloads[event_file_obj.event_file_id_random]}
|
||||
{ae_downloads[event_file_obj.event_file_id_random].percent_completed}%
|
||||
{/if}
|
||||
</span>
|
||||
{:then}
|
||||
<span class="fas fa-paper-plane" class:d_none="{hide_launch_icon}"></span> {ae.util.shorten_filename(event_file_obj.filename, max_filename_length)}
|
||||
{#if ae_promises[event_file_obj.event_file_id_random] === null}
|
||||
<span class="fas fa-exclamation-triangle"></span>
|
||||
Download failed!
|
||||
{/if}
|
||||
{/await}
|
||||
|
||||
</button>
|
||||
|
||||
|
||||
|
||||
<!-- <a
|
||||
href="/event/file/{event_file_obj.event_file_id_random}/download"
|
||||
download
|
||||
class="ae_btn btn_info {btn_size}"
|
||||
on:click={() => {handle_open_file();}}
|
||||
data-hash_sha256={event_file_obj.hash_sha256}
|
||||
data-filename={event_file_obj.filename}
|
||||
title={event_file_obj.filename}
|
||||
>
|
||||
<span class="fas fa-paper-plane" class:d_none="{hide_launch_icon}"></span> {ae.util.shorten_filename(event_file_obj.filename, max_filename_length)}
|
||||
</a> -->
|
||||
{/if}
|
||||
|
||||
<!-- <a href="/event/file/{event_file_obj.event_file_id_random}/download?filename={event_file_obj.filename}&use_os=true" class="ae_btn btn_info {btn_size}">{event_file_obj.filename}</a> -->
|
||||
</span>
|
||||
|
||||
<span class="event_file_meta" class:d_none="{hide_meta}">
|
||||
<span class="event_file_created_on" class:d_none="{hide_created_on}">
|
||||
{ae.util.iso_datetime_formatter(event_file_obj.created_on, 'datetime_short')}
|
||||
</span>
|
||||
<span class="event_file_size" class:d_none="{hide_size}">
|
||||
{#if event_file_obj.file_size}{ae.util.format_bytes(event_file_obj.file_size)}{/if}
|
||||
</span>
|
||||
<span class="event_file_os" class:d_none="{hide_os}">
|
||||
{#if event_file_obj.open_in_os == 'win'}
|
||||
<span class="fab fa-windows"></span> Win
|
||||
{:else if event_file_obj.open_in_os == 'mac'}
|
||||
<span class="fab fa-apple"></span> Mac
|
||||
{:else}
|
||||
<!-- <span class="fas fa-folder-open"></span> -->
|
||||
{/if}
|
||||
</span>
|
||||
|
||||
<!-- {#if ($ae_event_launcher.app_mode == 'native' || $ae_event_launcher.app_mode == 'onsite')} -->
|
||||
<!-- {#if (show_bak_download)} -->
|
||||
<a href="/event/file/{event_file_obj.event_file_id_random}/download" class="event_file_download" class:d_none="{!show_bak_download}" title="Download with original filename and extension"><span class="fas fa-download"></span></a>
|
||||
<!-- {/if} -->
|
||||
</span>
|
||||
|
||||
<!-- <button
|
||||
class="ae_btn btn_xs btn_outline_debug"
|
||||
class:d_none="{hide_api_download}"
|
||||
on:click={() => {
|
||||
// if (!confirm('Download file from API server?')) {
|
||||
// return false;
|
||||
// }
|
||||
download_event_file({ 'event_file_id': event_file_obj.event_file_id_random, 'return_file': true, filename: event_file_obj.filename, auto_download: true, log_lvl: 1 });
|
||||
}}
|
||||
title="Download file from API server?"
|
||||
>
|
||||
<span class="fas fa-download"></span>
|
||||
</button> -->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<style>
|
||||
</style>
|
||||
@@ -0,0 +1,264 @@
|
||||
<script lang="ts">
|
||||
import type { key_val } from '$lib/ae_stores';
|
||||
import { ae_util } from '$lib/ae_utils';
|
||||
import { api } from '$lib/api';
|
||||
import Element_ae_crud from '$lib/element_ae_crud.svelte';
|
||||
import Element_data_store from '$lib/element_data_store.svelte';
|
||||
|
||||
import { liveQuery } from "dexie";
|
||||
// import { core_func } from '$lib/ae_core_functions';
|
||||
// import { db_core } from "$lib/db_core";
|
||||
import { ae_snip, ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger } from '$lib/ae_stores';
|
||||
import { db_events } from "$lib/db_events";
|
||||
import { events_loc, events_sess, events_slct, events_trigger } from '$lib/ae_events_stores';
|
||||
import { events_func } from '$lib/ae_events_functions';
|
||||
|
||||
import Menu_session_list_menu from './menu_session_list.svelte';
|
||||
|
||||
export let event_id: string;
|
||||
export let event_location_id: string;
|
||||
export let slct_event_session_id: null|string;
|
||||
|
||||
export let event_location_id_li: string[] = [];
|
||||
// export let event_session_id_li: string[] = [];
|
||||
|
||||
export let event_location_obj_li: any[] = [];
|
||||
|
||||
export let dq__event_obj: any
|
||||
export let dq__where_type_id_val: string = 'event_id';
|
||||
export let dq__where_eq_id_val: string;
|
||||
|
||||
console.log(`event_location_id_li:`, event_location_id_li);
|
||||
|
||||
|
||||
console.log(`event_location_obj_li:`, event_location_obj_li);
|
||||
$events_trigger = null;
|
||||
|
||||
event_location_id_li = [];
|
||||
|
||||
let tmp_li = []; // This is to prevent the array from constantly updating and triggering the liveQuery.
|
||||
|
||||
for (let i = 0; i < event_location_obj_li.length; i++) {
|
||||
let event_location_obj = event_location_obj_li[i];
|
||||
let event_location_id_random = event_location_obj.event_location_id_random;
|
||||
tmp_li.push(event_location_id_random);
|
||||
}
|
||||
event_location_id_li = tmp_li;
|
||||
console.log(`event_location_id_li:`, event_location_id_li);
|
||||
|
||||
|
||||
|
||||
let lq__event_location_obj_li = liveQuery(
|
||||
() => db_events.locations
|
||||
.where('event_id')
|
||||
.equals(dq__event_obj.id)
|
||||
.sortBy('name')
|
||||
);
|
||||
|
||||
let lq_kv__event_location_obj_li = liveQuery(
|
||||
() => db_events.locations
|
||||
.bulkGet(event_location_id_li)
|
||||
);
|
||||
|
||||
let lq__event_session_obj_li = liveQuery(
|
||||
() => db_events.sessions
|
||||
.where('event_location_id')
|
||||
.equals(event_location_id ?? '7mYbLvYMPho')
|
||||
.sortBy('name')
|
||||
);
|
||||
|
||||
let lq_kv__event_session_obj_li = liveQuery(
|
||||
() => db_events.sessions
|
||||
.bulkGet(event_session_id_li)
|
||||
);
|
||||
|
||||
// let lq__event_presenter_obj_li = liveQuery(
|
||||
// () => db_events.presenters
|
||||
// .where(dq__where_type_id_val)
|
||||
// .equals(dq__where_eq_id_val)
|
||||
// .sortBy('name')
|
||||
// );
|
||||
|
||||
let qry__enabled = 'enabled';
|
||||
let qry__hidden = 'not_hidden';
|
||||
if ($ae_loc.administrator_access) {
|
||||
qry__enabled = 'all';
|
||||
qry__hidden = 'all';
|
||||
} else if ($ae_loc.trusted_access) {
|
||||
qry__enabled = 'enabled';
|
||||
qry__hidden = 'all';
|
||||
} else {
|
||||
qry__enabled = 'enabled';
|
||||
qry__hidden = 'not_hidden';
|
||||
}
|
||||
|
||||
let load_event_session_obj_li: any = {};
|
||||
let event_session_id_li: string[] = [];
|
||||
$: if (event_location_id) {
|
||||
console.log(`event_location_id:`, event_location_id);
|
||||
dq__where_type_id_val = 'event_location_id';
|
||||
dq__where_eq_id_val = event_location_id;
|
||||
|
||||
// $slct.event_location_id = event_location_id;
|
||||
// $slct_trigger = 'event_location_li';
|
||||
|
||||
$events_slct.event_location_id = event_location_id;
|
||||
$events_trigger = 'event_location_li';
|
||||
|
||||
load_event_session_obj_li = events_func.handle_load_ae_obj_li__event_session({
|
||||
api_cfg: $ae_api,
|
||||
for_obj_type: 'event_location',
|
||||
for_obj_id: event_location_id,
|
||||
params: {qry__enabled: qry__enabled, qry__limit: 550},
|
||||
try_cache: false,
|
||||
log_lvl: 1,
|
||||
})
|
||||
.then(function (load_results) {
|
||||
console.log(`load_results = `, load_results);
|
||||
|
||||
event_session_id_li = [];
|
||||
|
||||
let tmp_li = []; // This is to prevent the array from constantly updating and triggering the liveQuery.
|
||||
|
||||
for (let i = 0; i < load_results.length; i++) {
|
||||
let event_session_obj = load_results[i];
|
||||
let event_session_id_random = event_session_obj.event_session_id_random;
|
||||
tmp_li.push(event_session_id_random);
|
||||
}
|
||||
event_session_id_li = tmp_li;
|
||||
|
||||
// console.log(`event_session_id_li:`, event_session_id_li);
|
||||
|
||||
return load_results;
|
||||
});
|
||||
// console.log(`load_event_session_obj_li = `, load_event_session_obj_li);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// $: if ($slct.event_session_obj_li) {
|
||||
// event_session_id_li = [];
|
||||
|
||||
// let tmp_li = []; // This is to prevent the array from constantly updating and triggering the liveQuery.
|
||||
|
||||
// for (let i = 0; i < $slct.event_session_obj_li.length; i++) {
|
||||
// let event_session_obj = $slct.event_session_obj_li[i];
|
||||
// let event_session_id_random = event_session_obj.event_session_id_random;
|
||||
// tmp_li.push(event_session_id_random);
|
||||
// }
|
||||
// event_session_id_li = tmp_li;
|
||||
// }
|
||||
|
||||
|
||||
// $: if ($lq__event_session_obj_li && $lq__event_session_obj_li.length && $events_trigger == 'event_location_id') {
|
||||
// console.log(`$lq__event_session_obj_li:`, $lq__event_session_obj_li);
|
||||
// $events_trigger = null;
|
||||
|
||||
// event_session_id_li = [];
|
||||
|
||||
// let tmp_li = []; // This is to prevent the array from constantly updating and triggering the liveQuery.
|
||||
|
||||
// for (let i = 0; i < $lq__event_session_obj_li.length; i++) {
|
||||
// let event_session_obj = $lq__event_session_obj_li[i];
|
||||
// let event_session_id_random = event_session_obj.event_session_id_random;
|
||||
// tmp_li.push(event_session_id_random);
|
||||
// }
|
||||
// event_session_id_li = tmp_li;
|
||||
// console.log(`event_session_id_li:`, event_session_id_li);
|
||||
// }
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<h2 class="">{dq__event_obj?.cfg_json.short_name ?? 'loading...'}</h2>
|
||||
|
||||
|
||||
{#if $lq_kv__event_location_obj_li && $lq_kv__event_location_obj_li.length > 0}
|
||||
<strong class="text-sm">
|
||||
Locations:
|
||||
{#if $ae_loc.administrator_access}
|
||||
({$lq_kv__event_location_obj_li?.length})
|
||||
{/if}
|
||||
</strong>
|
||||
<select
|
||||
class="select text-sm"
|
||||
bind:value={event_location_id}
|
||||
on:change={() => {
|
||||
console.log(`event_location_id:`, event_location_id);
|
||||
|
||||
slct_event_session_id = null;
|
||||
|
||||
if (event_location_id) {
|
||||
|
||||
dq__where_type_id_val = 'event_location_id';
|
||||
dq__where_eq_id_val = event_location_id;
|
||||
|
||||
// $slct.event_location_id = event_location_id;
|
||||
// $slct_trigger = 'event_location_li';
|
||||
|
||||
$events_slct.event_location_id = event_location_id;
|
||||
$events_trigger = 'event_location_li';
|
||||
|
||||
load_event_session_obj_li = events_func.handle_load_ae_obj_li__event_session({
|
||||
api_cfg: $ae_api,
|
||||
for_obj_type: 'event_location',
|
||||
for_obj_id: event_location_id,
|
||||
params: {qry__enabled: 'enabled', qry__limit: 550},
|
||||
try_cache: false,
|
||||
log_lvl: 1,
|
||||
})
|
||||
.then(function (load_results) {
|
||||
console.log(`load_results = `, load_results);
|
||||
|
||||
event_session_id_li = [];
|
||||
|
||||
let tmp_li = []; // This is to prevent the array from constantly updating and triggering the liveQuery.
|
||||
|
||||
for (let i = 0; i < load_results.length; i++) {
|
||||
let event_session_obj = load_results[i];
|
||||
let event_session_id_random = event_session_obj.event_session_id_random;
|
||||
tmp_li.push(event_session_id_random);
|
||||
}
|
||||
event_session_id_li = tmp_li;
|
||||
|
||||
console.log(`event_session_id_li:`, event_session_id_li);
|
||||
|
||||
return load_results;
|
||||
});
|
||||
|
||||
}
|
||||
}}
|
||||
>
|
||||
<option value="">Select a location</option>
|
||||
{#each $lq_kv__event_location_obj_li as event_location_obj}
|
||||
<option
|
||||
value={event_location_obj?.id}
|
||||
>
|
||||
{event_location_obj?.name}
|
||||
</option>
|
||||
{/each}
|
||||
</select>
|
||||
{:else}
|
||||
<p class="text-sm">
|
||||
No locations found.
|
||||
Event ID: {dq__event_obj.id}
|
||||
</p>
|
||||
{/if}
|
||||
<!-- {event_location_id} -->
|
||||
|
||||
|
||||
|
||||
{#await load_event_session_obj_li}
|
||||
<p>Loading...</p>
|
||||
{:then event_session_obj_li}
|
||||
|
||||
{#if event_session_id_li && event_session_id_li.length > 0}
|
||||
<Menu_session_list_menu
|
||||
bind:slct_event_session_id={slct_event_session_id}
|
||||
event_session_id_li={event_session_id_li}
|
||||
/>
|
||||
{/if}
|
||||
|
||||
{/await}
|
||||
|
||||
<!-- {$events_slct.event_session_id} -->
|
||||
@@ -0,0 +1,191 @@
|
||||
<script lang="ts">
|
||||
|
||||
import type { key_val } from '$lib/ae_stores';
|
||||
import { ae_util } from '$lib/ae_utils';
|
||||
import { api } from '$lib/api';
|
||||
import Element_ae_crud from '$lib/element_ae_crud.svelte';
|
||||
import Element_data_store from '$lib/element_data_store.svelte';
|
||||
|
||||
import { liveQuery } from "dexie";
|
||||
// import { core_func } from '$lib/ae_core_functions';
|
||||
// import { db_core } from "$lib/db_core";
|
||||
import { ae_snip, ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger } from '$lib/ae_stores';
|
||||
import { db_events } from "$lib/db_events";
|
||||
import { events_loc, events_sess, events_slct, events_trigger } from '$lib/ae_events_stores';
|
||||
import { events_func } from '$lib/ae_events_functions';
|
||||
|
||||
export let slct_event_session_id: string;
|
||||
|
||||
let load_event_session_obj = events_func.handle_load_ae_obj_id__event_session({
|
||||
api_cfg: $ae_api,
|
||||
event_session_id: slct_event_session_id,
|
||||
try_cache: false
|
||||
});
|
||||
|
||||
// let lq__event_session_obj = liveQuery(
|
||||
// () => db_events.sessions.get(slct_event_session_id)
|
||||
// );
|
||||
|
||||
let lq__event_session_obj = liveQuery(
|
||||
() => db_events.sessions.get($events_slct.event_session_id)
|
||||
);
|
||||
|
||||
// import Event_launcher_file_cont from './launcher_file_cont.svelte';
|
||||
|
||||
|
||||
export let hide_description: boolean = true;
|
||||
export let show_designations: boolean = false;
|
||||
export let show_email: boolean = false;
|
||||
|
||||
let show_modal_upload_files: boolean = false;
|
||||
let link_to_type: null|string = null;
|
||||
let link_to_id: null|string = null;
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
{$events_slct.event_session_id}
|
||||
|
||||
<section class="event_launcher_session_view">
|
||||
<!-- <slot name="event_session_message">event session message</slot> -->
|
||||
|
||||
{#if $events_slct.event_session_obj && $events_slct.event_session_obj.event_session_id_random}
|
||||
<header class="event_session_about">
|
||||
<div class="event_session_datetimes">
|
||||
<strong>{ae_util.iso_datetime_formatter($events_slct.event_session_obj.start_datetime, 'week_long')}</strong>
|
||||
{ae_util.iso_datetime_formatter($events_slct.event_session_obj.start_datetime, 'date_long_month_day')}
|
||||
<strong>{ae_util.iso_datetime_formatter($events_slct.event_session_obj.start_datetime, 'time_short')}</strong>
|
||||
–
|
||||
{ae_util.iso_datetime_formatter($events_slct.event_session_obj.end_datetime, 'time_short')}
|
||||
</div>
|
||||
<h2>
|
||||
{$events_slct.event_session_obj.name}
|
||||
{#if $events_slct.event_session_obj.code}
|
||||
{$events_slct.event_session_obj.code}
|
||||
{/if}
|
||||
</h2>
|
||||
</header>
|
||||
|
||||
<section class="event_session_description text-xs" class:d_none="{hide_description}">
|
||||
{@html $events_slct.event_session_obj.description}
|
||||
</section>
|
||||
|
||||
{#if $events_slct.event_session_obj?.event_file_list && $events_slct.event_session_obj?.event_file_list.length }
|
||||
<section class="event_session_file_list">
|
||||
<div>
|
||||
<strong>Session Files:</strong>
|
||||
{#if $ae_loc.trusted_access || $events_loc.launcher.trusted_access}
|
||||
<button on:click={async () => {
|
||||
show_modal_upload_files = true;
|
||||
link_to_type = 'event_session';
|
||||
link_to_id = $events_slct.event_session_obj.event_session_id_random;
|
||||
}}
|
||||
type="button" class="ae_btn btn_outline_warning btn_xs" title="Upload updated or additional files"
|
||||
>
|
||||
<span class="fas fa-upload"></span> Upload Session File(s)
|
||||
</button>
|
||||
{/if}
|
||||
</div>
|
||||
<ul>
|
||||
{#each $events_slct.event_session_obj.event_file_list as event_file_obj, index}
|
||||
<li class:d_none={!$events_loc.launcher.show_hidden_sessions && event_file_obj.hide}>
|
||||
<!-- <Event_launcher_file_cont {event_file_obj} hide_created_on={false} show_bak_download={($ae_loc.trusted_access || $events_loc.launcher.trusted_access)} open_file_as={$events_slct.event_session_obj.type_code} poster_title={$events_slct.event_session_obj.title} /> -->
|
||||
</li>
|
||||
{/each}
|
||||
</ul>
|
||||
</section>
|
||||
{/if}
|
||||
|
||||
<section class="event_presentation_list">
|
||||
<!-- <div><strong>Presentations:</strong></div> -->
|
||||
{#if $events_slct.event_presentation_obj_li && $events_slct.event_presentation_obj_li.length}
|
||||
<ul class="event_presentation_list">
|
||||
{#each $events_slct.event_presentation_obj_li as event_presentation_obj, index}
|
||||
<li>
|
||||
<div class="event_presentation_datetime_name">
|
||||
{#if event_presentation_obj.start_datetime}
|
||||
<span class="event_presentation_datetime"><strong>{ae_util.iso_datetime_formatter(event_presentation_obj.start_datetime, 'time_short')}</strong></span>
|
||||
{/if}
|
||||
|
||||
<span class="event_presentation_name">{event_presentation_obj.name}</span>
|
||||
|
||||
</div>
|
||||
{#if event_presentation_obj.event_presenter_list.length}
|
||||
<ul>
|
||||
{#each event_presentation_obj.event_presenter_list as event_presenter_obj, index}
|
||||
<li>
|
||||
<strong>
|
||||
{#if event_presenter_obj.display_name }{event_presenter_obj.display_name}{:else }{event_presenter_obj.full_name}{/if }
|
||||
{#if show_designations && event_presenter_obj.designations}<span class="event_presenter_designations">{event_presenter_obj.designations}</span>{/if}
|
||||
{#if show_email && event_presenter_obj.email}<span class="event_presenter_email">{event_presenter_obj.email}</span>{/if}
|
||||
</strong>
|
||||
|
||||
{#if $ae_loc.trusted_access || $events_loc.launcher.trusted_access}
|
||||
<button on:click={async () => {
|
||||
show_modal_upload_files = true;
|
||||
link_to_type = 'event_presenter';
|
||||
link_to_id = event_presenter_obj.event_presenter_id_random;
|
||||
}}
|
||||
type="button" class="ae_btn btn_outline_warning btn_xs" title="Upload updated or additional files"
|
||||
>
|
||||
<span class="fas fa-upload"></span> Upload Presenter File(s)
|
||||
</button>
|
||||
{/if}
|
||||
|
||||
{#if event_presenter_obj.event_file_list.length }
|
||||
<ul class="btn_list">
|
||||
{#each event_presenter_obj.event_file_list as event_file_obj, index}
|
||||
<li class:d_none={!$events_loc.launcher.show_hidden_sessions && event_file_obj.hide}>
|
||||
<!-- <Event_launcher_file_cont {event_file_obj} hide_created_on={false} show_bak_download={($ae_loc.trusted_access || $events_loc.launcher.trusted_access)} open_file_as={$events_slct.event_session_obj.type_code} poster_title={`${event_presenter_obj.full_name} - ${event_presentation_obj.name}`} /> -->
|
||||
</li>
|
||||
{/each}
|
||||
</ul>
|
||||
{:else}
|
||||
<span class="event_launcher_no_presenter_files">No files to display</span>
|
||||
{/if}
|
||||
|
||||
</li>
|
||||
{/each}
|
||||
</ul>
|
||||
{:else}
|
||||
<span class="event_launcher_no_presententations">No presentations to display</span>
|
||||
{/if}
|
||||
</li>
|
||||
{/each}
|
||||
</ul>
|
||||
{:else}
|
||||
<p>No presentations available to display.</p>
|
||||
{/if}
|
||||
</section>
|
||||
{:else}
|
||||
<span class="fas fa-spinner fa-spin"></span>
|
||||
No session selected
|
||||
{/if}
|
||||
</section>
|
||||
|
||||
|
||||
<!-- {#if show_modal_upload_files}
|
||||
<Element_modal_v3
|
||||
show = { true }
|
||||
modal_cover_body = { true }
|
||||
on:close={ () => {show_modal_upload_files=false;} }
|
||||
>
|
||||
|
||||
<span slot="header_title">Upload New File(s)</span>
|
||||
|
||||
<span slot="body">
|
||||
|
||||
<Event_file_upload_form
|
||||
link_to_type={link_to_type}
|
||||
link_to_id={link_to_id}
|
||||
display_minimal={true}
|
||||
on:event_file_obj_li_updated={handle_event_file_obj_li_updated}
|
||||
/>
|
||||
|
||||
</span>
|
||||
</Element_modal_v3>
|
||||
{/if} -->
|
||||
|
||||
|
||||
<style>
|
||||
</style>
|
||||
@@ -0,0 +1,75 @@
|
||||
<script lang="ts">
|
||||
|
||||
import { liveQuery } from "dexie";
|
||||
import { db_events } from "$lib/db_events";
|
||||
import { ae_snip, ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger } from '$lib/ae_stores';
|
||||
import { events_loc, events_sess, events_slct, events_trigger } from '$lib/ae_events_stores';
|
||||
import { events_func } from '$lib/ae_events_functions';
|
||||
|
||||
export let slct_event_session_id: any;
|
||||
export let event_session_id_li: Array<string> = [''];
|
||||
|
||||
// export let lq__event_session_obj_li: any;
|
||||
|
||||
// export let dq__where_type_id_val: string = 'event_location_id';
|
||||
// export let dq__where_eq_id_val: string;
|
||||
|
||||
// let lq__event_session_obj_li = liveQuery(
|
||||
// () => db_events.sessions
|
||||
// .where(dq__where_type_id_val)
|
||||
// .equals(dq__where_eq_id_val)
|
||||
// .sortBy('name')
|
||||
// );
|
||||
|
||||
let lq_kv__event_session_obj_li = liveQuery(
|
||||
() => db_events.sessions
|
||||
.bulkGet(event_session_id_li)
|
||||
);
|
||||
|
||||
</script>
|
||||
|
||||
{#if $lq_kv__event_session_obj_li && $lq_kv__event_session_obj_li.length > 0}
|
||||
<strong class="text-sm">
|
||||
Sessions:
|
||||
{#if $ae_loc.administrator_access}
|
||||
({$lq_kv__event_session_obj_li?.length})
|
||||
{/if}
|
||||
</strong>
|
||||
<ul
|
||||
class="space-y-1 px-0"
|
||||
>
|
||||
{#each $lq_kv__event_session_obj_li as event_session_obj}
|
||||
<li>
|
||||
<button
|
||||
class="btn btn-sm variant-ghost-primary hover:variant-filled-primary overflow-hidden text-xs w-full max-w-full text-left transition-all"
|
||||
on:click={() => {
|
||||
$events_trigger = null;
|
||||
slct_event_session_id = null;
|
||||
$events_slct.event_session_id = null;
|
||||
// dq__where_type_id_val = 'event_session_id';
|
||||
// dq__where_eq_id_val = event_session_obj.id;
|
||||
// $events_slct = {...$events_slct};
|
||||
$events_slct.event_session_id = event_session_obj?.id;
|
||||
$events_slct.event_session_obj = event_session_obj;
|
||||
slct_event_session_id = event_session_obj?.id;
|
||||
$events_trigger = 'load__event_session_obj';
|
||||
|
||||
let load_event_session_obj = events_func.handle_load_ae_obj_id__event_session({
|
||||
api_cfg: $ae_api,
|
||||
event_session_id: slct_event_session_id,
|
||||
try_cache: false
|
||||
});
|
||||
}}
|
||||
>
|
||||
{event_session_obj?.name}
|
||||
</button>
|
||||
</li>
|
||||
{/each}
|
||||
</ul>
|
||||
{:else}
|
||||
<p class="text-sm">
|
||||
No sessions found.
|
||||
<!-- {dq__where_eq_id_val} -->
|
||||
</p>
|
||||
{/if}
|
||||
<!-- Also location ID: {dq__where_eq_id_val}? -->
|
||||
@@ -35,8 +35,9 @@ export async function load({ params, parent }) { // route
|
||||
|
||||
let load_event_session_obj_li = events_func.handle_load_ae_obj_li__event_session({
|
||||
api_cfg: ae_acct.api,
|
||||
event_id: event_id,
|
||||
params: {enabled: 'all', qry__limit: 550},
|
||||
for_obj_type: 'event',
|
||||
for_obj_id: event_id,
|
||||
params: {qry__enabled: 'enabled', qry__limit: 550},
|
||||
try_cache: false
|
||||
});
|
||||
console.log(`load_event_session_obj_li = `, load_event_session_obj_li);
|
||||
|
||||
Reference in New Issue
Block a user