{"version":3,"sources":["jsdelivr-header.js","/npm/@danielkalen/print-code@1.0.3/index.js"],"names":[],"mappings":"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","file":"/npm/@danielkalen/print-code@1.0.3/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@danielkalen/print-code@1.0.3/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nmodule.exports = code\ncode.Code = Code\n\nvar chalk = require('chalk')\nvar extend = require('extend')\nvar make_array = require('make-array')\n\nfunction code (content) {\n  return new Code(String(content))\n}\n\n\nfunction Code (content) {\n  this.codes = content\n    .split('\\n')\n    .map(function (code, index) {\n      return {\n        code: code,\n        no: index + 1\n      }\n    })\n\n  this.codes.unshift({\n    code: '',\n    no: 0\n  })\n\n  this.options = {\n    color: 'red',\n    indent: ' '\n  };\n}\n\n\nCode.prototype.get = function() {\n  var lines = this.codes\n  var options = this.options\n\n  if (options.slice) {\n    lines = lines.slice.apply(lines, options.slice)\n  }\n\n  if (lines[0].no === 0) {\n    lines.shift()\n  }\n\n  return lines\n    .map(function (line) {\n      return this._format_line(line.no, line.code)\n    }.bind(this))\n    .join('\\n')\n}\n\n\nvar DEFAULT_COLOR_PALETTE = {\n  highlight_no: function (str) {\n    return chalk.red(str)\n  }\n}\n\n// ...(whitespace)\nvar ELLIPSIS_LENGTH = 4\n// 5: line no\n// 1: |\n// 1: whitespace\nvar LINE_NO_SPAN_LENGTH = 7\nvar MAX_NO_LENGTH = 5\n\n\n\nCode.prototype._format_line = function(no, content) {\n  var options = this.options\n  var max_columns = options.max_columns || process.stdout.columns - 1\n  var length = content.length\n\n  var max_content_columns = max_columns === -1\n    ? length\n    : max_columns\n\n  var mark = options.mark\n\n  // if there is no mark, only manage and slice line string\n  if (!mark || mark.line !== no) {\n    content = this._slice_content(content, 0, max_content_columns)\n    return this._format_components(no, content)\n  }\n\n  var mark_column = mark.column\n  var offset = parseInt(max_content_columns / 2)\n  var start = Math.max(\n    0,\n    Math.min(\n      // try to put mark to the middle of the code slice\n      mark_column - offset,\n      // but we don't want any unnecessary ellipsis at the end\n      length - max_content_columns\n    )\n  )\n  var caret_pos = mark_column - start\n  if (start > 0) {\n    caret_pos += ELLIPSIS_LENGTH\n  }\n\n  var mark_string = this._draw_caret(caret_pos, mark_column)\n\n  content = this._slice_content(content, start, max_content_columns)\n  return this._format_components(no, content, mark_string)\n}\n\n\nfunction whitespaces (n, indent) {\n  return Array(n + 1).join(indent || '')\n}\n\n// format cleaned components\nCode.prototype._format_components = function(no, content, mark) {\n  var no_length = ('' + no).length\n\n  mark = mark\n    ? '\\n' + mark\n    : ''\n\n  // spaces\n  return whitespaces(MAX_NO_LENGTH - no_length, this.options.indent)\n    + this._format_line_no(no)\n    + '| '\n    + this._format_line_content(content, no)\n    + mark\n}\n\n\n// @param {Number} caret \nCode.prototype._draw_caret = function(caret, column) {\n  // caret starts with 1, so minus 1\n  return whitespaces((LINE_NO_SPAN_LENGTH*this.options.indent.length) + caret - 1, '-')\n    + '^ '\n    + 'column: ' + column\n}\n\nCode.prototype.color = function(color){\n  if (chalk[color]) {\n    this.options.color = color;\n  }\n  return this\n}\n\n\n// format line number\nCode.prototype._format_line_no = function(no) {\n  var highlight = this.options.highlight\n\n  if (!highlight || !~highlight.indexOf(no)) {\n    return no\n  }\n\n  return chalk[this.options.color](no)\n}\n\n\n// format line content\nCode.prototype._format_line_content = function(content, line) {\n  var ranges, highlight, isSingle;\n\n  if (ranges = this.options.highlightRange) {\n    highlight = ranges.find(function(range){\n      return range[0].line === line || line === range[1].line\n    })\n\n    if (highlight) {\n      isSingle = highlight[0].line === highlight[1].line;\n      \n      if (highlight[0].line === line) {\n        return content.slice(0, highlight[0].column) + \n               chalk[this.options.color](content.slice(highlight[0].column, isSingle ? highlight[1].column : content.length)) +\n               (isSingle ? content.slice(highlight[1].column) : '')\n      } else {\n        return chalk[this.options.color](content.slice(0, highlight[1].column)) +\n               content.slice(highlight[1].column)\n      }\n    }\n  }\n\n  if (ranges = this.options.highlightLineRange) {\n    highlight = ranges.find(function(range){\n      return range[0] <= line && line <= range[1]\n    })\n\n    if (highlight) {\n      return chalk[this.options.color](content)\n    }\n  }\n\n  return content\n}\n\n\n// slice line string and manage ellipsis\n// @param {Number} exp_length The expected length of the result\nCode.prototype._slice_content = function(content, start, exp_length) {\n  var length = content.length\n  var slice_length = exp_length\n  var result = 'n'\n\n  function slice () {\n    return result.replace('n', content.substr(start, slice_length))\n  }\n\n  if (length < exp_length) {\n    return slice()\n  }\n\n  if (start > 0) {\n    // ...(whitespace)\n    slice_length -= ELLIPSIS_LENGTH\n    result = '... ' + result\n  }\n\n  if (start + exp_length < length) {\n    slice_length -= ELLIPSIS_LENGTH\n    result += ' ...'\n  }\n\n  return slice()\n}\n\n\nCode.prototype.print = function() {\n  this.print_line()\n  this._output('\\n')\n}\n\n\nCode.prototype.print_line = function() {\n  this._output(this.get())\n}\n\n\nCode.prototype._output = function(message) {\n  process.stdout.write(message)\n}\n\n\nCode.prototype.highlight = function() {\n  this.options.highlight = (this.options.highlight || [])\n    .concat(make_array(arguments))\n  return this\n}\n\nCode.prototype.highlightLineRange = function(start,end) {\n  start = start || 1;\n  if (typeof end !== 'number' || start > end) {\n    end = start;\n  }\n  \n  this.options.highlightLineRange = this.options.highlightLineRange || []\n  this.options.highlightLineRange.push([start, end])\n  return this\n}\n\nCode.prototype.indent = function(indentChar) {\n  if (typeof indentChar === 'string') {\n    this.options.indent = indentChar;\n  }\n  return this\n}\n\nCode.prototype.highlightRange = function(start,end) {\n  start = start || {line:1,column:0};\n  if (!end || typeof end.line !== 'number' || start.line > end.line) {\n    end = start;\n  }\n  \n  this.options.highlightRange = this.options.highlightRange || []\n  this.options.highlightRange.push([start, end])\n  return this\n}\n\nCode.prototype.indent = function(indentChar) {\n  if (typeof indentChar === 'string') {\n    this.options.indent = indentChar;\n  }\n  return this\n}\n\n\nCode.prototype.max_columns = function(max) {\n  this.options.max_columns = max\n  return this\n}\n\n\nCode.prototype.slice = function() {\n  this.options.slice = arguments\n\n  return this\n}\n\n\nCode.prototype.arrow_mark = function(line, column) {\n  var mark\n\n  if (column >= 0\n    && this.codes[line]\n    && column <= this.codes[line].code.length - 1\n  ) {\n    mark = {\n      line: line,\n      column: column\n    }\n  }\n\n  this.options.mark = mark\n\n  return this\n}\n"]}