UNPKG

label-print-design

Version:

操作简单,组件丰富的一站式打印解决方案打印设计器

1,147 lines (1,136 loc) 2.97 MB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vue'), require('..../components/content/widget/index.vue'), require('..../components/content/panel/index.vue'), require('..../utils/utils'), require('..../utils/historyUtil'), require('..../stores/app'), require('..../components/my/mouse-tips/my-mouse-tips.vue'), require('..../utils/elementUtil'), require('..../plugins/moveable/selecto'), require('..../components/my/message/my-message'), require('..../printer'), require('..../locales'), require('..../components/preview/preview.vue'), require('..../components/preview/autoPage'), require('..../utils/pdfUtil'), require('..../utils/devicePixelRatio'), require('..../api/pdfServer'), require('..../utils/myprint'), require('..../plugins/myprintClientService'), require('..../components/design/element.vue'), require('..../components/design/table/data-table/data-table.vue'), require('..../components/design/container'), require('..../stores/config'), require('..../utils/numberUtil'), require('..../utils/table/dataTable'), require('..../components/my/scrollbar/my-scrollbar.vue'), require('..../components/my/button/my-Button.vue'), require('..../components/my/dialog/my-dialog.vue'), require('..../components/my/select/my-select.vue'), require('..../plugins/moveable/moveable_js'), require('vue3-colorpicker/style.css'), require('vue-cropper/dist/index.css'), require('....../components/my/message/my-message.vue'), require('element-plus/dist/index.css')) : typeof define === 'function' && define.amd ? define(['exports', 'vue', '..../components/content/widget/index.vue', '..../components/content/panel/index.vue', '..../utils/utils', '..../utils/historyUtil', '..../stores/app', '..../components/my/mouse-tips/my-mouse-tips.vue', '..../utils/elementUtil', '..../plugins/moveable/selecto', '..../components/my/message/my-message', '..../printer', '..../locales', '..../components/preview/preview.vue', '..../components/preview/autoPage', '..../utils/pdfUtil', '..../utils/devicePixelRatio', '..../api/pdfServer', '..../utils/myprint', '..../plugins/myprintClientService', '..../components/design/element.vue', '..../components/design/table/data-table/data-table.vue', '..../components/design/container', '..../stores/config', '..../utils/numberUtil', '..../utils/table/dataTable', '..../components/my/scrollbar/my-scrollbar.vue', '..../components/my/button/my-Button.vue', '..../components/my/dialog/my-dialog.vue', '..../components/my/select/my-select.vue', '..../plugins/moveable/moveable_js', 'vue3-colorpicker/style.css', 'vue-cropper/dist/index.css', '....../components/my/message/my-message.vue', 'element-plus/dist/index.css'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.MyPrinterDesign = {}, global.Vue, global.widget, global.PanelView, global.utils, global.historyUtil, global.app, global.MyMouseTips, global.elementUtil, global.selecto, global.myMessage, global.printer, global.locales, global.Preview$1, global.autoPage$1, global.pdfUtil, global.devicePixelRatio, global.pdfServer, global.myprint, global.myprintClientService, global.ElementView, global.DataTable, global.container, global.config$1, global.numberUtil, global.dataTable, global.MyScrollbar, global.MyButton, global.MyDialog, global.MySelect, null, null, null, global.MessageView)); })(this, (function (exports, vue, widget, PanelView, utils, historyUtil, app, MyMouseTips, elementUtil, selecto, myMessage, printer, locales, Preview$1, autoPage$1, pdfUtil, devicePixelRatio, pdfServer, myprint, myprintClientService, ElementView, DataTable, container, config$1, numberUtil, dataTable, MyScrollbar, MyButton, MyDialog, MySelect, moveable_js, style_css, index_css, MessageView) { 'use strict'; var isVue2 = false; const _hoisted_1$2 = ["data-rotation"]; const _hoisted_2$2 = { class: "my-main design-container-root_main" }; const _hoisted_3$2 = { class: "my-aside display-flex-column", style: { "border-right": "1px #e9e9e9 solid", "background": "#f8f8f8" } }; var _sfc_main$2B = /* @__PURE__ */ vue.defineComponent({ __name: "index", props: { module: {}, template: {}, height: {}, saveTemplate: {}, generateImg: { type: Boolean }, showBackButton: { type: Boolean, default: true }, showPrintButton: { type: Boolean, default: true }, showDownloadPdfButton: { type: Boolean, default: true }, showPreviewButton: { type: Boolean, default: true }, showClearButton: { type: Boolean, default: true }, showSaveButton: { type: Boolean, default: true } }, emits: ["back", "panelImg"], setup(__props, { emit: __emit }) { const appStore = app.useAppStoreHook(); const $emit = __emit; const data = vue.reactive({ buildImgIs: false }); const provider = vue.ref({}); const panel = vue.reactive({ runtimeOption: { dragInIs: false }, type: "Panel", dragSnapPanelIs: 1, dragSnapIs: 1 }); const previewData = vue.ref([]); elementUtil.setCurrentPanel(panel); const props = __props; const style = vue.computed(() => { return { height: props.height }; }); vue.onMounted(() => { utils.mitt.on("saveTemplate", saveTemplate); initModule(); initTemplate(); selecto.newSelecto(); }); vue.onUnmounted(() => { utils.mitt.off("saveTemplate", saveTemplate); }); const moduleWatchStop = vue.watch(() => props.module, (_n, _o) => { if (props.module) { initModule(); moduleWatchStop(); } }); function initModule() { if (!props.module) { return; } provider.value = JSON.parse(props.module.provider); previewData.value = JSON.parse(props.module.previewData); elementUtil.setPreviewData(previewData.value); elementUtil.setProvider(provider.value); elementUtil.initPanel(panel, provider); elementUtil.setCurrentPanel(panel); } const templateWatchStop = vue.watch(() => props.template, (_n, _o) => { if (props.template) { initTemplate(); templateWatchStop(); } }); function initTemplate() { if (!props.template) { return; } utils.to(JSON.parse(props.template.content), panel); elementUtil.setCurrentPanel(panel); if (!panel.watermarkContent) ; if (!panel.groupList) { panel.groupList = []; } if (!panel.auxiliaryLineList) { panel.auxiliaryLineList = []; } for (let myAuxiliaryLine of panel.auxiliaryLineList) { myAuxiliaryLine.runtimeOption = { x: 0, y: 0, auxiliaryLineStatus: "SHOW" }; } panel.runtimeOption = {}; for (let i = 0; i < panel.elementList.length; i++) { const element = panel.elementList[i]; elementUtil.parentInitElement(panel, panel, element, i); } panel.pageHeader && elementUtil.parentInitElement(panel, panel, panel.pageHeader, 0); panel.pageFooter && elementUtil.parentInitElement(panel, panel, panel.pageFooter, 0); historyUtil.init(); if (provider.value.pageUnit == void 0) { provider.value.pageUnit = "px"; } utils.mitt.emit("updatePanel"); utils.mitt.emit("changePageSize"); } function back() { $emit("back"); } function saveTemplate() { if (props.generateImg) { if (!data.buildImgIs) { data.buildImgIs = true; printer.MyPrinter.imgChrome({ previewDataList: [elementUtil.defaultPreviewData(previewData.value)[0]] }).then((res) => { $emit("panelImg", res.blobList); data.buildImgIs = false; }).catch((_e) => { data.buildImgIs = false; }); } } const template = {}; template.name = panel.name; template.content = JSON.stringify(panel, (key, value) => { if ("runtimeOption" == key) return void 0; return value; }); if (props.saveTemplate != null) { props.saveTemplate(template).then((_res) => { myMessage.MyMessage.success(locales.i18n("common.save.success")); }).catch((e) => { let failMsg = locales.i18n("common.save.fail"); if (e.msg) { failMsg = failMsg + ": " + e.msg; } myMessage.MyMessage.success(failMsg); }); } } return (_ctx, _cache) => { var _a; return vue.openBlock(), vue.createElementBlock( vue.Fragment, null, [ vue.createElementVNode("section", vue.mergeProps({ class: "design-container-root cursor-resize" }, _ctx.$attrs, { style: vue.unref(style), "data-rotation": vue.unref(appStore).dataRotation }), [ vue.createElementVNode("main", _hoisted_2$2, [ vue.createVNode(PanelView, { designProps: props }) ]), vue.createElementVNode("aside", _hoisted_3$2, [ vue.createVNode(widget, { "module-name": (_a = props.module) == null ? void 0 : _a.name, showBackButton: _ctx.showBackButton, onBack: back }, null, 8, ["module-name", "showBackButton"]) ]) ], 16, _hoisted_1$2), vue.createVNode(MyMouseTips) ], 64 /* STABLE_FRAGMENT */ ); }; } }); var _export_sfc$1 = (sfc, props) => { const target = sfc.__vccOpts || sfc; for (const [key, val] of props) { target[key] = val; } return target; }; var DesignPanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$2B, [["__file", "index.vue"]]); const _hoisted_1$1 = { class: "my-print-preview-panel__wrap my-print-print_hidden" }; const _hoisted_2$1 = { class: "preview-panel__model" }; const _hoisted_3$1 = { class: "my-print-preview-panel__content" }; var _sfc_main$2A = /* @__PURE__ */ vue.defineComponent({ __name: "print", setup(__props, { expose: __expose }) { __expose({ handleChromePrint, handleClientPrint, handleChromeDownloadImg, handleServerDownloadImg, handleChromeDownloadPdf, handleClientDownloadPdf, handleServerDownloadPdf }); const data = vue.reactive({ dialogVisible: false, pageList: [], resolveMap: {}, previewTimeOutMap: {}, panel: null }); const previewContentRef = vue.ref(); let itemRefs = {}; function setItemRef(el, item) { itemRefs[item.id] = el; } function handleChromePrint(printProps) { return new Promise(async (resolve, _reject) => { data.resolveMap[printProps.taskId] = resolve; data.panel = printProps.panel; await vue.nextTick(); await autoPage$1.autoPage(previewContentRef, data.pageList, data.panel, printProps.previewDataList); await vue.nextTick(); myprintClientService.handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap); printArea(); data.pageList.length = 0; myprintClientService.printResult(printProps.taskId, { status: "SUCCESS", type: "CHROME_PRINT" }, data.previewTimeOutMap, data.resolveMap); }); } function handleClientPrint(printProps) { return new Promise(async (resolve, _reject) => { data.resolveMap[printProps.taskId] = resolve; if (printProps.panel) { data.panel = printProps.panel; await vue.nextTick(); await autoPage$1.autoPage(previewContentRef, data.pageList, data.panel, printProps.previewDataList); await vue.nextTick(); } myprintClientService.handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap); if (!myprintClientService.myPrintClientService.connectIs()) { myprintClientService.printResult(printProps.taskId, { status: "ERROR", msg: "\u5BA2\u6237\u7AEF\u672A\u8FDE\u63A5", type: "CLIENT_PRINT" }, data.previewTimeOutMap, data.resolveMap); return; } myprintClientService.myPrintClientService.print({ cmd: "print", taskId: printProps.taskId, options: { ...printProps, title: printProps.title ? printProps.title : printProps.panel ? printProps.panel.name : void 0, html: printProps.panel ? myprint.getPrintElementHtml(previewContentRef.value, data.pageList) : void 0, file: printProps.file ? printProps.file : void 0, panel: void 0, previewDataList: void 0 } }, data.panel).then((clientCmd) => { myprintClientService.handleClientResult(clientCmd, myprintClientService.printResult, data.previewTimeOutMap, data.resolveMap); }); }); } function handleChromeDownloadImg(printProps) { return new Promise(async (resolve, _reject) => { data.resolveMap[printProps.taskId] = resolve; myprintClientService.handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap); data.panel = printProps.panel; await vue.nextTick(); await autoPage$1.autoPage(previewContentRef, data.pageList, data.panel, printProps.previewDataList); pdfUtil.chrome2Img(previewContentRef.value, { width: devicePixelRatio.unit2px(data.panel.width, data.panel), height: devicePixelRatio.unit2px(data.panel.height, data.panel) }).then((blobList) => { data.pageList = []; myprintClientService.printResult(printProps.taskId, { status: "SUCCESS", blobList, type: "CHROME_GENERATE_IMG" }, data.previewTimeOutMap, data.resolveMap); }); }); } function handleServerDownloadImg(printProps) { return new Promise(async (resolve, reject) => { data.resolveMap[printProps.taskId] = resolve; myprintClientService.handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap); data.panel = printProps.panel; await vue.nextTick(); await autoPage$1.autoPage(previewContentRef, data.pageList, data.panel, printProps.previewDataList); const html = myprint.getPrintElementHtml(previewContentRef.value, data.pageList); pdfServer.downloadImg({ content: html, height: devicePixelRatio.unit2unit(elementUtil.getCurrentPanelUnit(data.panel), "mm", data.panel.height), width: devicePixelRatio.unit2unit(elementUtil.getCurrentPanelUnit(data.panel), "mm", data.panel.width) }).then((blob) => { myprintClientService.printResult(printProps.taskId, { status: "SUCCESS", blob, type: "SERVER_GENERATE_IMG" }, data.previewTimeOutMap, data.resolveMap); }).catch((e) => { reject({ status: "SUCCESS", msg: e.msg, type: "SERVER_GENERATE_IMG" }); }); }); } function handleChromeDownloadPdf(printProps) { return new Promise(async (resolve, reject) => { data.resolveMap[printProps.taskId] = resolve; myprintClientService.handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap); data.panel = printProps.panel; await vue.nextTick(); await autoPage$1.autoPage(previewContentRef, data.pageList, data.panel, printProps.previewDataList); pdfUtil.toPdf(previewContentRef.value, { width: devicePixelRatio.unit2px(data.panel.width, data.panel), height: devicePixelRatio.unit2px(data.panel.height, data.panel) }).then((blob) => { data.pageList.length = 0; myprintClientService.printResult(printProps.taskId, { status: "SUCCESS", blob, type: "CHROME_GENERATE_PDF" }, data.previewTimeOutMap, data.resolveMap); }).catch((e) => { data.pageList.length = 0; reject({ status: "ERROR", msg: e.msg, type: "CHROME_GENERATE_PDF" }); }); }); } function handleClientDownloadPdf(printProps) { return new Promise(async (resolve, reject) => { data.resolveMap[printProps.taskId] = resolve; myprintClientService.handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap); data.panel = printProps.panel; await vue.nextTick(); await autoPage$1.autoPage(previewContentRef, data.pageList, data.panel, printProps.previewDataList); myprintClientService.myPrintClientService.print({ options: { html: myprint.getPrintElementHtml(previewContentRef.value, data.pageList) }, cmd: "generatePdf", taskId: printProps.taskId }, data.panel).then((res) => { myprintClientService.handleClientResult(res, myprintClientService.printResult, data.previewTimeOutMap, data.resolveMap); }).catch((e) => { reject({ status: "ERROR", msg: e.msg, type: "CLIENT_GENERATE_PDF" }); }); }); } function handleServerDownloadPdf(printProps) { return new Promise(async (resolve, reject) => { data.resolveMap[printProps.taskId] = resolve; myprintClientService.handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap); data.panel = printProps.panel; await vue.nextTick(); await autoPage$1.autoPage(previewContentRef, data.pageList, data.panel, printProps.previewDataList); const html = myprint.getPrintElementHtml(previewContentRef.value, data.pageList); pdfServer.downloadPdf({ content: html, height: devicePixelRatio.unit2unit(elementUtil.getCurrentPanelUnit(data.panel), "mm", data.panel.height), width: devicePixelRatio.unit2unit(elementUtil.getCurrentPanelUnit(data.panel), "mm", data.panel.width) }).then((blob) => { myprintClientService.printResult(printProps.taskId, { status: "SUCCESS", blob, type: "SERVER_GENERATE_PDF" }, data.previewTimeOutMap, data.resolveMap); }).catch((e) => { reject({ status: "ERROR", msg: e.msg, type: "SERVER_GENERATE_PDF" }); }); }); } function printArea() { const html = myprint.getPrintElementHtml(previewContentRef.value, data.pageList); myprint.iFramePrint(data.panel, html); } return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$1, [ vue.createElementVNode("div", _hoisted_2$1, [ vue.createElementVNode("div", _hoisted_3$1, [ (vue.openBlock(true), vue.createElementBlock( vue.Fragment, null, vue.renderList(vue.unref(data).pageList, (page, index) => { return vue.openBlock(), vue.createElementBlock( "div", { ref_for: true, ref_key: "previewContentRef", ref: previewContentRef, key: index, class: "my-print-preview-panel__content_page preview-page-top", style: vue.normalizeStyle({ width: vue.unref(elementUtil.valueUnit)(page.width, vue.unref(data).panel), minHeight: vue.unref(elementUtil.valueUnit)(page.height, vue.unref(data).panel) }) }, [ (vue.openBlock(true), vue.createElementBlock( vue.Fragment, null, vue.renderList(page.previewWrapperList, (element, index2) => { return vue.openBlock(), vue.createBlock(Preview$1, { ref_for: true, ref: (el) => setItemRef(el, element), key: index2, preview: element }, null, 8, ["preview"]); }), 128 /* KEYED_FRAGMENT */ )) ], 4 /* STYLE */ ); }), 128 /* KEYED_FRAGMENT */ )) ]) ]) ]); }; } }); var PrintView = /* @__PURE__ */ _export_sfc$1(_sfc_main$2A, [["__file", "print.vue"]]); var _sfc_main$2z = /* @__PURE__ */ vue.defineComponent({ __name: "preview", props: { preview: { default: () => ({}) } }, setup(__props) { const style = vue.computed(() => { const _style = { width: elementUtil.valueUnit(props.preview.width, elementUtil.getRecursionParentPanel(props.preview)), left: elementUtil.valueUnit(props.preview.x, elementUtil.getRecursionParentPanel(props.preview)), top: elementUtil.valueUnit(props.preview.y, elementUtil.getRecursionParentPanel(props.preview)), zIndex: props.preview.runtimeOption.index }; if (props.preview.option.rotate != null) { _style.transform = `rotate(${props.preview.option.rotate}deg)`; } if (props.preview.heightIs) { _style.height = elementUtil.valueUnit(props.preview.height, elementUtil.getRecursionParentPanel(props.preview)); } return _style; }); const props = __props; const previewWrapRef = vue.ref(); vue.onMounted(() => { props.preview.target = previewWrapRef.value; }); vue.onUnmounted(() => { props.preview.target = void 0; }); return (_ctx, _cache) => { const _component_Preview = vue.resolveComponent("Preview", true); return vue.openBlock(), vue.createElementBlock( "div", { class: "my-print-preview-wrap", ref_key: "previewWrapRef", ref: previewWrapRef, style: vue.normalizeStyle(vue.unref(style)) }, [ vue.createVNode(ElementView, { element: _ctx.preview }, null, 8, ["element"]), _ctx.preview.type === "DataTable" ? (vue.openBlock(), vue.createBlock(DataTable, { key: 0, element: _ctx.preview }, null, 8, ["element"])) : _ctx.preview.type === "PageHeader" ? (vue.openBlock(), vue.createBlock(vue.unref(container.MyContainer), { key: 1 }, { default: vue.withCtx(() => [ (vue.openBlock(true), vue.createElementBlock( vue.Fragment, null, vue.renderList(_ctx.preview.previewWrapperList, (item, index) => { return vue.openBlock(), vue.createBlock(_component_Preview, { preview: item, key: index }, null, 8, ["preview"]); }), 128 /* KEYED_FRAGMENT */ )) ]), _: 1 /* STABLE */ })) : _ctx.preview.type === "PageFooter" ? (vue.openBlock(), vue.createBlock(vue.unref(container.MyContainer), { key: 2 }, { default: vue.withCtx(() => [ (vue.openBlock(true), vue.createElementBlock( vue.Fragment, null, vue.renderList(_ctx.preview.previewWrapperList, (item, index) => { return vue.openBlock(), vue.createBlock(_component_Preview, { preview: item, key: index }, null, 8, ["preview"]); }), 128 /* KEYED_FRAGMENT */ )) ]), _: 1 /* STABLE */ })) : _ctx.preview.type === "Container" ? (vue.openBlock(), vue.createBlock(vue.unref(container.MyContainer), { key: 3 }, { default: vue.withCtx(() => [ (vue.openBlock(true), vue.createElementBlock( vue.Fragment, null, vue.renderList(_ctx.preview.previewWrapperList, (item, index) => { return vue.openBlock(), vue.createBlock(_component_Preview, { preview: item, key: index }, null, 8, ["preview"]); }), 128 /* KEYED_FRAGMENT */ )) ]), _: 1 /* STABLE */ })) : vue.createCommentVNode("v-if", true) ], 4 /* STYLE */ ); }; } }); var Preview = /* @__PURE__ */ _export_sfc$1(_sfc_main$2z, [["__file", "preview.vue"]]); var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; var lodashExports = {}; var lodash = { get exports(){ return lodashExports; }, set exports(v){ lodashExports = v; }, }; (function(module, exports) { (function() { var undefined$1; var VERSION = "4.17.21"; var LARGE_ARRAY_SIZE = 200; var CORE_ERROR_TEXT = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", FUNC_ERROR_TEXT = "Expected a function", INVALID_TEMPL_VAR_ERROR_TEXT = "Invalid `variable` option passed into `_.template`"; var HASH_UNDEFINED = "__lodash_hash_undefined__"; var MAX_MEMOIZE_SIZE = 500; var PLACEHOLDER = "__lodash_placeholder__"; var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4; var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2; var WRAP_BIND_FLAG = 1, WRAP_BIND_KEY_FLAG = 2, WRAP_CURRY_BOUND_FLAG = 4, WRAP_CURRY_FLAG = 8, WRAP_CURRY_RIGHT_FLAG = 16, WRAP_PARTIAL_FLAG = 32, WRAP_PARTIAL_RIGHT_FLAG = 64, WRAP_ARY_FLAG = 128, WRAP_REARG_FLAG = 256, WRAP_FLIP_FLAG = 512; var DEFAULT_TRUNC_LENGTH = 30, DEFAULT_TRUNC_OMISSION = "..."; var HOT_COUNT = 800, HOT_SPAN = 16; var LAZY_FILTER_FLAG = 1, LAZY_MAP_FLAG = 2, LAZY_WHILE_FLAG = 3; var INFINITY = 1 / 0, MAX_SAFE_INTEGER = 9007199254740991, MAX_INTEGER = 17976931348623157e292, NAN = 0 / 0; var MAX_ARRAY_LENGTH = 4294967295, MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; var wrapFlags = [ ["ary", WRAP_ARY_FLAG], ["bind", WRAP_BIND_FLAG], ["bindKey", WRAP_BIND_KEY_FLAG], ["curry", WRAP_CURRY_FLAG], ["curryRight", WRAP_CURRY_RIGHT_FLAG], ["flip", WRAP_FLIP_FLAG], ["partial", WRAP_PARTIAL_FLAG], ["partialRight", WRAP_PARTIAL_RIGHT_FLAG], ["rearg", WRAP_REARG_FLAG] ]; var argsTag = "[object Arguments]", arrayTag = "[object Array]", asyncTag = "[object AsyncFunction]", boolTag = "[object Boolean]", dateTag = "[object Date]", domExcTag = "[object DOMException]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", nullTag = "[object Null]", objectTag = "[object Object]", promiseTag = "[object Promise]", proxyTag = "[object Proxy]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]", undefinedTag = "[object Undefined]", weakMapTag = "[object WeakMap]", weakSetTag = "[object WeakSet]"; var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]"; var reEmptyStringLeading = /\b__p \+= '';/g, reEmptyStringMiddle = /\b(__p \+=) '' \+/g, reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, reUnescapedHtml = /[&<>"']/g, reHasEscapedHtml = RegExp(reEscapedHtml.source), reHasUnescapedHtml = RegExp(reUnescapedHtml.source); var reEscape = /<%-([\s\S]+?)%>/g, reEvaluate = /<%([\s\S]+?)%>/g, reInterpolate = /<%=([\s\S]+?)%>/g; var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar.source); var reTrimStart = /^\s+/; var reWhitespace = /\s/; var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, reSplitDetails = /,? & /; var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/; var reEscapeChar = /\\(\\)?/g; var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; var reFlags = /\w*$/; var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; var reIsBinary = /^0b[01]+$/i; var reIsHostCtor = /^\[object .+?Constructor\]$/; var reIsOctal = /^0o[0-7]+$/i; var reIsUint = /^(?:0|[1-9]\d*)$/; var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; var reNoMatch = /($^)/; var reUnescapedString = /['\n\r\u2028\u2029\\]/g; var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsDingbatRange = "\\u2700-\\u27bf", rsLowerRange = "a-z\\xdf-\\xf6\\xf8-\\xff", rsMathOpRange = "\\xac\\xb1\\xd7\\xf7", rsNonCharRange = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", rsPunctuationRange = "\\u2000-\\u206f", rsSpaceRange = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", rsUpperRange = "A-Z\\xc0-\\xd6\\xd8-\\xde", rsVarRange = "\\ufe0e\\ufe0f", rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; var rsApos = "['\u2019]", rsAstral = "[" + rsAstralRange + "]", rsBreak = "[" + rsBreakRange + "]", rsCombo = "[" + rsComboRange + "]", rsDigits = "\\d+", rsDingbat = "[" + rsDingbatRange + "]", rsLower = "[" + rsLowerRange + "]", rsMisc = "[^" + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsUpper = "[" + rsUpperRange + "]", rsZWJ = "\\u200d"; var rsMiscLower = "(?:" + rsLower + "|" + rsMisc + ")", rsMiscUpper = "(?:" + rsUpper + "|" + rsMisc + ")", rsOptContrLower = "(?:" + rsApos + "(?:d|ll|m|re|s|t|ve))?", rsOptContrUpper = "(?:" + rsApos + "(?:D|LL|M|RE|S|T|VE))?", reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange + "]?", rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*", rsOrdLower = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", rsOrdUpper = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsEmoji = "(?:" + [rsDingbat, rsRegional, rsSurrPair].join("|") + ")" + rsSeq, rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")"; var reApos = RegExp(rsApos, "g"); var reComboMark = RegExp(rsCombo, "g"); var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g"); var reUnicodeWord = RegExp([ rsUpper + "?" + rsLower + "+" + rsOptContrLower + "(?=" + [rsBreak, rsUpper, "$"].join("|") + ")", rsMiscUpper + "+" + rsOptContrUpper + "(?=" + [rsBreak, rsUpper + rsMiscLower, "$"].join("|") + ")", rsUpper + "?" + rsMiscLower + "+" + rsOptContrLower, rsUpper + "+" + rsOptContrUpper, rsOrdUpper, rsOrdLower, rsDigits, rsEmoji ].join("|"), "g"); var reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + "]"); var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; var contextProps = [ "Array", "Buffer", "DataView", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Map", "Math", "Object", "Promise", "RegExp", "Set", "String", "Symbol", "TypeError", "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_", "clearTimeout", "isFinite", "parseInt", "setTimeout" ]; var templateCounter = -1; var typedArrayTags = {}; typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true; typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; var cloneableTags = {}; cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false; var deburredLetters = { // Latin-1 Supplement block. "\xC0": "A", "\xC1": "A", "\xC2": "A", "\xC3": "A", "\xC4": "A", "\xC5": "A", "\xE0": "a", "\xE1": "a", "\xE2": "a", "\xE3": "a", "\xE4": "a", "\xE5": "a", "\xC7": "C", "\xE7": "c", "\xD0": "D", "\xF0": "d", "\xC8": "E", "\xC9": "E", "\xCA": "E", "\xCB": "E", "\xE8": "e", "\xE9": "e", "\xEA": "e", "\xEB": "e", "\xCC": "I", "\xCD": "I", "\xCE": "I", "\xCF": "I", "\xEC": "i", "\xED": "i", "\xEE": "i", "\xEF": "i", "\xD1": "N", "\xF1": "n", "\xD2": "O", "\xD3": "O", "\xD4": "O", "\xD5": "O", "\xD6": "O", "\xD8": "O", "\xF2": "o", "\xF3": "o", "\xF4": "o", "\xF5": "o", "\xF6": "o", "\xF8": "o", "\xD9": "U", "\xDA": "U", "\xDB": "U", "\xDC": "U", "\xF9": "u", "\xFA": "u", "\xFB": "u", "\xFC": "u", "\xDD": "Y", "\xFD": "y", "\xFF": "y", "\xC6": "Ae", "\xE6": "ae", "\xDE": "Th", "\xFE": "th", "\xDF": "ss", // Latin Extended-A block. "\u0100": "A", "\u0102": "A", "\u0104": "A", "\u0101": "a", "\u0103": "a", "\u0105": "a", "\u0106": "C", "\u0108": "C", "\u010A": "C", "\u010C": "C", "\u0107": "c", "\u0109": "c", "\u010B": "c", "\u010D": "c", "\u010E": "D", "\u0110": "D", "\u010F": "d", "\u0111": "d", "\u0112": "E", "\u0114": "E", "\u0116": "E", "\u0118": "E", "\u011A": "E", "\u0113": "e", "\u0115": "e", "\u0117": "e", "\u0119": "e", "\u011B": "e", "\u011C": "G", "\u011E": "G", "\u0120": "G", "\u0122": "G", "\u011D": "g", "\u011F": "g", "\u0121": "g", "\u0123": "g", "\u0124": "H", "\u0126": "H", "\u0125": "h", "\u0127": "h", "\u0128": "I", "\u012A": "I", "\u012C": "I", "\u012E": "I", "\u0130": "I", "\u0129": "i", "\u012B": "i", "\u012D": "i", "\u012F": "i", "\u0131": "i", "\u0134": "J", "\u0135": "j", "\u0136": "K", "\u0137": "k", "\u0138": "k", "\u0139": "L", "\u013B": "L", "\u013D": "L", "\u013F": "L", "\u0141": "L", "\u013A": "l", "\u013C": "l", "\u013E": "l", "\u0140": "l", "\u0142": "l", "\u0143": "N", "\u0145": "N", "\u0147": "N", "\u014A": "N", "\u0144": "n", "\u0146": "n", "\u0148": "n", "\u014B": "n", "\u014C": "O", "\u014E": "O", "\u0150": "O", "\u014D": "o", "\u014F": "o", "\u0151": "o", "\u0154": "R", "\u0156": "R", "\u0158": "R", "\u0155": "r", "\u0157": "r", "\u0159": "r", "\u015A": "S", "\u015C": "S", "\u015E": "S", "\u0160": "S", "\u015B": "s", "\u015D": "s", "\u015F": "s", "\u0161": "s", "\u0162": "T", "\u0164": "T", "\u0166": "T", "\u0163": "t", "\u0165": "t", "\u0167": "t", "\u0168": "U", "\u016A": "U", "\u016C": "U", "\u016E": "U", "\u0170": "U", "\u0172": "U", "\u0169": "u", "\u016B": "u", "\u016D": "u", "\u016F": "u", "\u0171": "u", "\u0173": "u", "\u0174": "W", "\u0175": "w", "\u0176": "Y", "\u0177": "y", "\u0178": "Y", "\u0179": "Z", "\u017B": "Z", "\u017D": "Z", "\u017A": "z", "\u017C": "z", "\u017E": "z", "\u0132": "IJ", "\u0133": "ij", "\u0152": "Oe", "\u0153": "oe", "\u0149": "'n", "\u017F": "s" }; var htmlEscapes = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" }; var htmlUnescapes = { "&amp;": "&", "&lt;": "<", "&gt;": ">", "&quot;": '"', "&#39;": "'" }; var stringEscapes = { "\\": "\\", "'": "'", "\n": "n", "\r": "r", "\u2028": "u2028", "\u2029": "u2029" }; var freeParseFloat = parseFloat, freeParseInt = parseInt; var freeGlobal = typeof commonjsGlobal == "object" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; var freeSelf = typeof self == "object" && self && self.Object === Object && self; var root = freeGlobal || freeSelf || Function("return this")(); var freeExports = exports && !exports.nodeType && exports; var freeModule = freeExports && true && module && !module.nodeType && module; var moduleExports = freeModule && freeModule.exports === freeExports; var freeProcess = moduleExports && freeGlobal.process; var nodeUtil = function() { try { var types = freeModule && freeModule.require && freeModule.require("util").types; if (types) { return types; } return freeProcess && freeProcess.binding && freeProcess.binding("util"); } catch (e) { } }(); var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, nodeIsDate = nodeUtil && nodeUtil.isDate, nodeIsMap = nodeUtil && nodeUtil.isMap, nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, nodeIsSet = nodeUtil && nodeUtil.isSet, nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; function apply(func, thisArg, args) { switch (args.length) { case 0: return func.call(thisArg); case 1: return func.call(thisArg, args[0]); case 2: return func.call(thisArg, args[0], args[1]); case 3: return func.call(thisArg, args[0], args[1], args[2]); } return func.apply(thisArg, args); } function arrayAggregator(array, setter, iteratee, accumulator) { var index = -1, length = array == null ? 0 : array.length; while (++index < length) { var value = array[index]; setter(accumulator, value, iteratee(value), array); } return accumulator; } function arrayEach(array, iteratee) { var index = -1, length = array == null ? 0 : array.length; while (++index < length) { if (iteratee(array[index], index, array) === false) { break; } } return array; } function arrayEachRight(array, iteratee) { var length = array == null ? 0 : array.length; while (length--) { if (iteratee(array[length], length, array) === false) { break; } } return array; } function arrayEvery(array, predicate) { var index = -1, length = array == null ? 0 : array.length; while (++index < length) { if (!predicate(array[index], index, array)) { return false; } } return true; } function arrayFilter(array, predicate) { var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = []; while (++index < length) { var value = array[index]; if (predicate(value, index, array)) { result[resIndex++] = value; } } return result; } function arrayIncludes(array, value) { var length = array == null ? 0 : array.length; return !!length && baseIndexOf(array, value, 0) > -1; } function arrayIncludesWith(array, value, comparator) { var index = -1, length = array == null ? 0 : array.length; while (++index < length) { if (comparator(value, array[index])) { return true; } } return false; } function arrayMap(array, iteratee) { var index = -1, length = array == null ? 0 : array.length, result = Array(length); while (++index < length) { result[index] = iteratee(array[index], index, array); } return result; } function arrayPush(array, values) { var index = -1, length = values.length, offset = array.length; while (++index < length) { array[offset + index] = values[index]; } return array; } function arrayReduce(array, iteratee, accumulator, initAccum) { var index = -1, length = array == null ? 0 : array.length; if (initAccum && length) { accumulator = array[++index]; } while (++index < length) { accumulator = iteratee(accumulator, array[index], index, array); } return accumulator; } function arrayReduceRight(array, iteratee, accumulator, initAccum) { var length = array == null ? 0 : array.length; if (initAccum && length) { accumulator = array[--length]; } while (length--) { accumulator = iteratee(accumulator, array[length], length, array); } return accumulator; } function arraySome(array, predicate) { var index = -1, length = array == null ? 0 : array.length; while (++index < length) { if (predicate(array[index], index, array)) { return true; } } return false; } var asciiSize = baseProperty("length"); function asciiToArray(string) { return string.split(""); } function asciiWords(string) { return string.match(reAsciiWord) || []; } function baseFindKey(collection, predicate, eachFunc) { var result; eachFunc(collection, function(value, key, collection2) { if (predicate(value, key, collection2)) { result = key; return false; } }); return result; } function baseFindIndex(array, predicate, fromIndex, fromRight) { var length = array.length, index = fromIndex + (fromRight ? 1 : -1); while (fromRight ? index-- : ++index < length) { if (predicate(array[index], index, array)) { return index; } } return -1; } function baseIndexOf(array, value, fromIndex) { return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex); } function baseIndexOfWith(array, value, fromIndex, comparator) { var index = fromIndex - 1, length = array.length; while (++index < length) { if (comparator(array[index], value)) { return index; } } return -1; } function baseIsNaN(value) { return value !== value; } function baseMean(array, iteratee) { var length = array == null ? 0 : array.length; return length ? baseSum(array, iteratee) / length : NAN; } function baseProperty(key) { return function(object) { return object == null ? undefined$1 : object[key]; }; } function basePropertyOf(object) { return function(key) { return object == null ? undefined$1 : object[key]; }; } function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { eachFunc(collection, function(value, index, collection2) { accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index, collection2); }); return accumulator; } function baseSortBy(array, comparer) { var length = array.length; array.sort(comparer); while (length--) { array[length] = array[length].value; } return array; } function baseSum(array, iteratee) { var result, index = -1, length = array.length; while (++index < length) { var current = iteratee(array[index]); if (current !== undefined$1) { result = result === undefined$1 ? current : result + current; } } return result; } function baseTimes(n, iteratee) { var index = -1, result = Array(n); while (++index < n) { result[index] = iteratee(index); } return result; } function baseToPairs(object, props) { return arrayMap(props, function(key) { return [key, object[key]]; }); } function baseTrim(string) { return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, "") : string; } function baseUnary(func) { return function(value) { return func(value); }; } function baseValues(object, props) { return arrayMap(props, function(key) { return object[key]; }); } function cacheHas(cache, key) { return cache.has(key); } function charsStartIndex(strSymbols, chrSymbols) { var index = -1, length = strSymbols.length; while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) { } return index; } function charsEndIndex(strSymbols, chrSymbols) { var index = strSymbols.length; while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) { } return index; } function countHolders(array, placeholder) { var length = array.length, result = 0; while (length--) { if (array[length] === placeholder) { ++result; } } return result; } var deburrLetter = basePropertyOf(deburredLetters); var escapeHtmlChar = basePropertyOf(htmlEscapes); function escapeStringChar(chr