QR reader

This commit is contained in:
Ota Prokopec 2022-11-19 18:25:34 +01:00
parent 8ed3de3349
commit 6967277d96
9 changed files with 476 additions and 0 deletions

310
package-lock.json generated
View File

@ -9,7 +9,12 @@
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"@beyonk/svelte-mapbox": "^8.1.4", "@beyonk/svelte-mapbox": "^8.1.4",
"html5-qrcode": "^2.3.0",
"mapbox-gl": "^2.10.0", "mapbox-gl": "^2.10.0",
"qr-scanner": "^1.4.1",
"qrcode-scanner-svelte": "^1.0.0",
"scan-qr-svelte": "^0.0.3",
"svelte-qr-scanner": "^1.1.0",
"svelte-routing": "^1.6.0", "svelte-routing": "^1.6.0",
"yallist": "^4.0.0" "yallist": "^4.0.0"
}, },
@ -204,6 +209,11 @@
"integrity": "sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ==", "integrity": "sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ==",
"dev": true "dev": true
}, },
"node_modules/@types/offscreencanvas": {
"version": "2019.7.0",
"resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.0.tgz",
"integrity": "sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg=="
},
"node_modules/@types/pug": { "node_modules/@types/pug": {
"version": "2.0.6", "version": "2.0.6",
"resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz",
@ -303,6 +313,30 @@
"postcss": "^8.1.0" "postcss": "^8.1.0"
} }
}, },
"node_modules/babel-polyfill": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz",
"integrity": "sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ==",
"dependencies": {
"babel-runtime": "^6.26.0",
"core-js": "^2.5.0",
"regenerator-runtime": "^0.10.5"
}
},
"node_modules/babel-runtime": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
"integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==",
"dependencies": {
"core-js": "^2.4.0",
"regenerator-runtime": "^0.11.0"
}
},
"node_modules/babel-runtime/node_modules/regenerator-runtime": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
},
"node_modules/balanced-match": { "node_modules/balanced-match": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@ -441,6 +475,13 @@
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true "dev": true
}, },
"node_modules/core-js": {
"version": "2.6.12",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
"integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
"deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
"hasInstallScript": true
},
"node_modules/csscolorparser": { "node_modules/csscolorparser": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz", "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz",
@ -992,6 +1033,24 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0" "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
} }
}, },
"node_modules/fsm-as-promised": {
"version": "0.13.2",
"resolved": "https://registry.npmjs.org/fsm-as-promised/-/fsm-as-promised-0.13.2.tgz",
"integrity": "sha512-1tjwtVOEzqygbG3vHbfaQ4XJql5H0Zv2hMm7Mx1DndCeyTYjHNwgklsrC8fTHUslB0eHMSg9HBMV5QZodJpAcg==",
"dependencies": {
"es6-promise": "^4.0.2",
"lodash": "^4.16.2",
"stampit": "^3.0.1"
},
"engines": {
"node": ">=4"
}
},
"node_modules/fsm-as-promised/node_modules/es6-promise": {
"version": "4.2.8",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
"integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w=="
},
"node_modules/function-bind": { "node_modules/function-bind": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@ -1074,6 +1133,11 @@
"node": ">= 0.4.0" "node": ">= 0.4.0"
} }
}, },
"node_modules/html5-qrcode": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/html5-qrcode/-/html5-qrcode-2.3.0.tgz",
"integrity": "sha512-uMUxak0YHgInAwdQAttkuJkGq3qvXgaQEq39CubSr2Xsrk6QDwx8lGKprqRLh4JOw6Rd+x5flQ2oHJjhDRvwNQ=="
},
"node_modules/ieee754": { "node_modules/ieee754": {
"version": "1.2.1", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
@ -1115,6 +1179,17 @@
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true "dev": true
}, },
"node_modules/instascan": {
"version": "1.0.0",
"resolved": "git+ssh://git@github.com/schmich/instascan.git#b0f9519f2dd2a6661e67066d6ed678e621dd5ce2",
"license": "MIT",
"dependencies": {
"babel-polyfill": "^6.9.1",
"fsm-as-promised": "^0.13.0",
"visibilityjs": "^1.2.3",
"webrtc-adapter": "^1.4.0"
}
},
"node_modules/is-binary-path": { "node_modules/is-binary-path": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@ -1169,6 +1244,11 @@
"node": ">=0.12.0" "node": ">=0.12.0"
} }
}, },
"node_modules/jsqr": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz",
"integrity": "sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A=="
},
"node_modules/kdbush": { "node_modules/kdbush": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz", "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz",
@ -1192,6 +1272,11 @@
"node": ">=10" "node": ">=10"
} }
}, },
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"node_modules/lower-case": { "node_modules/lower-case": {
"version": "2.0.2", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
@ -1575,6 +1660,22 @@
"resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz",
"integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==" "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw=="
}, },
"node_modules/qr-scanner": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/qr-scanner/-/qr-scanner-1.4.1.tgz",
"integrity": "sha512-xiR90NONHTfTwaFgW/ihlqjGMIZg6ExHDOvGQRba1TvV+WVw7GoDArIOt21e+RO+9WiO4AJJq+mwc5f4BnGH3w==",
"dependencies": {
"@types/offscreencanvas": "^2019.6.4"
}
},
"node_modules/qrcode-scanner-svelte": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/qrcode-scanner-svelte/-/qrcode-scanner-svelte-1.0.0.tgz",
"integrity": "sha512-teI93sQETcRUxDbeoLfn25aEan78v/eVewTB5+SbGAOH6cRk/Wasqwlvr+5g0ca9PeNzG4f3I4LUZlKG7OEouA==",
"dependencies": {
"jsqr": "^1.4.0"
}
},
"node_modules/queue-microtask": { "node_modules/queue-microtask": {
"version": "1.2.3", "version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@ -1633,6 +1734,11 @@
"node": ">=8.10.0" "node": ">=8.10.0"
} }
}, },
"node_modules/regenerator-runtime": {
"version": "0.10.5",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
"integrity": "sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w=="
},
"node_modules/resolve": { "node_modules/resolve": {
"version": "1.22.1", "version": "1.22.1",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
@ -1752,6 +1858,32 @@
"node": ">=12.0.0" "node": ">=12.0.0"
} }
}, },
"node_modules/scan-qr-svelte": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/scan-qr-svelte/-/scan-qr-svelte-0.0.3.tgz",
"integrity": "sha512-S1JVi24g6wlkIoPqWXsFkdMbOPuEZfNtAoIA8ZAsACtlkL8I+foCL5gksxo4gBprtMjvlT1NCrnas90QhadkNg==",
"dependencies": {
"svelte2tsx": "^0.5.6"
}
},
"node_modules/scan-qr-svelte/node_modules/svelte2tsx": {
"version": "0.5.20",
"resolved": "https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.5.20.tgz",
"integrity": "sha512-yNHmN/uoAnJ7d1XqVohiNA6TMFOxibHyEddUAHVt1PiLXtbwAJF3WaGYlg8QbOdoXzOVsVNCAlqRUIdULUm+OA==",
"dependencies": {
"dedent-js": "^1.0.1",
"pascal-case": "^3.1.1"
},
"peerDependencies": {
"svelte": "^3.24",
"typescript": "^4.1.2"
}
},
"node_modules/sdp": {
"version": "1.5.4",
"resolved": "https://registry.npmjs.org/sdp/-/sdp-1.5.4.tgz",
"integrity": "sha512-9x0+fpJHW2bbqtIktmL+H9m+BswgurPVPhWrur4cCZPDWDSsdGYvRBaKhDXlnNCD1b/Xi8cOTG2u703CTQuwgg=="
},
"node_modules/sorcery": { "node_modules/sorcery": {
"version": "0.10.0", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz",
@ -1782,6 +1914,11 @@
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
"dev": true "dev": true
}, },
"node_modules/stampit": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/stampit/-/stampit-3.2.1.tgz",
"integrity": "sha512-2QXR/GWaz3qgLUvyTjIyvWLdT9iGC8rjZdyAt2IduajSCJUusehWJ1QAKmXdXWhJSofYJyCNZHCmp5yETiV4CA=="
},
"node_modules/strip-indent": { "node_modules/strip-indent": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
@ -1909,6 +2046,14 @@
"sourcemap-codec": "^1.4.8" "sourcemap-codec": "^1.4.8"
} }
}, },
"node_modules/svelte-qr-scanner": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/svelte-qr-scanner/-/svelte-qr-scanner-1.1.0.tgz",
"integrity": "sha512-8ybSBhGxceNpfCZYgEcoDsX8QVd59X+GhTw7+gUNRYE9qTXPqb7zFMRElLLozd3NTTSf6r3RCG87YKlN0na0DQ==",
"dependencies": {
"instascan": "git+https://github.com/schmich/instascan.git"
}
},
"node_modules/svelte-routing": { "node_modules/svelte-routing": {
"version": "1.6.0", "version": "1.6.0",
"resolved": "https://registry.npmjs.org/svelte-routing/-/svelte-routing-1.6.0.tgz", "resolved": "https://registry.npmjs.org/svelte-routing/-/svelte-routing-1.6.0.tgz",
@ -2090,6 +2235,11 @@
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
"dev": true "dev": true
}, },
"node_modules/visibilityjs": {
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/visibilityjs/-/visibilityjs-1.2.8.tgz",
"integrity": "sha512-Y+aL3OUX88b+/VSmkmC2ApuLbf0grzbNLpCfIDSw3BzTU6PqcPsdgIOaw8b+eZoy+DdQqnVN3y/Evow9vQq9Ig=="
},
"node_modules/vite": { "node_modules/vite": {
"version": "3.1.6", "version": "3.1.6",
"resolved": "https://registry.npmjs.org/vite/-/vite-3.1.6.tgz", "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.6.tgz",
@ -2141,6 +2291,17 @@
"pbf": "^3.2.1" "pbf": "^3.2.1"
} }
}, },
"node_modules/webrtc-adapter": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/webrtc-adapter/-/webrtc-adapter-1.4.0.tgz",
"integrity": "sha512-QY3cFbkvUW9kSim9XzzKr7jl1zdfxh7ii9j67kZz+Jc/HsKOXcC+mEmovbTID3QthyZCiYsWz2Qs6aUwxEDa/w==",
"dependencies": {
"sdp": "^1.0.0"
},
"engines": {
"npm": "~3.0.0"
}
},
"node_modules/wrappy": { "node_modules/wrappy": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
@ -2299,6 +2460,11 @@
"integrity": "sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ==", "integrity": "sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ==",
"dev": true "dev": true
}, },
"@types/offscreencanvas": {
"version": "2019.7.0",
"resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.0.tgz",
"integrity": "sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg=="
},
"@types/pug": { "@types/pug": {
"version": "2.0.6", "version": "2.0.6",
"resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz",
@ -2367,6 +2533,32 @@
"postcss-value-parser": "^4.2.0" "postcss-value-parser": "^4.2.0"
} }
}, },
"babel-polyfill": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz",
"integrity": "sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ==",
"requires": {
"babel-runtime": "^6.26.0",
"core-js": "^2.5.0",
"regenerator-runtime": "^0.10.5"
}
},
"babel-runtime": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
"integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==",
"requires": {
"core-js": "^2.4.0",
"regenerator-runtime": "^0.11.0"
},
"dependencies": {
"regenerator-runtime": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
}
}
},
"balanced-match": { "balanced-match": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@ -2456,6 +2648,11 @@
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true "dev": true
}, },
"core-js": {
"version": "2.6.12",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
"integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ=="
},
"csscolorparser": { "csscolorparser": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz", "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz",
@ -2771,6 +2968,23 @@
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"fsm-as-promised": {
"version": "0.13.2",
"resolved": "https://registry.npmjs.org/fsm-as-promised/-/fsm-as-promised-0.13.2.tgz",
"integrity": "sha512-1tjwtVOEzqygbG3vHbfaQ4XJql5H0Zv2hMm7Mx1DndCeyTYjHNwgklsrC8fTHUslB0eHMSg9HBMV5QZodJpAcg==",
"requires": {
"es6-promise": "^4.0.2",
"lodash": "^4.16.2",
"stampit": "^3.0.1"
},
"dependencies": {
"es6-promise": {
"version": "4.2.8",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
"integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w=="
}
}
},
"function-bind": { "function-bind": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@ -2835,6 +3049,11 @@
"function-bind": "^1.1.1" "function-bind": "^1.1.1"
} }
}, },
"html5-qrcode": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/html5-qrcode/-/html5-qrcode-2.3.0.tgz",
"integrity": "sha512-uMUxak0YHgInAwdQAttkuJkGq3qvXgaQEq39CubSr2Xsrk6QDwx8lGKprqRLh4JOw6Rd+x5flQ2oHJjhDRvwNQ=="
},
"ieee754": { "ieee754": {
"version": "1.2.1", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
@ -2862,6 +3081,16 @@
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true "dev": true
}, },
"instascan": {
"version": "git+ssh://git@github.com/schmich/instascan.git#b0f9519f2dd2a6661e67066d6ed678e621dd5ce2",
"from": "instascan@git+https://github.com/schmich/instascan.git",
"requires": {
"babel-polyfill": "^6.9.1",
"fsm-as-promised": "^0.13.0",
"visibilityjs": "^1.2.3",
"webrtc-adapter": "^1.4.0"
}
},
"is-binary-path": { "is-binary-path": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@ -2901,6 +3130,11 @@
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true "dev": true
}, },
"jsqr": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz",
"integrity": "sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A=="
},
"kdbush": { "kdbush": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz", "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz",
@ -2918,6 +3152,11 @@
"integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==",
"dev": true "dev": true
}, },
"lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"lower-case": { "lower-case": {
"version": "2.0.2", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
@ -3192,6 +3431,22 @@
"resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz",
"integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==" "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw=="
}, },
"qr-scanner": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/qr-scanner/-/qr-scanner-1.4.1.tgz",
"integrity": "sha512-xiR90NONHTfTwaFgW/ihlqjGMIZg6ExHDOvGQRba1TvV+WVw7GoDArIOt21e+RO+9WiO4AJJq+mwc5f4BnGH3w==",
"requires": {
"@types/offscreencanvas": "^2019.6.4"
}
},
"qrcode-scanner-svelte": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/qrcode-scanner-svelte/-/qrcode-scanner-svelte-1.0.0.tgz",
"integrity": "sha512-teI93sQETcRUxDbeoLfn25aEan78v/eVewTB5+SbGAOH6cRk/Wasqwlvr+5g0ca9PeNzG4f3I4LUZlKG7OEouA==",
"requires": {
"jsqr": "^1.4.0"
}
},
"queue-microtask": { "queue-microtask": {
"version": "1.2.3", "version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@ -3227,6 +3482,11 @@
"picomatch": "^2.2.1" "picomatch": "^2.2.1"
} }
}, },
"regenerator-runtime": {
"version": "0.10.5",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
"integrity": "sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w=="
},
"resolve": { "resolve": {
"version": "1.22.1", "version": "1.22.1",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
@ -3307,6 +3567,30 @@
"source-map-js": ">=0.6.2 <2.0.0" "source-map-js": ">=0.6.2 <2.0.0"
} }
}, },
"scan-qr-svelte": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/scan-qr-svelte/-/scan-qr-svelte-0.0.3.tgz",
"integrity": "sha512-S1JVi24g6wlkIoPqWXsFkdMbOPuEZfNtAoIA8ZAsACtlkL8I+foCL5gksxo4gBprtMjvlT1NCrnas90QhadkNg==",
"requires": {
"svelte2tsx": "^0.5.6"
},
"dependencies": {
"svelte2tsx": {
"version": "0.5.20",
"resolved": "https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.5.20.tgz",
"integrity": "sha512-yNHmN/uoAnJ7d1XqVohiNA6TMFOxibHyEddUAHVt1PiLXtbwAJF3WaGYlg8QbOdoXzOVsVNCAlqRUIdULUm+OA==",
"requires": {
"dedent-js": "^1.0.1",
"pascal-case": "^3.1.1"
}
}
}
},
"sdp": {
"version": "1.5.4",
"resolved": "https://registry.npmjs.org/sdp/-/sdp-1.5.4.tgz",
"integrity": "sha512-9x0+fpJHW2bbqtIktmL+H9m+BswgurPVPhWrur4cCZPDWDSsdGYvRBaKhDXlnNCD1b/Xi8cOTG2u703CTQuwgg=="
},
"sorcery": { "sorcery": {
"version": "0.10.0", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz",
@ -3331,6 +3615,11 @@
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
"dev": true "dev": true
}, },
"stampit": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/stampit/-/stampit-3.2.1.tgz",
"integrity": "sha512-2QXR/GWaz3qgLUvyTjIyvWLdT9iGC8rjZdyAt2IduajSCJUusehWJ1QAKmXdXWhJSofYJyCNZHCmp5yETiV4CA=="
},
"strip-indent": { "strip-indent": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
@ -3391,6 +3680,14 @@
} }
} }
}, },
"svelte-qr-scanner": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/svelte-qr-scanner/-/svelte-qr-scanner-1.1.0.tgz",
"integrity": "sha512-8ybSBhGxceNpfCZYgEcoDsX8QVd59X+GhTw7+gUNRYE9qTXPqb7zFMRElLLozd3NTTSf6r3RCG87YKlN0na0DQ==",
"requires": {
"instascan": "git+https://github.com/schmich/instascan.git"
}
},
"svelte-routing": { "svelte-routing": {
"version": "1.6.0", "version": "1.6.0",
"resolved": "https://registry.npmjs.org/svelte-routing/-/svelte-routing-1.6.0.tgz", "resolved": "https://registry.npmjs.org/svelte-routing/-/svelte-routing-1.6.0.tgz",
@ -3506,6 +3803,11 @@
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
"dev": true "dev": true
}, },
"visibilityjs": {
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/visibilityjs/-/visibilityjs-1.2.8.tgz",
"integrity": "sha512-Y+aL3OUX88b+/VSmkmC2ApuLbf0grzbNLpCfIDSw3BzTU6PqcPsdgIOaw8b+eZoy+DdQqnVN3y/Evow9vQq9Ig=="
},
"vite": { "vite": {
"version": "3.1.6", "version": "3.1.6",
"resolved": "https://registry.npmjs.org/vite/-/vite-3.1.6.tgz", "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.6.tgz",
@ -3529,6 +3831,14 @@
"pbf": "^3.2.1" "pbf": "^3.2.1"
} }
}, },
"webrtc-adapter": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/webrtc-adapter/-/webrtc-adapter-1.4.0.tgz",
"integrity": "sha512-QY3cFbkvUW9kSim9XzzKr7jl1zdfxh7ii9j67kZz+Jc/HsKOXcC+mEmovbTID3QthyZCiYsWz2Qs6aUwxEDa/w==",
"requires": {
"sdp": "^1.0.0"
}
},
"wrappy": { "wrappy": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",

View File

@ -22,7 +22,12 @@
}, },
"dependencies": { "dependencies": {
"@beyonk/svelte-mapbox": "^8.1.4", "@beyonk/svelte-mapbox": "^8.1.4",
"html5-qrcode": "^2.3.0",
"mapbox-gl": "^2.10.0", "mapbox-gl": "^2.10.0",
"qr-scanner": "^1.4.1",
"qrcode-scanner-svelte": "^1.0.0",
"scan-qr-svelte": "^0.0.3",
"svelte-qr-scanner": "^1.1.0",
"svelte-routing": "^1.6.0", "svelte-routing": "^1.6.0",
"yallist": "^4.0.0" "yallist": "^4.0.0"
} }

