{"version":3,"file":"admin_scanner-ALDEK0Gh.js","sources":["../../../app/javascript/domain/checkpoints/toggleCheckin.ts","../../../app/javascript/scanner_components/AttendeeScanner/CheckinStatus.tsx","../../../app/javascript/scanner_components/AttendeeScanner/attendeeCheckinGrid.ts","../../../app/javascript/scanner_components/AttendeeScanner/AttendeeCheckpoints.tsx","../../../node_modules/classnames/index.js","../../../app/javascript/scanner_components/AttendeeScanner/AttendeeScanner.tsx","../../../app/javascript/controllers/scanner/attendee_scanner_controller.jsx","../../../app/javascript/controllers/admin_scanner.js"],"sourcesContent":["import railsFetch from \"../../components/railsFetch\";\nimport { Checkin } from \"./types\";\n\nexport const toggleCheckin = async (checkin: Checkin) => {\n const method = checkin.arrived ? \"DELETE\" : \"PUT\";\n return railsFetch(checkin.url, { method });\n};\n","import React, { FC, useState } from \"react\";\nimport { toggleCheckin } from \"../../domain/checkpoints/toggleCheckin\";\nimport { Attendee, Checkin, Checkpoint } from \"../../domain/checkpoints/types\";\n\nexport interface CheckinStatusProps {\n attendee: Attendee;\n checkins: Checkin[];\n checkpoint: Checkpoint;\n onComplete?: (message: string) => void;\n}\n\nconst getSelectedCheckin = (\n checkpoint: Checkpoint,\n checkins: Checkin[]\n): Checkin | undefined =>\n checkins.find((c) => c.checkpointId === checkpoint.id);\n\nexport const CheckinStatus: FC = ({\n attendee,\n checkins,\n checkpoint,\n onComplete,\n}) => {\n const [attendeeCheckin, setAttendeeChekin] = useState(\n getSelectedCheckin(checkpoint, checkins)\n );\n\n const handleToggleCheckin = async () => {\n if (attendeeCheckin === undefined) {\n return;\n }\n\n await toggleCheckin(attendeeCheckin);\n setAttendeeChekin({\n ...attendeeCheckin,\n arrived: !attendeeCheckin.arrived,\n });\n onComplete?.(\n `${attendee.fullName} checked ${attendeeCheckin.arrived ? \"out\" : \"in\"}`\n );\n };\n\n if (attendeeCheckin === undefined) {\n return (\n

\n Attendee NOT VALID for this checkpoint.\n

\n );\n }\n if (attendeeCheckin.arrived) {\n return (\n <>\n

Attendee checked in

\n \n \n );\n } else {\n return (\n <>\n

\n Attendee NOT checked in\n

\n

\n \n

\n \n );\n }\n};\n","import { GridColumn } from \"@getregistered/greg-editors\";\n\nexport const gridColumns: GridColumn[] = [\n {\n key: \"name\",\n label: \"Checkpoint\",\n },\n {\n key: \"arrived\",\n label: \"Checked in?\",\n boolean: true,\n trueValue: \"Yes\",\n falseValue: \"No\",\n },\n {\n key: \"checkIn\",\n label: \"Check in?\",\n type: \"checkpoint\",\n noSort: true,\n noFilter: true,\n },\n];\n","import React, { FC } from \"react\";\nimport { Attendee, Checkin, Checkpoint } from \"../../domain/checkpoints/types\";\nimport { CheckinStatus } from \"./CheckinStatus\";\nimport { gridColumns } from \"./attendeeCheckinGrid\";\nimport { SimpleGrid } from \"@getregistered/greg-editors\";\nimport { renderCheckinCell } from \"../../components/grids/CheckinCell/renderCheckinCell\";\n\nexport interface AttendeeCheckpointsProps {\n attendee: Attendee;\n checkins: Checkin[];\n checkpoint?: Checkpoint;\n onBack: () => void;\n onComplete?: (message: string) => void;\n}\n\nexport const AttendeeCheckpoints: FC = ({\n attendee,\n checkins,\n checkpoint,\n onBack,\n onComplete,\n}) => {\n const gridCheckins =\n checkpoint === undefined\n ? checkins\n : checkins.filter((c) => c.checkpointId !== checkpoint.id);\n return (\n
\n
\n
\n \n
\n
\n Scanned: {attendee.fullName} - {attendee.email}\n
\n
\n {checkpoint !== undefined && (\n <>\n \n
\n

Other attendee checkpoints

\n \n )}\n ({ ...item, checkIn: item }))}\n renderCell={renderCheckinCell}\n />\n
\n );\n};\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import React, { FC, useState } from \"react\";\nimport { Result } from \"@zxing/library\";\nimport {\n Checkpoint,\n Message,\n TicketScanResponse,\n TicketScanResult,\n} from \"../../domain/checkpoints/types\";\nimport { QRCodeReader } from \"@getregistered/greg-editors\";\nimport railsFetch from \"../../components/railsFetch\";\nimport { AttendeeCheckpoints } from \"./AttendeeCheckpoints\";\nimport \"./scanner.css\";\nimport classNames from \"classnames\";\n\nexport interface AttendeeScannerProps {\n ticketCheckUrl: string;\n checkpoint?: Checkpoint;\n}\n\nexport const AttendeeScanner: FC = ({\n ticketCheckUrl,\n checkpoint,\n}) => {\n const [result, setResult] = useState(null);\n const [message, setMessage] = useState(null);\n const [loading, setLoading] = useState(false);\n\n const setError = (text: string) => setMessage({ type: \"error\", text });\n const setSuccess = (text: string) => setMessage({ type: \"success\", text });\n\n const handleCodeScan = async (code: Result) => {\n setLoading(true);\n setMessage(null);\n const response = await railsFetch(ticketCheckUrl, {\n method: \"post\",\n body: JSON.stringify({ id: code.getText() }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n switch (response.status) {\n case 200:\n case 201:\n const result = (await response.json()) as TicketScanResponse;\n if (\"error\" in result) {\n setError(result.error);\n } else {\n setResult(result);\n }\n break;\n case 404:\n setError(\"Ticket not found\");\n break;\n default:\n setError(\"Error fetching ticket\");\n }\n setLoading(false);\n };\n\n if (loading) {\n return

