{"version":3,"names":["loadJS","src","cb","ordered","tmp","script","document","createElement","async","head","appendChild","onload","getNextSibling","element","selector","sibling","nextElementSibling","matches","gridRatings","_a","querySelector","innerHTML","includes","querySelectorAll","forEach","cell","cellHtml","digit","exec","length","slice","gridCellClick","Confirmit","addEventListener","e","currentTarget","isMultiGrid","is3DGrid","closest","isBestWorst","clickedCell","target","cellIdArray","id","split","checked","classList","contains","questionName","join","page","getQuestion","getInnerQuestion","setValue","ex","parentQuestion","parentQuestionId","innerQuestionIsGrid","type","removeOpenPlaceholders","input","parent","parentNode","label","htmlFor","getAttribute","removeAttribute","insertBefore","processGridErrors","questions","q","validationCompleteEvent","on","validationResult","isValid","errorSource","answerValidationResults","questionValidationResults","errorMessage","avr","errors","message","error","push","hideGroupHeadings","domGroups","answerGroups","group","index","_b","code","toLowerCase","startsWith","add","contentElement","lastAnswer","accordion","accordeon","scaleGroups","domGroupsDesktop","domGroupsMobile","_c","_d","groupStart","parentElement","groupEnd","question","header","console","log","answersDom","answers","answer","answerIndex","domScaleGroupHeadings","domScaleGroupEndings","nextAnswer","irListWidth","FirstColumnWidth","lastScriptNode","Array","from","pop","innerText","width","maxWidth","row","style","clientWidth","isNaN","Number","display","grid","gridTemplateRows","replace","rows","questionContainer","remove","scrollWidth","inputFieldWidths","numeric","precision","scale","setAttribute","String","Math","pow","firstInput","autoSumField","offsetWidth","textareaHeight","textarea","submitOnEnter","nextButton","click","smallAdjustments","action","qid","title","window","frameElement","body","backButtonElement","getComputedStyle","getPropertyValue","tb","preventDefault","gridSeparators","table","domColumnGroups","offset","cellInserted","separatorPosition","separatorCell","className","after","secondHeaderRow","cells","td","colspan","addColumnSeparator","columnNumber","newCell","nextSibling","marginTop","DeactivateNextButton","seconds","nextbutton","disabled","oldLabel","textContent","countdown","timer","setInterval","clearInterval","autoSubmit","changeEvent","q2","validate","next","appendLOIToFormAction","disableLOI","filter","endTime","Date","form","round","getTime","startTime","hideGridCells","columns","_rows","_columns","range","rangeArray","trim","i","column","controlElement","tableCell","hideElement","pointerEvents","mobileElement","setProgressBar","percent","progressIndicatorElement","textElement","regex","fromCharCode","match","addToFormAction","key","value","keyIndex","indexOf","substring","encodeURIComponent"],"sources":["interrogare-v5.js"],"sourcesContent":["\"use strict\";\n/***************************************************************************/\n/* Interrogare Layout for Confirmit */\n/* Public Responsive Layout */\n/* Look and Feel: Whitespace */\n/* Rendering version: v2 */\n/* created: 06.04.2021 by Oliver Kötter */\n/* V1 released 14.06.2021 */\n/* V2 released 15.11.2021 */\n/* V3 released 05.05.2022 */\n/* V4 released 02.02.2023 */\n/***************************************************************************/\n/*! Interrogare Layout for Confirmit */\n/*! based on https://github.com/filamentgroup/loadJS\n loadJS: load a JS file asynchronously. [c]2014 @scottjehl, Filament Group, Inc. (Based on http://goo.gl/REQGQ by Paul Irish). Licensed MIT */\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst loadJS = (src, cb, ordered) => {\n let tmp;\n const script = document.createElement(\"script\");\n if (typeof cb === \"boolean\") {\n tmp = ordered;\n // eslint-disable-next-line no-param-reassign\n ordered = cb;\n // eslint-disable-next-line no-param-reassign\n cb = tmp;\n }\n script.src = src;\n script.async = !ordered;\n document.head.appendChild(script);\n // @ts-ignore\n if (cb && typeof cb === \"function\")\n script.onload = cb;\n return script;\n};\nconst getNextSibling = (element, selector) => {\n // Get the next sibling element\n let sibling = element.nextElementSibling;\n // If the sibling matches our selector, use it\n // If not, jump to the next sibling and continue the loop\n while (sibling) {\n if (sibling.matches(selector))\n return sibling;\n sibling = sibling.nextElementSibling;\n }\n return null;\n};\n// Grid: convert Digit plus = to
and digit at the end\nconst gridRatings = () => {\n var _a;\n if ((_a = document.querySelector(\".container-question\")) === null || _a === void 0 ? void 0 : _a.innerHTML.includes(\"irCfIgnore:GridRatings\"))\n return;\n document.querySelectorAll(\".cf-desktop-grid__scale-text, .cf-desktop-multi-grid__answer-text\").forEach(cell => {\n let cellHtml = cell.innerHTML;\n const re = /^([+-]?\\d+) = /;\n const digit = re.exec(cellHtml);\n if (digit && (digit === null || digit === void 0 ? void 0 : digit.length) >= 2) {\n cellHtml = cellHtml.slice(digit[0].length);\n cellHtml += `${digit[1]}`;\n cell.innerHTML = cellHtml;\n }\n });\n};\n/**\n * Adds event listener on whole table cell on a grid\n * so you do not have to hit the radiobutton or checkbox exactly\n */\nconst gridCellClick = () => {\n var _a;\n if ((_a = document.querySelector(\".container-question\")) === null || _a === void 0 ? void 0 : _a.innerHTML.includes(\"irCfIgnore:GridCellClick\"))\n return;\n if (typeof Confirmit === \"undefined\")\n return;\n document.querySelectorAll(\".cf-table-layout__cell\").forEach(cell => {\n const hasInputButton = cell.querySelector(\".cf-radio-answer, .cf-checkbox-answer\") !== null;\n if (!hasInputButton)\n return;\n cell.addEventListener(\"click\", (e) => {\n const currentTarget = e.currentTarget;\n const isMultiGrid = currentTarget.querySelector(\".cf-desktop-multi-grid__cell-element\") !== null;\n const is3DGrid = currentTarget.closest(\".cf-grid-3d-desktop\") !== null;\n const isBestWorst = currentTarget.closest(\".cf-table-layout--max-diff\") !== null;\n const clickedCell = e.target.querySelector(\".cf-checkbox-answer, .cf-radio-answer\");\n if (clickedCell) {\n const cellIdArray = clickedCell.id.split(\"_\");\n // multi grid\n if (isMultiGrid) {\n const checked = clickedCell.classList.contains(\"cf-checkbox-answer--selected\");\n try {\n const questionName = cellIdArray.slice(1, -2).join(\"_\");\n Confirmit.page\n .getQuestion(questionName)\n .getInnerQuestion(`${questionName}_${cellIdArray[cellIdArray.length - 2]}`)\n .setValue(cellIdArray[cellIdArray.length - 1], !checked);\n }\n catch (ex) { }\n }\n // 3DGrid\n else if (is3DGrid) {\n const parentQuestion = clickedCell.closest(\".cf-question--grid-3d\");\n const parentQuestionId = parentQuestion === null || parentQuestion === void 0 ? void 0 : parentQuestion.id;\n if (!parentQuestionId)\n return;\n let innerQuestionIsGrid = false;\n let questionName;\n try {\n questionName = cellIdArray.slice(1, -1).join(\"_\");\n if (!Confirmit.page.getQuestion(parentQuestionId).getInnerQuestion(questionName))\n questionName = cellIdArray.slice(1, -2).join(\"_\");\n if (Confirmit.page.getQuestion(parentQuestionId).getInnerQuestion(questionName).type === \"Grid\")\n innerQuestionIsGrid = true;\n }\n catch (ex) {\n return;\n }\n // single cell 3DGrid\n if (clickedCell.classList.contains(\"cf-radio-answer\")) {\n if (innerQuestionIsGrid) {\n try {\n Confirmit.page\n .getQuestion(parentQuestionId)\n .getInnerQuestion(questionName)\n .setValue(cellIdArray[cellIdArray.length - 2], cellIdArray[cellIdArray.length - 1]);\n }\n catch (ex) { }\n }\n else {\n try {\n Confirmit.page\n .getQuestion(parentQuestionId)\n .getInnerQuestion(questionName)\n .setValue(cellIdArray[cellIdArray.length - 1], true);\n }\n catch (ex) { }\n }\n }\n // multi cell 3DGrid\n else {\n const checked = clickedCell.classList.contains(\"cf-checkbox-answer--selected\");\n try {\n Confirmit.page\n .getQuestion(parentQuestionId)\n .getInnerQuestion(questionName)\n .setValue(cellIdArray[cellIdArray.length - 1], !checked);\n }\n catch (ex) { }\n }\n }\n else if (isBestWorst) {\n const parentQuestion = clickedCell.closest(\".cf-question--best-worst-grid-3d\");\n const parentQuestionId = parentQuestion === null || parentQuestion === void 0 ? void 0 : parentQuestion.id;\n if (!parentQuestionId)\n return;\n if (clickedCell.classList.contains(\"cf-radio-answer\")) {\n try {\n const questionName = cellIdArray.slice(0, -1).join(\"_\");\n Confirmit.page\n .getQuestion(parentQuestionId)\n .getInnerQuestion(questionName)\n .setValue(cellIdArray[cellIdArray.length - 1]);\n }\n catch (ex) { }\n }\n }\n // single\n else {\n try {\n const questionName = cellIdArray.slice(1, -2).join(\"_\");\n Confirmit.page\n .getQuestion(questionName)\n .setValue(cellIdArray[cellIdArray.length - 2], cellIdArray[cellIdArray.length - 1]);\n }\n catch (ex) { }\n }\n }\n });\n });\n};\n/**\n * extracts the placeholder from input fields and inserts them into a new label element\n */\nconst removeOpenPlaceholders = () => {\n var _a;\n if ((_a = document.querySelector(\".container-question\")) === null || _a === void 0 ? void 0 : _a.innerHTML.includes(\"irCfIgnore:RemoveOpenPlaceholders\"))\n return;\n const inputs = document.querySelectorAll(\".cf-radio-answer__other[placeholder], .cf-checkbox-answer__other[placeholder], .cf-button-answer__other--inside[placeholder], .cf-desktop-grid__answer-other[placeholder]\").forEach(input => {\n const parent = input.parentNode;\n const label = document.createElement(\"label\");\n label.htmlFor = input.id;\n label.innerHTML = input.getAttribute(\"placeholder\") || \"\";\n input.removeAttribute(\"placeholder\");\n if (parent) {\n parent.insertBefore(label, input);\n }\n });\n};\n/**\n * copies first grid cell error message to the top\n * use CSS to actually hide the grid cell's error messages\n */\nconst processGridErrors = () => {\n var _a;\n if ((_a = document.querySelector(\".container-question\")) === null || _a === void 0 ? void 0 : _a.innerHTML.includes(\"irCfIgnore:ProcessGridErrors\"))\n return;\n if (typeof Confirmit === \"undefined\")\n return;\n Confirmit.page.questions.forEach((q) => {\n if ([\"Grid\", \"GridBars\", \"StarRating\", \"Grid3d\"].includes(q.type)) {\n q.validationCompleteEvent.on((validationResult) => {\n if (!validationResult.isValid) {\n let errorSource = validationResult.answerValidationResults;\n // for multi grids use another source for errors\n if (q.type === \"Grid3d\")\n errorSource = validationResult.questionValidationResults;\n // get error message\n let errorMessage = \"\";\n for (const avr of errorSource) {\n if (!avr.isValid) {\n if (avr.errors.length > 0) {\n errorMessage = avr.errors[0].message;\n if (errorMessage) {\n const error = { message: errorMessage };\n validationResult.errors.push(error);\n }\n break;\n }\n }\n }\n }\n });\n }\n });\n};\n/**\n * * Hide group headings whose codes starts with a \"h\", e.g. \"h1\", \"h2\" etc.\n */\nconst hideGroupHeadings = () => {\n var _a;\n if ((_a = document.querySelector(\".container-question\")) === null || _a === void 0 ? void 0 : _a.innerHTML.includes(\"irCfIgnore:HideEmptyGroupHeadings\"))\n return;\n if (typeof Confirmit === \"undefined\")\n return;\n Confirmit.page.questions.forEach((q) => {\n // Single, Multi, Ranking\n if ([\"Single\", \"Multi\", \"Ranking\"].includes(q.type)) {\n const domGroups = document.querySelectorAll(`#${q.id} .cf-group-heading`);\n q.answerGroups.forEach((group, index) => {\n var _a, _b;\n if (group.code.toLowerCase().startsWith(\"h\")) {\n domGroups[index].classList.add(\"ir-hidden-group-heading\");\n (_b = (_a = domGroups[index].querySelector(\".cf-group-heading__title\")) === null || _a === void 0 ? void 0 : _a.classList) === null || _b === void 0 ? void 0 : _b.add(\"ir-hidden-group-heading__title\");\n const contentElement = domGroups[index].querySelector(\".cf-group-heading__content\");\n if (contentElement) {\n contentElement.classList.add(\"ir-hidden-group-heading__content\");\n // remove bottom-border of last answer in group\n const lastAnswer = contentElement.querySelector(\".cf-list__item:last-child\");\n if (lastAnswer)\n lastAnswer.classList.add(\"ir-hidden-group__content-last-answer\");\n }\n }\n });\n }\n // Grid as accordeon\n else if (q.type === \"Grid\" && q.accordion) {\n document.querySelectorAll(`#${q.id} .cf-accordion-grid-answer`).forEach(accordeon => {\n const domGroups = accordeon.querySelectorAll(\".cf-group-heading\");\n q.scaleGroups.forEach((group, index) => {\n var _a;\n if (group.code.toLowerCase().startsWith(\"h\")) {\n domGroups[index].classList.add(\"ir-hidden-group-heading\");\n (_a = domGroups[index].querySelector(\".cf-group-heading__title\")) === null || _a === void 0 ? void 0 : _a.classList.add(\"ir-hidden-group-heading__title\");\n const contentElement = domGroups[index].querySelector(\".cf-group-heading__content\");\n if (contentElement) {\n contentElement.classList.add(\"ir-hidden-group-heading__content\");\n // remove bottom-border of last answer in group\n const lastAnswer = contentElement.querySelector(\".cf-list__item:last-child\");\n if (lastAnswer)\n lastAnswer.classList.add(\"ir-hidden-group__content-last-answer\");\n }\n }\n });\n });\n }\n // Grid, 3D-Grid (Multi-Grid)\n else if ([\"Grid\", \"GridBars\", \"StarRating\", \"Grid3d\"].includes(q.type)) {\n // lines/prompts\n const domGroupsDesktop = document.querySelectorAll(`#${q.id} .cf-table-layout__row-group`);\n const domGroupsMobile = document.querySelectorAll(`#${q.id} .cf-mobile-grid-layout .cf-group-heading`);\n q.answerGroups.forEach((group, index) => {\n var _a, _b, _c, _d;\n if (group.code.toLowerCase().startsWith(\"h\") && domGroupsDesktop.length > 0) {\n // desktop\n const groupStart = domGroupsDesktop[index].querySelector(\".cf-table-layout__row-group-start\");\n if (groupStart) {\n domGroupsDesktop[index].classList.add(\"ir-hidden-grid-group\");\n (_a = groupStart.parentElement) === null || _a === void 0 ? void 0 : _a.querySelectorAll(\".cf-table-layout__row--first-in-group .cf-table-layout__cell\").forEach(cell => {\n cell.classList.add(\"ir-hidden-grid-group-heading__first-line-cell\");\n });\n const groupEnd = (_b = groupStart.parentElement) === null || _b === void 0 ? void 0 : _b.querySelector(\".cf-table-layout__row-group-end\");\n if (groupEnd)\n groupEnd.classList.add(\"ir-hidden-group-ending\");\n }\n // mobile\n if (q.type === \"Grid3d\") {\n const questions = document.querySelectorAll(`#${q.id} .cf-grid-3d-mobile__inner-question`);\n questions === null || questions === void 0 ? void 0 : questions.forEach((question) => {\n var _a, _b;\n const header = question.querySelectorAll(\".cf-group-heading\")[index];\n header.classList.add(\"ir-hidden-group-heading\");\n (_a = header.querySelector(\".cf-group-heading__title\")) === null || _a === void 0 ? void 0 : _a.classList.add(\"ir-hidden-group-heading__title\");\n (_b = header.querySelector(\".cf-group-heading__content\")) === null || _b === void 0 ? void 0 : _b.classList.add(\"ir-hidden-group-heading--mobile__content\");\n });\n console.log(\"not yet implemented\");\n }\n else {\n (_c = domGroupsMobile[index].querySelector(\".cf-group-heading__title\")) === null || _c === void 0 ? void 0 : _c.classList.add(\"ir-hidden-group-heading__title\");\n (_d = domGroupsMobile[index].querySelector(\".cf-group-heading__content\")) === null || _d === void 0 ? void 0 : _d.classList.add(\"ir-hidden-group-heading--mobile__content\");\n }\n }\n });\n // columns/scale\n if (q.type !== \"Grid3d\") {\n const answersDom = document.querySelectorAll(`#${q.id} .cf-mobile-grid-answer`);\n if (answersDom.length > 0) {\n q.answers.forEach((answer, answerIndex) => {\n const domScaleGroupHeadings = answersDom[answerIndex].querySelectorAll(\".scale-group-heading\");\n const domScaleGroupEndings = answersDom[answerIndex].querySelectorAll(\".scale-group-end\");\n q.scaleGroups.forEach((group, index) => {\n if (group.code.toLowerCase().startsWith(\"h\")) {\n domScaleGroupHeadings[index].classList.add(\"ir-hidden-group-heading__title\");\n domScaleGroupEndings[index].classList.add(\"ir-hidden-group-ending\");\n }\n else {\n const nextAnswer = getNextSibling(domScaleGroupEndings[index], \".cf-list__item\");\n if (nextAnswer)\n nextAnswer.classList.add(\"ir-answer-after-hidden-group-ending\");\n }\n });\n });\n }\n }\n }\n });\n};\n// number: px\n// string: css unit\n// boolean: true = auto width, false = no width setting\n// undefined: auto width\n// declare let FirstColumnWidth: number | string | boolean | undefined;\n/**\n * sets first column for Numeric lists and Text lists (only for desktop)\n * @param FirstColumnWidth The width of the first column\n * - undefined: auto width (may only be called from Survey Layout )\n * - number: width in px\n * - string: width in valid css unit\n * - boolean: true=auto width, false=do nothing\n */\nconst irListWidth = (FirstColumnWidth) => {\n // If auto called by SurveyLayout (with no argument, i.e. undefined)\n // and also manually called in question: do nothing here in Survey Layout\n if (typeof FirstColumnWidth === \"undefined\") {\n const lastScriptNode = Array.from(document.querySelectorAll(\"script\")).pop();\n if (lastScriptNode && lastScriptNode.innerText.includes(\"irListWidth\"))\n return;\n }\n // type boolean and set to false -> do nothing\n if (typeof FirstColumnWidth === \"boolean\" && !FirstColumnWidth)\n return;\n if (typeof Confirmit === \"undefined\")\n return;\n Confirmit.page.questions.forEach((q) => {\n let selector = \"\";\n if (q.type === \"NumericList\")\n selector = `#${q.id}.cf-question--numeric-list .cf-grid-layout__row-text:first-child`;\n else if (q.type === \"OpenTextList\")\n selector = `#${q.id}.cf-question--open-list .cf-grid-layout__row-text:first-child`;\n else\n return;\n let width = \"\";\n if (typeof FirstColumnWidth === \"undefined\" || (typeof FirstColumnWidth === \"boolean\" && FirstColumnWidth)) {\n // find widest row\n let maxWidth = 0;\n document.querySelectorAll(selector).forEach(row => {\n // reset former width if resized\n row.style.width = \"\";\n if (row.clientWidth > maxWidth)\n maxWidth = row.clientWidth;\n });\n if (maxWidth > 0)\n width = `${maxWidth + 2}px`;\n else\n width = \"0\";\n }\n else if (typeof FirstColumnWidth === \"number\" || !isNaN(Number(FirstColumnWidth)))\n width = `${FirstColumnWidth}px`;\n else if (typeof FirstColumnWidth === \"string\")\n width = FirstColumnWidth;\n // set all row widths\n document.querySelectorAll(selector).forEach(row => {\n row.style.width = width;\n if (width === \"0\")\n row.style.display = \"none\";\n });\n // reset grid row heights on multi columns grid\n const grid = document.querySelector(`#${q.id} .cf-grid-layout--multi-columns`);\n if (grid) {\n // replace 1fr to auto, otherwise the row is too high\n grid.style.gridTemplateRows = grid.style.gridTemplateRows.replace(\"1fr\", \"auto\");\n }\n // check if there is horizontal scrollbar\n const rows = document.querySelectorAll(`#${q.id} .cf-grid-layout__row`);\n const questionContainer = document.querySelector(`#${q.id} .cf-question__content`);\n if (questionContainer) {\n rows.forEach(row => {\n // unconditionally remove the \"ir-cf-mobile-list\" class\n row.classList.remove(\"ir-cf-mobile-list\");\n // there is a scrollbar --> fall back to flexbox columns by adding the \"ir-cf-mobile-list\" class\n if (questionContainer.scrollWidth > questionContainer.clientWidth)\n row.classList.add(\"ir-cf-mobile-list\");\n });\n }\n });\n};\nconst inputFieldWidths = () => {\n var _a;\n if ((_a = document.querySelector(\".container-question\")) === null || _a === void 0 ? void 0 : _a.innerHTML.includes(\"irCfIgnore:InputFieldWidths\"))\n return;\n if (typeof Confirmit === \"undefined\")\n return;\n Confirmit.page.questions.forEach((q) => {\n if (q.type === \"Numeric\" || q.type === \"NumericList\") {\n const maxWidth = q.numeric.precision;\n document.querySelectorAll(`#${q.id} .cf-text-box--number`).forEach(input => {\n // automatically add width if there isn't already one\n if (!input.style.width && maxWidth) {\n input.style.width = `${maxWidth + 2}ch`;\n }\n // set step attribute, otherwise input is invalid if there are decimals\n if (q.numeric.scale > 0 && !input.getAttribute(\"step\"))\n input.setAttribute(\"step\", String(1 / (Math.pow(10, q.numeric.scale))));\n });\n // set width of auto sum field\n const firstInput = document.querySelector(`#${q.id} .cf-numeric-list-answer__input`);\n const autoSumField = document.querySelector(`#${q.id} .cf-numeric-list-auto-sum__value`);\n if (firstInput && autoSumField)\n autoSumField.style.width = `${firstInput.offsetWidth}px`;\n }\n });\n};\n/**\n * If there is no rows attribute on an open question add it with the default value of \"5\".\n */\nconst textareaHeight = () => {\n var _a;\n if ((_a = document.querySelector(\".container-question\")) === null || _a === void 0 ? void 0 : _a.innerHTML.includes(\"irCfIgnore:TextareaHeight\"))\n return;\n if (typeof Confirmit === \"undefined\")\n return;\n Confirmit.page.questions.forEach((q) => {\n if (q.type === \"OpenText\") {\n document.querySelectorAll(`#${q.id} .cf-text-area`).forEach(textarea => {\n // because of \"box-sizing: border-box\" add 20px for 2x1px border + 2x8px padding\n if (!textarea.getAttribute(\"rows\"))\n textarea.setAttribute(\"rows\", \"5\");\n });\n }\n });\n};\n/**\n * Adds event listener to the last text or number input element to submit the form on pressing enter\n */\nconst submitOnEnter = () => {\n var _a;\n if ((_a = document.querySelector(\".container-question\")) === null || _a === void 0 ? void 0 : _a.innerHTML.includes(\"irCfIgnore:SubmitOnEnter\"))\n return;\n // get last input field\n const input = Array.from(document.querySelectorAll(\".cf-text-box\")).pop();\n if (input) {\n input.addEventListener(\"keydown\", (e) => {\n const code = e.code;\n if (code === \"Enter\" || code === \"NumpadEnter\") {\n const nextButton = document.querySelector(\".cf-navigation-next\");\n if (nextButton)\n nextButton.click();\n }\n });\n }\n};\nconst smallAdjustments = () => {\n var _a, _b, _c, _d;\n // qid in html head title\n const action = (_a = document.querySelector(\"form\")) === null || _a === void 0 ? void 0 : _a.getAttribute(\"action\");\n if ((action === null || action === void 0 ? void 0 : action.startsWith(\"/extwix/test_\")) || (action === null || action === void 0 ? void 0 : action.startsWith(\"/extwix/extquicktest_\"))) {\n const qid = (_b = document.querySelector(\".cf-question\")) === null || _b === void 0 ? void 0 : _b.id;\n if (qid)\n document.title = `${qid} - ${document.title}`;\n }\n // add class \"internalQuickTest\" to body element\n if (window.frameElement !== null)\n document.body.classList.add(\"internal-quicktest\");\n // add TEST-DISPLAY to hidden questions\n const textElements = document.querySelectorAll(\".cf-question__text\");\n textElements.forEach(element => {\n var _a, _b;\n if (element.innerText.startsWith(\"[HIDDEN DATA]\")) {\n (_a = element.closest(\".cf-question\")) === null || _a === void 0 ? void 0 : _a.classList.add(\"ir-hidden-question\");\n (_b = element.querySelector(\"span\")) === null || _b === void 0 ? void 0 : _b.classList.add(\"ir-hidden-question--header\");\n }\n });\n // remove back button from DOM if it is hidden\n if (!((_c = document.querySelector(\".container-question\")) === null || _c === void 0 ? void 0 : _c.innerHTML.includes(\"irCfIgnore:RemoveBackbutton\"))) {\n const backButtonElement = document.querySelector(\".cf-navigation-back\");\n if (backButtonElement) {\n const style = getComputedStyle(backButtonElement).getPropertyValue(\"display\");\n if (style === \"none\")\n backButtonElement.remove();\n }\n }\n // prevent pasting text answers\n if (!((_d = document.querySelector(\".container-question\")) === null || _d === void 0 ? void 0 : _d.innerHTML.includes(\"irCfIgnore:PreventPaste\"))) {\n document.querySelectorAll(\".cf-text-box, .cf-text-area\").forEach(tb => {\n tb.addEventListener(\"paste\", e => {\n e.preventDefault();\n });\n });\n }\n};\n/**\n * Look for Grid Scale Group Headings and insert a separator after it\n */\nconst gridSeparators = () => {\n if (typeof Confirmit === \"undefined\")\n return;\n Confirmit.page.questions.forEach((q) => {\n var _a;\n if ((_a = document.querySelector(`#${q.id}`)) === null || _a === void 0 ? void 0 : _a.innerHTML.includes(\"irCfIgnore:GridSeparators\"))\n return;\n if (q.type === \"Grid\") {\n const table = document.querySelector(`#${q.id} .cf-desktop-grid > table`);\n if (!table)\n return;\n const domColumnGroups = document.querySelectorAll(`#${q.id} .cf-table-layout__cell--column-group`);\n let offset = 0;\n let cellInserted = false;\n q.scaleGroups.forEach((group, index) => {\n if (!group.code.toLowerCase().startsWith(\"h\")) {\n const separatorPosition = Number(domColumnGroups[index].getAttribute(\"colspan\"));\n if (separatorPosition === 0)\n return;\n offset += separatorPosition;\n cellInserted = false;\n // insert separator in column-group\n let separatorCell = document.createElement(\"td\");\n separatorCell.className = \"ir-grid-separator\";\n domColumnGroups[index].after(separatorCell);\n // insert separator in thead\n // const secondHeaderRow = table.querySelectorAll(\"thead > tr\")[1];\n const secondHeaderRow = table.querySelector(\".cf-table-layout__row--head\");\n if (secondHeaderRow) {\n separatorCell = document.createElement(\"td\");\n separatorCell.className = \"ir-grid-separator\";\n const cells = secondHeaderRow.querySelectorAll(\"th, td\");\n if (cells.length > offset)\n cells[offset].after(separatorCell);\n }\n // insert separator in every row in tbody\n table.querySelectorAll(\"tbody > tr\").forEach(row => {\n separatorCell = document.createElement(\"td\");\n separatorCell.className = \"ir-grid-separator\";\n const cells = row.querySelectorAll(\"th, td\");\n if (cells.length > offset) {\n cells[offset].after(separatorCell);\n cellInserted = true;\n }\n // increase colspan in Group Headings\n if (row.classList.contains(\"cf-table-layout__row-group-start\") ||\n row.classList.contains(\"cf-table-layout__row-group-end\") ||\n row.classList.contains(\"cf-table-layout__head-spacer\")) {\n const td = row.querySelector(\"td, th\");\n if (td) {\n const colspan = Number(td.getAttribute(\"colspan\"));\n if (colspan > 0)\n td.setAttribute(\"colspan\", String(colspan + 1));\n }\n }\n });\n if (cellInserted)\n offset++;\n }\n });\n }\n });\n};\n/**\n * adds an empty separator column\n * @param columnNumber column number after which a new empty column is inserted\n */\nconst addColumnSeparator = (columnNumber) => {\n // desktop\n document.querySelectorAll(`.cf-table-layout__cell:nth-child(${columnNumber + 1})`).forEach((cell) => {\n const newCell = document.createElement(\"td\");\n newCell.className = \"ir-grid-separator\";\n // insert width only in header, not in every row\n // if (cell.tagName === \"TH\") newCell.style.width = newWidth;\n if (cell.parentNode && cell.nextSibling)\n cell.parentNode.insertBefore(newCell, cell.nextSibling);\n });\n // mobile\n document.querySelectorAll(\".cf-mobile-grid-layout__answer-content .cf-list__item:last-child\").forEach(row => {\n row.style.marginTop = \"1rem\";\n });\n};\n/**\n * Hide next button for a given number of seconds\n * @param seconds number of seconds after the button should be shown again\n */\nconst DeactivateNextButton = (seconds) => {\n const nextbutton = document.querySelector(\".cf-navigation-next\");\n if (!nextbutton)\n return;\n nextbutton.disabled = true;\n const oldLabel = nextbutton.textContent;\n let countdown = seconds;\n nextbutton.textContent = String(countdown);\n const timer = setInterval(() => {\n nextbutton.textContent = String(--countdown);\n if (countdown === 0) {\n nextbutton.textContent = oldLabel;\n nextbutton.disabled = false;\n clearInterval(timer);\n }\n }, 1000);\n};\n/**\n * auto submit form once all page's question results are valid\n */\nconst autoSubmit = () => {\n if (typeof Confirmit === \"undefined\")\n return;\n Confirmit.page.questions.forEach((q) => {\n q.changeEvent.on(() => {\n Confirmit.page.questions.forEach((q2) => {\n if (q2.validate().isValid)\n Confirmit.page.next();\n });\n });\n });\n};\nconst appendLOIToFormAction = () => {\n if (window.disableLOI)\n return; // var disableLOI = true to disable this\n if (typeof Confirmit === \"undefined\")\n return;\n // get all questions\n let questions = Confirmit.page.questions;\n // if more than one, get id of first \"real\" question (not info) on page\n if (questions.length > 1)\n questions = Confirmit.page.questions.filter((q) => q.type !== \"Info\");\n let question;\n // if none left, take first on page\n if (questions.length === 0 && Confirmit.page.questions.length > 0)\n question = Confirmit.page.questions[0];\n else\n question = questions[0];\n const id = question.id || \"\";\n const endTime = new Date();\n const form = document.querySelector(\"form\");\n if (form) {\n let action = form.getAttribute(\"action\");\n if (action) {\n if (action.includes(\"?\"))\n action += \"&\";\n else\n action += \"?\";\n /* eslint no-use-before-define: \"off\" */\n form.setAttribute(\"action\", action + `loq=${Math.round((endTime.getTime() - startTime.getTime()) / 1000)}&id=${id}&`);\n }\n }\n};\n/**\n * hide radiobuttons or checkboxes in single grid or multi grid cells\n * @param {string} question question id\n * @param {string} rows comma separated string if row codes\n * @param {string} columns comma separated string if column codes\n */\nconst hideGridCells = (question, rows, columns) => {\n const _rows = [];\n const _columns = [];\n // get rows\n String(rows)\n .split(\",\")\n .forEach(range => {\n const rangeArray = range.trim().split(\"-\");\n if (rangeArray.length === 1)\n _rows.push(rangeArray[0]);\n else {\n for (let i = Number(rangeArray[0]); i <= Number(rangeArray[1]); i++) {\n _rows.push(String(i));\n }\n }\n });\n // get columns\n String(columns)\n .split(\",\")\n .forEach(range => {\n const rangeArray = range.split(\"-\");\n if (rangeArray.length === 1)\n _columns.push(rangeArray[0]);\n else {\n for (let i = Number(rangeArray[0]); i <= Number(rangeArray[1]); i++) {\n _columns.push(String(i));\n }\n }\n });\n // processing\n _rows.forEach(row => {\n _columns.forEach(column => {\n var _a;\n const controlElement = document.querySelector(`#desktop_${question}_${row}_${column}_control`);\n const tableCell = controlElement === null || controlElement === void 0 ? void 0 : controlElement.closest(\".cf-table-layout__cell\");\n const hideElement = controlElement === null || controlElement === void 0 ? void 0 : controlElement.closest(\".cf-table-layout-cell\");\n if (tableCell && hideElement) {\n tableCell.style.pointerEvents = \"none\";\n hideElement.style.display = \"none\";\n const mobileElement = (_a = document.querySelector(`#mobile_${question}_${row}_${column}_control`)) === null || _a === void 0 ? void 0 : _a.closest(\".cf-list__item\");\n if (mobileElement)\n mobileElement.style.display = \"none\";\n }\n });\n });\n};\n/**\n * set progressbar to given percentage\n * @param {number} percent percentage to set the progress bar to\n */\nconst setProgressBar = (percent) => {\n const progressbarElement = document.querySelector(\".cf-progress__indicator\");\n if (!progressbarElement)\n return;\n const progressIndicatorElement = document.querySelector(\".cf-progress__indicator\");\n if (progressIndicatorElement)\n progressIndicatorElement.style.width = `${percent}%`;\n const textElement = document.querySelector(\".cf-progress__text-for-acc\");\n if (!textElement)\n return;\n const regex = String.fromCharCode(94) + \"(.+?)(\\\\d+%)$\";\n const matches = textElement.innerText.match(regex);\n if (matches && matches.length > 2)\n textElement.innerText = matches[1] + percent + \"%\";\n};\n/**\n * adds key/value pair to querystring of form action\n * @param {string} key key of key/value pair\n * @param {string} value value of key/value pair\n * @returns {void}\n */\nconst addToFormAction = (key, value) => {\n const form = document.querySelector(\"form\");\n if (!form)\n return;\n let action = form.getAttribute(\"action\");\n if (!action)\n return;\n if (action.includes(\"?\"))\n action += \"&\";\n else\n action += \"?\";\n const keyIndex = action.indexOf(key + \"=\");\n if (keyIndex > -1)\n action = action.substring(0, keyIndex);\n form.setAttribute(\"action\", action + key + \"=\" + encodeURIComponent(value));\n};\n/***************************************************************************/\n/* Main event listeners */\n/***************************************************************************/\n// runs when page is loaded\nconst startTime = new Date();\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n var _a;\n // Grid\n gridRatings(); // \n gridSeparators(); // \n gridCellClick(); // \n processGridErrors(); // \n hideGroupHeadings(); // \n removeOpenPlaceholders(); // \n // sets first column for Numeric lists and Text lists (only for desktop)\n irListWidth(); // irListWidth(false);\n inputFieldWidths(); // \n textareaHeight(); // \n submitOnEnter(); // \n smallAdjustments();\n (_a = document.querySelector(\".cf-navigation__button\")) === null || _a === void 0 ? void 0 : _a.addEventListener(\"click\", appendLOIToFormAction); // var disableLOI = true; to disable this\n});\n// runs when window is resized\nwindow.addEventListener(\"resize\", () => {\n // sets first column for Numeric lists and Text lists (only for desktop)\n irListWidth();\n});\n//# sourceMappingURL=interrogare-v5.js.map"],"mappings":"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","ignoreList":[]}