View File

@ -1,4 +1,5 @@
<script> <script>
import QrReader from './routes/qrReader.svelte'
import { Router, link, Route } from 'svelte-routing' import { Router, link, Route } from 'svelte-routing'
import './main.scss' import './main.scss'
@ -18,6 +19,8 @@
<Route path="/" component={Index} /> <Route path="/" component={Index} />
<Route path="/error" component={Error} /> <Route path="/error" component={Error} />
<Route path="/scaner" component={QrReader} />
<Route path="/:gameurl" let:params> <Route path="/:gameurl" let:params>
<Game gameurl={params.gameurl} /> <Game gameurl={params.gameurl} />
</Route> </Route>

View File

@ -0,0 +1,16 @@
<script>
let className = ''
export { className as class }
</script>
<div class={'h-[80px] w-[450px] max-w-[90%] p-6 bg-[#282828] flex flex-wrap flex-col m-3 gap-[5px] rounded-[30px] ' + className}>
<button on:click class="h-full w-auto">
<svg width="35" height="34" viewBox="0 0 35 34" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="24.2192" height="6.08178" rx="3.04089" transform="matrix(0.716773 -0.697307 -0.716773 -0.697307 4.35938 21.1992)" fill="#4263EB" />
<rect width="24.3271" height="6.0548" rx="3.0274" transform="matrix(-0.716773 -0.697307 -0.716773 0.697307 21.791 29.7002)" fill="#4263EB" />
</svg>
</button>
<span class="text-[#8A8A8A] flex text-center items-center h-full w-[85%]">
<slot />
</span>
</div>

