{"version":3,"file":"js/application-f8539c117427fdc8eb39.js","mappings":"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","sources":["webpack://biostatus/./app/javascript/channels/ sync _channel\\.js$","webpack://biostatus/./app/javascript/controllers/application.js","webpack://biostatus/./app/javascript/controllers/has_one_form_controller.js","webpack://biostatus/./app/javascript/controllers/printer_controller.js","webpack://biostatus/./app/javascript/controllers/protected_input_controller.js","webpack://biostatus/./app/javascript/controllers/test_results_controller.js","webpack://biostatus/./app/javascript/controllers/index.js","webpack://biostatus/./app/javascript/application.js","webpack://biostatus/./app/javascript/channels/appointment_channel.js","webpack://biostatus/./app/javascript/channels/consumer.js","webpack://biostatus/./app/javascript/channels/data_import_channel.js","webpack://biostatus/./app/javascript/channels/index.js","webpack://biostatus/./app/javascript/primary/index.js","webpack://biostatus/./app/javascript/web_components/age_in_months_input.js"],"sourcesContent":["var map = {\n\t\"./appointment_channel.js\": 71732,\n\t\"./data_import_channel.js\": 70897,\n\t\"./test_group_channel.js\": 21433,\n\t\"channels/appointment_channel.js\": 71732,\n\t\"channels/data_import_channel.js\": 70897,\n\t\"channels/test_group_channel.js\": 21433\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 63760;","import { Application } from \"@hotwired/stimulus\"\n\nconst application = Application.start()\n\n// Configure Stimulus development experience\napplication.debug = false\nwindow.Stimulus = application\n\nexport { application }\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"template\", \"wrapper\"]\n static values = { hasRecord: Boolean }\n\n get nestedRecord() {\n return this.element.querySelector(\".nested-record\")\n }\n\n get nestedFields() {\n return this.nestedRecord.querySelector(\".nested-fields\")\n }\n\n toggle(event) {\n new bootstrap.Collapse(this.wrapperTarget, {\n toggle: false\n }).toggle()\n\n if (this.hasRecordValue) {\n this.remove(event)\n } else {\n const content = this.templateTarget.innerHTML.replace(/NEW_RECORD/g, new Date().getTime())\n this.nestedRecord.innerHTML = content\n }\n }\n\n remove(_event) {\n // New records are simply removed from the page\n if (this.nestedFields.dataset.newRecord == \"true\") {\n this.nestedFields.remove()\n return\n }\n\n // Existing nested form is flagged for deletion\n this.nestedFields.querySelector(\"input[name*='_destroy']\").value = 1\n }\n}","import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"printer\"\nexport default class extends Controller {\n print() {\n let restorepage = document.body.innerHTML\n let printcontent = document.querySelector(\".invoice-wrapper\").cloneNode(true)\n\n let body = document.body\n body.innerHTML = printcontent.outerHTML\n window.print()\n body.innerHTML = restorepage\n }\n}\n","import { Controller } from '@hotwired/stimulus';\n\n// Enable an input when a trigger is clicked, showing a confirmation\n// message beforehand\nexport default class extends Controller {\n static targets = ['input'];\n\n enable(event) {\n event.preventDefault();\n const input = this.inputTarget;\n if (!input.getAttribute('disabled')) return;\n\n const warning = input.dataset.protectedInputWarning;\n\n if (!warning || confirm(warning)) {\n this.inputTarget.removeAttribute('disabled');\n this.inputTarget.focus();\n this.inputTarget.select();\n event.currentTarget.setAttribute('disabled', 'disabled');\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus';\n\n// Connects to data-controller=\"test-results\"\nexport default class extends Controller {\n static targets = ['state', 'result'];\n\n connect() {\n this.collapse = new bootstrap.Collapse(this.resultTarget, {\n toggle: this.stateTarget.value == 'resulted',\n });\n this.update();\n }\n\n disconnect() {\n this.collapse.dispose();\n }\n\n update() {\n this.resultTarget.querySelectorAll('input, select').forEach((input) => {\n input.toggleAttribute('disabled', this.stateTarget.value !== 'resulted');\n });\n if (this.stateTarget.value == 'resulted') {\n this.collapse.show();\n } else {\n this.collapse.hide();\n }\n }\n}\n","// This file is auto-generated by ./bin/rails stimulus:manifest:update\n// Run that command whenever you add a new controller or create them with\n// ./bin/rails generate stimulus controllerName\n\nimport { application } from \"./application\"\n\nimport HasOneFormController from \"./has_one_form_controller.js\"\napplication.register(\"has-one-form\", HasOneFormController)\n\nimport PrinterController from \"./printer_controller.js\"\napplication.register(\"printer\", PrinterController)\n\nimport ProtectedInputController from \"./protected_input_controller.js\"\napplication.register(\"protected-input\", ProtectedInputController)\n\nimport TestResultsController from \"./test_results_controller.js\"\napplication.register(\"test-results\", TestResultsController)\n","import './channels';\nimport './web_components';\nimport './controllers';\nimport Primary from './primary';\nimport $ from 'jquery';\n\nwindow.Primary = Primary;","import consumer from './consumer';\n\nif (window.location.href.includes('global_search') || window.location.href.includes('participants')) {\n consumer.subscriptions.create(\n { channel: 'AppointmentChannel' },\n {\n connected() {\n console.log('connected');\n },\n\n disconnected() {\n // Called when the subscription has been terminated by the server\n },\n\n received(data) {\n const params = new URLSearchParams(window.location.search);\n\n if (params.get('test_lane') && data.test_lane === Number(params.get('test_lane'))) {\n var href = window.location.href;\n if (!$('#dataOutOfSync').length) {\n $('.participants-form').prepend(\n '<a class=\"data-reload btn btn-danger btn-block\" id=\"dataOutOfSync\" href=\"' + href + '\">Data is out of sync, reload page</a>',\n );\n }\n }\n // Called when there's incoming data on the websocket for this channel\n },\n },\n );\n}\n","// Action Cable provides the framework to deal with WebSockets in Rails.\n// You can generate new channels where WebSocket features live using the `rails generate channel` command.\n\nimport { createConsumer } from \"@rails/actioncable\"\n\nexport default createConsumer()\n","import consumer from \"./consumer\"\n\nconst $data_import_id = $(\"#data-import\").data('import-id')\n\nif ($data_import_id !== undefined) {\n consumer.subscriptions.create(\n {\n channel: \"DataImportChannel\",\n id: $data_import_id\n }, {\n received(data) {\n if(data.csv_process_finished) {\n location.reload()\n }\n\n if(data.progress) {\n const progress = parseInt((data.progress / data.total_rows) * 100) + '%'\n $(\".progress-bar\").css(\"width\", progress).text(progress)\n\n $(\"#save_import_later_button\").prop(\"disabled\", true);\n $(\"#import_button\").prop(\"disabled\", true);\n\n if (data.progress >= data.total_rows ) {\n $(\".progress-bar\")\n .removeClass(\"progress-bar-animated\")\n .removeClass(\"bg-info\")\n .addClass(\"bg-success\")\n }\n }\n },\n })\n}\n","// Load all the channels within this directory and all subdirectories.\n// Channel files must be named *_channel.js.\n\nconst channels = require.context('.', true, /_channel\\.js$/);\nchannels.keys().forEach(channels);\n","var Primary = {};\n\nPrimary.GoogleAddress = function(place) {\n this.place = place;\n}\n\nPrimary.GoogleAddress.prototype.composeAddress = function(addressPartNames, nameType) {\n var thiz = this;\n var findAddressPart = function(partName) {\n return thiz.place.address_components.find(function(c) {\n return c.types.includes(partName);\n });\n }\n var addressParts = addressPartNames.map(function(partName) {\n var addressPart = findAddressPart(partName);\n if (!addressPart) {\n return '';\n }\n\n if (nameType == 'short') {\n return addressPart.short_name;\n } else {\n return addressPart.long_name;\n }\n });\n return addressParts.join(' ');\n}\n\nPrimary.evaluateLocationRules = function(locationData, rules) {\n // List<{predicate, [coordinates|value]}>\n // LocationData{point, postal_code, county, city, state}\n let results = [];\n rules = rules.filter(function(r) {\n // Check if the location rule is in here.\n return ['location_coordinates', 'postal_code', 'county', 'city', 'state'].indexOf(r.access_rule_type) >= 0;\n })\n for (var i = 0; i < rules.length; i++) {\n var rule = rules[i];\n var result = true;\n if (rule.access_rule_type === 'location_coordinates') {\n // Evaluate location coordinates\n result = Primary.pointInPolygon(locationData.point, rule.coordinates);\n } else if (rule.access_rule_type === 'postal_code') {\n result = locationData.postal_code.toLowerCase() === rule.value.toLowerCase();\n } else if (rule.access_rule_type === 'county') {\n result = locationData.county.toLowerCase() === rule.value.toLowerCase();\n } else if (rule.access_rule_type === 'city') {\n result = locationData.city.toLowerCase() === rule.value.toLowerCase();\n } else if (rule.access_rule_type === 'state') {\n result = locationData.state.toLowerCase() === rule.value.toLowerCase();\n }\n\n if (rule.predicate === 'predicate_not') {\n results.push(!result);\n }\n\n results.push(result);\n }\n // It's always an OR at the global level\n if (results.length === 0) {\n return true;\n }\n return results.reduce(function(val, result) {\n return val || result;\n });\n}\n\nPrimary.pointInPolygon = function(point, vs) {\n // ray-casting algorithm based on\n // http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\n\n var x = point[0], y = point[1];\n\n var inside = false;\n for (var i = 0, j = vs.length - 1; i < vs.length; j = i++) {\n var xi = vs[i][0], yi = vs[i][1];\n var xj = vs[j][0], yj = vs[j][1];\n\n var intersect = ((yi > y) != (yj > y))\n && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\n if (intersect) inside = !inside;\n }\n\n return inside;\n}\n\nPrimary.distanceBetweenTwoPoints = function(p1, p2) {\n var x1 = p1[0];\n var y1 = p1[1];\n var x2 = p2[0];\n var y2 = p2[1];\n\n var a = x1 - x2;\n var b = y1 - y2;\n\n return Math.sqrt( a*a + b*b );\n}\n\nPrimary.googleAddressFiller = function(autocompleteTarget, address1Target, cityTarget, stateTarget, postalCodeTarget, address2Target, callback, countyTarget) {\n var autocomplete = new google.maps.places.Autocomplete(autocompleteTarget[0], {\n fields: [\"address_components\", \"geometry.location\", \"formatted_address\"]\n });\n\n autocomplete.addListener('place_changed', function() {\n var place = autocomplete.getPlace();\n if (!place.geometry) {\n // User entered the name of a Place that was not suggested and\n // pressed the Enter key, or the Place Details request failed.\n return;\n }\n\n if (place.address_components) {\n var googlePlace = new window.Primary.GoogleAddress(place);\n\n var address1 = Primary.normalizeString(googlePlace.composeAddress(['street_number', 'route'], 'long').trim());\n var city = Primary.normalizeString(googlePlace.composeAddress(['locality', 'postal_town'], 'long').trim());\n var state = Primary.normalizeString(googlePlace.composeAddress(['administrative_area_level_1'], 'short').trim());\n var postalCode = Primary.normalizeString(googlePlace.composeAddress(['postal_code'], 'long').trim());\n var county = Primary.normalizeString(googlePlace.composeAddress(['administrative_area_level_2'], 'long').trim());\n\n if (callback) {\n callback(address1, city, state, county, postalCode, place);\n } else {\n address1Target.val(address1);\n cityTarget.val(city);\n stateTarget.val(state);\n postalCodeTarget.val(postalCode);\n if (countyTarget) countyTarget.val(county);\n }\n address2Target.focus();\n }\n });\n}\n\nPrimary.parseVaccineBarcode = function(barcode) {\n // 010003492815890581723102810U4275AA\n // 01 000349281589058 17 131028 10 U4275AA\n // 01 gtin 17 expiration 10 lotnumber\n if (barcode.substr(0, 2) !== '01') {\n return { error: \"Barcode not recognized\" };\n }\n if (barcode.substr(17, 2) !== \"17\") {\n return { error: \"Barcode not recognized\" };\n }\n if (barcode.substr(25, 2) !== \"10\") {\n return { error: \"Barcode not recognized\" };\n }\n\n var gtin = barcode.substr(2, 15)\n var expirationDate = barcode.substr(19, 6);\n var lotNumber = barcode.substr(27);\n return {\n gtin: gtin,\n expirationDate: expirationDate,\n lotNumber: lotNumber\n }\n}\n\n\nPrimary.isValidDate = function(year, month, day) {\n month = month - 1;\n var d = new Date(year, month, day);\n if (d.getFullYear() == year && d.getMonth() == month && d.getDate() == day) {\n return true;\n }\n return false;\n}\n\nPrimary.normalizeString = function(string) {\n if (string){\n var sanitized = string.normalize ? string.normalize(\"NFD\") : string; // IE11 doesn't support normalize\n return sanitized.replace(/[\\u0300-\\u036f]/g, \"\");\n }\n}\n\nPrimary.signatureBox = function(canvas, $dataInput, clearButton) {\n var signaturePad = new SignaturePad(canvas);\n var $canvas = $(canvas);\n var $clearButton = $(clearButton);\n function setSignatureValue() {\n var data = signaturePad.toDataURL();\n if (!signaturePad.isEmpty()) {\n $dataInput.val(data);\n } else {\n $dataInput.val(\"\");\n }\n }\n\n $canvas.mouseout(setSignatureValue);\n $canvas.mouseup(setSignatureValue);\n $canvas[0].addEventListener('pointerup', setSignatureValue);\n\n $clearButton.click(function() {\n signaturePad.clear();\n setSignatureValue();\n });\n}\nexport default Primary;\n","class AgeInMonthsInput extends HTMLElement {\n static get observedAttributes() {\n return ['value', 'name', 'required', 'data-hide-months'];\n }\n\n constructor() {\n super();\n\n this.value = this.getAttribute('value');\n this.inputId = this.getAttribute('input_id');\n this.roundYear = this.getAttribute('data-round-year') === 'true';\n this.required = this.getAttribute('required') === 'required';\n this.yearValue = '';\n this.monthValue = '';\n this.yearInputId = `${this.inputId}_years`;\n this.monthInputId = `${this.inputId}_months`;\n\n this.initializeInnerHTML();\n this.initializeHelpTooltip();\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === 'value') {\n this.updateInputValues();\n } else if (name === 'data-hide-months') {\n this.updateMonthVisibility();\n }\n this.updateHiddenInputValue();\n }\n\n updateInputValues() {\n this.value = this.getAttribute('value');\n\n if (this.value) {\n const ageInMonths = parseInt(this.value);\n this.yearValue = Math.floor(ageInMonths / 12);\n this.monthValue = this.hideMonths ? 0 : ageInMonths % 12;\n }\n\n this.querySelector(`#${this.yearInputId}`).value = this.yearValue;\n this.querySelector(`#${this.monthInputId}`).value = this.monthValue;\n }\n\n updateMonthVisibility() {\n this.hideMonths = this.getAttribute('data-hide-months') === 'true';\n\n const yearLabel = this.querySelector(`label[for='${this.yearInputId}']`);\n const monthInput = this.querySelector(`#${this.monthInputId}`);\n const monthLabel = this.querySelector(`label[for='${this.monthInputId}']`);\n\n if (this.hideMonths) {\n yearLabel.textContent = 'years.';\n monthInput.classList.add('d-none');\n monthInput.value = '';\n monthLabel.classList.add('d-none');\n\n if (this.required) {\n monthInput.removeAttribute('required');\n monthInput.removeAttribute('aria-required');\n }\n } else {\n yearLabel.textContent = 'years and';\n monthInput.classList.remove('d-none');\n monthLabel.classList.remove('d-none');\n\n if (this.required) {\n monthInput.setAttribute('required', 'required');\n monthInput.setAttribute('aria-required', true);\n }\n }\n }\n\n updateHiddenInputValue = () => {\n const yearInput = this.querySelector(`#${this.yearInputId}`);\n const monthInput = this.querySelector(`#${this.monthInputId}`);\n const hiddenInput = this.querySelector(`#${this.inputId}`);\n\n this.yearValue = yearInput.value;\n this.monthValue = this.hideMonths ? 0 : monthInput.value;\n\n if (this.yearValue || this.monthValue) {\n this.value =\n parseInt(this.yearValue || '0') * 12 +\n (this.hideMonths && this.roundYear\n ? 11\n : parseInt(this.monthValue || '0'));\n } else {\n this.value = '';\n }\n\n hiddenInput.value = this.value;\n };\n\n initializeInnerHTML() {\n const name = this.getAttribute('name') || '';\n\n const inputClass = 'form-control numeric integer';\n const inputStyle = 'width: 120px;';\n\n this.innerHTML = `\n <input\n type=\"hidden\"\n name=\"${name}\"\n id=\"${this.inputId}\"\n value=\"${this.value}\"\n />\n <div class=\"mb-3\">\n <div class=\"d-flex align-items-baseline age-in-months\">\n <div class=\"d-flex flex-column align-items-baseline\">\n <input class=\"${inputClass}\" style=\"${inputStyle}\" ${\n this.required ? 'required=\"required\"' : ''\n } aria-required=\"${this.required}\" type=\"number\" step=\"1\" id=\"${\n this.yearInputId\n }\" min=\"0\" data-parsley-min=\"0\">\n </div>\n <label class=\"form-label mx-2 integer ${\n this.required ? 'required' : ''\n }\" for=\"${this.yearInputId}\">\n years and\n </label>\n <div class=\"d-flex flex-column align-items-baseline\">\n <input class=\"${inputClass}\" style=\"${inputStyle}\" ${\n this.required ? 'required=\"required\"' : ''\n } aria-required=\"${this.required}\" type=\"number\" step=\"1\" id=\"${\n this.monthInputId\n }\" min=\"0\" max=\"11\" data-parsley-range=\"[0, 11]\">\n </div>\n <span>\n <label class=\"form-label mx-2 integer ${\n this.required ? 'required' : ''\n }\" for=\"${this.monthInputId}\">\n months.\n <i\n class=\"far fa-question-circle text-muted\"\n data-bs-toggle=\"tooltip\"\n data-bs-placement=\"bottom\"\n data-bs-original-title=\"Months are based on the full calendar month. If a birth occurred in Jan and the minimum is 4 months they will be eligible to register on any day within May, regardless of exact birth date.\">\n </i>\n </label>\n </span>\n </div>\n </div>\n `;\n\n this.querySelector(`#${this.yearInputId}`).onchange =\n this.updateHiddenInputValue;\n this.querySelector(`#${this.monthInputId}`).onchange =\n this.updateHiddenInputValue;\n }\n\n initializeHelpTooltip = () => {\n setTimeout(\n () =>\n new bootstrap.Tooltip(this.querySelector('[data-bs-toggle=\"tooltip\"]')),\n 500,\n );\n };\n}\n\nAgeInMonthsInput.prototype.CUSTOM_ELEMENT_NAME = 'age-in-months-input';\n\nif (!customElements.get(AgeInMonthsInput.prototype.CUSTOM_ELEMENT_NAME)) {\n customElements.define(\n AgeInMonthsInput.prototype.CUSTOM_ELEMENT_NAME,\n AgeInMonthsInput,\n );\n}\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","application","Application","start","debug","window","Stimulus","_default","_Controller","_classCallCheck","_callSuper","arguments","_inherits","key","get","this","element","querySelector","nestedRecord","value","event","bootstrap","Collapse","wrapperTarget","toggle","hasRecordValue","remove","content","templateTarget","innerHTML","replace","Date","getTime","_event","nestedFields","dataset","newRecord","Controller","targets","values","hasRecord","Boolean","restorepage","document","body","printcontent","cloneNode","outerHTML","print","preventDefault","input","inputTarget","getAttribute","warning","protectedInputWarning","confirm","removeAttribute","focus","select","currentTarget","setAttribute","collapse","resultTarget","stateTarget","update","dispose","_this","querySelectorAll","forEach","toggleAttribute","show","hide","register","HasOneFormController","PrinterController","ProtectedInputController","TestResultsController","Primary","location","href","includes","consumer","subscriptions","create","channel","connected","console","log","disconnected","received","data","params","URLSearchParams","search","test_lane","Number","$","length","prepend","createConsumer","$data_import_id","undefined","csv_process_finished","reload","progress","parseInt","total_rows","css","text","prop","removeClass","addClass","channels","require","place","GoogleAddress","prototype","composeAddress","addressPartNames","nameType","thiz","partName","addressPart","address_components","find","c","types","findAddressPart","short_name","long_name","join","evaluateLocationRules","locationData","rules","results","filter","r","indexOf","access_rule_type","i","rule","result","pointInPolygon","point","coordinates","postal_code","toLowerCase","county","city","state","predicate","push","reduce","val","vs","x","y","inside","j","xi","yi","xj","yj","distanceBetweenTwoPoints","p1","p2","x1","y1","a","b","Math","sqrt","googleAddressFiller","autocompleteTarget","address1Target","cityTarget","postalCodeTarget","address2Target","callback","countyTarget","autocomplete","google","maps","places","Autocomplete","fields","addListener","getPlace","geometry","googlePlace","address1","normalizeString","trim","postalCode","parseVaccineBarcode","barcode","substr","error","gtin","expirationDate","lotNumber","isValidDate","year","month","day","d","getFullYear","getMonth","getDate","string","normalize","signatureBox","canvas","$dataInput","clearButton","signaturePad","SignaturePad","$canvas","$clearButton","setSignatureValue","toDataURL","isEmpty","mouseout","mouseup","addEventListener","click","clear","AgeInMonthsInput","_HTMLElement","updateHiddenInputValue","yearInput","concat","yearInputId","monthInput","monthInputId","hiddenInput","inputId","yearValue","monthValue","hideMonths","roundYear","initializeHelpTooltip","setTimeout","Tooltip","required","initializeInnerHTML","name","oldValue","newValue","updateInputValues","updateMonthVisibility","ageInMonths","floor","yearLabel","monthLabel","textContent","classList","add","inputClass","inputStyle","onchange","_wrapNativeSuper","HTMLElement","CUSTOM_ELEMENT_NAME","customElements","define"],"sourceRoot":""}