{"version":3,"file":"js/survey-bundle-62292aa3095bd11f04f0.js","mappings":"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","sources":["webpack://app/./app/javascript/bundles/layout/NavBar.tsx","webpack://app/./app/javascript/bundles/HeadacheSurvey/components/HeadacheSurvey.tsx","webpack://app/./app/javascript/packs/survey-bundle.js"],"sourcesContent":["import React, { useState } from 'react'\nimport { Dialog, DialogPanel } from '@headlessui/react'\nimport { Bars3Icon, XMarkIcon } from '@heroicons/react/24/outline'\nimport mixpanel from \"mixpanel-browser\";\n\ntype Link = {\n text: string;\n href: string;\n}\ninterface NavBarProps {\n links: Link[]\n loginLogoutLink: Link\n}\n\nexport default function NavBar({ links, loginLogoutLink }) {\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false)\n\n function onLinkClick(event) {\n const text = event.target.innerText;\n mixpanel.track(`Click link NavBar \"${text}\"`);\n }\n\n return (\n
\n \n \n
\n \n
\n \n HeadacheDoc\n \n \n setMobileMenuOpen(false)}\n className=\"-m-2.5 rounded-md p-2.5 text-gray-700\"\n >\n Close menu\n \n \n
\n
\n
\n
\n {links.map((item) => (\n \n {item.text}\n \n ))}\n
\n
\n \n {loginLogoutLink.text}\n \n
\n
\n
\n
\n
\n
\n )\n}","import React, { useEffect, useCallback } from 'react';\nimport mixpanel from \"mixpanel-browser\";\nimport 'survey-core/defaultV2.min.css';\nimport { PlainLight } from \"survey-core/themes/plain-light\";\n\n\nimport { Model } from 'survey-core';\nimport { Survey } from 'survey-react-ui';\n\ninterface HeadacheSurveyProps {\n survey: any,\n userId: number,\n surveyName: string,\n showProgressBar?: string,\n}\n\nconst HeadacheSurvey = (props: HeadacheSurveyProps) => {\n const { survey, userId, showProgressBar, surveyName } = props;\n\n const modelAttributes = {\n ...survey,\n showProgressBar,\n progressBarType: \"pages\",\n progressBarShowPageNumbers: false,\n progressBarShowPageTitles: false,\n }\n const model = new Model(modelAttributes);\n model.applyTheme(PlainLight);\n\n const surveyComplete = useCallback(async (survey) => {\n mixpanel.track(`Submit ${surveyName} Survey`);\n const response = await saveSurveyResults(\n \"survey_results\",\n survey.data,\n userId,\n surveyName,\n )\n const surveyResultId = response.survey_id;\n if (surveyResultId) {\n mixpanel.track(`Redirect to ${surveyName} Survey Result`);\n window.location.assign(`survey_results/${surveyResultId}${isDebugSurvey() ? \"?debug=true\" : \"\"}`);\n } else {\n window.location.assign(`survey/${surveyResultId}${isDebugSurvey() ? \"?debug=true\" : \"\"}`);\n }\n }, []);\n\n const pageChange = useCallback(async (_, options) => {\n const { propertyHash } = options.page;\n mixpanel.track(`Show ${surveyName} Survey page ${propertyHash.num}`);\n }, []);\n\n model.onComplete.add(surveyComplete);\n model.onAfterRenderPage.add(pageChange);\n\n useEffect(() => {\n mixpanel.identify(userId)\n mixpanel.track(`Start ${surveyName} Survey`);\n }, []);\n\n return (\n <>\n \n \n );\n};\n\nexport default HeadacheSurvey;\n\nfunction isDebugSurvey() {\n const queryString = window.location.search;\n const urlParams = new URLSearchParams(queryString);\n const debug = urlParams.get('debug');\n return debug === \"true\";\n}\n\nasync function saveSurveyResults(url, json, userId, surveyName) {\n try {\n const result = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json;charset=UTF-8'\n },\n body: JSON.stringify({ data: { data: json, user_id: userId, survey_name: surveyName } })\n })\n const data = await result.json();\n return data;\n } catch (error) {\n return error;\n }\n}","import ReactOnRails from 'react-on-rails';\n\nimport NavBar from '../bundles/layout/NavBar';\nimport HeadacheSurvey from '../bundles/HeadacheSurvey/components/HeadacheSurvey';\nimport mixpanel from \"mixpanel-browser\";\n\nwindow.mixpanelToken = document.querySelector('meta[name=\"mixpanel\"]').getAttribute('content');\nmixpanel.init(window.mixpanelToken);\n\nReactOnRails.register({\n NavBar,\n HeadacheSurvey,\n});\n\nimport jquery from \"jquery\";\nwindow.jQuery = jquery;\nwindow.$ = jquery;\n\n$(function () {\n const trackableLinks = $('.trackable-link');\n $(trackableLinks).on(\"click\", function (e) {\n const linkText = e.currentTarget.dataset.linkText;\n const text = e.currentTarget.text;\n mixpanel.track(`Click link \"${linkText || text}\"`);\n });\n});"],"names":["NavBar","links","loginLogoutLink","mobileMenuOpen","setMobileMenuOpen","useState","onLinkClick","event","text","target","innerText","mixpanel","track","React","className","href","alt","src","type","onClick","Bars3Icon","map","item","key","Dialog","open","onClose","DialogPanel","XMarkIcon","props","survey","userId","showProgressBar","surveyName","modelAttributes","progressBarType","progressBarShowPageNumbers","progressBarShowPageTitles","model","Model","applyTheme","PlainLight","surveyComplete","useCallback","async","response","url","json","result","fetch","method","headers","body","JSON","stringify","data","user_id","survey_name","error","saveSurveyResults","surveyResultId","survey_id","window","location","assign","isDebugSurvey","pageChange","_","options","propertyHash","page","num","onComplete","add","onAfterRenderPage","useEffect","identify","Survey","queryString","search","URLSearchParams","get","mixpanelToken","document","querySelector","getAttribute","init","ReactOnRails","HeadacheSurvey","jQuery","jquery","$","trackableLinks","on","e","linkText","currentTarget","dataset"],"sourceRoot":""}