Loading...

;\n }\n\n return (\n
\n {message !== null && (\n

\n {message.text}\n

\n )}\n {result !== null ? (\n {\n setSuccess(message);\n setResult(null);\n }}\n onBack={() => setResult(null)}\n />\n ) : (\n \n )}\n
\n );\n};\n","import React from \"react\";\nimport { ReactController } from \"../react_controller\";\n\nimport { AttendeeScanner } from \"../../scanner_components/AttendeeScanner\";\n\nexport class AttendeeScannerController extends ReactController {\n connect() {\n this.root.render();\n }\n}\n","import { application } from \"./application\";\n\nimport { AttendeeScannerController } from \"./scanner/attendee_scanner_controller\";\n\napplication.register(\"attendee-scanner\", AttendeeScannerController);\n"],"names":["toggleCheckin","__name","checkin","method","railsFetch","getSelectedCheckin","checkpoint","checkins","c","CheckinStatus","attendee","onComplete","attendeeCheckin","setAttendeeChekin","useState","handleToggleCheckin","React","gridColumns","AttendeeCheckpoints","onBack","gridCheckins","SimpleGrid","item","renderCheckinCell","hasOwn","classNames","classes","i","arg","appendClass","parseValue","key","value","newClass","module","AttendeeScanner","ticketCheckUrl","result","setResult","message","setMessage","loading","setLoading","setError","text","setSuccess","handleCodeScan","code","response","QRCodeReader","_AttendeeScannerController","ReactController","AttendeeScannerController","application"],"mappings":"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","x_google_ignoreList":[4]}