@utogether/utils 1.15.5 → 1.15.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.umd.js","sources":["../lib/render.tsx","../lib/element/index.ts","../node_modules/.pnpm/resize-observer-polyfill@1.5.1/node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../lib/resize/index.ts","../lib/useWatermark.ts","../lib/useAttrs.ts","../lib/storage/index.ts","../lib/useRender.ts","../lib/useGlobal.ts","../lib/uuid/index.ts","../lib/device/index.ts","../lib/message/index.ts","../lib/formatData.ts","../lib/useTree.ts","../node_modules/.pnpm/typescript-cookie@1.0.3/node_modules/typescript-cookie/dist/typescript-cookie.mjs","../lib/storage/cookie.ts","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/bind.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/utils.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/buildURL.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/InterceptorManager.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/AxiosError.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/defaults/transitional.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/toFormData.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/settle.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/cookies.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/combineURLs.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/buildFullPath.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/cancel/CanceledError.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/adapters/xhr.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/null.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/defaults/index.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/transformData.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/cancel/isCancel.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/dispatchRequest.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/mergeConfig.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/env/data.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/validator.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/Axios.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/cancel/CancelToken.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/spread.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/axios.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/index.js","../node_modules/.pnpm/nprogress@0.2.0/node_modules/nprogress/nprogress.js","../lib/progress/index.ts","../lib/http/index.ts","../lib/index.ts"],"sourcesContent":["/*\r\n * @Author: wei.li\r\n * @Date: 2021-12-01 09:18:50\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-10-10 15:40:38\r\n * @Description: file content\r\n */\r\n\r\n// @ts-nocheck\r\n\r\nimport { isArray, isEmpty } from 'xe-utils';\r\nimport { FormItemRenderOptions, FormItemContentRenderParams, VxeColumnPropTypes } from 'vxe-table';\r\n\r\nexport const VxetableRender = (VXETable, {serviceApi, dict, i18n}) => {\r\n // form render\r\n VXETable.renderer.add('#SuSelect', {\r\n renderEdit(renderOpts: VxeColumnPropTypes.EditRender, params) {\r\n const { row, column } = params;\r\n const { options, props, optionProps = {}, events } = renderOpts;\r\n // @ts-ignore\r\n const { label = 'label', value = 'value', extLabel } = optionProps;\r\n const { code, fetchField, extParam = {}, loading = false, multiple, defaultValue } = props;\r\n if (defaultValue) {\r\n const keys = Object.keys(defaultValue);\r\n keys.forEach(key => {\r\n row[key] = row[key] || defaultValue[key];\r\n });\r\n }\r\n if (multiple && row[column.field]) {\r\n !isArray(row[column.field]) &&\r\n row[column.field].split(',').forEach(ff => {\r\n const isExit = options.some(s => s[label] === ff);\r\n !isExit && options.push({ [value]: ff, [label]: ff });\r\n });\r\n }\r\n /**\r\n * @description: 远程搜索对应的函数\r\n * @param {*} val 录入的参数\r\n */\r\n async function remoteMethod(query) {\r\n const param = Object.assign({}, { pageSize: 20, pageNum: 1 }, extParam, {\r\n [fetchField || label]: query\r\n });\r\n let res;\r\n try {\r\n options.length = 0;\r\n props.loading = true;\r\n res = await serviceApi(code, param);\r\n if (res) {\r\n res.list ? options.push(...res.list) : options.push(...res);\r\n }\r\n } finally {\r\n props.loading = false;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 选中值发生变化时触发\r\n * @param {*} val 目前的选中值\r\n */\r\n function onChange(val) {\r\n const { fieldMap = {} } = props;\r\n const item = val && options.find(option => val === option[value]);\r\n const keys = Object.keys(fieldMap);\r\n if (keys.length) {\r\n const values: string[] = Object.values(fieldMap);\r\n keys.forEach((key, idx) => {\r\n row[key] = val ? item[values[idx]] : '';\r\n });\r\n }\r\n events?.change && events.change(params, val, item, column.field);\r\n }\r\n\r\n /**\r\n * @description: 可清空的单选模式下用户点击清空按钮时触发\r\n */\r\n function onClear() {\r\n events?.clear && events.clear({ row, field: column.field });\r\n }\r\n\r\n function onFocus() {\r\n !options.length && remoteMethod('');\r\n }\r\n\r\n return [\r\n <el-select\r\n v-model={row[column.field]}\r\n {...props}\r\n filterable\r\n remote\r\n clearable\r\n size=\"small\"\r\n placeholder=\"请录入关键字搜索\"\r\n style=\"width: 100%\"\r\n remote-method={remoteMethod}\r\n loading={loading}\r\n onFocus={() => onFocus()}\r\n onChange={v => onChange(v)}\r\n onClear={() => onClear()}\r\n >\r\n {options.map(item => {\r\n return (\r\n <el-option key={item[value]} label={item[label]} value={item[value]}>\r\n <span style=\"float: left\">\r\n {item[extLabel] ? `${item[value]}-${item[extLabel]}` : item[value]}\r\n </span>\r\n {value !== label && !item[extLabel] ? (\r\n <span class=\"su-coSelect-option\">{item[label]}</span>\r\n ) : null}\r\n </el-option>\r\n );\r\n })}\r\n </el-select>\r\n ];\r\n },\r\n // 可编辑显示模板\r\n renderCell(renderOpts, params) {\r\n const { row, column } = params;\r\n const { props } = renderOpts;\r\n const { textValue, multiple } = props;\r\n let val = row[column.field];\r\n if (textValue) {\r\n val = eval(`row.${textValue}`) || row[column.field];\r\n }\r\n if (val && multiple && isArray(val)) {\r\n val = val && val.join(',');\r\n }\r\n return [<span>{val}</span>];\r\n },\r\n renderItemContent(renderOpts: FormItemRenderOptions, params: FormItemContentRenderParams) {\r\n const { data, property } = params;\r\n const { options, props, optionProps = {}, events } = renderOpts;\r\n // @ts-ignore\r\n const { label = 'label', value = 'value', extLabel } = optionProps;\r\n const { code, fetchField, extParam = {}, loading = false } = props;\r\n /**\r\n * @description: 远程搜索对应的函数\r\n * @param {*} val 录入的参数\r\n */\r\n async function remoteMethod(query) {\r\n const param = Object.assign({}, { pageSize: 20, pageNum: 1 }, extParam, { [fetchField]: query });\r\n let res;\r\n try {\r\n options.length = 0;\r\n props.loading = true;\r\n res = await serviceApi(code, param);\r\n if (res?.list) {\r\n options.push(...res.list);\r\n } else if (res) {\r\n options.push(...res);\r\n }\r\n } finally {\r\n props.loading = false;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 选中值发生变化时触发\r\n * @param {*} val 目前的选中值\r\n */\r\n function onChange(val) {\r\n const { fieldMap = {} } = props;\r\n const item = options.find(option => val === option[value]);\r\n const keys = Object.keys(fieldMap);\r\n if (keys.length) {\r\n const values: string[] = Object.values(fieldMap);\r\n keys.forEach((key, idx) => {\r\n data[key] = val ? item[values[idx]] : '';\r\n });\r\n }\r\n events?.change && events.change(val, item, data, property);\r\n }\r\n\r\n /**\r\n * @description: 可清空的单选模式下用户点击清空按钮时触发\r\n */\r\n function onClear() {\r\n events?.clear && events.clear({ data, field: property });\r\n }\r\n\r\n function onFocus() {\r\n !options.length && remoteMethod('');\r\n }\r\n\r\n return [\r\n <el-select\r\n v-model={data[property]}\r\n {...props}\r\n filterable\r\n remote\r\n clearable\r\n size=\"small\"\r\n style=\"width: 100%\"\r\n placeholder=\"请录入关键字搜索\"\r\n remote-method={remoteMethod}\r\n loading={loading}\r\n onFocus={() => onFocus()}\r\n onChange={v => onChange(v)}\r\n onClear={() => onClear()}\r\n >\r\n {options.map(item => {\r\n return (\r\n <el-option key={item[value]} label={item[label]} value={item[value]}>\r\n <span style=\"float: left\">\r\n {item[extLabel] ? `${item[value]}-${item[extLabel]}` : item[value]}\r\n </span>\r\n {value !== label && !item[extLabel] ? (\r\n <span class=\"su-coSelect-option\">{item[label]}</span>\r\n ) : null}\r\n </el-option>\r\n );\r\n })}\r\n </el-select>\r\n ];\r\n }\r\n });\r\n\r\n // 时间范围\r\n VXETable.renderer.add('#SuDateRange', {\r\n renderItemContent(renderOpts: FormItemRenderOptions, params: FormItemContentRenderParams) {\r\n const { data, property } = params;\r\n const { props } = renderOpts;\r\n return [\r\n <el-date-picker\r\n v-model={data[property]}\r\n type={props?.type || 'daterange'}\r\n size=\"small\"\r\n style=\"width: 100%\"\r\n range-separator={i18n('message.to', true)}\r\n start-placeholder={i18n('message.startDate', true)}\r\n end-placeholder={i18n('message.endDate', true)}\r\n />\r\n ];\r\n }\r\n });\r\n\r\n VXETable.renderer.add('#select', {\r\n renderEdit(renderOpts: VxeColumnPropTypes.EditRender, params) {\r\n const { row, column } = params;\r\n const { options, props, optionProps = {}, events } = renderOpts;\r\n // @ts-ignore\r\n const { label = 'label', value = 'value', extLabel } = optionProps;\r\n if (props.multiple && row[column.field]) {\r\n !isArray(row[column.field]) &&\r\n row[column.field].split(',').forEach(ff => {\r\n const isExit = options.some(s => s[label] === ff);\r\n !isExit && options.push({ [value]: ff, [label]: ff });\r\n });\r\n }\r\n\r\n function onChange(val) {\r\n const item = val && options.find(option => val === option[value]);\r\n events?.change && events.change(params, val, item, column.field);\r\n }\r\n\r\n function onClear() {\r\n events?.clear && events.clear({ row, field: column.field });\r\n }\r\n\r\n return [\r\n <el-select\r\n v-model={row[column.field]}\r\n filterable\r\n clearable\r\n {...props}\r\n size=\"small\"\r\n style=\"width: 100%\"\r\n onChange={v => onChange(v)}\r\n onClear={() => onClear()}\r\n >\r\n {options.map(item => {\r\n return (\r\n <el-option\r\n key={item[value]}\r\n label={item[extLabel] ? item[value] : item[label]}\r\n value={item[value]}\r\n >\r\n <span style=\"float: left\">\r\n {extLabel && item[extLabel] ? `${item[value]}-${item[extLabel]}` : item[value]}\r\n </span>\r\n {value !== label && !item[extLabel] ? (\r\n <span class=\"su-coSelect-option\">{item[label]}</span>\r\n ) : null}\r\n </el-option>\r\n );\r\n })}\r\n </el-select>\r\n ];\r\n },\r\n // 可编辑显示模板\r\n renderCell(renderOpts, params) {\r\n const { row, column } = params;\r\n const { props, options, optionProps } = renderOpts;\r\n // @ts-ignore\r\n const { label = 'label', value = 'value', extLabel } = optionProps;\r\n const { textValue } = props;\r\n let val = row[column.field];\r\n const item = options.find(opt => opt[value] === val);\r\n if (textValue) {\r\n val = eval(`row.${textValue}`) || row[column.field];\r\n }\r\n if (item) {\r\n val = extLabel ? item[value] : item[label];\r\n }\r\n if (val && props?.multiple && isArray(val)) {\r\n val = val && val.join(',');\r\n }\r\n return [<span>{val}</span>];\r\n },\r\n renderItemContent(renderOpts: FormItemRenderOptions, params: FormItemContentRenderParams) {\r\n const { data, property } = params;\r\n const { options, props, optionProps = {}, events } = renderOpts;\r\n // @ts-ignore\r\n const { label = 'label', value = 'value' } = optionProps;\r\n // 默认值\r\n const { defaultValues } = props;\r\n if (defaultValues) {\r\n data[property] = defaultValues;\r\n }\r\n /**\r\n * @description: 选中值发生变化时触发\r\n * @param {*} val 目前的选中值\r\n */\r\n function onChange(val) {\r\n const { fieldMap = {} } = props;\r\n const item = options.find(option => val === option[value]);\r\n const keys = Object.keys(fieldMap);\r\n if (keys.length) {\r\n const values: string[] = Object.values(fieldMap);\r\n keys.forEach((key, idx) => {\r\n data[key] = val ? item[values[idx]] : '';\r\n });\r\n }\r\n const parm = { item, row: data, property };\r\n events?.change && events.change(parm);\r\n }\r\n\r\n /**\r\n * @description: 可清空的单选模式下用户点击清空按钮时触发\r\n */\r\n function onClear() {\r\n events?.clear && events.clear({ data, field: property });\r\n }\r\n\r\n return [\r\n <el-select\r\n v-model={data[property]}\r\n {...props}\r\n filterable\r\n clearable\r\n size=\"small\"\r\n style=\"width: 100%\"\r\n onChange={v => onChange(v)}\r\n onClear={() => onClear()}\r\n >\r\n {options.map(item => {\r\n return (\r\n <el-option key={item[value]} label={item[label]} value={item[value]}>\r\n <span style=\"float: left\">{item[label]}</span>\r\n <span class=\"su-coSelect-option\">{item[value]}</span>\r\n </el-option>\r\n );\r\n })}\r\n </el-select>\r\n ];\r\n }\r\n });\r\n // Lov\r\n VXETable.renderer.add('#lov', {\r\n renderItemContent(renderOpts: FormItemRenderOptions, params: FormItemContentRenderParams) {\r\n const { data, property } = params;\r\n const { props, events } = renderOpts;\r\n // 默认值\r\n const { defaultValues, mapField } = props;\r\n if (defaultValues) {\r\n data[property] = defaultValues;\r\n }\r\n /**\r\n * @description: 选中值发生变化时触发\r\n * @param {*} val 目前的选中值\r\n */\r\n function onChange(record, displayField) {\r\n const { mapField, field, displayName, isMulti } = props;\r\n if (!isMulti) {\r\n const obj = { [displayName || field]: record[displayField || displayName || field] };\r\n for (const key in mapField) {\r\n obj[key] = record[mapField[key]];\r\n }\r\n Object.assign(data, obj);\r\n } else if (isMulti) {\r\n data[displayName || field] = record.reduce((curv, prev) => {\r\n if (!curv) {\r\n curv = prev[displayField || displayName || field]\r\n } else {\r\n curv = curv + ',' + prev[displayField || displayName || field]\r\n }\r\n return curv\r\n }, '')\r\n }\r\n const parm = { row: data, property, item: record };\r\n events?.change && events.change(parm);\r\n }\r\n\r\n /**\r\n * @description: 点击清空按钮时触发\r\n */\r\n function onClear() {\r\n data[property] = ''\r\n if (!isEmpty(mapField)) {\r\n for (const key in mapField) {\r\n data[key] = '';\r\n }\r\n }\r\n events?.clear && events.clear({ data, field: property });\r\n }\r\n\r\n return [\r\n <su-lov\r\n record={ data }\r\n {...props}\r\n mode=\"vxe\"\r\n onChange={(v, f) => onChange(v, f)}\r\n onClear={() => onClear()}\r\n />\r\n ];\r\n },\r\n // 单元格编辑\r\n renderEdit(renderOpts: VxeColumnPropTypes.EditRender, params) {\r\n const { row, column } = params;\r\n const { props, events } = renderOpts;\r\n\r\n function onChange(record, displayField) {\r\n const { mapField, field, displayName, isMulti } = props;\r\n if (!isMulti) {\r\n const obj = { [displayName || field]: record[displayField || displayName || field] };\r\n for (const key in mapField) {\r\n obj[key] = record[mapField[key]];\r\n }\r\n Object.assign(row, obj);\r\n }\r\n events?.change && events.change(params, record, row[column.field]);\r\n }\r\n\r\n function onClear() {\r\n const { mapField, field } = props;\r\n row[column.field] = ''\r\n if (!isEmpty(mapField)) {\r\n for (const key in mapField) {\r\n row[key] = '';\r\n }\r\n }\r\n events?.clear && events.clear({ row, field });\r\n }\r\n\r\n return [\r\n <su-lov\r\n record={ row }\r\n {...props}\r\n mode=\"ele\"\r\n onChange={(v, f) => onChange(v, f)}\r\n onClear={() => onClear()}\r\n />\r\n ];\r\n },\r\n // 单元格默认\r\n renderDefault (renderOpts: VxeColumnPropTypes.EditRender, params) {\r\n const { row, column } = params;\r\n const { props, events } = renderOpts;\r\n\r\n function onChange(record, displayField) {\r\n const { mapField, field, displayName, isMulti } = props;\r\n if (!isMulti) {\r\n const obj = { [displayName || field]: record[displayField || displayName || field] };\r\n for (const key in mapField) {\r\n obj[key] = record[mapField[key]];\r\n }\r\n Object.assign(row, obj);\r\n }\r\n events?.change && events.change(params, record, row[column.field]);\r\n }\r\n\r\n function onClear() {\r\n const { mapField, field } = props;\r\n row[column.field] = ''\r\n if (!isEmpty(mapField)) {\r\n for (const key in mapField) {\r\n row[key] = '';\r\n }\r\n }\r\n events?.clear && events.clear({ row, field });\r\n }\r\n\r\n return [\r\n <su-lov\r\n record={ row }\r\n {...props}\r\n mode=\"ele\"\r\n onChange={(v, f) => onChange(v, f)}\r\n onClear={() => onClear()}\r\n />\r\n ];\r\n },\r\n // 可编辑显示模板\r\n renderCell(renderOpts, params) {\r\n const { row, column } = params;\r\n // @ts-ignore\r\n // const { textValue } = props;\r\n const val = row[column.field];\r\n return [<span>{val}</span>];\r\n }\r\n });\r\n \r\n \r\n // 创建一个简单的超链接渲染\r\n VXETable.renderer.add('#tag', {\r\n // 默认显示模板\r\n renderDefault(renderOpts, params) {\r\n const { row, column } = params;\r\n const {\r\n props: { code, tagMap }\r\n } = renderOpts;\r\n function getTagType() {\r\n return row[column.field] ? tagMap[row[column.field]] : '';\r\n }\r\n return [\r\n row[column.field] ? <el-tag effect=\"dark\" type={getTagType()}>{getValue(code, row[column.field])}</el-tag> : null\r\n ];\r\n }\r\n });\r\n \r\n VXETable.renderer.add('#switch', {\r\n renderDefault(renderOpts, params) {\r\n const { row, column } = params;\r\n const {\r\n props: { code, activeValue, inactiveValue },\r\n events\r\n } = renderOpts;\r\n function onChange(value) {\r\n const param = {row, column, value}\r\n events?.change && events.change(param);\r\n }\r\n return [\r\n row[column.field] ? <el-switch\r\n v-model={row[column.field]}\r\n inline-prompt\r\n size=\"large\"\r\n style=\"--el-switch-on-color: #13ce66; --el-switch-off-color: #E6A23C\"\r\n {...renderOpts.props}\r\n active-text={getValue(code, activeValue)}\r\n inactive-text={getValue(code, inactiveValue)}\r\n onChange={v => onChange(v)}\r\n /> : null\r\n ];\r\n }\r\n });\r\n\r\n function getValue(code, value) {\r\n if (!value || !code || !dict) return value;\r\n return dict[code]?.children?.find(item => item.dictCode === value)?.dictName;\r\n }\r\n\r\nreturn VXETable\r\n}","/*\r\n * @Author: wei.li\r\n * @Date: 2021-12-23 17:33:20\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-07-07 11:57:31\r\n * @Description: file content\r\n */\r\ndeclare type FunctionArgs<Args extends any[] = any[], Return = void> = (\r\n ...args: Args\r\n) => Return;\r\n\r\ndeclare type RefType<T> = T | null;\r\n\r\nexport const hasClass = (ele: RefType<any>, cls: string): any => {\r\n return !!ele.className?.match(new RegExp(\"(\\\\s|^)\" + cls + \"(\\\\s|$)\"));\r\n};\r\n\r\nexport const addClass = (\r\n ele: RefType<any>,\r\n cls: string,\r\n extracls?: string\r\n): any => {\r\n if (!hasClass(ele, cls)) ele.className += \" \" + cls;\r\n if (extracls) {\r\n if (!hasClass(ele, extracls)) ele.className += \" \" + extracls;\r\n }\r\n};\r\n\r\nexport const removeClass = (\r\n ele: RefType<any>,\r\n cls: string,\r\n extracls?: string\r\n): any => {\r\n if (hasClass(ele, cls)) {\r\n const reg = new RegExp(\"(\\\\s|^)\" + cls + \"(\\\\s|$)\");\r\n ele.className = ele.className?.replace(reg, \" \").trim();\r\n }\r\n if (extracls) {\r\n if (hasClass(ele, extracls)) {\r\n const regs = new RegExp(\"(\\\\s|^)\" + extracls + \"(\\\\s|$)\");\r\n ele.className = ele.className?.replace(regs, \" \").trim();\r\n }\r\n }\r\n};\r\n\r\nexport const toggleClass = (\r\n flag: boolean,\r\n clsName: string,\r\n target?: RefType<any>\r\n): any => {\r\n const targetEl = target || document.body;\r\n let { className } = targetEl;\r\n className = className?.replace(clsName, \"\");\r\n targetEl.className =\r\n className && flag ? `${className} ${clsName} ` : className;\r\n};\r\n\r\nexport function useRafThrottle<T extends FunctionArgs>(fn: T): T {\r\n let locked = false;\r\n // @ts-ignore\r\n return function (...args) {\r\n if (locked) return;\r\n locked = true;\r\n window.requestAnimationFrame(() => {\r\n fn.apply(this, args);\r\n locked = false;\r\n });\r\n };\r\n}\r\n\r\nexport const openLink = <T>(link: T): void => {\r\n const $a: HTMLElement = document.createElement(\"a\");\r\n // @ts-expect-error\r\n $a.setAttribute(\"href\", link);\r\n $a.setAttribute(\"target\", \"_blank\");\r\n $a.setAttribute(\"rel\", \"noreferrer noopener\");\r\n $a.setAttribute(\"id\", \"external\");\r\n document.getElementById(\"external\") &&\r\n document.body.removeChild(document.getElementById(\"external\")!);\r\n document.body.appendChild($a);\r\n $a.click();\r\n $a.remove();\r\n};\r\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array<Array>} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array<ResizeObserverSPI>}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the <html> itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array<ResizeObservation>}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map<Element, ResizeObservation>}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","/*\r\n * @Author: wei.li\r\n * @Date: 2022-07-07 11:41:27\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-07-07 13:40:03\r\n * @Description: file content\r\n */\r\nimport ResizeObserver from \"resize-observer-polyfill\";\r\n\r\nconst isServer = typeof window === \"undefined\";\r\n\r\nconst resizeHandler = (entries: any[]): void => {\r\n for (const entry of entries) {\r\n const listeners = entry.target.__resizeListeners__ || [];\r\n if (listeners.length) {\r\n listeners.forEach((fn: () => any) => {\r\n fn();\r\n });\r\n }\r\n }\r\n};\r\n\r\nexport const addResizeListener = (element: any, fn: () => any): any => {\r\n if (isServer) return;\r\n if (!element.__resizeListeners__) {\r\n element.__resizeListeners__ = [];\r\n element.__ro__ = new ResizeObserver(resizeHandler);\r\n element.__ro__.observe(element);\r\n }\r\n element.__resizeListeners__.push(fn);\r\n};\r\n\r\nexport const removeResizeListener = (element: any, fn: () => any): any => {\r\n if (!element || !element.__resizeListeners__) return;\r\n element.__resizeListeners__.splice(\r\n element.__resizeListeners__.indexOf(fn),\r\n 1\r\n );\r\n if (!element.__resizeListeners__.length) {\r\n element.__ro__.disconnect();\r\n }\r\n};\r\n","import {\r\n ref,\r\n Ref,\r\n unref,\r\n shallowRef,\r\n onBeforeUnmount,\r\n getCurrentInstance,\r\n} from \"vue\";\r\nimport { isUndefined } from \"xe-utils\";\r\nimport { useRafThrottle } from \"./element\";\r\nimport { addResizeListener, removeResizeListener } from \"./resize\";\r\n\r\nconst domSymbol = Symbol(\"watermark-dom\");\r\n\r\ntype attr = {\r\n font?: string;\r\n fillStyle?: string;\r\n};\r\n\r\nexport function useWatermark(\r\n appendEl: Ref<HTMLElement | null> = ref(document.body) as Ref<HTMLElement>\r\n) {\r\n const func = useRafThrottle(function () {\r\n const el = unref(appendEl);\r\n if (!el) return;\r\n const { clientHeight: height, clientWidth: width } = el;\r\n updateWatermark({ height, width });\r\n });\r\n const id = domSymbol.toString();\r\n const watermarkEl = shallowRef<HTMLElement>();\r\n\r\n const clear = () => {\r\n const domId = unref(watermarkEl);\r\n watermarkEl.value = undefined;\r\n const el = unref(appendEl);\r\n if (!el) return;\r\n domId && el.removeChild(domId);\r\n removeResizeListener(el, func);\r\n };\r\n\r\n function createBase64(str: string, attr?: attr) {\r\n const can = document.createElement(\"canvas\");\r\n const width = 260;\r\n const height = 180;\r\n Object.assign(can, { width, height });\r\n\r\n const cans = can.getContext(\"2d\");\r\n if (cans) {\r\n cans.rotate((-20 * Math.PI) / 120);\r\n cans.font = attr?.font ?? \"15px Reggae One\";\r\n cans.fillStyle = attr?.fillStyle ?? \"rgba(180, 180, 180, 0.75)\";\r\n cans.textAlign = \"left\";\r\n cans.textBaseline = \"middle\";\r\n cans.fillText(str, width / 20, height);\r\n }\r\n return can.toDataURL(\"image/png\");\r\n }\r\n\r\n function updateWatermark(\r\n options: {\r\n width?: number;\r\n height?: number;\r\n str?: string;\r\n attr?: attr;\r\n } = {}\r\n ) {\r\n const el = unref(watermarkEl);\r\n if (!el) return;\r\n if (!isUndefined(options.width)) {\r\n el.style.width = `${options.width}px`;\r\n }\r\n if (!isUndefined(options.height)) {\r\n el.style.height = `${options.height}px`;\r\n }\r\n if (!isUndefined(options.str)) {\r\n el.style.background = `url(${createBase64(\r\n options.str!,\r\n options.attr\r\n )}) left top repeat`;\r\n }\r\n }\r\n\r\n const createWatermark = (str: string, attr?: attr) => {\r\n if (unref(watermarkEl)) {\r\n updateWatermark({ str, attr });\r\n return id;\r\n }\r\n const div = document.createElement(\"div\");\r\n watermarkEl.value = div;\r\n div.id = id;\r\n div.style.pointerEvents = \"none\";\r\n div.style.top = \"0px\";\r\n div.style.left = \"0px\";\r\n div.style.position = \"absolute\";\r\n div.style.zIndex = \"100000\";\r\n const el = unref(appendEl);\r\n if (!el) return id;\r\n const { clientHeight: height, clientWidth: width } = el;\r\n updateWatermark({ str, width, height, attr });\r\n el.appendChild(div);\r\n return id;\r\n };\r\n\r\n function setWatermark(str: string, attr?: attr) {\r\n createWatermark(str, attr);\r\n addResizeListener(document.documentElement, func);\r\n const instance = getCurrentInstance();\r\n if (instance) {\r\n onBeforeUnmount(() => {\r\n clear();\r\n });\r\n }\r\n }\r\n\r\n return { setWatermark, clear };\r\n}\r\n","/*\r\n * @Author: wei.li\r\n * @Date: 2021-11-17 16:02:30\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-08-24 13:48:03\r\n * @Description: file content\r\n */\r\nimport { getCurrentInstance, reactive, shallowRef, watchEffect } from \"vue\";\r\nimport type { Ref } from \"vue\";\r\ninterface Params {\r\n excludeListeners?: boolean;\r\n excludeKeys?: string[];\r\n}\r\n\r\nconst DEFAULT_EXCLUDE_KEYS = [\"class\", \"style\"];\r\nconst LISTENER_PREFIX = /^on[A-Z]/;\r\n\r\nexport function entries<T>(obj: Recordable<T>): [string, T][] {\r\n return Object.keys(obj).map((key: string) => [key, obj[key]]);\r\n}\r\n\r\nexport function useAttrs(params: Params = {}): Ref<Recordable> | {} {\r\n const instance = getCurrentInstance();\r\n if (!instance) return {};\r\n\r\n const { excludeListeners = false, excludeKeys = [] } = params;\r\n const attrs = shallowRef({});\r\n const allExcludeKeys = excludeKeys.concat(DEFAULT_EXCLUDE_KEYS);\r\n\r\n // Since attrs are not reactive, make it reactive instead of doing in `onUpdated` hook for better performance\r\n instance.attrs = reactive(instance.attrs);\r\n\r\n watchEffect(() => {\r\n const res = entries(instance.attrs).reduce((acm, [key, val]) => {\r\n if (\r\n !allExcludeKeys.includes(key) &&\r\n !(excludeListeners && LISTENER_PREFIX.test(key))\r\n ) {\r\n acm[key] = val;\r\n }\r\n\r\n return acm;\r\n }, {} as Recordable);\r\n\r\n attrs.value = res;\r\n });\r\n\r\n return attrs;\r\n}\r\n``;\r\n","/*\r\n * @Author: wei.li\r\n * @Date: 2021-12-23 17:33:21\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-07-14 17:13:30\r\n * @Description: file content\r\n */\r\ninterface ProxyStorage {\r\n getItem(key: string): any;\r\n setItem(Key: string, value: string): void;\r\n removeItem(key: string): void;\r\n clear(): void;\r\n}\r\n\r\n//sessionStorage operate\r\nclass sessionStorageProxy implements ProxyStorage {\r\n protected storage: ProxyStorage;\r\n\r\n constructor(storageModel: ProxyStorage) {\r\n this.storage = storageModel;\r\n }\r\n\r\n // 存\r\n public setItem(key: string, value: any): void {\r\n this.storage.setItem(key, JSON.stringify(value));\r\n }\r\n\r\n // 取\r\n public getItem(key: string): any {\r\n return JSON.parse(this.storage.getItem(key));\r\n }\r\n\r\n // 删\r\n public removeItem(key: string): void {\r\n this.storage.removeItem(key);\r\n }\r\n\r\n // 清空\r\n public clear(): void {\r\n this.storage.clear();\r\n }\r\n}\r\n\r\n//localStorage operate\r\nclass localStorageProxy extends sessionStorageProxy implements ProxyStorage {\r\n constructor(localStorage: ProxyStorage) {\r\n super(localStorage);\r\n }\r\n}\r\n\r\nexport const storageSession = new sessionStorageProxy(sessionStorage);\r\n\r\nexport const storageLocal = new localStorageProxy(localStorage);\r\n","/*\r\n * @Author: wei.li\r\n * @Date: 2021-11-29 18:18:00\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-10-14 16:38:54\r\n * @Description: file content\r\n */\r\n\r\ninterface IAttrs {\r\n disabled?: boolean;\r\n defaultValue?: string;\r\n code?: undefined;\r\n [x: string]: any;\r\n}\r\n\r\ninterface IEvents {\r\n onChange?: Fn;\r\n onClear?: Fn;\r\n onBlur?: Fn;\r\n onInput?: Fn;\r\n}\r\nimport { isObject, isEmpty, isString, isFunction } from \"xe-utils\";\r\nimport { storageSession } from \"./storage\";\r\n\r\nconst dictData = storageSession.getItem(\"kLov\");\r\n\r\ninterface IRecord {\r\n [x: string]: any;\r\n}\r\n\r\nexport const useRender = (cb?) => {\r\n const optionProps = { value: \"dictCode\", label: \"dictName\" };\r\n /**\r\n * @description: 字典下拉渲染\r\n * @param {*} attrs string|object string时默认未code\r\n * @param {*} methods fn|object 回调函数 fn默认为onChange\r\n */\r\n const renderDict = (attrs: IAttrs | string, methods?) => {\r\n const events = getEvents(methods);\r\n let props = { clearable: true, disabled: false };\r\n let defaultValue;\r\n let dictCode;\r\n if (isObject(attrs)) {\r\n props = Object.assign(props, attrs);\r\n defaultValue = attrs.defaultValue;\r\n dictCode = attrs?.code;\r\n } else {\r\n dictCode = attrs;\r\n }\r\n const opts = storageSession.getItem(\"kLov\")[dictCode]?.children;\r\n const options = opts ? opts.filter((opt) => opt.enabled === \"1\") : [];\r\n return {\r\n name: \"#select\",\r\n optionProps,\r\n options,\r\n props,\r\n defaultValue,\r\n events,\r\n };\r\n };\r\n /**\r\n * @description: 远程搜索下拉选择-编辑\r\n * @param {*} attrs attrs\r\n * @return {*}\r\n */\r\n const renderSelect = (attrs, callBack?) => {\r\n return {\r\n name: \"#SuSelect\",\r\n optionProps: attrs.optionProps,\r\n props: attrs.props,\r\n options: attrs.options || [],\r\n events: {\r\n change: (e, v, i, field) => callBack && callBack(e, v, i, field),\r\n },\r\n };\r\n };\r\n /**\r\n * @description: 查询关联了用户的员工\r\n * @param {*} name '渲染器名称'\r\n * @param {*} callback 回调函数\r\n * @return {*} 渲染组件\r\n */\r\n const renderUser = (attr?, callback?) => {\r\n const attrs = {\r\n optionProps: { extLabel: \"userName\", value: \"employeeName\" },\r\n props: {\r\n attrs: { disabled: attr?.disabled },\r\n disabled: attr?.disabled,\r\n defaultValue: attr?.defaultValue,\r\n fieldMap: attr?.fieldMap,\r\n code: \"SYS037\",\r\n fetchField: \"employeeName\",\r\n },\r\n };\r\n return renderSelect(attrs, callback);\r\n };\r\n const renderSysUser = (opt?) => {\r\n const attrs = {\r\n optionProps: { extLabel: \"userName\", value: \"name\" },\r\n props: {\r\n code: \"sys/listUsers\",\r\n fetchField: \"name\",\r\n fieldMap: opt?.fieldMap,\r\n },\r\n };\r\n return renderSelect(attrs);\r\n };\r\n\r\n /**\r\n * @description: 查询库存组织\r\n * @param {*} name '渲染器属性'\r\n * @param {*} callback 回调函数\r\n * @return {*} 渲染组件\r\n */\r\n const renderInvOrg = (attrs?, methods?) => {\r\n const optionProps = {\r\n label: \"organizationName\",\r\n value: attrs?.field || \"id\",\r\n };\r\n const props = {\r\n fieldMap: {},\r\n extParam: attrs?.extParam,\r\n code: \"CUS008\",\r\n fetchField: \"organizationName\",\r\n };\r\n const fieldMap = {\r\n organizationId: \"id\",\r\n organizationCode: \"organizationCode\",\r\n };\r\n Object.assign(props.fieldMap, fieldMap, attrs?.fieldMap || {});\r\n return { name: \"#SuSelect\", props, optionProps, options: [], methods };\r\n };\r\n /**\r\n * @description: item input渲染器\r\n * @param {*} name 渲染器名称\r\n * @param {*} props 渲染的参数(请查看目标渲染的 Props)\r\n * @return {*} item 渲染器\r\n */\r\n const renderInput = (attrs?, methods?) => {\r\n const props = Object.assign({ disabled: false }, attrs);\r\n const defaultValue = props?.defaultValue;\r\n return {\r\n name: \"$input\",\r\n props,\r\n defaultValue,\r\n events: getEvents(methods),\r\n };\r\n };\r\n /**\r\n * @description: item input渲染器\r\n * @param {*} name 渲染器名称\r\n * @param {*} props 渲染的参数(请查看目标渲染的 Props)\r\n * @return {*} item 渲染器\r\n */\r\n const renderTextarea = (attrs?, methods?) => {\r\n const props = Object.assign({ disabled: false, rows: 3 }, attrs);\r\n const defaultValue = props?.defaultValue;\r\n return {\r\n name: \"$textarea\",\r\n props,\r\n defaultValue,\r\n events: getEvents(methods),\r\n };\r\n };\r\n /**\r\n * @description: checkbox\r\n * @param {*} attrs\r\n * @return {*} checkbox渲染器\r\n */\r\n const renderCheckBox = (attrs, methods) => {\r\n const name = \"$checkbox\";\r\n const { defaultValue, options, props } = commonProps(attrs);\r\n return { name, defaultValue, options, props, events: getEvents(methods) };\r\n };\r\n /**\r\n * @description: radio\r\n * @param {*} attrs\r\n * @param {*} methods 事件\r\n * @return {*} radio渲染器\r\n */\r\n const renderRadio = (attrs: string | IAttrs, methods) => {\r\n const name = \"$radio\";\r\n const { defaultValue, options, props } = commonProps(attrs);\r\n return { name, defaultValue, options, props, events: getEvents(methods) };\r\n };\r\n const commonProps = (attrs: string | IAttrs) => {\r\n let props = { disabled: false };\r\n let defaultValue;\r\n let code = \"\";\r\n if (isObject(attrs)) {\r\n defaultValue = attrs.defaultValue;\r\n props = Object.assign(props, attrs || {});\r\n } else if (isString(attrs)) {\r\n code = attrs;\r\n }\r\n const options = code\r\n ? dictData[code]?.children.map((m) => {\r\n return { label: m.dictName, value: m.dictCode };\r\n })\r\n : [];\r\n return { props, defaultValue, options };\r\n };\r\n /**\r\n * @description: 数值录入\r\n * @param {*} attrs 渲染的参数(请查看目标渲染的props)\r\n * @param {*} methods 渲染目标的events,\r\n * @return {*} editRender\r\n */\r\n const renderNumber = (attrs?, methods?) => {\r\n const events = getEvents(methods);\r\n const props = Object.assign(\r\n { type: \"number\", clearable: true, min: 0 },\r\n attrs || {}\r\n );\r\n\r\n return { name: \"$input\", props, events };\r\n };\r\n /**\r\n * @description: 时间日期\r\n * @param {*} attrs 渲染的参数(请查看目标渲染的props)\r\n * @param {*} methods 渲染目标的events,\r\n * @return {*} editRender\r\n */\r\n const renderDate = (attrs?, methods?) => {\r\n const events = getEvents(methods);\r\n const valueFormat = \"yyyy-MM-dd HH:mm:ss\";\r\n const defaultValue = attrs?.defaultValue;\r\n const prop = { type: \"date\", valueFormat, clearable: true };\r\n const props = Object.assign(prop, attrs || {});\r\n return { name: \"$input\", props, defaultValue, events };\r\n };\r\n /**\r\n * @description: 值集视图\r\n * @param {*} attrs 渲染的参数\r\n * @param {*} record 当前对象\r\n * @param {*} code 值集视图code\r\n * @param {*} field 字段\r\n * @param {*} displayName 显示label字段\r\n * @param {*} methods 渲染目标的events,\r\n * @return {*} editRender\r\n */\r\n const renderLov = (attrs, methods?) => {\r\n const events = getEvents(methods);\r\n const props = Object.assign({}, attrs || {});\r\n return { name: \"#lov\", props, events };\r\n };\r\n /**\r\n * @description: 本地下拉选择\r\n * @param {*} attrs 同ElSelect\r\n * @param {*} methods 事件, 默认为change事件\r\n * @return {*}\r\n */\r\n const renderSelectLocal = (attrs, methods?) => {\r\n const events = getEvents(methods);\r\n const optionProps = attrs?.optionProps || {};\r\n const props = Object.assign(\r\n { clearable: true, disabled: false },\r\n attrs || {}\r\n );\r\n return {\r\n name: \"#select\",\r\n optionProps,\r\n options: attrs?.options || [],\r\n props,\r\n events,\r\n };\r\n };\r\n /**\r\n * @description: 渲染成switch\r\n * @param {*} attrs 请查看目标渲染的props\r\n * @param {*} methods 请查看目标渲染的event\r\n * @return {*} switchRender\r\n */\r\n const renderSwitch = (attrs?: IAttrs, methods?) => {\r\n let props = {\r\n openLabel: \"是\",\r\n closeLabel: \"否\",\r\n openValue: \"Y\",\r\n closeValue: \"N\",\r\n };\r\n let defaultValue = \"Y\";\r\n if (isObject(attrs) && !isFunction(attrs)) {\r\n props = Object.assign(props, attrs || {});\r\n defaultValue = attrs.defaultValue || defaultValue;\r\n } else if (!isEmpty(attrs) && isString(attrs)) {\r\n defaultValue = attrs;\r\n props = Object.assign(props, { defaultValue });\r\n }\r\n const events = isFunction(attrs) ? getEvents(attrs) : getEvents(methods);\r\n return { name: \"$switch\", props, defaultValue, events };\r\n };\r\n /**\r\n * @description: 表格渲染el-tag组件\r\n * @param {*} code 数据字典code\r\n * @param {*} tagMap 渲染tag对应的type {1: 'success'}\r\n * @return {*} table cellRender\r\n */\r\n const renderCellTag = (code, tagMap) => {\r\n return { name: \"#tag\", props: { code, tagMap } };\r\n };\r\n /**\r\n * @description: cell渲染成el-switch\r\n * @param {*} attrs 请查看目标渲染的props\r\n * @param {*} methods 请查看目标渲染的event\r\n * @return {*} cellRender\r\n */\r\n const renderEnabled = (methods?) => {\r\n // let props = {};\r\n // if (isObject(attrs)) {\r\n // props = Object.assign(\r\n // { activeValue: \"1\", inactiveValue: \"0\" },\r\n // attrs || {}\r\n // );\r\n // } else if (isString(attrs)) {\r\n // props = Object.assign(\r\n // { activeValue: \"1\", inactiveValue: \"0\" },\r\n // { code: attrs }\r\n // );\r\n // }\r\n const props: IAttrs = {\r\n openLabel: \"启用\",\r\n closeLabel: \"禁用\",\r\n openValue: \"1\",\r\n closeValue: \"0\",\r\n defaultValue: \"1\",\r\n };\r\n return renderSwitch(props, methods);\r\n // return { name: \"#switch\", props, events };\r\n };\r\n\r\n const getEvents = (methods: IEvents | Fn) => {\r\n let events: any = {};\r\n if (isObject(methods) && !isFunction(methods)) {\r\n events = {\r\n change: methods.onChange,\r\n blur: methods?.onBlur,\r\n input: methods?.onInput,\r\n };\r\n } else if (methods) {\r\n events = { change: methods };\r\n }\r\n return events;\r\n };\r\n // 回调函数\r\n const callback = (e) => cb && cb(e);\r\n\r\n return {\r\n renderDict,\r\n renderSelect,\r\n renderInput,\r\n renderTextarea,\r\n renderCheckBox,\r\n renderRadio,\r\n renderUser,\r\n renderSysUser,\r\n renderInvOrg,\r\n renderNumber,\r\n renderLov,\r\n renderSelectLocal,\r\n renderDate,\r\n renderSwitch,\r\n renderCellTag,\r\n renderEnabled,\r\n };\r\n};\r\n","/*\r\n * @Author: wei.li\r\n * @Date: 2022-08-29 17:38:22\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-10-09 15:02:46\r\n * @Description: global\r\n */\r\nimport { getCurrentInstance, ComponentInternalInstance } from \"vue\";\r\n\r\nexport const useGlobal = () => {\r\n const instance = getCurrentInstance() as ComponentInternalInstance;\r\n if (!instance) return { $global: {}, $storage: {}, $config: {} };\r\n const $global = instance.appContext.app.config.globalProperties;\r\n\r\n const $storage = $global.$storage;\r\n\r\n const $config = $global.$config;\r\n\r\n const $serviceApi = $global.$serviceApi;\r\n\r\n const $hasAuthority = $global.$hasAuthority;\r\n\r\n const $printPlugin = $global.$printPlugin;\r\n return {\r\n $global,\r\n $storage,\r\n $config,\r\n $serviceApi,\r\n $hasAuthority,\r\n $printPlugin,\r\n };\r\n};\r\n","/*\r\n * @Author: wei.li\r\n * @Date: 2022-07-07 11:55:32\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-07-07 11:55:38\r\n * @Description: uuid\r\n */\r\nconst hexList: string[] = [];\r\nfor (let i = 0; i <= 15; i++) {\r\n hexList[i] = i.toString(16);\r\n}\r\n\r\nexport function buildUUID(): string {\r\n let uuid = \"\";\r\n for (let i = 1; i <= 36; i++) {\r\n if (i === 9 || i === 14 || i === 19 || i === 24) {\r\n uuid += \"-\";\r\n } else if (i === 15) {\r\n uuid += 4;\r\n } else if (i === 20) {\r\n uuid += hexList[(Math.random() * 4) | 8];\r\n } else {\r\n uuid += hexList[(Math.random() * 16) | 0];\r\n }\r\n }\r\n return uuid.replace(/-/g, \"\");\r\n}\r\n\r\nlet unique = 0;\r\nexport function buildShortUUID(prefix = \"\"): string {\r\n const time = Date.now();\r\n const random = Math.floor(Math.random() * 1000000000);\r\n unique++;\r\n return prefix + \"_\" + random + unique + String(time);\r\n}\r\n","/*\r\n * @Author: wei.li\r\n * @Date: 2022-07-07 15:16:41\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-07-07 15:16:54\r\n * @Description: file content\r\n */\r\n\r\ndeclare interface Fn<T = any, R = T> {\r\n (...arg: T[]): R;\r\n}\r\n\r\ninterface deviceInter {\r\n match: Fn;\r\n}\r\n\r\ninterface BrowserInter {\r\n browser: string;\r\n version: string;\r\n}\r\n\r\n// 检测设备类型(手机返回true,反之)\r\nexport const deviceDetection = () => {\r\n const sUserAgent: deviceInter = navigator.userAgent.toLowerCase();\r\n // const bIsIpad = sUserAgent.match(/ipad/i) == \"ipad\";\r\n const bIsIphoneOs = sUserAgent.match(/iphone os/i) === \"iphone os\";\r\n const bIsMidp = sUserAgent.match(/midp/i) === \"midp\";\r\n const bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) === \"rv:1.2.3.4\";\r\n const bIsUc = sUserAgent.match(/ucweb/i) === \"ucweb\";\r\n const bIsAndroid = sUserAgent.match(/android/i) === \"android\";\r\n const bIsCE = sUserAgent.match(/windows ce/i) === \"windows ce\";\r\n const bIsWM = sUserAgent.match(/windows mobile/i) === \"windows mobile\";\r\n return (\r\n bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM\r\n );\r\n};\r\n\r\n// 获取浏览器型号以及版本\r\nexport const getBrowserInfo = () => {\r\n const ua = navigator.userAgent.toLowerCase();\r\n const re = /(msie|firefox|chrome|opera|version).*?([\\d.]+)/;\r\n const m = ua.match(re)!;\r\n const Sys: BrowserInter = {\r\n browser: m[1].replace(/version/, \"'safari\"),\r\n version: m[2],\r\n };\r\n\r\n return Sys;\r\n};\r\n","/*\r\n * @Author: wei.li\r\n * @Date: 2022-07-09 10:18:16\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-10-09 16:37:12\r\n * @Description: 消息弹框\r\n */\r\nimport VXETable from \"vxe-table\";\r\nimport { useGlobal } from \"../useGlobal\";\r\n// 消息\r\nconst Message = (content: string, status, iconStatus: string): any => {\r\n return VXETable.modal.message({ content, status, iconStatus });\r\n};\r\n\r\n// 成功\r\nconst successMessage = (content: string): any => {\r\n if (!content) {\r\n // const { $global } = useGlobal();\r\n // content = $global!.$t.call($global!.$t.global, \"message.operateSuccess\");\r\n content = \"操作成功\";\r\n }\r\n return VXETable.modal?.message({ content, status: \"success\" });\r\n};\r\n\r\n// 警告\r\nconst warnMessage = (content: string): any => {\r\n return VXETable.modal?.message({ content, status: \"warning\" });\r\n};\r\n\r\n// 失败\r\nconst errorMessage = (content: string): any => {\r\n if (!content) {\r\n content = \"操作失败\";\r\n // const { $global } = useGlobal();\r\n // content = $global!.$t.call($global!.$t.global, \"message.operateFailed\");\r\n }\r\n return VXETable.modal?.message({ content, status: \"error\" });\r\n};\r\n\r\nexport { Message, successMessage, warnMessage, errorMessage };\r\n","/*\r\n * @Author: wei.li\r\n * @Date: 2022-09-21 09:17:22\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-10-11 10:01:09\r\n * @Description: col和item数据标准或\r\n */\r\n/**\r\n * @description: col数据国际化\r\n * @param {*} columns col\r\n * @return {*} 标准化后的col\r\n */\r\n\r\nimport { useRender } from \"./useRender\";\r\n\r\nconst renderHook = useRender();\r\n\r\nexport const i18nColums = (columns) => {\r\n return columns.map((m) => {\r\n if (m.type) return m;\r\n m.title = m.title || `message.${m.field}`;\r\n return m;\r\n });\r\n};\r\n\r\n/**\r\n * @description: form item数据标准化\r\n * @param {*} items item\r\n * @param {*} status 状态\r\n * @return {*} form item数据标准化后的数据\r\n */\r\nexport const formatItems = (items, status, span = 24) => {\r\n if (!items.length) return items;\r\n return items.map((item) => {\r\n item.title = item.title || `message.${item.field}`;\r\n item.span = item.span || span;\r\n const disabled =\r\n item.disabled || item.itemRender?.props?.disabled || status === \"detail\";\r\n let itemRender = { name: \"$input\", props: { disabled } };\r\n if (item.code && !item.itemRender) {\r\n itemRender = renderHook.renderDict(item.code);\r\n }\r\n item.itemRender = item.itemRender || itemRender;\r\n Object.assign(item.itemRender.props || {}, { disabled });\r\n return item;\r\n });\r\n};\r\n\r\nconst searchBtn: IFormItemProps = {\r\n span: 6,\r\n align: \"right\",\r\n collapseNode: false,\r\n itemRender: {\r\n name: \"$buttons\",\r\n children: [\r\n {\r\n props: {\r\n type: \"submit\",\r\n content: \"message.search\",\r\n status: \"primary\",\r\n icon: \"fa fa-search\",\r\n },\r\n },\r\n {\r\n props: {\r\n type: \"reset\",\r\n content: \"message.reset\",\r\n status: \"info\",\r\n icon: \"fa fa-refresh\",\r\n },\r\n },\r\n ],\r\n },\r\n};\r\n\r\n/**\r\n * @description: grid 查询item格式化\r\n * @param {*} array items\r\n * @return {*} items\r\n */\r\nexport const formatGridItems = (array) => {\r\n const formItems = array.filter((f) => !f.isHidden);\r\n const len = formItems.length;\r\n // 前3个存在时间范围 或者 存在span = 12\r\n const isDateRange =\r\n len > 2 &&\r\n formItems.some((f, idx) => idx < 3 && (f.span > 6 || getDateRange(f)));\r\n // 需要展示折叠按钮\r\n const isCollapse = isDateRange || len > 3;\r\n const items = formItems.map((item, idx) => {\r\n item.folding = isDateRange ? isCollapse && idx > 1 : isCollapse && idx > 2;\r\n item.span = getDateRange(item) ? 12 : item.span || 6;\r\n item.itemRender = item.itemRender || { name: \"$input\" };\r\n item.title = item.title || `message.${item.field}`;\r\n return item;\r\n });\r\n searchBtn.collapseNode = isCollapse;\r\n if (isCollapse) {\r\n // 按钮设置为\t折叠节点\r\n // 折叠时将搜索按钮插入到第一列的最后\r\n const idx = isDateRange ? 2 : 3;\r\n items.splice(idx, 0, searchBtn);\r\n } else {\r\n items.push(searchBtn);\r\n }\r\n return items;\r\n};\r\n\r\nconst getDateRange = (item) => {\r\n if (item.itemRender?.name === \"#SuDateRange\") {\r\n return (\r\n item.itemRender?.props?.type === \"daterange\" ||\r\n !item.itemRender?.props?.type\r\n );\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * @description: 标准化必填数据\r\n * @param {*} records 数据列表\r\n * @param {*} t i18n对象\r\n * @return {*} rule数据\r\n */\r\nexport const formatRules = (records, t) => {\r\n const rule = {};\r\n records.forEach((item) => {\r\n if (item.required) {\r\n const { field, title } = item;\r\n rule[field] = [\r\n {\r\n required: true,\r\n message: `${t(\"message.required\")}${\r\n title ? t(title) : t(`message.${field}`)\r\n }`,\r\n },\r\n ];\r\n }\r\n });\r\n return rule;\r\n};\r\n","/**\r\n * 提取菜单树中的每一项uniqueId\r\n * @param {Array} {menuTree 菜单树}\r\n * @param {return}} expandedPaths 每一项uniqueId组成的数组\r\n */\r\nconst expandedPaths: any = [];\r\nexport function extractPathList(menuTree) {\r\n if (!Array.isArray(menuTree)) {\r\n console.warn(\"menuTree must be an array\");\r\n return;\r\n }\r\n if (!menuTree || menuTree.length === 0) return;\r\n for (const node of menuTree) {\r\n const hasChildren = node.children && node.children.length > 0;\r\n if (hasChildren) {\r\n extractPathList(node.children);\r\n }\r\n expandedPaths.push(node.uniqueId);\r\n }\r\n return expandedPaths;\r\n}\r\n\r\n/**\r\n * 如果父级下children的length为1,删除children并自动组建唯一uniqueId\r\n * @param {Array} {menuTree 菜单树}\r\n * @param {Array} {pathList 每一项的id组成的数组}\r\n * @param {return}}\r\n */\r\nexport function deleteTreeChildren(menuTree, pathList = []) {\r\n if (!Array.isArray(menuTree)) {\r\n console.warn(\"menuTree must be an array\");\r\n return;\r\n }\r\n if (!menuTree || menuTree.length === 0) return;\r\n for (const [key, node] of menuTree.entries()) {\r\n if (node.children && node.children.length === 1) delete node.children;\r\n node.id = key;\r\n node.parentId = pathList.length ? pathList[pathList.length - 1] : null;\r\n node.pathList = [...pathList, node.id];\r\n node.uniqueId =\r\n node.pathList.length > 1 ? node.pathList.join(\"-\") : node.pathList[0];\r\n const hasChildren = node.children && node.children.length > 0;\r\n if (hasChildren) {\r\n deleteTreeChildren(node.children, node.pathList);\r\n }\r\n }\r\n return menuTree;\r\n}\r\n\r\n// 创建层级关系\r\nexport function buildHierarchyTree(menuTree, pathList = []) {\r\n if (!Array.isArray(menuTree)) {\r\n console.warn(\"menuTree must be an array\");\r\n return;\r\n }\r\n if (!menuTree || menuTree.length === 0) return;\r\n for (const [key, node] of menuTree.entries()) {\r\n node.id = key;\r\n node.parentId = pathList.length ? pathList[pathList.length - 1] : null;\r\n node.pathList = [...pathList, node.id];\r\n const hasChildren = node.children && node.children.length > 0;\r\n if (hasChildren) {\r\n buildHierarchyTree(node.children, node.pathList);\r\n }\r\n }\r\n return menuTree;\r\n}\r\n\r\n/**\r\n * 广度优先遍历算法,找当前节点\r\n * @param {Array} tree 原始树,数组\r\n * @param {Number|String} uniqueId 唯一uniqueId\r\n * @return {Object} node\r\n */\r\nexport function getNodeByUniqueId(menuTree, uniqueId) {\r\n if (!Array.isArray(menuTree)) {\r\n console.warn(\"menuTree must be an array\");\r\n return;\r\n }\r\n if (!menuTree || menuTree.length === 0) return;\r\n const item = menuTree.find((node) => node.uniqueId === uniqueId);\r\n if (item) return item;\r\n const childrenList = menuTree\r\n .filter((node) => node.children)\r\n .map((i) => i.children)\r\n .flat(1);\r\n return getNodeByUniqueId(childrenList, uniqueId);\r\n}\r\n\r\n/**\r\n * 向当前唯一uniqueId节点追加字段\r\n * @param {Array} {menuTree 菜单树}\r\n * @param {Number|String} uniqueId 唯一uniqueId\r\n * @param {Object} fields 唯一uniqueId\r\n * @return {menuTree} 追加字段后的树\r\n */\r\nexport function appendFieldByUniqueId(\r\n menuTree: Array<any>,\r\n uniqueId: Number | String,\r\n fields: Object\r\n) {\r\n if (!Array.isArray(menuTree)) {\r\n console.warn(\"menuTree must be an array\");\r\n return;\r\n }\r\n if (!menuTree || menuTree.length === 0) return {};\r\n for (const node of menuTree) {\r\n const hasChildren = node.children && node.children.length > 0;\r\n if (\r\n node.uniqueId === uniqueId &&\r\n Object.prototype.toString.call(fields) === \"[object Object]\"\r\n )\r\n Object.assign(node, fields);\r\n if (hasChildren) {\r\n appendFieldByUniqueId(node.children, uniqueId, fields);\r\n }\r\n }\r\n return menuTree;\r\n}\r\n","/*! typescript-cookie v1.0.3 | MIT */\nvar index = /*#__PURE__*/Object.freeze({\n __proto__: null\n});\n\nconst encodeName = (name) => encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\nconst encodeValue = (value) => {\n return encodeURIComponent(value).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g, decodeURIComponent);\n};\nconst decodeName = decodeURIComponent;\nconst decodeValue = (value) => {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent);\n};\n\nfunction stringifyAttributes(attributes) {\n // Copy incoming attributes as to not alter the original object..\n attributes = Object.assign({}, attributes);\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires != null) {\n attributes.expires = attributes.expires.toUTCString();\n }\n return (Object.entries(attributes)\n .filter(([key, value]) => value != null && value !== false)\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n .map(([key, value]) => value === true ? `; ${key}` : `; ${key}=${value.split(';')[0]}`)\n .join(''));\n}\nfunction get(name, decodeValue, decodeName) {\n const scan = /(?:^|; )([^=]*)=([^;]*)/g;\n const jar = {};\n let match;\n while ((match = scan.exec(document.cookie)) != null) {\n try {\n const found = decodeName(match[1]);\n jar[found] = decodeValue(match[2], found);\n if (name === found) {\n break;\n }\n }\n catch (e) { }\n }\n return name != null ? jar[name] : jar;\n}\nconst DEFAULT_CODEC = Object.freeze({\n decodeName: decodeName,\n decodeValue: decodeValue,\n encodeName: encodeName,\n encodeValue: encodeValue\n});\nconst DEFAULT_ATTRIBUTES = Object.freeze({\n path: '/'\n});\nfunction setCookie(name, value, attributes = DEFAULT_ATTRIBUTES, { encodeValue: encodeValue$1 = encodeValue, encodeName: encodeName$1 = encodeName } = {}) {\n return (document.cookie = `${encodeName$1(name)}=${encodeValue$1(value, name)}${stringifyAttributes(attributes)}`);\n}\nfunction getCookie(name, { decodeValue: decodeValue$1 = decodeValue, decodeName: decodeName$1 = decodeName } = {}) {\n return get(name, decodeValue$1, decodeName$1);\n}\nfunction getCookies({ decodeValue: decodeValue$1 = decodeValue, decodeName: decodeName$1 = decodeName } = {}) {\n return get(undefined, decodeValue$1, decodeName$1);\n}\nfunction removeCookie(name, attributes = DEFAULT_ATTRIBUTES) {\n setCookie(name, '', Object.assign({}, attributes, {\n expires: -1\n }));\n}\n\nfunction init(converter, defaultAttributes) {\n const api = {\n set: function (name, value, attributes) {\n return setCookie(name, value, Object.assign({}, this.attributes, attributes), {\n encodeValue: this.converter.write\n });\n },\n get: function (name) {\n if (arguments.length === 0) {\n return getCookies(this.converter.read);\n }\n if (name == null) {\n return;\n }\n return getCookie(name, this.converter.read);\n },\n remove: function (name, attributes) {\n removeCookie(name, Object.assign({}, this.attributes, attributes));\n },\n withAttributes: function (attributes) {\n return init(this.converter, Object.assign({}, this.attributes, attributes));\n },\n withConverter: function (converter) {\n return init(Object.assign({}, this.converter, converter), this.attributes);\n }\n };\n const config = {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n };\n return Object.create(api, config);\n}\nvar compat = init({ read: DEFAULT_CODEC.decodeValue, write: DEFAULT_CODEC.encodeValue }, DEFAULT_ATTRIBUTES);\n\nexport { compat as Cookies, DEFAULT_ATTRIBUTES, DEFAULT_CODEC, index as Types, getCookie, getCookies, removeCookie, setCookie };\n","/*\r\n * @Author: wei.li\r\n * @Date: 2022-06-29 15:52:03\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-07-09 14:01:45\r\n * @Description: file content\r\n */\r\n// import { merge } from 'xe-utils';\r\nimport { getCookie, setCookie, removeCookie } from \"typescript-cookie\";\r\n\r\nclass Cookies {\r\n constructor() {}\r\n /**\r\n * 存储 cookie 值\r\n * @param name\r\n * @param value\r\n * @param cookieSetting\r\n */\r\n set(name = \"default\", value = \"\") {\r\n setCookie(`${name}`, value);\r\n }\r\n /**\r\n * 拿到 cookie 值\r\n * @param name\r\n * @returns\r\n */\r\n get(name = \"default\") {\r\n return getCookie(`${name}`);\r\n }\r\n /**\r\n * 拿到 cookie 全部的值\r\n * @returns\r\n */\r\n getAll() {\r\n return getCookie(\"\");\r\n }\r\n /**\r\n * 删除 cookie\r\n * @param name\r\n */\r\n remove(name = \"default\") {\r\n removeCookie(`${name}`);\r\n }\r\n}\r\n\r\nexport const cookies = new Cookies();\r\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: require('./env/FormData')\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","module.exports = require('./lib/axios');","/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress\n * @license MIT */\n\n;(function(root, factory) {\n\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.NProgress = factory();\n }\n\n})(this, function() {\n var NProgress = {};\n\n NProgress.version = '0.2.0';\n\n var Settings = NProgress.settings = {\n minimum: 0.08,\n easing: 'ease',\n positionUsing: '',\n speed: 200,\n trickle: true,\n trickleRate: 0.02,\n trickleSpeed: 800,\n showSpinner: true,\n barSelector: '[role=\"bar\"]',\n spinnerSelector: '[role=\"spinner\"]',\n parent: 'body',\n template: '<div class=\"bar\" role=\"bar\"><div class=\"peg\"></div></div><div class=\"spinner\" role=\"spinner\"><div class=\"spinner-icon\"></div></div>'\n };\n\n /**\n * Updates configuration.\n *\n * NProgress.configure({\n * minimum: 0.1\n * });\n */\n NProgress.configure = function(options) {\n var key, value;\n for (key in options) {\n value = options[key];\n if (value !== undefined && options.hasOwnProperty(key)) Settings[key] = value;\n }\n\n return this;\n };\n\n /**\n * Last number.\n */\n\n NProgress.status = null;\n\n /**\n * Sets the progress bar status, where `n` is a number from `0.0` to `1.0`.\n *\n * NProgress.set(0.4);\n * NProgress.set(1.0);\n */\n\n NProgress.set = function(n) {\n var started = NProgress.isStarted();\n\n n = clamp(n, Settings.minimum, 1);\n NProgress.status = (n === 1 ? null : n);\n\n var progress = NProgress.render(!started),\n bar = progress.querySelector(Settings.barSelector),\n speed = Settings.speed,\n ease = Settings.easing;\n\n progress.offsetWidth; /* Repaint */\n\n queue(function(next) {\n // Set positionUsing if it hasn't already been set\n if (Settings.positionUsing === '') Settings.positionUsing = NProgress.getPositioningCSS();\n\n // Add transition\n css(bar, barPositionCSS(n, speed, ease));\n\n if (n === 1) {\n // Fade out\n css(progress, { \n transition: 'none', \n opacity: 1 \n });\n progress.offsetWidth; /* Repaint */\n\n setTimeout(function() {\n css(progress, { \n transition: 'all ' + speed + 'ms linear', \n opacity: 0 \n });\n setTimeout(function() {\n NProgress.remove();\n next();\n }, speed);\n }, speed);\n } else {\n setTimeout(next, speed);\n }\n });\n\n return this;\n };\n\n NProgress.isStarted = function() {\n return typeof NProgress.status === 'number';\n };\n\n /**\n * Shows the progress bar.\n * This is the same as setting the status to 0%, except that it doesn't go backwards.\n *\n * NProgress.start();\n *\n */\n NProgress.start = function() {\n if (!NProgress.status) NProgress.set(0);\n\n var work = function() {\n setTimeout(function() {\n if (!NProgress.status) return;\n NProgress.trickle();\n work();\n }, Settings.trickleSpeed);\n };\n\n if (Settings.trickle) work();\n\n return this;\n };\n\n /**\n * Hides the progress bar.\n * This is the *sort of* the same as setting the status to 100%, with the\n * difference being `done()` makes some placebo effect of some realistic motion.\n *\n * NProgress.done();\n *\n * If `true` is passed, it will show the progress bar even if its hidden.\n *\n * NProgress.done(true);\n */\n\n NProgress.done = function(force) {\n if (!force && !NProgress.status) return this;\n\n return NProgress.inc(0.3 + 0.5 * Math.random()).set(1);\n };\n\n /**\n * Increments by a random amount.\n */\n\n NProgress.inc = function(amount) {\n var n = NProgress.status;\n\n if (!n) {\n return NProgress.start();\n } else {\n if (typeof amount !== 'number') {\n amount = (1 - n) * clamp(Math.random() * n, 0.1, 0.95);\n }\n\n n = clamp(n + amount, 0, 0.994);\n return NProgress.set(n);\n }\n };\n\n NProgress.trickle = function() {\n return NProgress.inc(Math.random() * Settings.trickleRate);\n };\n\n /**\n * Waits for all supplied jQuery promises and\n * increases the progress as the promises resolve.\n *\n * @param $promise jQUery Promise\n */\n (function() {\n var initial = 0, current = 0;\n\n NProgress.promise = function($promise) {\n if (!$promise || $promise.state() === \"resolved\") {\n return this;\n }\n\n if (current === 0) {\n NProgress.start();\n }\n\n initial++;\n current++;\n\n $promise.always(function() {\n current--;\n if (current === 0) {\n initial = 0;\n NProgress.done();\n } else {\n NProgress.set((initial - current) / initial);\n }\n });\n\n return this;\n };\n\n })();\n\n /**\n * (Internal) renders the progress bar markup based on the `template`\n * setting.\n */\n\n NProgress.render = function(fromStart) {\n if (NProgress.isRendered()) return document.getElementById('nprogress');\n\n addClass(document.documentElement, 'nprogress-busy');\n \n var progress = document.createElement('div');\n progress.id = 'nprogress';\n progress.innerHTML = Settings.template;\n\n var bar = progress.querySelector(Settings.barSelector),\n perc = fromStart ? '-100' : toBarPerc(NProgress.status || 0),\n parent = document.querySelector(Settings.parent),\n spinner;\n \n css(bar, {\n transition: 'all 0 linear',\n transform: 'translate3d(' + perc + '%,0,0)'\n });\n\n if (!Settings.showSpinner) {\n spinner = progress.querySelector(Settings.spinnerSelector);\n spinner && removeElement(spinner);\n }\n\n if (parent != document.body) {\n addClass(parent, 'nprogress-custom-parent');\n }\n\n parent.appendChild(progress);\n return progress;\n };\n\n /**\n * Removes the element. Opposite of render().\n */\n\n NProgress.remove = function() {\n removeClass(document.documentElement, 'nprogress-busy');\n removeClass(document.querySelector(Settings.parent), 'nprogress-custom-parent');\n var progress = document.getElementById('nprogress');\n progress && removeElement(progress);\n };\n\n /**\n * Checks if the progress bar is rendered.\n */\n\n NProgress.isRendered = function() {\n return !!document.getElementById('nprogress');\n };\n\n /**\n * Determine which positioning CSS rule to use.\n */\n\n NProgress.getPositioningCSS = function() {\n // Sniff on document.body.style\n var bodyStyle = document.body.style;\n\n // Sniff prefixes\n var vendorPrefix = ('WebkitTransform' in bodyStyle) ? 'Webkit' :\n ('MozTransform' in bodyStyle) ? 'Moz' :\n ('msTransform' in bodyStyle) ? 'ms' :\n ('OTransform' in bodyStyle) ? 'O' : '';\n\n if (vendorPrefix + 'Perspective' in bodyStyle) {\n // Modern browsers with 3D support, e.g. Webkit, IE10\n return 'translate3d';\n } else if (vendorPrefix + 'Transform' in bodyStyle) {\n // Browsers without 3D support, e.g. IE9\n return 'translate';\n } else {\n // Browsers without translate() support, e.g. IE7-8\n return 'margin';\n }\n };\n\n /**\n * Helpers\n */\n\n function clamp(n, min, max) {\n if (n < min) return min;\n if (n > max) return max;\n return n;\n }\n\n /**\n * (Internal) converts a percentage (`0..1`) to a bar translateX\n * percentage (`-100%..0%`).\n */\n\n function toBarPerc(n) {\n return (-1 + n) * 100;\n }\n\n\n /**\n * (Internal) returns the correct CSS for changing the bar's\n * position given an n percentage, and speed and ease from Settings\n */\n\n function barPositionCSS(n, speed, ease) {\n var barCSS;\n\n if (Settings.positionUsing === 'translate3d') {\n barCSS = { transform: 'translate3d('+toBarPerc(n)+'%,0,0)' };\n } else if (Settings.positionUsing === 'translate') {\n barCSS = { transform: 'translate('+toBarPerc(n)+'%,0)' };\n } else {\n barCSS = { 'margin-left': toBarPerc(n)+'%' };\n }\n\n barCSS.transition = 'all '+speed+'ms '+ease;\n\n return barCSS;\n }\n\n /**\n * (Internal) Queues a function to be executed.\n */\n\n var queue = (function() {\n var pending = [];\n \n function next() {\n var fn = pending.shift();\n if (fn) {\n fn(next);\n }\n }\n\n return function(fn) {\n pending.push(fn);\n if (pending.length == 1) next();\n };\n })();\n\n /**\n * (Internal) Applies css properties to an element, similar to the jQuery \n * css method.\n *\n * While this helper does assist with vendor prefixed property names, it \n * does not perform any manipulation of values prior to setting styles.\n */\n\n var css = (function() {\n var cssPrefixes = [ 'Webkit', 'O', 'Moz', 'ms' ],\n cssProps = {};\n\n function camelCase(string) {\n return string.replace(/^-ms-/, 'ms-').replace(/-([\\da-z])/gi, function(match, letter) {\n return letter.toUpperCase();\n });\n }\n\n function getVendorProp(name) {\n var style = document.body.style;\n if (name in style) return name;\n\n var i = cssPrefixes.length,\n capName = name.charAt(0).toUpperCase() + name.slice(1),\n vendorName;\n while (i--) {\n vendorName = cssPrefixes[i] + capName;\n if (vendorName in style) return vendorName;\n }\n\n return name;\n }\n\n function getStyleProp(name) {\n name = camelCase(name);\n return cssProps[name] || (cssProps[name] = getVendorProp(name));\n }\n\n function applyCss(element, prop, value) {\n prop = getStyleProp(prop);\n element.style[prop] = value;\n }\n\n return function(element, properties) {\n var args = arguments,\n prop, \n value;\n\n if (args.length == 2) {\n for (prop in properties) {\n value = properties[prop];\n if (value !== undefined && properties.hasOwnProperty(prop)) applyCss(element, prop, value);\n }\n } else {\n applyCss(element, args[1], args[2]);\n }\n }\n })();\n\n /**\n * (Internal) Determines if an element or space separated list of class names contains a class name.\n */\n\n function hasClass(element, name) {\n var list = typeof element == 'string' ? element : classList(element);\n return list.indexOf(' ' + name + ' ') >= 0;\n }\n\n /**\n * (Internal) Adds a class to an element.\n */\n\n function addClass(element, name) {\n var oldList = classList(element),\n newList = oldList + name;\n\n if (hasClass(oldList, name)) return; \n\n // Trim the opening space.\n element.className = newList.substring(1);\n }\n\n /**\n * (Internal) Removes a class from an element.\n */\n\n function removeClass(element, name) {\n var oldList = classList(element),\n newList;\n\n if (!hasClass(element, name)) return;\n\n // Replace the class name.\n newList = oldList.replace(' ' + name + ' ', ' ');\n\n // Trim the opening and closing spaces.\n element.className = newList.substring(1, newList.length - 1);\n }\n\n /**\n * (Internal) Gets a space separated list of the class names on the element. \n * The list is wrapped with a single space on each end to facilitate finding \n * matches within the list.\n */\n\n function classList(element) {\n return (' ' + (element.className || '') + ' ').replace(/\\s+/gi, ' ');\n }\n\n /**\n * (Internal) Removes an element from the DOM.\n */\n\n function removeElement(element) {\n element && element.parentNode && element.parentNode.removeChild(element);\n }\n\n return NProgress;\n});\n\n","/*\r\n * @Author: wei.li\r\n * @Date: 2022-07-09 14:04:31\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-07-12 10:58:44\r\n * @Description: file content\r\n */\r\nimport NProgress from \"nprogress\";\r\n\r\nNProgress.configure({\r\n // 动画方式\r\n easing: \"ease\",\r\n // 递增进度条的速度\r\n speed: 500,\r\n // 是否显示加载ico\r\n showSpinner: false,\r\n // 自动递增间隔\r\n trickleSpeed: 200,\r\n // 初始化时的最小百分比\r\n minimum: 0.3,\r\n});\r\n\r\nexport default NProgress;\r\n","import Axios, { AxiosInstance, AxiosRequestConfig } from \"axios\";\r\nimport {\r\n SuHttpError,\r\n RequestMethods,\r\n SuHttpResponse,\r\n SuHttpRequestConfig,\r\n} from \"./types.d\";\r\nimport NProgress from \"../progress\";\r\nimport { cookies } from \"../storage/cookie\";\r\nimport { errorMessage } from \"../message\";\r\nconst defaultConfig: AxiosRequestConfig = {\r\n timeout: 30000,\r\n headers: {\r\n Accept: \"application/json, text/plain, */*\",\r\n \"Content-Type\": \"application/json\",\r\n \"X-Requested-With\": \"XMLHttpRequest\",\r\n },\r\n};\r\nclass SuHttp {\r\n constructor() {\r\n this.httpInterceptorsRequest();\r\n this.httpInterceptorsResponse();\r\n }\r\n router = undefined;\r\n setRouter(router) {\r\n this.router = router;\r\n }\r\n // 初始化配置对象\r\n private static initConfig: SuHttpRequestConfig = {};\r\n\r\n // 保存当前Axios实例对象\r\n private static axiosInstance: AxiosInstance = Axios.create(defaultConfig);\r\n\r\n // 请求拦截\r\n private httpInterceptorsRequest(): void {\r\n SuHttp.axiosInstance.interceptors.request.use(\r\n (config: SuHttpRequestConfig) => {\r\n const $config = config!;\r\n // 开启进度条动画\r\n NProgress.start();\r\n // 优先判断post/get等方法是否传入回掉,否则执行初始化设置等回掉\r\n if (typeof config.beforeRequestCallback === \"function\") {\r\n config.beforeRequestCallback($config);\r\n return $config;\r\n }\r\n if (SuHttp.initConfig.beforeRequestCallback) {\r\n SuHttp.initConfig.beforeRequestCallback($config);\r\n return $config;\r\n }\r\n const sessionKey = cookies.get(\"kCookies_token\") as string;\r\n $config.headers![\"X-Token\"] = sessionKey;\r\n return $config;\r\n },\r\n (error) => {\r\n return Promise.reject(error);\r\n }\r\n );\r\n }\r\n\r\n // 响应拦截\r\n private httpInterceptorsResponse(): void {\r\n const instance = SuHttp.axiosInstance;\r\n instance.interceptors.response.use(\r\n (response: SuHttpResponse) => {\r\n const $config = response.config;\r\n // 关闭进度条动画\r\n NProgress.done();\r\n // 优先判断post/get等方法是否传入回掉,否则执行初始化设置等回掉\r\n if (typeof $config.beforeResponseCallback === \"function\") {\r\n $config.beforeResponseCallback(response);\r\n return response.data;\r\n }\r\n if (SuHttp.initConfig.beforeResponseCallback) {\r\n SuHttp.initConfig.beforeResponseCallback(response);\r\n return response.data;\r\n }\r\n return response.data;\r\n },\r\n (error: SuHttpError) => {\r\n const $error = error;\r\n $error.isCancelRequest = Axios.isCancel($error);\r\n // 关闭进度条动画\r\n NProgress.done();\r\n // 所有的响应异常 区分来源为取消请求/非取消请求\r\n return Promise.reject($error);\r\n }\r\n );\r\n }\r\n\r\n private transformConfigByMethod(\r\n params: any,\r\n config: SuHttpRequestConfig\r\n ): SuHttpRequestConfig {\r\n const { method } = config;\r\n const methods = [\"get\"];\r\n const m = method!.toLocaleLowerCase();\r\n const props = methods.includes(m) ? \"params\" : \"data\";\r\n return {\r\n ...config,\r\n [props]: params,\r\n };\r\n }\r\n\r\n // 通用请求工具函数\r\n public request<T>(\r\n method: RequestMethods,\r\n url: string,\r\n param?: AxiosRequestConfig,\r\n axiosConfig?: SuHttpRequestConfig\r\n ): Promise<T> {\r\n const config = this.transformConfigByMethod(param, {\r\n method,\r\n url,\r\n ...axiosConfig,\r\n } as SuHttpRequestConfig);\r\n // 单独处理自定义请求/响应回掉\r\n return new Promise((resolve, reject) => {\r\n SuHttp.axiosInstance\r\n .request(config)\r\n .then((res: any) => {\r\n if (res && res?.code === \"0\") {\r\n resolve(res.data);\r\n } else if (res.access_token) {\r\n resolve(res);\r\n } else {\r\n const msg = res?.msg || \"服务异常\";\r\n errorMessage(msg);\r\n const code = res.code;\r\n if (\r\n code === \"000001\" ||\r\n (code === \"-1\" && msg.includes(\"请重新登陆\"))\r\n ) {\r\n // session过期\r\n cookies.remove(\"kCookies_token\");\r\n // @ts-ignore\r\n this.router?.push({\r\n path: \"/login\",\r\n query: { tokenExpire: \"Y\" },\r\n });\r\n }\r\n reject(msg);\r\n }\r\n resolve(res);\r\n })\r\n .catch((e) => {\r\n if (e?.message?.includes(\"500\") || e.code === \"ERR_BAD_RESPONSE\") {\r\n // @ts-ignore\r\n this.router?.push(\"/error/500\");\r\n } else if (e.code === \"ERR_BAD_REQUEST\") {\r\n errorMessage(e.message);\r\n }\r\n reject(e);\r\n });\r\n });\r\n }\r\n\r\n // 单独抽离的post工具函数\r\n public post<T, P>(\r\n url: string,\r\n params?: any,\r\n config?: SuHttpRequestConfig\r\n ): Promise<P> {\r\n return this.request<P>(\"post\", url, params, config);\r\n }\r\n\r\n // 单独抽离的delete工具函数\r\n public delete<T, P>(\r\n url: string,\r\n params?: any,\r\n config?: SuHttpRequestConfig\r\n ): Promise<P> {\r\n return this.request<P>(\"delete\", url, params, config);\r\n }\r\n\r\n // 单独抽离的put工具函数\r\n public put<T, P>(\r\n url: string,\r\n params?: any,\r\n config?: SuHttpRequestConfig\r\n ): Promise<P> {\r\n return this.request<P>(\"put\", url, params, config);\r\n }\r\n\r\n // 单独抽离的get工具函数\r\n public get<T, P>(\r\n url: string,\r\n params?: any,\r\n config?: SuHttpRequestConfig\r\n ): Promise<P> {\r\n return this.request<P>(\"get\", url, params, config);\r\n }\r\n\r\n public postRouter<T>(params?: any): Promise<T> {\r\n return this.request<T>(\"post\", \"route/service\", params);\r\n }\r\n}\r\n\r\nexport const http = new SuHttp();\r\n","/*\r\n * @Author: wei.li\r\n * @Date: 2022-06-30 10:12:41\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-10-14 15:55:22\r\n * @Description: file content\r\n */\r\n// @ts-ignore\r\n\r\nexport { VxetableRender } from \"./render.tsx\";\r\nexport { useWatermark } from \"./useWatermark\";\r\nexport { useAttrs } from \"./useAttrs\";\r\nexport { useRender } from \"./useRender\";\r\nexport { useGlobal } from \"./useGlobal\";\r\n\r\nexport { addResizeListener, removeResizeListener } from \"./resize\";\r\nexport { buildUUID, buildShortUUID } from \"./uuid\";\r\nexport { getBrowserInfo, deviceDetection } from \"./device\";\r\nexport { Message, warnMessage, successMessage, errorMessage } from \"./message\";\r\nexport {\r\n i18nColums,\r\n formatItems,\r\n formatGridItems,\r\n formatRules,\r\n} from \"./formatData\";\r\nexport {\r\n extractPathList,\r\n buildHierarchyTree,\r\n getNodeByUniqueId,\r\n appendFieldByUniqueId,\r\n deleteTreeChildren,\r\n} from \"./useTree\";\r\nexport { cookies } from \"./storage/cookie\";\r\nexport { storageSession, storageLocal } from \"./storage\";\r\nexport { http } from \"./http\";\r\n\r\nimport { ref } from \"vue\";\r\n\r\nexport {\r\n openLink,\r\n toggleClass,\r\n removeClass,\r\n addClass,\r\n hasClass,\r\n} from \"./element\";\r\n\r\nimport NProgress from \"./progress\";\r\nimport type { App, Plugin } from \"vue\";\r\n\r\nconst withInstall = <T>(component) => {\r\n const comp = component as any;\r\n comp.install = (app: App) => {\r\n app.component(comp.name, component);\r\n };\r\n return component as T & Plugin;\r\n};\r\n\r\nfunction sleep(timer = 64) {\r\n return new Promise((resolve) => {\r\n const time = setTimeout(() => {\r\n window.clearTimeout(time);\r\n resolve(timer);\r\n }, timer);\r\n });\r\n}\r\n\r\nexport const delay = (timeout: number) =>\r\n new Promise((resolve) => setTimeout(resolve, timeout));\r\n\r\nexport { withInstall, sleep, NProgress };\r\n\r\nexport const useDark = () => {\r\n const isDark = ref(document.documentElement.classList.contains(\"dark\"));\r\n return { isDark };\r\n};\r\n\r\n// 防抖函数\r\nexport const useDebounce = (fn: () => Fn, timeout: number) => {\r\n let timmer: TimeoutHandle;\r\n return () => {\r\n timmer ? clearTimeout(timmer) : null;\r\n timmer = setTimeout(fn, timeout);\r\n };\r\n};\r\n\r\nexport function isUrl<T>(path: T): boolean {\r\n const reg =\r\n /(((^http(s)?:(?:\\/\\/)?)(?:[-;:&=\\+\\$,\\w]+@)?[A-Za-z0-9.-]+(?::\\d+)?|(?:www.|[-;:&=\\+\\$,\\w]+@)[A-Za-z0-9.-]+)((?:\\/[\\+~%\\/.\\w-_]*)?\\??(?:[-\\+=&;%@.\\w_]*)#?(?:[\\w]*))?)$/;\r\n // @ts-expect-error\r\n return reg.test(path);\r\n}\r\n"],"names":["VxetableRender","VXETable","serviceApi","dict","i18n","renderer","add","renderEdit","renderOpts","params","row","column","options","props","optionProps","events","label","value","extLabel","code","fetchField","extParam","loading","multiple","defaultValue","keys","Object","forEach","key","field","isArray","split","ff","some","s","push","query","param","assign","pageSize","pageNum","res","length","list","val","fieldMap","item","find","option","values","idx","change","clear","remoteMethod","_createVNode","_resolveComponent","_mergeProps","onFocus","v","onChange","onClear","map","renderCell","textValue","eval","join","renderItemContent","data","property","type","opt","defaultValues","parm","mapField","record","displayField","displayName","isMulti","reduce","curv","prev","obj","isEmpty","f","renderDefault","tagMap","getTagType","getValue","activeValue","inactiveValue","children","dictCode","dictName","ResizeObserver","ref","unref","shallowRef","isUndefined","getCurrentInstance","onBeforeUnmount","reactive","watchEffect","isObject","isString","isFunction","cookies","bind","require$$0","utils","buildURL","InterceptorManager","normalizeHeaderName","AxiosError","toFormData","isAbsoluteURL","combineURLs","require$$1","buildFullPath","require$$2","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","defaults","transformData","isCancel","dispatchRequest","mergeConfig","validators","validator","Axios","require$$11","require$$12","axiosModule","this"],"mappings":"knBAaaA,KAAAA,gBAAiB,CAACC,SAAU,CAACC,WAAYC,KAAMC,QAAU,CAEpEH,SAASI,SAASC,IAAI,YAAa,CACjCC,WAAWC,EAA2CC,EAAQ,CAAA,GAAA,GAC5D,KAAM,CAAEC,MAAKC,UAAWF,EAClB,CAAEG,UAASC,QAAOC,cAAc,CAAhC,EAAoCC,UAAWP,EAE/C,CAAEQ,QAAQ,QAASC,QAAQ,QAASC,YAAaJ,EACjD,CAAEK,OAAMC,aAAYC,WAAW,CAA/B,EAAmCC,UAAU,GAAOC,WAAUC,gBAAiBX,EACrF,AAAIW,GAEFC,AADaC,OAAOD,KAAKD,CAAZ,EACRG,QAAQC,GAAO,CAClBlB,EAAIkB,GAAOlB,EAAIkB,IAAQJ,EAAaI,GADtC,EAIEL,GAAYb,EAAIC,EAAOkB,QACzB,CAACC,QAAO,QAACpB,EAAIC,EAAOkB,MAAZ,GACNnB,EAAIC,EAAOkB,OAAOE,MAAM,GAAxB,EAA6BJ,QAAQK,GAAM,CAEzC,CADepB,EAAQqB,KAAKC,GAAKA,EAAElB,KAAWgB,CAA/B,GACJpB,EAAQuB,KAAK,CAAE,CAAClB,GAAQe,EAAI,CAAChB,GAAQgB,CAAxB,CAAb,CACZ,CAHD,EASJ,iBAA4BI,EAAO,CACjC,KAAMC,GAAQX,OAAOY,OAAO,GAAI,CAAEC,SAAU,GAAIC,QAAS,CAA3C,EAAgDnB,EAAU,CACtE,CAACD,GAAcJ,GAAQoB,CAD+C,CAA1D,EAGd,GAAIK,GACJ,GAAI,CACF7B,EAAQ8B,OAAS,EACjB7B,EAAMS,QAAU,GAChBmB,EAAM,KAAMvC,YAAWiB,EAAMkB,CAAP,EAClBI,GACFA,GAAIE,KAAO/B,EAAQuB,KAAK,GAAGM,EAAIE,IAApB,EAA4B/B,EAAQuB,KAAK,GAAGM,CAAhB,EAE1C,QAAS,CACR5B,EAAMS,QAAU,EACjB,CACF,CAMD,WAAkBsB,EAAK,CACrB,KAAM,CAAEC,WAAW,CAAA,GAAOhC,EACpBiC,EAAOF,GAAOhC,EAAQmC,KAAKC,GAAUJ,IAAQI,EAAO/B,EAAtC,EACdQ,EAAOC,OAAOD,KAAKoB,CAAZ,EACb,GAAIpB,EAAKiB,OAAQ,CACf,KAAMO,GAAmBvB,OAAOuB,OAAOJ,CAAd,EACzBpB,EAAKE,QAAQ,CAACC,EAAKsB,IAAQ,CACzBxC,EAAIkB,GAAOgB,EAAME,EAAKG,EAAOC,IAAQ,GADvC,CAGD,CACDnC,WAAQoC,QAAUpC,EAAOoC,OAAO1C,EAAQmC,EAAKE,EAAMnC,EAAOkB,KAAxC,CACnB,CAKD,YAAmB,CACjBd,WAAQqC,OAASrC,EAAOqC,MAAM,CAAE1C,MAAKmB,MAAOlB,EAAOkB,KAArB,CAAb,CAClB,CAED,YAAmB,CACjB,CAACjB,EAAQ8B,QAAUW,EAAa,EAAD,CAChC,CAED,MAAO,CAAAC,IAAAA,YAAAC,IAAAA,iBAAA,WAAA,EAAAC,IAAAA,WAAA,CAAA,WAEM9C,EAAIC,EAAOkB,OAFjB,sBAAA,GAEMnB,EAAIC,EAAOkB,OAFjB,CAAA,EAGChB,EAHD,CAAA,WAAA,GAAA,OAAA,GAAA,UAAA,GAAA,KAOE,QAPF,YAQS,mDART,MASG,cATH,gBAUYwC,EAVZ,QAWM/B,EAXN,QAYM,IAAMmC,EAZZ,EAAA,SAaOC,GAAKC,EAASD,CAAD,EAbpB,QAcM,IAAME,EAAO,CAdnB,CAAA,EAAA,QAAA,EAgBFhD,EAAQiD,IAAIf,GACXQ,IAAA,YAAAC,qBAAA,WAAA,EAAA,CAAA,IACkBT,EAAK7B,GADvB,MACsC6B,EAAK9B,GAD3C,MAC0D8B,EAAK7B,EAD/D,EAAA,CAAA,QAAA,IAAA,CAAAqC,IAAA,YAAA,OAAA,CAAA,MAEgB,aAFhB,EAAA,CAGOR,EAAK5B,GAAa,GAAE4B,EAAK7B,MAAU6B,EAAK5B,KAAc4B,EAAK7B,EAHlE,CAKKA,EAAAA,IAAUD,GAAS,CAAC8B,EAAK5B,GAAzBoC,IAAA,YAAA,OAAA,CAAA,MACa,oBADb,EAAA,CACmCR,EAAK9B,EADxC,GAEG,IAPR,CAAA,CAAA,CADD,CAhBE,EAAA,EAAA,CAAA,QAAA,IAAA,CAAA,CAAA,CAAP,CAAA,CAAA,CArE+B,EAqGjC8C,WAAWtD,WAAYC,OAAQ,CAC7B,KAAM,CAAEC,IAAKC,QAAWF,OAClB,CAAEI,OAAUL,WACZ,CAAEuD,UAAWxC,UAAaV,MAChC,GAAI+B,KAAMlC,IAAIC,OAAOkB,OACrB,MAAIkC,YACFnB,KAAMoB,KAAM,OAAMD,WAAR,GAAwBrD,IAAIC,OAAOkB,QAE3Ce,KAAOrB,UAAYO,QAAO,QAACc,GAAD,GAC5BA,KAAMA,KAAOA,IAAIqB,KAAK,GAAT,GAER,CAAAX,IAAA,YAAA,OAAA,KAAA,CAAQV,GAAR,CAAP,CAAA,CAhH+B,EAkHjCsB,kBAAkB1D,EAAmCC,EAAqC,CAAA,GAAA,GACxF,KAAM,CAAE0D,OAAMC,YAAa3D,EACrB,CAAEG,UAASC,QAAOC,cAAc,CAAhC,EAAoCC,UAAWP,EAE/C,CAAEQ,QAAQ,QAASC,QAAQ,QAASC,YAAaJ,EACjD,CAAEK,OAAMC,aAAYC,WAAW,CAA/B,EAAmCC,UAAU,IAAUT,EAK7D,iBAA4BuB,EAAO,CACjC,KAAMC,GAAQX,OAAOY,OAAO,GAAI,CAAEC,SAAU,GAAIC,QAAS,CAA3C,EAAgDnB,EAAU,CAAE,CAACD,GAAagB,CAAhB,CAA1D,EACd,GAAIK,GACJ,GAAI,CACF7B,EAAQ8B,OAAS,EACjB7B,EAAMS,QAAU,GAChBmB,EAAM,KAAMvC,YAAWiB,EAAMkB,CAAP,EACtB,AAAII,WAAKE,KACP/B,EAAQuB,KAAK,GAAGM,EAAIE,IAApB,EACSF,GACT7B,EAAQuB,KAAK,GAAGM,CAAhB,CAEH,QAAS,CACR5B,EAAMS,QAAU,EACjB,CACF,CAMD,WAAkBsB,EAAK,CACrB,KAAM,CAAEC,WAAW,CAAA,GAAOhC,EACpBiC,EAAOlC,EAAQmC,KAAKC,GAAUJ,IAAQI,EAAO/B,EAAtC,EACPQ,EAAOC,OAAOD,KAAKoB,CAAZ,EACb,GAAIpB,EAAKiB,OAAQ,CACf,KAAMO,GAAmBvB,OAAOuB,OAAOJ,CAAd,EACzBpB,EAAKE,QAAQ,CAACC,EAAKsB,IAAQ,CACzBiB,EAAKvC,GAAOgB,EAAME,EAAKG,EAAOC,IAAQ,GADxC,CAGD,CACDnC,WAAQoC,QAAUpC,EAAOoC,OAAOP,EAAKE,EAAMqB,EAAMC,CAA/B,CACnB,CAKD,YAAmB,CACjBrD,WAAQqC,OAASrC,EAAOqC,MAAM,CAAEe,OAAMtC,MAAOuC,CAAf,CAAb,CAClB,CAED,YAAmB,CACjB,CAACxD,EAAQ8B,QAAUW,EAAa,EAAD,CAChC,CAED,MAAO,CAAAC,IAAAA,YAAAC,IAAAA,iBAAA,WAAA,EAAAC,IAAAA,WAAA,CAAA,WAEMW,EAAKC,GAFX,sBAEMD,GAAAA,EAAKC,GAFX,CAAA,EAGCvD,EAHD,CAAA,WAAA,GAAA,OAAA,GAAA,UAAA,GAAA,KAOE,QAPF,MAQG,cARH,YASS,mDATT,gBAUYwC,EAVZ,QAWM/B,EAXN,QAYM,IAAMmC,EAZZ,EAAA,SAaOC,GAAKC,EAASD,CAAD,EAbpB,QAcM,IAAME,EAAO,CAdnB,CAAA,EAAA,QAAA,EAgBFhD,EAAQiD,IAAIf,GACXQ,IAAA,YAAAC,qBAAA,WAAA,EAAA,CAAA,IACkBT,EAAK7B,GADvB,MACsC6B,EAAK9B,GAD3C,MAC0D8B,EAAK7B,EAD/D,EAAA,CAAA,QAAA,IAAA,CAAAqC,IAAA,YAAA,OAAA,CAAA,MAEgB,aAFhB,EAAA,CAGOR,EAAK5B,GAAa,GAAE4B,EAAK7B,MAAU6B,EAAK5B,KAAc4B,EAAK7B,EAHlE,CAKKA,EAAAA,IAAUD,GAAS,CAAC8B,EAAK5B,GAAzBoC,IAAA,YAAA,OAAA,CAAA,MACa,oBADb,EAAA,CACmCR,EAAK9B,EADxC,GAEG,IAPR,CAAA,CAAA,CADD,CAhBE,EAAA,EAAA,CAAA,QAAA,IAAA,CAAA,CAAA,CAAP,CAAA,CAAA,CA8BD,CAvMgC,CAAnC,EA2MAf,SAASI,SAASC,IAAI,eAAgB,CACpC4D,kBAAkB1D,EAAmCC,EAAqC,CACxF,KAAM,CAAE0D,OAAMC,YAAa3D,EACrB,CAAEI,SAAUL,EAClB,MAAO,CAAA8C,IAAA,YAAAC,qBAAA,gBAAA,EAAA,CAAA,WAEMY,EAAKC,GAFX,sBAEMD,GAAAA,EAAKC,GAFX,EAAA,KAGGvD,kBAAOwD,OAAQ,YAHlB,KAIE,QAJF,MAKG,cALH,kBAMcjE,KAAK,aAAc,EAAf,EANlB,oBAOgBA,KAAK,oBAAqB,EAAtB,EAPpB,kBAQcA,KAAK,kBAAmB,EAApB,GARzB,IAAA,CAAA,CAWD,EAfH,EAkBAH,SAASI,SAASC,IAAI,UAAW,CAC/BC,WAAWC,EAA2CC,EAAQ,CAAA,GAAA,GAC5D,KAAM,CAAEC,MAAKC,UAAWF,EAClB,CAAEG,UAASC,QAAOC,cAAc,CAAhC,EAAoCC,UAAWP,EAE/C,CAAEQ,QAAQ,QAASC,QAAQ,QAASC,YAAaJ,EACvD,AAAID,EAAMU,UAAYb,EAAIC,EAAOkB,QAC/B,CAACC,QAAO,QAACpB,EAAIC,EAAOkB,MAAZ,GACNnB,EAAIC,EAAOkB,OAAOE,MAAM,GAAxB,EAA6BJ,QAAQK,GAAM,CAEzC,CADepB,EAAQqB,KAAKC,GAAKA,EAAElB,KAAWgB,CAA/B,GACJpB,EAAQuB,KAAK,CAAE,CAAClB,GAAQe,EAAI,CAAChB,GAAQgB,CAAxB,CAAb,CACZ,CAHD,EAMJ,WAAkBY,EAAK,CACrB,KAAME,GAAOF,GAAOhC,EAAQmC,KAAKC,GAAUJ,IAAQI,EAAO/B,EAAtC,EACpBF,WAAQoC,QAAUpC,EAAOoC,OAAO1C,EAAQmC,EAAKE,EAAMnC,EAAOkB,KAAxC,CACnB,CAED,YAAmB,CACjBd,WAAQqC,OAASrC,EAAOqC,MAAM,CAAE1C,MAAKmB,MAAOlB,EAAOkB,KAArB,CAAb,CAClB,CAED,MAAO,CAAAyB,IAAAA,YAAAC,IAAAA,iBAAA,WAAA,EAAAC,IAAAA,WAAA,CAAA,WAEM9C,EAAIC,EAAOkB,OAFjB,sBAAA,GAEMnB,EAAIC,EAAOkB,OAFjB,EAAA,WAAA,GAAA,UAAA,EAAA,EAKChB,EALD,CAAA,KAME,QANF,MAOG,cAPH,SAQO6C,GAAKC,EAASD,CAAD,EARpB,QASM,IAAME,EAAO,CATnB,CAAA,EAAA,QAAA,EAWFhD,EAAQiD,IAAIf,GACXQ,IAAA,YAAAC,qBAAA,WAAA,EAAA,CAAA,IAEST,EAAK7B,GAFd,MAGW6B,EAAK5B,GAAY4B,EAAK7B,GAAS6B,EAAK9B,GAH/C,MAIW8B,EAAK7B,EAJhB,EAAA,CAAA,QAAA,IAAA,CAAAqC,IAAA,YAAA,OAAA,CAAA,MAMgB,aANhB,EAAA,CAOOpC,GAAY4B,EAAK5B,GAAa,GAAE4B,EAAK7B,MAAU6B,EAAK5B,KAAc4B,EAAK7B,EAP9E,CASKA,EAAAA,IAAUD,GAAS,CAAC8B,EAAK5B,GAAzBoC,IAAAA,YAAA,OAAA,CAAA,MACa,oBADb,EAAA,CACmCR,EAAK9B,EADxC,GAEG,IAXR,CAAA,CAAA,CADD,CAXE,EAAA,EAAA,CAAA,QAAA,IAAA,CAAA,CAAA,CAAP,CAAA,CAAA,CAvB6B,EAsD/B8C,WAAWtD,WAAYC,OAAQ,CAC7B,KAAM,CAAEC,IAAKC,QAAWF,OAClB,CAAEI,MAAOD,QAASE,aAAgBN,WAElC,CAAEQ,MAAQ,QAASC,MAAQ,QAASC,UAAaJ,YACjD,CAAEiD,WAAclD,MACtB,GAAI+B,KAAMlC,IAAIC,OAAOkB,OACrB,KAAMiB,MAAOlC,QAAQmC,KAAKuB,GAAOA,EAAIrD,SAAW2B,GAAnC,EACb,MAAImB,YACFnB,KAAMoB,KAAM,OAAMD,WAAR,GAAwBrD,IAAIC,OAAOkB,QAE3CiB,MACFF,KAAM1B,SAAW4B,KAAK7B,OAAS6B,KAAK9B,QAElC4B,KAAO/B,0BAAOU,WAAYO,QAAO,QAACc,GAAD,GACnCA,KAAMA,KAAOA,IAAIqB,KAAK,GAAT,GAER,CAAAX,IAAA,YAAA,OAAA,KAAA,CAAQV,GAAR,CAAP,CAAA,CAvE6B,EAyE/BsB,kBAAkB1D,EAAmCC,EAAqC,CAAA,GAAA,GACxF,KAAM,CAAE0D,OAAMC,YAAa3D,EACrB,CAAEG,UAASC,QAAOC,cAAc,CAAhC,EAAoCC,UAAWP,EAE/C,CAAEQ,QAAQ,QAASC,QAAQ,SAAYH,EAEvC,CAAEyD,iBAAkB1D,EAC1B,AAAI0D,GACFJ,GAAKC,GAAYG,GAMnB,WAAkB3B,EAAK,CACrB,KAAM,CAAEC,WAAW,CAAA,GAAOhC,EACpBiC,EAAOlC,EAAQmC,KAAKC,GAAUJ,IAAQI,EAAO/B,EAAtC,EACPQ,EAAOC,OAAOD,KAAKoB,CAAZ,EACb,GAAIpB,EAAKiB,OAAQ,CACf,KAAMO,GAAmBvB,OAAOuB,OAAOJ,CAAd,EACzBpB,EAAKE,QAAQ,CAACC,EAAKsB,IAAQ,CACzBiB,EAAKvC,GAAOgB,EAAME,EAAKG,EAAOC,IAAQ,GADxC,CAGD,CACD,KAAMsB,GAAO,CAAE1B,OAAMpC,IAAKyD,EAAMC,YAChCrD,WAAQoC,QAAUpC,EAAOoC,OAAOqB,CAAd,CACnB,CAKD,YAAmB,CACjBzD,WAAQqC,OAASrC,EAAOqC,MAAM,CAAEe,OAAMtC,MAAOuC,CAAf,CAAb,CAClB,CAED,MAAO,CAAAd,IAAAA,YAAAC,IAAAA,iBAAA,WAAA,EAAAC,IAAAA,WAAA,CAAA,WAEMW,EAAKC,GAFX,sBAEMD,GAAAA,EAAKC,GAFX,CAAA,EAGCvD,EAHD,CAAA,WAAA,GAAA,UAAA,GAAA,KAME,QANF,MAOG,cAPH,SAQO6C,GAAKC,EAASD,CAAD,EARpB,QASM,IAAME,EAAO,CATnB,CAAA,EAAA,QAAA,EAWFhD,EAAQiD,IAAIf,GACXQ,IAAA,YAAAC,qBAAA,WAAA,EAAA,CAAA,IACkBT,EAAK7B,GADvB,MACsC6B,EAAK9B,GAD3C,MAC0D8B,EAAK7B,EAD/D,EAAA,CAAA,QAAA,IAAA,CAAAqC,IAAA,YAAA,OAAA,CAAA,MAEgB,eAAeR,CAAAA,EAAK9B,EAFpC,CAAA,EAAAsC,IAAAA,YAAA,OAAA,CAAA,MAGgB,oBAAsBR,EAAAA,CAAAA,EAAK7B,EAH3C,CAAA,CAAA,CAAA,CAAA,CADD,CAXE,EAAA,EAAA,CAAA,QAAA,IAAA,CAAA,CAAA,CAAP,CAAA,CAAA,CAqBD,CAjI8B,CAAjC,EAoIAhB,SAASI,SAASC,IAAI,OAAQ,CAC5B4D,kBAAkB1D,EAAmCC,EAAqC,CACxF,KAAM,CAAE0D,OAAMC,YAAa3D,EACrB,CAAEI,QAAOE,UAAWP,EAEpB,CAAE+D,gBAAeE,YAAa5D,EACpC,AAAI0D,GACFJ,GAAKC,GAAYG,GAMnB,WAAkBG,EAAQC,EAAc,CACtC,KAAM,CAAEF,WAAU5C,QAAO+C,cAAaC,WAAYhE,EAClD,GAAKgE,EAME,AAAIA,GACTV,GAAKS,GAAe/C,GAAS6C,EAAOI,OAAO,CAACC,EAAMC,IAChD,CAAKD,EAGHA,EAAOA,EAAO,IAAMC,EAAKL,GAAgBC,GAAe/C,GAFxDkD,EAAOC,EAAKL,GAAgBC,GAAe/C,GAItCkD,GACN,EAP0B,OAPjB,CACZ,KAAME,GAAM,CAAE,CAACL,GAAe/C,GAAQ6C,EAAOC,GAAgBC,GAAe/C,IAC5E,SAAWD,KAAO6C,GAChBQ,EAAIrD,GAAO8C,EAAOD,EAAS7C,IAE7BF,OAAOY,OAAO6B,EAAMc,CAApB,CALF,CAgBA,KAAMT,GAAO,CAAE9D,IAAKyD,EAAMC,WAAUtB,KAAM4B,GAC1C3D,WAAQoC,QAAUpC,EAAOoC,OAAOqB,CAAd,CACnB,CAKD,YAAmB,CAEjB,GADAL,EAAKC,GAAY,GACb,CAACc,QAAAA,QAAQT,CAAD,EACV,SAAW7C,KAAO6C,GAChBN,EAAKvC,GAAO,GAGhBb,WAAQqC,OAASrC,EAAOqC,MAAM,CAAEe,OAAMtC,MAAOuC,CAAf,CAAb,CAClB,CAED,MAAO,CAAAd,IAAAA,YAAAC,IAAAA,iBAAA,QAAA,EAAAC,IAAAA,WAAA,CAAA,OAEMW,CAFN,EAGCtD,EAHD,CAAA,KAIE,MAJF,SAKO,CAAC6C,EAAGyB,IAAMxB,EAASD,EAAGyB,CAAJ,EALzB,QAMM,IAAMvB,EAAO,EAN1B,EAAA,IAAA,CAAA,CAhD0B,EA2D5BrD,WAAWC,EAA2CC,EAAQ,CAC5D,KAAM,CAAEC,MAAKC,UAAWF,EAClB,CAAEI,QAAOE,UAAWP,EAE1B,WAAkBkE,EAAQC,EAAc,CACtC,KAAM,CAAEF,WAAU5C,QAAO+C,cAAaC,WAAYhE,EAClD,GAAI,CAACgE,EAAS,CACZ,KAAMI,GAAM,CAAE,CAACL,GAAe/C,GAAQ6C,EAAOC,GAAgBC,GAAe/C,IAC5E,SAAWD,KAAO6C,GAChBQ,EAAIrD,GAAO8C,EAAOD,EAAS7C,IAE7BF,OAAOY,OAAO5B,EAAKuE,CAAnB,CACD,CACDlE,WAAQoC,QAAUpC,EAAOoC,OAAO1C,EAAQiE,EAAQhE,EAAIC,EAAOkB,MAAzC,CACnB,CAED,YAAmB,CACjB,KAAM,CAAE4C,WAAU5C,SAAUhB,EAE5B,GADAH,EAAIC,EAAOkB,OAAS,GAChB,CAACqD,QAAAA,QAAQT,CAAD,EACV,SAAW7C,KAAO6C,GAChB/D,EAAIkB,GAAO,GAGfb,WAAQqC,OAASrC,EAAOqC,MAAM,CAAE1C,MAAKmB,OAAP,CAAb,CAClB,CAED,MAAO,CAAAyB,IAAAA,YAAAC,IAAAA,iBAAA,QAAA,EAAAC,IAAAA,WAAA,CAAA,OAEM9C,CAFN,EAGCG,EAHD,CAAA,KAIE,MAJF,SAKO,CAAC6C,EAAGyB,IAAMxB,EAASD,EAAGyB,CAAJ,EALzB,QAMM,IAAMvB,EAAO,EAN1B,EAAA,IAAA,CAAA,CAtF0B,EAiG5BwB,cAAe5E,EAA2CC,EAAQ,CAChE,KAAM,CAAEC,MAAKC,UAAWF,EAClB,CAAEI,QAAOE,UAAWP,EAE1B,WAAkBkE,EAAQC,EAAc,CACtC,KAAM,CAAEF,WAAU5C,QAAO+C,cAAaC,WAAYhE,EAClD,GAAI,CAACgE,EAAS,CACZ,KAAMI,GAAM,CAAE,CAACL,GAAe/C,GAAQ6C,EAAOC,GAAgBC,GAAe/C,IAC5E,SAAWD,KAAO6C,GAChBQ,EAAIrD,GAAO8C,EAAOD,EAAS7C,IAE7BF,OAAOY,OAAO5B,EAAKuE,CAAnB,CACD,CACDlE,WAAQoC,QAAUpC,EAAOoC,OAAO1C,EAAQiE,EAAQhE,EAAIC,EAAOkB,MAAzC,CACnB,CAED,YAAmB,CACjB,KAAM,CAAE4C,WAAU5C,SAAUhB,EAE5B,GADAH,EAAIC,EAAOkB,OAAS,GAChB,CAACqD,QAAAA,QAAQT,CAAD,EACV,SAAW7C,KAAO6C,GAChB/D,EAAIkB,GAAO,GAGfb,WAAQqC,OAASrC,EAAOqC,MAAM,CAAE1C,MAAKmB,OAAP,CAAb,CAClB,CAED,MAAO,CAAAyB,IAAAA,YAAAC,IAAAA,iBAAA,QAAA,EAAAC,IAAAA,WAAA,CAAA,OAEM9C,CAFN,EAGCG,EAHD,CAAA,KAIE,MAJF,SAKO,CAAC6C,EAAGyB,IAAMxB,EAASD,EAAGyB,CAAJ,EALzB,QAMM,IAAMvB,EAAO,EAN1B,EAAA,IAAA,CAAA,CA5H0B,EAuI5BE,WAAWtD,EAAYC,EAAQ,CAC7B,KAAM,CAAEC,MAAKC,UAAWF,EAGlBmC,EAAMlC,EAAIC,EAAOkB,OACvB,MAAO,CAAAyB,IAAA,YAAA,OAAA,KAAA,CAAQV,CAAR,CAAP,CAAA,CACD,CA7I2B,CAA9B,EAkJA3C,SAASI,SAASC,IAAI,OAAQ,CAE5B8E,cAAc5E,EAAYC,EAAQ,CAAA,GAAA,GAChC,KAAM,CAAEC,MAAKC,UAAWF,EAClB,CACJI,MAAO,CAAEM,OAAMkE,WACb7E,EACJ,YAAsB,CACpB,MAAOE,GAAIC,EAAOkB,OAASwD,EAAO3E,EAAIC,EAAOkB,QAAU,EACxD,CACD,MAAO,CACLnB,EAAIC,EAAOkB,OAAXyB,gBAAAC,IAAAA,iBAAA,QAAA,EAAA,CAAA,OAAmC,OAAnC,KAAgD+B,EAAU,GAAKC,QAAAA,EAAAA,SAASpE,EAAMT,EAAIC,EAAOkB,MAAlB,CAAvE,EAAA,EAAA,CAAA,QAAA,IAAA,CAAA,CAAA,CAAA,CAAA,EAA6G,IADxG,CAGR,EAbH,EAgBA5B,SAASI,SAASC,IAAI,UAAW,CAC/B8E,cAAc5E,EAAYC,EAAQ,CAChC,KAAM,CAAEC,MAAKC,UAAWF,EAClB,CACJI,MAAO,CAAEM,OAAMqE,cAAaC,iBAC5B1E,UACEP,EACJ,WAAkBS,EAAO,CACvB,KAAMoB,GAAQ,CAAC3B,MAAKC,SAAQM,SAC5BF,WAAQoC,QAAUpC,EAAOoC,OAAOd,CAAd,CACnB,CACD,MAAO,CACL3B,EAAIC,EAAOkB,OAAXyB,IAAAA,YAAAC,IAAA,iBAAA,WAAA,EAAAC,eAAA,CAAA,WACW9C,EAAIC,EAAOkB,OADtB,sBAAA,GACWnB,EAAIC,EAAOkB,OADtB,EAAA,gBAAA,GAAA,KAGO,QAHP,MAIQ,iEACFrB,EAAWK,MALjB,CAAA,cAMe0E,SAASpE,EAAMqE,CAAP,EANvB,gBAOiBD,SAASpE,EAAMsE,CAAP,EAPzB,SAQY/B,GAAKC,EAASD,CAAD,CARzB,CAAA,EAAA,IAAA,EASK,IAVA,CAYR,EAvBH,EA0BA,kBAAkBvC,EAAMF,EAAO,WAC7B,MAAI,CAACA,GAAS,CAACE,GAAQ,CAAChB,KAAac,EAC9Bd,cAAKgB,KAALhB,cAAYuF,WAAZvF,cAAsB4C,KAAKD,GAAQA,EAAK6C,WAAa1E,KAArDd,cAA6DyF,QACrE,CAEH,MAAO3F,SACN,ECriBY,SAAW,CAAC,EAAmB,IAAqB,OACxD,MAAA,CAAC,CAAC,MAAI,YAAJ,QAAe,MAAM,GAAI,QAAO,UAAY,EAAM,SAAS,GACtE,EAEa,SAAW,CACtB,EACA,EACA,IACQ,CACJ,AAAC,SAAS,EAAK,CAAG,GAAG,GAAI,WAAa,IAAM,GAC5C,GACG,UAAS,EAAK,CAAQ,GAAG,GAAI,WAAa,IAAM,GAEzD,EAEa,YAAc,CACzB,EACA,EACA,IACQ,SACJ,GAAA,SAAS,EAAK,CAAG,EAAG,CACtB,KAAM,GAAM,GAAI,QAAO,UAAY,EAAM,SAAS,EAClD,EAAI,UAAY,KAAI,YAAJ,cAAe,QAAQ,EAAK,KAAK,MACnD,CACA,GAAI,GACE,SAAS,EAAK,CAAQ,EAAG,CAC3B,KAAM,GAAO,GAAI,QAAO,UAAY,EAAW,SAAS,EACxD,EAAI,UAAY,KAAI,YAAJ,cAAe,QAAQ,EAAM,KAAK,MACpD,CAEJ,EAEa,YAAc,CACzB,EACA,EACA,IACQ,CACF,KAAA,GAAW,GAAU,SAAS,KACpC,GAAI,CAAE,aAAc,EACR,EAAA,iBAAW,QAAQ,EAAS,IACxC,EAAS,UACP,GAAa,EAAO,GAAG,KAAa,KAAa,CACrD,EAEO,wBAAgD,EAAU,CAC/D,GAAI,GAAS,GAEb,MAAO,aAAa,EAAM,CACpB,AAAA,GACK,GAAA,GACT,OAAO,sBAAsB,IAAM,CAC9B,EAAA,MAAM,KAAM,CAAI,EACV,EAAA,EAAA,CACV,EAAA,CAEL,CAEa,KAAA,UAAW,AAAI,GAAkB,CACtC,KAAA,GAAkB,SAAS,cAAc,GAAG,EAE/C,EAAA,aAAa,OAAQ,CAAI,EACzB,EAAA,aAAa,SAAU,QAAQ,EAC/B,EAAA,aAAa,MAAO,qBAAqB,EACzC,EAAA,aAAa,KAAM,UAAU,EACvB,SAAA,eAAe,UAAU,GAChC,SAAS,KAAK,YAAY,SAAS,eAAe,UAAU,CAAE,EACvD,SAAA,KAAK,YAAY,CAAE,EAC5B,EAAG,MAAM,EACT,EAAG,OAAO,CACZ,EC3EA,GAAI,SAAW,UAAY,CACvB,GAAI,MAAO,KAAQ,IACf,MAAO,KASX,WAAkB,EAAK,EAAK,CACxB,GAAI,GAAS,GACb,SAAI,KAAK,SAAU,EAAO,EAAO,CAC7B,MAAI,GAAM,KAAO,EACb,GAAS,EACF,IAEJ,EACnB,CAAS,EACM,CACV,CACD,MAAsB,WAAY,CAC9B,YAAmB,CACf,KAAK,YAAc,EACtB,CACD,cAAO,eAAe,EAAQ,UAAW,OAAQ,CAI7C,IAAK,UAAY,CACb,MAAO,MAAK,YAAY,MAC3B,EACD,WAAY,GACZ,aAAc,EAC1B,CAAS,EAKD,EAAQ,UAAU,IAAM,SAAU,EAAK,CACnC,GAAI,GAAQ,EAAS,KAAK,YAAa,CAAG,EACtC,EAAQ,KAAK,YAAY,GAC7B,MAAO,IAAS,EAAM,EAClC,EAMQ,EAAQ,UAAU,IAAM,SAAU,EAAK,EAAO,CAC1C,GAAI,GAAQ,EAAS,KAAK,YAAa,CAAG,EAC1C,AAAI,CAAC,EACD,KAAK,YAAY,GAAO,GAAK,EAG7B,KAAK,YAAY,KAAK,CAAC,EAAK,CAAK,CAAC,CAElD,EAKQ,EAAQ,UAAU,OAAS,SAAU,EAAK,CACtC,GAAI,GAAU,KAAK,YACf,EAAQ,EAAS,EAAS,CAAG,EACjC,AAAI,CAAC,GACD,EAAQ,OAAO,EAAO,CAAC,CAEvC,EAKQ,EAAQ,UAAU,IAAM,SAAU,EAAK,CACnC,MAAO,CAAC,CAAC,CAAC,EAAS,KAAK,YAAa,CAAG,CACpD,EAIQ,EAAQ,UAAU,MAAQ,UAAY,CAClC,KAAK,YAAY,OAAO,CAAC,CACrC,EAMQ,EAAQ,UAAU,QAAU,SAAU,EAAU,EAAK,CACjD,AAAI,IAAQ,QAAU,GAAM,MAC5B,OAAS,GAAK,EAAG,EAAK,KAAK,YAAa,EAAK,EAAG,OAAQ,IAAM,CAC1D,GAAI,GAAQ,EAAG,GACf,EAAS,KAAK,EAAK,EAAM,GAAI,EAAM,EAAE,CACxC,CACb,EACe,CACf,GACA,IAKI,UAAY,MAAO,QAAW,KAAe,MAAO,UAAa,KAAe,OAAO,WAAa,SAGpG,SAAY,UAAY,CACxB,MAAI,OAAO,QAAW,KAAe,OAAO,OAAS,KAC1C,OAEP,MAAO,MAAS,KAAe,KAAK,OAAS,KACtC,KAEP,MAAO,QAAW,KAAe,OAAO,OAAS,KAC1C,OAGJ,SAAS,aAAa,GACjC,IAQI,wBAA2B,UAAY,CACvC,MAAI,OAAO,wBAA0B,WAI1B,sBAAsB,KAAK,QAAQ,EAEvC,SAAU,EAAU,CAAE,MAAO,YAAW,UAAY,CAAE,MAAO,GAAS,KAAK,IAAG,CAAE,CAAI,EAAE,IAAO,EAAE,CAAE,CAC5G,IAGI,gBAAkB,EAStB,kBAAmB,EAAU,EAAO,CAChC,GAAI,GAAc,GAAO,EAAe,GAAO,EAAe,EAO9D,YAA0B,CACtB,AAAI,GACA,GAAc,GACd,KAEA,GACA,GAEP,CAQD,YAA2B,CACvB,wBAAwB,CAAc,CACzC,CAMD,YAAiB,CACb,GAAI,GAAY,KAAK,MACrB,GAAI,EAAa,CAEb,GAAI,EAAY,EAAe,gBAC3B,OAMJ,EAAe,EAClB,KAEG,GAAc,GACd,EAAe,GACf,WAAW,EAAiB,CAAK,EAErC,EAAe,CAClB,CACD,MAAO,EACX,CAGA,GAAI,eAAgB,GAGhB,eAAiB,CAAC,MAAO,QAAS,SAAU,OAAQ,QAAS,SAAU,OAAQ,QAAQ,EAEvF,0BAA4B,MAAO,kBAAqB,IAIxD,yBAA0C,UAAY,CAMtD,YAAoC,CAMhC,KAAK,WAAa,GAMlB,KAAK,qBAAuB,GAM5B,KAAK,mBAAqB,KAM1B,KAAK,WAAa,GAClB,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,QAAU,SAAS,KAAK,QAAQ,KAAK,IAAI,EAAG,aAAa,CACjE,CAOD,SAAyB,UAAU,YAAc,SAAU,EAAU,CACjE,AAAK,CAAC,KAAK,WAAW,QAAQ,CAAQ,GAClC,KAAK,WAAW,KAAK,CAAQ,EAG5B,KAAK,YACN,KAAK,SAAQ,CAEzB,EAOI,EAAyB,UAAU,eAAiB,SAAU,EAAU,CACpE,GAAI,GAAY,KAAK,WACjB,EAAQ,EAAU,QAAQ,CAAQ,EAEtC,AAAI,CAAC,GACD,EAAU,OAAO,EAAO,CAAC,EAGzB,CAAC,EAAU,QAAU,KAAK,YAC1B,KAAK,YAAW,CAE5B,EAOI,EAAyB,UAAU,QAAU,UAAY,CACrD,GAAI,GAAkB,KAAK,mBAG3B,AAAI,GACA,KAAK,QAAO,CAExB,EASI,EAAyB,UAAU,iBAAmB,UAAY,CAE9D,GAAI,GAAkB,KAAK,WAAW,OAAO,SAAU,EAAU,CAC7D,MAAO,GAAS,aAAY,EAAI,EAAS,UAAS,CAC9D,CAAS,EAMD,SAAgB,QAAQ,SAAU,EAAU,CAAE,MAAO,GAAS,gBAAe,CAAG,CAAE,EAC3E,EAAgB,OAAS,CACxC,EAOI,EAAyB,UAAU,SAAW,UAAY,CAGtD,AAAI,CAAC,WAAa,KAAK,YAMvB,UAAS,iBAAiB,gBAAiB,KAAK,gBAAgB,EAChE,OAAO,iBAAiB,SAAU,KAAK,OAAO,EAC9C,AAAI,0BACA,MAAK,mBAAqB,GAAI,kBAAiB,KAAK,OAAO,EAC3D,KAAK,mBAAmB,QAAQ,SAAU,CACtC,WAAY,GACZ,UAAW,GACX,cAAe,GACf,QAAS,EACzB,CAAa,GAGD,UAAS,iBAAiB,qBAAsB,KAAK,OAAO,EAC5D,KAAK,qBAAuB,IAEhC,KAAK,WAAa,GAC1B,EAOI,EAAyB,UAAU,YAAc,UAAY,CAGzD,AAAI,CAAC,WAAa,CAAC,KAAK,YAGxB,UAAS,oBAAoB,gBAAiB,KAAK,gBAAgB,EACnE,OAAO,oBAAoB,SAAU,KAAK,OAAO,EAC7C,KAAK,oBACL,KAAK,mBAAmB,aAExB,KAAK,sBACL,SAAS,oBAAoB,qBAAsB,KAAK,OAAO,EAEnE,KAAK,mBAAqB,KAC1B,KAAK,qBAAuB,GAC5B,KAAK,WAAa,GAC1B,EAQI,EAAyB,UAAU,iBAAmB,SAAU,EAAI,CAChE,GAAI,GAAK,EAAG,aAAc,EAAe,IAAO,OAAS,GAAK,EAE1D,EAAmB,eAAe,KAAK,SAAU,EAAK,CACtD,MAAO,CAAC,CAAC,CAAC,EAAa,QAAQ,CAAG,CAC9C,CAAS,EACD,AAAI,GACA,KAAK,QAAO,CAExB,EAMI,EAAyB,YAAc,UAAY,CAC/C,MAAK,MAAK,WACN,MAAK,UAAY,GAAI,IAElB,KAAK,SACpB,EAMI,EAAyB,UAAY,KAC9B,CACX,EAAC,EASG,mBAAsB,SAAU,EAAQ,EAAO,CAC/C,OAAS,GAAK,EAAG,EAAK,OAAO,KAAK,CAAK,EAAG,EAAK,EAAG,OAAQ,IAAM,CAC5D,GAAI,GAAM,EAAG,GACb,OAAO,eAAe,EAAQ,EAAK,CAC/B,MAAO,EAAM,GACb,WAAY,GACZ,SAAU,GACV,aAAc,EAC1B,CAAS,CACJ,CACD,MAAO,EACX,EAQI,YAAe,SAAU,EAAQ,CAIjC,GAAI,GAAc,GAAU,EAAO,eAAiB,EAAO,cAAc,YAGzE,MAAO,IAAe,QAC1B,EAGI,UAAY,eAAe,EAAG,EAAG,EAAG,CAAC,EAOzC,iBAAiB,EAAO,CACpB,MAAO,YAAW,CAAK,GAAK,CAChC,CAQA,wBAAwB,EAAQ,CAE5B,OADI,GAAY,CAAA,EACP,EAAK,EAAG,EAAK,UAAU,OAAQ,IACpC,EAAU,EAAK,GAAK,UAAU,GAElC,MAAO,GAAU,OAAO,SAAU,EAAM,EAAU,CAC9C,GAAI,GAAQ,EAAO,UAAY,EAAW,UAC1C,MAAO,GAAO,QAAQ,CAAK,CAC9B,EAAE,CAAC,CACR,CAOA,qBAAqB,EAAQ,CAGzB,OAFI,GAAY,CAAC,MAAO,QAAS,SAAU,MAAM,EAC7C,EAAW,CAAA,EACN,EAAK,EAAG,EAAc,EAAW,EAAK,EAAY,OAAQ,IAAM,CACrE,GAAI,GAAW,EAAY,GACvB,EAAQ,EAAO,WAAa,GAChC,EAAS,GAAY,QAAQ,CAAK,CACrC,CACD,MAAO,EACX,CAQA,2BAA2B,EAAQ,CAC/B,GAAI,GAAO,EAAO,UAClB,MAAO,gBAAe,EAAG,EAAG,EAAK,MAAO,EAAK,MAAM,CACvD,CAOA,mCAAmC,EAAQ,CAGvC,GAAI,GAAc,EAAO,YAAa,EAAe,EAAO,aAS5D,GAAI,CAAC,GAAe,CAAC,EACjB,MAAO,WAEX,GAAI,GAAS,YAAY,CAAM,EAAE,iBAAiB,CAAM,EACpD,EAAW,YAAY,CAAM,EAC7B,EAAW,EAAS,KAAO,EAAS,MACpC,EAAU,EAAS,IAAM,EAAS,OAKlC,EAAQ,QAAQ,EAAO,KAAK,EAAG,EAAS,QAAQ,EAAO,MAAM,EAqBjE,GAlBI,EAAO,YAAc,cAOjB,MAAK,MAAM,EAAQ,CAAQ,IAAM,GACjC,IAAS,eAAe,EAAQ,OAAQ,OAAO,EAAI,GAEnD,KAAK,MAAM,EAAS,CAAO,IAAM,GACjC,IAAU,eAAe,EAAQ,MAAO,QAAQ,EAAI,IAOxD,CAAC,kBAAkB,CAAM,EAAG,CAK5B,GAAI,GAAgB,KAAK,MAAM,EAAQ,CAAQ,EAAI,EAC/C,EAAiB,KAAK,MAAM,EAAS,CAAO,EAAI,EAMpD,AAAI,KAAK,IAAI,CAAa,IAAM,GAC5B,IAAS,GAET,KAAK,IAAI,CAAc,IAAM,GAC7B,IAAU,EAEjB,CACD,MAAO,gBAAe,EAAS,KAAM,EAAS,IAAK,EAAO,CAAM,CACpE,CAOA,GAAI,sBAAwB,UAAY,CAGpC,MAAI,OAAO,oBAAuB,IACvB,SAAU,EAAQ,CAAE,MAAO,aAAkB,aAAY,CAAM,EAAE,oBAKrE,SAAU,EAAQ,CAAE,MAAQ,aAAkB,aAAY,CAAM,EAAE,YACrE,MAAO,GAAO,SAAY,WAClC,IAOA,2BAA2B,EAAQ,CAC/B,MAAO,KAAW,YAAY,CAAM,EAAE,SAAS,eACnD,CAOA,wBAAwB,EAAQ,CAC5B,MAAK,WAGD,qBAAqB,CAAM,EACpB,kBAAkB,CAAM,EAE5B,0BAA0B,CAAM,EAL5B,SAMf,CAQA,4BAA4B,EAAI,CAC5B,GAAI,GAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAQ,EAAG,MAAO,EAAS,EAAG,OAElD,EAAS,MAAO,iBAAoB,IAAc,gBAAkB,OACpE,EAAO,OAAO,OAAO,EAAO,SAAS,EAEzC,0BAAmB,EAAM,CACrB,EAAG,EAAG,EAAG,EAAG,MAAO,EAAO,OAAQ,EAClC,IAAK,EACL,MAAO,EAAI,EACX,OAAQ,EAAS,EACjB,KAAM,CACd,CAAK,EACM,CACX,CAWA,wBAAwB,EAAG,EAAG,EAAO,EAAQ,CACzC,MAAO,CAAE,EAAG,EAAG,EAAG,EAAG,MAAO,EAAO,OAAQ,EAC/C,CAMA,GAAI,mBAAmC,UAAY,CAM/C,WAA2B,EAAQ,CAM/B,KAAK,eAAiB,EAMtB,KAAK,gBAAkB,EAMvB,KAAK,aAAe,eAAe,EAAG,EAAG,EAAG,CAAC,EAC7C,KAAK,OAAS,CACjB,CAOD,SAAkB,UAAU,SAAW,UAAY,CAC/C,GAAI,GAAO,eAAe,KAAK,MAAM,EACrC,YAAK,aAAe,EACZ,EAAK,QAAU,KAAK,gBACxB,EAAK,SAAW,KAAK,eACjC,EAOI,EAAkB,UAAU,cAAgB,UAAY,CACpD,GAAI,GAAO,KAAK,aAChB,YAAK,eAAiB,EAAK,MAC3B,KAAK,gBAAkB,EAAK,OACrB,CACf,EACW,CACX,EAAC,EAEG,oBAAqC,UAAY,CAOjD,WAA6B,EAAQ,EAAU,CAC3C,GAAI,GAAc,mBAAmB,CAAQ,EAO7C,mBAAmB,KAAM,CAAE,OAAQ,EAAQ,YAAa,CAAW,CAAE,CACxE,CACD,MAAO,EACX,EAAC,EAEG,kBAAmC,UAAY,CAW/C,WAA2B,EAAU,EAAY,EAAa,CAc1D,GAPA,KAAK,oBAAsB,GAM3B,KAAK,cAAgB,GAAI,SACrB,MAAO,IAAa,WACpB,KAAM,IAAI,WAAU,yDAAyD,EAEjF,KAAK,UAAY,EACjB,KAAK,YAAc,EACnB,KAAK,aAAe,CACvB,CAOD,SAAkB,UAAU,QAAU,SAAU,EAAQ,CACpD,GAAI,CAAC,UAAU,OACX,KAAM,IAAI,WAAU,0CAA0C,EAGlE,GAAI,QAAO,SAAY,KAAe,CAAE,mBAAmB,UAG3D,IAAI,CAAE,aAAkB,aAAY,CAAM,EAAE,SACxC,KAAM,IAAI,WAAU,uCAAuC,EAE/D,GAAI,GAAe,KAAK,cAExB,AAAI,EAAa,IAAI,CAAM,GAG3B,GAAa,IAAI,EAAQ,GAAI,mBAAkB,CAAM,CAAC,EACtD,KAAK,YAAY,YAAY,IAAI,EAEjC,KAAK,YAAY,WACzB,EAOI,EAAkB,UAAU,UAAY,SAAU,EAAQ,CACtD,GAAI,CAAC,UAAU,OACX,KAAM,IAAI,WAAU,0CAA0C,EAGlE,GAAI,QAAO,SAAY,KAAe,CAAE,mBAAmB,UAG3D,IAAI,CAAE,aAAkB,aAAY,CAAM,EAAE,SACxC,KAAM,IAAI,WAAU,uCAAuC,EAE/D,GAAI,GAAe,KAAK,cAExB,AAAI,CAAC,EAAa,IAAI,CAAM,GAG5B,GAAa,OAAO,CAAM,EACrB,EAAa,MACd,KAAK,YAAY,eAAe,IAAI,GAEhD,EAMI,EAAkB,UAAU,WAAa,UAAY,CACjD,KAAK,YAAW,EAChB,KAAK,cAAc,QACnB,KAAK,YAAY,eAAe,IAAI,CAC5C,EAOI,EAAkB,UAAU,aAAe,UAAY,CACnD,GAAI,GAAQ,KACZ,KAAK,YAAW,EAChB,KAAK,cAAc,QAAQ,SAAU,EAAa,CAC9C,AAAI,EAAY,YACZ,EAAM,oBAAoB,KAAK,CAAW,CAE1D,CAAS,CACT,EAOI,EAAkB,UAAU,gBAAkB,UAAY,CAEtD,GAAI,EAAC,KAAK,YAGV,IAAI,GAAM,KAAK,aAEX,EAAU,KAAK,oBAAoB,IAAI,SAAU,EAAa,CAC9D,MAAO,IAAI,qBAAoB,EAAY,OAAQ,EAAY,cAAa,CAAE,CAC1F,CAAS,EACD,KAAK,UAAU,KAAK,EAAK,EAAS,CAAG,EACrC,KAAK,YAAW,EACxB,EAMI,EAAkB,UAAU,YAAc,UAAY,CAClD,KAAK,oBAAoB,OAAO,CAAC,CACzC,EAMI,EAAkB,UAAU,UAAY,UAAY,CAChD,MAAO,MAAK,oBAAoB,OAAS,CACjD,EACW,CACX,EAAC,EAKG,UAAY,MAAO,SAAY,IAAc,GAAI,SAAY,GAAI,SAKjE,eAAgC,UAAY,CAO5C,WAAwB,EAAU,CAC9B,GAAI,CAAE,gBAAgB,IAClB,KAAM,IAAI,WAAU,oCAAoC,EAE5D,GAAI,CAAC,UAAU,OACX,KAAM,IAAI,WAAU,0CAA0C,EAElE,GAAI,GAAa,yBAAyB,cACtC,EAAW,GAAI,mBAAkB,EAAU,EAAY,IAAI,EAC/D,UAAU,IAAI,KAAM,CAAQ,CAC/B,CACD,MAAO,EACX,EAAC,EAED,CACI,UACA,YACA,YACJ,EAAE,QAAQ,SAAU,EAAQ,CACxB,eAAe,UAAU,GAAU,UAAY,CAC3C,GAAI,GACJ,MAAQ,GAAK,UAAU,IAAI,IAAI,GAAG,GAAQ,MAAM,EAAI,SAAS,CACrE,CACA,CAAC,EAED,GAAI,OAAS,UAAY,CAErB,MAAI,OAAO,UAAS,eAAmB,IAC5B,SAAS,eAEb,cACX,EAAI,ECp5BJ,KAAM,UAAW,MAAO,QAAW,IAE7B,cAAgB,AAAC,GAAyB,CAC9C,SAAW,KAAS,GAAS,CAC3B,KAAM,GAAY,EAAM,OAAO,qBAAuB,CAAA,EACtD,AAAI,EAAU,QACF,EAAA,QAAQ,AAAC,GAAkB,CAChC,GAAA,CACJ,CAEL,CACF,EAEa,kBAAoB,CAAC,EAAc,IAAuB,CACjE,AAAA,UACC,GAAQ,qBACX,GAAQ,oBAAsB,GACtB,EAAA,OAAS,GAAI4F,OAAe,aAAa,EACzC,EAAA,OAAO,QAAQ,CAAO,GAExB,EAAA,oBAAoB,KAAK,CAAE,EACrC,EAEa,qBAAuB,CAAC,EAAc,IAAuB,CACpE,AAAA,CAAC,GAAW,CAAC,EAAQ,qBACzB,GAAQ,oBAAoB,OAC1B,EAAQ,oBAAoB,QAAQ,CAAE,EACtC,CACF,EACK,EAAQ,oBAAoB,QAC/B,EAAQ,OAAO,aAEnB,EC7BM,UAAY,OAAO,eAAe,EAOjC,sBACL,EAAoCC,IAAAA,IAAI,SAAS,IAAI,EACrD,CACM,KAAA,GAAO,eAAe,UAAY,CAChC,KAAA,GAAKC,UAAM,CAAQ,EACzB,GAAI,CAAC,EAAI,OACT,KAAM,CAAE,aAAc,EAAQ,YAAa,GAAU,EACrC,EAAA,CAAE,SAAQ,OAAA,CAAO,CAAA,CAClC,EACK,EAAK,UAAU,WACf,EAAcC,IAAAA,aAEd,EAAQ,IAAM,CACZ,KAAA,GAAQD,UAAM,CAAW,EAC/B,EAAY,MAAQ,OACd,KAAA,GAAKA,UAAM,CAAQ,EACzB,AAAI,CAAC,GACI,IAAA,EAAG,YAAY,CAAK,EAC7B,qBAAqB,EAAI,CAAI,EAAA,EAG/B,WAAsB,EAAa,EAAa,SACxC,KAAA,GAAM,SAAS,cAAc,QAAQ,EACrC,EAAQ,IACR,EAAS,IACf,OAAO,OAAO,EAAK,CAAE,QAAO,QAAQ,CAAA,EAE9B,KAAA,GAAO,EAAI,WAAW,IAAI,EAChC,MAAI,IACF,GAAK,OAAQ,IAAM,KAAK,GAAM,GAAG,EAC5B,EAAA,KAAO,oBAAM,OAAN,OAAc,kBACrB,EAAA,UAAY,oBAAM,YAAN,OAAmB,4BACpC,EAAK,UAAY,OACjB,EAAK,aAAe,SACpB,EAAK,SAAS,EAAK,EAAQ,GAAI,CAAM,GAEhC,EAAI,UAAU,WAAW,CAClC,CAGE,WAAA,EAKI,GACJ,CACM,KAAA,GAAKA,UAAM,CAAW,EAC5B,AAAI,CAAC,GACAE,SAAA,YAAY,EAAQ,KAAK,GACzB,GAAA,MAAM,MAAQ,GAAG,EAAQ,WAEzBA,QAAA,YAAY,EAAQ,MAAM,GAC1B,GAAA,MAAM,OAAS,GAAG,EAAQ,YAE1BA,QAAA,YAAY,EAAQ,GAAG,GAC1B,GAAG,MAAM,WAAa,OAAO,EAC3B,EAAQ,IACR,EAAQ,IACV,sBAEJ,CAEM,KAAA,GAAkB,CAAC,EAAa,IAAgB,CAChD,GAAAF,IAAAA,MAAM,CAAW,EACH,SAAA,CAAE,MAAK,MAAA,CAAM,EACtB,EAEH,KAAA,GAAM,SAAS,cAAc,KAAK,EACxC,EAAY,MAAQ,EACpB,EAAI,GAAK,EACT,EAAI,MAAM,cAAgB,OAC1B,EAAI,MAAM,IAAM,MAChB,EAAI,MAAM,KAAO,MACjB,EAAI,MAAM,SAAW,WACrB,EAAI,MAAM,OAAS,SACb,KAAA,GAAKA,UAAM,CAAQ,EACzB,GAAI,CAAC,EAAW,MAAA,GAChB,KAAM,CAAE,aAAc,EAAQ,YAAa,GAAU,EACrD,SAAgB,CAAE,MAAK,QAAO,SAAQ,MAAM,CAAA,EAC5C,EAAG,YAAY,CAAG,EACX,CAAA,EAGT,WAAsB,EAAa,EAAa,CAC9C,EAAgB,EAAK,CAAI,EACP,kBAAA,SAAS,gBAAiB,CAAI,EAE5C,AADaG,IAAAA,sBAEfC,IAAAA,gBAAgB,IAAM,CACd,GAAA,CACP,CAEL,CAEO,MAAA,CAAE,eAAc,QACzB,CCrGA,KAAM,sBAAuB,CAAC,QAAS,OAAO,EACxC,gBAAkB,WAEjB,iBAAoB,EAAmC,CACrD,MAAA,QAAO,KAAK,CAAG,EAAE,IAAI,AAAC,GAAgB,CAAC,EAAK,EAAI,EAAI,CAAC,CAC9D,CAEyB,kBAAA,EAAiB,GAA0B,CAClE,KAAM,GAAWD,IAAAA,qBACjB,GAAI,CAAC,EAAU,MAAO,GAEtB,KAAM,CAAE,mBAAmB,GAAO,cAAc,CAAO,GAAA,EACjD,EAAQF,eAAW,CAAA,CAAE,EACrB,EAAiB,EAAY,OAAO,oBAAoB,EAGrD,SAAA,MAAQI,IAAAA,SAAS,EAAS,KAAK,EAExCC,IAAAA,YAAY,IAAM,CACV,KAAA,GAAM,QAAQ,EAAS,KAAK,EAAE,OAAO,CAAC,EAAK,CAAC,EAAK,KAEnD,EAAC,EAAe,SAAS,CAAG,GAC5B,CAAsB,IAAA,gBAAgB,KAAK,CAAG,IAE9C,GAAI,GAAO,GAGN,GACN,CAAgB,CAAA,EAEnB,EAAM,MAAQ,CAAA,CACf,EAEM,CACT,CCjCA,MAAM,mBAA4C,CAGhD,YAAY,EAA4B,CACtC,KAAK,QAAU,CACjB,CAGO,QAAQ,EAAa,EAAkB,CAC5C,KAAK,QAAQ,QAAQ,EAAK,KAAK,UAAU,CAAK,CAAC,CACjD,CAGO,QAAQ,EAAkB,CAC/B,MAAO,MAAK,MAAM,KAAK,QAAQ,QAAQ,CAAG,CAAC,CAC7C,CAGO,WAAW,EAAmB,CAC9B,KAAA,QAAQ,WAAW,CAAG,CAC7B,CAGA,OAAqB,CACnB,KAAK,QAAQ,OACf,CACF,CAGA,MAAM,yBAA0B,oBAA4C,CAC1E,YAAY,EAA4B,CACtC,MAAM,CAAY,CACpB,CACF,CAEa,KAAA,gBAAiB,GAAI,qBAAoB,cAAc,EAEvD,aAAe,GAAI,mBAAkB,YAAY,EC5BxD,SAAW,eAAe,QAAQ,MAAM,EAMjC,UAAY,AAAC,GAAQ,CAChC,KAAM,GAAc,CAAE,MAAO,WAAY,MAAO,UAAW,EAMrD,EAAa,CAAC,EAAwB,IAAa,OACjD,KAAA,GAAS,EAAU,CAAO,EAChC,GAAI,GAAQ,CAAE,UAAW,GAAM,SAAU,EAAM,EAC3C,EACA,EACA,AAAAC,QAAAA,SAAS,CAAK,EACR,GAAA,OAAO,OAAO,EAAO,CAAK,EAClC,EAAe,EAAM,aACrB,EAAW,iBAAO,MAEP,EAAA,EAEb,KAAM,GAAO,kBAAe,QAAQ,MAAM,EAAE,KAA/B,cAA0C,SACjD,EAAU,EAAO,EAAK,OAAO,AAAC,GAAQ,EAAI,UAAY,GAAG,EAAI,GAC5D,MAAA,CACL,KAAM,UACN,cACA,UACA,QACA,eACA,QAAA,CACF,EAOI,EAAe,CAAC,EAAO,IACpB,EACL,KAAM,YACN,YAAa,EAAM,YACnB,MAAO,EAAM,MACb,QAAS,EAAM,SAAW,CAAC,EAC3B,OAAQ,CACN,OAAQ,CAAC,EAAG,EAAG,EAAG,IAAU,GAAY,EAAS,EAAG,EAAG,EAAG,CAAK,CACjE,CAAA,GASE,EAAa,CAAC,EAAO,IAAc,CACvC,KAAM,GAAQ,CACZ,YAAa,CAAE,SAAU,WAAY,MAAO,cAAe,EAC3D,MAAO,CACL,MAAO,CAAE,SAAU,iBAAM,QAAS,EAClC,SAAU,iBAAM,SAChB,aAAc,iBAAM,aACpB,SAAU,iBAAM,SAChB,KAAM,SACN,WAAY,cACd,CAAA,EAEK,MAAA,GAAa,EAAO,CAAQ,CAAA,EAE/B,EAAgB,AAAC,GAAS,CAC9B,KAAM,GAAQ,CACZ,YAAa,CAAE,SAAU,WAAY,MAAO,MAAO,EACnD,MAAO,CACL,KAAM,gBACN,WAAY,OACZ,SAAU,iBAAK,QACjB,CAAA,EAEF,MAAO,GAAa,CAAK,CAAA,EASrB,EAAe,CAAC,EAAQ,IAAa,CACzC,KAAM,GAAc,CAClB,MAAO,mBACP,MAAO,kBAAO,QAAS,IAAA,EAEnB,EAAQ,CACZ,SAAU,CAAC,EACX,SAAU,iBAAO,SACjB,KAAM,SACN,WAAY,kBAAA,EAER,EAAW,CACf,eAAgB,KAChB,iBAAkB,kBAAA,EAEpB,cAAO,OAAO,EAAM,SAAU,EAAU,kBAAO,WAAY,CAAA,CAAE,EACtD,CAAE,KAAM,YAAa,QAAO,cAAa,QAAS,GAAI,UAAQ,EAQjE,EAAc,CAAC,EAAQ,IAAa,CACxC,KAAM,GAAQ,OAAO,OAAO,CAAE,SAAU,EAAA,EAAS,CAAK,EAChD,EAAe,iBAAO,aACrB,MAAA,CACL,KAAM,SACN,QACA,eACA,OAAQ,EAAU,CAAO,CAAA,CAC3B,EAQI,EAAiB,CAAC,EAAQ,IAAa,CACrC,KAAA,GAAQ,OAAO,OAAO,CAAE,SAAU,GAAO,KAAM,GAAK,CAAK,EACzD,EAAe,iBAAO,aACrB,MAAA,CACL,KAAM,YACN,QACA,eACA,OAAQ,EAAU,CAAO,CAAA,CAC3B,EAOI,EAAiB,CAAC,EAAO,IAAY,CACzC,KAAM,GAAO,YACP,CAAE,eAAc,UAAS,SAAU,EAAY,CAAK,EACnD,MAAA,CAAE,OAAM,eAAc,UAAS,QAAO,OAAQ,EAAU,CAAO,EAAE,EAQpE,EAAc,CAAC,EAAwB,IAAY,CACvD,KAAM,GAAO,SACP,CAAE,eAAc,UAAS,SAAU,EAAY,CAAK,EACnD,MAAA,CAAE,OAAM,eAAc,UAAS,QAAO,OAAQ,EAAU,CAAO,EAAE,EAEpE,EAAc,AAAC,GAA2B,OAC1C,GAAA,GAAQ,CAAE,SAAU,IACpB,EACA,EAAO,GACP,AAAAA,QAAAA,SAAS,CAAK,EAChB,GAAe,EAAM,aACrB,EAAQ,OAAO,OAAO,EAAO,GAAS,CAAE,CAAA,GAC/BC,QAAAA,SAAS,CAAK,GAChB,GAAA,GAET,KAAM,GAAU,EACZ,YAAS,KAAT,cAAgB,SAAS,IAAI,AAAC,GACrB,EAAE,MAAO,EAAE,SAAU,MAAO,EAAE,YAEvC,CAAA,EACG,MAAA,CAAE,QAAO,eAAc,UAAQ,EAQlC,EAAe,CAAC,EAAQ,IAAa,CACnC,KAAA,GAAS,EAAU,CAAO,EAC1B,EAAQ,OAAO,OACnB,CAAE,KAAM,SAAU,UAAW,GAAM,IAAK,CACxC,EAAA,GAAS,CACX,CAAA,EAEA,MAAO,CAAE,KAAM,SAAU,QAAO,QAAO,CAAA,EAQnC,EAAa,CAAC,EAAQ,IAAa,CACjC,KAAA,GAAS,EAAU,CAAO,EAC1B,EAAc,sBACd,EAAe,iBAAO,aAEtB,EAAQ,OAAO,OADR,CAAE,KAAM,OAAQ,cAAa,UAAW,IACnB,GAAS,CAAA,CAAE,EAC7C,MAAO,CAAE,KAAM,SAAU,QAAO,eAAc,QAAO,CAAA,EAYjD,EAAY,CAAC,EAAO,IAAa,CAC/B,KAAA,GAAS,EAAU,CAAO,EAC1B,EAAQ,OAAO,OAAO,CAAA,EAAI,GAAS,CAAA,CAAE,EAC3C,MAAO,CAAE,KAAM,OAAQ,QAAO,QAAO,CAAA,EAQjC,EAAoB,CAAC,EAAO,IAAa,CACvC,KAAA,GAAS,EAAU,CAAO,EAC1B,EAAc,kBAAO,cAAe,GACpC,EAAQ,OAAO,OACnB,CAAE,UAAW,GAAM,SAAU,EAAM,EACnC,GAAS,CACX,CAAA,EACO,MAAA,CACL,KAAM,UACN,YAAA,EACA,QAAS,kBAAO,UAAW,CAAC,EAC5B,QACA,QAAA,CACF,EAQI,EAAe,CAAC,EAAgB,IAAa,CACjD,GAAI,GAAQ,CACV,UAAW,SACX,WAAY,SACZ,UAAW,IACX,WAAY,GAAA,EAEV,EAAe,IACnB,AAAID,iBAAS,CAAK,GAAK,CAACE,QAAA,WAAW,CAAK,EACtC,GAAQ,OAAO,OAAO,EAAO,GAAS,CAAE,CAAA,EACxC,EAAe,EAAM,cAAgB,GAC5B,CAACtB,QAAAA,QAAQ,CAAK,GAAKqB,QAAA,SAAS,CAAK,GAC3B,GAAA,EACf,EAAQ,OAAO,OAAO,EAAO,CAAE,cAAc,CAAA,GAEzC,KAAA,GAASC,mBAAW,CAAK,EAAI,EAAU,CAAK,EAAI,EAAU,CAAO,EACvE,MAAO,CAAE,KAAM,UAAW,QAAO,eAAc,QAAO,CAAA,EAQlD,EAAgB,CAAC,EAAM,IACpB,EAAE,KAAM,OAAQ,MAAO,CAAE,OAAM,YAQlC,EAAgB,AAAC,GAoBd,EAPe,CACpB,UAAW,eACX,WAAY,eACZ,UAAW,IACX,WAAY,IACZ,aAAc,GAAA,EAEW,CAAO,EAI9B,EAAY,AAAC,GAA0B,CAC3C,GAAI,GAAc,CAAA,EAClB,MAAIF,kBAAS,CAAO,GAAK,CAACE,QAAA,WAAW,CAAO,EACjC,EAAA,CACP,OAAQ,EAAQ,SAChB,KAAM,iBAAS,OACf,MAAO,iBAAS,OAAA,EAET,GACA,GAAA,CAAE,OAAQ,IAEd,CAAA,EAKF,MAAA,CACL,aACA,eACA,cACA,iBACA,iBACA,cACA,aACA,gBACA,eACA,eACA,YACA,oBACA,aACA,eACA,gBACA,eAAA,CAEJ,ECnWa,UAAY,IAAM,CAC7B,KAAM,GAAWN,IAAAA,qBACjB,GAAI,CAAC,EAAiB,MAAA,CAAE,QAAS,GAAI,SAAU,CAAA,EAAI,QAAS,CAAA,GAC5D,KAAM,GAAU,EAAS,WAAW,IAAI,OAAO,iBAEzC,EAAW,EAAQ,SAEnB,EAAU,EAAQ,QAElB,EAAc,EAAQ,YAEtB,EAAgB,EAAQ,cAExB,EAAe,EAAQ,aACtB,MAAA,CACL,UACA,WACA,UACA,cACA,gBACA,cAAA,CAEJ,ECxBM,QAAoB,CAAA,EAC1B,OAAS,GAAI,EAAG,GAAK,GAAI,IACf,QAAA,GAAK,EAAE,SAAS,EAAE,EAGQ,oBAAA,CAClC,GAAI,GAAO,GACX,OAAS,GAAI,EAAG,GAAK,GAAI,IACvB,AAAI,IAAM,GAAK,IAAM,IAAM,IAAM,IAAM,IAAM,GACnC,GAAA,IACV,AAAW,IAAM,GACP,GAAA,EACV,AAAW,IAAM,GACf,GAAQ,QAAS,KAAK,OAAO,EAAI,EAAK,GAEtC,GAAQ,QAAS,KAAK,OAAO,EAAI,GAAM,GAGpC,MAAA,GAAK,QAAQ,KAAM,EAAE,CAC9B,CAEA,GAAI,QAAS,EACN,wBAAwB,EAAS,GAAY,CAC5C,KAAA,GAAO,KAAK,MACZ,EAAS,KAAK,MAAM,KAAK,OAAA,EAAW,GAAU,EACpD,gBACO,EAAS,IAAM,EAAS,OAAS,OAAO,CAAI,CACrD,CCZa,KAAA,iBAAkB,IAAM,CAC7B,KAAA,GAA0B,UAAU,UAAU,YAAY,EAE1D,EAAc,EAAW,MAAM,YAAY,IAAM,YACjD,EAAU,EAAW,MAAM,OAAO,IAAM,OACxC,EAAS,EAAW,MAAM,aAAa,IAAM,aAC7C,EAAQ,EAAW,MAAM,QAAQ,IAAM,QACvC,EAAa,EAAW,MAAM,UAAU,IAAM,UAC9C,EAAQ,EAAW,MAAM,aAAa,IAAM,aAC5C,EAAQ,EAAW,MAAM,iBAAiB,IAAM,iBACtD,MACE,IAAe,GAAW,GAAU,GAAS,GAAc,GAAS,CAExE,EAGa,eAAiB,IAAM,CAC5B,KAAA,GAAK,UAAU,UAAU,YAAY,EACrC,EAAK,iDACL,EAAI,EAAG,MAAM,CAAE,EAMd,MALmB,CACxB,QAAS,EAAE,GAAG,QAAQ,UAAW,SAAS,EAC1C,QAAS,EAAE,EAAA,CAIf,ECtCM,QAAU,CAAC,EAAiB,EAAQ,IACjCjG,kBAAAA,QAAS,MAAM,QAAQ,CAAE,UAAS,SAAQ,aAAY,EAIzD,eAAiB,AAAC,GAAyB,OAC/C,MAAK,IAGO,GAAA,4BAELA,qBAAAA,QAAS,QAATA,cAAgB,QAAQ,CAAE,UAAS,OAAQ,WACpD,EAGM,YAAc,AAAC,GAAyB,OAC5C,MAAOA,qBAAAA,QAAS,QAATA,cAAgB,QAAQ,CAAE,UAAS,OAAQ,WACpD,EAGM,aAAe,AAAC,GAAyB,OAC7C,MAAK,IACO,GAAA,4BAILA,qBAAAA,QAAS,QAATA,cAAgB,QAAQ,CAAE,UAAS,OAAQ,SACpD,ECtBM,WAAa,UAAU,EAEhB,WAAa,AAAC,GAClB,EAAQ,IAAI,AAAC,GACd,GAAE,MACN,GAAE,MAAQ,EAAE,OAAS,WAAW,EAAE,SAC3B,EACR,EASU,YAAc,CAAC,EAAO,EAAQ,EAAO,KAC3C,EAAM,OACJ,EAAM,IAAI,AAAC,GAAS,SACzB,EAAK,MAAQ,EAAK,OAAS,WAAW,EAAK,QACtC,EAAA,KAAO,EAAK,MAAQ,EACzB,KAAM,GACJ,EAAK,UAAY,SAAK,aAAL,cAAiB,QAAjB,cAAwB,WAAY,IAAW,SAClE,GAAI,GAAa,CAAE,KAAM,SAAU,MAAO,CAAE,aAC5C,MAAI,GAAK,MAAQ,CAAC,EAAK,YACR,GAAA,WAAW,WAAW,EAAK,IAAI,GAEzC,EAAA,WAAa,EAAK,YAAc,EAC9B,OAAA,OAAO,EAAK,WAAW,OAAS,GAAI,CAAE,WAAU,EAChD,CAAA,CACR,EAbyB,EAgBtB,UAA4B,CAChC,KAAM,EACN,MAAO,QACP,aAAc,GACd,WAAY,CACV,KAAM,WACN,SAAU,CACR,CACE,MAAO,CACL,KAAM,SACN,QAAS,iBACT,OAAQ,UACR,KAAM,cACR,CACF,EACA,CACE,MAAO,CACL,KAAM,QACN,QAAS,gBACT,OAAQ,OACR,KAAM,eACR,CACF,CACF,CACF,CACF,EAOa,gBAAkB,AAAC,GAAU,CACxC,KAAM,GAAY,EAAM,OAAO,AAAC,GAAM,CAAC,EAAE,QAAQ,EAC3C,EAAM,EAAU,OAEhB,EACJ,EAAM,GACN,EAAU,KAAK,CAAC,EAAG,IAAQ,EAAM,GAAQ,GAAA,KAAO,GAAK,aAAa,CAAC,EAAE,EAEjE,EAAa,GAAe,EAAM,EAClC,EAAQ,EAAU,IAAI,CAAC,EAAM,IACjC,GAAK,QAAU,EAAc,GAAc,EAAM,EAAI,GAAc,EAAM,EACzE,EAAK,KAAO,aAAa,CAAI,EAAI,GAAK,EAAK,MAAQ,EACnD,EAAK,WAAa,EAAK,YAAc,CAAE,KAAM,UAC7C,EAAK,MAAQ,EAAK,OAAS,WAAW,EAAK,QACpC,EACR,EAED,GADA,UAAU,aAAe,EACrB,EAAY,CAGR,KAAA,GAAM,EAAc,EAAI,EACxB,EAAA,OAAO,EAAK,EAAG,SAAS,CAAA,KAE9B,GAAM,KAAK,SAAS,EAEf,MAAA,EACT,EAEM,aAAe,AAAC,GAAS,eACzB,MAAA,MAAK,aAAL,cAAiB,QAAS,eAE1B,SAAK,aAAL,cAAiB,QAAjB,cAAwB,QAAS,aACjC,CAAC,SAAK,aAAL,cAAiB,QAAjB,QAAwB,MAGtB,EACT,EAQa,YAAc,CAAC,EAAS,IAAM,CACzC,KAAM,GAAO,CAAA,EACL,SAAA,QAAQ,AAAC,GAAS,CACxB,GAAI,EAAK,SAAU,CACX,KAAA,CAAE,QAAO,SAAU,EACzB,EAAK,GAAS,CACZ,CACE,SAAU,GACV,QAAS,GAAG,EAAE,kBAAkB,IAC9B,AAAQ,EAAR,GAAqB,WAAW,GAAjB,GAEnB,CAAA,CAEJ,CAAA,CACD,EACM,CACT,ECvIM,cAAqB,CAAA,EACpB,yBAAyB,EAAU,CACxC,GAAI,CAAC,MAAM,QAAQ,CAAQ,EAAG,CAC5B,QAAQ,KAAK,2BAA2B,EACxC,MACF,CACI,GAAA,GAAC,GAAY,EAAS,SAAW,GACrC,UAAW,KAAQ,GAEjB,AAAI,AADgB,EAAK,UAAY,EAAK,SAAS,OAAS,GAE1D,gBAAgB,EAAK,QAAQ,EAEjB,cAAA,KAAK,EAAK,QAAQ,EAE3B,MAAA,eACT,CAQmC,4BAAA,EAAU,EAAW,GAAI,CAC1D,GAAI,CAAC,MAAM,QAAQ,CAAQ,EAAG,CAC5B,QAAQ,KAAK,2BAA2B,EACxC,MACF,CACI,GAAA,GAAC,GAAY,EAAS,SAAW,GACrC,UAAW,CAAC,EAAK,IAAS,GAAS,UACjC,AAAI,EAAK,UAAY,EAAK,SAAS,SAAW,GAAG,MAAO,GAAK,SAC7D,EAAK,GAAK,EACV,EAAK,SAAW,EAAS,OAAS,EAAS,EAAS,OAAS,GAAK,KAClE,EAAK,SAAW,CAAC,GAAG,EAAU,EAAK,EAAE,EAChC,EAAA,SACH,EAAK,SAAS,OAAS,EAAI,EAAK,SAAS,KAAK,GAAG,EAAI,EAAK,SAAS,GAEjE,AADgB,EAAK,UAAY,EAAK,SAAS,OAAS,GAEvC,mBAAA,EAAK,SAAU,EAAK,QAAQ,EAG5C,MAAA,GACT,CAGmC,4BAAA,EAAU,EAAW,GAAI,CAC1D,GAAI,CAAC,MAAM,QAAQ,CAAQ,EAAG,CAC5B,QAAQ,KAAK,2BAA2B,EACxC,MACF,CACI,GAAA,GAAC,GAAY,EAAS,SAAW,GACrC,UAAW,CAAC,EAAK,IAAS,GAAS,UACjC,EAAK,GAAK,EACV,EAAK,SAAW,EAAS,OAAS,EAAS,EAAS,OAAS,GAAK,KAClE,EAAK,SAAW,CAAC,GAAG,EAAU,EAAK,EAAE,EAEjC,AADgB,EAAK,UAAY,EAAK,SAAS,OAAS,GAEvC,mBAAA,EAAK,SAAU,EAAK,QAAQ,EAG5C,MAAA,GACT,CAQO,2BAA2B,EAAU,EAAU,CACpD,GAAI,CAAC,MAAM,QAAQ,CAAQ,EAAG,CAC5B,QAAQ,KAAK,2BAA2B,EACxC,MACF,CACI,GAAA,CAAC,GAAY,EAAS,SAAW,EAAG,OACxC,KAAM,GAAO,EAAS,KAAK,AAAC,GAAS,EAAK,WAAa,CAAQ,EAC3D,GAAA,EAAa,MAAA,GACjB,KAAM,GAAe,EAClB,OAAO,AAAC,GAAS,EAAK,QAAQ,EAC9B,IAAI,AAAC,GAAM,EAAE,QAAQ,EACrB,KAAK,CAAC,EACF,MAAA,mBAAkB,EAAc,CAAQ,CACjD,CAUE,+BAAA,EACA,EACA,EACA,CACA,GAAI,CAAC,MAAM,QAAQ,CAAQ,EAAG,CAC5B,QAAQ,KAAK,2BAA2B,EACxC,MACF,CACI,GAAA,CAAC,GAAY,EAAS,SAAW,EAAG,MAAO,GAC/C,SAAW,KAAQ,GAAU,CAC3B,KAAM,GAAc,EAAK,UAAY,EAAK,SAAS,OAAS,EAE1D,AAAA,EAAK,WAAa,GAClB,OAAO,UAAU,SAAS,KAAK,CAAM,IAAM,mBAEpC,OAAA,OAAO,EAAM,CAAM,EACxB,GACoB,sBAAA,EAAK,SAAU,EAAU,CAAM,CAEzD,CACO,MAAA,EACT,CCtHA,qCAKA,KAAM,YAAa,AAAC,GAAS,mBAAmB,CAAI,EAC/C,QAAQ,uBAAwB,kBAAkB,EAClD,QAAQ,QAAS,MAAM,EACtB,YAAc,AAAC,GACV,mBAAmB,CAAK,EAAE,QAAQ,2CAA4C,kBAAkB,EAErG,WAAa,mBACb,YAAc,AAAC,GACb,GAAM,KAAO,KACb,GAAQ,EAAM,MAAM,EAAG,EAAE,GAEtB,EAAM,QAAQ,mBAAoB,kBAAkB,GAG/D,6BAA6B,EAAY,CAErC,SAAa,OAAO,OAAO,CAAE,EAAE,CAAU,EACrC,MAAO,GAAW,SAAY,UAC9B,GAAW,QAAU,GAAI,MAAK,KAAK,IAAG,EAAK,EAAW,QAAU,KAAK,GAErE,EAAW,SAAW,MACtB,GAAW,QAAU,EAAW,QAAQ,YAAW,GAE/C,OAAO,QAAQ,CAAU,EAC5B,OAAO,CAAC,CAAC,EAAK,KAAW,GAAS,MAAQ,IAAU,EAAK,EAQzD,IAAI,CAAC,CAAC,EAAK,KAAW,IAAU,GAAO,KAAK,IAAQ,KAAK,KAAO,EAAM,MAAM,GAAG,EAAE,IAAI,EACrF,KAAK,EAAE,CAChB,CACA,aAAa,EAAM,EAAa,EAAY,CACxC,KAAM,GAAO,2BACP,EAAM,CAAA,EACZ,GAAI,GACJ,KAAQ,GAAQ,EAAK,KAAK,SAAS,MAAM,IAAM,MAC3C,GAAI,CACA,KAAM,GAAQ,EAAW,EAAM,EAAE,EAEjC,GADA,EAAI,GAAS,EAAY,EAAM,GAAI,CAAK,EACpC,IAAS,EACT,KAEP,MACD,CAAa,CAEjB,MAAO,IAAQ,KAAO,EAAI,GAAQ,CACtC,CACA,KAAM,eAAgB,OAAO,OAAO,CAChC,WACA,YACA,WACA,WACJ,CAAC,EACK,mBAAqB,OAAO,OAAO,CACrC,KAAM,GACV,CAAC,EACD,mBAAmB,EAAM,EAAO,EAAa,mBAAoB,CAAE,YAAa,EAAgB,YAAa,WAAY,EAAe,YAAe,CAAA,EAAI,CACvJ,MAAQ,UAAS,OAAS,GAAG,EAAa,CAAI,KAAK,EAAc,EAAO,CAAI,IAAI,oBAAoB,CAAU,GAClH,CACA,mBAAmB,EAAM,CAAE,YAAa,EAAgB,YAAa,WAAY,EAAe,YAAe,GAAI,CAC/G,MAAO,KAAI,EAAM,EAAe,CAAY,CAChD,CACA,oBAAoB,CAAE,YAAa,EAAgB,YAAa,WAAY,EAAe,YAAe,GAAI,CAC1G,MAAO,KAAI,OAAW,EAAe,CAAY,CACrD,CACA,sBAAsB,EAAM,EAAa,mBAAoB,CACzD,UAAU,EAAM,GAAI,OAAO,OAAO,CAAE,EAAE,EAAY,CAC9C,QAAS,EACZ,CAAA,CAAC,CACN,CAEA,cAAc,EAAW,EAAmB,CACxC,KAAM,GAAM,CACR,IAAK,SAAU,EAAM,EAAO,EAAY,CACpC,MAAO,WAAU,EAAM,EAAO,OAAO,OAAO,CAAA,EAAI,KAAK,WAAY,CAAU,EAAG,CAC1E,YAAa,KAAK,UAAU,KAC5C,CAAa,CACJ,EACD,IAAK,SAAU,EAAM,CACjB,GAAI,UAAU,SAAW,EACrB,MAAO,YAAW,KAAK,UAAU,IAAI,EAEzC,GAAI,GAAQ,KAGZ,MAAO,WAAU,EAAM,KAAK,UAAU,IAAI,CAC7C,EACD,OAAQ,SAAU,EAAM,EAAY,CAChC,aAAa,EAAM,OAAO,OAAO,CAAE,EAAE,KAAK,WAAY,CAAU,CAAC,CACpE,EACD,eAAgB,SAAU,EAAY,CAClC,MAAO,MAAK,KAAK,UAAW,OAAO,OAAO,CAAE,EAAE,KAAK,WAAY,CAAU,CAAC,CAC7E,EACD,cAAe,SAAU,EAAW,CAChC,MAAO,MAAK,OAAO,OAAO,GAAI,KAAK,UAAW,CAAS,EAAG,KAAK,UAAU,CAC5E,CACT,EACU,EAAS,CACX,WAAY,CAAE,MAAO,OAAO,OAAO,CAAiB,CAAG,EACvD,UAAW,CAAE,MAAO,OAAO,OAAO,CAAS,CAAG,CACtD,EACI,MAAO,QAAO,OAAO,EAAK,CAAM,CACpC,CACa,KAAK,CAAE,KAAM,cAAc,YAAa,MAAO,cAAc,WAAW,EAAI,kBAAkB,ECtG3G,MAAM,OAAQ,CACZ,aAAc,CAAC,CAOf,IAAI,EAAO,UAAW,EAAQ,GAAI,CACtB,UAAA,GAAG,IAAQ,CAAK,CAC5B,CAMA,IAAI,EAAO,UAAW,CACb,MAAA,WAAU,GAAG,GAAM,CAC5B,CAKA,QAAS,CACP,MAAO,WAAU,EAAE,CACrB,CAKA,OAAO,EAAO,UAAW,CACvB,aAAa,GAAG,GAAM,CACxB,CACF,CAEawG,KAAAA,WAAU,GAAI,+SC3C3BC,OAAiB,WAAc,EAAI,EAAS,CAC1C,MAAO,WAAgB,CAErB,OADI,GAAO,GAAI,OAAM,UAAU,MAAM,EAC5B,EAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,EAAK,GAAK,UAAU,GAEtB,MAAO,GAAG,MAAM,EAAS,CAAI,CACjC,CACA,ECRIA,OAAOC,OAIP,SAAW,OAAO,UAAU,SAG5B,OAAU,SAAS,EAAO,CAE5B,MAAO,UAAS,EAAO,CACrB,GAAI,GAAM,SAAS,KAAK,CAAK,EAC7B,MAAO,GAAM,IAAS,GAAM,GAAO,EAAI,MAAM,EAAG,EAAE,EAAE,YAAa,EACrE,CACA,EAAG,OAAO,OAAO,IAAI,CAAC,EAEtB,oBAAoB,EAAM,CACxB,SAAO,EAAK,cACL,SAAkB,EAAO,CAC9B,MAAO,QAAO,CAAK,IAAM,CAC7B,CACA,CAQA,iBAAiB,EAAK,CACpB,MAAO,OAAM,QAAQ,CAAG,CAC1B,CAQA,qBAAqB,EAAK,CACxB,MAAO,OAAO,GAAQ,GACxB,CAQA,kBAAkB,EAAK,CACrB,MAAO,KAAQ,MAAQ,CAAC,YAAY,CAAG,GAAK,EAAI,cAAgB,MAAQ,CAAC,YAAY,EAAI,WAAW,GAC/F,MAAO,GAAI,YAAY,UAAa,YAAc,EAAI,YAAY,SAAS,CAAG,CACrF,CASA,GAAI,eAAgB,WAAW,aAAa,EAS5C,2BAA2B,EAAK,CAC9B,GAAI,GACJ,MAAK,OAAO,aAAgB,KAAiB,YAAY,OACvD,EAAS,YAAY,OAAO,CAAG,EAE/B,EAAU,GAAS,EAAI,QAAY,cAAc,EAAI,MAAM,EAEtD,CACT,CAQA,kBAAkB,EAAK,CACrB,MAAO,OAAO,IAAQ,QACxB,CAQA,kBAAkB,EAAK,CACrB,MAAO,OAAO,IAAQ,QACxB,CAQA,kBAAkB,EAAK,CACrB,MAAO,KAAQ,MAAQ,MAAO,IAAQ,QACxC,CAQA,uBAAuB,EAAK,CAC1B,GAAI,OAAO,CAAG,IAAM,SAClB,MAAO,GAGT,GAAI,GAAY,OAAO,eAAe,CAAG,EACzC,MAAO,KAAc,MAAQ,IAAc,OAAO,SACpD,CASA,GAAI,QAAS,WAAW,MAAM,EAS1B,OAAS,WAAW,MAAM,EAS1B,OAAS,WAAW,MAAM,EAS1B,WAAa,WAAW,UAAU,EAQtC,oBAAoB,EAAK,CACvB,MAAO,UAAS,KAAK,CAAG,IAAM,mBAChC,CAQA,kBAAkB,EAAK,CACrB,MAAO,UAAS,CAAG,GAAK,WAAW,EAAI,IAAI,CAC7C,CAQA,oBAAoB,EAAO,CACzB,GAAI,GAAU,oBACd,MAAO,IACJ,OAAO,WAAa,YAAc,YAAiB,WACpD,SAAS,KAAK,CAAK,IAAM,GACxB,WAAW,EAAM,QAAQ,GAAK,EAAM,SAAU,IAAK,EAExD,CAQA,GAAI,mBAAoB,WAAW,iBAAiB,EAQpD,cAAc,EAAK,CACjB,MAAO,GAAI,KAAO,EAAI,KAAI,EAAK,EAAI,QAAQ,aAAc,EAAE,CAC7D,CAiBA,+BAAgC,CAC9B,MAAI,OAAO,WAAc,KAAgB,WAAU,UAAY,eACtB,UAAU,UAAY,gBACtB,UAAU,UAAY,MACtD,GAGP,MAAO,QAAW,KAClB,MAAO,UAAa,GAExB,CAcA,iBAAiB,EAAK,EAAI,CAExB,GAAI,MAAQ,MAAQ,MAAO,GAAQ,KAUnC,GALI,MAAO,IAAQ,UAEjB,GAAM,CAAC,CAAG,GAGR,QAAQ,CAAG,EAEb,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,EAAI,EAAG,IACrC,EAAG,KAAK,KAAM,EAAI,GAAI,EAAG,CAAG,MAI9B,QAAS,KAAO,GACd,AAAI,OAAO,UAAU,eAAe,KAAK,EAAK,CAAG,GAC/C,EAAG,KAAK,KAAM,EAAI,GAAM,EAAK,CAAG,CAIxC,CAmBA,gBAA4C,CAC1C,GAAI,GAAS,CAAA,EACb,WAAqB,EAAK,EAAK,CAC7B,AAAI,cAAc,EAAO,EAAI,GAAK,cAAc,CAAG,EACjD,EAAO,GAAO,MAAM,EAAO,GAAM,CAAG,EAC/B,AAAI,cAAc,CAAG,EAC1B,EAAO,GAAO,MAAM,CAAE,EAAE,CAAG,EACtB,AAAI,QAAQ,CAAG,EACpB,EAAO,GAAO,EAAI,MAAK,EAEvB,EAAO,GAAO,CAEjB,CAED,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,EAAI,EAAG,IAC3C,QAAQ,UAAU,GAAI,CAAW,EAEnC,MAAO,EACT,CAUA,gBAAgB,EAAG,EAAG,EAAS,CAC7B,eAAQ,EAAG,SAAqB,EAAK,EAAK,CACxC,AAAI,GAAW,MAAO,IAAQ,WAC5B,EAAE,GAAOD,OAAK,EAAK,CAAO,EAE1B,EAAE,GAAO,CAEf,CAAG,EACM,CACT,CAQA,kBAAkB,EAAS,CACzB,MAAI,GAAQ,WAAW,CAAC,IAAM,OAC5B,GAAU,EAAQ,MAAM,CAAC,GAEpB,CACT,CAUA,kBAAkB,EAAa,EAAkB,EAAO,EAAa,CACnE,EAAY,UAAY,OAAO,OAAO,EAAiB,UAAW,CAAW,EAC7E,EAAY,UAAU,YAAc,EACpC,GAAS,OAAO,OAAO,EAAY,UAAW,CAAK,CACrD,CAUA,sBAAsB,EAAW,EAAS,EAAQ,CAChD,GAAI,GACA,EACA,EACA,EAAS,CAAA,EAEb,EAAU,GAAW,GAErB,EAAG,CAGD,IAFA,EAAQ,OAAO,oBAAoB,CAAS,EAC5C,EAAI,EAAM,OACH,KAAM,GACX,EAAO,EAAM,GACR,EAAO,IACV,GAAQ,GAAQ,EAAU,GAC1B,EAAO,GAAQ,IAGnB,EAAY,OAAO,eAAe,CAAS,CAC/C,OAAW,GAAc,EAAC,GAAU,EAAO,EAAW,CAAO,IAAM,IAAc,OAAO,WAEtF,MAAO,EACT,CASA,kBAAkB,EAAK,EAAc,EAAU,CAC7C,EAAM,OAAO,CAAG,EACZ,KAAa,QAAa,EAAW,EAAI,SAC3C,GAAW,EAAI,QAEjB,GAAY,EAAa,OACzB,GAAI,GAAY,EAAI,QAAQ,EAAc,CAAQ,EAClD,MAAO,KAAc,IAAM,IAAc,CAC3C,CAQA,iBAAiB,EAAO,CACtB,GAAI,CAAC,EAAO,MAAO,MACnB,GAAI,GAAI,EAAM,OACd,GAAI,YAAY,CAAC,EAAG,MAAO,MAE3B,OADI,GAAM,GAAI,OAAM,CAAC,EACd,KAAM,GACX,EAAI,GAAK,EAAM,GAEjB,MAAO,EACT,CAGA,GAAI,cAAgB,SAAS,EAAY,CAEvC,MAAO,UAAS,EAAO,CACrB,MAAO,IAAc,YAAiB,EAC1C,CACA,EAAG,MAAO,YAAe,KAAe,OAAO,eAAe,UAAU,CAAC,EAEzEE,QAAiB,CACf,QACA,cACA,SACA,WACA,kBACA,SACA,SACA,SACA,cACA,YACA,OACA,OACA,OACA,WACA,SACA,kBACA,qBACA,QACA,MACA,OACA,KACA,SACA,SACA,aACA,OACA,WACA,SACA,QACA,aACA,UACF,ECndIA,QAAQD,QAEZ,gBAAgB,EAAK,CACnB,MAAO,oBAAmB,CAAG,EAC3B,QAAQ,QAAS,GAAG,EACpB,QAAQ,OAAQ,GAAG,EACnB,QAAQ,QAAS,GAAG,EACpB,QAAQ,OAAQ,GAAG,EACnB,QAAQ,QAAS,GAAG,EACpB,QAAQ,QAAS,GAAG,CACxB,IASAE,YAAiB,WAAkB,EAAK,EAAQ,EAAkB,CAEhE,GAAI,CAAC,EACH,MAAO,GAGT,GAAI,GACJ,GAAI,EACF,EAAmB,EAAiB,CAAM,UACjCD,QAAM,kBAAkB,CAAM,EACvC,EAAmB,EAAO,eACrB,CACL,GAAI,GAAQ,CAAA,EAEZA,QAAM,QAAQ,EAAQ,SAAmB,EAAK,EAAK,CACjD,AAAI,IAAQ,MAAQ,MAAO,GAAQ,KAInC,CAAIA,QAAM,QAAQ,CAAG,EACnB,EAAM,EAAM,KAEZ,EAAM,CAAC,CAAG,EAGZA,QAAM,QAAQ,EAAK,SAAoB,EAAG,CACxC,AAAIA,QAAM,OAAO,CAAC,EAChB,EAAI,EAAE,cACGA,QAAM,SAAS,CAAC,GACzB,GAAI,KAAK,UAAU,CAAC,GAEtB,EAAM,KAAK,OAAO,CAAG,EAAI,IAAM,OAAO,CAAC,CAAC,CAChD,CAAO,EACP,CAAK,EAED,EAAmB,EAAM,KAAK,GAAG,CAClC,CAED,GAAI,EAAkB,CACpB,GAAI,GAAgB,EAAI,QAAQ,GAAG,EACnC,AAAI,IAAkB,IACpB,GAAM,EAAI,MAAM,EAAG,CAAa,GAGlC,GAAQ,GAAI,QAAQ,GAAG,IAAM,GAAK,IAAM,KAAO,CAChD,CAED,MAAO,EACT,ECnEIA,QAAQD,QAEZ,+BAA8B,CAC5B,KAAK,SAAW,EAClB,CAUAG,qBAAmB,UAAU,IAAM,WAAa,EAAW,EAAU,EAAS,CAC5E,YAAK,SAAS,KAAK,CACjB,UAAW,EACX,SAAU,EACV,YAAa,EAAU,EAAQ,YAAc,GAC7C,QAAS,EAAU,EAAQ,QAAU,IACzC,CAAG,EACM,KAAK,SAAS,OAAS,CAChC,EAOkB,qBAAC,UAAU,MAAQ,WAAe,EAAI,CACtD,AAAI,KAAK,SAAS,IAChB,MAAK,SAAS,GAAM,KAExB,EAUkB,qBAAC,UAAU,QAAU,WAAiB,EAAI,CAC1DF,QAAM,QAAQ,KAAK,SAAU,SAAwB,EAAG,CACtD,AAAI,IAAM,MACR,EAAG,CAAC,CAEV,CAAG,CACH,EAEA,GAAA,sBAAiBE,qBCnDbF,QAAQD,QAEZI,sBAAiB,WAA6B,EAAS,EAAgB,CACrEH,QAAM,QAAQ,EAAS,SAAuB,EAAO,EAAM,CACzD,AAAI,IAAS,GAAkB,EAAK,YAAW,IAAO,EAAe,eACnE,GAAQ,GAAkB,EAC1B,MAAO,GAAQ,GAErB,CAAG,CACH,ECTIA,QAAQD,QAYZ,sBAAoB,EAAS,EAAM,EAAQ,EAAS,EAAU,CAC5D,MAAM,KAAK,IAAI,EACf,KAAK,QAAU,EACf,KAAK,KAAO,aACZ,GAAS,MAAK,KAAO,GACrB,GAAW,MAAK,OAAS,GACzB,GAAY,MAAK,QAAU,GAC3B,GAAa,MAAK,SAAW,EAC/B,CAEAC,QAAM,SAASI,aAAY,MAAO,CAChC,OAAQ,YAAkB,CACxB,MAAO,CAEL,QAAS,KAAK,QACd,KAAM,KAAK,KAEX,YAAa,KAAK,YAClB,OAAQ,KAAK,OAEb,SAAU,KAAK,SACf,WAAY,KAAK,WACjB,aAAc,KAAK,aACnB,MAAO,KAAK,MAEZ,OAAQ,KAAK,OACb,KAAM,KAAK,KACX,OAAQ,KAAK,UAAY,KAAK,SAAS,OAAS,KAAK,SAAS,OAAS,IAC7E,CACG,CACH,CAAC,EAED,GAAI,WAAYA,aAAW,UACvB,YAAc,CAAA,EAElB,CACE,uBACA,iBACA,eACA,YACA,cACA,4BACA,iBACA,mBACA,kBACA,cAEF,EAAE,QAAQ,SAAS,EAAM,CACvB,YAAY,GAAQ,CAAC,MAAO,CAAI,CAClC,CAAC,EAED,OAAO,iBAAiBA,aAAY,WAAW,EAC/C,OAAO,eAAe,UAAW,eAAgB,CAAC,MAAO,EAAI,CAAC,EAG9DA,aAAW,KAAO,SAAS,EAAO,EAAM,EAAQ,EAAS,EAAU,EAAa,CAC9E,GAAI,GAAa,OAAO,OAAO,SAAS,EAExCJ,eAAM,aAAa,EAAO,EAAY,SAAgB,EAAK,CACzD,MAAO,KAAQ,MAAM,SACzB,CAAG,EAEDI,aAAW,KAAK,EAAY,EAAM,QAAS,EAAM,EAAQ,EAAS,CAAQ,EAE1E,EAAW,KAAO,EAAM,KAExB,GAAe,OAAO,OAAO,EAAY,CAAW,EAE7C,CACT,EAEA,GAAA,cAAiBA,aCnFjB,aAAiB,CACf,kBAAmB,GACnB,kBAAmB,GACnB,oBAAqB,EACvB,ECJIJ,QAAQD,QASZ,sBAAoB,EAAK,EAAU,CAEjC,EAAW,GAAY,GAAI,UAE3B,GAAI,GAAQ,CAAA,EAEZ,WAAsB,EAAO,CAC3B,MAAI,KAAU,KAAa,GAEvBC,QAAM,OAAO,CAAK,EACb,EAAM,cAGXA,QAAM,cAAc,CAAK,GAAKA,QAAM,aAAa,CAAK,EACjD,MAAO,OAAS,WAAa,GAAI,MAAK,CAAC,CAAK,CAAC,EAAI,OAAO,KAAK,CAAK,EAGpE,CACR,CAED,WAAe,EAAM,EAAW,CAC9B,GAAIA,QAAM,cAAc,CAAI,GAAKA,QAAM,QAAQ,CAAI,EAAG,CACpD,GAAI,EAAM,QAAQ,CAAI,IAAM,GAC1B,KAAM,OAAM,kCAAoC,CAAS,EAG3D,EAAM,KAAK,CAAI,EAEfA,QAAM,QAAQ,EAAM,SAAc,EAAO,EAAK,CAC5C,GAAIA,SAAM,YAAY,CAAK,EAC3B,IAAI,GAAU,EAAY,EAAY,IAAM,EAAM,EAC9C,EAEJ,GAAI,GAAS,CAAC,GAAa,MAAO,IAAU,UAC1C,GAAIA,QAAM,SAAS,EAAK,IAAI,EAE1B,EAAQ,KAAK,UAAU,CAAK,UACnBA,QAAM,SAAS,EAAK,IAAI,GAAM,GAAMA,QAAM,QAAQ,CAAK,GAAI,CAEpE,EAAI,QAAQ,SAAS,EAAI,CACvB,CAACA,QAAM,YAAY,CAAE,GAAK,EAAS,OAAO,EAAS,EAAa,CAAE,CAAC,CACjF,CAAa,EACD,MACD,EAGH,EAAM,EAAO,CAAO,EAC5B,CAAO,EAED,EAAM,IAAG,CACf,KACM,GAAS,OAAO,EAAW,EAAa,CAAI,CAAC,CAEhD,CAED,SAAM,CAAG,EAEF,CACT,CAEA,GAAA,cAAiBK,sHCrEjB,GAAI,GAAaN,aASH,cAAG,SAAgB,EAAS,EAAQ,EAAU,CAC1D,GAAI,GAAiB,EAAS,OAAO,eACrC,AAAI,CAAC,EAAS,QAAU,CAAC,GAAkB,EAAe,EAAS,MAAM,EACvE,EAAQ,CAAQ,EAEhB,EAAO,GAAI,GACT,mCAAqC,EAAS,OAC9C,CAAC,EAAW,gBAAiB,EAAW,gBAAgB,EAAE,KAAK,MAAM,EAAS,OAAS,GAAG,EAAI,GAC9F,EAAS,OACT,EAAS,QACT,CACN,CAAK,6HCpBL,GAAI,GAAQA,QAEE,eACZ,EAAM,qBAAsB,EAGzB,UAA8B,CAC7B,MAAO,CACL,MAAO,SAAe,EAAM,EAAO,EAAS,EAAM,EAAQ,EAAQ,CAChE,GAAI,GAAS,CAAA,EACb,EAAO,KAAK,EAAO,IAAM,mBAAmB,CAAK,CAAC,EAE9C,EAAM,SAAS,CAAO,GACxB,EAAO,KAAK,WAAa,GAAI,MAAK,CAAO,EAAE,YAAW,CAAE,EAGtD,EAAM,SAAS,CAAI,GACrB,EAAO,KAAK,QAAU,CAAI,EAGxB,EAAM,SAAS,CAAM,GACvB,EAAO,KAAK,UAAY,CAAM,EAG5B,IAAW,IACb,EAAO,KAAK,QAAQ,EAGtB,SAAS,OAAS,EAAO,KAAK,IAAI,CACnC,EAED,KAAM,SAAc,EAAM,CACxB,GAAI,GAAQ,SAAS,OAAO,MAAM,GAAI,QAAO,aAAe,EAAO,WAAW,CAAC,EAC/E,MAAQ,GAAQ,mBAAmB,EAAM,EAAE,EAAI,IAChD,EAED,OAAQ,SAAgB,EAAM,CAC5B,KAAK,MAAM,EAAM,GAAI,KAAK,IAAG,EAAK,KAAQ,CAC3C,CACT,CACA,EAAQ,EAGH,UAAiC,CAChC,MAAO,CACL,MAAO,UAAiB,CAAE,EAC1B,KAAM,UAAgB,CAAE,MAAO,KAAO,EACtC,OAAQ,UAAkB,CAAE,CACpC,CACA,EAAQ,UC3CR,GAAAO,iBAAiB,WAAuB,EAAK,CAI3C,MAAO,8BAA8B,KAAK,CAAG,CAC/C,ECJAC,cAAiB,WAAqB,EAAS,EAAa,CAC1D,MAAO,GACH,EAAQ,QAAQ,OAAQ,EAAE,EAAI,IAAM,EAAY,QAAQ,OAAQ,EAAE,EAClE,CACN,ECXI,cAAgBR,gBAChB,YAAcS,cAWlBC,gBAAiB,WAAuB,EAAS,EAAc,CAC7D,MAAI,IAAW,CAAC,cAAc,CAAY,EACjC,YAAY,EAAS,CAAY,EAEnC,CACT,+ICjBA,GAAI,GAAQV,QAIR,EAAoB,CACtB,MAAO,gBAAiB,iBAAkB,eAAgB,OAC1D,UAAW,OAAQ,OAAQ,oBAAqB,sBAChD,gBAAiB,WAAY,eAAgB,sBAC7C,UAAW,cAAe,YAC5B,EAeA,oBAAiB,SAAsB,EAAS,CAC9C,GAAI,GAAS,CAAA,EACT,EACA,EACA,EAEJ,MAAK,IAEL,EAAM,QAAQ,EAAQ,MAAM;AAAA,CAAI,EAAG,SAAgB,EAAM,CAKvD,GAJA,EAAI,EAAK,QAAQ,GAAG,EACpB,EAAM,EAAM,KAAK,EAAK,OAAO,EAAG,CAAC,CAAC,EAAE,cACpC,EAAM,EAAM,KAAK,EAAK,OAAO,EAAI,CAAC,CAAC,EAE/B,EAAK,CACP,GAAI,EAAO,IAAQ,EAAkB,QAAQ,CAAG,GAAK,EACnD,OAEF,AAAI,IAAQ,aACV,EAAO,GAAQ,GAAO,GAAO,EAAO,GAAO,CAAA,GAAI,OAAO,CAAC,CAAG,CAAC,EAE3D,EAAO,GAAO,EAAO,GAAO,EAAO,GAAO,KAAO,EAAM,CAE1D,CACL,CAAG,EAEM,mLCjDT,GAAI,GAAQA,QAEE,uBACZ,EAAM,qBAAsB,EAIzB,UAA8B,CAC7B,GAAI,GAAO,kBAAkB,KAAK,UAAU,SAAS,EACjD,EAAiB,SAAS,cAAc,GAAG,EAC3C,EAQJ,WAAoB,EAAK,CACvB,GAAI,GAAO,EAEX,MAAI,IAEF,GAAe,aAAa,OAAQ,CAAI,EACxC,EAAO,EAAe,MAGxB,EAAe,aAAa,OAAQ,CAAI,EAGjC,CACL,KAAM,EAAe,KACrB,SAAU,EAAe,SAAW,EAAe,SAAS,QAAQ,KAAM,EAAE,EAAI,GAChF,KAAM,EAAe,KACrB,OAAQ,EAAe,OAAS,EAAe,OAAO,QAAQ,MAAO,EAAE,EAAI,GAC3E,KAAM,EAAe,KAAO,EAAe,KAAK,QAAQ,KAAM,EAAE,EAAI,GACpE,SAAU,EAAe,SACzB,KAAM,EAAe,KACrB,SAAW,EAAe,SAAS,OAAO,CAAC,IAAM,IAC/C,EAAe,SACf,IAAM,EAAe,QACjC,CACO,CAED,SAAY,EAAW,OAAO,SAAS,IAAI,EAQpC,SAAyB,EAAY,CAC1C,GAAI,GAAU,EAAM,SAAS,CAAU,EAAK,EAAW,CAAU,EAAI,EACrE,MAAQ,GAAO,WAAa,EAAU,UAClC,EAAO,OAAS,EAAU,IACtC,CACA,EAAQ,EAGH,UAAiC,CAChC,MAAO,WAA2B,CAChC,MAAO,EACf,CACA,EAAQ,6KChER,GAAI,GAAaA,aACb,EAAQS,QAQZ,WAAuB,EAAS,CAE9B,EAAW,KAAK,KAAM,GAAW,KAAO,WAAa,EAAS,EAAW,YAAY,EACrF,KAAK,KAAO,eACb,CAED,SAAM,SAAS,EAAe,EAAY,CACxC,WAAY,EACd,CAAC,EAED,gBAAiB,0JCnBjB,cAAiB,SAAuB,EAAK,CAC3C,GAAI,GAAQ,4BAA4B,KAAK,CAAG,EAChD,MAAO,IAAS,EAAM,IAAM,8GCF9B,GAAI,GAAQT,QACR,EAASS,gBACT,EAAUE,iBACV,EAAWC,WACX,EAAgBC,gBAChB,EAAeC,sBACf,EAAkBC,yBAClB,EAAuBC,aACvB,EAAaC,aACb,EAAgBC,uBAChB,EAAgBC,uBAEpB,WAAiB,SAAoB,EAAQ,CAC3C,MAAO,IAAI,SAAQ,SAA4B,EAAS,EAAQ,CAC9D,GAAI,GAAc,EAAO,KACrB,EAAiB,EAAO,QACxB,EAAe,EAAO,aACtB,EACJ,YAAgB,CACd,AAAI,EAAO,aACT,EAAO,YAAY,YAAY,CAAU,EAGvC,EAAO,QACT,EAAO,OAAO,oBAAoB,QAAS,CAAU,CAExD,CAED,AAAI,EAAM,WAAW,CAAW,GAAK,EAAM,qBAAoB,GAC7D,MAAO,GAAe,gBAGxB,GAAI,GAAU,GAAI,gBAGlB,GAAI,EAAO,KAAM,CACf,GAAI,GAAW,EAAO,KAAK,UAAY,GACnC,EAAW,EAAO,KAAK,SAAW,SAAS,mBAAmB,EAAO,KAAK,QAAQ,CAAC,EAAI,GAC3F,EAAe,cAAgB,SAAW,KAAK,EAAW,IAAM,CAAQ,CACzE,CAED,GAAI,GAAW,EAAc,EAAO,QAAS,EAAO,GAAG,EAEvD,EAAQ,KAAK,EAAO,OAAO,YAAa,EAAE,EAAS,EAAU,EAAO,OAAQ,EAAO,gBAAgB,EAAG,EAAI,EAG1G,EAAQ,QAAU,EAAO,QAEzB,YAAqB,CACnB,GAAI,EAAC,EAIL,IAAI,GAAkB,yBAA2B,GAAU,EAAa,EAAQ,sBAAqB,CAAE,EAAI,KACvG,EAAe,CAAC,GAAgB,IAAiB,QAAW,IAAiB,OAC/E,EAAQ,aAAe,EAAQ,SAC7B,EAAW,CACb,KAAM,EACN,OAAQ,EAAQ,OAChB,WAAY,EAAQ,WACpB,QAAS,EACT,OAAQ,EACR,QAAS,CACjB,EAEM,EAAO,SAAkB,EAAO,CAC9B,EAAQ,CAAK,EACb,GACR,EAAS,SAAiB,EAAK,CACvB,EAAO,CAAG,EACV,GACD,EAAE,CAAQ,EAGX,EAAU,KACX,CAmED,GAjEA,AAAI,aAAe,GAEjB,EAAQ,UAAY,EAGpB,EAAQ,mBAAqB,UAAsB,CACjD,AAAI,CAAC,GAAW,EAAQ,aAAe,GAQnC,EAAQ,SAAW,GAAK,CAAE,GAAQ,aAAe,EAAQ,YAAY,QAAQ,OAAO,IAAM,IAK9F,WAAW,CAAS,CAC5B,EAII,EAAQ,QAAU,UAAuB,CACvC,AAAI,CAAC,GAIL,GAAO,GAAI,GAAW,kBAAmB,EAAW,aAAc,EAAQ,CAAO,CAAC,EAGlF,EAAU,KAChB,EAGI,EAAQ,QAAU,UAAuB,CAGvC,EAAO,GAAI,GAAW,gBAAiB,EAAW,YAAa,EAAQ,EAAS,CAAO,CAAC,EAGxF,EAAU,IAChB,EAGI,EAAQ,UAAY,UAAyB,CAC3C,GAAI,GAAsB,EAAO,QAAU,cAAgB,EAAO,QAAU,cAAgB,mBACxF,EAAe,EAAO,cAAgB,EAC1C,AAAI,EAAO,qBACT,GAAsB,EAAO,qBAE/B,EAAO,GAAI,GACT,EACA,EAAa,oBAAsB,EAAW,UAAY,EAAW,aACrE,EACA,CAAO,CAAC,EAGV,EAAU,IAChB,EAKQ,EAAM,uBAAwB,CAEhC,GAAI,GAAa,GAAO,iBAAmB,EAAgB,CAAQ,IAAM,EAAO,eAC9E,EAAQ,KAAK,EAAO,cAAc,EAClC,OAEF,AAAI,GACF,GAAe,EAAO,gBAAkB,EAE3C,CAGD,AAAI,oBAAsB,IACxB,EAAM,QAAQ,EAAgB,SAA0B,EAAK,EAAK,CAChE,AAAI,MAAO,GAAgB,KAAe,EAAI,YAAW,IAAO,eAE9D,MAAO,GAAe,GAGtB,EAAQ,iBAAiB,EAAK,CAAG,CAE3C,CAAO,EAIE,EAAM,YAAY,EAAO,eAAe,GAC3C,GAAQ,gBAAkB,CAAC,CAAC,EAAO,iBAIjC,GAAgB,IAAiB,QACnC,GAAQ,aAAe,EAAO,cAI5B,MAAO,GAAO,oBAAuB,YACvC,EAAQ,iBAAiB,WAAY,EAAO,kBAAkB,EAI5D,MAAO,GAAO,kBAAqB,YAAc,EAAQ,QAC3D,EAAQ,OAAO,iBAAiB,WAAY,EAAO,gBAAgB,EAGjE,GAAO,aAAe,EAAO,SAG/B,GAAa,SAAS,EAAQ,CAC5B,AAAI,CAAC,GAGL,GAAO,CAAC,GAAW,GAAU,EAAO,KAAQ,GAAI,GAAkB,CAAM,EACxE,EAAQ,MAAK,EACb,EAAU,KAClB,EAEM,EAAO,aAAe,EAAO,YAAY,UAAU,CAAU,EACzD,EAAO,QACT,GAAO,OAAO,QAAU,EAAY,EAAG,EAAO,OAAO,iBAAiB,QAAS,CAAU,IAIxF,GACH,GAAc,MAGhB,GAAI,GAAW,EAAc,CAAQ,EAErC,GAAI,GAAY,CAAE,OAAQ,QAAS,MAAQ,EAAC,QAAQ,CAAQ,IAAM,GAAI,CACpE,EAAO,GAAI,GAAW,wBAA0B,EAAW,IAAK,EAAW,gBAAiB,CAAM,CAAC,EACnG,MACD,CAID,EAAQ,KAAK,CAAW,CAC5B,CAAG,uGC3NH,MAAiB,YCCjB,GAAIlB,SAAQD,QACR,oBAAsBS,sBACtBJ,aAAaM,aACb,qBAAuBC,aACvB,WAAaC,aAEb,qBAAuB,CACzB,eAAgB,mCAClB,EAEA,+BAA+B,EAAS,EAAO,CAC7C,AAAI,CAACZ,QAAM,YAAY,CAAO,GAAKA,QAAM,YAAY,EAAQ,eAAe,GAC1E,GAAQ,gBAAkB,EAE9B,CAEA,4BAA6B,CAC3B,GAAI,GACJ,MAAI,OAAO,gBAAmB,KAGnB,MAAO,SAAY,KAAe,OAAO,UAAU,SAAS,KAAK,OAAO,IAAM,qBAEvF,GAAUc,WAAA,GAEL,CACT,CAEA,yBAAyB,EAAU,EAAQ,EAAS,CAClD,GAAId,QAAM,SAAS,CAAQ,EACzB,GAAI,CACF,MAAC,IAAU,KAAK,OAAO,CAAQ,EACxBA,QAAM,KAAK,CAAQ,CAC3B,OAAQ,EAAP,CACA,GAAI,EAAE,OAAS,cACb,KAAM,EAET,CAGH,MAAQ,IAAW,KAAK,WAAW,CAAQ,CAC7C,CAEA,GAAImB,YAAW,CAEb,aAAc,qBAEd,QAAS,kBAAmB,EAE5B,iBAAkB,CAAC,WAA0B,EAAM,EAAS,CAI1D,GAHA,oBAAoB,EAAS,QAAQ,EACrC,oBAAoB,EAAS,cAAc,EAEvCnB,QAAM,WAAW,CAAI,GACvBA,QAAM,cAAc,CAAI,GACxBA,QAAM,SAAS,CAAI,GACnBA,QAAM,SAAS,CAAI,GACnBA,QAAM,OAAO,CAAI,GACjBA,QAAM,OAAO,CAAI,EAEjB,MAAO,GAET,GAAIA,QAAM,kBAAkB,CAAI,EAC9B,MAAO,GAAK,OAEd,GAAIA,QAAM,kBAAkB,CAAI,EAC9B,6BAAsB,EAAS,iDAAiD,EACzE,EAAK,WAGd,GAAI,GAAkBA,QAAM,SAAS,CAAI,EACrC,EAAc,GAAW,EAAQ,gBAEjC,EAEJ,GAAK,GAAaA,QAAM,WAAW,CAAI,IAAO,GAAmB,IAAgB,sBAAwB,CACvG,GAAI,GAAY,KAAK,KAAO,KAAK,IAAI,SACrC,MAAO,YAAW,EAAa,CAAC,UAAW,CAAI,EAAI,EAAM,GAAa,GAAI,EAAW,CAC3F,SAAe,GAAmB,IAAgB,mBAC5C,6BAAsB,EAAS,kBAAkB,EAC1C,gBAAgB,CAAI,EAG7B,MAAO,EACX,CAAG,EAED,kBAAmB,CAAC,WAA2B,EAAM,CACnD,GAAI,GAAe,KAAK,cAAgBmB,WAAS,aAC7C,EAAoB,GAAgB,EAAa,kBACjD,EAAoB,GAAgB,EAAa,kBACjD,EAAoB,CAAC,GAAqB,KAAK,eAAiB,OAEpE,GAAI,GAAsB,GAAqBnB,QAAM,SAAS,CAAI,GAAK,EAAK,OAC1E,GAAI,CACF,MAAO,MAAK,MAAM,CAAI,CACvB,OAAQ,EAAP,CACA,GAAI,EACF,KAAI,GAAE,OAAS,cACPI,aAAW,KAAK,EAAGA,aAAW,iBAAkB,KAAM,KAAM,KAAK,QAAQ,EAE3E,CAET,CAGH,MAAO,EACX,CAAG,EAMD,QAAS,EAET,eAAgB,aAChB,eAAgB,eAEhB,iBAAkB,GAClB,cAAe,GAEf,IAAK,CACH,SAAUW,aAAyB,CACpC,EAED,eAAgB,WAAwB,EAAQ,CAC9C,MAAO,IAAU,KAAO,EAAS,GAClC,EAED,QAAS,CACP,OAAQ,CACN,OAAU,mCACX,CACF,CACH,EAEAf,QAAM,QAAQ,CAAC,SAAU,MAAO,MAAM,EAAG,WAA6B,EAAQ,CAC5EmB,WAAS,QAAQ,GAAU,EAC7B,CAAC,EAEDnB,QAAM,QAAQ,CAAC,OAAQ,MAAO,OAAO,EAAG,WAA+B,EAAQ,CAC7EmB,WAAS,QAAQ,GAAUnB,QAAM,MAAM,oBAAoB,CAC7D,CAAC,EAED,GAAA,YAAiBmB,WC/IbnB,QAAQD,QACRoB,WAAWX,WAUfY,gBAAiB,WAAuB,EAAM,EAAS,EAAK,CAC1D,GAAI,GAAU,MAAQD,WAEtBnB,eAAM,QAAQ,EAAK,SAAmB,EAAI,CACxC,EAAO,EAAG,KAAK,EAAS,EAAM,CAAO,CACzC,CAAG,EAEM,CACT,+GCnBAqB,WAAiB,SAAkB,EAAO,CACxC,MAAO,CAAC,CAAE,IAAS,EAAM,yBCD3B,GAAIrB,SAAQD,QACR,cAAgBS,gBAChB,SAAWE,gBAAA,EACXS,WAAWR,WACX,cAAgBC,qBAAA,EAKpB,sCAAsC,EAAQ,CAK5C,GAJI,EAAO,aACT,EAAO,YAAY,mBAGjB,EAAO,QAAU,EAAO,OAAO,QACjC,KAAM,IAAI,cAEd,CAQA,GAAAU,mBAAiB,WAAyB,EAAQ,CAChD,6BAA6B,CAAM,EAGnC,EAAO,QAAU,EAAO,SAAW,CAAA,EAGnC,EAAO,KAAO,cAAc,KAC1B,EACA,EAAO,KACP,EAAO,QACP,EAAO,gBACX,EAGE,EAAO,QAAUtB,QAAM,MACrB,EAAO,QAAQ,QAAU,CAAE,EAC3B,EAAO,QAAQ,EAAO,SAAW,CAAE,EACnC,EAAO,OACX,EAEEA,QAAM,QACJ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,QAAQ,EAC1D,SAA2B,EAAQ,CACjC,MAAO,GAAO,QAAQ,EACvB,CACL,EAEE,GAAI,GAAU,EAAO,SAAWmB,WAAS,QAEzC,MAAO,GAAQ,CAAM,EAAE,KAAK,SAA6B,EAAU,CACjE,oCAA6B,CAAM,EAGnC,EAAS,KAAO,cAAc,KAC5B,EACA,EAAS,KACT,EAAS,QACT,EAAO,iBACb,EAEW,CACX,EAAK,SAA4B,EAAQ,CACrC,MAAK,UAAS,CAAM,GAClB,8BAA6B,CAAM,EAG/B,GAAU,EAAO,UACnB,GAAO,SAAS,KAAO,cAAc,KACnC,EACA,EAAO,SAAS,KAChB,EAAO,SAAS,QAChB,EAAO,iBACjB,IAIW,QAAQ,OAAO,CAAM,CAChC,CAAG,CACH,ECpFInB,QAAQD,QAUZwB,cAAiB,WAAqB,EAAS,EAAS,CAEtD,EAAU,GAAW,GACrB,GAAI,GAAS,CAAA,EAEb,WAAwB,EAAQ,EAAQ,CACtC,MAAIvB,SAAM,cAAc,CAAM,GAAKA,QAAM,cAAc,CAAM,EACpDA,QAAM,MAAM,EAAQ,CAAM,EACxBA,QAAM,cAAc,CAAM,EAC5BA,QAAM,MAAM,CAAE,EAAE,CAAM,EACpBA,QAAM,QAAQ,CAAM,EACtB,EAAO,QAET,CACR,CAGD,WAA6B,EAAM,CACjC,GAAKA,QAAM,YAAY,EAAQ,EAAK,GAE7B,GAAI,CAACA,QAAM,YAAY,EAAQ,EAAK,EACzC,MAAO,GAAe,OAAW,EAAQ,EAAK,MAF9C,OAAO,GAAe,EAAQ,GAAO,EAAQ,EAAK,CAIrD,CAGD,WAA0B,EAAM,CAC9B,GAAI,CAACA,QAAM,YAAY,EAAQ,EAAK,EAClC,MAAO,GAAe,OAAW,EAAQ,EAAK,CAEjD,CAGD,WAA0B,EAAM,CAC9B,GAAKA,QAAM,YAAY,EAAQ,EAAK,GAE7B,GAAI,CAACA,QAAM,YAAY,EAAQ,EAAK,EACzC,MAAO,GAAe,OAAW,EAAQ,EAAK,MAF9C,OAAO,GAAe,OAAW,EAAQ,EAAK,CAIjD,CAGD,WAAyB,EAAM,CAC7B,GAAI,IAAQ,GACV,MAAO,GAAe,EAAQ,GAAO,EAAQ,EAAK,EAC7C,GAAI,IAAQ,GACjB,MAAO,GAAe,OAAW,EAAQ,EAAK,CAEjD,CAED,GAAI,GAAW,CACb,IAAO,EACP,OAAU,EACV,KAAQ,EACR,QAAW,EACX,iBAAoB,EACpB,kBAAqB,EACrB,iBAAoB,EACpB,QAAW,EACX,eAAkB,EAClB,gBAAmB,EACnB,QAAW,EACX,aAAgB,EAChB,eAAkB,EAClB,eAAkB,EAClB,iBAAoB,EACpB,mBAAsB,EACtB,WAAc,EACd,iBAAoB,EACpB,cAAiB,EACjB,eAAkB,EAClB,UAAa,EACb,UAAa,EACb,WAAc,EACd,YAAe,EACf,WAAc,EACd,iBAAoB,EACpB,eAAkB,CACtB,EAEEA,eAAM,QAAQ,OAAO,KAAK,CAAO,EAAE,OAAO,OAAO,KAAK,CAAO,CAAC,EAAG,SAA4B,EAAM,CACjG,GAAI,GAAQ,EAAS,IAAS,EAC1B,EAAc,EAAM,CAAI,EAC5B,AAACA,QAAM,YAAY,CAAW,GAAK,IAAU,GAAqB,GAAO,GAAQ,EACrF,CAAG,EAEM,CACT,yFCnGA,KAAiB,CACf,QAAW,gBCCb,GAAI,SAAUD,YAAsB,EAAC,QACjC,WAAaS,aAEbgB,aAAa,CAAA,EAGjB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,QAAQ,EAAE,QAAQ,SAAS,EAAM,EAAG,CACxFA,aAAW,GAAQ,SAAmB,EAAO,CAC3C,MAAO,OAAO,KAAU,GAAQ,IAAO,GAAI,EAAI,KAAO,KAAO,CACjE,CACA,CAAC,EAED,GAAI,oBAAqB,CAAA,EASf,aAAC,aAAe,WAAsB,EAAW,EAAS,EAAS,CAC3E,WAAuB,EAAK,EAAM,CAChC,MAAO,WAAa,QAAU,0BAA6B,EAAM,IAAO,EAAQ,GAAU,KAAO,EAAU,GAC5G,CAGD,MAAO,UAAS,EAAO,EAAK,EAAM,CAChC,GAAI,IAAc,GAChB,KAAM,IAAI,YACR,EAAc,EAAK,oBAAuB,GAAU,OAAS,EAAU,GAAG,EAC1E,WAAW,cACnB,EAGI,MAAI,IAAW,CAAC,mBAAmB,IACjC,oBAAmB,GAAO,GAE1B,QAAQ,KACN,EACE,EACA,+BAAiC,EAAU,yCAC5C,CACT,GAGW,EAAY,EAAU,EAAO,EAAK,CAAI,EAAI,EACrD,CACA,EASA,uBAAuB,EAAS,EAAQ,EAAc,CACpD,GAAI,MAAO,IAAY,SACrB,KAAM,IAAI,YAAW,4BAA6B,WAAW,oBAAoB,EAInF,OAFI,GAAO,OAAO,KAAK,CAAO,EAC1B,EAAI,EAAK,OACN,KAAM,GAAG,CACd,GAAI,GAAM,EAAK,GACX,EAAY,EAAO,GACvB,GAAI,EAAW,CACb,GAAI,GAAQ,EAAQ,GAChB,EAAS,IAAU,QAAa,EAAU,EAAO,EAAK,CAAO,EACjE,GAAI,IAAW,GACb,KAAM,IAAI,YAAW,UAAY,EAAM,YAAc,EAAQ,WAAW,oBAAoB,EAE9F,QACD,CACD,GAAI,IAAiB,GACnB,KAAM,IAAI,YAAW,kBAAoB,EAAK,WAAW,cAAc,CAE1E,CACH,CAEA,GAAAC,aAAiB,CACf,cACA,WAAYD,YACd,ECnFIxB,QAAQD,QACR,SAAWS,WACX,mBAAqBE,qBACrB,gBAAkBC,kBAClBY,cAAcX,cACd,cAAgBC,gBAChB,UAAYC,YAEZ,WAAa,UAAU,WAM3B,iBAAe,EAAgB,CAC7B,KAAK,SAAW,EAChB,KAAK,aAAe,CAClB,QAAS,GAAI,oBACb,SAAU,GAAI,mBAClB,CACA,CAOK,QAAC,UAAU,QAAU,WAAiB,EAAa,EAAQ,CAG9D,AAAI,MAAO,IAAgB,SACzB,GAAS,GAAU,GACnB,EAAO,IAAM,GAEb,EAAS,GAAe,GAG1B,EAASS,cAAY,KAAK,SAAU,CAAM,EAG1C,AAAI,EAAO,OACT,EAAO,OAAS,EAAO,OAAO,YAAW,EACpC,AAAI,KAAK,SAAS,OACvB,EAAO,OAAS,KAAK,SAAS,OAAO,YAAW,EAEhD,EAAO,OAAS,MAGlB,GAAI,GAAe,EAAO,aAE1B,AAAI,IAAiB,QACnB,UAAU,cAAc,EAAc,CACpC,kBAAmB,WAAW,aAAa,WAAW,OAAO,EAC7D,kBAAmB,WAAW,aAAa,WAAW,OAAO,EAC7D,oBAAqB,WAAW,aAAa,WAAW,OAAO,CAChE,EAAE,EAAK,EAIV,GAAI,GAA0B,CAAA,EAC1B,EAAiC,GACrC,KAAK,aAAa,QAAQ,QAAQ,SAAoC,EAAa,CACjF,AAAI,MAAO,GAAY,SAAY,YAAc,EAAY,QAAQ,CAAM,IAAM,IAIjF,GAAiC,GAAkC,EAAY,YAE/E,EAAwB,QAAQ,EAAY,UAAW,EAAY,QAAQ,EAC/E,CAAG,EAED,GAAI,GAA2B,CAAA,EAC/B,KAAK,aAAa,SAAS,QAAQ,SAAkC,EAAa,CAChF,EAAyB,KAAK,EAAY,UAAW,EAAY,QAAQ,CAC7E,CAAG,EAED,GAAI,GAEJ,GAAI,CAAC,EAAgC,CACnC,GAAI,GAAQ,CAAC,gBAAiB,MAAS,EAMvC,IAJA,MAAM,UAAU,QAAQ,MAAM,EAAO,CAAuB,EAC5D,EAAQ,EAAM,OAAO,CAAwB,EAE7C,EAAU,QAAQ,QAAQ,CAAM,EACzB,EAAM,QACX,EAAU,EAAQ,KAAK,EAAM,MAAK,EAAI,EAAM,MAAK,CAAE,EAGrD,MAAO,EACR,CAID,OADI,GAAY,EACT,EAAwB,QAAQ,CACrC,GAAI,GAAc,EAAwB,QACtC,EAAa,EAAwB,QACzC,GAAI,CACF,EAAY,EAAY,CAAS,CAClC,OAAQ,EAAP,CACA,EAAW,CAAK,EAChB,KACD,CACF,CAED,GAAI,CACF,EAAU,gBAAgB,CAAS,CACpC,OAAQ,EAAP,CACA,MAAO,SAAQ,OAAO,CAAK,CAC5B,CAED,KAAO,EAAyB,QAC9B,EAAU,EAAQ,KAAK,EAAyB,MAAK,EAAI,EAAyB,MAAK,CAAE,EAG3F,MAAO,EACT,EAEK,QAAC,UAAU,OAAS,WAAgB,EAAQ,CAC/C,EAASA,cAAY,KAAK,SAAU,CAAM,EAC1C,GAAI,GAAW,cAAc,EAAO,QAAS,EAAO,GAAG,EACvD,MAAO,UAAS,EAAU,EAAO,OAAQ,EAAO,gBAAgB,CAClE,EAGAvB,QAAM,QAAQ,CAAC,SAAU,MAAO,OAAQ,SAAS,EAAG,WAA6B,EAAQ,CAEvF0B,QAAM,UAAU,GAAU,SAAS,EAAK,EAAQ,CAC9C,MAAO,MAAK,QAAQH,cAAY,GAAU,CAAA,EAAI,CAC5C,OAAQ,EACR,IAAK,EACL,KAAO,IAAU,CAAA,GAAI,IACtB,CAAA,CAAC,CACN,CACA,CAAC,EAEDvB,QAAM,QAAQ,CAAC,OAAQ,MAAO,OAAO,EAAG,WAA+B,EAAQ,CAG7E,WAA4B,EAAQ,CAClC,MAAO,UAAoB,EAAK,EAAM,EAAQ,CAC5C,MAAO,MAAK,QAAQuB,cAAY,GAAU,CAAA,EAAI,CAC5C,OAAQ,EACR,QAAS,EAAS,CAChB,eAAgB,qBAC1B,EAAY,CAAE,EACN,IAAK,EACL,KAAM,CACP,CAAA,CAAC,CACR,CACG,CAEDG,QAAM,UAAU,GAAU,EAAkB,EAE5CA,QAAM,UAAU,EAAS,QAAU,EAAmB,EAAI,CAC5D,CAAC,EAED,GAAA,SAAiBA,mJC7JjB,GAAI,GAAgB3B,uBAQpB,WAAqB,EAAU,CAC7B,GAAI,MAAO,IAAa,WACtB,KAAM,IAAI,WAAU,8BAA8B,EAGpD,GAAI,GAEJ,KAAK,QAAU,GAAI,SAAQ,SAAyB,EAAS,CAC3D,EAAiB,CACrB,CAAG,EAED,GAAI,GAAQ,KAGZ,KAAK,QAAQ,KAAK,SAAS,EAAQ,CACjC,GAAI,EAAC,EAAM,WAEX,IAAI,GACA,EAAI,EAAM,WAAW,OAEzB,IAAK,EAAI,EAAG,EAAI,EAAG,IACjB,EAAM,WAAW,GAAG,CAAM,EAE5B,EAAM,WAAa,KACvB,CAAG,EAGD,KAAK,QAAQ,KAAO,SAAS,EAAa,CACxC,GAAI,GAEA,EAAU,GAAI,SAAQ,SAAS,EAAS,CAC1C,EAAM,UAAU,CAAO,EACvB,EAAW,CACjB,CAAK,EAAE,KAAK,CAAW,EAEnB,SAAQ,OAAS,UAAkB,CACjC,EAAM,YAAY,CAAQ,CAChC,EAEW,CACX,EAEE,EAAS,SAAgB,EAAS,CAChC,AAAI,EAAM,QAKV,GAAM,OAAS,GAAI,GAAc,CAAO,EACxC,EAAe,EAAM,MAAM,EAC/B,CAAG,CACF,CAKD,SAAY,UAAU,iBAAmB,UAA4B,CACnE,GAAI,KAAK,OACP,KAAM,MAAK,MAEf,EAMA,EAAY,UAAU,UAAY,SAAmB,EAAU,CAC7D,GAAI,KAAK,OAAQ,CACf,EAAS,KAAK,MAAM,EACpB,MACD,CAED,AAAI,KAAK,WACP,KAAK,WAAW,KAAK,CAAQ,EAE7B,KAAK,WAAa,CAAC,CAAQ,CAE/B,EAMA,EAAY,UAAU,YAAc,SAAqB,EAAU,CACjE,GAAI,EAAC,KAAK,WAGV,IAAI,GAAQ,KAAK,WAAW,QAAQ,CAAQ,EAC5C,AAAI,IAAU,IACZ,KAAK,WAAW,OAAO,EAAO,CAAC,EAEnC,EAMA,EAAY,OAAS,UAAkB,CACrC,GAAI,GACA,EAAQ,GAAI,GAAY,SAAkB,EAAG,CAC/C,EAAS,CACb,CAAG,EACD,MAAO,CACL,MAAO,EACP,OAAQ,CACZ,CACA,EAEA,cAAiB,qHChGjB,OAAiB,SAAgB,EAAU,CACzC,MAAO,UAAc,EAAK,CACxB,MAAO,GAAS,MAAM,KAAM,CAAG,CACnC,4JCvBA,GAAI,GAAQA,QAQZ,oBAAiB,SAAsB,EAAS,CAC9C,MAAO,GAAM,SAAS,CAAO,GAAM,EAAQ,eAAiB,iBCT9D,GAAI,OAAQA,QACR,KAAOS,OACPkB,QAAQhB,QACR,YAAcC,cACd,SAAWC,WAQf,wBAAwB,EAAe,CACrC,GAAI,GAAU,GAAIc,SAAM,CAAa,EACjC,EAAW,KAAKA,QAAM,UAAU,QAAS,CAAO,EAGpD,aAAM,OAAO,EAAUA,QAAM,UAAW,CAAO,EAG/C,MAAM,OAAO,EAAU,CAAO,EAG9B,EAAS,OAAS,SAAgB,EAAgB,CAChD,MAAO,gBAAe,YAAY,EAAe,CAAc,CAAC,CACpE,EAES,CACT,CAGA,GAAI,OAAQ,eAAe,QAAQ,EAGnC,MAAM,MAAQA,QAGd,MAAM,cAAgBb,uBACtB,MAAM,YAAcC,qBACpB,MAAM,SAAWC,kBACjB,MAAM,QAAUC,YAAqB,EAAC,QACtC,MAAM,WAAaC,aAGnB,MAAM,WAAaC,aAGnB,MAAM,OAAS,MAAM,cAGrB,MAAM,IAAM,WAAa,EAAU,CACjC,MAAO,SAAQ,IAAI,CAAQ,CAC7B,EACA,MAAM,OAASS,gBAGf,MAAM,aAAeC,sBAErBC,QAAc,QAAG,MAGjB,QAAA,QAAA,QAAyB,kBC/DzB,EAAA,QAAiB9B;iCCGhB,AAAC,UAAS,EAAM,EAAS,CAKtB,EAAA,QAAiB,GAKpB,GAAE+B,eAAM,UAAW,CAClB,GAAI,GAAY,CAAA,EAEhB,EAAU,QAAU,QAEpB,GAAI,GAAW,EAAU,SAAW,CAClC,QAAS,IACT,OAAQ,OACR,cAAe,GACf,MAAO,IACP,QAAS,GACT,YAAa,IACb,aAAc,IACd,YAAa,GACb,YAAa,eACb,gBAAiB,mBACjB,OAAQ,OACR,SAAU,qIACd,EASE,EAAU,UAAY,SAAS,EAAS,CACtC,GAAI,GAAK,EACT,IAAK,IAAO,GACV,EAAQ,EAAQ,GACZ,IAAU,QAAa,EAAQ,eAAe,CAAG,GAAG,GAAS,GAAO,GAG1E,MAAO,KACX,EAME,EAAU,OAAS,KASnB,EAAU,IAAM,SAAS,EAAG,CAC1B,GAAI,GAAU,EAAU,YAExB,EAAI,EAAM,EAAG,EAAS,QAAS,CAAC,EAChC,EAAU,OAAU,IAAM,EAAI,KAAO,EAErC,GAAI,GAAW,EAAU,OAAO,CAAC,CAAO,EACpC,EAAW,EAAS,cAAc,EAAS,WAAW,EACtD,EAAW,EAAS,MACpB,EAAW,EAAS,OAExB,SAAS,YAET,EAAM,SAAS,EAAM,CAEnB,AAAI,EAAS,gBAAkB,IAAI,GAAS,cAAgB,EAAU,qBAGtE,EAAI,EAAK,EAAe,EAAG,EAAO,CAAI,CAAC,EAEvC,AAAI,IAAM,EAER,GAAI,EAAU,CACZ,WAAY,OACZ,QAAS,CACnB,CAAS,EACD,EAAS,YAET,WAAW,UAAW,CACpB,EAAI,EAAU,CACZ,WAAY,OAAS,EAAQ,YAC7B,QAAS,CACrB,CAAW,EACD,WAAW,UAAW,CACpB,EAAU,OAAM,EAChB,GACD,EAAE,CAAK,CACT,EAAE,CAAK,GAER,WAAW,EAAM,CAAK,CAE9B,CAAK,EAEM,IACX,EAEE,EAAU,UAAY,UAAW,CAC/B,MAAO,OAAO,GAAU,QAAW,QACvC,EASE,EAAU,MAAQ,UAAW,CAC3B,AAAK,EAAU,QAAQ,EAAU,IAAI,CAAC,EAEtC,GAAI,GAAO,UAAW,CACpB,WAAW,UAAW,CACpB,AAAI,CAAC,EAAU,QACf,GAAU,QAAO,EACjB,IACR,EAAS,EAAS,YAAY,CAC9B,EAEI,MAAI,GAAS,SAAS,IAEf,IACX,EAcE,EAAU,KAAO,SAAS,EAAO,CAC/B,MAAI,CAAC,GAAS,CAAC,EAAU,OAAe,KAEjC,EAAU,IAAI,GAAM,GAAM,KAAK,QAAQ,EAAE,IAAI,CAAC,CACzD,EAME,EAAU,IAAM,SAAS,EAAQ,CAC/B,GAAI,GAAI,EAAU,OAElB,MAAK,GAGC,OAAO,IAAW,UACpB,GAAU,GAAI,GAAK,EAAM,KAAK,OAAM,EAAK,EAAG,GAAK,GAAI,GAGvD,EAAI,EAAM,EAAI,EAAQ,EAAG,IAAK,EACvB,EAAU,IAAI,CAAC,GAPf,EAAU,OASvB,EAEE,EAAU,QAAU,UAAW,CAC7B,MAAO,GAAU,IAAI,KAAK,OAAM,EAAK,EAAS,WAAW,CAC7D,EAQG,UAAW,CACV,GAAI,GAAU,EAAG,EAAU,EAE3B,EAAU,QAAU,SAAS,EAAU,CACrC,MAAI,CAAC,GAAY,EAAS,MAAK,IAAO,WAC7B,KAGL,KAAY,GACd,EAAU,MAAK,EAGjB,IACA,IAEA,EAAS,OAAO,UAAW,CACzB,IACA,AAAI,IAAY,EACZ,GAAU,EACV,EAAU,KAAI,GAEd,EAAU,IAAK,GAAU,GAAW,CAAO,CAEvD,CAAO,EAEM,KACb,CAEA,IAOE,EAAU,OAAS,SAAS,EAAW,CACrC,GAAI,EAAU,WAAY,EAAE,MAAO,UAAS,eAAe,WAAW,EAEtE,EAAS,SAAS,gBAAiB,gBAAgB,EAEnD,GAAI,GAAW,SAAS,cAAc,KAAK,EAC3C,EAAS,GAAK,YACd,EAAS,UAAY,EAAS,SAE9B,GAAI,GAAW,EAAS,cAAc,EAAS,WAAW,EACtD,EAAW,EAAY,OAAS,EAAU,EAAU,QAAU,CAAC,EAC/D,EAAW,SAAS,cAAc,EAAS,MAAM,EACjD,EAEJ,SAAI,EAAK,CACP,WAAY,eACZ,UAAW,eAAiB,EAAO,QACzC,CAAK,EAEI,EAAS,aACZ,GAAU,EAAS,cAAc,EAAS,eAAe,EACzD,GAAW,EAAc,CAAO,GAG9B,GAAU,SAAS,MACrB,EAAS,EAAQ,yBAAyB,EAG5C,EAAO,YAAY,CAAQ,EACpB,CACX,EAME,EAAU,OAAS,UAAW,CAC5B,EAAY,SAAS,gBAAiB,gBAAgB,EACtD,EAAY,SAAS,cAAc,EAAS,MAAM,EAAG,yBAAyB,EAC9E,GAAI,GAAW,SAAS,eAAe,WAAW,EAClD,GAAY,EAAc,CAAQ,CACtC,EAME,EAAU,WAAa,UAAW,CAChC,MAAO,CAAC,CAAC,SAAS,eAAe,WAAW,CAChD,EAME,EAAU,kBAAoB,UAAW,CAEvC,GAAI,GAAY,SAAS,KAAK,MAG1B,EAAgB,mBAAqB,GAAa,SAClC,gBAAkB,GAAa,MAC/B,eAAiB,GAAa,KAC9B,cAAgB,GAAa,IAAM,GAEvD,MAAI,GAAe,eAAiB,GAE3B,cACE,EAAe,aAAe,GAEhC,YAGA,QAEb,EAME,WAAe,EAAG,EAAK,EAAK,CAC1B,MAAI,GAAI,EAAY,EAChB,EAAI,EAAY,EACb,CACR,CAOD,WAAmB,EAAG,CACpB,MAAQ,IAAK,GAAK,GACnB,CAQD,WAAwB,EAAG,EAAO,EAAM,CACtC,GAAI,GAEJ,MAAI,GAAS,gBAAkB,cAC7B,EAAS,CAAE,UAAW,eAAe,EAAU,CAAC,EAAE,UAC7C,AAAI,EAAS,gBAAkB,YACpC,EAAS,CAAE,UAAW,aAAa,EAAU,CAAC,EAAE,QAEhD,EAAS,CAAE,cAAe,EAAU,CAAC,EAAE,GAAG,EAG5C,EAAO,WAAa,OAAO,EAAM,MAAM,EAEhC,CACR,CAMD,GAAI,GAAS,UAAW,CACtB,GAAI,GAAU,CAAA,EAEd,YAAgB,CACd,GAAI,GAAK,EAAQ,QACjB,AAAI,GACF,EAAG,CAAI,CAEV,CAED,MAAO,UAAS,EAAI,CAClB,EAAQ,KAAK,CAAE,EACX,EAAQ,QAAU,GAAG,EAAI,CACnC,CACA,IAUM,EAAO,UAAW,CACpB,GAAI,GAAc,CAAE,SAAU,IAAK,MAAO,IAAM,EAC5C,EAAc,CAAA,EAElB,WAAmB,EAAQ,CACzB,MAAO,GAAO,QAAQ,QAAS,KAAK,EAAE,QAAQ,eAAgB,SAAS,EAAO,EAAQ,CACpF,MAAO,GAAO,aACtB,CAAO,CACF,CAED,WAAuB,EAAM,CAC3B,GAAI,GAAQ,SAAS,KAAK,MAC1B,GAAI,IAAQ,GAAO,MAAO,GAK1B,OAHI,GAAI,EAAY,OAChB,EAAU,EAAK,OAAO,CAAC,EAAE,cAAgB,EAAK,MAAM,CAAC,EACrD,EACG,KAEL,GADA,EAAa,EAAY,GAAK,EAC1B,IAAc,GAAO,MAAO,GAGlC,MAAO,EACR,CAED,WAAsB,EAAM,CAC1B,SAAO,EAAU,CAAI,EACd,EAAS,IAAU,GAAS,GAAQ,EAAc,CAAI,EAC9D,CAED,WAAkB,EAAS,EAAM,EAAO,CACtC,EAAO,EAAa,CAAI,EACxB,EAAQ,MAAM,GAAQ,CACvB,CAED,MAAO,UAAS,EAAS,EAAY,CACnC,GAAI,GAAO,UACP,EACA,EAEJ,GAAI,EAAK,QAAU,EACjB,IAAK,IAAQ,GACX,EAAQ,EAAW,GACf,IAAU,QAAa,EAAW,eAAe,CAAI,GAAG,EAAS,EAAS,EAAM,CAAK,MAG3F,GAAS,EAAS,EAAK,GAAI,EAAK,EAAE,CAErC,CACL,IAME,WAAkB,EAAS,EAAM,CAC/B,GAAI,GAAO,MAAO,IAAW,SAAW,EAAU,EAAU,CAAO,EACnE,MAAO,GAAK,QAAQ,IAAM,EAAO,GAAG,GAAK,CAC1C,CAMD,WAAkB,EAAS,EAAM,CAC/B,GAAI,GAAU,EAAU,CAAO,EAC3B,EAAU,EAAU,EAExB,AAAI,EAAS,EAAS,CAAI,GAG1B,GAAQ,UAAY,EAAQ,UAAU,CAAC,EACxC,CAMD,WAAqB,EAAS,EAAM,CAClC,GAAI,GAAU,EAAU,CAAO,EAC3B,EAEJ,AAAI,CAAC,EAAS,EAAS,CAAI,GAG3B,GAAU,EAAQ,QAAQ,IAAM,EAAO,IAAK,GAAG,EAG/C,EAAQ,UAAY,EAAQ,UAAU,EAAG,EAAQ,OAAS,CAAC,EAC5D,CAQD,WAAmB,EAAS,CAC1B,MAAQ,KAAO,GAAQ,WAAa,IAAM,KAAK,QAAQ,QAAS,GAAG,CACpE,CAMD,WAAuB,EAAS,CAC9B,GAAW,EAAQ,YAAc,EAAQ,WAAW,YAAY,CAAO,CACxE,CAED,MAAO,EACT,CAAC,iDCjdD,UAAU,UAAU,CAElB,OAAQ,OAER,MAAO,IAEP,YAAa,GAEb,aAAc,IAEd,QAAS,EACX,CAAC,ECVD,KAAM,eAAoC,CACxC,QAAS,IACT,QAAS,CACP,OAAQ,oCACR,eAAgB,mBAChB,mBAAoB,gBACtB,CACF,EACM,QAAN,KAAa,CACX,aAAc,CAIL,KAAA,OAAA,OAHP,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,CAChC,CAEA,UAAU,EAAQ,CAChB,KAAK,OAAS,CAChB,CAQA,yBAAwC,CACtC,QAAO,cAAc,aAAa,QAAQ,IACxC,AAAC,GAAgC,CAC/B,KAAM,GAAU,EAIZ,GAFJ,UAAU,MAAM,EAEZ,MAAO,GAAO,uBAA0B,WAC1C,SAAO,sBAAsB,CAAO,EAC7B,EAEL,GAAA,QAAO,WAAW,sBACb,eAAA,WAAW,sBAAsB,CAAO,EACxC,EAEH,KAAA,GAAajC,UAAQ,IAAI,gBAAgB,EAC/C,SAAQ,QAAS,WAAa,EACvB,CACT,EACA,AAAC,GACQ,QAAQ,OAAO,CAAK,CAE/B,CACF,CAGA,0BAAyC,CAEvC,AADiB,QAAO,cACf,aAAa,SAAS,IAC7B,AAAC,GAA6B,CAC5B,KAAM,GAAU,EAAS,OAIrB,MAFJ,WAAU,KAAK,EAEX,MAAO,GAAQ,wBAA2B,WAC5C,GAAQ,uBAAuB,CAAQ,EAChC,EAAS,MAEd,SAAO,WAAW,wBACb,QAAA,WAAW,uBAAuB,CAAQ,EAC1C,EAAS,KAGpB,EACA,AAAC,GAAuB,CACtB,KAAM,GAAS,EACR,SAAA,gBAAkB,MAAM,SAAS,CAAM,EAE9C,UAAU,KAAK,EAER,QAAQ,OAAO,CAAM,CAAA,CAEhC,CACF,CAEQ,wBACN,EACA,EACqB,CACrB,KAAM,CAAE,UAAW,EACb,EAAU,CAAC,KAAK,EAChB,EAAI,EAAQ,oBACZ,EAAQ,EAAQ,SAAS,CAAC,EAAI,SAAW,OACxC,MAAA,CACL,GAAG,EACH,CAAC,GAAQ,CAAA,CAEb,CAGA,QACE,EACA,EACA,EACA,EACY,CACN,KAAA,GAAS,KAAK,wBAAwB,EAAO,CACjD,SACA,MACA,GAAG,CAAA,CACmB,EAExB,MAAO,IAAI,SAAQ,CAAC,EAAS,IAAW,CACtC,QAAO,cACJ,QAAQ,CAAM,EACd,KAAK,AAAC,GAAa,OACd,GAAA,GAAO,kBAAK,QAAS,IACvB,EAAQ,EAAI,IAAI,UACP,EAAI,aACb,EAAQ,CAAG,MACN,CACC,KAAA,GAAM,kBAAK,MAAO,2BACxB,aAAa,CAAG,EAChB,KAAM,GAAO,EAAI,KACjB,AACE,KAAS,UACR,IAAS,MAAQ,EAAI,SAAS,gCAAO,IAGtCA,WAAQ,OAAO,gBAAgB,EAE/B,QAAK,SAAL,QAAa,KAAK,CAChB,KAAM,SACN,MAAO,CAAE,YAAa,GAAI,CAAA,IAG9B,EAAO,CAAG,CACZ,CACA,EAAQ,CAAG,CAAA,CACZ,EACA,MAAM,AAAC,GAAM,SACZ,AAAI,qBAAG,UAAH,cAAY,SAAS,SAAU,EAAE,OAAS,mBAEvC,QAAA,SAAA,QAAQ,KAAK,cACT,EAAE,OAAS,mBACpB,aAAa,EAAE,OAAO,EAExB,EAAO,CAAC,CAAA,CACT,CAAA,CACJ,CACH,CAGA,KACE,EACA,EACA,EACY,CACZ,MAAO,MAAK,QAAW,OAAQ,EAAK,EAAQ,CAAM,CACpD,CAGA,OACE,EACA,EACA,EACY,CACZ,MAAO,MAAK,QAAW,SAAU,EAAK,EAAQ,CAAM,CACtD,CAGA,IACE,EACA,EACA,EACY,CACZ,MAAO,MAAK,QAAW,MAAO,EAAK,EAAQ,CAAM,CACnD,CAGA,IACE,EACA,EACA,EACY,CACZ,MAAO,MAAK,QAAW,MAAO,EAAK,EAAQ,CAAM,CACnD,CAEO,WAAc,EAA0B,CAC7C,MAAO,MAAK,QAAW,OAAQ,gBAAiB,CAAM,CACxD,CACF,EAjLA,GAAM,QAAN,QAUE,OAAe,WAAkC,CAAA,EAV7C,OAaW,cAA+B,MAAM,OAAO,aAAa,EAsK7D,KAAA,MAAO,GAAI,QCpJlB,YAAc,AAAI,GAAc,CACpC,KAAM,GAAO,EACR,SAAA,QAAU,AAAC,GAAa,CACvB,EAAA,UAAU,EAAK,KAAM,CAAS,CAAA,EAE7B,CACT,EAEA,eAAe,EAAQ,GAAI,CAClB,MAAA,IAAI,SAAQ,AAAC,GAAY,CACxB,KAAA,GAAO,WAAW,IAAM,CAC5B,OAAO,aAAa,CAAI,EACxB,EAAQ,CAAK,GACZ,CAAK,CAAA,CACT,CACH,CAEa,KAAA,OAAQ,AAAC,GACpB,GAAI,SAAQ,AAAC,GAAY,WAAW,EAAS,CAAO,CAAC,EAI1C,QAAU,IAEd,EAAE,OADMX,IAAI,IAAA,SAAS,gBAAgB,UAAU,SAAS,MAAM,CAAC,CACtD,GAIL,YAAc,CAAC,EAAc,IAAoB,CACxD,GAAA,GACJ,MAAO,IAAM,CACF,GAAA,aAAa,CAAM,EACnB,EAAA,WAAW,EAAI,CAAO,CAAA,CAEnC,EAEO,eAAkB,EAAkB,CAIlC,MAAA,AAFL,0KAES,KAAK,CAAI,CACtB"}
1
+ {"version":3,"file":"utils.umd.js","sources":["../lib/render.tsx","../lib/element/index.ts","../node_modules/.pnpm/resize-observer-polyfill@1.5.1/node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../lib/resize/index.ts","../lib/useWatermark.ts","../lib/useAttrs.ts","../lib/storage/index.ts","../lib/useRender.ts","../lib/useGlobal.ts","../lib/uuid/index.ts","../lib/device/index.ts","../lib/message/index.ts","../lib/formatData.ts","../lib/useTree.ts","../node_modules/.pnpm/typescript-cookie@1.0.3/node_modules/typescript-cookie/dist/typescript-cookie.mjs","../lib/storage/cookie.ts","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/bind.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/utils.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/buildURL.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/InterceptorManager.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/AxiosError.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/defaults/transitional.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/toFormData.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/settle.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/cookies.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/combineURLs.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/buildFullPath.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/cancel/CanceledError.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/adapters/xhr.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/null.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/defaults/index.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/transformData.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/cancel/isCancel.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/dispatchRequest.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/mergeConfig.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/env/data.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/validator.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/Axios.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/cancel/CancelToken.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/spread.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/axios.js","../node_modules/.pnpm/axios@0.27.2/node_modules/axios/index.js","../node_modules/.pnpm/nprogress@0.2.0/node_modules/nprogress/nprogress.js","../lib/progress/index.ts","../lib/http/index.ts","../lib/index.ts"],"sourcesContent":["/*\r\n * @Author: wei.li\r\n * @Date: 2021-12-01 09:18:50\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-10-10 15:40:38\r\n * @Description: file content\r\n */\r\n\r\n// @ts-nocheck\r\n\r\nimport { isArray, isEmpty } from 'xe-utils';\r\nimport { FormItemRenderOptions, FormItemContentRenderParams, VxeColumnPropTypes } from 'vxe-table';\r\n\r\nexport const VxetableRender = (VXETable, {serviceApi, dict, i18n}) => {\r\n // form render\r\n VXETable.renderer.add('#SuSelect', {\r\n renderEdit(renderOpts: VxeColumnPropTypes.EditRender, params) {\r\n const { row, column } = params;\r\n const { options, props, optionProps = {}, events } = renderOpts;\r\n // @ts-ignore\r\n const { label = 'label', value = 'value', extLabel } = optionProps;\r\n const { code, fetchField, extParam = {}, loading = false, multiple, defaultValue } = props;\r\n if (defaultValue) {\r\n const keys = Object.keys(defaultValue);\r\n keys.forEach(key => {\r\n row[key] = row[key] || defaultValue[key];\r\n });\r\n }\r\n if (multiple && row[column.field]) {\r\n !isArray(row[column.field]) &&\r\n row[column.field].split(',').forEach(ff => {\r\n const isExit = options.some(s => s[label] === ff);\r\n !isExit && options.push({ [value]: ff, [label]: ff });\r\n });\r\n }\r\n /**\r\n * @description: 远程搜索对应的函数\r\n * @param {*} val 录入的参数\r\n */\r\n async function remoteMethod(query) {\r\n const param = Object.assign({}, { pageSize: 20, pageNum: 1 }, extParam, {\r\n [fetchField || label]: query\r\n });\r\n let res;\r\n try {\r\n options.length = 0;\r\n props.loading = true;\r\n res = await serviceApi(code, param);\r\n if (res) {\r\n res.list ? options.push(...res.list) : options.push(...res);\r\n }\r\n } finally {\r\n props.loading = false;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 选中值发生变化时触发\r\n * @param {*} val 目前的选中值\r\n */\r\n function onChange(val) {\r\n const { fieldMap = {} } = props;\r\n const item = val && options.find(option => val === option[value]);\r\n const keys = Object.keys(fieldMap);\r\n if (keys.length) {\r\n const values: string[] = Object.values(fieldMap);\r\n keys.forEach((key, idx) => {\r\n row[key] = val ? item[values[idx]] : '';\r\n });\r\n }\r\n events?.change && events.change(params, val, item, column.field);\r\n }\r\n\r\n /**\r\n * @description: 可清空的单选模式下用户点击清空按钮时触发\r\n */\r\n function onClear() {\r\n events?.clear && events.clear({ row, field: column.field });\r\n }\r\n\r\n function onFocus() {\r\n !options.length && remoteMethod('');\r\n }\r\n\r\n return [\r\n <el-select\r\n v-model={row[column.field]}\r\n {...props}\r\n filterable\r\n remote\r\n clearable\r\n size=\"small\"\r\n placeholder=\"请录入关键字搜索\"\r\n style=\"width: 100%\"\r\n remote-method={remoteMethod}\r\n loading={loading}\r\n onFocus={() => onFocus()}\r\n onChange={v => onChange(v)}\r\n onClear={() => onClear()}\r\n >\r\n {options.map(item => {\r\n return (\r\n <el-option key={item[value]} label={item[label]} value={item[value]}>\r\n <span style=\"float: left\">\r\n {item[extLabel] ? `${item[value]}-${item[extLabel]}` : item[value]}\r\n </span>\r\n {value !== label && !item[extLabel] ? (\r\n <span class=\"su-coSelect-option\">{item[label]}</span>\r\n ) : null}\r\n </el-option>\r\n );\r\n })}\r\n </el-select>\r\n ];\r\n },\r\n // 可编辑显示模板\r\n renderCell(renderOpts, params) {\r\n const { row, column } = params;\r\n const { props } = renderOpts;\r\n const { textValue, multiple } = props;\r\n let val = row[column.field];\r\n if (textValue) {\r\n val = eval(`row.${textValue}`) || row[column.field];\r\n }\r\n if (val && multiple && isArray(val)) {\r\n val = val && val.join(',');\r\n }\r\n return [<span>{val}</span>];\r\n },\r\n renderItemContent(renderOpts: FormItemRenderOptions, params: FormItemContentRenderParams) {\r\n const { data, property } = params;\r\n const { options, props, optionProps = {}, events } = renderOpts;\r\n // @ts-ignore\r\n const { label = 'label', value = 'value', extLabel } = optionProps;\r\n const { code, fetchField, extParam = {}, loading = false } = props;\r\n /**\r\n * @description: 远程搜索对应的函数\r\n * @param {*} val 录入的参数\r\n */\r\n async function remoteMethod(query) {\r\n const param = Object.assign({}, { pageSize: 20, pageNum: 1 }, extParam, { [fetchField]: query });\r\n let res;\r\n try {\r\n options.length = 0;\r\n props.loading = true;\r\n res = await serviceApi(code, param);\r\n if (res?.list) {\r\n options.push(...res.list);\r\n } else if (res) {\r\n options.push(...res);\r\n }\r\n } finally {\r\n props.loading = false;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 选中值发生变化时触发\r\n * @param {*} val 目前的选中值\r\n */\r\n function onChange(val) {\r\n const { fieldMap = {} } = props;\r\n const item = options.find(option => val === option[value]);\r\n const keys = Object.keys(fieldMap);\r\n if (keys.length) {\r\n const values: string[] = Object.values(fieldMap);\r\n keys.forEach((key, idx) => {\r\n data[key] = val ? item[values[idx]] : '';\r\n });\r\n }\r\n events?.change && events.change(val, item, data, property);\r\n }\r\n\r\n /**\r\n * @description: 可清空的单选模式下用户点击清空按钮时触发\r\n */\r\n function onClear() {\r\n events?.clear && events.clear({ data, field: property });\r\n }\r\n\r\n function onFocus() {\r\n !options.length && remoteMethod('');\r\n }\r\n\r\n return [\r\n <el-select\r\n v-model={data[property]}\r\n {...props}\r\n filterable\r\n remote\r\n clearable\r\n size=\"small\"\r\n style=\"width: 100%\"\r\n placeholder=\"请录入关键字搜索\"\r\n remote-method={remoteMethod}\r\n loading={loading}\r\n onFocus={() => onFocus()}\r\n onChange={v => onChange(v)}\r\n onClear={() => onClear()}\r\n >\r\n {options.map(item => {\r\n return (\r\n <el-option key={item[value]} label={item[label]} value={item[value]}>\r\n <span style=\"float: left\">\r\n {item[extLabel] ? `${item[value]}-${item[extLabel]}` : item[value]}\r\n </span>\r\n {value !== label && !item[extLabel] ? (\r\n <span class=\"su-coSelect-option\">{item[label]}</span>\r\n ) : null}\r\n </el-option>\r\n );\r\n })}\r\n </el-select>\r\n ];\r\n }\r\n });\r\n\r\n // 时间范围\r\n VXETable.renderer.add('#SuDateRange', {\r\n renderItemContent(renderOpts: FormItemRenderOptions, params: FormItemContentRenderParams) {\r\n const { data, property } = params;\r\n const { props } = renderOpts;\r\n return [\r\n <el-date-picker\r\n v-model={data[property]}\r\n type={props?.type || 'daterange'}\r\n size=\"small\"\r\n style=\"width: 100%\"\r\n range-separator={i18n('message.to', true)}\r\n start-placeholder={i18n('message.startDate', true)}\r\n end-placeholder={i18n('message.endDate', true)}\r\n />\r\n ];\r\n }\r\n });\r\n\r\n VXETable.renderer.add('#select', {\r\n renderEdit(renderOpts: VxeColumnPropTypes.EditRender, params) {\r\n const { row, column } = params;\r\n const { options, props, optionProps = {}, events } = renderOpts;\r\n // @ts-ignore\r\n const { label = 'label', value = 'value', extLabel } = optionProps;\r\n if (props.multiple && row[column.field]) {\r\n !isArray(row[column.field]) &&\r\n row[column.field].split(',').forEach(ff => {\r\n const isExit = options.some(s => s[label] === ff);\r\n !isExit && options.push({ [value]: ff, [label]: ff });\r\n });\r\n }\r\n\r\n function onChange(val) {\r\n const item = val && options.find(option => val === option[value]);\r\n events?.change && events.change(params, val, item, column.field);\r\n }\r\n\r\n function onClear() {\r\n events?.clear && events.clear({ row, field: column.field });\r\n }\r\n\r\n return [\r\n <el-select\r\n v-model={row[column.field]}\r\n filterable\r\n clearable\r\n {...props}\r\n size=\"small\"\r\n style=\"width: 100%\"\r\n onChange={v => onChange(v)}\r\n onClear={() => onClear()}\r\n >\r\n {options.map(item => {\r\n return (\r\n <el-option\r\n key={item[value]}\r\n label={item[extLabel] ? item[value] : item[label]}\r\n value={item[value]}\r\n >\r\n <span style=\"float: left\">\r\n {extLabel && item[extLabel] ? `${item[value]}-${item[extLabel]}` : item[value]}\r\n </span>\r\n {value !== label && !item[extLabel] ? (\r\n <span class=\"su-coSelect-option\">{item[label]}</span>\r\n ) : null}\r\n </el-option>\r\n );\r\n })}\r\n </el-select>\r\n ];\r\n },\r\n // 可编辑显示模板\r\n renderCell(renderOpts, params) {\r\n const { row, column } = params;\r\n const { props, options, optionProps } = renderOpts;\r\n // @ts-ignore\r\n const { label = 'label', value = 'value', extLabel } = optionProps;\r\n const { textValue } = props;\r\n let val = row[column.field];\r\n const item = options.find(opt => opt[value] === val);\r\n if (textValue) {\r\n val = eval(`row.${textValue}`) || row[column.field];\r\n }\r\n if (item) {\r\n val = extLabel ? item[value] : item[label];\r\n }\r\n if (val && props?.multiple && isArray(val)) {\r\n val = val && val.join(',');\r\n }\r\n return [<span>{val}</span>];\r\n },\r\n renderItemContent(renderOpts: FormItemRenderOptions, params: FormItemContentRenderParams) {\r\n const { data, property } = params;\r\n const { options, props, optionProps = {}, events } = renderOpts;\r\n // @ts-ignore\r\n const { label = 'label', value = 'value' } = optionProps;\r\n // 默认值\r\n const { defaultValues } = props;\r\n if (defaultValues) {\r\n data[property] = defaultValues;\r\n }\r\n /**\r\n * @description: 选中值发生变化时触发\r\n * @param {*} val 目前的选中值\r\n */\r\n function onChange(val) {\r\n const { fieldMap = {} } = props;\r\n const item = options.find(option => val === option[value]);\r\n const keys = Object.keys(fieldMap);\r\n if (keys.length) {\r\n const values: string[] = Object.values(fieldMap);\r\n keys.forEach((key, idx) => {\r\n data[key] = val ? item[values[idx]] : '';\r\n });\r\n }\r\n const parm = { item, row: data, property };\r\n events?.change && events.change(parm);\r\n }\r\n\r\n /**\r\n * @description: 可清空的单选模式下用户点击清空按钮时触发\r\n */\r\n function onClear() {\r\n events?.clear && events.clear({ data, field: property });\r\n }\r\n\r\n return [\r\n <el-select\r\n v-model={data[property]}\r\n {...props}\r\n filterable\r\n clearable\r\n size=\"small\"\r\n style=\"width: 100%\"\r\n onChange={v => onChange(v)}\r\n onClear={() => onClear()}\r\n >\r\n {options.map(item => {\r\n return (\r\n <el-option key={item[value]} label={item[label]} value={item[value]}>\r\n <span style=\"float: left\">{item[label]}</span>\r\n <span class=\"su-coSelect-option\">{item[value]}</span>\r\n </el-option>\r\n );\r\n })}\r\n </el-select>\r\n ];\r\n }\r\n });\r\n // Lov\r\n VXETable.renderer.add('#lov', {\r\n renderItemContent(renderOpts: FormItemRenderOptions, params: FormItemContentRenderParams) {\r\n const { data, property } = params;\r\n const { props, events } = renderOpts;\r\n // 默认值\r\n const { defaultValues, mapField } = props;\r\n if (defaultValues) {\r\n data[property] = defaultValues;\r\n }\r\n /**\r\n * @description: 选中值发生变化时触发\r\n * @param {*} val 目前的选中值\r\n */\r\n function onChange(record, displayField) {\r\n const { mapField, field, displayName, isMulti } = props;\r\n if (!isMulti) {\r\n const obj = { [displayName || field]: record[displayField || displayName || field] };\r\n for (const key in mapField) {\r\n obj[key] = record[mapField[key]];\r\n }\r\n Object.assign(data, obj);\r\n } else if (isMulti) {\r\n data[displayName || field] = record.reduce((curv, prev) => {\r\n if (!curv) {\r\n curv = prev[displayField || displayName || field]\r\n } else {\r\n curv = curv + ',' + prev[displayField || displayName || field]\r\n }\r\n return curv\r\n }, '')\r\n }\r\n const parm = { row: data, property, item: record };\r\n events?.change && events.change(parm);\r\n }\r\n\r\n /**\r\n * @description: 点击清空按钮时触发\r\n */\r\n function onClear() {\r\n data[property] = ''\r\n if (!isEmpty(mapField)) {\r\n for (const key in mapField) {\r\n data[key] = '';\r\n }\r\n }\r\n events?.clear && events.clear({ data, field: property });\r\n }\r\n\r\n return [\r\n <su-lov\r\n record={ data }\r\n {...props}\r\n mode=\"vxe\"\r\n onChange={(v, f) => onChange(v, f)}\r\n onClear={() => onClear()}\r\n />\r\n ];\r\n },\r\n // 单元格编辑\r\n renderEdit(renderOpts: VxeColumnPropTypes.EditRender, params) {\r\n const { row, column } = params;\r\n const { props, events } = renderOpts;\r\n\r\n function onChange(record, displayField) {\r\n const { mapField, field, displayName, isMulti } = props;\r\n if (!isMulti) {\r\n const obj = { [displayName || field]: record[displayField || displayName || field] };\r\n for (const key in mapField) {\r\n obj[key] = record[mapField[key]];\r\n }\r\n Object.assign(row, obj);\r\n }\r\n events?.change && events.change(params, record, row[column.field]);\r\n }\r\n\r\n function onClear() {\r\n const { mapField, field } = props;\r\n row[column.field] = ''\r\n if (!isEmpty(mapField)) {\r\n for (const key in mapField) {\r\n row[key] = '';\r\n }\r\n }\r\n events?.clear && events.clear({ row, field });\r\n }\r\n\r\n return [\r\n <su-lov\r\n record={ row }\r\n {...props}\r\n mode=\"ele\"\r\n onChange={(v, f) => onChange(v, f)}\r\n onClear={() => onClear()}\r\n />\r\n ];\r\n },\r\n // 单元格默认\r\n renderDefault (renderOpts: VxeColumnPropTypes.EditRender, params) {\r\n const { row, column } = params;\r\n const { props, events } = renderOpts;\r\n\r\n function onChange(record, displayField) {\r\n const { mapField, field, displayName, isMulti } = props;\r\n if (!isMulti) {\r\n const obj = { [displayName || field]: record[displayField || displayName || field] };\r\n for (const key in mapField) {\r\n obj[key] = record[mapField[key]];\r\n }\r\n Object.assign(row, obj);\r\n }\r\n events?.change && events.change(params, record, row[column.field]);\r\n }\r\n\r\n function onClear() {\r\n const { mapField, field } = props;\r\n row[column.field] = ''\r\n if (!isEmpty(mapField)) {\r\n for (const key in mapField) {\r\n row[key] = '';\r\n }\r\n }\r\n events?.clear && events.clear({ row, field });\r\n }\r\n\r\n return [\r\n <su-lov\r\n record={ row }\r\n {...props}\r\n mode=\"ele\"\r\n onChange={(v, f) => onChange(v, f)}\r\n onClear={() => onClear()}\r\n />\r\n ];\r\n },\r\n // 可编辑显示模板\r\n renderCell(renderOpts, params) {\r\n const { row, column } = params;\r\n // @ts-ignore\r\n // const { textValue } = props;\r\n const val = row[column.field];\r\n return [<span>{val}</span>];\r\n }\r\n });\r\n \r\n \r\n // 创建一个简单的超链接渲染\r\n VXETable.renderer.add('#tag', {\r\n // 默认显示模板\r\n renderDefault(renderOpts, params) {\r\n const { row, column } = params;\r\n const {\r\n props: { code, tagMap }\r\n } = renderOpts;\r\n function getTagType() {\r\n return row[column.field] ? tagMap[row[column.field]] : '';\r\n }\r\n return [\r\n row[column.field] ? <el-tag effect=\"dark\" type={getTagType()}>{getValue(code, row[column.field])}</el-tag> : null\r\n ];\r\n }\r\n });\r\n \r\n VXETable.renderer.add('#switch', {\r\n renderDefault(renderOpts, params) {\r\n const { row, column } = params;\r\n const {\r\n props: { code, activeValue, inactiveValue },\r\n events\r\n } = renderOpts;\r\n function onChange(value) {\r\n const param = {row, column, value}\r\n events?.change && events.change(param);\r\n }\r\n return [\r\n row[column.field] ? <el-switch\r\n v-model={row[column.field]}\r\n inline-prompt\r\n size=\"large\"\r\n style=\"--el-switch-on-color: #13ce66; --el-switch-off-color: #E6A23C\"\r\n {...renderOpts.props}\r\n active-text={getValue(code, activeValue)}\r\n inactive-text={getValue(code, inactiveValue)}\r\n onChange={v => onChange(v)}\r\n /> : null\r\n ];\r\n }\r\n });\r\n\r\n function getValue(code, value) {\r\n if (!value || !code || !dict) return value;\r\n return dict[code]?.children?.find(item => item.dictCode === value)?.dictName;\r\n }\r\n\r\nreturn VXETable\r\n}","/*\r\n * @Author: wei.li\r\n * @Date: 2021-12-23 17:33:20\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-07-07 11:57:31\r\n * @Description: file content\r\n */\r\ndeclare type FunctionArgs<Args extends any[] = any[], Return = void> = (\r\n ...args: Args\r\n) => Return;\r\n\r\ndeclare type RefType<T> = T | null;\r\n\r\nexport const hasClass = (ele: RefType<any>, cls: string): any => {\r\n return !!ele.className?.match(new RegExp(\"(\\\\s|^)\" + cls + \"(\\\\s|$)\"));\r\n};\r\n\r\nexport const addClass = (\r\n ele: RefType<any>,\r\n cls: string,\r\n extracls?: string\r\n): any => {\r\n if (!hasClass(ele, cls)) ele.className += \" \" + cls;\r\n if (extracls) {\r\n if (!hasClass(ele, extracls)) ele.className += \" \" + extracls;\r\n }\r\n};\r\n\r\nexport const removeClass = (\r\n ele: RefType<any>,\r\n cls: string,\r\n extracls?: string\r\n): any => {\r\n if (hasClass(ele, cls)) {\r\n const reg = new RegExp(\"(\\\\s|^)\" + cls + \"(\\\\s|$)\");\r\n ele.className = ele.className?.replace(reg, \" \").trim();\r\n }\r\n if (extracls) {\r\n if (hasClass(ele, extracls)) {\r\n const regs = new RegExp(\"(\\\\s|^)\" + extracls + \"(\\\\s|$)\");\r\n ele.className = ele.className?.replace(regs, \" \").trim();\r\n }\r\n }\r\n};\r\n\r\nexport const toggleClass = (\r\n flag: boolean,\r\n clsName: string,\r\n target?: RefType<any>\r\n): any => {\r\n const targetEl = target || document.body;\r\n let { className } = targetEl;\r\n className = className?.replace(clsName, \"\");\r\n targetEl.className =\r\n className && flag ? `${className} ${clsName} ` : className;\r\n};\r\n\r\nexport function useRafThrottle<T extends FunctionArgs>(fn: T): T {\r\n let locked = false;\r\n // @ts-ignore\r\n return function (...args) {\r\n if (locked) return;\r\n locked = true;\r\n window.requestAnimationFrame(() => {\r\n fn.apply(this, args);\r\n locked = false;\r\n });\r\n };\r\n}\r\n\r\nexport const openLink = <T>(link: T): void => {\r\n const $a: HTMLElement = document.createElement(\"a\");\r\n // @ts-expect-error\r\n $a.setAttribute(\"href\", link);\r\n $a.setAttribute(\"target\", \"_blank\");\r\n $a.setAttribute(\"rel\", \"noreferrer noopener\");\r\n $a.setAttribute(\"id\", \"external\");\r\n document.getElementById(\"external\") &&\r\n document.body.removeChild(document.getElementById(\"external\")!);\r\n document.body.appendChild($a);\r\n $a.click();\r\n $a.remove();\r\n};\r\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array<Array>} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array<ResizeObserverSPI>}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the <html> itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array<ResizeObservation>}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map<Element, ResizeObservation>}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","/*\r\n * @Author: wei.li\r\n * @Date: 2022-07-07 11:41:27\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-07-07 13:40:03\r\n * @Description: file content\r\n */\r\nimport ResizeObserver from \"resize-observer-polyfill\";\r\n\r\nconst isServer = typeof window === \"undefined\";\r\n\r\nconst resizeHandler = (entries: any[]): void => {\r\n for (const entry of entries) {\r\n const listeners = entry.target.__resizeListeners__ || [];\r\n if (listeners.length) {\r\n listeners.forEach((fn: () => any) => {\r\n fn();\r\n });\r\n }\r\n }\r\n};\r\n\r\nexport const addResizeListener = (element: any, fn: () => any): any => {\r\n if (isServer) return;\r\n if (!element.__resizeListeners__) {\r\n element.__resizeListeners__ = [];\r\n element.__ro__ = new ResizeObserver(resizeHandler);\r\n element.__ro__.observe(element);\r\n }\r\n element.__resizeListeners__.push(fn);\r\n};\r\n\r\nexport const removeResizeListener = (element: any, fn: () => any): any => {\r\n if (!element || !element.__resizeListeners__) return;\r\n element.__resizeListeners__.splice(\r\n element.__resizeListeners__.indexOf(fn),\r\n 1\r\n );\r\n if (!element.__resizeListeners__.length) {\r\n element.__ro__.disconnect();\r\n }\r\n};\r\n","import {\r\n ref,\r\n Ref,\r\n unref,\r\n shallowRef,\r\n onBeforeUnmount,\r\n getCurrentInstance,\r\n} from \"vue\";\r\nimport { isUndefined } from \"xe-utils\";\r\nimport { useRafThrottle } from \"./element\";\r\nimport { addResizeListener, removeResizeListener } from \"./resize\";\r\n\r\nconst domSymbol = Symbol(\"watermark-dom\");\r\n\r\ntype attr = {\r\n font?: string;\r\n fillStyle?: string;\r\n};\r\n\r\nexport function useWatermark(\r\n appendEl: Ref<HTMLElement | null> = ref(document.body) as Ref<HTMLElement>\r\n) {\r\n const func = useRafThrottle(function () {\r\n const el = unref(appendEl);\r\n if (!el) return;\r\n const { clientHeight: height, clientWidth: width } = el;\r\n updateWatermark({ height, width });\r\n });\r\n const id = domSymbol.toString();\r\n const watermarkEl = shallowRef<HTMLElement>();\r\n\r\n const clear = () => {\r\n const domId = unref(watermarkEl);\r\n watermarkEl.value = undefined;\r\n const el = unref(appendEl);\r\n if (!el) return;\r\n domId && el.removeChild(domId);\r\n removeResizeListener(el, func);\r\n };\r\n\r\n function createBase64(str: string, attr?: attr) {\r\n const can = document.createElement(\"canvas\");\r\n const width = 260;\r\n const height = 180;\r\n Object.assign(can, { width, height });\r\n\r\n const cans = can.getContext(\"2d\");\r\n if (cans) {\r\n cans.rotate((-20 * Math.PI) / 120);\r\n cans.font = attr?.font ?? \"15px Reggae One\";\r\n cans.fillStyle = attr?.fillStyle ?? \"rgba(180, 180, 180, 0.75)\";\r\n cans.textAlign = \"left\";\r\n cans.textBaseline = \"middle\";\r\n cans.fillText(str, width / 20, height);\r\n }\r\n return can.toDataURL(\"image/png\");\r\n }\r\n\r\n function updateWatermark(\r\n options: {\r\n width?: number;\r\n height?: number;\r\n str?: string;\r\n attr?: attr;\r\n } = {}\r\n ) {\r\n const el = unref(watermarkEl);\r\n if (!el) return;\r\n if (!isUndefined(options.width)) {\r\n el.style.width = `${options.width}px`;\r\n }\r\n if (!isUndefined(options.height)) {\r\n el.style.height = `${options.height}px`;\r\n }\r\n if (!isUndefined(options.str)) {\r\n el.style.background = `url(${createBase64(\r\n options.str!,\r\n options.attr\r\n )}) left top repeat`;\r\n }\r\n }\r\n\r\n const createWatermark = (str: string, attr?: attr) => {\r\n if (unref(watermarkEl)) {\r\n updateWatermark({ str, attr });\r\n return id;\r\n }\r\n const div = document.createElement(\"div\");\r\n watermarkEl.value = div;\r\n div.id = id;\r\n div.style.pointerEvents = \"none\";\r\n div.style.top = \"0px\";\r\n div.style.left = \"0px\";\r\n div.style.position = \"absolute\";\r\n div.style.zIndex = \"100000\";\r\n const el = unref(appendEl);\r\n if (!el) return id;\r\n const { clientHeight: height, clientWidth: width } = el;\r\n updateWatermark({ str, width, height, attr });\r\n el.appendChild(div);\r\n return id;\r\n };\r\n\r\n function setWatermark(str: string, attr?: attr) {\r\n createWatermark(str, attr);\r\n addResizeListener(document.documentElement, func);\r\n const instance = getCurrentInstance();\r\n if (instance) {\r\n onBeforeUnmount(() => {\r\n clear();\r\n });\r\n }\r\n }\r\n\r\n return { setWatermark, clear };\r\n}\r\n","/*\r\n * @Author: wei.li\r\n * @Date: 2021-11-17 16:02:30\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-08-24 13:48:03\r\n * @Description: file content\r\n */\r\nimport { getCurrentInstance, reactive, shallowRef, watchEffect } from \"vue\";\r\nimport type { Ref } from \"vue\";\r\ninterface Params {\r\n excludeListeners?: boolean;\r\n excludeKeys?: string[];\r\n}\r\n\r\nconst DEFAULT_EXCLUDE_KEYS = [\"class\", \"style\"];\r\nconst LISTENER_PREFIX = /^on[A-Z]/;\r\n\r\nexport function entries<T>(obj: Recordable<T>): [string, T][] {\r\n return Object.keys(obj).map((key: string) => [key, obj[key]]);\r\n}\r\n\r\nexport function useAttrs(params: Params = {}): Ref<Recordable> | {} {\r\n const instance = getCurrentInstance();\r\n if (!instance) return {};\r\n\r\n const { excludeListeners = false, excludeKeys = [] } = params;\r\n const attrs = shallowRef({});\r\n const allExcludeKeys = excludeKeys.concat(DEFAULT_EXCLUDE_KEYS);\r\n\r\n // Since attrs are not reactive, make it reactive instead of doing in `onUpdated` hook for better performance\r\n instance.attrs = reactive(instance.attrs);\r\n\r\n watchEffect(() => {\r\n const res = entries(instance.attrs).reduce((acm, [key, val]) => {\r\n if (\r\n !allExcludeKeys.includes(key) &&\r\n !(excludeListeners && LISTENER_PREFIX.test(key))\r\n ) {\r\n acm[key] = val;\r\n }\r\n\r\n return acm;\r\n }, {} as Recordable);\r\n\r\n attrs.value = res;\r\n });\r\n\r\n return attrs;\r\n}\r\n``;\r\n","/*\r\n * @Author: wei.li\r\n * @Date: 2021-12-23 17:33:21\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-07-14 17:13:30\r\n * @Description: file content\r\n */\r\ninterface ProxyStorage {\r\n getItem(key: string): any;\r\n setItem(Key: string, value: string): void;\r\n removeItem(key: string): void;\r\n clear(): void;\r\n}\r\n\r\n//sessionStorage operate\r\nclass sessionStorageProxy implements ProxyStorage {\r\n protected storage: ProxyStorage;\r\n\r\n constructor(storageModel: ProxyStorage) {\r\n this.storage = storageModel;\r\n }\r\n\r\n // 存\r\n public setItem(key: string, value: any): void {\r\n this.storage.setItem(key, JSON.stringify(value));\r\n }\r\n\r\n // 取\r\n public getItem(key: string): any {\r\n return JSON.parse(this.storage.getItem(key));\r\n }\r\n\r\n // 删\r\n public removeItem(key: string): void {\r\n this.storage.removeItem(key);\r\n }\r\n\r\n // 清空\r\n public clear(): void {\r\n this.storage.clear();\r\n }\r\n}\r\n\r\n//localStorage operate\r\nclass localStorageProxy extends sessionStorageProxy implements ProxyStorage {\r\n constructor(localStorage: ProxyStorage) {\r\n super(localStorage);\r\n }\r\n}\r\n\r\nexport const storageSession = new sessionStorageProxy(sessionStorage);\r\n\r\nexport const storageLocal = new localStorageProxy(localStorage);\r\n","/*\r\n * @Author: wei.li\r\n * @Date: 2021-11-29 18:18:00\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-10-14 16:38:54\r\n * @Description: file content\r\n */\r\n\r\ninterface IAttrs {\r\n disabled?: boolean;\r\n defaultValue?: string;\r\n code?: undefined;\r\n [x: string]: any;\r\n}\r\n\r\ninterface IEvents {\r\n onChange?: Fn;\r\n onClear?: Fn;\r\n onBlur?: Fn;\r\n onInput?: Fn;\r\n}\r\nimport { isObject, isEmpty, isString, isFunction } from \"xe-utils\";\r\nimport { storageSession } from \"./storage\";\r\n\r\nconst dictData = storageSession.getItem(\"kLov\");\r\n\r\ninterface IRecord {\r\n [x: string]: any;\r\n}\r\n\r\nexport const useRender = (cb?) => {\r\n const optionProps = { value: \"dictCode\", label: \"dictName\" };\r\n /**\r\n * @description: 字典下拉渲染\r\n * @param {*} attrs string|object string时默认未code\r\n * @param {*} methods fn|object 回调函数 fn默认为onChange\r\n */\r\n const renderDict = (attrs: IAttrs | string, methods?) => {\r\n const events = getEvents(methods);\r\n let props = { clearable: true, disabled: false };\r\n let defaultValue;\r\n let dictCode;\r\n if (isObject(attrs)) {\r\n props = Object.assign(props, attrs);\r\n defaultValue = attrs.defaultValue;\r\n dictCode = attrs?.code;\r\n } else {\r\n dictCode = attrs;\r\n }\r\n const opts = storageSession.getItem(\"kLov\")[dictCode]?.children;\r\n const options = opts ? opts.filter((opt) => opt.enabled === \"1\") : [];\r\n return {\r\n name: \"#select\",\r\n optionProps,\r\n options,\r\n props,\r\n defaultValue,\r\n events,\r\n };\r\n };\r\n /**\r\n * @description: 远程搜索下拉选择-编辑\r\n * @param {*} attrs attrs\r\n * @return {*}\r\n */\r\n const renderSelect = (attrs, callBack?) => {\r\n return {\r\n name: \"#SuSelect\",\r\n optionProps: attrs.optionProps,\r\n props: attrs.props,\r\n options: attrs.options || [],\r\n events: {\r\n change: (e, v, i, field) => callBack && callBack(e, v, i, field),\r\n },\r\n };\r\n };\r\n /**\r\n * @description: 查询关联了用户的员工\r\n * @param {*} name '渲染器名称'\r\n * @param {*} callback 回调函数\r\n * @return {*} 渲染组件\r\n */\r\n const renderUser = (attr?, callback?) => {\r\n const attrs = {\r\n optionProps: { extLabel: \"userName\", value: \"employeeName\" },\r\n props: {\r\n attrs: { disabled: attr?.disabled },\r\n disabled: attr?.disabled,\r\n defaultValue: attr?.defaultValue,\r\n fieldMap: attr?.fieldMap,\r\n code: \"SYS037\",\r\n fetchField: \"employeeName\",\r\n },\r\n };\r\n return renderSelect(attrs, callback);\r\n };\r\n const renderSysUser = (opt?) => {\r\n const attrs = {\r\n optionProps: { extLabel: \"userName\", value: \"name\" },\r\n props: {\r\n code: \"sys/listUsers\",\r\n fetchField: \"name\",\r\n fieldMap: opt?.fieldMap,\r\n },\r\n };\r\n return renderSelect(attrs);\r\n };\r\n\r\n /**\r\n * @description: 查询库存组织\r\n * @param {*} name '渲染器属性'\r\n * @param {*} callback 回调函数\r\n * @return {*} 渲染组件\r\n */\r\n const renderInvOrg = (attrs?, methods?) => {\r\n const optionProps = {\r\n label: \"organizationName\",\r\n value: attrs?.field || \"id\",\r\n };\r\n const props = {\r\n fieldMap: {},\r\n extParam: attrs?.extParam,\r\n code: \"CUS008\",\r\n fetchField: \"organizationName\",\r\n };\r\n const fieldMap = {\r\n organizationId: \"id\",\r\n organizationCode: \"organizationCode\",\r\n };\r\n Object.assign(props.fieldMap, fieldMap, attrs?.fieldMap || {});\r\n return { name: \"#SuSelect\", props, optionProps, options: [], methods };\r\n };\r\n /**\r\n * @description: item input渲染器\r\n * @param {*} name 渲染器名称\r\n * @param {*} props 渲染的参数(请查看目标渲染的 Props)\r\n * @return {*} item 渲染器\r\n */\r\n const renderInput = (attrs?, methods?) => {\r\n const props = Object.assign({ disabled: false }, attrs);\r\n const defaultValue = props?.defaultValue;\r\n return {\r\n name: \"$input\",\r\n props,\r\n defaultValue,\r\n events: getEvents(methods),\r\n };\r\n };\r\n /**\r\n * @description: item input渲染器\r\n * @param {*} name 渲染器名称\r\n * @param {*} props 渲染的参数(请查看目标渲染的 Props)\r\n * @return {*} item 渲染器\r\n */\r\n const renderTextarea = (attrs?, methods?) => {\r\n const props = Object.assign({ disabled: false, rows: 3 }, attrs);\r\n const defaultValue = props?.defaultValue;\r\n return {\r\n name: \"$textarea\",\r\n props,\r\n defaultValue,\r\n events: getEvents(methods),\r\n };\r\n };\r\n /**\r\n * @description: checkbox\r\n * @param {*} attrs\r\n * @return {*} checkbox渲染器\r\n */\r\n const renderCheckBox = (attrs, methods) => {\r\n const name = \"$checkbox\";\r\n const { defaultValue, options, props } = commonProps(attrs);\r\n return { name, defaultValue, options, props, events: getEvents(methods) };\r\n };\r\n /**\r\n * @description: radio\r\n * @param {*} attrs\r\n * @param {*} methods 事件\r\n * @return {*} radio渲染器\r\n */\r\n const renderRadio = (attrs: string | IAttrs, methods) => {\r\n const name = \"$radio\";\r\n const { defaultValue, options, props } = commonProps(attrs);\r\n return { name, defaultValue, options, props, events: getEvents(methods) };\r\n };\r\n const commonProps = (attrs: string | IAttrs) => {\r\n let props = { disabled: false };\r\n let defaultValue;\r\n let code = \"\";\r\n if (isObject(attrs)) {\r\n defaultValue = attrs.defaultValue;\r\n props = Object.assign(props, attrs || {});\r\n } else if (isString(attrs)) {\r\n code = attrs;\r\n }\r\n const options = code\r\n ? dictData[code]?.children.map((m) => {\r\n return { label: m.dictName, value: m.dictCode };\r\n })\r\n : [];\r\n return { props, defaultValue, options };\r\n };\r\n /**\r\n * @description: 数值录入\r\n * @param {*} attrs 渲染的参数(请查看目标渲染的props)\r\n * @param {*} methods 渲染目标的events,\r\n * @return {*} editRender\r\n */\r\n const renderNumber = (attrs?, methods?) => {\r\n const events = getEvents(methods);\r\n const props = Object.assign(\r\n { type: \"number\", clearable: true, min: 0 },\r\n attrs || {}\r\n );\r\n\r\n return { name: \"$input\", props, events };\r\n };\r\n /**\r\n * @description: 时间日期\r\n * @param {*} attrs 渲染的参数(请查看目标渲染的props)\r\n * @param {*} methods 渲染目标的events,\r\n * @return {*} editRender\r\n */\r\n const renderDate = (attrs?, methods?) => {\r\n const events = getEvents(methods);\r\n const valueFormat = \"yyyy-MM-dd HH:mm:ss\";\r\n const defaultValue = attrs?.defaultValue;\r\n const prop = { type: \"date\", valueFormat, clearable: true };\r\n const props = Object.assign(prop, attrs || {});\r\n return { name: \"$input\", props, defaultValue, events };\r\n };\r\n /**\r\n * @description: 值集视图\r\n * @param {*} attrs 渲染的参数\r\n * @param {*} record 当前对象\r\n * @param {*} code 值集视图code\r\n * @param {*} field 字段\r\n * @param {*} displayName 显示label字段\r\n * @param {*} methods 渲染目标的events,\r\n * @return {*} editRender\r\n */\r\n const renderLov = (attrs, methods?) => {\r\n const events = getEvents(methods);\r\n const props = Object.assign({}, attrs || {});\r\n return { name: \"#lov\", props, events };\r\n };\r\n /**\r\n * @description: 本地下拉选择\r\n * @param {*} attrs 同ElSelect\r\n * @param {*} methods 事件, 默认为change事件\r\n * @return {*}\r\n */\r\n const renderSelectLocal = (attrs, methods?) => {\r\n const events = getEvents(methods);\r\n const optionProps = attrs?.optionProps || {};\r\n const props = Object.assign(\r\n { clearable: true, disabled: false },\r\n attrs || {}\r\n );\r\n return {\r\n name: \"#select\",\r\n optionProps,\r\n options: attrs?.options || [],\r\n props,\r\n events,\r\n };\r\n };\r\n /**\r\n * @description: 渲染成switch\r\n * @param {*} attrs 请查看目标渲染的props\r\n * @param {*} methods 请查看目标渲染的event\r\n * @return {*} switchRender\r\n */\r\n const renderSwitch = (attrs?: IAttrs, methods?) => {\r\n let props = {\r\n openLabel: \"是\",\r\n closeLabel: \"否\",\r\n openValue: \"Y\",\r\n closeValue: \"N\",\r\n };\r\n let defaultValue = \"Y\";\r\n if (isObject(attrs) && !isFunction(attrs)) {\r\n props = Object.assign(props, attrs || {});\r\n defaultValue = attrs.defaultValue || defaultValue;\r\n } else if (!isEmpty(attrs) && isString(attrs)) {\r\n defaultValue = attrs;\r\n props = Object.assign(props, { defaultValue });\r\n }\r\n const events = isFunction(attrs) ? getEvents(attrs) : getEvents(methods);\r\n return { name: \"$switch\", props, defaultValue, events };\r\n };\r\n /**\r\n * @description: 表格渲染el-tag组件\r\n * @param {*} code 数据字典code\r\n * @param {*} tagMap 渲染tag对应的type {1: 'success'}\r\n * @return {*} table cellRender\r\n */\r\n const renderCellTag = (code, tagMap) => {\r\n return { name: \"#tag\", props: { code, tagMap } };\r\n };\r\n /**\r\n * @description: cell渲染成el-switch\r\n * @param {*} attrs 请查看目标渲染的props\r\n * @param {*} methods 请查看目标渲染的event\r\n * @return {*} cellRender\r\n */\r\n const renderEnabled = (methods?) => {\r\n // let props = {};\r\n // if (isObject(attrs)) {\r\n // props = Object.assign(\r\n // { activeValue: \"1\", inactiveValue: \"0\" },\r\n // attrs || {}\r\n // );\r\n // } else if (isString(attrs)) {\r\n // props = Object.assign(\r\n // { activeValue: \"1\", inactiveValue: \"0\" },\r\n // { code: attrs }\r\n // );\r\n // }\r\n const props: IAttrs = {\r\n openLabel: \"启用\",\r\n closeLabel: \"禁用\",\r\n openValue: \"1\",\r\n closeValue: \"0\",\r\n defaultValue: \"1\",\r\n };\r\n return renderSwitch(props, methods);\r\n // return { name: \"#switch\", props, events };\r\n };\r\n\r\n const getEvents = (methods: IEvents | Fn) => {\r\n let events: any = {};\r\n if (isObject(methods) && !isFunction(methods)) {\r\n events = {\r\n change: methods.onChange,\r\n blur: methods?.onBlur,\r\n input: methods?.onInput,\r\n };\r\n } else if (methods) {\r\n events = { change: methods };\r\n }\r\n return events;\r\n };\r\n // 回调函数\r\n const callback = (e) => cb && cb(e);\r\n\r\n return {\r\n renderDict,\r\n renderSelect,\r\n renderInput,\r\n renderTextarea,\r\n renderCheckBox,\r\n renderRadio,\r\n renderUser,\r\n renderSysUser,\r\n renderInvOrg,\r\n renderNumber,\r\n renderLov,\r\n renderSelectLocal,\r\n renderDate,\r\n renderSwitch,\r\n renderCellTag,\r\n renderEnabled,\r\n };\r\n};\r\n","/*\r\n * @Author: wei.li\r\n * @Date: 2022-08-29 17:38:22\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-10-09 15:02:46\r\n * @Description: global\r\n */\r\nimport { getCurrentInstance, ComponentInternalInstance } from \"vue\";\r\n\r\nexport const useGlobal = () => {\r\n const instance = getCurrentInstance() as ComponentInternalInstance;\r\n if (!instance) return { $global: {}, $storage: {}, $config: {} };\r\n const $global = instance.appContext.app.config.globalProperties;\r\n\r\n const $storage = $global.$storage;\r\n\r\n const $config = $global.$config;\r\n\r\n const $serviceApi = $global.$serviceApi;\r\n\r\n const $hasAuthority = $global.$hasAuthority;\r\n\r\n const $printPlugin = $global.$printPlugin;\r\n return {\r\n $global,\r\n $storage,\r\n $config,\r\n $serviceApi,\r\n $hasAuthority,\r\n $printPlugin,\r\n };\r\n};\r\n","/*\r\n * @Author: wei.li\r\n * @Date: 2022-07-07 11:55:32\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-07-07 11:55:38\r\n * @Description: uuid\r\n */\r\nconst hexList: string[] = [];\r\nfor (let i = 0; i <= 15; i++) {\r\n hexList[i] = i.toString(16);\r\n}\r\n\r\nexport function buildUUID(): string {\r\n let uuid = \"\";\r\n for (let i = 1; i <= 36; i++) {\r\n if (i === 9 || i === 14 || i === 19 || i === 24) {\r\n uuid += \"-\";\r\n } else if (i === 15) {\r\n uuid += 4;\r\n } else if (i === 20) {\r\n uuid += hexList[(Math.random() * 4) | 8];\r\n } else {\r\n uuid += hexList[(Math.random() * 16) | 0];\r\n }\r\n }\r\n return uuid.replace(/-/g, \"\");\r\n}\r\n\r\nlet unique = 0;\r\nexport function buildShortUUID(prefix = \"\"): string {\r\n const time = Date.now();\r\n const random = Math.floor(Math.random() * 1000000000);\r\n unique++;\r\n return prefix + \"_\" + random + unique + String(time);\r\n}\r\n","/*\r\n * @Author: wei.li\r\n * @Date: 2022-07-07 15:16:41\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-07-07 15:16:54\r\n * @Description: file content\r\n */\r\n\r\ndeclare interface Fn<T = any, R = T> {\r\n (...arg: T[]): R;\r\n}\r\n\r\ninterface deviceInter {\r\n match: Fn;\r\n}\r\n\r\ninterface BrowserInter {\r\n browser: string;\r\n version: string;\r\n}\r\n\r\n// 检测设备类型(手机返回true,反之)\r\nexport const deviceDetection = () => {\r\n const sUserAgent: deviceInter = navigator.userAgent.toLowerCase();\r\n // const bIsIpad = sUserAgent.match(/ipad/i) == \"ipad\";\r\n const bIsIphoneOs = sUserAgent.match(/iphone os/i) === \"iphone os\";\r\n const bIsMidp = sUserAgent.match(/midp/i) === \"midp\";\r\n const bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) === \"rv:1.2.3.4\";\r\n const bIsUc = sUserAgent.match(/ucweb/i) === \"ucweb\";\r\n const bIsAndroid = sUserAgent.match(/android/i) === \"android\";\r\n const bIsCE = sUserAgent.match(/windows ce/i) === \"windows ce\";\r\n const bIsWM = sUserAgent.match(/windows mobile/i) === \"windows mobile\";\r\n return (\r\n bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM\r\n );\r\n};\r\n\r\n// 获取浏览器型号以及版本\r\nexport const getBrowserInfo = () => {\r\n const ua = navigator.userAgent.toLowerCase();\r\n const re = /(msie|firefox|chrome|opera|version).*?([\\d.]+)/;\r\n const m = ua.match(re)!;\r\n const Sys: BrowserInter = {\r\n browser: m[1].replace(/version/, \"'safari\"),\r\n version: m[2],\r\n };\r\n\r\n return Sys;\r\n};\r\n","/*\r\n * @Author: wei.li\r\n * @Date: 2022-07-09 10:18:16\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-10-09 16:37:12\r\n * @Description: 消息弹框\r\n */\r\nimport VXETable from \"vxe-table\";\r\nimport { useGlobal } from \"../useGlobal\";\r\n// 消息\r\nconst Message = (content: string, status, iconStatus: string): any => {\r\n return VXETable.modal.message({ content, status, iconStatus });\r\n};\r\n\r\n// 成功\r\nconst successMessage = (content: string): any => {\r\n if (!content) {\r\n // const { $global } = useGlobal();\r\n // content = $global!.$t.call($global!.$t.global, \"message.operateSuccess\");\r\n content = \"操作成功\";\r\n }\r\n return VXETable.modal?.message({ content, status: \"success\" });\r\n};\r\n\r\n// 警告\r\nconst warnMessage = (content: string): any => {\r\n return VXETable.modal?.message({ content, status: \"warning\" });\r\n};\r\n\r\n// 失败\r\nconst errorMessage = (content: string): any => {\r\n if (!content) {\r\n content = \"操作失败\";\r\n // const { $global } = useGlobal();\r\n // content = $global!.$t.call($global!.$t.global, \"message.operateFailed\");\r\n }\r\n return VXETable.modal?.message({ content, status: \"error\" });\r\n};\r\n\r\nexport { Message, successMessage, warnMessage, errorMessage };\r\n","/*\r\n * @Author: wei.li\r\n * @Date: 2022-09-21 09:17:22\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-10-11 10:01:09\r\n * @Description: col和item数据标准或\r\n */\r\n/**\r\n * @description: col数据国际化\r\n * @param {*} columns col\r\n * @return {*} 标准化后的col\r\n */\r\n\r\nimport { useRender } from \"./useRender\";\r\n\r\nconst renderHook = useRender();\r\n\r\nexport const i18nColums = (columns) => {\r\n return columns.map((m) => {\r\n if (m.type) return m;\r\n m.title = m.title || `message.${m.field}`;\r\n return m;\r\n });\r\n};\r\n\r\n/**\r\n * @description: form item数据标准化\r\n * @param {*} items item\r\n * @param {*} status 状态\r\n * @return {*} form item数据标准化后的数据\r\n */\r\nexport const formatItems = (items, status, span = 24) => {\r\n if (!items.length) return items;\r\n return items.map((item) => {\r\n item.title = item.title || `message.${item.field}`;\r\n item.span = item.span || span;\r\n const disabled =\r\n item.disabled || item.itemRender?.props?.disabled || status === \"detail\";\r\n let itemRender = { name: \"$input\", props: { disabled } };\r\n if (item.code && !item.itemRender) {\r\n itemRender = renderHook.renderDict(item.code);\r\n }\r\n item.itemRender = item.itemRender || itemRender;\r\n Object.assign(item.itemRender.props || {}, { disabled });\r\n return item;\r\n });\r\n};\r\n\r\nconst searchBtn: IFormItemProps = {\r\n span: 6,\r\n align: \"right\",\r\n collapseNode: false,\r\n itemRender: {\r\n name: \"$buttons\",\r\n children: [\r\n {\r\n props: {\r\n type: \"submit\",\r\n content: \"message.search\",\r\n status: \"primary\",\r\n icon: \"fa fa-search\",\r\n },\r\n },\r\n {\r\n props: {\r\n type: \"reset\",\r\n content: \"message.reset\",\r\n status: \"info\",\r\n icon: \"fa fa-refresh\",\r\n },\r\n },\r\n ],\r\n },\r\n};\r\n\r\n/**\r\n * @description: grid 查询item格式化\r\n * @param {*} array items\r\n * @return {*} items\r\n */\r\nexport const formatGridItems = (array) => {\r\n const formItems = array.filter((f) => !f.isHidden);\r\n const len = formItems.length;\r\n // 前3个存在时间范围 或者 存在span = 12\r\n const isDateRange =\r\n len > 2 &&\r\n formItems.some((f, idx) => idx < 3 && (f.span > 6 || getDateRange(f)));\r\n // 需要展示折叠按钮\r\n const isCollapse = isDateRange || len > 3;\r\n const items = formItems.map((item, idx) => {\r\n item.folding = isDateRange ? isCollapse && idx > 1 : isCollapse && idx > 2;\r\n item.span = getDateRange(item) ? 12 : item.span || 6;\r\n item.itemRender = item.itemRender || { name: \"$input\" };\r\n item.title = item.title || `message.${item.field}`;\r\n return item;\r\n });\r\n searchBtn.collapseNode = isCollapse;\r\n if (isCollapse) {\r\n // 按钮设置为\t折叠节点\r\n // 折叠时将搜索按钮插入到第一列的最后\r\n const idx = isDateRange ? 2 : 3;\r\n items.splice(idx, 0, searchBtn);\r\n } else {\r\n items.push(searchBtn);\r\n }\r\n return items;\r\n};\r\n\r\nconst getDateRange = (item) => {\r\n if (item.itemRender?.name === \"#SuDateRange\") {\r\n return (\r\n item.itemRender?.props?.type === \"daterange\" ||\r\n !item.itemRender?.props?.type\r\n );\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * @description: 标准化必填数据\r\n * @param {*} records 数据列表\r\n * @param {*} t i18n对象\r\n * @return {*} rule数据\r\n */\r\nexport const formatRules = (records, t) => {\r\n const rule = {};\r\n records.forEach((item) => {\r\n if (item.required) {\r\n const { field, title } = item;\r\n rule[field] = [\r\n {\r\n required: true,\r\n message: `${t(\"message.required\")}${\r\n title ? t(title) : t(`message.${field}`)\r\n }`,\r\n },\r\n ];\r\n }\r\n });\r\n return rule;\r\n};\r\n","/**\r\n * 提取菜单树中的每一项uniqueId\r\n * @param {Array} {menuTree 菜单树}\r\n * @param {return}} expandedPaths 每一项uniqueId组成的数组\r\n */\r\nconst expandedPaths: any = [];\r\nexport function extractPathList(menuTree) {\r\n if (!Array.isArray(menuTree)) {\r\n console.warn(\"menuTree must be an array\");\r\n return;\r\n }\r\n if (!menuTree || menuTree.length === 0) return;\r\n for (const node of menuTree) {\r\n const hasChildren = node.children && node.children.length > 0;\r\n if (hasChildren) {\r\n extractPathList(node.children);\r\n }\r\n expandedPaths.push(node.uniqueId);\r\n }\r\n return expandedPaths;\r\n}\r\n\r\n/**\r\n * 如果父级下children的length为1,删除children并自动组建唯一uniqueId\r\n * @param {Array} {menuTree 菜单树}\r\n * @param {Array} {pathList 每一项的id组成的数组}\r\n * @param {return}}\r\n */\r\nexport function deleteTreeChildren(menuTree, pathList = []) {\r\n if (!Array.isArray(menuTree)) {\r\n console.warn(\"menuTree must be an array\");\r\n return;\r\n }\r\n if (!menuTree || menuTree.length === 0) return;\r\n for (const [key, node] of menuTree.entries()) {\r\n if (node.children && node.children.length === 1) delete node.children;\r\n node.id = key;\r\n node.parentId = pathList.length ? pathList[pathList.length - 1] : null;\r\n node.pathList = [...pathList, node.id];\r\n node.uniqueId =\r\n node.pathList.length > 1 ? node.pathList.join(\"-\") : node.pathList[0];\r\n const hasChildren = node.children && node.children.length > 0;\r\n if (hasChildren) {\r\n deleteTreeChildren(node.children, node.pathList);\r\n }\r\n }\r\n return menuTree;\r\n}\r\n\r\n// 创建层级关系\r\nexport function buildHierarchyTree(menuTree, pathList = []) {\r\n if (!Array.isArray(menuTree)) {\r\n console.warn(\"menuTree must be an array\");\r\n return;\r\n }\r\n if (!menuTree || menuTree.length === 0) return;\r\n for (const [key, node] of menuTree.entries()) {\r\n node.id = key;\r\n node.parentId = pathList.length ? pathList[pathList.length - 1] : null;\r\n node.pathList = [...pathList, node.id];\r\n const hasChildren = node.children && node.children.length > 0;\r\n if (hasChildren) {\r\n buildHierarchyTree(node.children, node.pathList);\r\n }\r\n }\r\n return menuTree;\r\n}\r\n\r\n/**\r\n * 广度优先遍历算法,找当前节点\r\n * @param {Array} tree 原始树,数组\r\n * @param {Number|String} uniqueId 唯一uniqueId\r\n * @return {Object} node\r\n */\r\nexport function getNodeByUniqueId(menuTree, uniqueId) {\r\n if (!Array.isArray(menuTree)) {\r\n console.warn(\"menuTree must be an array\");\r\n return;\r\n }\r\n if (!menuTree || menuTree.length === 0) return;\r\n const item = menuTree.find((node) => node.uniqueId === uniqueId);\r\n if (item) return item;\r\n const childrenList = menuTree\r\n .filter((node) => node.children)\r\n .map((i) => i.children)\r\n .flat(1);\r\n return getNodeByUniqueId(childrenList, uniqueId);\r\n}\r\n\r\n/**\r\n * 向当前唯一uniqueId节点追加字段\r\n * @param {Array} {menuTree 菜单树}\r\n * @param {Number|String} uniqueId 唯一uniqueId\r\n * @param {Object} fields 唯一uniqueId\r\n * @return {menuTree} 追加字段后的树\r\n */\r\nexport function appendFieldByUniqueId(\r\n menuTree: Array<any>,\r\n uniqueId: Number | String,\r\n fields: Object\r\n) {\r\n if (!Array.isArray(menuTree)) {\r\n console.warn(\"menuTree must be an array\");\r\n return;\r\n }\r\n if (!menuTree || menuTree.length === 0) return {};\r\n for (const node of menuTree) {\r\n const hasChildren = node.children && node.children.length > 0;\r\n if (\r\n node.uniqueId === uniqueId &&\r\n Object.prototype.toString.call(fields) === \"[object Object]\"\r\n )\r\n Object.assign(node, fields);\r\n if (hasChildren) {\r\n appendFieldByUniqueId(node.children, uniqueId, fields);\r\n }\r\n }\r\n return menuTree;\r\n}\r\n","/*! typescript-cookie v1.0.3 | MIT */\nvar index = /*#__PURE__*/Object.freeze({\n __proto__: null\n});\n\nconst encodeName = (name) => encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\nconst encodeValue = (value) => {\n return encodeURIComponent(value).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g, decodeURIComponent);\n};\nconst decodeName = decodeURIComponent;\nconst decodeValue = (value) => {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent);\n};\n\nfunction stringifyAttributes(attributes) {\n // Copy incoming attributes as to not alter the original object..\n attributes = Object.assign({}, attributes);\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires != null) {\n attributes.expires = attributes.expires.toUTCString();\n }\n return (Object.entries(attributes)\n .filter(([key, value]) => value != null && value !== false)\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n .map(([key, value]) => value === true ? `; ${key}` : `; ${key}=${value.split(';')[0]}`)\n .join(''));\n}\nfunction get(name, decodeValue, decodeName) {\n const scan = /(?:^|; )([^=]*)=([^;]*)/g;\n const jar = {};\n let match;\n while ((match = scan.exec(document.cookie)) != null) {\n try {\n const found = decodeName(match[1]);\n jar[found] = decodeValue(match[2], found);\n if (name === found) {\n break;\n }\n }\n catch (e) { }\n }\n return name != null ? jar[name] : jar;\n}\nconst DEFAULT_CODEC = Object.freeze({\n decodeName: decodeName,\n decodeValue: decodeValue,\n encodeName: encodeName,\n encodeValue: encodeValue\n});\nconst DEFAULT_ATTRIBUTES = Object.freeze({\n path: '/'\n});\nfunction setCookie(name, value, attributes = DEFAULT_ATTRIBUTES, { encodeValue: encodeValue$1 = encodeValue, encodeName: encodeName$1 = encodeName } = {}) {\n return (document.cookie = `${encodeName$1(name)}=${encodeValue$1(value, name)}${stringifyAttributes(attributes)}`);\n}\nfunction getCookie(name, { decodeValue: decodeValue$1 = decodeValue, decodeName: decodeName$1 = decodeName } = {}) {\n return get(name, decodeValue$1, decodeName$1);\n}\nfunction getCookies({ decodeValue: decodeValue$1 = decodeValue, decodeName: decodeName$1 = decodeName } = {}) {\n return get(undefined, decodeValue$1, decodeName$1);\n}\nfunction removeCookie(name, attributes = DEFAULT_ATTRIBUTES) {\n setCookie(name, '', Object.assign({}, attributes, {\n expires: -1\n }));\n}\n\nfunction init(converter, defaultAttributes) {\n const api = {\n set: function (name, value, attributes) {\n return setCookie(name, value, Object.assign({}, this.attributes, attributes), {\n encodeValue: this.converter.write\n });\n },\n get: function (name) {\n if (arguments.length === 0) {\n return getCookies(this.converter.read);\n }\n if (name == null) {\n return;\n }\n return getCookie(name, this.converter.read);\n },\n remove: function (name, attributes) {\n removeCookie(name, Object.assign({}, this.attributes, attributes));\n },\n withAttributes: function (attributes) {\n return init(this.converter, Object.assign({}, this.attributes, attributes));\n },\n withConverter: function (converter) {\n return init(Object.assign({}, this.converter, converter), this.attributes);\n }\n };\n const config = {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n };\n return Object.create(api, config);\n}\nvar compat = init({ read: DEFAULT_CODEC.decodeValue, write: DEFAULT_CODEC.encodeValue }, DEFAULT_ATTRIBUTES);\n\nexport { compat as Cookies, DEFAULT_ATTRIBUTES, DEFAULT_CODEC, index as Types, getCookie, getCookies, removeCookie, setCookie };\n","/*\r\n * @Author: wei.li\r\n * @Date: 2022-06-29 15:52:03\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-07-09 14:01:45\r\n * @Description: file content\r\n */\r\n// import { merge } from 'xe-utils';\r\nimport { getCookie, setCookie, removeCookie } from \"typescript-cookie\";\r\n\r\nclass Cookies {\r\n constructor() {}\r\n /**\r\n * 存储 cookie 值\r\n * @param name\r\n * @param value\r\n * @param cookieSetting\r\n */\r\n set(name = \"default\", value = \"\") {\r\n setCookie(`${name}`, value);\r\n }\r\n /**\r\n * 拿到 cookie 值\r\n * @param name\r\n * @returns\r\n */\r\n get(name = \"default\") {\r\n return getCookie(`${name}`);\r\n }\r\n /**\r\n * 拿到 cookie 全部的值\r\n * @returns\r\n */\r\n getAll() {\r\n return getCookie(\"\");\r\n }\r\n /**\r\n * 删除 cookie\r\n * @param name\r\n */\r\n remove(name = \"default\") {\r\n removeCookie(`${name}`);\r\n }\r\n}\r\n\r\nexport const cookies = new Cookies();\r\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: require('./env/FormData')\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","module.exports = require('./lib/axios');","/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress\n * @license MIT */\n\n;(function(root, factory) {\n\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.NProgress = factory();\n }\n\n})(this, function() {\n var NProgress = {};\n\n NProgress.version = '0.2.0';\n\n var Settings = NProgress.settings = {\n minimum: 0.08,\n easing: 'ease',\n positionUsing: '',\n speed: 200,\n trickle: true,\n trickleRate: 0.02,\n trickleSpeed: 800,\n showSpinner: true,\n barSelector: '[role=\"bar\"]',\n spinnerSelector: '[role=\"spinner\"]',\n parent: 'body',\n template: '<div class=\"bar\" role=\"bar\"><div class=\"peg\"></div></div><div class=\"spinner\" role=\"spinner\"><div class=\"spinner-icon\"></div></div>'\n };\n\n /**\n * Updates configuration.\n *\n * NProgress.configure({\n * minimum: 0.1\n * });\n */\n NProgress.configure = function(options) {\n var key, value;\n for (key in options) {\n value = options[key];\n if (value !== undefined && options.hasOwnProperty(key)) Settings[key] = value;\n }\n\n return this;\n };\n\n /**\n * Last number.\n */\n\n NProgress.status = null;\n\n /**\n * Sets the progress bar status, where `n` is a number from `0.0` to `1.0`.\n *\n * NProgress.set(0.4);\n * NProgress.set(1.0);\n */\n\n NProgress.set = function(n) {\n var started = NProgress.isStarted();\n\n n = clamp(n, Settings.minimum, 1);\n NProgress.status = (n === 1 ? null : n);\n\n var progress = NProgress.render(!started),\n bar = progress.querySelector(Settings.barSelector),\n speed = Settings.speed,\n ease = Settings.easing;\n\n progress.offsetWidth; /* Repaint */\n\n queue(function(next) {\n // Set positionUsing if it hasn't already been set\n if (Settings.positionUsing === '') Settings.positionUsing = NProgress.getPositioningCSS();\n\n // Add transition\n css(bar, barPositionCSS(n, speed, ease));\n\n if (n === 1) {\n // Fade out\n css(progress, { \n transition: 'none', \n opacity: 1 \n });\n progress.offsetWidth; /* Repaint */\n\n setTimeout(function() {\n css(progress, { \n transition: 'all ' + speed + 'ms linear', \n opacity: 0 \n });\n setTimeout(function() {\n NProgress.remove();\n next();\n }, speed);\n }, speed);\n } else {\n setTimeout(next, speed);\n }\n });\n\n return this;\n };\n\n NProgress.isStarted = function() {\n return typeof NProgress.status === 'number';\n };\n\n /**\n * Shows the progress bar.\n * This is the same as setting the status to 0%, except that it doesn't go backwards.\n *\n * NProgress.start();\n *\n */\n NProgress.start = function() {\n if (!NProgress.status) NProgress.set(0);\n\n var work = function() {\n setTimeout(function() {\n if (!NProgress.status) return;\n NProgress.trickle();\n work();\n }, Settings.trickleSpeed);\n };\n\n if (Settings.trickle) work();\n\n return this;\n };\n\n /**\n * Hides the progress bar.\n * This is the *sort of* the same as setting the status to 100%, with the\n * difference being `done()` makes some placebo effect of some realistic motion.\n *\n * NProgress.done();\n *\n * If `true` is passed, it will show the progress bar even if its hidden.\n *\n * NProgress.done(true);\n */\n\n NProgress.done = function(force) {\n if (!force && !NProgress.status) return this;\n\n return NProgress.inc(0.3 + 0.5 * Math.random()).set(1);\n };\n\n /**\n * Increments by a random amount.\n */\n\n NProgress.inc = function(amount) {\n var n = NProgress.status;\n\n if (!n) {\n return NProgress.start();\n } else {\n if (typeof amount !== 'number') {\n amount = (1 - n) * clamp(Math.random() * n, 0.1, 0.95);\n }\n\n n = clamp(n + amount, 0, 0.994);\n return NProgress.set(n);\n }\n };\n\n NProgress.trickle = function() {\n return NProgress.inc(Math.random() * Settings.trickleRate);\n };\n\n /**\n * Waits for all supplied jQuery promises and\n * increases the progress as the promises resolve.\n *\n * @param $promise jQUery Promise\n */\n (function() {\n var initial = 0, current = 0;\n\n NProgress.promise = function($promise) {\n if (!$promise || $promise.state() === \"resolved\") {\n return this;\n }\n\n if (current === 0) {\n NProgress.start();\n }\n\n initial++;\n current++;\n\n $promise.always(function() {\n current--;\n if (current === 0) {\n initial = 0;\n NProgress.done();\n } else {\n NProgress.set((initial - current) / initial);\n }\n });\n\n return this;\n };\n\n })();\n\n /**\n * (Internal) renders the progress bar markup based on the `template`\n * setting.\n */\n\n NProgress.render = function(fromStart) {\n if (NProgress.isRendered()) return document.getElementById('nprogress');\n\n addClass(document.documentElement, 'nprogress-busy');\n \n var progress = document.createElement('div');\n progress.id = 'nprogress';\n progress.innerHTML = Settings.template;\n\n var bar = progress.querySelector(Settings.barSelector),\n perc = fromStart ? '-100' : toBarPerc(NProgress.status || 0),\n parent = document.querySelector(Settings.parent),\n spinner;\n \n css(bar, {\n transition: 'all 0 linear',\n transform: 'translate3d(' + perc + '%,0,0)'\n });\n\n if (!Settings.showSpinner) {\n spinner = progress.querySelector(Settings.spinnerSelector);\n spinner && removeElement(spinner);\n }\n\n if (parent != document.body) {\n addClass(parent, 'nprogress-custom-parent');\n }\n\n parent.appendChild(progress);\n return progress;\n };\n\n /**\n * Removes the element. Opposite of render().\n */\n\n NProgress.remove = function() {\n removeClass(document.documentElement, 'nprogress-busy');\n removeClass(document.querySelector(Settings.parent), 'nprogress-custom-parent');\n var progress = document.getElementById('nprogress');\n progress && removeElement(progress);\n };\n\n /**\n * Checks if the progress bar is rendered.\n */\n\n NProgress.isRendered = function() {\n return !!document.getElementById('nprogress');\n };\n\n /**\n * Determine which positioning CSS rule to use.\n */\n\n NProgress.getPositioningCSS = function() {\n // Sniff on document.body.style\n var bodyStyle = document.body.style;\n\n // Sniff prefixes\n var vendorPrefix = ('WebkitTransform' in bodyStyle) ? 'Webkit' :\n ('MozTransform' in bodyStyle) ? 'Moz' :\n ('msTransform' in bodyStyle) ? 'ms' :\n ('OTransform' in bodyStyle) ? 'O' : '';\n\n if (vendorPrefix + 'Perspective' in bodyStyle) {\n // Modern browsers with 3D support, e.g. Webkit, IE10\n return 'translate3d';\n } else if (vendorPrefix + 'Transform' in bodyStyle) {\n // Browsers without 3D support, e.g. IE9\n return 'translate';\n } else {\n // Browsers without translate() support, e.g. IE7-8\n return 'margin';\n }\n };\n\n /**\n * Helpers\n */\n\n function clamp(n, min, max) {\n if (n < min) return min;\n if (n > max) return max;\n return n;\n }\n\n /**\n * (Internal) converts a percentage (`0..1`) to a bar translateX\n * percentage (`-100%..0%`).\n */\n\n function toBarPerc(n) {\n return (-1 + n) * 100;\n }\n\n\n /**\n * (Internal) returns the correct CSS for changing the bar's\n * position given an n percentage, and speed and ease from Settings\n */\n\n function barPositionCSS(n, speed, ease) {\n var barCSS;\n\n if (Settings.positionUsing === 'translate3d') {\n barCSS = { transform: 'translate3d('+toBarPerc(n)+'%,0,0)' };\n } else if (Settings.positionUsing === 'translate') {\n barCSS = { transform: 'translate('+toBarPerc(n)+'%,0)' };\n } else {\n barCSS = { 'margin-left': toBarPerc(n)+'%' };\n }\n\n barCSS.transition = 'all '+speed+'ms '+ease;\n\n return barCSS;\n }\n\n /**\n * (Internal) Queues a function to be executed.\n */\n\n var queue = (function() {\n var pending = [];\n \n function next() {\n var fn = pending.shift();\n if (fn) {\n fn(next);\n }\n }\n\n return function(fn) {\n pending.push(fn);\n if (pending.length == 1) next();\n };\n })();\n\n /**\n * (Internal) Applies css properties to an element, similar to the jQuery \n * css method.\n *\n * While this helper does assist with vendor prefixed property names, it \n * does not perform any manipulation of values prior to setting styles.\n */\n\n var css = (function() {\n var cssPrefixes = [ 'Webkit', 'O', 'Moz', 'ms' ],\n cssProps = {};\n\n function camelCase(string) {\n return string.replace(/^-ms-/, 'ms-').replace(/-([\\da-z])/gi, function(match, letter) {\n return letter.toUpperCase();\n });\n }\n\n function getVendorProp(name) {\n var style = document.body.style;\n if (name in style) return name;\n\n var i = cssPrefixes.length,\n capName = name.charAt(0).toUpperCase() + name.slice(1),\n vendorName;\n while (i--) {\n vendorName = cssPrefixes[i] + capName;\n if (vendorName in style) return vendorName;\n }\n\n return name;\n }\n\n function getStyleProp(name) {\n name = camelCase(name);\n return cssProps[name] || (cssProps[name] = getVendorProp(name));\n }\n\n function applyCss(element, prop, value) {\n prop = getStyleProp(prop);\n element.style[prop] = value;\n }\n\n return function(element, properties) {\n var args = arguments,\n prop, \n value;\n\n if (args.length == 2) {\n for (prop in properties) {\n value = properties[prop];\n if (value !== undefined && properties.hasOwnProperty(prop)) applyCss(element, prop, value);\n }\n } else {\n applyCss(element, args[1], args[2]);\n }\n }\n })();\n\n /**\n * (Internal) Determines if an element or space separated list of class names contains a class name.\n */\n\n function hasClass(element, name) {\n var list = typeof element == 'string' ? element : classList(element);\n return list.indexOf(' ' + name + ' ') >= 0;\n }\n\n /**\n * (Internal) Adds a class to an element.\n */\n\n function addClass(element, name) {\n var oldList = classList(element),\n newList = oldList + name;\n\n if (hasClass(oldList, name)) return; \n\n // Trim the opening space.\n element.className = newList.substring(1);\n }\n\n /**\n * (Internal) Removes a class from an element.\n */\n\n function removeClass(element, name) {\n var oldList = classList(element),\n newList;\n\n if (!hasClass(element, name)) return;\n\n // Replace the class name.\n newList = oldList.replace(' ' + name + ' ', ' ');\n\n // Trim the opening and closing spaces.\n element.className = newList.substring(1, newList.length - 1);\n }\n\n /**\n * (Internal) Gets a space separated list of the class names on the element. \n * The list is wrapped with a single space on each end to facilitate finding \n * matches within the list.\n */\n\n function classList(element) {\n return (' ' + (element.className || '') + ' ').replace(/\\s+/gi, ' ');\n }\n\n /**\n * (Internal) Removes an element from the DOM.\n */\n\n function removeElement(element) {\n element && element.parentNode && element.parentNode.removeChild(element);\n }\n\n return NProgress;\n});\n\n","/*\r\n * @Author: wei.li\r\n * @Date: 2022-07-09 14:04:31\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-07-12 10:58:44\r\n * @Description: file content\r\n */\r\nimport NProgress from \"nprogress\";\r\n\r\nNProgress.configure({\r\n // 动画方式\r\n easing: \"ease\",\r\n // 递增进度条的速度\r\n speed: 500,\r\n // 是否显示加载ico\r\n showSpinner: false,\r\n // 自动递增间隔\r\n trickleSpeed: 200,\r\n // 初始化时的最小百分比\r\n minimum: 0.3,\r\n});\r\n\r\nexport default NProgress;\r\n","import Axios, { AxiosInstance, AxiosRequestConfig } from \"axios\";\r\nimport {\r\n resultType,\r\n SuHttpError,\r\n RequestMethods,\r\n SuHttpResponse,\r\n SuHttpRequestConfig,\r\n} from \"./types.d\";\r\nimport NProgress from \"../progress\";\r\nimport { cookies } from \"../storage/cookie\";\r\nimport { errorMessage } from \"../message\";\r\n\r\nconst kTOKENKEY = \"authorized-token\";\r\n// 是否正在刷新的标记\r\nlet isRefreshing = false;\r\n//重试队列\r\nlet requests = [];\r\n\r\nconst defaultConfig: AxiosRequestConfig = {\r\n timeout: 30000,\r\n headers: {\r\n Accept: \"application/json, text/plain, */*\",\r\n \"Content-Type\": \"application/json\",\r\n \"X-Requested-With\": \"XMLHttpRequest\",\r\n },\r\n};\r\nclass SuHttp {\r\n constructor() {\r\n this.httpInterceptorsRequest();\r\n this.httpInterceptorsResponse();\r\n }\r\n router = undefined;\r\n baseUrl = null;\r\n\r\n setRouter(router) {\r\n this.router = router;\r\n }\r\n\r\n setBaseUrl(baseUrl) {\r\n this.baseUrl = baseUrl;\r\n }\r\n // 初始化配置对象\r\n private static initConfig: SuHttpRequestConfig = {};\r\n\r\n // 保存当前Axios实例对象\r\n private static axiosInstance: AxiosInstance = Axios.create(defaultConfig);\r\n\r\n // 请求拦截\r\n private httpInterceptorsRequest(): void {\r\n SuHttp.axiosInstance.interceptors.request.use(\r\n (config: SuHttpRequestConfig) => {\r\n const $config = config!;\r\n // 开启进度条动画\r\n NProgress.start();\r\n // 优先判断post/get等方法是否传入回掉,否则执行初始化设置等回掉\r\n if (typeof config.beforeRequestCallback === \"function\") {\r\n config.beforeRequestCallback($config);\r\n return $config;\r\n }\r\n if (SuHttp.initConfig.beforeRequestCallback) {\r\n SuHttp.initConfig.beforeRequestCallback($config);\r\n return $config;\r\n }\r\n\r\n const token = cookies.get(kTOKENKEY);\r\n if (token) {\r\n const data = JSON.parse(token);\r\n const now = new Date().getTime();\r\n const expired = data.expires - now <= 0;\r\n if (expired && !$config.url.includes(\"/uath/refreshToken\")) {\r\n if (!isRefreshing) {\r\n isRefreshing = true;\r\n this.get(this.baseUrl + \"/uath/refreshToken\", {\r\n refreshToken: data.refreshToken,\r\n })\r\n .then((res: resultType) => {\r\n // 替换token\r\n this.setToken(res);\r\n $config.headers[\"Authorization\"] =\r\n \"Bearer \" + res.access_Token;\r\n // token 刷新后将数组的方法重新执行\r\n requests.forEach((cb) => cb());\r\n requests = []; // 重新请求完清空\r\n return $config;\r\n })\r\n .finally(() => {\r\n isRefreshing = false;\r\n });\r\n } else {\r\n // 返回未执行 resolve 的 Promise\r\n return new Promise((resolve) => {\r\n // 用函数形式将 resolve 存入,等待刷新后再执行\r\n requests.push(() => {\r\n // $config!.headers.Authorization = `Bearer ${token}`;\r\n resolve(SuHttp.axiosInstance($config));\r\n });\r\n });\r\n }\r\n } else {\r\n $config.headers[\"Authorization\"] = \"Bearer \" + data.accessToken;\r\n return $config;\r\n }\r\n } else {\r\n const sessionKey = cookies.get(\"kCookies_token\") as string;\r\n if (sessionKey) {\r\n $config.headers[\"X-Token\"] = sessionKey;\r\n }\r\n return $config;\r\n }\r\n },\r\n (error) => {\r\n return Promise.reject(error);\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * @description: 缓存新的token\r\n * @param {*} token token 信息\r\n * @return {*}\r\n */\r\n private setToken(token) {\r\n const { access_token, expires_in, refresh_token } = token;\r\n const cache = {\r\n accessToken: access_token,\r\n refreshToken: refresh_token,\r\n expires: Date.now() + expires_in * 1000,\r\n };\r\n cookies.set(kTOKENKEY, JSON.stringify(cache), { expires: expires_in });\r\n }\r\n\r\n // 响应拦截\r\n private httpInterceptorsResponse(): void {\r\n const instance = SuHttp.axiosInstance;\r\n instance.interceptors.response.use(\r\n (response: SuHttpResponse) => {\r\n const $config = response.config;\r\n // 关闭进度条动画\r\n NProgress.done();\r\n // 优先判断post/get等方法是否传入回掉,否则执行初始化设置等回掉\r\n if (typeof $config.beforeResponseCallback === \"function\") {\r\n $config.beforeResponseCallback(response);\r\n return response.data;\r\n }\r\n if (SuHttp.initConfig.beforeResponseCallback) {\r\n SuHttp.initConfig.beforeResponseCallback(response);\r\n return response.data;\r\n }\r\n return response.data;\r\n },\r\n (error: SuHttpError) => {\r\n const $error = error;\r\n $error.isCancelRequest = Axios.isCancel($error);\r\n // 关闭进度条动画\r\n NProgress.done();\r\n // 所有的响应异常 区分来源为取消请求/非取消请求\r\n return Promise.reject($error);\r\n }\r\n );\r\n }\r\n\r\n private transformConfigByMethod(\r\n params: any,\r\n config: SuHttpRequestConfig\r\n ): SuHttpRequestConfig {\r\n const { method } = config;\r\n const methods = [\"get\"];\r\n const m = method!.toLocaleLowerCase();\r\n const props = methods.includes(m) ? \"params\" : \"data\";\r\n return {\r\n ...config,\r\n [props]: params,\r\n };\r\n }\r\n\r\n // 通用请求工具函数\r\n public request<T>(\r\n method: RequestMethods,\r\n url: string,\r\n param?: AxiosRequestConfig,\r\n axiosConfig?: SuHttpRequestConfig\r\n ): Promise<T> {\r\n const config = this.transformConfigByMethod(param, {\r\n method,\r\n url,\r\n ...axiosConfig,\r\n } as SuHttpRequestConfig);\r\n // 单独处理自定义请求/响应回掉\r\n return new Promise((resolve, reject) => {\r\n SuHttp.axiosInstance\r\n .request(config)\r\n .then((res: any) => {\r\n if (res && res?.code === \"0\") {\r\n resolve(res.data);\r\n } else if (res.access_token) {\r\n resolve(res);\r\n } else {\r\n const msg = res?.msg || \"服务异常\";\r\n errorMessage(msg);\r\n const code = res.code;\r\n if (\r\n code === \"000001\" ||\r\n (code === \"-1\" && msg.includes(\"请重新登陆\"))\r\n ) {\r\n // session过期\r\n cookies.remove(\"kCookies_token\");\r\n // @ts-ignore\r\n this.router?.push({\r\n path: \"/login\",\r\n query: { tokenExpire: \"Y\" },\r\n });\r\n }\r\n reject(msg);\r\n }\r\n resolve(res);\r\n })\r\n .catch((e) => {\r\n if (e?.message?.includes(\"500\") || e.code === \"ERR_BAD_RESPONSE\") {\r\n // @ts-ignore\r\n this.router?.push(\"/error/500\");\r\n } else if (e.code === \"ERR_BAD_REQUEST\") {\r\n errorMessage(e.message);\r\n }\r\n reject(e);\r\n });\r\n });\r\n }\r\n\r\n // 单独抽离的post工具函数\r\n public post<T, P>(\r\n url: string,\r\n params?: any,\r\n config?: SuHttpRequestConfig\r\n ): Promise<P> {\r\n return this.request<P>(\"post\", url, params, config);\r\n }\r\n\r\n // 单独抽离的delete工具函数\r\n public delete<T, P>(\r\n url: string,\r\n params?: any,\r\n config?: SuHttpRequestConfig\r\n ): Promise<P> {\r\n return this.request<P>(\"delete\", url, params, config);\r\n }\r\n\r\n // 单独抽离的put工具函数\r\n public put<T, P>(\r\n url: string,\r\n params?: any,\r\n config?: SuHttpRequestConfig\r\n ): Promise<P> {\r\n return this.request<P>(\"put\", url, params, config);\r\n }\r\n\r\n // 单独抽离的get工具函数\r\n public get<T, P>(\r\n url: string,\r\n params?: any,\r\n config?: SuHttpRequestConfig\r\n ): Promise<P> {\r\n return this.request<P>(\"get\", url, params, config);\r\n }\r\n\r\n public postRouter<T>(params?: any): Promise<T> {\r\n return this.request<T>(\"post\", \"route/service\", params);\r\n }\r\n}\r\n\r\nexport const http = new SuHttp();\r\n","/*\r\n * @Author: wei.li\r\n * @Date: 2022-06-30 10:12:41\r\n * @LastEditors: wei.li\r\n * @LastEditTime: 2022-10-14 15:55:22\r\n * @Description: file content\r\n */\r\n// @ts-ignore\r\n\r\nexport { VxetableRender } from \"./render.tsx\";\r\nexport { useWatermark } from \"./useWatermark\";\r\nexport { useAttrs } from \"./useAttrs\";\r\nexport { useRender } from \"./useRender\";\r\nexport { useGlobal } from \"./useGlobal\";\r\n\r\nexport { addResizeListener, removeResizeListener } from \"./resize\";\r\nexport { buildUUID, buildShortUUID } from \"./uuid\";\r\nexport { getBrowserInfo, deviceDetection } from \"./device\";\r\nexport { Message, warnMessage, successMessage, errorMessage } from \"./message\";\r\nexport {\r\n i18nColums,\r\n formatItems,\r\n formatGridItems,\r\n formatRules,\r\n} from \"./formatData\";\r\nexport {\r\n extractPathList,\r\n buildHierarchyTree,\r\n getNodeByUniqueId,\r\n appendFieldByUniqueId,\r\n deleteTreeChildren,\r\n} from \"./useTree\";\r\nexport { cookies } from \"./storage/cookie\";\r\nexport { storageSession, storageLocal } from \"./storage\";\r\nexport { http } from \"./http\";\r\n\r\nimport { ref } from \"vue\";\r\n\r\nexport {\r\n openLink,\r\n toggleClass,\r\n removeClass,\r\n addClass,\r\n hasClass,\r\n} from \"./element\";\r\n\r\nimport NProgress from \"./progress\";\r\nimport type { App, Plugin } from \"vue\";\r\n\r\nconst withInstall = <T>(component) => {\r\n const comp = component as any;\r\n comp.install = (app: App) => {\r\n app.component(comp.name, component);\r\n };\r\n return component as T & Plugin;\r\n};\r\n\r\nfunction sleep(timer = 64) {\r\n return new Promise((resolve) => {\r\n const time = setTimeout(() => {\r\n window.clearTimeout(time);\r\n resolve(timer);\r\n }, timer);\r\n });\r\n}\r\n\r\nexport const delay = (timeout: number) =>\r\n new Promise((resolve) => setTimeout(resolve, timeout));\r\n\r\nexport { withInstall, sleep, NProgress };\r\n\r\nexport const useDark = () => {\r\n const isDark = ref(document.documentElement.classList.contains(\"dark\"));\r\n return { isDark };\r\n};\r\n\r\n// 防抖函数\r\nexport const useDebounce = (fn: () => Fn, timeout: number) => {\r\n let timmer: TimeoutHandle;\r\n return () => {\r\n timmer ? clearTimeout(timmer) : null;\r\n timmer = setTimeout(fn, timeout);\r\n };\r\n};\r\n\r\nexport function isUrl<T>(path: T): boolean {\r\n const reg =\r\n /(((^http(s)?:(?:\\/\\/)?)(?:[-;:&=\\+\\$,\\w]+@)?[A-Za-z0-9.-]+(?::\\d+)?|(?:www.|[-;:&=\\+\\$,\\w]+@)[A-Za-z0-9.-]+)((?:\\/[\\+~%\\/.\\w-_]*)?\\??(?:[-\\+=&;%@.\\w_]*)#?(?:[\\w]*))?)$/;\r\n // @ts-expect-error\r\n return reg.test(path);\r\n}\r\n"],"names":["VxetableRender","VXETable","serviceApi","dict","i18n","renderer","add","renderEdit","renderOpts","params","row","column","options","props","optionProps","events","label","value","extLabel","code","fetchField","extParam","loading","multiple","defaultValue","keys","Object","forEach","key","field","isArray","split","ff","some","s","push","query","param","assign","pageSize","pageNum","res","length","list","val","fieldMap","item","find","option","values","idx","change","clear","remoteMethod","_createVNode","_resolveComponent","_mergeProps","onFocus","v","onChange","onClear","map","renderCell","textValue","eval","join","renderItemContent","data","property","type","opt","defaultValues","parm","mapField","record","displayField","displayName","isMulti","reduce","curv","prev","obj","isEmpty","f","renderDefault","tagMap","getTagType","getValue","activeValue","inactiveValue","children","dictCode","dictName","ResizeObserver","ref","unref","shallowRef","isUndefined","getCurrentInstance","onBeforeUnmount","reactive","watchEffect","isObject","isString","isFunction","cookies","bind","require$$0","utils","buildURL","InterceptorManager","normalizeHeaderName","AxiosError","toFormData","isAbsoluteURL","combineURLs","require$$1","buildFullPath","require$$2","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","defaults","transformData","isCancel","dispatchRequest","mergeConfig","validators","validator","Axios","require$$11","require$$12","axiosModule","this"],"mappings":"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"}