View File

@ -0,0 +1,35 @@
<script>
</script>
<div class="w-full h-full flex relative overflow-hidden">
<div class="h-full w-full absolute flex justify-center gap-8 flex-wrap flex-col items-center bg-[#3A3A3A] p-[12.5%]">
<div class="h-[40vh] w-[40vh] max-w-full rounded-[20px] bg-white flex justify-center items-center">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<mask id="mask0_1505_2457" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="2" y="2" width="20" height="20">
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.00049 2H21.9601V21.9498H2.00049V2Z" fill="white" />
</mask>
<g mask="url(#mask0_1505_2457)">
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M7.65049 3.5C5.12949 3.5 3.50049 5.227 3.50049 7.899V16.051C3.50049 18.724 5.12949 20.45 7.65049 20.45H16.3005C18.8275 20.45 20.4605 18.724 20.4605 16.051V7.899C20.4605 5.227 18.8275 3.5 16.3005 3.5H7.65049ZM16.3005 21.95H7.65049C4.27049 21.95 2.00049 19.579 2.00049 16.051V7.899C2.00049 4.371 4.27049 2 7.65049 2H16.3005C19.6855 2 21.9605 4.371 21.9605 7.899V16.051C21.9605 19.579 19.6855 21.95 16.3005 21.95Z"
fill="#61646B"
/>
</g>
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M5.28126 17.1799C5.09526 17.1799 4.91026 17.1119 4.76526 16.9739C4.46426 16.6899 4.45226 16.2139 4.73726 15.9149L6.26526 14.3019C7.07426 13.4429 8.43926 13.4009 9.30226 14.2109L10.2603 15.1829C10.5273 15.4529 10.9613 15.4579 11.2293 15.1939C11.3303 15.0749 13.5083 12.4299 13.5083 12.4299C13.9223 11.9279 14.5063 11.6179 15.1553 11.5539C15.8053 11.4969 16.4363 11.6859 16.9393 12.0989C16.9823 12.1339 17.0213 12.1679 19.2173 14.4229C19.5063 14.7189 19.5013 15.1939 19.2043 15.4829C18.9083 15.7739 18.4323 15.7649 18.1433 15.4689C18.1433 15.4689 16.0943 13.3659 15.9483 13.2239C15.7933 13.0969 15.5443 13.0229 15.2993 13.0469C15.0503 13.0719 14.8263 13.1909 14.6673 13.3839C12.3433 16.2029 12.3153 16.2299 12.2773 16.2669C11.4193 17.1089 10.0343 17.0949 9.19126 16.2349C9.19126 16.2349 8.26126 15.2909 8.24526 15.2719C8.01426 15.0579 7.60226 15.0719 7.35526 15.3329L5.82526 16.9459C5.67726 17.1019 5.47926 17.1799 5.28126 17.1799Z"
fill="#61646B"
/>
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M8.55769 8.12891C8.00469 8.12891 7.55469 8.57891 7.55469 9.13291C7.55469 9.68691 8.00469 10.1379 8.55869 10.1379C9.11269 10.1379 9.56369 9.68691 9.56369 9.13291C9.56369 8.57991 9.11269 8.12991 8.55769 8.12891ZM8.55869 11.6379C7.17769 11.6379 6.05469 10.5139 6.05469 9.13291C6.05469 7.75191 7.17769 6.62891 8.55869 6.62891C9.94069 6.62991 11.0637 7.75391 11.0637 9.13291C11.0637 10.5139 9.93969 11.6379 8.55869 11.6379Z"
fill="#61646B"
/>
</svg>
</div>
<input type="text" placeholder="The code" class="block p-3 border rounded-[15px] w-full" />
</div>
</div>

