{"version":3,"file":"js/application-0bfb446a32da659324e6.js","mappings":"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","sources":["webpack://app/./app/javascript/application/helpers/ sync \\.js$","webpack://app/./app/javascript/channels/ sync _channel\\.js$","webpack://app/./app/javascript/application.js","webpack://app/./app/javascript/application/helpers/init_login_error_handler.js","webpack://app/./app/javascript/application/helpers/load_key_pair_on_login.js","webpack://app/./app/javascript/application/helpers/load_key_pair_on_reset_password.js","webpack://app/./app/javascript/channels/badge_channel.js","webpack://app/./app/javascript/channels/index.js"],"sourcesContent":["var map = {\n\t\"./init_login_error_handler.js\": 1176,\n\t\"./load_key_pair_on_login.js\": 26647,\n\t\"./load_key_pair_on_reset_password.js\": 94097,\n\t\"application/helpers/init_login_error_handler.js\": 1176,\n\t\"application/helpers/load_key_pair_on_login.js\": 26647,\n\t\"application/helpers/load_key_pair_on_reset_password.js\": 94097\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 = 68636;","var map = {\n\t\"./badge_channel.js\": 67971,\n\t\"channels/badge_channel.js\": 67971\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;","/* eslint no-console:0 */\n// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n//\n// To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate\n// layout file, like app/views/layouts/application.html.erb\n\n\n// Uncomment to copy all static images under ../images to the output folder and reference\n// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\n//\n// const images = require.context('../images', true)\n// const imagePath = (name) => images(name, true)\n\n// Import transpile stuff\nimport 'core-js/stable'\nimport 'regenerator-runtime/runtime'\n\n// Import ACtionCable\nimport \"./channels\";\n\nimport ImportAll from \"./utils/import_all\";\nImportAll('application_helpers', require.context( './application/helpers/', true, /\\.js$/)) // Import all files from ./application/helpers and put them to window.praxisapp.application_helpers\n","export default function(formClass) {\n $(document).ready(function(){\n $(formClass).on('ajax:error',function(event){\n handleErrorOnLogin(event);\n });\n });\n}\n\nfunction handleErrorOnLogin(event) {\n document.getElementById(\"alert\").innerHTML = event.originalEvent.detail[0];\n console.log(\"ERROR!\", event, arguments);\n}\n","import { getKeyPair } from \"../../chat/crypto\";\nimport getStorageEngine from \"../../chat/crypto-session-storage\"\n\nconst PASSWORD_FIELD_CLASS = \"passwordfield_for_load_key_pair_on_login\"\n\nexport default async function() {\n const loginButton = document.getElementById('login-button');\n const value = loginButton.value;\n\n try {\n await sleepInMs(0);\n loginButton.disabled = true;\n loginButton.value = \"Schlüssel wird geladen...\"\n await sleepInMs(0); // wait for the login button to be disabled\n\n const passwordField = document.getElementsByClassName(PASSWORD_FIELD_CLASS)[0];\n const password = passwordField.value;\n await getKeyPair(password, await getStorageEngine());\n } catch(e) {\n console.error(\"could not load private key (password wrong, no private key available?)\", e);\n } finally {\n loginButton.value = value;\n loginButton.disabled = false;\n }\n\n location.reload();\n}\n\nconst sleepInMs = (timeInMs) => {\n return new Promise((resolve, _) => {\n setTimeout(resolve, timeInMs);\n });\n}\n","import { generateAndUploadNewKeyPair, getKeyPair } from \"../../chat/crypto\";\nimport getStorageEngine from \"../../chat/crypto-session-storage\"\n\n \n\nconst PASSWORD_FIELD_CLASS = \"passwordfield_for_load_key_pair_on_reset_password\"\n\nexport default async function() {\n try {\n const passwordField = document.getElementsByClassName(PASSWORD_FIELD_CLASS)[0];\n const password = passwordField.value;\n await generateAndUploadNewKeyPair(password);\n await getKeyPair(password, await getStorageEngine());\n } catch(e) {\n console.log(\"could not load private key (password wrong, no private key available?)\");\n } \n location.reload();\n}\n","import ActionCable from \"../channels/consumer\";\n\nconst SELECTOR_OVS_BADGE = '.numberCircle.ovsCircle';\nconst SELECTOR_CHAT_BADGE = '.numberCircle.chatCircle';\n\n\nconst BADGE_HANDLES = {\n 'ovs': function(){\n return $(SELECTOR_OVS_BADGE);\n },\n 'chat': function(){\n return $(SELECTOR_CHAT_BADGE);\n }\n}\nconst BADGE_STATUS = {}\n\n$(document).ready(()=> {\n for(const badgeName of Object.keys(BADGE_HANDLES)) {\n const badgeHandle = BADGE_HANDLES[badgeName]();\n badgeHandle.hide();\n }\n\n ActionCable.subscriptions.create({\n channel: \"BadgeChannel\",\n // patient_id: document.querySelector('head').dataset.patientId,\n // user_id: document.querySelector('head').dataset.userId\n }, {\n connected: function() {\n console.debug('Connected to BadgeChannel');\n },\n disconnected: function() {\n console.debug('Disconnected from BadgeChannel');\n },\n received: function(data) {\n console.debug(\"Received data from BadgeChannel\", data)\n // $('#chats').prepend(data['chat']);\n\n switch(data.action) {\n case 'badge_status':\n // Message that has the current status\n processBadgeStatus(data);\n break;\n case 'users':\n // Handle that the ovs lobby room count changed\n ovsRoomCountChanged(data);\n break;\n case 'chat_count':\n // Handle that the chat count changed\n chatCountChanged(data);\n break;\n default:\n console.debug(\"No handler for action found\", data.action);\n break;\n }\n },\n });\n});\n\nconst updateCount = function(badgeName, newCount) {\n const badgeHandleFn = BADGE_HANDLES[badgeName];\n if(!badgeHandleFn) {\n console.debug(`Cold not finde badge '${badgeName}', you may have to add it`);\n return\n }\n const jQueryHandle = badgeHandleFn();\n\n if(newCount > 0) {\n jQueryHandle.show();\n BADGE_STATUS[badgeName] = true\n } else {\n jQueryHandle.hide();\n BADGE_STATUS[badgeName] = false\n }\n\n jQueryHandle.html(newCount);\n}\n\nconst ovsRoomCountChanged = function(data) {\n console.debug(\"Room count changed\");\n\n let ovsBadgeCount = 0;\n for(const user of data.payload.users) {\n ovsBadgeCount += user.room;\n }\n updateCount('ovs', ovsBadgeCount);\n}\n\nconst chatCountChanged = function(data) {\n console.debug(\"Chat count changed\");\n updateCount('chat', data.payload.count);\n}\n\nconst processBadgeStatus = function(data) {\n console.debug(\"Applying current status for badges\");\n updateCount('ovs', data.payload.ovs_count )\n updateCount('chat', data.payload.chat_count )\n}\n\n// For updating visibility on page change\n$(document).on(\"turbolinks:load\", () => {\n for( const badgeName of Object.keys(BADGE_HANDLES)) {\n const status = BADGE_STATUS[badgeName]\n if(status != null) { // status already exists\n const badgeHandle = BADGE_HANDLES[badgeName]()\n if(status) { badgeHandle.show(); }\n else { badgeHandle.hide(); }\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"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","ImportAll","require","formClass","$","document","ready","on","event","getElementById","innerHTML","originalEvent","detail","console","log","arguments","handleErrorOnLogin","PASSWORD_FIELD_CLASS","async","loginButton","value","sleepInMs","disabled","password","getElementsByClassName","getKeyPair","getStorageEngine","error","location","reload","timeInMs","Promise","_","setTimeout","generateAndUploadNewKeyPair","BADGE_HANDLES","BADGE_STATUS","badgeName","hide","ActionCable","subscriptions","create","channel","connected","debug","disconnected","received","data","action","processBadgeStatus","ovsRoomCountChanged","chatCountChanged","updateCount","newCount","badgeHandleFn","jQueryHandle","show","html","ovsBadgeCount","user","payload","users","room","count","ovs_count","chat_count","status","badgeHandle","channels","forEach"],"sourceRoot":""}