{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { stringWidth } from './string-width/index.js'\nimport { stripAnsi } from './strip-ansi/index.js'\nimport { wrap } from './wrap-ansi/index.js'\n\nconst align = {\n  right: (str: string, width: number): string =>\n    `${' '.repeat(Math.max(0, width - stringWidth(str)))}${str}`,\n  center: (str: string, width: number): string =>\n    `${' '.repeat(Math.max(0, width - stringWidth(str)) >> 1)}${str}`,\n}\n\nconst top = 0\nconst right = 1\nconst bottom = 2\nconst left = 3\n\nexport type UIOptions = {\n  width: number\n  wrap?: boolean\n  rows?: string[]\n}\n\nexport type Column = {\n  text: string\n  width?: number\n  align?: 'right' | 'left' | 'center'\n  padding?: number[]\n  border?: boolean\n}\n\nexport type ColumnArray = Column[] & {\n  span?: boolean\n}\n\nexport type Line = {\n  hidden?: boolean\n  text: string\n  span?: boolean\n}\n\nexport class UI {\n  width: number\n  wrap: boolean\n  rows: ColumnArray[]\n\n  constructor(opts: UIOptions) {\n    this.width = opts.width\n    /* c8 ignore start */\n    this.wrap = opts.wrap ?? true\n    /* c8 ignore stop */\n    this.rows = []\n  }\n\n  span(...args: ColumnArray) {\n    const cols = this.div(...args)\n    cols.span = true\n  }\n\n  resetOutput() {\n    this.rows = []\n  }\n\n  div(...args: (Column | string)[]): ColumnArray {\n    if (args.length === 0) {\n      this.div('')\n    }\n\n    if (\n      this.wrap &&\n      this.shouldApplyLayoutDSL(...args) &&\n      typeof args[0] === 'string'\n    ) {\n      return this.applyLayoutDSL(args[0])\n    }\n\n    const cols: ColumnArray = Object.assign(\n      args.map(arg => {\n        if (typeof arg === 'string') {\n          return this.colFromString(arg)\n        }\n        return arg\n      }),\n      { span: false },\n    )\n\n    this.rows.push(cols)\n    return cols\n  }\n\n  shouldApplyLayoutDSL(...args: (Column | string)[]): boolean {\n    return (\n      args.length === 1 &&\n      typeof args[0] === 'string' &&\n      /[\\t\\n]/.test(args[0])\n    )\n  }\n\n  applyLayoutDSL(str: string): ColumnArray {\n    const rows = str.split('\\n').map(row => row.split('\\t'))\n    let leftColumnWidth = 0\n\n    // simple heuristic for layout, make sure the\n    // second column lines up along the left-hand.\n    // don't allow the first column to take up more\n    // than 50% of the screen.\n    rows.forEach(columns => {\n      if (\n        columns.length > 1 &&\n        stringWidth(String(columns[0])) > leftColumnWidth\n      ) {\n        leftColumnWidth = Math.min(\n          Math.floor(this.width * 0.5),\n          stringWidth(String(columns[0])),\n        )\n      }\n    })\n\n    // generate a table:\n    //  replacing ' ' with padding calculations.\n    //  using the algorithmically generated width.\n    rows.forEach(columns => {\n      this.div(\n        ...columns.map((r, i) => {\n          return {\n            text: r.trim(),\n            padding: this.measurePadding(r),\n            width:\n              i === 0 && columns.length > 1 ? leftColumnWidth : undefined,\n          } as Column\n        }),\n      )\n    })\n\n    const row = this.rows[this.rows.length - 1]\n    /* c8 ignore start */\n    if (!row) {\n      throw new Error('no rows found')\n    }\n    /* c8 ignore stop */\n    return row\n  }\n\n  colFromString(text: string): Column {\n    return {\n      text,\n      padding: this.measurePadding(text),\n    }\n  }\n\n  measurePadding(str: string): number[] {\n    // measure padding without ansi escape codes\n    const noAnsi = stripAnsi(str)\n    const [right = '', left = ''] = [\n      noAnsi.match(/\\s*$/)?.[0],\n      noAnsi.match(/^\\s*/)?.[0],\n    ]\n    return [0, right.length, 0, left.length]\n  }\n\n  toString(): string {\n    const lines: Line[] = []\n\n    this.rows.forEach(row => {\n      this.rowToString(row, lines)\n    })\n\n    // don't display any lines with the\n    // hidden flag set.\n    return lines\n      .filter(line => !line.hidden)\n      .map(line => line.text)\n      .join('\\n')\n  }\n\n  rowToString(row: ColumnArray, lines: Line[]) {\n    this.rasterize(row).forEach((rrow, r) => {\n      let str = ''\n      rrow.forEach((col: string, c: number) => {\n        const column = row[c] as Column\n        const { width } = column as Column // the width with padding.\n        const wrapWidth = this.negatePadding(column) // the width without padding.\n\n        let ts = col // temporary string used during alignment/padding.\n\n        if (wrapWidth > stringWidth(col)) {\n          ts += ' '.repeat(wrapWidth - stringWidth(col))\n        }\n\n        // align the string within its column.\n        if (column.align && column.align !== 'left' && this.wrap) {\n          const fn = align[column.align as 'right' | 'center']\n          ts = fn(ts.trim(), wrapWidth)\n          if (stringWidth(ts) < wrapWidth) {\n            /* c8 ignore start */\n            const w = width || 0\n            /* c8 ignore stop */\n            ts += ' '.repeat(w - stringWidth(ts) - 1)\n          }\n        }\n\n        // apply border and padding to string.\n        const padding = column.padding || [0, 0, 0, 0]\n        if (padding[left]) {\n          str += ' '.repeat(padding[left])\n        }\n\n        str += addBorder(column, ts, '| ')\n        str += ts\n        str += addBorder(column, ts, ' |')\n        if (padding[right]) {\n          str += ' '.repeat(padding[right])\n        }\n\n        // if prior row is span, try to render the\n        // current row on the prior line.\n        if (r === 0 && lines.length > 0) {\n          const lastLine = lines[lines.length - 1]\n          /* c8 ignore start */\n          if (!lastLine) {\n            throw new Error('last line not found')\n          }\n          /* c8 ignore stop */\n          str = this.renderInline(str, lastLine)\n        }\n      })\n\n      // remove trailing whitespace.\n      lines.push({\n        text: str.replace(/ +$/, ''),\n        span: row.span,\n      })\n    })\n\n    return lines\n  }\n\n  // if the full 'source' can render in\n  // the target line, do so.\n  renderInline(source: string, previousLine: Line) {\n    const match = source.match(/^ */)\n    /* c8 ignore start */\n    const leadingWhitespace = match ? match[0].length : 0\n    /* c8 ignore stop */\n    const target = previousLine.text\n    const targetTextWidth = stringWidth(target.trimEnd())\n\n    if (!previousLine.span) {\n      return source\n    }\n\n    // if we're not applying wrapping logic,\n    // just always append to the span.\n    if (!this.wrap) {\n      previousLine.hidden = true\n      return target + source\n    }\n\n    if (leadingWhitespace < targetTextWidth) {\n      return source\n    }\n\n    previousLine.hidden = true\n\n    return (\n      target.trimEnd() +\n      ' '.repeat(leadingWhitespace - targetTextWidth) +\n      source.trimStart()\n    )\n  }\n\n  rasterize(row: ColumnArray) {\n    const rrows: string[][] = []\n    const widths = this.columnWidths(row)\n    let wrapped: string[]\n\n    // word wrap all columns, and create\n    // a data-structure that is easy to rasterize.\n    row.forEach((col, c) => {\n      // leave room for left and right padding.\n      col.width = widths[c]\n      if (this.wrap) {\n        wrapped = wrap(col.text, this.negatePadding(col), {\n          hard: true,\n        }).split('\\n')\n      } else {\n        wrapped = col.text.split('\\n')\n      }\n\n      if (col.border) {\n        wrapped.unshift(\n          '.' + '-'.repeat(this.negatePadding(col) + 2) + '.',\n        )\n        wrapped.push(\"'\" + '-'.repeat(this.negatePadding(col) + 2) + \"'\")\n      }\n\n      // add top and bottom padding.\n      if (col.padding) {\n        wrapped.unshift(...new Array(col.padding[top] || 0).fill(''))\n        wrapped.push(...new Array(col.padding[bottom] || 0).fill(''))\n      }\n\n      wrapped.forEach((str: string, r: number) => {\n        if (!rrows[r]) {\n          rrows.push([])\n        }\n\n        /* c8 ignore start */\n        const rrow = rrows[r] ?? []\n        /* c8 ignore stop */\n\n        for (let i = 0; i < c; i++) {\n          if (rrow[i] === undefined) {\n            rrow.push('')\n          }\n        }\n\n        rrow.push(str)\n      })\n    })\n\n    return rrows\n  }\n\n  negatePadding(col: Column) {\n    /* c8 ignore start */\n    let wrapWidth = col.width || 0\n    /* c8 ignore stop */\n    if (col.padding) {\n      wrapWidth -= (col.padding[left] || 0) + (col.padding[right] || 0)\n    }\n\n    if (col.border) {\n      wrapWidth -= 4\n    }\n\n    return wrapWidth\n  }\n\n  columnWidths(row: ColumnArray) {\n    if (!this.wrap) {\n      return row.map(col => {\n        return col.width || stringWidth(col.text)\n      })\n    }\n\n    let unset = row.length\n    let remainingWidth = this.width\n\n    // column widths can be set in config.\n    const widths = row.map(col => {\n      if (col.width) {\n        unset--\n        remainingWidth -= col.width\n        return col.width\n      }\n\n      return undefined\n    })\n\n    // any unset widths should be calculated.\n    /* c8 ignore start */\n    const unsetWidth = unset ? Math.floor(remainingWidth / unset) : 0\n    /* c8 ignore stop */\n\n    return widths.map((w, i) => {\n      if (w === undefined) {\n        /* c8 ignore start */\n        const col = row[i] ?? { text: '', padding: [] }\n        /* c8 ignore stop */\n        return Math.max(unsetWidth, _minWidth(col))\n      }\n\n      return w\n    })\n  }\n}\n\nconst addBorder = (col: Column, ts: string, style: string) => {\n  if (col.border) {\n    if (/[.']-+[.']/.test(ts)) {\n      return ''\n    }\n\n    if (ts.trim().length !== 0) {\n      return style\n    }\n\n    return '  '\n  }\n\n  return ''\n}\n\n// calculates the minimum width of\n// a column, based on padding preferences.\nconst _minWidth = (col: Column) => {\n  const padding = col.padding || []\n  const minWidth = 1 + (padding[left] || 0) + (padding[right] || 0)\n  if (col.border) {\n    return minWidth + 4\n  }\n\n  return minWidth\n}\n\nconst getWindowWidth = (): number => {\n  /* c8 ignore start */\n  if (\n    typeof process === 'object' &&\n    process.stdout &&\n    process.stdout.columns\n  ) {\n    return process.stdout.columns\n  }\n  return 80\n}\n/* c8 ignore stop */\n\nexport const cliui = (opts: Partial<UIOptions> = {}) =>\n  new UI({\n    /* c8 ignore start */\n    width: opts?.width || getWindowWidth(),\n    wrap: opts?.wrap,\n    /* c8 ignore stop */\n  })\n"]}