UNPKG

handsontable

Version:

Handsontable is a JavaScript Data Grid available for React, Angular and Vue.

106 lines (98 loc) 2.89 kB
"use strict"; exports.__esModule = true; exports.deprecatedWarn = deprecatedWarn; exports.error = error; exports.info = info; exports.log = log; exports.logAggregatedItems = logAggregatedItems; exports.warn = warn; var _string = require("./string"); var _mixed = require("./mixed"); /* eslint-disable no-console */ /* eslint-disable no-restricted-globals */ /** * "In Internet Explorer 9 (and 8), the console object is only exposed when the developer tools are opened * for a particular tab.". * * Source: https://stackoverflow.com/a/5473193. */ /** * Logs message to the console if the `console` object is exposed. * * @param {...*} args Values which will be logged. */ function log() { if ((0, _mixed.isDefined)(console)) { console.log(...arguments); } } /** * Logs warn to the console if the `console` object is exposed. * * @param {...*} args Values which will be logged. */ function warn() { if ((0, _mixed.isDefined)(console)) { console.warn(...arguments); } } /** * Logs deprecated warn to the console if the `console` object is exposed. * * @param {string} message The message to log. */ function deprecatedWarn(message) { if ((0, _mixed.isDefined)(console)) { console.warn(`Deprecated: ${message}`); } } /** * Logs info to the console if the `console` object is exposed. * * @param {...*} args Values which will be logged. */ function info() { if ((0, _mixed.isDefined)(console)) { console.info(...arguments); } } /** * Logs error to the console if the `console` object is exposed. * * @param {...*} args Values which will be logged. */ function error() { if ((0, _mixed.isDefined)(console)) { console.error(...arguments); } } /** * Logs an aggregated log message with a sample list of items. * * @param {object} options Log options. * @param {Function} [options.logFunction] Function to log the message. * @param {string} options.message Message template. * @param {Array} options.items List of items to aggregate. * @param {number} [options.maxSample=5] Maximum number of items to list. * @param {Function} [options.itemFormatter] Formatter for each item. */ function logAggregatedItems() { let { logFunction = log, message, items, maxSample = 5, itemFormatter = item => `${item}` } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; if (!Array.isArray(items) || items.length === 0) { return; } const count = items.length; const formattedItems = items.slice(0, maxSample).map(item => ` - ${itemFormatter(item)}`); const more = count > maxSample ? ` - ...and ${count - maxSample} more` : ''; const affectedLines = ['Affected cells:', ...formattedItems, ...(more ? [more] : [])].join('\n'); logFunction((0, _string.substitute)(message, { itemsCount: `${count} cell${count > 1 ? 's' : ''}`, affectedCells: affectedLines })); }