import { nextTick } from 'vue'
import $printJS, { Configuration } from 'print-js'
import Print from 'vue-print-nb-jeecg/src/printarea'

/**
 * 调用 printJS，如果type = html，就走 printNB 的方法
 */
export function printJS(configuration: Configuration) {
  if (configuration?.type === 'html') {
    printNb(configuration.printable)
  } else {
    return $printJS(configuration)
  }
}

/** 调用 printNB 打印 */
export function printNb(domId) {
  if (domId) {
    localPrint(domId)
  } else {
    window.print()
  }
}

let closeBtn = true

function localPrint(domId) {
  if (typeof domId === 'string' && !domId.startsWith('#')) {
    domId = '#' + domId
  }
  nextTick(() => {
    if (closeBtn) {
      closeBtn = false
      new Print({
        el: domId,
        endCallback() {
          closeBtn = true
        },
      })
    }
  })
}