"use strict"; /* * ATTENTION: An "eval-source-map" devtool has been used. * This devtool is neither made for production nor for readable output files. * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) * or disable the default devtool with "devtool: false". * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). */ self["webpackHotUpdate_N_E"]("app/page",{ /***/ "(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/action-client-wrapper.js": /*!**************************************************************************************************!*\ !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-loader/action-client-wrapper.js ***! \**************************************************************************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { eval(__webpack_require__.ts("// This file must be bundled in the app's client layer, it shouldn't be directly\n// imported by the server.\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createServerReference\", ({\n enumerable: true,\n get: function() {\n return createServerReference;\n }\n}));\nconst _appcallserver = __webpack_require__(/*! next/dist/client/app-call-server */ \"(app-pages-browser)/./node_modules/next/dist/client/app-call-server.js\");\nfunction createServerReference(id) {\n // Since we're using the Edge build of Flight client for SSR [1], here we need to\n // also use the same Edge build to create the reference. For the client bundle,\n // we use the default and let Webpack to resolve it to the correct version.\n // 1: https://github.com/vercel/next.js/blob/16eb80b0b0be13f04a6407943664b5efd8f3d7d0/packages/next/src/server/app-render/use-flight-response.tsx#L24-L26\n const { createServerReference: createServerReferenceImpl } = false ? 0 : __webpack_require__(/*! react-server-dom-webpack/client */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react-server-dom-webpack/client.js\");\n return createServerReferenceImpl(id, _appcallserver.callServer);\n} //# sourceMappingURL=action-client-wrapper.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL25leHQtZmxpZ2h0LWxvYWRlci9hY3Rpb24tY2xpZW50LXdyYXBwZXIuanMiLCJtYXBwaW5ncyI6IkFBQUEsZ0ZBQWdGO0FBQ2hGLDBCQUEwQjtBQUNiO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTztBQUNYLENBQUMsRUFBQztBQUNGSCx5REFBd0Q7SUFDcERJLFlBQVk7SUFDWkMsS0FBSztRQUNELE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQyxpQkFBaUJDLG1CQUFPQSxDQUFDLGdIQUFrQztBQUNqRSxTQUFTRixzQkFBc0JHLEVBQUU7SUFDN0IsaUZBQWlGO0lBQ2pGLCtFQUErRTtJQUMvRSwyRUFBMkU7SUFDM0UseUpBQXlKO0lBQ3pKLE1BQU0sRUFBRUgsdUJBQXVCSSx5QkFBeUIsRUFBRSxHQUFHLE1BQTBCLEdBQUdGLENBQStDLEdBQUdBLG1CQUFPQSxDQUFDLGlJQUFpQztJQUNyTCxPQUFPRSwwQkFBMEJELElBQUlGLGVBQWVPLFVBQVU7QUFDbEUsRUFFQSxpREFBaUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvbmV4dC1mbGlnaHQtbG9hZGVyL2FjdGlvbi1jbGllbnQtd3JhcHBlci5qcz9hZGEwIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBtdXN0IGJlIGJ1bmRsZWQgaW4gdGhlIGFwcCdzIGNsaWVudCBsYXllciwgaXQgc2hvdWxkbid0IGJlIGRpcmVjdGx5XG4vLyBpbXBvcnRlZCBieSB0aGUgc2VydmVyLlxuXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJjcmVhdGVTZXJ2ZXJSZWZlcmVuY2VcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVNlcnZlclJlZmVyZW5jZTtcbiAgICB9XG59KTtcbmNvbnN0IF9hcHBjYWxsc2VydmVyID0gcmVxdWlyZShcIm5leHQvZGlzdC9jbGllbnQvYXBwLWNhbGwtc2VydmVyXCIpO1xuZnVuY3Rpb24gY3JlYXRlU2VydmVyUmVmZXJlbmNlKGlkKSB7XG4gICAgLy8gU2luY2Ugd2UncmUgdXNpbmcgdGhlIEVkZ2UgYnVpbGQgb2YgRmxpZ2h0IGNsaWVudCBmb3IgU1NSIFsxXSwgaGVyZSB3ZSBuZWVkIHRvXG4gICAgLy8gYWxzbyB1c2UgdGhlIHNhbWUgRWRnZSBidWlsZCB0byBjcmVhdGUgdGhlIHJlZmVyZW5jZS4gRm9yIHRoZSBjbGllbnQgYnVuZGxlLFxuICAgIC8vIHdlIHVzZSB0aGUgZGVmYXVsdCBhbmQgbGV0IFdlYnBhY2sgdG8gcmVzb2x2ZSBpdCB0byB0aGUgY29ycmVjdCB2ZXJzaW9uLlxuICAgIC8vIDE6IGh0dHBzOi8vZ2l0aHViLmNvbS92ZXJjZWwvbmV4dC5qcy9ibG9iLzE2ZWI4MGIwYjBiZTEzZjA0YTY0MDc5NDM2NjRiNWVmZDhmM2Q3ZDAvcGFja2FnZXMvbmV4dC9zcmMvc2VydmVyL2FwcC1yZW5kZXIvdXNlLWZsaWdodC1yZXNwb25zZS50c3gjTDI0LUwyNlxuICAgIGNvbnN0IHsgY3JlYXRlU2VydmVyUmVmZXJlbmNlOiBjcmVhdGVTZXJ2ZXJSZWZlcmVuY2VJbXBsIH0gPSAhIXByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSA/IHJlcXVpcmUoXCJyZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2svY2xpZW50LmVkZ2VcIikgOiByZXF1aXJlKFwicmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrL2NsaWVudFwiKTtcbiAgICByZXR1cm4gY3JlYXRlU2VydmVyUmVmZXJlbmNlSW1wbChpZCwgX2FwcGNhbGxzZXJ2ZXIuY2FsbFNlcnZlcik7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFjdGlvbi1jbGllbnQtd3JhcHBlci5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiY3JlYXRlU2VydmVyUmVmZXJlbmNlIiwiX2FwcGNhbGxzZXJ2ZXIiLCJyZXF1aXJlIiwiaWQiLCJjcmVhdGVTZXJ2ZXJSZWZlcmVuY2VJbXBsIiwicHJvY2VzcyIsImVudiIsIk5FWFRfUlVOVElNRSIsImNhbGxTZXJ2ZXIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/action-client-wrapper.js\n")); /***/ }), /***/ "(app-pages-browser)/./src/components/CameraCapture.tsx": /*!******************************************!*\ !*** ./src/components/CameraCapture.tsx ***! \******************************************/ /***/ (function(module, __webpack_exports__, __webpack_require__) { eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ CameraCapture; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Camera_CheckCircle2_Upload_lucide_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Camera,CheckCircle2,Upload!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/camera.js\");\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Camera_CheckCircle2_Upload_lucide_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Camera,CheckCircle2,Upload!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/upload.js\");\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Camera_CheckCircle2_Upload_lucide_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Camera,CheckCircle2,Upload!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/alert-circle.js\");\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Camera_CheckCircle2_Upload_lucide_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Camera,CheckCircle2,Upload!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/check-circle-2.js\");\n/* harmony import */ var _services_analyze_bottle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/services/analyze-bottle */ \"(app-pages-browser)/./src/services/analyze-bottle.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\nfunction CameraCapture(param) {\n let { onImageCaptured, onAnalysisComplete } = param;\n _s();\n const fileInputRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const [isProcessing, setIsProcessing] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [previewUrl, setPreviewUrl] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [error, setError] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [analysisResult, setAnalysisResult] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const handleCapture = async (event)=>{\n var _event_target_files;\n const file = (_event_target_files = event.target.files) === null || _event_target_files === void 0 ? void 0 : _event_target_files[0];\n if (!file) return;\n setIsProcessing(true);\n setError(null);\n setAnalysisResult(null);\n try {\n const compressedBase64 = await compressImage(file);\n setPreviewUrl(compressedBase64);\n if (onImageCaptured) {\n onImageCaptured(compressedBase64);\n }\n // Start AI Analysis\n const response = await (0,_services_analyze_bottle__WEBPACK_IMPORTED_MODULE_2__.analyzeBottle)(compressedBase64);\n if (response.success && response.data) {\n setAnalysisResult(response.data);\n if (onAnalysisComplete) {\n onAnalysisComplete(response.data);\n }\n } else {\n setError(response.error || \"Analyse fehlgeschlagen.\");\n }\n } catch (err) {\n console.error(\"Processing failed:\", err);\n setError(\"Verarbeitung fehlgeschlagen. Bitte erneut versuchen.\");\n } finally{\n setIsProcessing(false);\n }\n };\n const compressImage = (file)=>{\n return new Promise((resolve, reject)=>{\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = (event)=>{\n var _event_target;\n const img = new Image();\n img.src = (_event_target = event.target) === null || _event_target === void 0 ? void 0 : _event_target.result;\n img.onload = ()=>{\n const canvas = document.createElement(\"canvas\");\n const MAX_WIDTH = 1024;\n let width = img.width;\n let height = img.height;\n if (width > MAX_WIDTH) {\n height = height * MAX_WIDTH / width;\n width = MAX_WIDTH;\n }\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n reject(new Error(\"Canvas context not available\"));\n return;\n }\n ctx.drawImage(img, 0, 0, width, height);\n const base64 = canvas.toDataURL(\"image/jpeg\", 0.8);\n resolve(base64);\n };\n img.onerror = reject;\n };\n reader.onerror = reject;\n });\n };\n const triggerUpload = ()=>{\n var _fileInputRef_current;\n (_fileInputRef_current = fileInputRef.current) === null || _fileInputRef_current === void 0 ? void 0 : _fileInputRef_current.click();\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center gap-6 w-full max-w-md mx-auto p-6 bg-white dark:bg-zinc-900 rounded-3xl shadow-2xl border border-zinc-200 dark:border-zinc-800 transition-all hover:shadow-whisky-amber/20\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-2xl font-bold text-zinc-800 dark:text-zinc-100 italic\",\n children: \"Magic Shot\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 98,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative group cursor-pointer w-full aspect-square rounded-2xl border-2 border-dashed border-zinc-300 dark:border-zinc-700 overflow-hidden flex items-center justify-center bg-zinc-50 dark:bg-zinc-800/50 hover:border-amber-500 transition-colors\",\n onClick: triggerUpload,\n children: [\n previewUrl ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: previewUrl,\n alt: \"Preview\",\n className: \"w-full h-full object-cover\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 105,\n columnNumber: 21\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center gap-2 text-zinc-400 group-hover:text-amber-500 transition-colors\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Camera_CheckCircle2_Upload_lucide_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: 48,\n strokeWidth: 1.5\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 108,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-medium\",\n children: \"Flasche scannen\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 109,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 107,\n columnNumber: 21\n }, this),\n isProcessing && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"animate-spin rounded-full h-12 w-12 border-b-2 border-white\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 115,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 114,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 100,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"file\",\n accept: \"image/*\",\n capture: \"environment\",\n ref: fileInputRef,\n onChange: handleCapture,\n className: \"hidden\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 120,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: triggerUpload,\n disabled: isProcessing,\n className: \"w-full py-4 px-6 bg-amber-600 hover:bg-amber-700 text-white rounded-xl font-semibold flex items-center justify-center gap-2 transition-all active:scale-[0.98] shadow-lg shadow-amber-600/20 disabled:opacity-50\",\n children: previewUrl ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Camera_CheckCircle2_Upload_lucide_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n size: 20\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 136,\n columnNumber: 25\n }, this),\n \"Neu aufnehmen\"\n ]\n }, void 0, true) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Camera_CheckCircle2_Upload_lucide_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: 20\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 141,\n columnNumber: 25\n }, this),\n \"Kamera \\xf6ffnen\"\n ]\n }, void 0, true)\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 129,\n columnNumber: 13\n }, this),\n error && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2 text-red-500 text-sm bg-red-50 dark:bg-red-900/10 p-3 rounded-lg w-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Camera_CheckCircle2_Upload_lucide_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n size: 16\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 149,\n columnNumber: 21\n }, this),\n error\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 148,\n columnNumber: 17\n }, this),\n previewUrl && !isProcessing && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2 text-green-500 text-sm bg-green-50 dark:bg-green-900/10 p-3 rounded-lg w-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Camera_CheckCircle2_Upload_lucide_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n size: 16\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 156,\n columnNumber: 21\n }, this),\n \"Bild bereit f\\xfcr Analyse\"\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 155,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 97,\n columnNumber: 9\n }, this);\n}\n_s(CameraCapture, \"swp6SnG0/jth+2VCfXHL+KYZV+Q=\");\n_c = CameraCapture;\nvar _c;\n$RefreshReg$(_c, \"CameraCapture\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL0NhbWVyYUNhcHR1cmUudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBRWdEO0FBQ21DO0FBQ3pCO0FBUTNDLFNBQVNRLGNBQWMsS0FBMkQ7UUFBM0QsRUFBRUMsZUFBZSxFQUFFQyxrQkFBa0IsRUFBc0IsR0FBM0Q7O0lBQ2xDLE1BQU1DLGVBQWVWLDZDQUFNQSxDQUFtQjtJQUM5QyxNQUFNLENBQUNXLGNBQWNDLGdCQUFnQixHQUFHWCwrQ0FBUUEsQ0FBQztJQUNqRCxNQUFNLENBQUNZLFlBQVlDLGNBQWMsR0FBR2IsK0NBQVFBLENBQWdCO0lBQzVELE1BQU0sQ0FBQ2MsT0FBT0MsU0FBUyxHQUFHZiwrQ0FBUUEsQ0FBZ0I7SUFDbEQsTUFBTSxDQUFDZ0IsZ0JBQWdCQyxrQkFBa0IsR0FBR2pCLCtDQUFRQSxDQUF3QjtJQUU1RSxNQUFNa0IsZ0JBQWdCLE9BQU9DO1lBQ1pBO1FBQWIsTUFBTUMsUUFBT0Qsc0JBQUFBLE1BQU1FLE1BQU0sQ0FBQ0MsS0FBSyxjQUFsQkgsMENBQUFBLG1CQUFvQixDQUFDLEVBQUU7UUFDcEMsSUFBSSxDQUFDQyxNQUFNO1FBRVhULGdCQUFnQjtRQUNoQkksU0FBUztRQUNURSxrQkFBa0I7UUFFbEIsSUFBSTtZQUNBLE1BQU1NLG1CQUFtQixNQUFNQyxjQUFjSjtZQUM3Q1AsY0FBY1U7WUFFZCxJQUFJaEIsaUJBQWlCO2dCQUNqQkEsZ0JBQWdCZ0I7WUFDcEI7WUFFQSxvQkFBb0I7WUFDcEIsTUFBTUUsV0FBVyxNQUFNcEIsdUVBQWFBLENBQUNrQjtZQUVyQyxJQUFJRSxTQUFTQyxPQUFPLElBQUlELFNBQVNFLElBQUksRUFBRTtnQkFDbkNWLGtCQUFrQlEsU0FBU0UsSUFBSTtnQkFDL0IsSUFBSW5CLG9CQUFvQjtvQkFDcEJBLG1CQUFtQmlCLFNBQVNFLElBQUk7Z0JBQ3BDO1lBQ0osT0FBTztnQkFDSFosU0FBU1UsU0FBU1gsS0FBSyxJQUFJO1lBQy9C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dXJjZXMiOlsid2VicGFjazovL19OX0UvLi9zcmMvY29tcG9uZW50cy9DYW1lcmFDYXB0dXJlLnRzeD8xYzM0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IFJlYWN0LCB7IHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBDYW1lcmEsIFVwbG9hZCwgQ2hlY2tDaXJjbGUyLCBBbGVydENpcmNsZSwgU3BhcmtsZXMgfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHsgYW5hbHl6ZUJvdHRsZSB9IGZyb20gJ0Avc2VydmljZXMvYW5hbHl6ZS1ib3R0bGUnO1xuaW1wb3J0IHsgQm90dGxlTWV0YWRhdGEgfSBmcm9tICdAL3R5cGVzL3doaXNreSc7XG5cbmludGVyZmFjZSBDYW1lcmFDYXB0dXJlUHJvcHMge1xuICAgIG9uSW1hZ2VDYXB0dXJlZD86IChiYXNlNjRJbWFnZTogc3RyaW5nKSA9PiB2b2lkO1xuICAgIG9uQW5hbHlzaXNDb21wbGV0ZT86IChkYXRhOiBCb3R0bGVNZXRhZGF0YSkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ2FtZXJhQ2FwdHVyZSh7IG9uSW1hZ2VDYXB0dXJlZCwgb25BbmFseXNpc0NvbXBsZXRlIH06IENhbWVyYUNhcHR1cmVQcm9wcykge1xuICAgIGNvbnN0IGZpbGVJbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgICBjb25zdCBbaXNQcm9jZXNzaW5nLCBzZXRJc1Byb2Nlc3NpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtwcmV2aWV3VXJsLCBzZXRQcmV2aWV3VXJsXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICAgIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gICAgY29uc3QgW2FuYWx5c2lzUmVzdWx0LCBzZXRBbmFseXNpc1Jlc3VsdF0gPSB1c2VTdGF0ZTxCb3R0bGVNZXRhZGF0YSB8IG51bGw+KG51bGwpO1xuXG4gICAgY29uc3QgaGFuZGxlQ2FwdHVyZSA9IGFzeW5jIChldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgICAgY29uc3QgZmlsZSA9IGV2ZW50LnRhcmdldC5maWxlcz8uWzBdO1xuICAgICAgICBpZiAoIWZpbGUpIHJldHVybjtcblxuICAgICAgICBzZXRJc1Byb2Nlc3NpbmcodHJ1ZSk7XG4gICAgICAgIHNldEVycm9yKG51bGwpO1xuICAgICAgICBzZXRBbmFseXNpc1Jlc3VsdChudWxsKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgY29tcHJlc3NlZEJhc2U2NCA9IGF3YWl0IGNvbXByZXNzSW1hZ2UoZmlsZSk7XG4gICAgICAgICAgICBzZXRQcmV2aWV3VXJsKGNvbXByZXNzZWRCYXNlNjQpO1xuXG4gICAgICAgICAgICBpZiAob25JbWFnZUNhcHR1cmVkKSB7XG4gICAgICAgICAgICAgICAgb25JbWFnZUNhcHR1cmVkKGNvbXByZXNzZWRCYXNlNjQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTdGFydCBBSSBBbmFseXNpc1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhbmFseXplQm90dGxlKGNvbXByZXNzZWRCYXNlNjQpO1xuXG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyAmJiByZXNwb25zZS5kYXRhKSB7XG4gICAgICAgICAgICAgICAgc2V0QW5hbHlzaXNSZXN1bHQocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgaWYgKG9uQW5hbHlzaXNDb21wbGV0ZSkge1xuICAgICAgICAgICAgICAgICAgICBvbkFuYWx5c2lzQ29tcGxldGUocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRFcnJvcihyZXNwb25zZS5lcnJvciB8fCAnQW5hbHlzZSBmZWhsZ2VzY2hsYWdlbi4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdQcm9jZXNzaW5nIGZhaWxlZDonLCBlcnIpO1xuICAgICAgICAgICAgc2V0RXJyb3IoJ1ZlcmFyYmVpdHVuZyBmZWhsZ2VzY2hsYWdlbi4gQml0dGUgZXJuZXV0IHZlcnN1Y2hlbi4nKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHNldElzUHJvY2Vzc2luZyhmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgY29tcHJlc3NJbWFnZSA9IChmaWxlOiBGaWxlKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgICAgICBpbWcuc3JjID0gZXZlbnQudGFyZ2V0Py5yZXN1bHQgYXMgc3RyaW5nO1xuICAgICAgICAgICAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBNQVhfV0lEVEggPSAxMDI0O1xuICAgICAgICAgICAgICAgICAgICBsZXQgd2lkdGggPSBpbWcud2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIGxldCBoZWlnaHQgPSBpbWcuaGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IE1BWF9XSURUSCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gKGhlaWdodCAqIE1BWF9XSURUSCkgLyB3aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gTUFYX1dJRFRIO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY3R4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdDYW52YXMgY29udGV4dCBub3QgYXZhaWxhYmxlJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlNjQgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJywgMC44KTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShiYXNlNjQpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaW1nLm9uZXJyb3IgPSByZWplY3Q7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSByZWplY3Q7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCB0cmlnZ2VyVXBsb2FkID0gKCkgPT4ge1xuICAgICAgICBmaWxlSW5wdXRSZWYuY3VycmVudD8uY2xpY2soKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtNiB3LWZ1bGwgbWF4LXctbWQgbXgtYXV0byBwLTYgYmctd2hpdGUgZGFyazpiZy16aW5jLTkwMCByb3VuZGVkLTN4bCBzaGFkb3ctMnhsIGJvcmRlciBib3JkZXItemluYy0yMDAgZGFyazpib3JkZXItemluYy04MDAgdHJhbnNpdGlvbi1hbGwgaG92ZXI6c2hhZG93LXdoaXNreS1hbWJlci8yMFwiPlxuICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQtMnhsIGZvbnQtYm9sZCB0ZXh0LXppbmMtODAwIGRhcms6dGV4dC16aW5jLTEwMCBpdGFsaWNcIj5NYWdpYyBTaG90PC9oMj5cblxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInJlbGF0aXZlIGdyb3VwIGN1cnNvci1wb2ludGVyIHctZnVsbCBhc3BlY3Qtc3F1YXJlIHJvdW5kZWQtMnhsIGJvcmRlci0yIGJvcmRlci1kYXNoZWQgYm9yZGVyLXppbmMtMzAwIGRhcms6Ym9yZGVyLXppbmMtNzAwIG92ZXJmbG93LWhpZGRlbiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy16aW5jLTUwIGRhcms6YmctemluYy04MDAvNTAgaG92ZXI6Ym9yZGVyLWFtYmVyLTUwMCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgb25DbGljaz17dHJpZ2dlclVwbG9hZH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7cHJldmlld1VybCA/IChcbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9e3ByZXZpZXdVcmx9IGFsdD1cIlByZXZpZXdcIiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIG9iamVjdC1jb3ZlclwiIC8+XG4gICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LXppbmMtNDAwIGdyb3VwLWhvdmVyOnRleHQtYW1iZXItNTAwIHRyYW5zaXRpb24tY29sb3JzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2FtZXJhIHNpemU9ezQ4fSBzdHJva2VXaWR0aD17MS41fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LW1lZGl1bVwiPkZsYXNjaGUgc2Nhbm5lbjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgIHtpc1Byb2Nlc3NpbmcgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgYmctYmxhY2svNTAgYmFja2Ryb3AtYmx1ci1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhbmltYXRlLXNwaW4gcm91bmRlZC1mdWxsIGgtMTIgdy0xMiBib3JkZXItYi0yIGJvcmRlci13aGl0ZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgICAgICBhY2NlcHQ9XCJpbWFnZS8qXCJcbiAgICAgICAgICAgICAgICBjYXB0dXJlPVwiZW52aXJvbm1lbnRcIlxuICAgICAgICAgICAgICAgIHJlZj17ZmlsZUlucHV0UmVmfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDYXB0dXJlfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImhpZGRlblwiXG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgb25DbGljaz17dHJpZ2dlclVwbG9hZH1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNQcm9jZXNzaW5nfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBweS00IHB4LTYgYmctYW1iZXItNjAwIGhvdmVyOmJnLWFtYmVyLTcwMCB0ZXh0LXdoaXRlIHJvdW5kZWQteGwgZm9udC1zZW1pYm9sZCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMiB0cmFuc2l0aW9uLWFsbCBhY3RpdmU6c2NhbGUtWzAuOThdIHNoYWRvdy1sZyBzaGFkb3ctYW1iZXItNjAwLzIwIGRpc2FibGVkOm9wYWNpdHktNTBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtwcmV2aWV3VXJsID8gKFxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFVwbG9hZCBzaXplPXsyMH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIE5ldSBhdWZuZWhtZW5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDYW1lcmEgc2l6ZT17MjB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICBLYW1lcmEgw7ZmZm5lblxuICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIHtlcnJvciAmJiAoXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LXJlZC01MDAgdGV4dC1zbSBiZy1yZWQtNTAgZGFyazpiZy1yZWQtOTAwLzEwIHAtMyByb3VuZGVkLWxnIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8QWxlcnRDaXJjbGUgc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgIHtlcnJvcn1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHtwcmV2aWV3VXJsICYmICFpc1Byb2Nlc3NpbmcgJiYgKFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1ncmVlbi01MDAgdGV4dC1zbSBiZy1ncmVlbi01MCBkYXJrOmJnLWdyZWVuLTkwMC8xMCBwLTMgcm91bmRlZC1sZyB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPENoZWNrQ2lyY2xlMiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgQmlsZCBiZXJlaXQgZsO8ciBBbmFseXNlXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufVxuIl0sIm5hbWVzIjpbIlJlYWN0IiwidXNlUmVmIiwidXNlU3RhdGUiLCJDYW1lcmEiLCJVcGxvYWQiLCJDaGVja0NpcmNsZTIiLCJBbGVydENpcmNsZSIsImFuYWx5emVCb3R0bGUiLCJDYW1lcmFDYXB0dXJlIiwib25JbWFnZUNhcHR1cmVkIiwib25BbmFseXNpc0NvbXBsZXRlIiwiZmlsZUlucHV0UmVmIiwiaXNQcm9jZXNzaW5nIiwic2V0SXNQcm9jZXNzaW5nIiwicHJldmlld1VybCIsInNldFByZXZpZXdVcmwiLCJlcnJvciIsInNldEVycm9yIiwiYW5hbHlzaXNSZXN1bHQiLCJzZXRBbmFseXNpc1Jlc3VsdCIsImhhbmRsZUNhcHR1cmUiLCJldmVudCIsImZpbGUiLCJ0YXJnZXQiLCJmaWxlcyIsImNvbXByZXNzZWRCYXNlNjQiLCJjb21wcmVzc0ltYWdlIiwicmVzcG9uc2UiLCJzdWNjZXNzIiwiZGF0YSIsImVyciIsImNvbnNvbGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInJlYWRlciIsIkZpbGVSZWFkZXIiLCJyZWFkQXNEYXRhVVJMIiwib25sb2FkIiwiaW1nIiwiSW1hZ2UiLCJzcmMiLCJyZXN1bHQiLCJjYW52YXMiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJNQVhfV0lEVEgiLCJ3aWR0aCIsImhlaWdodCIsImN0eCIsImdldENvbnRleHQiLCJFcnJvciIsImRyYXdJbWFnZSIsImJhc2U2NCIsInRvRGF0YVVSTCIsIm9uZXJyb3IiLCJ0cmlnZ2VyVXBsb2FkIiwiY3VycmVudCIsImNsaWNrIiwiZGl2IiwiY2xhc3NOYW1lIiwiaDIiLCJvbkNsaWNrIiwiYWx0Iiwic2l6ZSIsInN0cm9rZVdpZHRoIiwic3BhbiIsImlucHV0IiwidHlwZSIsImFjY2VwdCIsImNhcHR1cmUiLCJyZWYiLCJvbkNoYW5nZSIsImJ1dHRvbiIsImRpc2FibGVkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/CameraCapture.tsx\n")); /***/ }), /***/ "(app-pages-browser)/./src/services/analyze-bottle.ts": /*!****************************************!*\ !*** ./src/services/analyze-bottle.ts ***! \****************************************/ /***/ (function(module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ analyzeBottle: function() { return /* binding */ analyzeBottle; } /* harmony export */ }); /* harmony import */ var next_dist_client_app_call_server__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/client/app-call-server */ "(app-pages-browser)/./node_modules/next/dist/client/app-call-server.js"); /* harmony import */ var next_dist_client_app_call_server__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_app_call_server__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var private_next_rsc_action_client_wrapper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! private-next-rsc-action-client-wrapper */ "(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/action-client-wrapper.js"); function __build_action__(action, args) { return (0,next_dist_client_app_call_server__WEBPACK_IMPORTED_MODULE_0__.callServer)(action.$$id, args) } /* __next_internal_action_entry_do_not_use__ {"af8f7c7b0fe98b99031bb1c9e8ef0ed13b2eae40":"analyzeBottle"} */ var analyzeBottle = (0,private_next_rsc_action_client_wrapper__WEBPACK_IMPORTED_MODULE_1__.createServerReference)("af8f7c7b0fe98b99031bb1c9e8ef0ed13b2eae40"); ; // Wrapped in an IIFE to avoid polluting the global scope ; (function () { var _a, _b; // Legacy CSS implementations will `eval` browser code in a Node.js context // to extract CSS. For backwards compatibility, we need to check we're in a // browser context before continuing. if (typeof self !== 'undefined' && // AMP / No-JS mode does not inject these helpers: '$RefreshHelpers$' in self) { // @ts-ignore __webpack_module__ is global var currentExports = module.exports; // @ts-ignore __webpack_module__ is global var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null; // This cannot happen in MainTemplate because the exports mismatch between // templating and execution. self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id); // A module can be accepted automatically based on its exports, e.g. when // it is a Refresh Boundary. if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) { // Save the previous exports signature on update so we can compare the boundary // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797) module.hot.dispose(function (data) { data.prevSignature = self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports); }); // Unconditionally accept an update to this module, we'll check if it's // still a Refresh Boundary later. // @ts-ignore importMeta is replaced in the loader module.hot.accept(); // This field is set when the previous version of this module was a // Refresh Boundary, letting us know we need to check for invalidation or // enqueue an update. if (prevSignature !== null) { // A boundary can become ineligible if its exports are incompatible // with the previous exports. // // For example, if you add/remove/change exports, we'll want to // re-execute the importing modules, and force those components to // re-render. Similarly, if you convert a class component to a // function, we want to invalidate the boundary. if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) { module.hot.invalidate(); } else { self.$RefreshHelpers$.scheduleUpdate(); } } } else { // Since we just executed the code for the module, it's possible that the // new exports made it ineligible for being a boundary. // We only care about the case when we were _previously_ a boundary, // because we already accepted this update (accidental side effect). var isNoLongerABoundary = prevSignature !== null; if (isNoLongerABoundary) { module.hot.invalidate(); } } } })(); /***/ }) });