{"version":3,"file":"printer.mjs","sources":["../../../src/printer.ts"],"sourcesContent":["import { App, h, render, VNode } from 'vue-demi';\nimport PrintView from './components/print/print.vue';\nimport previewPanelView from './components/preview/preview-panel.vue';\nimport { getCurrentPanel, parentInitElement } from './utils/elementUtil';\nimport { MyPrintConfig, Panel, PrintResult, PrintOptions } from './types/entity';\nimport {\n    arrayBuffer2Base64,\n    blob2Base64,\n    generateUUID,\n    isArrayBuffer,\n    isBlob,\n    isUint8Array,\n    uint8Array2Base64\n} from './utils/utils';\nimport { myPrintClientService } from './plugins/myprintClientService';\nimport i18n from './locales';\nimport { useAppStoreHook } from './stores/app';\nimport { useConfigStore } from './stores/config';\nimport { useSocket } from './stores/socket';\n\nexport const myPrintOptions: MyPrintConfig = {\n    disabledClient: false\n};\n\nlet printNode: VNode = null!;\nlet previewNode: VNode = null!;\nlet handleChromePrint: (printProps: PrintOptions) => Promise<PrintResult> = null!;\nlet handleClientPrint: (printProps: PrintOptions) => Promise<PrintResult> = null!;\nlet handleChromeDownloadPdf: (printProps: PrintOptions) => Promise<PrintResult> = null!;\nlet handleClientDownloadPdf: (printProps: PrintOptions) => Promise<PrintResult> = null!;\nlet handleServerDownloadPdf: (printProps: PrintOptions) => Promise<PrintResult> = null!;\nlet handleChromeDownloadImg: (printProps: PrintOptions) => Promise<PrintResult> = null!;\nlet handleServerDownloadImg: (printProps: PrintOptions) => Promise<PrintResult> = null!;\nlet handleChromePreview: (printProps: PrintOptions) => Promise<PrintResult> = null!;\n\nexport function installPrinter(app: App<any>) {\n    if (!printNode) {\n        printNode = h(PrintView, {});\n        const container = document.createElement('div');\n        printNode.appContext = app._context;\n\n        render(printNode, container);\n\n        handleChromePrint = printNode.component!.exposed!.handleChromePrint;\n        handleClientPrint = printNode.component!.exposed!.handleClientPrint;\n\n        handleChromeDownloadPdf = printNode.component!.exposed!.handleChromeDownloadPdf;\n        handleClientDownloadPdf = printNode.component!.exposed!.handleClientDownloadPdf;\n        handleServerDownloadPdf = printNode.component!.exposed!.handleServerDownloadPdf;\n        handleChromeDownloadImg = printNode.component!.exposed!.handleChromeDownloadImg;\n        handleServerDownloadImg = printNode.component!.exposed!.handleServerDownloadImg;\n\n        document.body.appendChild(container.firstElementChild!);\n    }\n\n    if (!previewNode) {\n        previewNode = h(previewPanelView, {});\n        const container = document.createElement('div');\n        previewNode.appContext = app._context;\n\n        render(previewNode, container);\n\n        handleChromePreview = previewNode.component!.exposed!.handleChromePreview;\n        document.body.appendChild(container);\n    }\n}\n\nfunction initPanel(panel: Panel) {\n    panel.runtimeOption = {} as any;\n    for (let i = 0; i < panel.elementList.length; i++) {\n        const element = panel.elementList[i];\n        parentInitElement(panel, panel, element, i);\n    }\n    panel.pageHeader && parentInitElement(panel, panel, panel.pageHeader, 0);\n    panel.pageFooter && parentInitElement(panel, panel, panel.pageFooter, 0);\n}\n\nfunction convertPrintProps(printProps: PrintOptions) {\n    return new Promise<PrintOptions>(async (resolve, _reject) => {\n        let panel = printProps.panel;\n        if (printProps.file) { // 打印pdf\n            if (isBlob(printProps.file)) {\n                printProps.file = await blob2Base64(printProps.file as Blob);\n            }\n            if (isArrayBuffer(printProps.file)) {\n                printProps.file = arrayBuffer2Base64(printProps.file as ArrayBuffer);\n            }\n            if (isUint8Array(printProps.file)) {\n                printProps.file = uint8Array2Base64(printProps.file as Uint8Array);\n            }\n        } else { // 打印panel\n            if (panel == null) {\n                panel = getCurrentPanel();\n            } else {\n                if (typeof printProps.panel == 'string') {\n                    panel = JSON.parse(printProps.panel);\n                    initPanel(panel as Panel);\n                }\n            }\n        }\n\n        if (!printProps.taskId) {\n            printProps.taskId = generateUUID();\n        }\n        resolve({\n            ...printProps,\n            panel\n        });\n    });\n}\n\nexport const MyPrinter = {\n    initMyPrinter(options: MyPrintConfig) {\n        if (options.serverUrl) {\n            if (options.serverUrl.endsWith('/')) {\n                myPrintOptions.serverUrl = options.serverUrl.slice(0, -1);\n            } else {\n                myPrintOptions.serverUrl = options.serverUrl;\n            }\n        }\n        if (options.clientUrl) {\n            if (options.clientUrl.endsWith('/')) {\n                useConfigStore().clientUrl = options.clientUrl.slice(0, -1);\n            } else {\n                useConfigStore().clientUrl = options.clientUrl;\n            }\n        }\n        myPrintOptions.disabledClient = options.disabledClient == null ? false : options.disabledClient;\n    },\n\n    setLocale<T extends typeof i18n.global.locale.value>(locale: T) {\n        useAppStoreHook().SET_LOCALE(locale);\n    },\n\n    setClientUrl(clientUrl: string) {\n        if (!clientUrl) {\n            return;\n        }\n        if (clientUrl.endsWith('/')) {\n            useConfigStore().clientUrl = clientUrl.slice(0, -1);\n        } else {\n            useConfigStore().clientUrl = clientUrl;\n        }\n        useSocket().INIT_SOCKET();\n    },\n\n    setServerUrl(serverUrl: string) {\n        if (serverUrl.endsWith('/')) {\n            myPrintOptions.serverUrl = serverUrl.slice(0, -1);\n        } else {\n            myPrintOptions.serverUrl = serverUrl;\n        }\n    },\n\n    clientConnectIs() {\n        return myPrintClientService.connectIs();\n    },\n\n    getPrinterList() {\n        return myPrintClientService.getPrinterList();\n    },\n\n    getDefaultPrinter() {\n        const printList = myPrintClientService.getPrinterList();\n        if (printList == null || printList.length == 0) {\n            return null;\n        }\n        for (let printListElement of printList) {\n            if (printListElement.isDefault) {\n                return printListElement;\n            }\n        }\n        return printList[0];\n    },\n\n    asyncGetPrinterList() {\n        return myPrintClientService.asyncGetPrinterList();\n    },\n\n    chromePreview(printProps: PrintOptions) {\n        return convertPrintProps(printProps).then(handleChromePreview);\n    },\n\n    chromePrinter(printProps: PrintOptions) {\n        return convertPrintProps(printProps).then(handleChromePrint);\n    },\n\n    clientPrinter(printProps: PrintOptions) {\n        return convertPrintProps(printProps).then(handleClientPrint);\n    },\n\n    pdfChrome(printProps: PrintOptions) {\n        return convertPrintProps(printProps).then(handleChromeDownloadPdf);\n    },\n\n    pdfClient(printProps: PrintOptions) {\n        return convertPrintProps(printProps).then(handleClientDownloadPdf);\n    },\n\n    pdfServer(printProps: PrintOptions) {\n        return convertPrintProps(printProps).then(handleServerDownloadPdf);\n    },\n\n    imgChrome(printProps: PrintOptions) {\n        return convertPrintProps(printProps).then(handleChromeDownloadImg);\n    },\n\n    imgServer(printProps: PrintOptions) {\n        return convertPrintProps(printProps).then(handleServerDownloadImg);\n    }\n\n};\n"],"names":[],"mappings":"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"}