View File

@ -0,0 +1,39 @@
<script>
import { Html5Qrcode } from 'html5-qrcode'
import { createEventDispatcher, onMount } from 'svelte'
const dispatch = createEventDispatcher()
onMount(() => {
const height = document.getElementById('reader').offsetHeight
const width = document.getElementById('reader').offsetWidth
const html5QrCode = new Html5Qrcode('reader')
const config = {
fps: 10,
qrbox: { width: 300, height: 700 },
height: window.innerHeight,
width: window.innerWidth,
aspectRatio: width / height,
}
// @ts-ignore
html5QrCode.start({ facingMode: 'environment' }, config, (text, result) => {
html5QrCode.stop()
dispatch('scan', {
text,
result,
})
})
})
let className = ''
export { className as class }
</script>
<div class={'w-full h-full flex relative overflow-hidden ' + className}>
<div id="reader" class="w-full h-full flex justify-center items-center overflow-hidden" />
<div class="h-full w-full absolute">
<slot />
</div>
</div>
<style>
</style>

View File

@ -0,0 +1,17 @@
<script>
</script>
<div class="absolute overflow-hidden w-[75%] h-1/2 z-20">
<svg class="absolute top-0 left-0" width="100" height="100" viewBox="0 0 125 125" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5 120C5 120 5.00003 77.9998 5 60C4.99994 27.9998 31 4.99984 60 5C81.5 5.00012 120 5 120 5" stroke="#4263EB" stroke-width="10" stroke-linecap="round" />
</svg>
<svg class="absolute top-0 right-0" width="100" height="100" viewBox="0 0 125 125" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M120 120C120 120 120 77.9998 120 60C120 27.9998 94 4.99984 65 5C43.5 5.00012 5 5 5 5" stroke="#4263EB" stroke-width="10" stroke-linecap="round" />
</svg>
<svg class="absolute bottom-0 left-0" width="100" height="100" viewBox="0 0 125 125" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5 5C5 5 5.00003 47.0002 5 65C4.99994 97.0002 31 120 60 120C81.5 120 120 120 120 120" stroke="#4263EB" stroke-width="10" stroke-linecap="round" />
</svg>
<svg class="absolute bottom-0 right-0" width="100" height="100" viewBox="0 0 125 125" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M120 5C120 5 120 47.0002 120 65C120 97.0002 94 120 65 120C43.5 120 5 120 5 120" stroke="#4263EB" stroke-width="10" stroke-linecap="round" />
</svg>
</div>

