{"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":""}