{"version":3,"file":"/static_files/dist/js/admin.js","mappings":"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","sources":["webpack://classroom/./static_files/js/modules/admin/UserCreationForm.ts","webpack://classroom/./static_files/js/utils.ts","webpack://classroom/./static_files/js/modules/admin/AdminPageViewLogger.ts","webpack://classroom/./node_modules/path-to-regexp/dist.es2015/index.js","webpack://classroom/./static_files/js/modules/router.ts","webpack://classroom/./static_files/js/admin.ts","webpack://classroom/./static_files/js/modules/heartbeat.ts"],"sourcesContent":["var UserCreationForm = /** @class */ (function () {\n    function UserCreationForm() {\n        this.fieldPassword1 = document.getElementById(\"id_password1\");\n        this.fieldPassword2 = document.getElementById(\"id_password2\");\n    }\n    /**\n     * @returns UserCreationForm\n     */\n    UserCreationForm.create = function () {\n        return new UserCreationForm();\n    };\n    /**\n     * @returns void\n     */\n    UserCreationForm.prototype.main = function () {\n        this.toggleRevealPasswords();\n    };\n    /**\n     * Toggles the reveal passwords when a password field is focused or blurred.\n     *\n     * @returns void\n     */\n    UserCreationForm.prototype.toggleRevealPasswords = function () {\n        var togglePassword = function () {\n            if (this.type === \"password\") {\n                this.type = \"text\";\n            }\n            else if (this.type === \"text\") {\n                this.type = \"password\";\n            }\n        };\n        this.fieldPassword1.addEventListener(\"focus\", togglePassword);\n        this.fieldPassword1.addEventListener(\"blur\", togglePassword);\n        this.fieldPassword2.addEventListener(\"focus\", togglePassword);\n        this.fieldPassword2.addEventListener(\"blur\", togglePassword);\n    };\n    return UserCreationForm;\n}());\nexport default UserCreationForm;\n","export function getCookie(name) {\n    var cookieValue = null;\n    if (document.cookie && document.cookie !== '') {\n        var cookies = document.cookie.split(';');\n        for (var i = 0; i < cookies.length; i++) {\n            var cookie = cookies[i].trim();\n            // Does this cookie string begin with the name we want?\n            if (cookie.substring(0, name.length + 1) === (name + '=')) {\n                cookieValue = decodeURIComponent(cookie.substring(name.length + 1));\n                break;\n            }\n        }\n    }\n    return cookieValue;\n}\n","import { getCookie } from \"../../utils\";\nvar logUsePageViewStatus = 200; // The status code of the last log ping.\nvar AdminPageViewLogger = /** @class */ (function () {\n    function AdminPageViewLogger(pageId) {\n        this.pageId = 0;\n        this.tabUUID = \"\";\n        this.pageId = (pageId < 0) ? 0 : pageId;\n        var storedTabId = sessionStorage.getItem(AdminPageViewLogger.PAGE_ID_SESSION_TAB_KEY);\n        if (storedTabId === null || storedTabId === \"\" || window.name === '') {\n            storedTabId = \"randomUUID\" in crypto ? crypto.randomUUID() : \"tab-\" + Math.floor(Math.random() * 32).toString();\n            sessionStorage.setItem(AdminPageViewLogger.PAGE_ID_SESSION_TAB_KEY, storedTabId);\n            window.name = \"window-\" + this.makeUUID();\n        }\n        this.tabUUID = storedTabId;\n    }\n    /**\n     * Factory method for convenience.\n     *\n     * @param pageId\n     * @returns AdminPageViewLogger\n     */\n    AdminPageViewLogger.create = function (pageId) {\n        return new AdminPageViewLogger(pageId);\n    };\n    /**\n     * @returns void\n     */\n    AdminPageViewLogger.prototype.main = function () {\n        var _this = this;\n        // Run cleanup first to remove existing viewed page of tab session.\n        AdminPageViewLogger.removeSessionData();\n        if (this.pageId > 0) {\n            // Log the page view.\n            this.logUserPageView();\n            // Keep updating log ever 15 seconds while user is on the page.\n            var logInterval_1 = setInterval(function () {\n                _this.logUserPageView();\n                if (logUsePageViewStatus < 200 || logUsePageViewStatus > 299) {\n                    clearInterval(logInterval_1);\n                }\n            }, 5000);\n        }\n    };\n    /**\n     * returns either randomUUID or a string with random numbers\n     */\n    AdminPageViewLogger.prototype.makeUUID = function () {\n        return \"randomUUID\" in crypto ? crypto.randomUUID() : \"tab-\" + Math.floor(Math.random() * 100000).toString();\n    };\n    /**\n     * Cleans up the stored session data for the logger.\n     *\n     * @returns void\n     */\n    AdminPageViewLogger.removeSessionData = function () {\n        var storedPageId = sessionStorage.getItem(AdminPageViewLogger.PAGE_ID_SESSION_KEY);\n        if (storedPageId !== null) {\n            AdminPageViewLogger.create(parseInt(storedPageId)).deleteUserPageView();\n        }\n    };\n    /**\n     * @returns void\n     */\n    AdminPageViewLogger.prototype.deleteUserPageView = function () {\n        if (this.pageId > 0) {\n            $.ajax(this.buildApiData(\"DELETE\"));\n        }\n        sessionStorage.removeItem(AdminPageViewLogger.PAGE_ID_SESSION_KEY);\n    };\n    /**\n     * @returns void\n     */\n    AdminPageViewLogger.prototype.logUserPageView = function () {\n        if (this.pageId < 1) {\n            return;\n        }\n        var postAPIData = this.buildApiData(\"POST\");\n        $.ajax(postAPIData).done(function (data, textStatus, jqXHR) {\n            sessionStorage.setItem(AdminPageViewLogger.PAGE_ID_SESSION_KEY, data.page_id);\n            if (data.other_users === undefined || data.other_users.length == 0) {\n                $(\".users_editing_warning\").hide();\n            }\n            if (data.has_newer_revision && $(\"#messages-revision-warning\").length == 0) {\n                $(\".messages ul\").append('<li class=\"warning\" id=\"messages-revision-warning\"><svg class=\"icon icon-warning messages-icon\" aria-hidden=\"true\"><use href=\"#icon-warning\"></use></svg> Newer revisions have been made. Please refresh your page to receive the latest edits.</li>');\n            }\n            var dupTabMessageElem = $(\"#messages-duplicate-tabs-warning\");\n            if (data.has_duplicate_tabs && dupTabMessageElem.length == 0) {\n                $(\".messages ul\").append('<li class=\"warning\" id=\"messages-duplicate-tabs-warning\"><svg class=\"icon icon-warning messages-icon\" aria-hidden=\"true\"><use href=\"#icon-warning\"></use></svg> <b>Heads Up!</b> You might have this editor window opened in two different tabs. Data conflicts may occur.</li>');\n            }\n            else if (data.has_duplicate_tabs === false && dupTabMessageElem.length > 0) {\n                dupTabMessageElem.remove();\n            }\n        }).always(function (jqXHR) {\n            logUsePageViewStatus = jqXHR.status;\n        });\n    };\n    /**\n     * @param httpMethod\n     * @returns object\n     */\n    AdminPageViewLogger.prototype.buildApiData = function (httpMethod) {\n        return {\n            url: \"/newshour/classroom/dashboard/pages/\" + this.pageId + \"/viewers/\" + this.tabUUID + \"/\",\n            method: httpMethod,\n            headers: { \"X-CSRFToken\": getCookie(\"csrftoken\") }\n        };\n    };\n    AdminPageViewLogger.PAGE_ID_SESSION_KEY = \"classroom_viewing_page_id\";\n    AdminPageViewLogger.PAGE_ID_SESSION_TAB_KEY = \"classroom_viewing_page_tab\";\n    return AdminPageViewLogger;\n}());\nexport default AdminPageViewLogger;\n","/**\n * Tokenize input string.\n */\nfunction lexer(str) {\n    var tokens = [];\n    var i = 0;\n    while (i < str.length) {\n        var char = str[i];\n        if (char === \"*\" || char === \"+\" || char === \"?\") {\n            tokens.push({ type: \"MODIFIER\", index: i, value: str[i++] });\n            continue;\n        }\n        if (char === \"\\\\\") {\n            tokens.push({ type: \"ESCAPED_CHAR\", index: i++, value: str[i++] });\n            continue;\n        }\n        if (char === \"{\") {\n            tokens.push({ type: \"OPEN\", index: i, value: str[i++] });\n            continue;\n        }\n        if (char === \"}\") {\n            tokens.push({ type: \"CLOSE\", index: i, value: str[i++] });\n            continue;\n        }\n        if (char === \":\") {\n            var name = \"\";\n            var j = i + 1;\n            while (j < str.length) {\n                var code = str.charCodeAt(j);\n                if (\n                // `0-9`\n                (code >= 48 && code <= 57) ||\n                    // `A-Z`\n                    (code >= 65 && code <= 90) ||\n                    // `a-z`\n                    (code >= 97 && code <= 122) ||\n                    // `_`\n                    code === 95) {\n                    name += str[j++];\n                    continue;\n                }\n                break;\n            }\n            if (!name)\n                throw new TypeError(\"Missing parameter name at \".concat(i));\n            tokens.push({ type: \"NAME\", index: i, value: name });\n            i = j;\n            continue;\n        }\n        if (char === \"(\") {\n            var count = 1;\n            var pattern = \"\";\n            var j = i + 1;\n            if (str[j] === \"?\") {\n                throw new TypeError(\"Pattern cannot start with \\\"?\\\" at \".concat(j));\n            }\n            while (j < str.length) {\n                if (str[j] === \"\\\\\") {\n                    pattern += str[j++] + str[j++];\n                    continue;\n                }\n                if (str[j] === \")\") {\n                    count--;\n                    if (count === 0) {\n                        j++;\n                        break;\n                    }\n                }\n                else if (str[j] === \"(\") {\n                    count++;\n                    if (str[j + 1] !== \"?\") {\n                        throw new TypeError(\"Capturing groups are not allowed at \".concat(j));\n                    }\n                }\n                pattern += str[j++];\n            }\n            if (count)\n                throw new TypeError(\"Unbalanced pattern at \".concat(i));\n            if (!pattern)\n                throw new TypeError(\"Missing pattern at \".concat(i));\n            tokens.push({ type: \"PATTERN\", index: i, value: pattern });\n            i = j;\n            continue;\n        }\n        tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n    }\n    tokens.push({ type: \"END\", index: i, value: \"\" });\n    return tokens;\n}\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str, options) {\n    if (options === void 0) { options = {}; }\n    var tokens = lexer(str);\n    var _a = options.prefixes, prefixes = _a === void 0 ? \"./\" : _a;\n    var defaultPattern = \"[^\".concat(escapeString(options.delimiter || \"/#?\"), \"]+?\");\n    var result = [];\n    var key = 0;\n    var i = 0;\n    var path = \"\";\n    var tryConsume = function (type) {\n        if (i < tokens.length && tokens[i].type === type)\n            return tokens[i++].value;\n    };\n    var mustConsume = function (type) {\n        var value = tryConsume(type);\n        if (value !== undefined)\n            return value;\n        var _a = tokens[i], nextType = _a.type, index = _a.index;\n        throw new TypeError(\"Unexpected \".concat(nextType, \" at \").concat(index, \", expected \").concat(type));\n    };\n    var consumeText = function () {\n        var result = \"\";\n        var value;\n        while ((value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\"))) {\n            result += value;\n        }\n        return result;\n    };\n    while (i < tokens.length) {\n        var char = tryConsume(\"CHAR\");\n        var name = tryConsume(\"NAME\");\n        var pattern = tryConsume(\"PATTERN\");\n        if (name || pattern) {\n            var prefix = char || \"\";\n            if (prefixes.indexOf(prefix) === -1) {\n                path += prefix;\n                prefix = \"\";\n            }\n            if (path) {\n                result.push(path);\n                path = \"\";\n            }\n            result.push({\n                name: name || key++,\n                prefix: prefix,\n                suffix: \"\",\n                pattern: pattern || defaultPattern,\n                modifier: tryConsume(\"MODIFIER\") || \"\",\n            });\n            continue;\n        }\n        var value = char || tryConsume(\"ESCAPED_CHAR\");\n        if (value) {\n            path += value;\n            continue;\n        }\n        if (path) {\n            result.push(path);\n            path = \"\";\n        }\n        var open = tryConsume(\"OPEN\");\n        if (open) {\n            var prefix = consumeText();\n            var name_1 = tryConsume(\"NAME\") || \"\";\n            var pattern_1 = tryConsume(\"PATTERN\") || \"\";\n            var suffix = consumeText();\n            mustConsume(\"CLOSE\");\n            result.push({\n                name: name_1 || (pattern_1 ? key++ : \"\"),\n                pattern: name_1 && !pattern_1 ? defaultPattern : pattern_1,\n                prefix: prefix,\n                suffix: suffix,\n                modifier: tryConsume(\"MODIFIER\") || \"\",\n            });\n            continue;\n        }\n        mustConsume(\"END\");\n    }\n    return result;\n}\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile(str, options) {\n    return tokensToFunction(parse(str, options), options);\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */\nexport function tokensToFunction(tokens, options) {\n    if (options === void 0) { options = {}; }\n    var reFlags = flags(options);\n    var _a = options.encode, encode = _a === void 0 ? function (x) { return x; } : _a, _b = options.validate, validate = _b === void 0 ? true : _b;\n    // Compile all the tokens into regexps.\n    var matches = tokens.map(function (token) {\n        if (typeof token === \"object\") {\n            return new RegExp(\"^(?:\".concat(token.pattern, \")$\"), reFlags);\n        }\n    });\n    return function (data) {\n        var path = \"\";\n        for (var i = 0; i < tokens.length; i++) {\n            var token = tokens[i];\n            if (typeof token === \"string\") {\n                path += token;\n                continue;\n            }\n            var value = data ? data[token.name] : undefined;\n            var optional = token.modifier === \"?\" || token.modifier === \"*\";\n            var repeat = token.modifier === \"*\" || token.modifier === \"+\";\n            if (Array.isArray(value)) {\n                if (!repeat) {\n                    throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not repeat, but got an array\"));\n                }\n                if (value.length === 0) {\n                    if (optional)\n                        continue;\n                    throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not be empty\"));\n                }\n                for (var j = 0; j < value.length; j++) {\n                    var segment = encode(value[j], token);\n                    if (validate && !matches[i].test(segment)) {\n                        throw new TypeError(\"Expected all \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n                    }\n                    path += token.prefix + segment + token.suffix;\n                }\n                continue;\n            }\n            if (typeof value === \"string\" || typeof value === \"number\") {\n                var segment = encode(String(value), token);\n                if (validate && !matches[i].test(segment)) {\n                    throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n                }\n                path += token.prefix + segment + token.suffix;\n                continue;\n            }\n            if (optional)\n                continue;\n            var typeOfMessage = repeat ? \"an array\" : \"a string\";\n            throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to be \").concat(typeOfMessage));\n        }\n        return path;\n    };\n}\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nexport function match(str, options) {\n    var keys = [];\n    var re = pathToRegexp(str, keys, options);\n    return regexpToFunction(re, keys, options);\n}\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nexport function regexpToFunction(re, keys, options) {\n    if (options === void 0) { options = {}; }\n    var _a = options.decode, decode = _a === void 0 ? function (x) { return x; } : _a;\n    return function (pathname) {\n        var m = re.exec(pathname);\n        if (!m)\n            return false;\n        var path = m[0], index = m.index;\n        var params = Object.create(null);\n        var _loop_1 = function (i) {\n            if (m[i] === undefined)\n                return \"continue\";\n            var key = keys[i - 1];\n            if (key.modifier === \"*\" || key.modifier === \"+\") {\n                params[key.name] = m[i].split(key.prefix + key.suffix).map(function (value) {\n                    return decode(value, key);\n                });\n            }\n            else {\n                params[key.name] = decode(m[i], key);\n            }\n        };\n        for (var i = 1; i < m.length; i++) {\n            _loop_1(i);\n        }\n        return { path: path, index: index, params: params };\n    };\n}\n/**\n * Escape a regular expression string.\n */\nfunction escapeString(str) {\n    return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n/**\n * Get the flags for a regexp from the options.\n */\nfunction flags(options) {\n    return options && options.sensitive ? \"\" : \"i\";\n}\n/**\n * Pull out keys from a regexp.\n */\nfunction regexpToRegexp(path, keys) {\n    if (!keys)\n        return path;\n    var groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n    var index = 0;\n    var execResult = groupsRegex.exec(path.source);\n    while (execResult) {\n        keys.push({\n            // Use parenthesized substring match if available, index otherwise\n            name: execResult[1] || index++,\n            prefix: \"\",\n            suffix: \"\",\n            modifier: \"\",\n            pattern: \"\",\n        });\n        execResult = groupsRegex.exec(path.source);\n    }\n    return path;\n}\n/**\n * Transform an array into a regexp.\n */\nfunction arrayToRegexp(paths, keys, options) {\n    var parts = paths.map(function (path) { return pathToRegexp(path, keys, options).source; });\n    return new RegExp(\"(?:\".concat(parts.join(\"|\"), \")\"), flags(options));\n}\n/**\n * Create a path regexp from string input.\n */\nfunction stringToRegexp(path, keys, options) {\n    return tokensToRegexp(parse(path, options), keys, options);\n}\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nexport function tokensToRegexp(tokens, keys, options) {\n    if (options === void 0) { options = {}; }\n    var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function (x) { return x; } : _d, _e = options.delimiter, delimiter = _e === void 0 ? \"/#?\" : _e, _f = options.endsWith, endsWith = _f === void 0 ? \"\" : _f;\n    var endsWithRe = \"[\".concat(escapeString(endsWith), \"]|$\");\n    var delimiterRe = \"[\".concat(escapeString(delimiter), \"]\");\n    var route = start ? \"^\" : \"\";\n    // Iterate over the tokens and create our regexp string.\n    for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n        var token = tokens_1[_i];\n        if (typeof token === \"string\") {\n            route += escapeString(encode(token));\n        }\n        else {\n            var prefix = escapeString(encode(token.prefix));\n            var suffix = escapeString(encode(token.suffix));\n            if (token.pattern) {\n                if (keys)\n                    keys.push(token);\n                if (prefix || suffix) {\n                    if (token.modifier === \"+\" || token.modifier === \"*\") {\n                        var mod = token.modifier === \"*\" ? \"?\" : \"\";\n                        route += \"(?:\".concat(prefix, \"((?:\").concat(token.pattern, \")(?:\").concat(suffix).concat(prefix, \"(?:\").concat(token.pattern, \"))*)\").concat(suffix, \")\").concat(mod);\n                    }\n                    else {\n                        route += \"(?:\".concat(prefix, \"(\").concat(token.pattern, \")\").concat(suffix, \")\").concat(token.modifier);\n                    }\n                }\n                else {\n                    if (token.modifier === \"+\" || token.modifier === \"*\") {\n                        route += \"((?:\".concat(token.pattern, \")\").concat(token.modifier, \")\");\n                    }\n                    else {\n                        route += \"(\".concat(token.pattern, \")\").concat(token.modifier);\n                    }\n                }\n            }\n            else {\n                route += \"(?:\".concat(prefix).concat(suffix, \")\").concat(token.modifier);\n            }\n        }\n    }\n    if (end) {\n        if (!strict)\n            route += \"\".concat(delimiterRe, \"?\");\n        route += !options.endsWith ? \"$\" : \"(?=\".concat(endsWithRe, \")\");\n    }\n    else {\n        var endToken = tokens[tokens.length - 1];\n        var isEndDelimited = typeof endToken === \"string\"\n            ? delimiterRe.indexOf(endToken[endToken.length - 1]) > -1\n            : endToken === undefined;\n        if (!strict) {\n            route += \"(?:\".concat(delimiterRe, \"(?=\").concat(endsWithRe, \"))?\");\n        }\n        if (!isEndDelimited) {\n            route += \"(?=\".concat(delimiterRe, \"|\").concat(endsWithRe, \")\");\n        }\n    }\n    return new RegExp(route, flags(options));\n}\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nexport function pathToRegexp(path, keys, options) {\n    if (path instanceof RegExp)\n        return regexpToRegexp(path, keys);\n    if (Array.isArray(path))\n        return arrayToRegexp(path, keys, options);\n    return stringToRegexp(path, keys, options);\n}\n//# sourceMappingURL=index.js.map","import { match } from \"path-to-regexp\";\n/**\n * A very simple router which can match request paths to URLs. It also provides for\n * parameter matching. e.g. /some/path/:param_name/\n */\nvar Router = /** @class */ (function () {\n    function Router(routes) {\n        this.routes = routes;\n    }\n    /**\n     * @param string pathname\n     * @returns any | void\n     */\n    Router.prototype.execute = function (pathname) {\n        for (var _i = 0, _a = Object.entries(this.routes); _i < _a.length; _i++) {\n            var _b = _a[_i], route = _b[0], callback = _b[1];\n            var result = this.urlMatch(route, pathname);\n            if (typeof result === \"object\" && result !== null) {\n                return callback(result.params);\n            }\n        }\n    };\n    /**\n     * @param route\n     * @param pathname\n     * @returns object | void\n     */\n    Router.prototype.urlMatch = function (route, pathname) {\n        return match(route, {\n            decode: decodeURIComponent,\n        })(pathname);\n    };\n    return Router;\n}());\nexport default Router;\n","import UserCreationForm from './modules/admin/UserCreationForm';\nimport AdminPageViewLogger from './modules/admin/AdminPageViewLogger';\nimport Router from './modules/router';\nimport heartbeat from './modules/heartbeat';\n// Wagtail ships with jQuery.\n$(function () {\n    // Admin heartbeat to keep session alive.\n    heartbeat();\n    // Routes\n    var router = new Router({\n        \"/newshour/classroom/dashboard/users/add/\": function () {\n            UserCreationForm.create().main();\n        },\n        \"/newshour/classroom/dashboard/pages/:id/edit/\": function (params) {\n            AdminPageViewLogger.create(params.id).main();\n        }\n    });\n    router.execute(window.location.pathname);\n});\n","import AdminPageViewLogger from \"./admin/AdminPageViewLogger\";\n// Checks if path is a valid dashboard page.\nfunction isHeartbeatAdminPage(requestPath) {\n    var invalidPaths = [\n        \"/dashboard/login\",\n        \"/dashboard/logout\",\n        \"/dashboard/password_reset\"\n    ];\n    for (var _i = 0, invalidPaths_1 = invalidPaths; _i < invalidPaths_1.length; _i++) {\n        var invalidPath = invalidPaths_1[_i];\n        if (requestPath.includes(invalidPath)) {\n            return false;\n        }\n    }\n    return true;\n}\nexport default function heartbeat() {\n    var requestPath = window.location.pathname;\n    // Check first if we are on a logged in dashboard page (i.e. not login/logout pages).\n    if (!isHeartbeatAdminPage(requestPath)) {\n        return;\n    }\n    // Do the heartbeat ping.\n    var doPing = function () {\n        fetch(\"/newshour/classroom/dashboard/heartbeat\").catch(function (err) {\n            console.log(err);\n        });\n    };\n    doPing();\n    setInterval(doPing, 3000); // 5 minutes\n    // Clear the admin page view session data if needed.\n    if (!(requestPath.includes(\"/edit/\"))) {\n        var prevPageId = sessionStorage.getItem(AdminPageViewLogger.PAGE_ID_SESSION_KEY);\n        if (prevPageId !== null) {\n            AdminPageViewLogger.removeSessionData();\n        }\n    }\n}\n"],"names":["UserCreationForm","this","fieldPassword1","document","getElementById","fieldPassword2","create","prototype","main","toggleRevealPasswords","togglePassword","type","addEventListener","getCookie","name","cookieValue","cookie","cookies","split","i","length","trim","substring","decodeURIComponent","logUsePageViewStatus","AdminPageViewLogger","pageId","tabUUID","storedTabId","sessionStorage","getItem","PAGE_ID_SESSION_TAB_KEY","window","crypto","randomUUID","Math","floor","random","toString","setItem","makeUUID","_this","removeSessionData","logUserPageView","logInterval_1","setInterval","clearInterval","storedPageId","PAGE_ID_SESSION_KEY","parseInt","deleteUserPageView","$","ajax","buildApiData","removeItem","postAPIData","done","data","textStatus","jqXHR","page_id","undefined","other_users","hide","has_newer_revision","append","dupTabMessageElem","has_duplicate_tabs","remove","always","status","httpMethod","url","method","headers","parse","str","options","tokens","char","push","index","value","count","pattern","j","TypeError","concat","code","charCodeAt","lexer","_a","prefixes","defaultPattern","escapeString","delimiter","result","key","path","tryConsume","mustConsume","nextType","consumeText","prefix","indexOf","suffix","modifier","name_1","pattern_1","match","keys","re","decode","x","pathname","m","exec","params","Object","_loop_1","map","regexpToFunction","pathToRegexp","replace","flags","sensitive","stringToRegexp","strict","_b","start","_c","end","_d","encode","_e","_f","endsWith","endsWithRe","delimiterRe","route","_i","tokens_1","token","mod","endToken","isEndDelimited","RegExp","tokensToRegexp","groupsRegex","execResult","source","regexpToRegexp","Array","isArray","paths","parts","join","arrayToRegexp","Router","routes","execute","entries","callback","urlMatch","_typeof","requestPath","location","invalidPaths_1","invalidPath","includes","isHeartbeatAdminPage","doPing","fetch","err","console","log","heartbeat","id"],"sourceRoot":""}