UNPKG

solid-ui

Version:

UI library for writing Solid read-write-web applications

213 lines (195 loc) • 5.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LogLevel = void 0; exports.alert = alert; exports.clear = clear; exports.debug = debug; exports.dumpHTML = dumpHTML; exports.error = error; exports.escapeForXML = escapeForXML; exports.info = info; exports.logAscending = logAscending; exports.logDescending = logDescending; exports.msg = msg; exports.setInternals = setInternals; exports.setLevel = setLevel; exports.success = success; exports.warn = warn; // /////////////////////// Logging // // bitmask levels // const TNONE = 0 /** @internal */ var TERROR = 1; /** @internal */ var TWARN = 2; /** @internal */ var TMESG = 4; /** @internal */ var TSUCCESS = 8; /** @internal */ var TINFO = 16; /** @internal */ var TDEBUG = 32; /** @internal */ var TALL = 63; /** @internal */ var LogLevel = exports.LogLevel = /*#__PURE__*/function (LogLevel) { LogLevel[LogLevel["Error"] = 1] = "Error"; LogLevel[LogLevel["Warning"] = 2] = "Warning"; LogLevel[LogLevel["Message"] = 4] = "Message"; LogLevel[LogLevel["Success"] = 8] = "Success"; LogLevel[LogLevel["Info"] = 16] = "Info"; LogLevel[LogLevel["Debug"] = 32] = "Debug"; LogLevel[LogLevel["All"] = 63] = "All"; return LogLevel; }({}); /** @internal */ var _level = TERROR + TWARN + TMESG; /** @internal */ var _ascending = false; /** @internal */ var _dom = document; // must be able to override for tests /** @internal */ var _window = window; // must be able to override for tests /** @internal */ function log(str) { var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : TMESG; var typestr = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'mesg'; if (!(_level & type)) return; // bitmask if (typeof _dom !== 'undefined') { var logArea = _dom.getElementById('status'); if (!logArea) return; var addendum = _dom.createElement('span'); addendum.setAttribute('class', typestr); var now = new Date(); addendum.innerHTML = "".concat(now.getHours(), ":").concat(now.getMinutes(), ":").concat(now.getSeconds(), " [").concat(typestr, "] ").concat(escapeForXML(str), "<br/>"); if (_ascending) { logArea.insertBefore(addendum, logArea.firstChild); } else { logArea.appendChild(addendum); } } else if (typeof console !== 'undefined') { // eslint-disable-next-line no-console console.log(str); } } /** * Adds a message to the element with id "status". The messages are prepended with * time and type of message, in this case [mesg]. */ function msg(message) { log(message); } /** * Adds a warning message to the element with id "status". The messages are * prepended with time and type of message, in this case [warn]. */ function warn(message) { log(message, TWARN, 'warn'); } /** * Adds a debugging message to the element with id "status". The messages are * prepended with time and type of message, in this case [dbug]. */ function debug(message) { log(message, TDEBUG, 'dbug'); } /** * Adds a info message to the element with id "status". The messages are * prepended with time and type of message, in this case [info]. */ function info(message) { log(message, TINFO, 'info'); } /** * Adds a error to the element with id "status". The messages are * prepended with time and type of message, in this case [eror]. */ function error(message) { log(message, TERROR, 'eror'); } /** * Adds a success message to the element with id "status". The messages are * prepended with time and type of message, in this case [good]. */ function success(message) { log(message, TSUCCESS, 'good'); } /** * Uses the global alert to send an alert. If global alert is not available, it * will output the message using the method [[warning]]s. */ function alert(message) { if (_window && typeof _window.alert !== 'undefined') { _window.alert(message); } else { warn(message); } } /** * Will clear the content of the element with id "status". */ function clear() { var _dom2; var logArea = (_dom2 = _dom) === null || _dom2 === void 0 ? void 0 : _dom2.getElementById('status'); if (!logArea) return; logArea.innerHTML = ''; } /** * Lets you configure which types of messages will be shown. The module uses * [bitmask](https://en.wikipedia.org/wiki/Mask_(computing)) to filter which * types of messages should be shown. E.g. if you only want warning messages * to be shown, pass 2 to the function, if you want warning and success to be * shown, pass 10 (2+8). By passing the sum of all, 63, you'll show all * types of messages. * * - Error: 1 * - Warning: 2 * - Message: 4 * - Success: 8 * - Info: 16 * - Debug: 32 */ function setLevel(level) { _level = TALL; debug('Log level is now ' + level); _level = level; } /** * Will dump the current HTML using the [[debug]] method. */ function dumpHTML() { var _dom3; if (!_dom) return; var level = _level; _level = TALL; debug(((_dom3 = _dom) === null || _dom3 === void 0 || (_dom3 = _dom3.body) === null || _dom3 === void 0 ? void 0 : _dom3.innerHTML) || ''); _level = level; } /** * Will start prepending messages the list of log messages. */ function logAscending() { _ascending = true; } /** * Will start appending messages the list of log messages. (This is default * behavior.) */ function logDescending() { _ascending = false; } /** @internal */ function escapeForXML(str) { // can be replaced with function utils module when migrating return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;'); } /** @internal */ function setInternals(window, document) { _window = window; _dom = document; } //# sourceMappingURL=log.js.map