computeBrowserLoggingArgs = args => {
  const strBuilder = [];
  const styles = [];
  const currentStyle = map.create();
  /**
   * @type {Array<string|Object|number>}
   */

  let logArgs = []; // try with formatting until we find something unsupported

  let i = 0;

  for (; i < args.length; i++) {
    const arg = args[i]; // @ts-ignore

    const style = _browserStyleMap[arg];

    if (style !== undefined) {
      currentStyle.set(style.left, style.right);
    } else {
      if (arg.constructor === String || arg.constructor === Number) {
        const style = dom.mapToStyleString(currentStyle);

        if (i > 0 || style.length > 0) {
          strBuilder.push('%c' + arg);
          styles.push(style);
        } else {
          strBuilder.push(arg);
        }
      } else {
        break;
      }
    }
  }

  if (i > 0) {
    // create logArgs with what we have so far
    logArgs = styles;
    logArgs.unshift(strBuilder.join(''));
  } // append the rest


  for (; i < args.length; i++) {
    const arg = args[i];

    if (!(arg instanceof Symbol)) {
      logArgs.push(arg);
    }
  }

  return logArgs;
}
@param {Array<string|Symbol|Object|number>} args
@return {Array<string|object|number>}