label-print-design
Version:
操作简单,组件丰富的一站式打印解决方案打印设计器
1,147 lines (1,136 loc) • 2.97 MB
JavaScript
(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 = {
"&": "&",
"<": "<",
">": ">",
'"': """,
"'": "'"
};
var htmlUnescapes = {
"&": "&",
"<": "<",
">": ">",
""": '"',
"'": "'"
};
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