/*
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
/******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({
/***/ "./src/app/app.js":
/*!************************!*\
!*** ./src/app/app.js ***!
\************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _app_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./app.css */ \"./src/app/app.css\");\n/* harmony import */ var _nav_nav_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../nav/nav.js */ \"./src/nav/nav.js\");\n/* harmony import */ var _router_router_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../router/router.js */ \"./src/router/router.js\");\n\n\n\n\n\nconst app = {\n \n init: () => {\n const herolfg = localStorage.getItem('herolfg');\n window.herolfg = herolfg ? JSON.parse(herolfg) : '';\n if (!window.herolfg) {\n $.post('/auth/token/hero', {\n email: 'anonymous@herolfg.com',\n token: 'none'\n }).then((data) => {\n window.herolfg = { token: data.token, profile: { isAnonymous: true } };\n localStorage.setItem('herolfg', JSON.stringify(window.herolfg));\n _nav_nav_js__WEBPACK_IMPORTED_MODULE_1__.default.initNav();\n app.initApp();\n });\n return;\n }\n _nav_nav_js__WEBPACK_IMPORTED_MODULE_1__.default.initNav();\n app.initApp();\n },\n \n initApp: () => {\n window.onpopstate = ((state) => {\n const path = window.location.pathname;\n const parts = path.split('/');\n _router_router_js__WEBPACK_IMPORTED_MODULE_2__.default.route(_router_router_js__WEBPACK_IMPORTED_MODULE_2__.default.getRouteFromPath(parts[1], parts[2]), parts[2]);\n });\n const path = window.location.pathname;\n const parts = path.split('/');\n _router_router_js__WEBPACK_IMPORTED_MODULE_2__.default.route(_router_router_js__WEBPACK_IMPORTED_MODULE_2__.default.getRouteFromPath(parts[1], parts[2]), parts[2]);\n }\n\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (app);\n\n\n//# sourceURL=webpack:///./src/app/app.js?");
/***/ }),
/***/ "./src/auth/auth.js":
/*!**************************!*\
!*** ./src/auth/auth.js ***!
\**************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _router_router_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../router/router.js */ \"./src/router/router.js\");\n/* harmony import */ var _nav_nav_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../nav/nav.js */ \"./src/nav/nav.js\");\n\n\n\nconst auth = {\n\n showPlayground: () => {\n const html = `\n
\n
Use the secret password to create and/or signin as a fake test user. \n
\n
\n
`;\n $('.app').html(html);\n $('.app').find('.playground-form').submit((e) => {\n const email = $('input[type=\"email\"]').val();\n const password = $('input#password').val();\n const confirmPassword = $('input#confirm-password').val();\n $.post('/auth/playground/', {\n email,\n password,\n confirmPassword\n }).then((data) => {\n window.herolfg.token = data.token;\n window.herolfg.profile.isAnonymous = false;\n window.herolfg.profile.email = email;\n localStorage.setItem('herolfg', JSON.stringify(window.herolfg));\n _router_router_js__WEBPACK_IMPORTED_MODULE_0__.default.route(_router_router_js__WEBPACK_IMPORTED_MODULE_0__.default.CROWDSOURCEMAIL_MESSAGE_LIST_VIEW);\n _nav_nav_js__WEBPACK_IMPORTED_MODULE_1__.default.updateNav();\n });\n return false;\n });\n\n const token = window.herolfg.token;\n if (!token) {\n return;\n }\n\n const headers = {\n 'Authorization': `Token ${token}`\n };\n $.ajax({\n type: 'GET',\n url: `/api/playground/`,\n contentType: 'application/json',\n headers\n }).then((data) => {\n const table = $('');\n const tbody = $(' ');\n $.each(data, (userId, userEmail) => {\n tbody.append(`${userEmail} `);\n });\n table.append(tbody);\n const container = $(`
`);\n container.append(table);\n $('#test-users').html(container);\n $(\"#test-users\").prepend(`List of fake test users to impersonate during development of beta MVP `);\n $('#test-users tr').click((e) => {\n console.log('just login with the above form using the secret password');\n });\n undefined.updateActionBarState();\n });\n },\n\n showLogin: () => {\n const html = `\n`;\n $('.app').html(html);\n $('.app').find('.login-form').submit((e) => {\n const email = $('input[type=\"email\"]').val();\n $.post('/auth/email/', {\n email\n }).then((data) => {\n auth.showAuth(email);\n });\n return false;\n });\n },\n\n showAuth: (email) => {\n const html = \n`\n\n`;\n $('.app').html(html);\n $('.app').find('.auth-form').submit((e) => {\n const email = $('input[type=\"email\"]').val();\n const token = $('input[type=\"token\"]').val();\n $.post('/auth/token/', {\n email,\n token\n }).then((data) => {\n window.herolfg.token = data.token;\n window.herolfg.profile.isAnonymous = false;\n window.herolfg.profile.email = email;\n localStorage.setItem('herolfg', JSON.stringify(window.herolfg));\n _router_router_js__WEBPACK_IMPORTED_MODULE_0__.default.route(_router_router_js__WEBPACK_IMPORTED_MODULE_0__.default.CROWDSOURCEMAIL_MESSAGE_LIST_VIEW);\n _nav_nav_js__WEBPACK_IMPORTED_MODULE_1__.default.updateNav();\n });\n return false;\n });\n }\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (auth);\n\n\n//# sourceURL=webpack:///./src/auth/auth.js?");
/***/ }),
/***/ "./src/crowdsourcemail/crowdsourcemail.js":
/*!************************************************!*\
!*** ./src/crowdsourcemail/crowdsourcemail.js ***!
\************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _router_router__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../router/router */ \"./src/router/router.js\");\n\n\nclass crowdsourcemail {\n \n pageSize = 20;\n mailData = null;\n nextButton = null;\n previousButton = null;\n tags = null;\n filter = 'all';\n\n titleCase(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n }\n\n showCrowdsourcemailApp(url = null) {\n const token = window.herolfg.token;\n const previousUrl = _router_router__WEBPACK_IMPORTED_MODULE_0__.default.getPreviousApi();\n if (url === null && previousUrl) {\n url = `${previousUrl}`;\n const filter = (new URLSearchParams(url)).get('filter');\n if (!filter) {\n url += `&filter=${this.filter}`\n }\n }\n if (url === null) {\n url = `/api/messages/?page_size=${this.pageSize}&filter=${this.filter}`;\n }\n _router_router__WEBPACK_IMPORTED_MODULE_0__.default.setPreviousApi(url);\n const headers = {\n 'Authorization': `Token ${token}`\n };\n $.ajax({\n type: 'GET',\n url,\n contentType: 'application/json',\n headers,\n }).then((data) => {\n this.mailData = data;\n this.renderMailApp();\n this.updateFilters();\n });\n }\n\n updateFilters() {\n const token = window.herolfg.token;\n const headers = {\n 'Authorization': `Token ${token}`\n };\n $.ajax({\n type: 'GET',\n url: '/api/tags/',\n contentType: 'application/json',\n headers,\n }).then((tags) => {\n this.tags = {};\n tags.forEach((tag) => this.tags[tag.value] = tag.user_count);\n console.log('tags', this.tags);\n this.renderFilters();\n });\n }\n\n renderFilters() {\n const dropdown = $(\n`\n\n`\n );\n $('.filter-dropdown').html(dropdown);\n $('.filter-dropdown .dropdown-item').click((e) => this.filterMessages(e));\n }\n\n filterMessages(event) {\n event.preventDefault();\n this.filter = $(event.currentTarget).attr('data-val');\n $('.filter-button').html(`${this.titleCase(this.filter)} Messages`);\n _router_router__WEBPACK_IMPORTED_MODULE_0__.default.setPreviousApi(null);\n this.showCrowdsourcemailApp();\n }\n\n renderMailApp() {\n const table = $('');\n const tbody = $(' ');\n $.each(this.mailData.results, (index, message) => {\n const messageListItem = this.getMessageListItem(message);\n tbody.append(messageListItem);\n });\n table.append(tbody);\n const container = $('
');\n const actionBar = this.getActionBar();\n container.append(actionBar);\n container.append(table);\n $('.app').html(container);\n $('.app tr').click((e) => {\n const messageId = $(e.currentTarget).attr('data-id');\n _router_router__WEBPACK_IMPORTED_MODULE_0__.default.route(_router_router__WEBPACK_IMPORTED_MODULE_0__.default.CROWDSOURCEMAIL_MESSAGE_ITEM_VIEW, messageId);\n });\n this.updateActionBarState();\n }\n\n getMessageListItem(message) {\n const row = $(` `);\n const text = $(`${message.subject} ${message.text}
`);\n const time = $(`${moment(message.processed).format(\"M/D/YY\")} `);\n const voteCount = $(`${message.mail_vote_score} `);\n row.append(voteCount);\n if (this.filter && this.filter !== 'all') {\n const count = $(`${message.mail_tags_count} `);\n row.append(count);\n }\n row.append(text);\n row.append(time);\n return row;\n }\n\n getActionBar() {\n let start = 1;\n if (this.mailData.next) {\n const nextPage = parseInt((new URLSearchParams(this.mailData.next)).get('page'), 10);\n start = ((nextPage - 2) * this.pageSize) + 1;\n } else if (this.mailData.previous) {\n let prevPage = 1;\n const page = parseInt((new URLSearchParams(this.mailData.previous)).get('page'), 10);\n if (page) {\n prevPage = page;\n }\n start = ((prevPage) * this.pageSize) + 1;\n }\n const end = start + this.mailData.results.length - 1;\n\n const leftSide = $('');\n\n const rightSide = $('
');\n\n if (this.mailData.count === 0) {\n rightSide.append('No Messages
');\n } else {\n this.previousButton = $('prev ');\n this.previousButton.click(() => this.showPreviousPage());\n this.nextButton = $('next ');\n this.nextButton.click(() => this.showNextPage());\n const bar = $(`
${start} - ${end} of ${this.mailData.count} `);\n rightSide.append(bar).append(this.previousButton).append(this.nextButton);\n }\n\n const container = $('
');\n container.append(leftSide);\n container.append(rightSide);\n return container;\n }\n\n showPreviousPage() {\n this.showCrowdsourcemailApp(this.mailData.previous);\n }\n\n showNextPage() {\n this.showCrowdsourcemailApp(this.mailData.next);\n }\n\n updateActionBarState() {\n this.nextButton.prop('disabled', this.mailData.next === null);\n this.previousButton.prop('disabled', this.mailData.previous === null);\n }\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (crowdsourcemail);\n\n\n//# sourceURL=webpack:///./src/crowdsourcemail/crowdsourcemail.js?");
/***/ }),
/***/ "./src/crowdsourcemail/messageItemView.js":
/*!************************************************!*\
!*** ./src/crowdsourcemail/messageItemView.js ***!
\************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _router_router__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../router/router */ \"./src/router/router.js\");\n\n\nclass crowdsourcemailMessageItemView {\n\n id = null;\n tags = null;\n vote = 0;\n\n showMessage(id) {\n this.id = id;\n const token = window.herolfg.token;\n const headers = {\n 'Authorization': `Token ${token}`\n };\n $.ajax({\n type: 'GET',\n url: `/api/messages/${id}/`,\n contentType: 'application/json',\n headers,\n }).then((data) => {\n this.tags = {};\n this.vote = data.user_mail_votes;\n data.user_mail_tags.forEach((tag_info) => this.tags[tag_info.tag.value] = true);\n\n const bar = this.getActionBar();\n const message = this.getMessage(data);\n const container = $('
');\n container.append(bar).append(message);\n $('.app').html(container);\n });\n }\n\n getMessage(message) {\n const date = moment(message.processed).format(\"M/D/YY\");\n const container = $('
');\n const top = $(`\n\n
${message.subject} \n
\n
${date}
\n
\n`);\n const bottom = $('
');\n bottom.html(message.text);\n container.append(top).append(bottom);\n return container;\n }\n\n getActionBar() {\n const container = $('
');\n const row = $('
');\n container.append(row);\n const leftSide = $('
');\n const rightSide = $('
');\n\n const back = $(' _router_router__WEBPACK_IMPORTED_MODULE_0__.default.route(_router_router__WEBPACK_IMPORTED_MODULE_0__.default.CROWDSOURCEMAIL_MESSAGE_LIST_VIEW));\n leftSide.append(back);\n row.append(leftSide);\n\n row.append('
');\n\n const defaultClass = 'btn-dark';\n let colorClass = this.tags['star'] ? 'btn-primary' : defaultClass;\n const star = $(` `);\n star.html('Star');\n star.click(() => {\n this.doAction('star');\n });\n\n colorClass = this.tags['archive'] ? 'btn-primary' : defaultClass;\n const archive = $(` `);\n archive.html('Archive');\n archive.click(() => {\n this.doAction('archive');\n });\n\n colorClass = this.tags['spam'] ? 'btn-primary' : defaultClass;\n const spam = $(` `);\n spam.html('Spam');\n spam.click(() => {\n this.doAction('spam');\n });\n\n colorClass = this.tags['trash'] ? 'btn-primary' : defaultClass;\n const trash = $(` `);\n trash.html('Trash');\n trash.click(() => {\n this.doAction('trash');\n });\n\n colorClass = this.vote === 1 ? 'btn-primary' : defaultClass;\n const thumbUp = $(` `);\n thumbUp.click(() => {\n let vote = 0;\n if (this.vote !== 1) {\n vote = 1;\n }\n this.doVote(vote);\n });\n\n colorClass = this.vote === -1 ? 'btn-primary' : defaultClass;\n const thumbDown = $(` `);\n thumbDown.click(() => {\n let vote = 0;\n if (this.vote !== -1) {\n vote = -1;\n }\n this.doVote(vote);\n });\n\n rightSide.append(trash);\n rightSide.append(spam);\n rightSide.append(archive);\n rightSide.append(star);\n rightSide.append(thumbDown);\n rightSide.append(thumbUp);\n\n row.append(rightSide);\n return container;\n }\n\n doAction(action) {\n const token = window.herolfg.token;\n const headers = {\n 'Authorization': `Token ${token}`\n };\n $.ajax({\n type: 'POST',\n url: `/api/tags/`,\n contentType: 'application/json',\n headers,\n data: JSON.stringify({\n value: action,\n message: this.id,\n set: typeof this.tags[action] === 'undefined'\n })\n }).then((data) => {\n this.showMessage(this.id)\n });\n }\n\n doVote(vote) {\n const token = window.herolfg.token;\n const headers = {\n 'Authorization': `Token ${token}`\n };\n $.ajax({\n type: 'POST',\n url: `/api/votes/`,\n contentType: 'application/json',\n headers,\n data: JSON.stringify({\n vote,\n message: this.id\n })\n }).then((data) => {\n this.showMessage(this.id)\n });\n }\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (crowdsourcemailMessageItemView);\n\n\n//# sourceURL=webpack:///./src/crowdsourcemail/messageItemView.js?");
/***/ }),
/***/ "./src/index.js":
/*!**********************!*\
!*** ./src/index.js ***!
\**********************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_app_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./app/app.js */ \"./src/app/app.js\");\n\n\nfunction load() {\n $(document).ready(() => {\n _app_app_js__WEBPACK_IMPORTED_MODULE_0__.default.init();\n });\n\n}\n\nload();\n\n\n//# sourceURL=webpack:///./src/index.js?");
/***/ }),
/***/ "./src/nav/nav.js":
/*!************************!*\
!*** ./src/nav/nav.js ***!
\************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _router_router_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../router/router.js */ \"./src/router/router.js\");\n/* harmony import */ var _app_app_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../app/app.js */ \"./src/app/app.js\");\n\n\n\nconst nav = {\n \n initNav: () => {\n const html =\n`\n\n\n \n`;\n $('.main-nav').html(html);\n $(`.${_router_router_js__WEBPACK_IMPORTED_MODULE_0__.default.CROWDSOURCEMAIL_MESSAGE_LIST_VIEW}`).click(() => {\n _router_router_js__WEBPACK_IMPORTED_MODULE_0__.default.route(_router_router_js__WEBPACK_IMPORTED_MODULE_0__.default.CROWDSOURCEMAIL_MESSAGE_LIST_VIEW);\n });\n $('.settings').click(() => {\n _router_router_js__WEBPACK_IMPORTED_MODULE_0__.default.route('settings');\n });\n $('.login').click(() => {\n _router_router_js__WEBPACK_IMPORTED_MODULE_0__.default.route('login');\n });\n $('.logout').click(() => {\n localStorage.setItem('herolfg', '');\n _app_app_js__WEBPACK_IMPORTED_MODULE_1__.default.init();\n });\n nav.updateNav();\n },\n\n \n updateNav: () => {\n if (!window.herolfg.profile.isAnonymous) {\n const email = window.herolfg.profile.email;\n $('.nav-link.settings').removeClass('hidden');\n $('.nav-link.login').addClass('hidden');\n $('.nav-link.logout').removeClass('hidden').find('.email-display').html(email);\n }\n }\n\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (nav);\n\n\n//# sourceURL=webpack:///./src/nav/nav.js?");
/***/ }),
/***/ "./src/router/router.js":
/*!******************************!*\
!*** ./src/router/router.js ***!
\******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _auth_auth_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../auth/auth.js */ \"./src/auth/auth.js\");\n/* harmony import */ var _settings_settings_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../settings/settings.js */ \"./src/settings/settings.js\");\n/* harmony import */ var _crowdsourcemail_crowdsourcemail_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../crowdsourcemail/crowdsourcemail.js */ \"./src/crowdsourcemail/crowdsourcemail.js\");\n/* harmony import */ var _crowdsourcemail_messageItemView_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../crowdsourcemail/messageItemView.js */ \"./src/crowdsourcemail/messageItemView.js\");\n\n\n\n\n\nconst router = {\n previousApi: null,\n CROWDSOURCEMAIL_MESSAGE_LIST_VIEW: 'crowdsourcemailMessageListView',\n CROWDSOURCEMAIL_MESSAGE_ITEM_VIEW: 'crowdsourcemailMessageItemView',\n route: (route, id = null) => {\n const routes = {\n login: _auth_auth_js__WEBPACK_IMPORTED_MODULE_0__.default.showLogin,\n playground: _auth_auth_js__WEBPACK_IMPORTED_MODULE_0__.default.showPlayground\n };\n\n if (typeof routes[route] !== 'undefined') {\n routes[route].call();\n } else if (route === 'settings') {\n const settingsView = new _settings_settings_js__WEBPACK_IMPORTED_MODULE_1__.default();\n settingsView.showSettingsApp();\n } else if (route === router.CROWDSOURCEMAIL_MESSAGE_ITEM_VIEW) {\n const crowdMailMessageView = new _crowdsourcemail_messageItemView_js__WEBPACK_IMPORTED_MODULE_3__.default();\n crowdMailMessageView.showMessage(id);\n } else {\n route = router.CROWDSOURCEMAIL_MESSAGE_LIST_VIEW;\n const crowdMailApp = new _crowdsourcemail_crowdsourcemail_js__WEBPACK_IMPORTED_MODULE_2__.default();\n crowdMailApp.showCrowdsourcemailApp();\n }\n\n const url = router.getUrl(route, id);\n history.pushState({id}, route, url);\n const nav = $(`.nav-link.${route}`);\n if (nav) {\n $('.nav-link').removeClass('active');\n nav.addClass('active');\n }\n },\n getUrl: (route, id = null) => {\n let url = `/${route}`;\n if (route === router.CROWDSOURCEMAIL_MESSAGE_LIST_VIEW) {\n url = '/messages';\n }\n if (route === router.CROWDSOURCEMAIL_MESSAGE_ITEM_VIEW) {\n url = `/messages/${id}`;\n }\n return url;\n },\n getRouteFromPath: (path, id = null) => {\n let route = path;\n if (route === 'messages') {\n route = router.CROWDSOURCEMAIL_MESSAGE_LIST_VIEW;\n if (id) {\n route = router.CROWDSOURCEMAIL_MESSAGE_ITEM_VIEW;\n }\n }\n return route;\n },\n setPreviousApi: (url) => {\n router.previousApi = url;\n },\n getPreviousApi: () => {\n return router.previousApi;\n }\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (router);\n\n\n//# sourceURL=webpack:///./src/router/router.js?");
/***/ }),
/***/ "./src/settings/settings.js":
/*!**********************************!*\
!*** ./src/settings/settings.js ***!
\**********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nclass settings {\n\n showSettingsApp() {\n const html =\n`\n\n`;\n $('.app').html(html);\n this.getSettings();\n }\n\n getSettings() {\n const token = window.herolfg.token;\n const headers = {\n 'Authorization': `Token ${token}`\n };\n $.ajax({\n type: 'GET',\n url: '/api/settings/',\n contentType: 'application/json',\n headers,\n }).then((settings) => {\n const emailsVisibleToNonMembers = settings.length && settings[0].key === 'EmailsVisibleToNonMembers';\n $('#EmailsVisibleToNonMembers')\n .prop('checked', emailsVisibleToNonMembers)\n .prop('disabled', false)\n .off('change')\n .change((e) => {\n const checked = $(e.currentTarget).prop('checked');\n console.log('setting changed', checked);\n this.updateSettings('EmailsVisibleToNonMembers', checked);\n });\n });\n }\n\n updateSettings(setting, value) {\n const token = window.herolfg.token;\n const headers = {\n 'Authorization': `Token ${token}`\n };\n const payload = {\n key: setting,\n value\n };\n $.ajax({\n type: 'POST',\n url: '/api/settings/',\n contentType: 'application/json',\n data: JSON.stringify(payload),\n headers,\n }).then((settings) => {\n this.getSettings();\n });\n }\n\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (settings);\n\n\n//# sourceURL=webpack:///./src/settings/settings.js?");
/***/ }),
/***/ "../../../usr/local/lib/node_modules/css-loader/dist/cjs.js!./src/app/app.css":
/*!************************************************************************************!*\
!*** ../../../usr/local/lib/node_modules/css-loader/dist/cjs.js!./src/app/app.css ***!
\************************************************************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _usr_local_lib_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../usr/local/lib/node_modules/css-loader/dist/runtime/api.js */ \"../../../usr/local/lib/node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _usr_local_lib_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_usr_local_lib_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);\n// Imports\n\nvar ___CSS_LOADER_EXPORT___ = _usr_local_lib_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/**\\napp\\n*/\\nhtml,\\nbody {\\n height: 100%;\\n width: 100%;\\n}\\n\\ndiv.app {\\n height: calc(100% - 56px);\\n width: 100%;\\n}\\n\\n.hidden {\\n display: none;\\n}\\n\\n/**\\nnav\\n*/\\na,\\na label {\\n cursor: pointer;\\n}\\n\\n/**\\ncrowdsourcemail\\n*/\\nspan.subject {\\n font-weight: 700;\\n}\\n\\nspan.text {\\n margin-left: 15px;\\n color: gray;\\n}\\n\\ndiv.message {\\n height: 24px;\\n overflow: hidden;\\n}\\n\\ntable {\\n width: 100%;\\n table-layout: fixed;\\n}\\n\\n.date-column {\\n width: 85px;\\n}\\n\\n.app tr:hover {\\n cursor: pointer;\\n}\\n\\n/**\\ncrowdsouremail message item view\\n*/\\n.app .message-date {\\n width: 100px;\\n}\\n\\n.app .text-body {\\n white-space: pre-wrap;\\n}\\n\\n.app .count-column,\\n.app .vote-count-column {\\n width: 50px;\\n}\\n\\n.app .help-info {\\n color: white;\\n}\\n\\n.app .playground-form {\\n margin-bottom: 30px;\\n}\\n\\n#test-users {\\n margin-top: 10px;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack:///./src/app/app.css?../../../usr/local/lib/node_modules/css-loader/dist/cjs.js");
/***/ }),
/***/ "../../../usr/local/lib/node_modules/css-loader/dist/runtime/api.js":
/*!**************************************************************************!*\
!*** ../../../usr/local/lib/node_modules/css-loader/dist/runtime/api.js ***!
\**************************************************************************/
/***/ ((module) => {
eval("\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\n//# sourceURL=webpack:///../../../usr/local/lib/node_modules/css-loader/dist/runtime/api.js?");
/***/ }),
/***/ "./src/app/app.css":
/*!*************************!*\
!*** ./src/app/app.css ***!
\*************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _usr_local_lib_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../../usr/local/lib/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"../../../usr/local/lib/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _usr_local_lib_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_usr_local_lib_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _usr_local_lib_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../../usr/local/lib/node_modules/style-loader/dist/runtime/styleDomAPI.js */ \"../../../usr/local/lib/node_modules/style-loader/dist/runtime/styleDomAPI.js\");\n/* harmony import */ var _usr_local_lib_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_usr_local_lib_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _usr_local_lib_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../../usr/local/lib/node_modules/style-loader/dist/runtime/insertBySelector.js */ \"../../../usr/local/lib/node_modules/style-loader/dist/runtime/insertBySelector.js\");\n/* harmony import */ var _usr_local_lib_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_usr_local_lib_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _usr_local_lib_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../../usr/local/lib/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ \"../../../usr/local/lib/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\");\n/* harmony import */ var _usr_local_lib_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_usr_local_lib_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _usr_local_lib_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../../usr/local/lib/node_modules/style-loader/dist/runtime/insertStyleElement.js */ \"../../../usr/local/lib/node_modules/style-loader/dist/runtime/insertStyleElement.js\");\n/* harmony import */ var _usr_local_lib_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_usr_local_lib_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _usr_local_lib_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../../usr/local/lib/node_modules/style-loader/dist/runtime/styleTagTransform.js */ \"../../../usr/local/lib/node_modules/style-loader/dist/runtime/styleTagTransform.js\");\n/* harmony import */ var _usr_local_lib_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_usr_local_lib_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _usr_local_lib_node_modules_css_loader_dist_cjs_js_app_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../../usr/local/lib/node_modules/css-loader/dist/cjs.js!./app.css */ \"../../../usr/local/lib/node_modules/css-loader/dist/cjs.js!./src/app/app.css\");\n\n \n \n \n \n \n \n \n \n \n\nvar options = {};\n\noptions.styleTagTransform = (_usr_local_lib_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_usr_local_lib_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n options.insert = _usr_local_lib_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, \"head\");\n \noptions.domAPI = (_usr_local_lib_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_usr_local_lib_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _usr_local_lib_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_usr_local_lib_node_modules_css_loader_dist_cjs_js_app_css__WEBPACK_IMPORTED_MODULE_6__.default, options);\n\n\n\n\n /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_usr_local_lib_node_modules_css_loader_dist_cjs_js_app_css__WEBPACK_IMPORTED_MODULE_6__.default && _usr_local_lib_node_modules_css_loader_dist_cjs_js_app_css__WEBPACK_IMPORTED_MODULE_6__.default.locals ? _usr_local_lib_node_modules_css_loader_dist_cjs_js_app_css__WEBPACK_IMPORTED_MODULE_6__.default.locals : undefined);\n\n\n//# sourceURL=webpack:///./src/app/app.css?");
/***/ }),
/***/ "../../../usr/local/lib/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":
/*!*************************************************************************************************!*\
!*** ../../../usr/local/lib/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
\*************************************************************************************************/
/***/ ((module) => {
eval("\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction addStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};\n\n//# sourceURL=webpack:///../../../usr/local/lib/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js?");
/***/ }),
/***/ "../../../usr/local/lib/node_modules/style-loader/dist/runtime/insertBySelector.js":
/*!*****************************************************************************************!*\
!*** ../../../usr/local/lib/node_modules/style-loader/dist/runtime/insertBySelector.js ***!
\*****************************************************************************************/
/***/ ((module) => {
eval("\n\nvar memo = {};\n/* istanbul ignore next */\n\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n}\n/* istanbul ignore next */\n\n\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n}\n\nmodule.exports = insertBySelector;\n\n//# sourceURL=webpack:///../../../usr/local/lib/node_modules/style-loader/dist/runtime/insertBySelector.js?");
/***/ }),
/***/ "../../../usr/local/lib/node_modules/style-loader/dist/runtime/insertStyleElement.js":
/*!*******************************************************************************************!*\
!*** ../../../usr/local/lib/node_modules/style-loader/dist/runtime/insertStyleElement.js ***!
\*******************************************************************************************/
/***/ ((module) => {
eval("\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var style = document.createElement(\"style\");\n options.setAttributes(style, options.attributes);\n options.insert(style);\n return style;\n}\n\nmodule.exports = insertStyleElement;\n\n//# sourceURL=webpack:///../../../usr/local/lib/node_modules/style-loader/dist/runtime/insertStyleElement.js?");
/***/ }),
/***/ "../../../usr/local/lib/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":
/*!*******************************************************************************************************!*\
!*** ../../../usr/local/lib/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js ***!
\*******************************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(style) {\n var nonce = true ? __webpack_require__.nc : 0;\n\n if (nonce) {\n style.setAttribute(\"nonce\", nonce);\n }\n}\n\nmodule.exports = setAttributesWithoutAttributes;\n\n//# sourceURL=webpack:///../../../usr/local/lib/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js?");
/***/ }),
/***/ "../../../usr/local/lib/node_modules/style-loader/dist/runtime/styleDomAPI.js":
/*!************************************************************************************!*\
!*** ../../../usr/local/lib/node_modules/style-loader/dist/runtime/styleDomAPI.js ***!
\************************************************************************************/
/***/ ((module) => {
eval("\n\n/* istanbul ignore next */\nfunction apply(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute(\"media\", media);\n } else {\n style.removeAttribute(\"media\");\n }\n\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n options.styleTagTransform(css, style);\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nfunction domAPI(options) {\n var style = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(style, options, obj);\n },\n remove: function remove() {\n removeStyleElement(style);\n }\n };\n}\n\nmodule.exports = domAPI;\n\n//# sourceURL=webpack:///../../../usr/local/lib/node_modules/style-loader/dist/runtime/styleDomAPI.js?");
/***/ }),
/***/ "../../../usr/local/lib/node_modules/style-loader/dist/runtime/styleTagTransform.js":
/*!******************************************************************************************!*\
!*** ../../../usr/local/lib/node_modules/style-loader/dist/runtime/styleTagTransform.js ***!
\******************************************************************************************/
/***/ ((module) => {
eval("\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, style) {\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nmodule.exports = styleTagTransform;\n\n//# sourceURL=webpack:///../../../usr/local/lib/node_modules/style-loader/dist/runtime/styleTagTransform.js?");
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ id: moduleId,
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/compat get default export */
/******/ (() => {
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = (module) => {
/******/ var getter = module && module.__esModule ?
/******/ () => (module['default']) :
/******/ () => (module);
/******/ __webpack_require__.d(getter, { a: getter });
/******/ return getter;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = (exports) => {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
/******/
/************************************************************************/
/******/
/******/ // startup
/******/ // Load entry module and return exports
/******/ // This entry module can't be inlined because the eval devtool is used.
/******/ var __webpack_exports__ = __webpack_require__("./src/index.js");
/******/
/******/ })()
;