View File

@ -0,0 +1,21 @@
<script>
import { createEventDispatcher } from 'svelte'
let className = ''
export { className as class }
const dispatch = createEventDispatcher()
export let switched = 'scan'
$: dispatch('switch', switched)
</script>
{#if switched === 'scan'}
<div class={'h-[70px] w-[340px] max-w-full bg-[#282828] p-[8px] flex flex-wrap flex-col gap-[8px] rounded-[30px] ' + className}>
<button class="rounded-[20px] bg-[#4263EB] text-white h-full"> Scan QR </button>
<button on:click={() => (switched = 'input')} class="rounded-[20px] bg-[#282828] text-[#8A8A8A] h-full"> Type in code </button>
</div>
{:else if switched === 'input'}
<div class={'h-[70px] w-[340px] max-w-full bg-[#282828] p-[8px] flex flex-wrap flex-col gap-[8px] rounded-[30px] ' + className}>
<button on:click={() => (switched = 'scan')} class="rounded-[20px] bg-[#282828] text-[#8A8A8A] h-full"> Scan QR </button>
<button class="rounded-[20px] bg-[#4263EB] text-white h-full"> Type in code </button>
</div>
{/if}

View File

@ -0,0 +1,30 @@
<script>
import ScanFrame from '../lib/Components/QR/ScanFrame.svelte'
import InfoBar from '../lib/Components/QR/InfoBar.svelte'
import QRscanner from '../lib/Components/QR/QRscanner.svelte'
import SwitchBar from '../lib/Components/QR/SwitchBar.svelte'
import QRinput from '../lib/Components/QR/QRinput.svelte'
import { navigate } from 'svelte-routing'
let switched = 'scan'
</script>
{#if switched === 'scan'}
<InfoBar class="mt-[40px] top-0 absolute z-10" on:click={() => navigate(-1)}>Scan our QR code or type in code to load the experience</InfoBar>
<QRscanner on:scan={(e) => console.log(e.detail)}>
<div class="h-full w-full absolute flex justify-center gap-4 flex-wrap flex-row items-center">
<ScanFrame />
</div>
</QRscanner>
{:else if switched === 'input'}
<InfoBar class="mt-[40px] top-0 absolute z-10" on:click={() => navigate(-1)}>Type code or type in code to load the experience</InfoBar>
<QRinput />
{/if}
<SwitchBar {switched} on:switch={(e) => (switched = e.detail)} class="mb-[30px] absolute bottom-0 z-10" />
<style>
:global(#qr-shaded-region) {
display: none !important;
}
</style>