{"version":3,"sources":["Lib/client.js","Lib/formatNumber.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/query-string/index.js","../node_modules/strict-uri-encode/index.js","../node_modules/decode-uri-component/index.js","Seating/Ticket.jsx","Seating/TicketGeneralAdmission.jsx","Seating/TicketList.jsx","Seating/translateSeatLabelToName.js","Seating/seatingExtensions.js","Seating/SeatingChartLegend.js","Seating/App.jsx"],"names":["client","endpoint","body","customConfig","headers","config","method","credentials","Error","JSON","stringify","rejectDebug","window","Promise","reject","fetch","then","response","a","json","data","ok","culture","switzerland","langLocaleCode","cultureCode","delimiters","thousands","decimal","currency","symbol","position","abbreviations","thousand","million","billion","trillion","austria","numbro","loadCulturesInNode","egumaReact","formatCurrency","value","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","length","i","F","s","n","done","e","_e","f","TypeError","err","normalCompletion","didErr","step","next","_e2","strictUriEncode","require","objectAssign","decodeComponent","encode","opts","strict","encodeURIComponent","keysSorter","input","sort","Object","keys","b","Number","map","key","extract","str","queryStart","indexOf","slice","parse","formatter","result","arrayFormat","accumulator","exec","replace","undefined","concat","parserForArrayFormat","ret","create","trim","split","forEach","param","parts","shift","val","join","reduce","Boolean","exports","obj","index","encoderForArrayFormat","val2","push","filter","x","parseUrl","url","query","module","c","charCodeAt","toString","toUpperCase","token","singleMatcher","RegExp","multiMatcher","decodeComponents","components","decodeURIComponent","left","right","prototype","call","decode","tokens","match","encodedURI","replaceMap","entries","customDecodeURIComponent","Ticket","seatName","ticketTypeName","price","color","removeTicket","style","fontWeight","fontSize","className","TicketGeneralAdmission","qty","polyglot","Polyglot","phrases","translations","TicketList","this","props","tickets","total","ticket","type","marginBottom","t","seatLabel","ticketTypeId","height","border","React","Component","translateNormalSeatLabelToName","label","console","log","seat","translateSeatLabelToName","tableMatch","table","ignoreAutoSelectCounter","autoApplySeating","actionType","chart","selectedTicketType","category","includes","selectedSeatNumber","parseInt","labels","own","otherSeatNumber","isOdd","otherSeatLabel","parent","selectObjects","ticketType","deselectObjects","alert","num","SeatingChartLegend","Hidden","ShowPrices","ShowCategoryAndPrices","App","state","note","sessionExpired","promoCodeInput","promoCode","isOrphanedSeatBlockingOrder","loadChart","params","queryString","location","search","setState","setTimeout","onHoldTimeOutExpired","divId","publicKey","seatsIoPublicKey","event","chartKey","holdOnSelect","regenerateHoldToken","pricing","priceFormatter","onSelectionValid","onSelectionValidChange","onSelectionInvalid","onObjectSelected","onObjectDeselected","deselectedTicketType","onHoldFailed","tooltipText","language","lang","unavailableCategories","holdOnSelectForGAs","objectWithoutCategorySelectable","messages","close","selectQuantity","choosePriceLevel","cursorTooltip","showAvailability","showActionHint","showCategory","showPricing","legend","showLegend","hideCategoryName","hideNonSelectableCategories","hideUnavailableLegendItem","maxTickets","maxSelectedObjects","orphanSeatingHandling","selectionValidators","mode","mandantId","showUnavailableNotice","tooltipInfo","object","objectType","entrance","seatsio","SeatingChart","render","isValid","isOrphan","selected","status","selectable","categoryKey","ticketTypes","find","seatingCategoryKey","name","getSelectedTicketType","id","getPriceForTicketType","displayedLabel","isUnlockedWithPromoCode","updateMaxSelectedObjects","currentTotal","error","reload","reloadUrl","pathname","href","isObjectSelected","unlockedTicketTypes","unlockedTicketType","maxItem","quantity","changeConfig","texts","customerNoteEnabled","customerNoteMandatory","noteInput","focus","countPackageTickets","payload","reservationToken","holdToken","eventId","success","redirect","message","code","clearSelection","destroy","isPromoCodeEnabled","marginTop","onChange","target","onKeyDown","keyCode","addPromocode","autoComplete","width","placeholder","onClick","padding","borderWidth","borderStyle","chartHeight","ref","cols","rows","sellingTicketsAtTheBoxOffice","isOnlineSalesClosed","onContinue"],"mappings":"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","file":"static/js/21.cc42f09b.chunk.js","sourcesContent":["/*\r\n* Use this implementation to fetch data from the server\r\n* You can set rejectDebug = true in the console to test your error handling\r\n*/\r\n\r\nconst client = (endpoint, {body, ...customConfig} = {}) => {\r\n const headers = {'Content-Type': 'application/json'}\r\n const config = {\r\n method: body ? 'POST' : 'GET',\r\n credentials: \"same-origin\", // has to be set in order to use cookies: https://github.com/github/fetch#sending-cookies\r\n ...customConfig,\r\n headers: {\r\n ...headers,\r\n ...customConfig.headers,\r\n },\r\n }\r\n\r\n if (body) {\r\n if (typeof body !== \"object\") throw new Error(\"Body muss ein Objekt sein\");\r\n\r\n config.body = JSON.stringify(body)\r\n }\r\n\r\n const rejectDebug = window.rejectDebug || false;\r\n\r\n if (rejectDebug) {\r\n return Promise.reject(\"Rejecting for debugging\");\r\n }\r\n\r\n return window\r\n .fetch(endpoint, config)\r\n .then(async response => {\r\n const data = await response.json()\r\n if (response.ok) {\r\n return data\r\n } else {\r\n return Promise.reject(data)\r\n }\r\n })\r\n}\r\n\r\nexport default client;\r\n","import numbro from \"numbro\"; // somehow it is not working with the newest version (2.x.x) of numbro\r\nimport egumaReact from \"egumaReact\"; // added in externals in webpack\r\n\r\nconst switzerland = {\r\n langLocaleCode: \"CH\",\r\n cultureCode: \"CH\",\r\n delimiters: {\r\n thousands: \"'\",\r\n decimal: \".\"\r\n },\r\n currency: {\r\n symbol: \"CHF \",\r\n position: \"prefix\"\r\n },\r\n // we don't need it, but we need to provide abbreviations because it is used in 'unformat'\r\n abbreviations: {\r\n thousand: \"k\",\r\n million: \"m\",\r\n billion: \"b\",\r\n trillion: \"t\"\r\n }\r\n};\r\n\r\nconst austria = {\r\n langLocaleCode: \"de-AT\",\r\n cultureCode: \"de-AT\",\r\n delimiters: {\r\n thousands: \".\",\r\n decimal: \",\"\r\n },\r\n currency: {\r\n symbol: \"€ \",\r\n position: \"prefix\"\r\n },\r\n // we don't need it, but we need to provide abbreviations because it is used in 'unformat'\r\n abbreviations: {\r\n thousand: \"k\",\r\n million: \"m\",\r\n billion: \"b\",\r\n trillion: \"t\"\r\n }\r\n};\r\n\r\nconst loadCultures = () => {\r\n numbro.loadCulturesInNode();\r\n\r\n numbro.culture(\"CH\", switzerland);\r\n numbro.culture(\"de-AT\", austria);\r\n};\r\n\r\nconst setCulture = culture => {\r\n if (culture === \"de-CH\" || culture === \"it-CH\" || culture === \"fr-CH\") {\r\n culture = \"CH\";\r\n } else if (culture === \"fr-FR\") {\r\n // the thousand delimiter is setup as space in the lib. we want to display a '.'\r\n // using de-DE (has the same format)\r\n culture = \"de-DE\";\r\n }\r\n\r\n numbro.culture(culture);\r\n};\r\n\r\nloadCultures();\r\nsetCulture(egumaReact.culture);\r\n\r\n//// END OF SETUP\r\n\r\nexport const formatCurrency = value => {\r\n return numbro(value).formatCurrency(\"0,0.00\");\r\n};\r\n","import unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\nvar objectAssign = require('object-assign');\nvar decodeComponent = require('decode-uri-component');\n\nfunction encoderForArrayFormat(opts) {\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, index) {\n\t\t\t\treturn value === null ? [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tindex,\n\t\t\t\t\t']'\n\t\t\t\t].join('') : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tencode(index, opts),\n\t\t\t\t\t']=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[]=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(opts) {\n\tvar result;\n\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t} else if (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction encode(value, opts) {\n\tif (opts.encode) {\n\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t} else if (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input)).sort(function (a, b) {\n\t\t\treturn Number(a) - Number(b);\n\t\t}).map(function (key) {\n\t\t\treturn input[key];\n\t\t});\n\t}\n\n\treturn input;\n}\n\nfunction extract(str) {\n\tvar queryStart = str.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\treturn str.slice(queryStart + 1);\n}\n\nfunction parse(str, opts) {\n\topts = objectAssign({arrayFormat: 'none'}, opts);\n\n\tvar formatter = parserForArrayFormat(opts);\n\n\t// Create an object with no prototype\n\t// https://github.com/sindresorhus/query-string/issues/47\n\tvar ret = Object.create(null);\n\n\tif (typeof str !== 'string') {\n\t\treturn ret;\n\t}\n\n\tstr = str.trim().replace(/^[?#&]/, '');\n\n\tif (!str) {\n\t\treturn ret;\n\t}\n\n\tstr.split('&').forEach(function (param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeComponent(val);\n\n\t\tformatter(decodeComponent(key), val, ret);\n\t});\n\n\treturn Object.keys(ret).sort().reduce(function (result, key) {\n\t\tvar val = ret[key];\n\t\tif (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(val);\n\t\t} else {\n\t\t\tresult[key] = val;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = function (obj, opts) {\n\tvar defaults = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none'\n\t};\n\n\topts = objectAssign(defaults, opts);\n\n\tif (opts.sort === false) {\n\t\topts.sort = function () {};\n\t}\n\n\tvar formatter = encoderForArrayFormat(opts);\n\n\treturn obj ? Object.keys(obj).sort(opts.sort).map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn encode(key, opts);\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tvar result = [];\n\n\t\t\tval.slice().forEach(function (val2) {\n\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresult.push(formatter(key, val2, result.length));\n\t\t\t});\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n\nexports.parseUrl = function (str, opts) {\n\treturn {\n\t\turl: str.split('?')[0] || '',\n\t\tquery: parse(extract(str), opts)\n\t};\n};\n","'use strict';\nmodule.exports = function (str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","import React from \"react\";\r\nimport { formatCurrency } from \"../Lib/formatNumber\";\r\n\r\nconst Ticket = ({ seatName, ticketTypeName, price, color, removeTicket }) => (\r\n \r\n \r\n
{ticketTypeName}
\r\n
{seatName}
\r\n \r\n \r\n
{formatCurrency(price)}
\r\n
\r\n \r\n \r\n);\r\n\r\nexport default Ticket;\r\n","import React from \"react\";\r\nimport { formatCurrency } from \"../Lib/formatNumber\";\r\n\r\nconst TicketGeneralAdmission = ({ ticketTypeName, price, qty, seatName }) => (\r\n \r\n \r\n
{ticketTypeName}
\r\n
\r\n {qty}x {seatName}\r\n
\r\n \r\n \r\n
{formatCurrency(qty * price)}
\r\n
\r\n \r\n \r\n);\r\n\r\nexport default TicketGeneralAdmission;\r\n","import React from \"react\";\r\nimport egumaReact from \"egumaReact\"; // added in externals in webpack\r\nimport Ticket from \"./Ticket\";\r\nimport Polyglot from \"node-polyglot\";\r\nimport TicketGeneralAdmission from \"./TicketGeneralAdmission\";\r\nimport { formatCurrency } from \"../Lib/formatNumber\";\r\n\r\nconst polyglot = new Polyglot({ phrases: egumaReact.translations });\r\n\r\nexport default class TicketList extends React.Component {\r\n total() {\r\n return this.props.tickets.reduce(\r\n (total, ticket) =>\r\n total +\r\n (ticket.type === \"GeneralAdmission\"\r\n ? ticket.qty * ticket.price\r\n : ticket.price),\r\n 0\r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n

{polyglot.t(\"Common.Tickets\")}

\r\n \r\n \r\n {this.props.tickets.map((ticket) => {\r\n if (ticket.type === \"GeneralAdmission\") {\r\n return (\r\n \r\n );\r\n }\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {polyglot.t(\"Common.Total\")}{\" \"}\r\n \r\n {polyglot.t(\"Common.IncVat\")}\r\n \r\n \r\n {formatCurrency(this.total())}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","// when you change something here, the also update:\r\n// - EGUMA.WebUI\\Backend\\2\\Components\\TicketSelect\\SeatingChart\\translateSeatLabelToName.js\r\n// - EGUMA.Core\\Moduls\\Events\\ReservedSeating\\SeatLabelConverter.cs\r\n\r\nimport egumaReact from \"egumaReact\"; // added in externals in webpack\r\nimport Polyglot from \"node-polyglot\";\r\n\r\nconst polyglot = new Polyglot({ phrases: egumaReact.translations });\r\n\r\nconst translateSeatLabelToName = label => {\r\n // table with seat\r\n // e.g.\r\n // normal: T1-6\r\n // with section: A!T1-6\r\n var pattern = /(\\w!)?(-|^)T(\\w+)-(\\w+)/;\r\n var match = pattern.exec(label);\r\n\r\n if (match != null) {\r\n var seat = `${polyglot.t(\"Common.ReservedSeating.Table\")} ${\r\n match[3]\r\n }, ${polyglot.t(\"Common.ReservedSeating.Seat\")} ${match[4]}`;\r\n\r\n if (match[1] !== undefined) {\r\n seat = `${polyglot.t(\"Common.ReservedSeating.Balcony\")}, ` + seat;\r\n }\r\n\r\n // with section\r\n // eg. parkett-T1-20\r\n let parts = label.split(\"-\");\r\n if (parts.length === 3) {\r\n seat = parts[0] + \", \" + seat;\r\n }\r\n\r\n return seat;\r\n }\r\n\r\n // whole table\r\n // e.g.\r\n // normal: T1\r\n // with section: A!T1\r\n var tablePattern = /(\\w!)?(-|^)T(\\w+)/;\r\n var tableMatch = tablePattern.exec(label);\r\n\r\n if (tableMatch != null) {\r\n var table = `${polyglot.t(\"Common.ReservedSeating.Table\")} ${\r\n tableMatch[3]\r\n }`;\r\n\r\n if (tableMatch[1] !== undefined) {\r\n table = `${polyglot.t(\"Common.ReservedSeating.Balcony\")}, ` + table;\r\n }\r\n\r\n // with section\r\n // eg. parkett-T1\r\n let parts = label.split(\"-\");\r\n if (parts.length === 2) {\r\n table = parts[0] + \", \" + table;\r\n }\r\n\r\n return table;\r\n }\r\n\r\n return translateNormalSeatLabelToName(label);\r\n};\r\n\r\nconst translateNormalSeatLabelToName = label => {\r\n // new sections:\r\n // e.g.: sektor-1-20\r\n var parts = label.split(\"-\");\r\n\r\n console.log(\"length\", parts.length);\r\n\r\n if (parts.length === 3) {\r\n return `${parts[0]}, ${polyglot.t(\"Common.ReservedSeating.Row\")} ${\r\n parts[1]\r\n }, ${polyglot.t(\"Common.ReservedSeating.Seat\")} ${parts[2]}`;\r\n }\r\n\r\n if (parts.length === 2) {\r\n // normal seat\r\n // e.g.\r\n // normal: 1-20\r\n // with section: A!1-20\r\n var pattern = /(.+!)?(\\w+)-(\\w+)/;\r\n var match = pattern.exec(label);\r\n\r\n var seat = `${polyglot.t(\"Common.ReservedSeating.Row\")} ${\r\n match[2]\r\n }, ${polyglot.t(\"Common.ReservedSeating.Seat\")} ${match[3]}`;\r\n if (match[1] !== undefined) {\r\n var section = match[1].replace(\"!\", \"\");\r\n seat = section + \", \" + seat;\r\n }\r\n return seat;\r\n }\r\n\r\n if (parts.length === 1) {\r\n // without row number\r\n // e.g.\r\n // 20\r\n return `${polyglot.t(\"Common.ReservedSeating.Seat\")} ` + label;\r\n }\r\n\r\n return label; // should not happen....\r\n};\r\n\r\nexport default translateSeatLabelToName;\r\n","// when we update this file then we also need to update the same file in the backoffice project\r\n\r\nvar ignoreAutoSelectCounter = 0;\r\n\r\nexport const autoApplySeating = (\r\n seat,\r\n actionType,\r\n chart,\r\n selectedTicketType\r\n) => {\r\n if (\r\n seat.category.label.includes(\"table.select.2\") &&\r\n ignoreAutoSelectCounter === 0\r\n ) {\r\n console.log(\"SELECT VIS-A-VIS\");\r\n\r\n // calculating the oposite seat.\r\n // e.g.:\r\n // 1 -> 2\r\n // 2 -> 1\r\n // 3 -> 4\r\n // 4 -> 3\r\n let selectedSeatNumber = parseInt(seat.labels.own, 10);\r\n let otherSeatNumber = isOdd(selectedSeatNumber)\r\n ? selectedSeatNumber + 1\r\n : selectedSeatNumber - 1;\r\n\r\n console.log(\"otro\", otherSeatNumber);\r\n\r\n let otherSeatLabel = seat.labels.parent + \"-\" + otherSeatNumber;\r\n ignoreAutoSelectCounter = 1;\r\n\r\n if (actionType === \"SELECT\") {\r\n chart.selectObjects([\r\n {\r\n label: otherSeatLabel,\r\n ticketType:\r\n selectedTicketType !== undefined\r\n ? selectedTicketType.ticketType\r\n : undefined\r\n }\r\n ]);\r\n } else if (actionType === \"DESELECT\") {\r\n chart.deselectObjects([\r\n {\r\n label: otherSeatLabel\r\n }\r\n ]);\r\n } else {\r\n alert(\"An error occured!\");\r\n }\r\n } else if (\r\n seat.category.label.includes(\"table.select.8\") &&\r\n ignoreAutoSelectCounter === 0\r\n ) {\r\n console.log(\"SELECT ALL\");\r\n let selectedSeatNumber = parseInt(seat.labels.own, 10);\r\n\r\n ignoreAutoSelectCounter = 7;\r\n\r\n for (var i = 1; i <= 8; i++) {\r\n if (i === selectedSeatNumber) {\r\n continue;\r\n }\r\n\r\n let otherSeatLabel = seat.labels.parent + \"-\" + i;\r\n\r\n if (actionType === \"SELECT\") {\r\n chart.selectObjects([\r\n {\r\n label: otherSeatLabel,\r\n ticketType:\r\n selectedTicketType !== undefined\r\n ? selectedTicketType.ticketType\r\n : undefined\r\n }\r\n ]);\r\n } else if (actionType === \"DESELECT\") {\r\n chart.deselectObjects([\r\n {\r\n label: otherSeatLabel\r\n }\r\n ]);\r\n } else {\r\n alert(\"An error occured!\");\r\n }\r\n }\r\n } else {\r\n ignoreAutoSelectCounter -= 1;\r\n }\r\n};\r\n\r\nconst isOdd = (num) => {\r\n return num % 2;\r\n};\r\n","const SeatingChartLegend = {\r\n Hidden: \"Hidden\",\r\n ShowPrices: \"ShowPrices\",\r\n ShowCategoryAndPrices: \"ShowCategoryAndPrices\"\r\n};\r\n\r\nexport default SeatingChartLegend;\r\n","import egumaReact from \"egumaReact\"; // added in externals in webpack\r\nimport seatsio from \"seatsio\"; // added in externals in webpack\r\nimport Polyglot from \"node-polyglot\";\r\nimport React from \"react\";\r\nimport queryString from \"query-string\";\r\nimport TicketList from \"./TicketList\";\r\nimport translateSeatLabelToName from \"./translateSeatLabelToName\";\r\nimport { autoApplySeating } from \"./seatingExtensions\";\r\nimport client from \"../Lib/client\";\r\nimport { formatCurrency } from \"../Lib/formatNumber\";\r\nimport SeatingChartLegend from \"./SeatingChartLegend\";\r\nconst polyglot = new Polyglot({ phrases: egumaReact.translations });\r\n\r\nexport default class App extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n tickets: [],\r\n note: \"\",\r\n sessionExpired: false,\r\n promoCodeInput: \"\",\r\n promoCode: \"\", // we save the code here after we applied it\r\n isOrphanedSeatBlockingOrder: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.loadChart();\r\n var params = queryString.parse(window.location.search);\r\n console.log(params);\r\n\r\n if (\r\n params.sessionExpired !== undefined &&\r\n params.sessionExpired === \"true\"\r\n ) {\r\n this.setState({ sessionExpired: true });\r\n }\r\n\r\n setTimeout(() => this.onHoldTimeOutExpired(), 10 * 60 * 1000);\r\n }\r\n\r\n loadChart() {\r\n var config = {\r\n divId: \"chart\",\r\n publicKey: egumaReact.seatsIoPublicKey,\r\n event: egumaReact.chartKey,\r\n holdOnSelect: true,\r\n regenerateHoldToken: true,\r\n pricing: egumaReact.pricing,\r\n priceFormatter: formatCurrency,\r\n onSelectionValid: () => this.onSelectionValidChange(true),\r\n onSelectionInvalid: () => this.onSelectionValidChange(false),\r\n onObjectSelected: (seat, selectedTicketType) =>\r\n this.onObjectSelected(seat, selectedTicketType),\r\n onObjectDeselected: (seat, deselectedTicketType) =>\r\n this.onObjectDeselected(seat, deselectedTicketType),\r\n onHoldFailed: seat => this.onHoldFailed(seat),\r\n tooltipText: seat => this.tooltipText(seat),\r\n language: egumaReact.lang,\r\n unavailableCategories: egumaReact.unavailableCategories,\r\n holdOnSelectForGAs: true,\r\n objectWithoutCategorySelectable: false,\r\n messages: {\r\n close: polyglot.t(\"Backend.Action.Close\"),\r\n selectQuantity: \" \",\r\n choosePriceLevel: polyglot.t(\"Common.Seats.ChooseTicketType\"),\r\n done: polyglot.t(\"Backend.Action.Close\")\r\n },\r\n cursorTooltip: {\r\n showAvailability: true,\r\n showActionHint: false,\r\n showCategory: false,\r\n showPricing: false // when we use the new tooltip also for the regular seats then we could set this flag to true\r\n }\r\n };\r\n\r\n if (\r\n egumaReact.legend === SeatingChartLegend.ShowPrices ||\r\n egumaReact.legend === SeatingChartLegend.ShowCategoryAndPrices\r\n ) {\r\n config.showLegend = true;\r\n\r\n config.legend = {\r\n hideCategoryName:\r\n egumaReact.legend !== SeatingChartLegend.ShowCategoryAndPrices,\r\n hideNonSelectableCategories: true,\r\n hideUnavailableLegendItem: true\r\n };\r\n }\r\n\r\n if (egumaReact.maxTickets !== 0) {\r\n config.maxSelectedObjects = egumaReact.maxTickets;\r\n }\r\n\r\n if (\r\n egumaReact.orphanSeatingHandling === \"Hint\" ||\r\n egumaReact.orphanSeatingHandling === \"Block\"\r\n ) {\r\n config.selectionValidators = [{ type: \"noOrphanSeats\", mode: \"strict\" }];\r\n }\r\n\r\n // todo: check event id\r\n // Pro Wirtschaft / Tischmesse\r\n if (egumaReact.mandantId === \"6756\") {\r\n config.cursorTooltip = {\r\n showAvailability: false,\r\n showActionHint: false,\r\n showCategory: false,\r\n showPricing: true,\r\n showUnavailableNotice: false\r\n };\r\n config.tooltipText = null;\r\n config.tooltipInfo = object => {\r\n console.log(\"tooltip\", object);\r\n\r\n if (object.objectType !== \"GeneralAdmissionArea\") {\r\n return null;\r\n }\r\n\r\n if (object.entrance === null || object.entrance.length === 0) {\r\n return null;\r\n }\r\n return \"Aussteller:[br/] [b]\" + object.entrance + \"[/b]\";\r\n };\r\n }\r\n\r\n this.chart = new seatsio.SeatingChart(config);\r\n\r\n this.chart.render();\r\n }\r\n\r\n onSelectionValidChange(isValid) {\r\n this.setState({\r\n isOrphanedSeatBlockingOrder:\r\n egumaReact.orphanSeatingHandling === \"Block\" && !isValid\r\n });\r\n }\r\n\r\n tooltipText(seat) {\r\n console.log(seat);\r\n\r\n if (\r\n seat.objectType === \"section\" ||\r\n seat.objectType === \"GeneralAdmissionArea\"\r\n ) {\r\n // when we return \"nothing\", then the default tooltip provided by seats.io will be displayed\r\n return;\r\n }\r\n\r\n var seatName = translateSeatLabelToName(seat.label);\r\n\r\n if (seat.category === undefined) {\r\n return seatName + polyglot.t(\"Common.ReservedSeating.NotAvailable\");\r\n } else if (seat.isOrphan) {\r\n return polyglot.t(\"Common.ReservedSeating.Orphan\");\r\n } else if (seat.selected) {\r\n return seatName;\r\n } else if (seat.status !== \"free\") {\r\n return seatName + polyglot.t(\"Common.ReservedSeating.Occupied\");\r\n } else if (seat.status === \"free\" && !seat.selectable) {\r\n return seatName + polyglot.t(\"Common.ReservedSeating.NotAvailable\");\r\n }\r\n\r\n // free\r\n return seatName;\r\n }\r\n\r\n getSelectedTicketType(categoryKey, selectedTicketType) {\r\n if (selectedTicketType === undefined) {\r\n return egumaReact.ticketTypes.find(\r\n t => t.seatingCategoryKey === categoryKey\r\n );\r\n }\r\n\r\n // for multi level pricing\r\n return egumaReact.ticketTypes.find(\r\n t =>\r\n t.seatingCategoryKey === categoryKey &&\r\n t.name === selectedTicketType.ticketType\r\n );\r\n }\r\n\r\n onObjectSelected(seat, selectedTicketType) {\r\n // strangely, when we call chart.selectObjects(...) then selectedTicketType\r\n if (selectedTicketType === null) {\r\n selectedTicketType = undefined;\r\n }\r\n\r\n console.log(\"onObjectSelected\", seat, selectedTicketType);\r\n\r\n var ticketType = this.getSelectedTicketType(\r\n seat.category.key,\r\n selectedTicketType\r\n );\r\n\r\n if (seat.objectType === \"GeneralAdmissionArea\") {\r\n var tix = this.state.tickets.find(\r\n t => t.seatLabel === seat.label && t.ticketTypeId === ticketType.id\r\n );\r\n\r\n if (tix === undefined) {\r\n const ticket = {\r\n seatLabel: seat.label,\r\n qty: 1,\r\n ticketTypeId: ticketType.id,\r\n ticketTypeName: ticketType.name,\r\n price: this.getPriceForTicketType(ticketType.id),\r\n type: \"GeneralAdmission\",\r\n seatName: seat.labels.displayedLabel\r\n };\r\n\r\n const tickets = [...this.state.tickets, ticket];\r\n this.setState({ tickets: tickets, sessionExpired: false });\r\n } else {\r\n const tickets = this.state.tickets.map(t => {\r\n if (t.seatLabel === seat.label && t.ticketTypeId === ticketType.id) {\r\n var ticket = {\r\n ...t,\r\n qty: (t.qty += 1)\r\n };\r\n return ticket;\r\n } else {\r\n return t;\r\n }\r\n });\r\n\r\n this.setState({ tickets: tickets, sessionExpired: false });\r\n }\r\n } else {\r\n // for seats with multi level pricing and promo code with limited tickets:\r\n if (\r\n this.state.promoCode &&\r\n ticketType.isUnlockedWithPromoCode &&\r\n Array.isArray(egumaReact.maxTickets)\r\n ) {\r\n this.updateMaxSelectedObjects(ticketType, true);\r\n }\r\n\r\n const ticket = {\r\n seatLabel: seat.label,\r\n seatName: translateSeatLabelToName(seat.label),\r\n ticketTypeId: ticketType.id,\r\n ticketTypeName: ticketType.name,\r\n price: this.getPriceForTicketType(ticketType.id),\r\n type: \"Seat\"\r\n };\r\n\r\n const tickets = [...this.state.tickets, ticket];\r\n this.setState({ tickets: tickets, sessionExpired: false });\r\n\r\n autoApplySeating(seat, \"SELECT\", this.chart, selectedTicketType);\r\n }\r\n }\r\n\r\n getSelectedTicketsCount() {\r\n return this.state.tickets.reduce((currentTotal, ticket) => {\r\n if (ticket.type === \"Seat\") {\r\n return currentTotal + 1;\r\n } else if (ticket.type === \"GeneralAdmission\") {\r\n return currentTotal + ticket.qty;\r\n } else {\r\n console.error(ticket.type + \" not supported.\");\r\n return 0;\r\n }\r\n }, 0);\r\n }\r\n\r\n onHoldTimeOutExpired() {\r\n this.reload();\r\n }\r\n\r\n reload() {\r\n var reloadUrl = window.location.pathname;\r\n\r\n if (this.state.tickets.length > 0) {\r\n reloadUrl += \"?sessionExpired=true\";\r\n }\r\n\r\n window.location.href = reloadUrl;\r\n }\r\n\r\n getPriceForTicketType(ticketTypeId) {\r\n return egumaReact.ticketTypes.find(t => t.id === ticketTypeId).price;\r\n }\r\n\r\n onObjectDeselected(seat, deselectedTicketType) {\r\n console.log(\"onObjectDeselected\", seat, deselectedTicketType);\r\n\r\n if (deselectedTicketType === null) {\r\n deselectedTicketType = undefined;\r\n }\r\n\r\n var ticketType = this.getSelectedTicketType(\r\n seat.category.key,\r\n deselectedTicketType\r\n );\r\n\r\n // preventing a user from selecting an object without category.\r\n // the corresponding code is in onObjectSelected(...)\r\n if (seat.category === undefined) {\r\n console.log(\"deselected object without cat\", seat);\r\n return;\r\n }\r\n\r\n if (seat.objectType === \"GeneralAdmissionArea\") {\r\n let tickets = this.state.tickets.map(t => {\r\n if (t.seatLabel === seat.label && t.ticketTypeId === ticketType.id) {\r\n var ticket = {\r\n ...t,\r\n qty: (t.qty -= 1)\r\n };\r\n return ticket;\r\n } else {\r\n return t;\r\n }\r\n });\r\n\r\n tickets = this.state.tickets.filter(\r\n t =>\r\n !(\r\n t.seatLabel === seat.label &&\r\n t.ticketTypeId === ticketType.id &&\r\n t.qty === 0\r\n )\r\n );\r\n\r\n this.setState({ tickets: tickets, sessionExpired: false });\r\n } else {\r\n // regular seats....\r\n\r\n // for seats with multi level pricing and promo code with limited tickets\r\n if (\r\n this.state.promoCode &&\r\n ticketType.isUnlockedWithPromoCode &&\r\n Array.isArray(egumaReact.maxTickets)\r\n ) {\r\n this.updateMaxSelectedObjects(ticketType, false);\r\n }\r\n\r\n const tickets = this.state.tickets.filter(\r\n ticket => ticket.seatLabel !== seat.label\r\n );\r\n console.log(tickets);\r\n this.setState({ tickets });\r\n\r\n autoApplySeating(seat, \"DESELECT\", this.chart, undefined);\r\n }\r\n }\r\n\r\n updateMaxSelectedObjects(selectedTicketType, isObjectSelected) {\r\n const unlockedTicketTypes = egumaReact.ticketTypes.filter(\r\n t => t.isUnlockedWithPromoCode && t.id !== selectedTicketType.id\r\n );\r\n\r\n for (let unlockedTicketType of unlockedTicketTypes) {\r\n const maxItem = egumaReact.maxTickets.find(\r\n t => t.ticketType === unlockedTicketType.name\r\n );\r\n\r\n if (isObjectSelected === true) {\r\n maxItem.quantity -= 1;\r\n } else {\r\n maxItem.quantity += 1;\r\n }\r\n\r\n console.log(\"update for\", maxItem.ticketType);\r\n }\r\n\r\n this.chart.changeConfig({\r\n maxSelectedObjects: egumaReact.maxTickets\r\n });\r\n }\r\n\r\n onHoldFailed(seat) {\r\n console.log(\"onReservationFailed\", seat);\r\n }\r\n\r\n async onContinue() {\r\n if (this.state.tickets.length <= 0) {\r\n return;\r\n }\r\n\r\n if (this.state.isOrphanedSeatBlockingOrder) {\r\n alert(egumaReact.texts[\"Common.ReservedSeating.Orphan\"]);\r\n return;\r\n }\r\n\r\n if (\r\n egumaReact.customerNoteEnabled &&\r\n egumaReact.customerNoteMandatory &&\r\n this.state.note.length <= 0\r\n ) {\r\n alert(egumaReact.texts[\"Comment.EmptyMessage\"]);\r\n this.noteInput.focus();\r\n return;\r\n }\r\n\r\n // Kloster Fischingen\r\n if (egumaReact.mandantId === \"4193\") {\r\n const countPackageTickets = this.state.tickets.filter(ticket =>\r\n ticket.ticketTypeName.includes(\"2 Personen mit Übernachtung\")\r\n ).length;\r\n\r\n console.log(\"count\", countPackageTickets);\r\n\r\n if (countPackageTickets % 2 !== 0) {\r\n alert(\r\n \"Sie haben ein Package im Doppelzimmer gewählt. Bitte buchen Sie eine gerade Anzahl Sitzplätze.\"\r\n );\r\n return;\r\n }\r\n }\r\n\r\n try {\r\n const payload = {\r\n tickets: this.state.tickets.map(t => {\r\n return {\r\n type: t.type,\r\n ticketTypeId: t.ticketTypeId,\r\n ticketTypeName: t.ticketTypeName,\r\n seatLabel: t.seatLabel,\r\n seatName: t.seatName,\r\n qty: t.qty\r\n };\r\n }),\r\n reservationToken: this.chart.holdToken,\r\n eventId: egumaReact.eventId,\r\n note: this.state.note,\r\n promoCode: this.state.promoCode\r\n };\r\n\r\n const data = await client(\r\n `/api/${egumaReact.mandantId}/${egumaReact.lang}/add_seating_tickets`,\r\n { body: payload }\r\n );\r\n\r\n if (data.success === true) {\r\n window.location.href = data.redirect;\r\n\r\n console.log(\"request succeeded with JSON response\", data);\r\n } else {\r\n alert(data.message);\r\n }\r\n } catch (e) {\r\n console.log(\"request failed\", e);\r\n }\r\n }\r\n\r\n async addPromocode() {\r\n try {\r\n const payload = {\r\n eventId: egumaReact.eventId,\r\n code: this.state.promoCodeInput\r\n };\r\n\r\n const response = await client(\r\n `/api/${egumaReact.mandantId}/${egumaReact.lang}/add_promocode_for_seating_chart`,\r\n { body: payload }\r\n );\r\n\r\n if (response.success === false) {\r\n alert(response.error);\r\n return;\r\n }\r\n\r\n this.chart.clearSelection(() => {\r\n this.chart.destroy();\r\n\r\n egumaReact.ticketTypes = response.ticketTypes;\r\n egumaReact.pricing = response.pricing;\r\n egumaReact.unavailableCategories = response.unavailableCategories;\r\n egumaReact.maxTickets = response.maxTickets;\r\n\r\n this.setState({\r\n promoCode: this.state.promoCodeInput,\r\n promoCodeInput: \"\"\r\n });\r\n\r\n this.loadChart();\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n {egumaReact.isPromoCodeEnabled && !this.state.promoCode && (\r\n
\r\n
\r\n
\r\n
\r\n \r\n {polyglot.t(\"Promocode.Message.DoYouHaveAPromocode\")}\r\n \r\n
\r\n
\r\n \r\n this.setState({ promoCodeInput: e.target.value })\r\n }\r\n onKeyDown={e => {\r\n if (e.keyCode === 13) {\r\n this.addPromocode();\r\n }\r\n }}\r\n type=\"text\"\r\n autoComplete=\"off\"\r\n style={{ width: \"100%\", marginBottom: 8 }}\r\n placeholder={polyglot.t(\"Core.Promocode\")}\r\n />\r\n
\r\n
\r\n this.addPromocode()}\r\n >\r\n {polyglot.t(\"Common.Action.Add\")}\r\n \r\n
\r\n
\r\n
\r\n
\r\n )}\r\n\r\n {this.state.promoCode && (\r\n
\r\n
\r\n \r\n {polyglot.t(\"Promocode.Message.AddedBySeating\")}\r\n
\r\n
\r\n
\r\n )}\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n {this.state.sessionExpired && (\r\n \r\n {polyglot.t(\"Common.ReservedSeating.ExpiredSession\")}\r\n
\r\n )}\r\n {this.state.isOrphanedSeatBlockingOrder && (\r\n \r\n {polyglot.t(\"Common.ReservedSeating.Orphan\")}\r\n
\r\n )}\r\n \r\n \r\n\r\n {egumaReact.customerNoteEnabled && (\r\n
\r\n
\r\n {egumaReact.texts[\"Common.Comment\"]}\r\n
\r\n {\r\n this.noteInput = input;\r\n }}\r\n value={this.state.note}\r\n onChange={e => this.setState({ note: e.target.value })}\r\n cols=\"41\"\r\n rows=\"3\"\r\n style={{ height: 50 }}\r\n />\r\n
\r\n )}\r\n\r\n {!egumaReact.sellingTicketsAtTheBoxOffice &&\r\n !egumaReact.isOnlineSalesClosed && (\r\n this.onContinue()}\r\n >\r\n {polyglot.t(\"Shop.Action.Next\")}\r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n );\r\n }\r\n}\r\n"],"sourceRoot":""}